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。
网友评论