1. 课程导入与体系总览

数字后端实现中,时钟树综合(Clock Tree Synthesis,CTS)与时序收敛(Timing Closure)是决定芯片能否按目标频率签核的两条主线。很多初学者会把它们理解成两个独立阶段:先做 CTS,再修时序。但在真实的 Cadence 流程里,二者是持续耦合的——CTS 决定了时钟的延迟、偏斜与功耗,而时序收敛又不断反过来要求调整时钟结构、约束和物理布局。本课程的目标,是建立一套从 RTL 到签核的完整认知框架,并掌握 Innovus、Tempus、Genus 等核心工具在其中的分工与协作方式。

一、先看清整条链路:从综合到签核

一个典型的 Cadence 数字实现流程可以概括为:Genus 逻辑综合 → Innovus 布局布线(含 CTS)→ Tempus 时序签核 → 物理验证。它们并非简单串行,而是通过统一的时序约束(SDC)、统一的库文件(.lib/.lef)和统一的寄生参数(SPEF)互相咬合。

Genus 负责把 RTL 映射成门级网表,输出 .v 网表与 .sdc 约束;Innovus 读取网表、LEF、MMMC 配置后完成 floorplan、placement、CTS、routing;Tempus 则基于 Innovus 导出的 SPEF 与网表做独立签核,输出 setup/hold 违例报告。理解这条链路的关键在于:约束是贯穿始终的“合同”,时钟定义一旦变化,CTS 与签核结果都会随之改变。

Cadence 时钟树与时序收敛工具链总览 Genus 逻辑综合 / 约束生成 Innovus 布局布线 / CTS Tempus 时序签核 / STA 物理验证 DRC / LVS / 签核 共享数据层:SDC 约束 · .lib/.lef 库 · MMMC 视图 · SPEF 寄生参数 约束与库文件贯穿全流程,任一变更都会向下游传播 Innovus CTS 内部关键环节 时钟树规格定义 时钟树构建与平衡 偏斜 / 延迟优化 时钟功耗与拥塞评估 时序收敛闭环 Setup / Hold 分析 违例定位与修复 ECO / 增量优化 签核确认 反馈

二、三个工具各自解决什么问题

Genus 的核心任务是综合与约束建立。它把 RTL 映射为门级网表,同时生成初始 SDC。这里最容易埋下隐患的是时钟定义:create_clock 的周期、waveform、uncertainty 一旦写错,后续所有 CTS 与 STA 都会在错误的前提下工作。因此综合阶段就要确认时钟源、分频关系和跨时钟域约束是否与设计规格一致。

Innovus 承担物理实现与 CTS。它读取网表、LEF、MMMC 配置后,先完成 floorplan 与 placement,再进入 CTS。CTS 的核心目标是构建一棵延迟可控、偏斜可接受的时钟树,同时兼顾功耗与拥塞。常用命令如 ccopt_design 会依据时钟树规格自动完成缓冲器插入、门控时钟处理和偏斜平衡。CTS 完成后,Innovus 会输出时钟树报告(clock tree report),其中包含各时钟域的 insertion delay、skew、latency 等关键指标。

Tempus 是独立签核工具。它不依赖 Innovus 的内部时序引擎,而是基于 SPEF 与网表重新做 STA,因此结果更接近最终签核标准。Tempus 输出的 setup/hold 违例报告,是判断设计是否收敛的最终依据。实际项目中,Innovus 内部时序与 Tempus 签核结果之间常存在差异,这种差异本身就需要被分析和解释。

三、学习路径规划

本课程共 30 章,建议按“认知 → 操作 → 分析 → 优化”四层递进学习:

  • 认知层(第 1–6 章):建立流程总览、时钟树基本概念、SDC 约束体系与 MMMC 视图认知。
  • 操作层(第 7–16 章):掌握 Innovus CTS 配置、时钟树规格编写、ccopt 流程、时钟门控处理与 CTS 报告解读。
  • 分析层(第 17–24 章):学习 Tempus STA 分析、setup/hold 违例定位、跨时钟域检查与寄生参数提取。
  • 优化层(第 25–30 章):进入时序 ECO、增量优化、低功耗时钟树设计与签核收敛实战。
学习建议:每学完一个工具环节,都在同一份示例设计上重复操作。例如用同一组 SDC 约束,分别在 Genus、Innovus、Tempus 中观察时钟定义如何被解释,这样能最快建立“约束—实现—签核”的联动直觉。

四、贯穿全课程的核心判断依据