面向布局布线的RTL改进
📑 目录
面向布局布线的RTL改进
作者: Tingting Wen, Chris Zhu, Dongwei Pei (AMD Beijing)
会议: SNUG 2018
页数: 9
源文件: SNUG_TPC_APR_Wen_RTL_Improvement_for_Placement_and_Routing_paper.pdf
Page 1
面向布局布线的RTL改进
Tingting Wen, Chris Zhu, Dongwei Pei Advanced Micro Devices, Inc., Beijing, China www.amd.com
摘要
如今,随着行业向亚7nm几何尺寸设计发展,SoC 系统级芯片设计变得更加复杂和具有挑战性。为了缩短设计周期,许多设计人员依赖CAD工具或转换脚本从算法级(如C语言到SystemVerilog)生成RTL 寄存器传输级。这通常是在RTL级别验证设计功能的有效方式,但由于机器翻译的编码风格差,也会在性能、功耗和芯片面积(PPA 功耗性能面积)方面做出妥协。
功能等价的不同编码风格可能被综合为具有不同性能和PPA特性的网表。ASIC工程师不能仅依赖布局布线 PnR工具来"修复"编码风格差的设计。应探索优化的编码风格。本文总结了几种常见的差编码风格,并提出了相应的优化方法,能够显著改善PPA。遵循这些规则,使用Perl编写转换脚本优化了几个RTL示例,结果显示与原始设计相比PPA改善约10%-20%。Design Compiler工具中的-retime选项也能在面积影响很小的情况下改善差RTL设计的时序。
Page 2
目录
1. 背景
2. RTL编码风格与PPA之间的关系
2.1 For Loop表达式
2.2 Full Case表达式
2.3 AND/OR逻辑表达式
3. Design Compiler综合优化-retime
4. AMD实际设计编码风格更新与重定时总结
4.1 编码风格更新
4.2 重定时优化总结与PPA估算
5. 结论
Page 3
1. 背景
当前SoC 系统级芯片设计变得越来越具有挑战性,因为设计复杂度不断提高,但设计周期却越来越短。每家公司都在追赶时间表,只有领先于竞争对手才能获得市场先机。在这种背景下,许多设计人员依赖工具或转换脚本从算法级别(如C代码或MATLAB语言)生成RTL。有时这是在Verilog语言中实现设计新功能的有效方式,但这些工具与EDA电子设计自动化工具配合使用时不够智能,通常会导致性能、功耗和芯片面积(PPA)的下降,特别是在更先进的工艺和复杂设计中。当您在物理级别发现这些问题时已经太晚了,必须从行为级别重新进行设计修改,然后所有流程都必须重做,非常耗时。这就是为什么我们提出今天的主题——需要改进设计流程,在每个设计阶段都必须考虑PPA。在行为级别设计阶段,我们必须优化编码风格,不仅要关注功能,还要关注性能改进。在FEI阶段,有时可以对综合后的逻辑添加retime选项。基于此,我们可以最大化PD的优化效果,力争获得设计的最佳PPA。
2. RTL编码风格与PPA之间的关系
这种关系背后的原因是,不同的表达式导致相同的组合逻辑,可以综合为不同的网表。
2.1 For Loop表达式
使用For Loop实现译码器。在综合的Elaborate命令期间,For Loop被展开,串联的if语句倾向于被综合为具有从上到下赋值优先级的串联MUX。来自7nm工艺的MUX延迟值如图2所示。
Page 4
2.2 Full Case表达式
通过使用case语句,综合工具将更高效地工作,因为不需要展开For Loop。这样我们使用full case表达式获得相同的功能,但它将被综合为一个Mux。传播延迟仅为27ps,比for loop情况减少18%。
2.3 AND/OR逻辑表达式
Page 5
第三种表达式是使用AND & OR赋值代替unique case。因为AND & OR逻辑的传播延迟比MUX小,在本例中传播延迟降至20ps,与原始设计相比降低了39%。
3. Design Compiler综合优化-retime
优化编码风格的RTL可以通过Design Compiler工具综合获得更好的结果。compile_ultra命令中有一个高级选项-retime,可以在综合期间帮助改善时序。
重定时 Retiming在不修改源代码的情况下改善时序电路的时序性能。它自动在组合逻辑门或LUT之间移动寄存器(寄存器平衡)以改善时序,同时保持从设计的主输入和输出观察到的原始行为。Retiming在门或LUT之间移动寄存器,但不会改变从主输入到主输出的周期或路径中的寄存器数量。然而,它可以改变设计中的寄存器总数。
但使用-retime后,设计验证工程师无法识别寄存器之间的逻辑,不容易找到调试点。但对于经过验证的RTL则没有此问题。通常在一次综合流程中有超过3次compile_ultra,会再增加一次仅用于-retime选项的compile_ultra,这样可以获得更好的时序结果。
4. AMD实际设计编码风格更新与重定时总结
4.1 编码风格更新
由于GPU 图形处理器设计规模巨大,RTL级别存在大量SystemVerilog编码风格。设计人员倾向于使用类似C语言的include函数和For Loops,这带来了许多意外的门数和长的组合逻辑级数。
Page 6-9
(第6-9页包含:Case2 RTL、Case3 Unique case RTL、AND & OR逻辑实验结果(6%时序改善)、违例路径数与TNS更新趋势、Retiming总结(NVP、TNS、频率、功耗和面积改善图表)以及结论。)
5. 结论
5.1 更新编码风格的方法:
- 意外的编码风格可能导致差PPA,如冗余赋值判断case、for loops和default X
- 修改RTL设计必须获得与原始相同的功能。为避免大量工作和错误,我们开发了Perl来更新设计
- compile_ultra -retime流程对ECO 工程变更指令流程的影响是一个大问题。目前只有经过验证的设计可以考虑。希望后续能为新开发的设计找到克服此问题的方法
图片索引
本文共 14 张图片,存放于 SNUG_TPC_APR_Wen_RTL_Improvement_for_Placement_and_Routing_paper_images/ 目录。