1. 时钟树综合(CTS)基础与设计预检
时钟树综合是数字后端设计中最关键的环节之一,直接影响芯片的时序收敛和功耗表现。在ICC II工具中,完整的CTS流程包含设计检查、时钟树构建、布线优化等多个阶段。我们先从最基础的设计预检开始,这是确保CTS成功的前提条件。
使用check_design -checks pre_clock_tree_stage命令时,工具会系统性地检查以下关键项:
- 时钟定义与传播:确认所有时钟信号正确定义且能完整传播到所有寄存器时钟端。常见问题是时钟源未正确定义或存在逻辑阻断。
- 参考单元标记:检查时钟树用到的BUF/INV是否被误标记为dont_touch。我曾遇到因单元属性设置错误导致时钟树无法平衡的情况。
- 多电压域处理:对于多电压域设计,必须确保跨电压域的时钟缓冲器是Always-On(AON)类型。工具会检查这些缓冲器是否满足AON特性。
- 过渡时间约束:检查时钟网络上的max_transition约束是否合理。过紧的约束会导致时钟树插入过多缓冲器,过松则可能产生信号完整性问题。
实际项目中容易忽略的是dont_touch网络的检查。有些设计会在时钟路径上手动插入缓冲链并标记为dont_touch,这可能导致CTS阶段无法优化这些路径。建议使用以下命令检查:
tcl复制get_nets -of [get_pins -filter "is_clock_used_as_clock==true"] -filter "dont_touch==true"
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. CTS核心阶段与CCD协同优化
2.1 build_clock阶段的拥塞感知
传统CTS流程中,build_clock阶段采用虚拟布线(virtual routing)估算延迟,可能导致后续实际布线时出现时序劣化。通过启用全局布线引擎可以获得更准确的拥塞信息:
tcl复制set_app_options -name cts.compile.enable_global_route -value true
这个选项在CCD流程中默认开启,但在经典CTS中需要手动启用。实测在28nm工艺的一个DSP模块中,启用后时钟偏斜(skew)降低了15%,布线后时序违例减少23%。
