使用IC Compiler II加速设计收敛:拥塞驱动重构、并发时钟数据优化和多源时钟树综合

SNUG India 2017 2017 27 页

使用IC Compiler II加速设计收敛

会议: SNUG India 2017 作者: Prashant Aggarwal, KT Santosh, Sagar Patel, Ujjwal Prakash (Qualcomm India) 页数: 27 源文件: SNUG_TPC_CCD_Aggarwal_Microsoft_PowerPoint_WB21_28_GPU_SNUG_2017_v09_002pptx_paper.pdf


Page 1

使用IC Compiler II加速设计收敛

Prashant Aggarwal, KT Santosh, Sagar Patel, Ujjwal Prakash Qualcomm India Private Limited 2017年7月12-13日, SNUG India

Page 2

议程

- 设计概述 - 容量与运行时间——合并模块 - 拥塞驱动重构(CDR) - 并发时钟数据优化(CCD) - 多源时钟树综合(MSCTS) - 结论

Page 3

概述

- 目标:提供同类最佳的PPA 功耗性能面积 - 满足严苛的进度——上市时间是关键 - 设计:子系统范围从10M到25M实例 - 频率范围500 MHz到1 GHz - 多个电源域 Power Domain - 多场景收敛 - 挑战:复杂单元周围高引脚接入拥塞 - 高逻辑深度的关键路径 Critical Path - 签核的长收敛周期

Page 4

IC Compiler II ——工具箱

- 容量与运行时间 - 拥塞驱动重构(CDR) - 多源CTS(MSCTS) - 并发时钟数据优化(CCD)

Page 5

容量与运行时间——合并模块

- 在物理实现期间将子层次折叠到父层次中 - ICC2能够在<5天的周转时间内处理3M到5M实例 - 考虑因素:Bounds——我们需要吗?Hard vs Soft - 边界优化——允许还是不允许? - set_freeze_ports –data|clock|all - 好处:更快的接口时序收敛、减少资源和开销 - create_placement期间使用Hard bound,其余步骤使用Soft bound

Page 6

合并模块——结果

Bound类型拥塞(%)WNS(ns)TNS(ns)FEP
无bounds0.51%0.226127.9828733
Soft bound0.52%0.25877.5717192
Exclusive Hard bound0.53%0.236118.9899400

Page 7-8

CDR——拥塞驱动重构

- 网表重新布线以减少导线交叉和导线长度 - 此外可以将复杂逻辑重新映射为更简单的逻辑结构 - 在处理复杂单元周围的引脚接入拥塞方面非常有效 - 修改了place_opt流程,多次调用CDR以获得最佳拥塞效果

Page 9

多遍创建布局(CP)和CDR

Initial Place:
  create_placement -timing_driven -congestion -congestion_effort high -effort high
  create_placement -congestion_driven_restructuring -use_seed_locs

Initial HFN: create_placement -effort high -use_seed_locs -congestion -congestion_effort high create_placement -congestion_driven_restructuring -use_seed_locs

Initial Opto: create_placement -congestion_driven_restructuring -use_seed_locs

Page 10

多遍CDR——结果

拥塞得分(越低越好):

Both Dirs %Horizontal %Vertical %
无CDR1.6102.8100.510
单遍CDR1.1312.1000.163
多遍CDR0.9431.7540.133

时序对比:

Path Group无CDR WNS(ns)无CDR TNS(ns)无CDR FEP多遍CDR WNS(ns)多遍CDR TNS(ns)多遍CDR FEP
Group A0.0940.20490.1010.24113
Group B0.819973.71626380.881986.7512765

- 拥塞显著降低(1.61 → 0.94) - 时序有非常轻微的恶化

Page 11-12

多源CTS(MSCTS)

为什么使用MSCTS?

传统CTS: - 优点:易于实现,无需定制工作;支持所有类型的时钟结构 - 缺点:QoR不是最好的

Mesh Based CTS: - 优点:低延迟、低抖动和更好的OCV容忍度 - 缺点:时钟树面积/功耗更高;因定制而难以实现;不支持多种时钟结构/拓扑

多源CTS结合了两者的优点: - 实现简便 - 更好的QoR——延迟、偏斜、抖动 - 更低的时钟树面积/功耗 - 定制:用H-tree替代mesh - 几乎但不完全是零偏斜到达抽头驱动器 - 抽头位置和数量经过迭代精炼以实现均匀的sink分布

Page 13

MSCTS——步骤

# 1. 创建抽头点
create_clock_drivers -loads [get_nets ] \
  -lib_cell [get_lib_cells ] \
  -locations  -prefix mscts_tap_<>

2. Sink分配

3. H-Tree实现低延迟、零偏斜到达抽头点

synthesize_multisource_clock_taps -clocks

4. 标记don't touch并锁定,继续常规CTS

set_dont_touch $meshNets true set_dont_touch $mscts_insts true set_attribute -objects $mscts_insts -name physical_status -value locked set_attribute -objects $smeshNets -name physical_status -value locked

Page 14

MSCTS——结果

>20%的Skew降低 10-20%的Latency降低 时钟面积略小

CTS QoR对比:

传统CTS Skew(ns)传统CTS Latency(ns)MSCTS Skew(ns)MSCTS Latency(ns)
Setup A0.0730.4950.0570.432
Setup B0.0490.4270.0420.354
Hold A0.0590.2920.0420.223
Hold B0.0390.2420.0340.193

15-20%的Hold TNS降低,Setup时序几乎相同 时钟单元面积(平方微米):传统CTS 2726.737 → MSCTS 2707.259

Page 15-16

CCD——并发时钟和数据优化

- 在所有设计阶段并发优化时钟和数据 - 基于q/d slack生成(并实现)偏斜偏移 - 通过利用相邻阶段的可用slack帮助改善WNS并实现更高频率(通常在时序ECO期间手动完成) - 有助于抑制对可能增加面积/拥塞/功耗的长数据通路的激进优化 - 与MSCTS配合良好

- place_opt:可与或不与trial CTS一起使用,计算的偏移将在clock_opt中实现 - clock_opt:第一遍默认CTS,基于可用slack推导偏移;第二遍CTS使用推导的偏移 - route_opt

Page 17

CCD——选项与命令

# place_opt
place_opt.flow.enable_ccd true
place_opt.flow.enable_ccd_useful_skew_max_prepone 0.050
place_opt.flow.enable_ccd_useful_skew_max_postpone 0.050
place_opt -from final_opto -to final_opto

cts

clock_opt.flow.enable_ccd true clock_opt -to build_clock clock_opt -from route_clock –to route_clock

clock_opt

clock_opt.flow.enable_ccd true clock_opt.flow.enable_ccd_route_clock true clock_opt -from final_opto

route_opt

route_opt.flow.enable_ccd true route_opt.flow.enable_cto true route_opt

Page 18

CCD——结果

布局阶段:

不使用CCD使用CCD
WNS (ns)0.1500.099
TNS (ns)34697
FEP197398737
拥塞 %1.151.05

布线后:

不使用CCD使用CCD
Setup WNS (ns)0.1890.143
Setup TNS (ns)79257
Setup FEP187406488
Hold WNS (ns)0.1290.158
Hold TNS (ns)6.16.5
DRC Count50132524
标准单元面积XX-1%

- Setup TNS提升13倍! - DRC减少2倍 - 标准单元面积改善1% - 偏移限制在+/-50ps

Page 19

CCD——时钟插入延迟变化

CCD后时钟插入延迟delta分布图,显示prepone sinks和postpone sinks的数量分布。

Page 20

CCD——注意事项

- 在设计周期早期启用CCD可能掩盖网表、库、布图规划问题 - 建议在不使用CCD的情况下完成布局以获得合理良好的QoR,然后启用CCD - 布局阶段计算的偏移可能无法在CTS中实现——我们将偏移限制在+/-50ps,此值会因时钟树而异 - CCD可能对未在ICC2中启用的场景中的setup/hold时序产生不利影响 - ccd.skip_path_groups可用于跳过设计中不想启用CCD的部分

Page 21-22

未来工作与增强请求

CDR: - 为设计中的特定模块启用CDR(后续版本2016+已支持)

MSCTS: - 为克隆/合并单元提供映射列表以帮助形式验证(FV)

CCD: - 更多直观的消息/摘要报告,提供面积增加、级数变化、对setup/hold的影响等信息

Page 23-24

总结

特性面积时序功耗进度备注
容量与运行时间+++减少开销,更快接口收敛
MSCTS+++跨角点更好扩展,降低Hold TNS
CCD++++减少标准单元面积,降低拥塞,更好WNS,更高Fmax
CDR++重映射/重布线减少引脚接入拥塞

Page 25

结论

- ICC2的容量和运行时间改进允许合并模块并以最少资源加速收敛 - 在布局期间进行多遍CDR可以减少拥塞,不影响时序 - 从布局到布线后所有设计阶段有效使用CCD可以帮助提高Fmax和/或优化功耗、面积 - 多源CTS提供更好的CTS和时序QoR,同时保持传统CTS的简便性

Page 26-27

致谢 与 谢谢!


图片索引

本文共114张图片,存放于 SNUG_TPC_CCD_Aggarwal_Microsoft_PowerPoint_WB21_28_GPU_SNUG_2017_v09_002pptx_paper_images/ 目录。