原创 dc概论之virtual clock

2009-6-29 16:53 4952 6 6 分类: 工程师职场

virtual clock一般用在没有时钟的路径上或者不是与系统同时钟的约束中。
这里不讨论一般情况,嘿嘿。
可以看下,下面设计中经常会遇到的情况:




如何约束路径,从而使综合工具正确分析,这里就要用到virtual clock
观察这两个电路,不难发现。经过选择器的2个路径不会同时出现的。
基于此,我们可以利用virtual clock来分析各自的路径。
如下图:
对于每一个路径我们设计一个virtual clock,然后对输入或者输出增量约束


create_clock -name VClk_Pos -period $ppos
create_clock -name VClk_Neg -period $pneg

set_output_delay -add 4 -clock VClk_Pos Dout
set_output_delay -add 6 -clock  VClk_Neg Dout -clock_fall


 


点击看大图


create_clock -name VClk_Com -period $pcom 
create_clock -name VClk_Seq -period $pseq

set_input_delay 4 -add -clock VClk_Com Din
set_input_delay 5 -add -clock VClk_Seq Din

set_output_delay 6 -add -clock VClk_Com Dout
set_output_delay 5 -add -clock VClk_Seq Dout

用过dc综合工具的基本都会知道建立时间的检查是在最小的launch和capture间检查的。
所以上面的约束中会有一些false path,因此我们要filter掉这些路径。


set_false_path -from Clk_Pos -to VClk_Neg
set_false_path -from Clk_Neg -to VClk_Pos


点击看大图


set_false_path -from VClk_Com -to VClk_Seq
set_false_path -from VClk_Com -to Clk

set_false_path -from VClk_Seq -to VClk_Com
set_false_path -from VClk_Seq -to VClk_Seq

set_false_path -from Clk -to VClk_Com


至此,就ok了。
其实上面的情况还可以用set_max_delay来约束,但是set_max_delay通常会打断时序路径,
造成dc再分析setup time的时候比较乐观,分析hold time又比较悲观。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条