RTL Architect如何提升效率以实现最优PPA
📑 目录
- 1. Xiangqing Wang, [[Moore Threads]]
- 2. **议程**
- 3. **RTL Architect**
- 4. **识别和改进RTL PPA**
- 5. **快速扩展的使用模式**
- 6. **One Synopsys —— Verdi + RTL Architect**
- 7. **议程**
- 8. **RTL Architect如何帮助我们?**
- 9. **快速且可预测的RTL PPA调优**
- 10. **统一GUI简化分析和RTL交叉探针**
- 11. **快速且可预测的RTL PPA调优**
- 12. **快速且可预测的RTL PPA调优**
- 13. **议程**
- 14. **并行探索**
- 15. **并行探索流程**
- 16. (并行探索实验设置与结果可视化)
- 17. **并行探索——频率扫描示例**
- 18. **议程**
- 19. **RTL Architect重构**
- 20. **RTL Architect重构——典型应用用法**
- 21. **提示**
- 22. **议程**
- 23. **总结**
- 24. 第24页
RTL Architect如何提升效率以实现最优PPA
会议: SNUG China 2022
作者: Xiangqing Wang (Moore Threads), Gogo Min (Synopsys)
时间: 2022年9月
页数: 24
源文件: SNUG_CN_Wang_September_2022_paper.pdf
Page 1
Xiangqing Wang, Moore Threads Gogo Min, Synopsys 2022年9月
RTL Architect如何提升效率以实现最优PPA
Page 2
议程
- RTL Architect介绍 - 快速且可预测的RTL PPA调优 - 并行探索 - RTL Architect重构 - 总结
Page 3
RTL Architect
更好的RTL带来更好的PPA 功耗性能面积
RTL Architect发展势头(2020年3月发布至今): - 覆盖领域:汽车、CPU、GPU、5G、可编程、存储器、网络、移动、AI - 用户类型:RTL设计师、综合与P&R工程师
关键特性: - 改善RTL质量 → PPAC估算 - 快速迭代 → 3倍加速 - 最佳综合预测 → 快速收敛
Simply Better RTL
Page 4
识别和改进RTL PPA
关键Fusion平台技术: - 预测引擎:快速门级预测,从模块扩展到SoC - 功耗分析:PrimePower驱动的平均、峰值和毛刺功耗,结合时序和活动 - 统一GUI:分析、调试和精确定位RTL问题的单一界面 - 并行探索:扫描和比较多个设计参数 - 设计规划:自动且全面的布图规划功能 - 约束管理:跟踪和维护时序和功耗约束 - 重构:快速优化RTL层次以获得更好的PPA
RTL + UPF + SDC + Activity → RTL Architect + PrimePower RTL + PT STA
Page 5
快速扩展的使用模式
设计团队以多种方式使用RTL Architect:
1. RTL PPA改进 —— 交叉探针、快速运行 2. 架构探索 —— 设计扫描、RTL到RTL比较 3. RTL重构 —— 层次操作 4. 布图规划 —— 早期布图规划原型设计 5. IP验证 —— 设计特定IP配置 6. P&R原型设计 —— 使用脏数据快速运行、回归KPI
Page 6
One Synopsys —— Verdi + RTL Architect
RTLA指标现在可以在Verdi中调试: - 切换场景 → 右键实例查看源代码 - 切换时序/功耗/拥塞详情 - 切换到模块视图
操作:搜索、冻结首列、配置列、切换单位、切换小数点位数、过滤、配置颜色方案 在Verdi和RTLA之间拖放实例
HDL → Verdi (KDB) ↔ RTLA (PPA DB) VCS支持
Page 7
议程
- RTL Architect介绍 - 快速且可预测的RTL PPA调优 - 并行探索 - RTL Architect重构 - 总结
Page 8
RTL Architect如何帮助我们?
设计挑战: - 在繁忙的进度中推动更高性能的压力 - 不断增加的设计规模极大地影响了综合运行时间 - 前端和后端之间的反馈循环较长 - RTL PPA调优在多种GUI中进行,难以交叉探针
关键技术: - 可预测的快速综合用于RTL PPA调优 - 自动且全面的布局规划 Floorplan功能 - 扫描和比较多个设计参数 - 快速优化RTL层次以获得更好的PPA - 跨多视图的高级交叉探针
Page 9
快速且可预测的RTL PPA调优
RTL Architect利用与Fusion Compiler相同的设置: - 设置库 → 读取和详细阐述RTL → 应用时序约束、加载功耗意图(可选)→ 加载布图规划信息(可选)
共用设置 → Conditioning → Estimation(RTL Architect)→ Initial Map → Logic Opto → Initial Place → Initial DRC → Initial Opto → Final Place → Final Opto(Fusion Compiler)
Page 10
统一GUI简化分析和RTL交叉探针
快速且可预测的RTL PPA调优
(统一GUI界面截图)
Page 11
快速且可预测的RTL PPA调优
- RTLA和FC在initial_opto阶段之间具有良好的相关性,RTLA运行时间加速3.5倍 - WNS在3%相关性内,TNS在5.3%相关性内 - 配方探索——被FC采纳 - 取消分组几个关键模块获得积极趋势 - 调整路径组和权重获得积极趋势
| 指标 | RTLA vs FC (initial_opto) |
| R2R WNS (ps) | 3% |
| TNS (ns) | 5.3% |
| 运行时间 | 3.4倍加速 |
| R2R WNS | TNS | NVP | |
| RTLA ungroup | -13.2% | -22.6% | -11.3% |
| RTLA path group | -36.8% | -50.4% | -67.3% |
Page 12
快速且可预测的RTL PPA调优
通过RTL编码结构和综合配方进行拥塞优化: - 原始拥塞图:全局布线溢出单元数 2668 - 优化后拥塞图:全局布线溢出单元数 2356
Page 13
议程
- RTL Architect介绍 - 快速且可预测的RTL PPA调优 - 并行探索 - RTL Architect重构 - 总结
Page 14
并行探索
广阔的探索空间,大量变量集合: - 层堆叠 - 库 - 约束 - 时钟门控 - 功耗 - 频率 - 阈值电压类别 - 多种RTL - 电压 - 利用率 - 布局规划 Floorplan
Page 15
并行探索流程
Setup Libraries → Read and Elaborate RTL → Apply Timing constraints, Load Power Intent (Optional) → Exploration Configuration → Explore_design → PPA analysis (Experiment 1/2/3)
Configure:
Define sweep params:
frequency sweep;
floorplan sweep;
macro_placement sweep;
...
set_explore_design_options_cmd
-user_script explore.tcl -var_list {}
Page 16
(并行探索实验设置与结果可视化)
Page 17
并行探索——频率扫描示例
早期快速探索不同目标频率和低Vt比例:
Block1:
| 运行 | 频率 | 低Vt比例 | WNS | TNS | NVP | 面积 |
| Run1 | 基准 | 0% | 基准 | 基准 | 基准 | 基准 |
| Run2 | 基准 | 10% | -40% | -87.8% | -77.2% | -1.8% |
| Run3 | +10% | 0% | +16% | +301.7% | +470.4% | +1.4% |
| Run4 | +10% | 10% | -4% | -40.3% | -46.8% | +0.08% |
Block2:
| 运行 | 频率 | 低Vt比例 | WNS | TNS | NVP | 面积 |
| Run1 | 基准 | 0% | 基准 | 基准 | 基准 | 基准 |
| Run2 | 基准 | 10% | -22.8% | -94.8% | -88.7% | -2.1% |
| Run3 | +10% | 0% | +17.1% | +172.9% | +132.0% | +0.8% |
| Run4 | +10% | 10% | -14.3% | -77.7% | -67.7% | -0.8% |
*频率提升作为下一步候选。*
Page 18
议程
- RTL Architect介绍 - 快速且可预测的RTL PPA调优 - 并行探索 - RTL Architect重构 - 总结
Page 19
RTL Architect重构
设计层次通常需要因各种原因(如拥塞、时序或布图规划)进行重构。
RTL重构 RTL Restructuring允许用户以多种方式进行设计中的层次变更: - 创建新层次(Grouping)和溶解现有层次(Ungrouping) - 重构多次实例化模块 - 重新父级化——将实例从层次中的当前位置移动到新位置,同时保持连接关系 - Feedthrough插入 - 写出重构后的RTL
流程:
Setup Libraries → Read and Elaborate RTL → Apply Timing constraints, Load Power Intent (Optional) → Load Floorplan info (Optional) → RTL Restructuring → RTL' simulation → Generate new RTL' → Block implementation
Page 20
RTL Architect重构——典型应用用法
- group_cell, ungroup_cells, reparent_cell...
原始结构:
TOP_SS
U1, U2, U3, U6
U_a_top → U4
U_b_top → U5
U_c_top
RTL重构后:
TOP_SS
U_i_top → U1, U2, U3
U_c_top → U6, U4, U5
Page 21
提示
- 设计端口宽度/数量必须匹配 - 如果没有重构需求,将设计保持为黑盒 - 从文件列表中排除 - 无需详细阐述,节省运行时间 - 使用report_design_mismatch获取黑盒列表 - Formality全设计等效性检查 Equivalence Checking - compare_rule 替代 user_match 定义 - 启用变量进行常量和未读点验证
Page 22
议程
- RTL Architect介绍 - 快速且可预测的RTL PPA调优 - 并行探索 - RTL Architect重构 - 总结
Page 23
总结
- RTL PPA预测和优化加速3.5倍 - RTLA和FC之间良好的时序相关性 - 统一GUI简化工作流程——分析、识别和交叉探针 - 内置和用户定义的参数扫描(通过并行探索)识别实现的最佳配方 - 层次分组/取消分组(通过RTL重构)实现快速的What-if分析
Page 24
谢谢!
图片索引
本文共111张图片,存放于 SNUG_CN_Wang_September_2022_paper_images/ 目录。
第3页:RTL Architect市场覆盖 第4页:Fusion平台技术全景 第5页:使用模式扩展 第6页:Verdi + RTL Architect集成 第8页:设计挑战 第9页:RTL Architect与Fusion Compiler共用设置 第10页:统一GUI 第11页:相关性数据与配方探索 第12页:拥塞优化前后对比 第14页:探索空间变量 第15页:并行探索流程 第16页:实验设置可视化 第17页:频率扫描数据 第19页:RTL重构流程 第20页:层次重构前后对比 第23页:总结关键数据