时钟树综合是数字后端设计中最关键的环节之一,直接影响芯片的时序收敛和功耗表现。在ICC II工具中,完整的CTS流程包含设计检查、时钟树构建、布线优化等多个阶段。我们先从最基础的设计预检开始,这是确保CTS成功的前提条件。
使用check_design -checks pre_clock_tree_stage命令时,工具会系统性地检查以下关键项:
实际项目中容易忽略的是dont_touch网络的检查。有些设计会在时钟路径上手动插入缓冲链并标记为dont_touch,这可能导致CTS阶段无法优化这些路径。建议使用以下命令检查:
tcl复制get_nets -of [get_pins -filter "is_clock_used_as_clock==true"] -filter "dont_touch==true"
传统CTS流程中,build_clock阶段采用虚拟布线(virtual routing)估算延迟,可能导致后续实际布线时出现时序劣化。通过启用全局布线引擎可以获得更准确的拥塞信息:
tcl复制set_app_options -name cts.compile.enable_global_route -value true
这个选项在CCD流程中默认开启,但在经典CTS中需要手动启用。实测在28nm工艺的一个DSP模块中,启用后时钟偏斜(skew)降低了15%,布线后时序违例减少23%。
CCD(Concurrent Clock and Data)通过**有用偏斜(useful skew)**技术同时优化时钟路径和数据路径。其核心思想是:
控制CCD优化强度的关键参数:
tcl复制set_app_options -name ccd.max_prepone -value 0.2 # 最大提前量200ps
set_app_options -name ccd.max_postpone -value 0.4 # 最大推迟量400ps
在7nm项目实践中,建议将偏斜范围控制在时钟周期的10%-20%之间。过大的偏斜可能导致hold修复困难。
与全局偏斜不同,局部偏斜特指存在时序关系的寄存器对之间的时钟偏差。优化local skew能直接改善setup/hold时序:
tcl复制# 启用时序驱动的寄存器聚类
set_app_options -name cts.optimize.local_skew -value true
在AI芯片项目中,采用该技术使关键路径时序改善了12%,同时减少时钟缓冲器数量8%。
I/O路径上的寄存器通常时序紧张,CCD过度优化可能导致问题。两种处理方式:
tcl复制group_path -name IO_PATHS -from [get_ports *]
set_app_options -name ccd.skip_path_groups -value {IO_PATHS}
tcl复制set_app_options -name ccd.optimize_boundary_timing -value false
CCD支持在不影响时序的前提下优化功耗和面积:
tcl复制set_app_options -name clock_opt.flow.enable_clock_power_recovery \
-value power # 或area/auto/none
在移动SoC项目中,选择power模式后时钟网络动态功耗降低18%,leakage功耗降低9%。
tcl复制open_lib chip.dlib
open_block placed_design
# 基础配置
set_scenario_status -active true [all_scenarios]
set_app_options -list {
clock_opt.hold.effort high
time.remove_clock_reconvergence_pessimism true
cts.compile.enable_global_route true
}
# CCD专项配置
set_app_options -name clock_opt.flow.enable_ccd -value true
set_app_options -name ccd.hold_control_effort -value medium
set_app_options -name ccd.max_postpone -value 0.3
# 执行完整流程
clock_opt -from build_clock -to final_opto
查看时钟质量报告:
tcl复制report_clock_qor -type summary
report_clock_timing -type latency -mode func -corner worst
关键指标解读:
在16nm GPU项目中,通过分析clock_qor发现某些时钟域skew偏大,调整平衡策略后使全局skew从150ps降至90ps。
时钟树优化是个需要反复迭代的过程。建议每次CTS后保存设计快照,方便对比不同策略的效果。遇到棘手问题时,可以尝试暂时关闭某些高级功能(如CCD),先确保基础时钟树结构合理,再逐步启用优化选项。