常见的是,当ICG与sink DFF之间存在多层逻辑或物理距离时,导致skew过大,引发setup violation。为解决这一问题,实际设计中可将易出现setup violation的ICG靠近sink DFF布置,减少skew。同时,EDA工具提供了设置时钟门控检查命令,以优化这些路径的timing。在处理hold violation时,插入buffer或delay cell应尽...
ICG的两个输入端一个是ENABLE信号,一个是clock信号,因为ENABLE的电平是固定的(例如固定在高电平1),所以每个时钟周期内锁存器向后面输出的信号一直是固定的(信号电平等于ENABLE 信号电平),ICG的delay大概就是一个锁存器环路的delay(结合锁存器结构一看便知)。 为何在timing path中ICG一般不体现timing borrow ICG可以...
因为如果打开了,ICG就由边沿触发check变成电平触发check,采集到亚稳态的概率增大,可能导致clock信号不稳定,影响电路状态。 在INNOVUS中怎么打开ICG timing check的timing borrow:
针对这种现象,在实际设计中,我们可能会考虑将出现setup violation的ICG尽量放在sin DFF附近以减小skew。与此同时,EDA工具也提供命令来收紧ICG的timing constraint来迫使工具来优化这些path,比如set_clock_gating_check命令。 往期问题答案: fix hold violations时,插入buffer或者delay cell的位置,是靠近launch端还是capture端...
report_timing -path_type full_clock 因此,约束ICG的latency为-400ps,目的是把ICG从reg拉开400ps,如果不约束ICG的Q,那么工具为了minimize skew,会默认ICG后面所有的reg的CLK的latency和ICG是一样的-400ps。此时,时钟还是是理想的。因此需要给ICG的Q端也约束上latency,此处约束为-50ps。不经过这个ICG的CLKpin默认...
(2)与此同时,EDA工具也提供命令来收紧ICG的timing constraint来迫使工具来优化这些path,比如set_clock_gating_check命令。 另外,CTS工具会对其做clone、declone操作。 ICG cell Clone: 受相同ICG cell控制的时序单元较多或者分布不均匀时,就会导致ICG cell连线过长,这时可通过clone ICG cell进行优化; ...
ICG timing check 的瓶颈 在不人工干预的情况下,tool默认会尝试把reg1的CK pin和Reg2的CK pin做平。但是静态时序分析时,reg1→ICG也会做时序check;所以,ICG会天然存在一个很大的clock skew,导致建立时间违例。 如何解决呢? 在place阶段,在ICG的CK pin设置一个负的latency,这个负的latency的值可以大概等于CTS之...
在place之前 :set_clock_gating_check 在CTS之后 :reset_clock_gating_check为default 注:CTS之前设clock gating check为了弥补clock tree, ICG cell的latency较短,所以加一些余量。CTS之后remove_clock_gating_check并不是不让tool做ICG timing check,而是用library的gating check的值。
问题在于时序(timing)。在时钟的上升沿,触发器FF1的D输入传播到Q输出,但是时钟的同一上升沿也到达了与门,这会导致门控时钟出现毛刺现象。 因此,我们使用集成时钟门控(ICG)单元,该单元包含一个低电平敏感的锁存器 当时钟为低电平时,允许输入直接传播到与门的输入。此时时钟为低电平,所以与门的输出将为低电平,与...
3. set_clock_gating_check set_clock_gating_check before 'Place' to add margin for compensating the latency of ICG cell in clock tree. remove_clock_gating_check after CTS for using the value of gating check in library instead of ICG timing check by tool....