STA -- clock gating check

对于现在design中例化好的icg以及工具插进去的icg,不存在clock gating check的问题,因为clock gating 搞成了一个lib cell,不再是latch加上与门的组合。不过design中除了这些icg,还有一些的clock gating check的出现,这些是designer有意或者无意的写法导致。下面介绍什么样的电路可能会被认为是clock gating
图1图1
如上图所示的为典型的clock gate电路。其中需要满足的几项条件:

  1. Gate cell的两个pin必须有一个流过clock
  2. clock pin流过clock必须是用作clock,后面drive了reg的cp端口,如果只是clock use as data那么不会被认为是clock gate check
  3. gate cell的两个pin不能同时为真的clock(2.所描述的clock为真的clock)如图2所示,这种情况不被认为是clock gating check
  4. 如果两个pin都是clock,只有一个流了下去,那么也可以认为是clock gating check,如图3所示,generated打断了一个clock的流通。

图2图2
图3在这里插入图片描述
对于gate timing的检查。对于一个and门来说,一个en pin对一个clock pin进行gate,那么我们需要en pin在clock pin的低电平阶段变化,这样才不会影响最终的clock的输出信号。因为在clock的高电平处发生变化,可能会产生clock的毛刺出来,如图4所示。因此我们可以把AND和NADN门的gate check认为是高电平触发。同理OR或者NOR门的gate check认为是低电平触发。
图4在这里插入图片描述
经过图4的分析,再看下面的例子就会很清晰了。途中是典型的and 门的clock gating 检查。我们期望enable数据在CLK的低电平区域内到达。
图5在这里插入图片描述
图5在这里插入图片描述
从波形中可以看到,CLK1的EN数据在8倒16s内到达,才不会对CLK2的时钟造成毛刺。而en的发送沿是CLK1的第一个上升沿,也就是0ns。因此可以得到hold 检查和setup检查。无论对于setup还是hold检查,都期望数据能够落到8-16ns内,因此当UFF发送数据的同时,对于hold来说在数据传递到UGAT的数据端口时候,期望CLK2已经在8ns处了,因此对于hold来说,有天然的8ns的clk path latency,非常不容易满足。而对于setup,只要数据送到UGAT的时间长度在16ns之前就可以,也就是setup有很大的裕度。
Hold的检查因为需要en在8s后到达and的en pin,所以有较大的vio。Setup则有较大的裕度。这个时候可以通过改变latch的采样方式,把相关的数据发送沿朝后推半个周期,这样setup和hold都更容易meet。如下图6所示
图6在这里插入图片描述
此时UFF下降沿有效,那么UFF有效沿就在8ns处,此时只要满足UFF到UGAT的长度大于CLK2到UGAT的长度,就可以满足hold timing check。对于setup check,相应的裕度也变成了16-8=9ns

而关于OR门的gating 检查也是类似的情况,唯一需要注意的是我们期望en信号在clk的高电平还是低电平来,才不会对我们所需的clk产生毛刺。OR门的timing check不再赘述。

<think>好的,我现在需要帮助用户理解在时钟树综合中,为了平衡skew,每个节点的延迟是如何被约束的。用户之前已经询问过关于时钟树延迟的基本概念,现在这个问题更具体,涉及到约束方法。 首先,我需要回忆时钟树综合的基本流程。时钟树综合的主要目标是将时钟信号尽可能同时到达所有时序元件,也就是最小化skew。为了实现这一点,设计工具会使用不同的约束来指导时钟树的构建。用户想知道这些约束具体是什么,以及它们如何影响每个节点的延迟。 用户可能是在进行实际设计时遇到了时钟树约束的问题,或者是在学习相关概念时需要更深入的信息。考虑到用户之前的问题,他们已经了解时钟树延迟和skew的基本概念,现在需要更详细的约束方法。因此,回答需要详细解释各种约束类型,可能还需要举例说明,比如使用工具命令或实际场景。 接下来,我需要确定主要的约束类型。常见的约束包括最大延迟、最小延迟、目标延迟、过渡时间、负载限制、对称结构、路径分组、时钟门控平衡等。每个约束如何影响节点的延迟?例如,最大延迟约束确保信号在指定时间内到达,防止过长路径;目标延迟则让工具尽量接近某个理想值,平衡skew。 然后,要考虑用户可能的实际应用场景。例如,在EDA工具中如何设置这些约束,如使用Synopsys或Cadence的工具命令。用户可能需要具体的例子来理解这些约束的应用,比如set_clock_tree_options命令中的参数设置。 此外,需要解释为什么这些约束能平衡skew。例如,通过限制最大和最小延迟,工具会在这些边界内优化,使得各路径延迟差异减小,从而降低skew。同时,对称结构约束强制物理布局对称,减少由于布线差异带来的延迟不一致。 还要注意可能的误区,比如过度约束导致面积或功耗增加,或者不同约束之间的权衡。用户可能需要了解如何在实际项目中合理设置这些约束,以达到时序收敛的同时,不牺牲其他设计指标。 最后,确保回答结构清晰,分点列出每种约束,并结合示例和公式,帮助用户逐步理解。可能需要使用LaTeX格式的公式,如过渡时间的计算,或者约束条件的数学表达,但根据用户之前的提问历史,用户接受表格和代码示例,这些元素可以增强回答的可读性。</think>在时钟树综合(CTS)中,为了平衡 **Clock Skew**,每个节点的延迟主要通过以下约束进行控制: --- ### **1. 最大/最小延迟约束** - **作用**:限制时钟信号从根节点(Root)到叶子节点(Leaf)的总延迟范围,确保所有路径的延迟差异(Skew)可控。 - **实现方式**: ```tcl # 设置时钟树最大延迟(例如不超过时钟周期的50%) set_clock_tree_options -max_delay 1.5ns -clock [get_clocks clk] # 设置时钟树最小延迟(避免过短的路径导致Hold违例) set_clock_tree_options -min_delay 0.8ns -clock [get_clocks clk] ``` - **平衡原理**:工具会在`max_delay`和`min_delay`之间优化路径,缩小不同分支的延迟差异。 --- ### **2. 目标延迟(Target Delay)约束** - **作用**:指定理想的时钟树延迟目标值,工具会优先向该值收敛。 - **公式**:$$\text{Skew} = \max(t_{\text{delay},i}) - \min(t_{\text{delay},i}) \leq \text{Target Skew}$$ - **实现方式**: ```tcl set_clock_tree_options -target_skew 0.1ns # 目标Skew不超过0.1ns ``` --- ### **3. 过渡时间(Transition Time)约束** - **作用**:限制时钟信号边沿的斜率(Slew Rate),避免因驱动能力不足导致延迟差异。 - **公式**:$$\text{Transition Time} = \frac{\Delta V}{\Delta t} \leq \text{Max Slew}$$ - **实现方式**: ```tcl set_clock_tree_options -max_transition 0.2ns # 最大过渡时间0.2ns ``` --- ### **4. 负载对称性约束** - **作用**:强制要求每个分支驱动的负载(电容/单元数量)对称。 - **原理**:负载差异会导致驱动单元的延迟不同,通过匹配负载可缩小Skew。 - **实现方式**: ```tcl set_clock_tree_options -balance_levels true # 平衡各级负载 ``` --- ### **5. 物理对称性约束** - **作用**:强制时钟树在布局上对称(如H-tree结构),减少走线差异带来的延迟。 - **示例**:要求对称分支的金属长度、层数、宽度一致。 - **工具支持**: ```tcl create_clock_tree -structure symmetric # 生成对称时钟树 ``` --- ### **6. 路径分组(Path Grouping)** - **作用**:将时钟树划分为多个子组(如按区域或功能模块),分别优化Skew。 - **示例**:将CPU和GPU的时钟树分组独立优化。 - **实现方式**: ```tcl group_path -name clk_cpu -weight 2 # 赋予CPU时钟更高优化权重 ``` --- ### **7. 时钟门控平衡** - **作用**:若使用门控时钟(Clock Gating),需平衡门控单元的插入延迟。 - **公式**:$$\Delta t_{\text{gate}} = t_{\text{gate},A} - t_{\text{gate},B} \leq \text{Skew Limit}$$ - **实现方式**: ```tcl set_clock_gating_check -balance true # 平衡门控单元延迟 ``` --- ### **约束权衡与优先级** | 约束类型 | 优化目标 | 潜在代价 | |----------------|----------------|------------------| | 最大延迟 | 控制Skew上限 | 可能增加缓冲器数量 → 面积↑ | | 目标延迟 | 平衡延迟分布 | 可能牺牲局部路径优化 | | 对称结构 | 物理匹配 | 布线资源占用增加 | | 负载匹配 | 驱动能力均衡 | 限制逻辑布局灵活性 | --- ### **实际设计中的操作流程** 1. **约束定义**:在SDC(Synopsys Design Constraints)中指定时钟树参数: ```tcl create_clock -name clk -period 2 [get_ports clk] set_clock_tree_options -clock clk -max_delay 1.8 -target_skew 0.05 ``` 2. **CTS阶段**:工具(如Cadence Innovus/Synopsys ICC2)根据约束插入缓冲器、调整驱动和走线。 3. **签核验证**:通过STAStatic Timing Analysis)检查最终Skew和延迟分布: ``` report_clock_tree -summary # 查看Skew和延迟统计 ``` 通过以上约束协同作用,最终实现**低Skew、高一致性**的时钟网络。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值