|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
在“Static Timing Analysis for Nanometer Designs__A Practical Approach”一书的9.1.3小节中提到对于图中的timing要求下constraint的方法是:
set_multicycle_path 0 -setup -to [get_ports DATAQ]
set_multicycle_path -1 -hold -to [get_ports DATAQ]
set_output_delay -max -1.0 -clock CLK_STROBE \
[get_ports DATAQ]
set_output_delay -min +2.0 -clock CLK_STROBE \
[get_ports DATAQ]
我对这段constraint的理解如下,可是其中关于output_delay的max/min值的解释觉得有点不够清晰,大家可否帮忙解答一下呢?
1,不下set_multicycle_path的情况下,setup relation是从T1到T2,即T_internal + T_external + T_setup <= T_cycle
但是如果set_multicycle_path 0 -setup -to [get_ports DATAQ],则意味着setup relation变成了从T1到T1,即上式中<= T_cycle要变成0.
由于tool无法知道外部DFF的T_setup,只能假设为0,所以setup relation要求就变成了T_internal + T_external + 0 <= 0,
为了确保DATAQ只会在clk上升沿后1ns内变化(可看成是T_internal<=1ns),
通过要求 T_external最大为-1ns来告知tool T_internal最大为1ns:
set_output_delay -max -1.0 -clock CLK_STROBE [get_ports DATAQ]
2, 不下set_multicycle_path的情况下,hold relation是从T1到T1,即T_internal + T_external >= T_hold
执行set_multicycle_path 0 -setup -to [get_ports DATAQ]之后,会相应地让hold relation变成T1到T0,这不make sense,
the hold check has to occur on the same edge, thus we need to
specify a multicycle of -1 (minus one) for hold check.
所以要执行set_multicycle_path -1 -hold -to [get_ports DATAQ]来告知tool正确的hold relation应该还是从T1到T1.
由于tool无法知道外部DFF的T_hold,只能假设为0,所以hold relation要求就变成了T_internal + T_external >= 0,
由于实际上DATAQ允许在clk上升沿之前的2ns内变化(可看成是T_internal<=-2ns),
通过要求 T_external最小为2ns来告知tool T_internal最小为-2ns:
set_output_delay -min +2.0 -clock CLK_STROBE [get_ports DATAQ] |
|