静态时序分析——Clock Gating check

门控时钟是RTL级进行低功耗设计的最常用方法,能够有效降低动态功耗。在实际使用中,一般用ICG(集成门控时钟单元)来完成clock gating。ICG电路和时序如下:

通常来说,工艺库已经集成了ICG,在做门控时钟的时候其实不用考虑那么多。如果在实际设计中,工艺库未提供ICG,需要自己搭建一个门控时钟电路,那么在布局布线的时候可能要注意,不能将期间摆的太远,否则线延迟等会让这个结构失去其意义。

当门控信号控制了逻辑单元中时钟信号的路径时,我们会进行Clocl Gating check。我们根据下图了解一些定义,这样比较直观:

这里我们需要明确什么样的电路会被工具分析成为门控时钟:

  1. Gating cell的输出是作为时钟信号进行使用,即连接到了后级逻辑单元的时钟端口。
  2. Gating pin的输入非时钟信号;若Gating pin的输入为时钟信号,则其必须不连接后级逻辑单元的时钟端口。
  3. 对于上图简单的与门控制,工具可以较好的推断;但对于复杂结构,需要自己添加约束来进行检查。

运用提到的定义,对于上图来说,CLKB才是clock signal。接下来我们以这个电路为例看看如何进行clock gating check(对于这个与门来说,有些类似于data to data check):

首先定义两个时钟

create_clock -name CLKA -period 10 -waveform {0 5}  [get_ports CLKA]

create_clock -name CLKB -period 10 -waveform {0 5}  [get_ports CLKB]

我们要保证时钟切换的时候不能产生一些毛刺,也不能产生对时钟有影响的结果。对于此电路来说,gating cell是一个与门,那么gating pin的信号变化只能发生在clock pin的低电平状态。则setup check要求门控信号在时钟信号变高前变化;hold check要求门控信号只能在时钟下降沿之后进行改变。时序图如图,

gating pin的变化要落在5-10ns间,才能满足门控时钟的要求。

我们看看setup check的时序报告:

同样地,我们可以看看hold check的时序报告:

可以看到,在5ns时进行hold check是非常严苛的。由于gating signal的变化过于迅速,导致hold check失败。这个问题可以用我们前面提到的半周期进行处理。我们将寄存器的采样边沿改为负沿:

这样的话,gating signal在负沿launch,留给时序检查的周期就剩下了半个周期,较好满足hold time:

 

回答: 在数字电路设计中,时钟树(clock tree)是指将时钟信号从时钟源传输到各个时钟接收器的网络。时钟树的设计对于电路的性能和功耗有着重要的影响。时钟树的目标是保持时钟信号的稳定性和一致性,以确保电路的正确操作。时钟树的设计中,常常会将一些不属于其所属生成时钟(generate clock)的sink pin抓出来设置成一个时钟偏移组(clock skew group),这些sink pin通常只与彼此以及时钟分频器(clock divider)和时钟门控单元(clock gating cell)有时序检查(timing check)的关系。\[1\] 时钟偏移(clock skew)是指时钟信号在时钟树中传播过程中的延迟差异。全局偏移(global skew)指的是同时钟(同一时钟域)中最长和最短路径之间的差值,而局部偏移(local skew)指的是具有时序检查的两个寄存器之间时钟路径长度的差值。从定义上看,全局偏移似乎应该大于等于局部偏移,但实际上在分析时序违规时,我们也会看到局部偏移大于全局偏移的情况。这是因为全局偏移计算的是sink pin的最大差值,而局部偏移不仅考虑了sink pin,还考虑了through pin(时钟路径中的中间节点)。\[2\] 举例来说,当命名为*dlytr*的时钟路径出现时,意味着这是一个长路径或者在优化时为了延长sink pin而使用绕行方式(detour)绕过电路的buf/inv。如果这条路径是时钟路径中最长的,我们需要使用report_clock_timing -type latency -nworst xx命令来报告更多的时钟路径,以分析导致时钟树整体变长的真正原因。\[3\] #### 引用[.reference_title] - *1* [ICC2:skew group](https://blog.csdn.net/m0_61544122/article/details/130530332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [静态时序分析—时钟偏斜(Clock Skew:Global Skew与Local Skew)](https://blog.csdn.net/m0_61544122/article/details/126498047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沧海一升

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值