门控时钟电路(Intergrated clock gating)

文章介绍了门控时钟电路用于关闭非工作模块以节省功耗的概念。它讨论了简单与门控制的缺点,以及锁存器和寄存器同步EN信号在处理毛刺问题上的差异。锁存器结构常用于IC设计,因为其延迟问题可以通过工艺控制,而寄存器结构因资源消耗较多而不常用。

1.概念

        某些模块不需要工作的时候,为了降低功耗需要关闭该模块的时钟,节省触发器的翻转功耗。采用门控时钟电路来控制时钟的关断。

2.分类

        2.1.简单与门控制

请添加图片描述

                缺点:产生的门控时钟极易带有未经同步的异步EN信号的毛刺。

在这里插入图片描述

        2.2.锁存器同步EN信号

在这里插入图片描述

                如上图所示,锁存器为低电平有效传输。当clk为低点电平时,D端口上en信号的变化会传输到Q端口,此时即使有毛刺传输进来,clk低电平控制了与门的传输,毛刺无法通过与门到达GCLK信号,当时钟clk为高电平时,Q端口的值会锁存住,一直保持clk上升沿前一时刻输入D端口的值。波形如下图所示:

在这里插入图片描述

                当考虑到实际电路时,上述电路同样可能产生毛刺:

在这里插入图片描述

                        ①右上角图情形:clk到达A点的时刻早于B点,即有一个skew的时差,此外EN信号的变化在D→Q间传输时存在一个锁存器的固定delay时间(即T_{co},且T_{co}>T_{h}),故当|skew|>delay时可能产生毛刺;

                        ②右下角情形:clk到达B点的时刻早于A点,另外需要考虑锁存器时钟边沿的SETUP时间,当|skew|>SETUP-delay时门控时钟可能产生毛刺。

                综上所述,采用该门控时钟电路时,需要控制时钟skew的范围。

        2.3.寄存器同步EN信号

img

                波形图如下:

在这里插入图片描述

                 实际电路中需要考虑寄存器的传输delay时间,即也可能产生如下图的毛刺:

在这里插入图片描述

                 解决上述毛刺的方法:B点晚于A点的clk的skew时间>delay。

3.选择

        实际的IC设计中多采用锁存EN的门控时钟,这是因为要使用大量的门控时钟单元,故通常会把门控时钟做成一个标准单元,锁存器结构中延时问题由工艺变为可控。

        此外不采用寄存器结构的原因是1个寄存器由2个锁存器组成,这样大量使用会浪费更多资源和面积。

完善修改我这个PPA分析报告,使其语句通顺,逻辑严谨。核心结论 通过系统性优化策略,最终PPA得分优化至原始版本的589.8%,功耗优化至原始版本的6.01%,面积优化至原始版本的51.4%。 关键优化措施 1. MEM替换LATCH:将存储单元从寄存器(Register)替换为锁存器(LATCH),显著降低面积和功耗。 2. ID存储方式优化:通过融合高低ID的FIFO结构,减少冗余存储单元,节省面积。 3. 提升寄存器门控率:修改代码为可以被综合工具识别添加时钟门控,将门控率从76%提升至90.19%,有效降低动态功耗。 4. 架构并行优化尝试:探索并行仲裁机制以提升性能,但未达到预期效果。 5. 使用无复位寄存器:在非控制信号中,使用无复位寄存器代替有复位寄存器。 6. 去掉无用DFX信号:部分DFX信号在打榜测试中未使用到,可以去除。 7. 添加模块级门控:手动例化模块级时钟门控,在该模块空闲时将模块时钟关闭达到节省动态功耗以及时钟树功耗的目的。 详细优化过程 V0版本(基准) 我初步方案为两级过滤+单RAM+双ID-FIFO+串行仲裁 打榜得分如下。 对比往年优秀设计,无论是功耗面积都有着较大差距。因此准备着手对PPA进行优化,经和导师沟通讨论,确定了以下优化checklist。  内存模块中的锁存器替换为寄存器  优化寄存器的时钟门控率  识别并移除无需复位端的寄存器  基于时序分析优化中间缓冲与缓存  输出调度方案的并行与串行实现验证  锁存器替换后的功耗优化  基于波形分析抑制无效翻转 V1版本(MEM替换LATCH) 分析V0版本的各模块面积  HF_3W_256D 1065  LF_3W_256D 1069  MEM_9W_1024D 10392  MEM_9W_129D 1336  FIFO_11W_33D 467 8 * ( 1065 + 1069 + 10392 + 1336 + 467 ) = 8 * 14329 = 114632 RAM占据了主要面积。 Latch 和reg的差别 REG由两个latch搭建,master latch 为低通latch,slave为高通latch。当寄存器时钟门控后,只有slave latch 时钟关闭,master latch 依然处于工作状态。所以用高通latch 替换REG,可以节省功耗和面积。 1、同类型的REG和LATCH的面积相差两倍。 2、latch的静态功耗较reg小。 通过替换RF_MEM模型,将原本基于寄存器搭建的模型改为LATCH搭建的模型。替换的MEM模型在附件。 优化后打榜得分如下。 优化后:  PPA提升115.84%  面积降低40.03%  功耗降低71.71% 结论:LATCH结构显著降低面积与功耗,是PPA优化的关键一步。 V2版本(使用并行仲裁) 在前期方案分析的时候。并行轮询,相比串行轮询,各输出通道可以并行发送数据,可以显著降低每个包的平均等待时间。因此修改代码架构改为并行轮询。 优化后打榜得分如下。 由于,增加了7个RR仲裁器,面积功耗均略微增长。但是T0并未降低,整体PPA得分略有降低。使用使用并行轮训对于提高PPA无效。 原因可能是,对于最差情况(各输入通道转发目的为同一输出通道)时,并行轮询和串轮询效率相等。而打榜测试的时候可能包含了这种情况。 V3版本:优化ID存储方式 V0方案里,为了简化设计难度。过滤后缓存中的包ID,是使用两个FIFO分别存储。占用了本设计将近15%的面积。参考其他人的优化方案DT005 ppa分析_侯胜凯 - 侯胜凯的博客 (huawei.com),ID存储可以和包尾信号进行融合存储。基于该方案,对代码进行优化。 优化后打榜得分如下。 优化后:  PPA提升14.60%  面积降低13.29%  功耗降低12.18% 结论:该优化对架构改动小,效果显著,值得采用。 V4版本(提升寄存器门控率) 时钟门控是一种有效的低功耗设计方法。 always @(posedge clk or negedge rst_n) begin if (!rst_n) q <= 32'b0; else if (en) q <= d; // 使能有效时,接收新数据 else q <= q; // 使能无效时,保持寄存器Q端数据不变。不写else分支,也能达到相同的效果 end 上面是设计常用的带有复位和使能的寄存器,其对应电路图如下图a)所示。上面的写法满足EDA工具自动插入时钟门控的条件,所以工具可以综合出带有时钟门控的寄存器,如下图b)所示,由于ICG(Intergrated Clock Gating) Cell的引入,en无效的时候,寄存器的时钟是可以被关闭的。 V3版本设计的门控率如下 门控率仅为76%,分析dc中clock_ungate报告,有大量的8位数据信号为进行门控,导致寄存器持续反转,功耗上升。因此着手进行代码优化,给相应多bit数据加上时钟门控。 经过优化后,门控率升至90.19。 优化后打榜得分如下。 优化后:  门控率提升至90.19%  PPA提升47.37%  功耗降低53.77% 结论:提升门控率是降低功耗、提升PPA的有效手段。 V5版本(尽量使用无复位寄存器) 无复位寄存器相比有复位寄存器在功耗和面积上均有一些优势。可以在一些非控制信号无需复位的寄存器去掉复位信号提高PPA。 优化后打榜得分如下。 优化后:  PPA提升0.97%  面积降低0.17%  功耗降低1.67% 结论:使用无复位寄存器有在PPA上有所提升,但总体幅度较小,可能是因为本设计寄存器占总逻辑单元数量比例较少导致的。 V6版本去掉无用的DFX计数器 在打榜测评是有些无用的DFX信号,可以在提交时去掉。如DT005的包计数器,包含16个32bit计数器,经测试回归测试最多会使用15位宽,手动优化去掉未使用到的位宽。 优化后: 优化后:  PPA提升3.10%  面积降低0067%  功耗降低5.27%  结论:去掉无用的DFX计数器可以小幅提高PPA成绩的有效手段。 V7版本模块整体门控 时钟门控技术除了V4版本使用的自动时钟门控技术,还有分级时钟门控技术。自动时钟门控即使所有的寄存器都增加了门控,时钟跟节点到达所有门控单元的的路上消耗的功耗确依然存在,为了优化这部分功耗,引入了分级时钟门控技术。 如上图所示,电路不需要工作时,分级时钟门控技术能减少Level1 ICG和 Syn ICG之间时钟树上的功耗。一般来说分级时钟门控需要在工具自动插入门控前面手动例化ICG Cell。 DT005提供的标准单元库 可以例化ICG门控单元 我在每级模块的接收和发送都手动插入了ICG,让其只在工作时打开时钟。 优化后:  PPA提升49.91%  面积提升0.12%%  功耗降低43.75 小结 对于DT005设计最有效优化PPA的方案为 MEM替换LATCH,自动时钟门控,分级时钟门控。 本设计方案采取的是延时处理报饿死方式,其在实现与理解上较为轻松,但PPA方案与单RAM方式仍有一定差距。 附录 分析DC综合脚本 其只进行了时钟门控的插入,未对模块进行打平,理论上可以对一些模块间有信号交互的地方手动进行ungroup打平,也可以有效提高PPA。、 2. DC门控自动插入门控时钟会有一个最低限度,一般3bit及以上才会插入时钟门控。 set_clock_gating_style -minimum_bitwidth 1可以修改,实测修改后功耗不升反将,看来是时钟门控引入的功耗大于其寄存器本身的功耗。
08-16
在补充一个任务目标。核心结论        DT005设计通过系统性优化策略,最终PPA得分优化至原始版本的589.8%,功耗优化至原始版本的6.01%,面积优化至原始版本的51.4%。 【编辑本段】【回目录】 关键优化措施 MEM替换LATCH:将存储单元从寄存器(Register)替换为锁存器(LATCH),显著降低面积和功耗。 ID存储方式优化:通过融合高低ID的FIFO结构,减少冗余存储单元,节省面积。 提升寄存器门控率:修改代码为可被综合工具识别添加时钟门控,有效降低动态功耗。 架构并行优化尝试:探索并行仲裁机制以提升性能,但未达到预期效果。 使用无复位寄存器:在非控制信号中,使用无复位寄存器代替有复位寄存器。 去掉无用DFX信号:部分DFX信号在打榜测试中未使用到,可以去除。 添加模块级门控:手动例化模块级时钟门控,在模块空闲时关闭其时钟,以降低动态功耗及整体时钟树功耗。 【编辑本段】【回目录】 详细优化过程 V0版本:基准        我初步方案为两级过滤+单RAM+双ID-FIFO+串行仲裁。            打榜得分如下。          对比往年优秀设计,无论是功耗面积都有着较大差距。因此准备着手对PPA进行优化,经和导师沟通讨论,确定了以下优化checklist。 内存模块中的锁存器替换为寄存器 优化寄存器的时钟门控率 识别并移除无需复位端的寄存器 基于时序分析优化中间缓冲与缓存 输出调度方案的并行与串行实现验证 锁存器替换后的功耗优化 基于波形分析抑制无效翻转 V1版本:MEM替换LATCH 分析V0各模块面积占比,发现RAM占据了主要面积: HF_3W_256D:1065 LF_3W_256D:1069 MEM_9W_1024D:10392 MEM_9W_129D:1336 FIFO_11W_33D:467 总计:8 * (1065 + 1069 + 10392 + 1336 + 467) = 114632 寄存器与锁存器差异分析: 寄存器由两个锁存器构成(主锁存器低通,从锁存器高通)。 使用高通锁存器替代寄存器,可节省面积与功耗。 同类型锁存器面积为寄存器的1/2,静态功耗也更低。 通过替换RF_MEM模型,将原本基于寄存器的模型改为锁存器实现。替换的MEM模型见附件。     优化后打榜得分如下。 优化效果: PPA提升115.84% 面积降低40.03% 功耗降低71.71% 结论:锁存器结构显著降低面积与功耗,是PPA优化的关键一步。   V2版本:使用并行仲裁     在前期方案分析的时候。并行轮询,相比串行轮询,各输出通道可以并行发送数据,可以显著降低每个包的平均等待时间。因此修改代码架构改为并行轮询。     优化后打榜得分如下。     由于增加了7个RR仲裁器,面积功耗均略微增长。但是T0并未降低,整体PPA得分略有降低。使用使用并行轮训对于提高PPA无效。     原因可能是,对于最差情况(各输入通道转发目的为同一输出通道)时,并行轮询和串轮询效率相等。而打榜测试的时候可能包含了这种情况。   V3版本:优化ID存储方式        V0方案里,为了简化设计难度。过滤后缓存中的包ID,是使用两个FIFO分别存储。占用了本设计将近15%的面积。参考其他人的优化方案DT005 ppa分析_侯胜凯 - 侯胜凯的博客 (huawei.com),ID存储可以和包尾信号进行融合存储。基于该方案,对代码进行优化。 优化后打榜得分如下。     优化后打榜得分如下。 优化后: PPA提升14.60% 面积降低13.29% 功耗降低12.18% 结论:该优化对架构改动小,效果显著,值得采用。   V4版本:提升寄存器门控率        时钟门控是一种有效的低功耗设计方法。 always @(posedge clk or negedge rst_n) begin     if (!rst_n)         q <= 32'b0;     else         if (en)             q <= d; // 使能有效时,接收新数据         else             q <= q; // 使能无效时,保持寄存器Q端数据不变。不写else分支,也能达到相同的效果 end 上面是设计常用的带有复位和使能的寄存器,其对应电路图如下图a)所示。上面的写法满足EDA工具自动插入时钟门控的条件,所以工具可以综合出带有时钟门控的寄存器,如下图所示,由于ICG(Intergrated Clock Gating) Cell的引入,en无效的时候,寄存器的时钟是可以被关闭的。 V3设计的门控率如下。        门控率仅为76%,分析DC中clock_ungate报告,有大量的8位数据信号未进行门控,导致寄存器持续反转,功耗上升。因此着手进行代码优化,给相应多bit数据加上时钟门控。     经过优化后,门控率升至90.19%。 优化后打榜得分如下。 优化后: 门控率提升至90.19% PPA提升47.37% 功耗降低53.77% 结论:提升门控率是降低功耗、提升PPA的有效手段。 V5版本:尽量使用无复位寄存器 无复位寄存器相比有复位寄存器在功耗和面积上均有一些优势。可以在一些非控制信号无需复位的寄存器去掉复位信号提高PPA。 优化后打榜得分如下。 优化后: PPA提升0.97% 面积降低0.17% 功耗降低1.67% 结论:使用无复位寄存器有在PPA上有所提升,但总体幅度较小,可能是因为本设计寄存器占总逻辑单元数量比例较少导致的。 【编辑本段】【回目录】 V6版本:去掉无用的DFX计数器 在打榜测评是有些无用的DFX信号,可以在提交时去掉。 如DT005的包计数器,包含16个32bit计数器,经测试回归测试最多会使用15位,手动优化去掉未使用到的位宽。 优化后: 优化后: PPA提升3.10% 面积降低0.67% 功耗降低5.27% 结论:去掉无用的DFX计数器可以小幅提高PPA成绩。   V7版本:分级时钟门控技术 时钟门控技术除了V4版本使用的自动时钟门控技术,还有分级时钟门控技术。自动时钟门控即使所有的寄存器都增加了门控,时钟跟节点到达所有门控单元的的路上消耗的功耗确依然存在,为了优化这部分功耗,引入了分级时钟门控技术。 如上图所示,电路不需要工作时,分级时钟门控技术能减少Level1 ICG和 Syn ICG之间时钟树上的功耗。一般来说分级时钟门控需要在工具自动插入门控前面手动例化ICG Cell。 DT005提供的标准单元库可以例化ICG门控单元 在每级模块的接收和发送都手动插入了ICG,让其只在工作时打开时钟。 优化后: PPA提升49.91% 面积提升0.12% 功耗降低43.75% 结论:分级时钟门控可以有效降低功耗,有效提升PPA。   小结 version T0 Power Area PPA Score V0:基准 104576 0.0047 118548 95.14 V1:MEM替换LATCH 132291 0.00133 71096 205.35 V2:使用并行仲裁 132291 0.00136 71470 202.32 V3:优化ID存储方式 132293 0.00117 61644 235.33 V4:提升寄存器门控率 132293 0.00054 61362 346.8 V5:尽量使用无复位寄存器 132293 0.00053 61258 350.15 V6:去掉无用的DFX计数器 132294 0.0005 60845 361.02 V7:分级时钟门控技术 104578 0.00028 60921 541.19 注:V1-V6版本由于使用了其他版本的VCS导致T0偏大,实际应该与V0、V7相同。 针对DT005设计,最有效的PPA优化方案为: MEM替换LATCH(V1) 自动时钟门控(V4) 和分级时钟门控(V7) 本方案采用延时处理避免包饿死,实现简单,但PPA与单RAM方案仍有差距。 最后打榜成绩如下,比本地得分略低一些。 附录 DC综合脚本分析:DC脚本仅插入时钟门控,未进行模块打平(ungroup),无法进行模块间时序优化。手动打平模块间信号可进一步提升PPA。手动调用ungroup命令打平模块后,PPA提升明显。 门控插入规则:DC默认仅对3bit及以上信号插入门控,设置set_clock_gating_style -minimum_bitwidth 1后,可以让其对1bit信号也进行门控插入。最后功耗反而上升,表明门控引入功耗超过节省值。
08-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值