set_false_path和set_disable_timing的区别?

False path:在设计中,不需要满足setup/hold时序的数据路径需要设置成false path。

设置成false_path的数据路径,EDA工具仍然会计算累加这条路径上的timing arc延时,但是不优化和报告这条数据路径上的setup/hold时序违例,会继续优化和报告这条数据路径上的逻辑DRC

max_transition

max_capacitance

max_fanout

对于上述设计

A -> C -> E -> G 和 B -> D -> F -> G需要设置成False path。

在芯片设计中利用两级触发器防止信号的亚稳态传播,此时两级触发器的第一级是不做时序检查的,因此在设计约束中也需要将其设置为False path来避免对第一级触发器进行时序分析。

Disable timing:set_disable_timing 用来disable 设计中某个timing arc 。

设置disable_timing之后,所有经过这个timing arc的timing path(data path/clock path),工具都不会去计算和分析。

上述设计中,Sel是一个选择信号,工具默认会同时计算和分析timing arc :

a(Test_Clk)  -> y

b(Ext_Clk) -> y

而实际情况是,芯片只工作在其中一个模式(mode),我们可以分别在不同的模式下进行时序分析,即在不同的工作模式下分别设置disable timing。

#Use Ext_ Clk for timing analysis

set_disable_timing  CLOCK_GEN/U1  -from  a  -to  y

#Use Test_ Clk for timing analysis

set_disable_timing  CLOCK_GEN/U1  -from  b  -to  y

上面的约束去掉了MUX从引脚a/b到引脚Y的timing arc,也就是说,分别指定使用Ext_ Clk/Test_Clk进行setup timing/hold timing分析。

set_disable_timing命令还可以使库单元的时间弧(timing arc)无效。此功能也可以通过set_case_analysis实现,但是无法通过set_false_ path实现,因为set_false_path是用来约束data path的。

异步电路有很多timing loop。这些timing loop必须被set_disable_timing命令打断,否则会占据STA工具过多的内存,并且此时的STA结果也没有任何意义。

综上所述:

set_false_path 只对data path起作用, EDA 工具还会分析计算这条时序路径, 只是不报出来是否有时序违例。

set_disable_timing 对timing arc起作用,完全不去分析这条timing arc。

你可能感兴趣的:(set_false_path和set_disable_timing的区别?)