首页 理论教育如何导入SDC文件并进行时序约束检查

如何导入SDC文件并进行时序约束检查

【摘要】:主要的SDC语句包括以下几个。该命令在DC综合时的用法往往与ICC的不同,因此需要根据实际情况修改。3)set_clock_latency/set_clock_unertainty等,均用来对时钟进行描述。4)set_input_delay/set_output_delay,用来对输入电路和输出电路进行时序约束。在电路中,大多数电路处于寄存器与寄存器之间,可以由时钟周期来约束。但与芯片IO相连的组合逻辑电路不属于任何一条时钟电路能够约束的范围,因此需要用set_input_delay和set_output_delay来约束。读入SDC后需要进行时序约束检查,通常需要运行6种检查命令,分别如下。

导入SDC文件使用命令:read_sdc./net_list/top_chip.sdc。

主要的SDC语句包括以下几个。

1)set_operating_conditions,该命令可以用来指定analysis_type为BC_WC或者on_chip_viaration,两种方法的差别在后续章节有详细介绍,这里主要介绍该命令用-max和-min所指定的max/min operaing condition。在每一个lib文件中都会定义operating condition,但这里一定要指定标准单元库中的operating condtion。如果set_operating_conditions中指定了max_lib/min_lib,ICC会在指定的lib中寻找对应的operating conditon,如果没有指定lib,就会从link_library里逐个寻找。每一个operating condition中都会有PVT参数,对于标准单元库以外的逻辑库,就根据max condition所对应的PVT参数寻找所需要的逻辑库,而min condition则根据max condition和set_min_library来寻找。该命令在DC综合时的用法往往与ICC的不同,因此需要根据实际情况修改。

2)create_clock/create_generated_clock,用来建立片上时钟,需要指定时钟源、周期数等信息。

3)set_clock_latency/set_clock_unertainty等,均用来对时钟进行描述。

4)set_input_delay/set_output_delay,用来对输入电路和输出电路进行时序约束。在电路中,大多数电路处于寄存器与寄存器之间,可以由时钟周期来约束。但与芯片IO相连的组合逻辑电路不属于任何一条时钟电路能够约束的范围,因此需要用set_input_delay和set_output_delay来约束。

读入SDC后需要进行时序约束检查,通常需要运行6种检查命令,分别如下。

check_timing:检查所有的电路是否都有约束,如果没有约束,会导致后续优化时不会优化其中的电路,并很有可能导致时序不符合要求却无法在时序报告中发现。通常来说电路没有时序约束的原因有3种:寄存器单元的时钟端口没有设置时钟,或者设置有问题;IO输入端没有设置input_delay;IO输出端没有设置output delay。

report_timing_requirements:该命令可以报出所有的false path和multicycle路径,便于设计人员检查时序设置是否符合设计需求。

report_disable_timing:可以报出电路中所有disable timing。

reportcaseanalysis:可以报出所有设置了setcaseanalysis的端口或端点,以方便设计人员检查是否有不正确的设置。

report_clock-skew:可以报出所有时钟的delay、uncertainty等信息。

report_clock:用来检查是否有时钟设置了propagated属性,如果有时钟设置了的话,需要用remove_propagated_clock-all来去除。时钟的propagated属性表示时钟树的延时需要采用实际的单元延时来计算,否则直接采用SDC中设置的时钟树延时来计算,在CTS前,都需要用SDC中设置的延时,只有在CTS后有了真实的时钟树才能用propagated属性。