数字IC低功耗设计之--XOR自门控与Design Compiler topo实现

科技   教育培训   2024-11-04 18:04   上海  

封面选自Midjourney网站

本文选自知识星球QQ群上传的个人笔记《低功耗设计技术总结 - 3万字,129页,更多干货见星球。同时星球还有分享自己编写的 20本+系统性的、编辑成册的笔记,高达56万字+,还有分享还有更多干货知识以及后端视频教程等,星球专属QQ群还有分享1.5G的后端教程所有EDA的最新UG欢迎加入星球进行查看。


《数字IC低功耗设计之--
XOR自门控与Design Compiler topo实现》
时钟XOR自门控(Self Gating基本思路和时钟门控类似,都是当寄存器中的数据保持不变时,通过关闭某些寄存器的时钟信号来降低设计的动态功耗。不过XOR 自门控是利用异或门(XOR)将存储在寄存器中的数据与到达寄存器的数据引脚的数据进行比较,输出门控时钟使能信号。
 
在讲解XOR自门控之前,先回顾一下时钟门控(Clock Gating)技术的缺点。
 
时钟门控使用条件:
代码中有确定的门控时钟使能信号或者有门控时钟使能译码逻辑存在。比如下面代码中的EN信号:
input [n:0] D;
input CLK,EN;
output [n:0] Q;
always@ (posedge CLK)
begin
if (EN)
Q<=D;
end
 
时钟门控的缺陷:
从上面代码能看出,要想使用时钟门控技术,对代码风格有一定的要求,得有时钟门控信号。这可是硬伤,毕竟设计中不可能所有的寄存器都能找到这样逻辑,也不能保证所有写Verilog代码的人都有这样的觉悟。
因此,这就导致设计中有些寄存器组无法采用门控时钟技术。 

不懂的可以看相关历史推文:
妇孺皆知的低功耗技术 | 门控时钟(Clock Gating, CG)技术
忆往昔--集成门控时钟技术的前世--分离门控时钟技术
Memory门控时钟低功耗 --在Floorplan和Placement阶段有何考虑?
效果贼棒 | 门控时钟低功耗--Auto Bound 与Physical Aware Clock Gating
集成门控时钟 多级门控时钟 层次门控时钟 门控时钟的形式验证
门控时钟的可测性设计(DFT)
门控时钟低功耗--在Placement阶段有什么技巧?

XOR自门控与时钟门控的不同之处:
与时钟门控的不同之处在于,时钟门控技术依赖于现有设计中的使能条件,而XOR 自门控则利用异或门(XOR)将存储在寄存器中的数据与到达寄存器的数据引脚的数据进行比较,输出门控时钟使能信号。如果数据不变,则由异或门直接关断寄存器的时钟输入信号。下图显示了插入XOR自门控单元产生门控时钟使能信号的原理。
XOR自门控单元
XOR自门控的优点:
默认情况下,工具仅支持非门控时钟寄存器上的XOR自门控。
以下是XOR自门控的优点:
有些情况,某些寄存器的使能条件无法从现有逻辑推断出,因此无法用传统的门控时钟技术来关断它们的时钟信号。这种情况下可以使用XOR自门控来关断它们的时钟信号;
时钟门控和XOR自门控并不冲突,可以同时使用。对于那些已经采用门控时钟关断的寄存器,可以使用下面的命令允许在这些寄存器上采用XOR自门控:
set_self_gating_options \
-interaction_with_clock_gating
采用了该技术之后,这些寄存器时钟信号的关断时间可能会增加。

DCT实现的Flow:
DCT实现的Flow

注意:当具有XOR自门控单元的ASCII网表被读回到Power Compiler工具中时,所有属性信息都将丢失,并且工具无法识别自门控单元用于报告或优化。Power Compiler工具使用write_script命令支持XOR自门控ASCII流程。如下图所示,使用下面的命令保存设计的当前属性:
write_script -hierarchy -output file_name

XOR Self-Gating ASCII Flow
将需要将设计读回工具时,可以使用source命令来加载由write_script命令导出的脚本。这将设置设计中的所有必需属性,包括用于报告和优化目的的自门控单元。

DCT实现:
使用set_self_gating_objects命令可以指定XOR自门控的对象,运行compile_ultra -self_gating命令时会执行XOR自门控。
如果不想对MID子设计中的D_OUT寄存器组执行XOR自门控,可以用下面的命令:
dc_shell-topo> set_self_gating_objects -exclude MID/D_OUT_reg[*]
dc_shell-topo> compile_ultra -self_gating
 
对时钟门控寄存器执行XOR自门控:
默认情况下,Power Compiler工具不会在时钟门控寄存器上执行XOR自门控。如果要对时钟门控的寄存器执行XOR自门控,可以使用以下命令:
dc_shell-topo> set_self_gating_options \
-interaction_with_clock_gating insert
 
指定XOR自门控选项:
要指定XOR自动门控的条件并定义与时钟门控的交互,使用set_self_gating_options命令。在用命令compile_ultra -self_gating进行编译,Power Compiler插入XOR门时,会采用这些设置。
 
应用举例:
使用set_self_gating_options命令,对2位到9位之间的寄存器插入XOR自门控:
dc_shell-topo> set_self_gating_options -min_bitwidth 2 -max_bitwidth 9
dc_shell-topo> compile_ultra -self_gating


星球简介


目前星球中一共分享了20本+系统性的、整理成册的笔记,高达56万字+,2024年星球将分享更多私人笔记,逐步完善整个IC设计生态。
以后知识星球也会陆续会开放:
《Timing/DRV修复的专题笔记》 《ICC2 flow教程》 《Makefile在IC设计中的应用》和 《RedHawk教程笔记》 等等。
目前已上传的笔记有:
  • 低功耗设计技术总结 - 3万字,129页
  • IR drop的分析与修复总结 - 4.3千字,20页
  • 数字后端理论及实践-ICC干货笔记 - 11万字,423页
  • 数字后端理论及实践-Innouvs教程(第4版)- 5.7万字,316页
  • ICC2教程-星球精编版 - 2万字,125页
  • 数字后端理论及实践-Innouvs教程(第5版)- 11.8万字,635页
  • 面试笔试题整理 面试笔试经验分享(第1版)- 1.6万字,48页
  • 面试笔试题整理 面试笔试经验分享(第2版)- 2.3万字,87页
  • ICC2 ICC与Innovus的命令对照(第1版)
  • Tcl与DesignCompiler教程(第1版)- 6.1万字,183页
  • DRC规则讲解、DRC的检查与修复(第1版)- 7.3千字,26页
  • Congestion的分析与修复专题(第1版)- 1.2万字,41页 
  • Perl-Tk教程(第1版)- 1.6万字 73页
  • 星球精华推文分类整理合集(第1版)- 1.8万字,75页
  • 星球精华推文分类整理合集(第2版)- 4.4万字,160页
  • 面试笔试题整理 面试笔试经验分享(第3版)- 2.7万字,96页
  • 星球精华推文分类整理合集(第3版)- 6.6万字,240页
  • 时序分析与sdc专题笔记(第1版) - 3.1万字,115页
  • 星球精华推文分类整理合集(第4版)- 8.4万字,296页
  • 面试笔试题整理 面试笔试经验分享(第4版)- 3.2万字,103页
  • 更多教程、笔记持续更新中。。。 


集成电路设计及EDA教程
知识 前端 后端 DFT 低功耗 验证 EDA 1rtl检查:LEDA 2仿真:VCS 3逻辑综合:DC 4形式验证:Formality 5布局布线:ICC 6STA:PT 7功耗分析:PTPX 8DRC LVS:Calibre
 最新文章