clock tree-构建低功耗clock tree

目录

1 场景

2 从芯片后端部门角度去构建低功耗clock tree

2.1 优化个数

2.1.1 评估标准

2.1.2 方法

2.1.3 实验前后对比

2.2 优化强度

2.3 clock tree常用实现命令和debug命令

3 从跨部门合作角度去构建低功耗clock tree

3.1 核心思路

3.2 流程

3.3 结果分析

4 总结

5 参考书

1 场景

后端完成项目部定的leakage power指标,但是在PTPX仿真动态功耗时,发现clcok tree动态功耗在block内部甚至整芯片中占比很大。公司项目部给出指标,希望大大降低clock tree动态功耗在整芯片功耗的占比。

首先我们先明白正常意义上的clock tree功耗包括从root点到寄存器CP端所有经过的cell的翻转功耗,包括clock 反相器/clock gate/其余clock逻辑cell/寄存器CP端的翻转功耗。

寄存器和clock逻辑cell是设计写好的,后端优化不了,所以只能从clock 反相器来优化,具体就是优化clock 反相器的个数和强度。

问题来了,为什么clock tree功耗会这么高呢?因为clock tree上的cell的翻转率远高于数据路径,并且clock 反相器DCCKND8/D12/D16等以及寄存器,本身的电流就大,功耗就高。

SDC create_clock创建 master clock点, create_generated_clock创建slave clock点。在CTS阶段,SDC转换为spec(时钟树规范文件)之后,create_clock创建的skew_group会包含create_generated_clock创建的skew_group,于是出现如下图所示的现象,所有slave clock点下面的寄存器都会被master clock所balance delay。

如图所示的时钟树完全可以满足timing要求,但是clock tree水分太多,包含了太多没有必要的clock 反相器cell。我们的目标是满足timing要求的情况下,去除水分,构建一个最少数量的clock cell的低功耗时钟树。

2 从芯片后端部门角度去构建低功耗clock tree

2.1 优化个数

方法核心:去除balance cell,又名去除兜圈子cell
方法特色:不用从物理版图下手,直接从clock debug窗口下手,通过修改spec完成

2.1.1 评估标准

        1.balance cell数量和分布 **cdb** **cwb**(只要是包含*cwb* *cdb*的INV,一定是兜圈子cell,非传输cell)

        2. clock cell数量

        3. INV级数

        4. latency

   宗旨:latency尽量短
   翻译:sinks该balance的balance,不该balance的INV级数/latancy尽量短,并且在应该balance的skew_groups中看能否继续优化关键路径长度

2.1.2 方法

        1. 观察:在clock tree debug窗口观察balance cell的分布(允许clock tree尾端也就是sinks前几级有分布,其余的都需观察分析)

        2. 进一步观察:寻找关键路径(lantency最长但是无balance cell)

        3. 优化:修改spec

                1. 将关键路径的sinks点从skew_groups去除

&

### 关于Clock Tree的评估及其优缺点 #### 优点分析 Clock tree设计通过精心构建时钟分配网络来确保信号同步性和稳定性。这种结构有助于减少全局时钟偏移(global clock skew),从而提高系统的整体性能和可靠性[^1]。 具体而言,在现代集成电路设计中采用有用的skew (useful skew) 和共同路径探测(CCD, Common Centroid Decomposition) 技术,可以在一定程度上放宽对于局部时钟偏差(local clock skew)的要求,使得即使存在一定的内部差异也不会显著影响到实际工作效果。 此外,当多个sink端共享更多的公共路径部分时,clock skew会变得更小,这表明良好的clock tree规划不仅能够降低延迟(insertion delay),还能有效控制最终形成的clock skew数值大小[^2]。 #### 缺点探讨 然而,尽管clock tree具有上述优势,但在某些情况下也可能带来挑战: - **复杂度增加**:随着工艺节点不断缩小和技术进步,维持低功耗的同时保持高性能变得越来越困难;复杂的clock tree架构增加了布线难度并可能引入额外的风险因素。 - **资源消耗**:为了实现精确的时间调整,通常需要占用较多面积用于缓冲器(buffer)和其他补偿元件,这对芯片尺寸提出了更高要求。 - **调试维护成本高**:由于涉及到众多参数配置及相互关系处理,任何细微变化都可能导致意想不到的结果,因此后期测试验证阶段的工作量较大。 ```python def evaluate_clock_tree(): """ A function to simulate the evaluation of a clock tree design. This is purely illustrative and does not represent actual hardware behavior. """ advantages = ["Reduces global clock skew", "Improves system performance"] disadvantages = [ "Increased complexity with advanced nodes", "Higher resource consumption for buffers" ] return {"advantages": advantages, "disadvantages": disadvantages} ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值