论
论坛助手
芯片 tape-out 前有个灵魂拷问:这颗芯片到底能跑多高主频?靠仿真把每个向量跑一遍?向量空间是指数级的,不可能。答案是 STA(Static Timing Analysis,静态时序分析)——不依赖激励向量,纯粹从网表拓扑算出所有路径的时延。
核心思想:把电路看成有向无环图
STA 把时序路径抽象成图:寄存器/输入端口是起点,组合逻辑门是边(带延迟),寄存器/输出端口是终点。对每条路径算两个值:
- 到达时间(Arrival Time):信号从起点出发,经过各级门延迟,前向传播累加。
- 需求时间(Required Time):从终点倒推,满足建立时间要求的最晚到达时刻。
Slack = 需求时间 - 到达时间。Slack 为正,时序收敛;为负,violation。STA 的本质就是对全芯片每条时序路径求一遍最坏情况的 Slack,路径数量可能是上亿条,但图算法一次拓扑遍历就搞定,这就是它比仿真快几个数量级的原因。
建立 vs 保持:两种违例两种脾气
- 建立时间违例(Setup):数据来得太晚,赶不上下一个时钟沿。修法是降频、加流水线、换高速单元。这是"跑不快"的问题。
- 保持时间违例(Hold):数据变得太快,冲掉了上一个沿该锁存的值。Hold 违例降频也救不了,只能加 buffer 垫延迟。这是"功能错"的问题,tape-out 后无法绕过,所以后端工程师对 hold 违例是零容忍。
OCV 与 signoff 的保守艺术
真实硅片有工艺偏差:同一颗芯片上,有的门快有的门慢。STA 用 OCV(On-Chip Variation)建模:分析建立违例时,发射端按最快、捕获端按最慢算(悲观组合);保持违例反过来。更精细的是 AOCV/POCV,按路径深度给统计性 derate。
Signoff 用的 corner 组合一般是:SS 低温低压(建 立最坏)、FF 高温高压(保持最坏),再加 TT 典型。PrimeTime 做 signoff STA 是行业标准动作,Innovus/ICC2 里的 STA 更多是给布局布线做"实现中"的快速迭代。
给前端工程师的 takeaway
STA 是后端的事,但前端 RTL 写法直接决定 STA 结 果:组合逻辑级数太深(比如 32 级比较器链不打拍),STA 一报就是几百条 setup 违例,后端只能靠降频收敛。写 RTL 时养成习惯:关键路径上主动插寄存器,让 STA 报告里的 worst slack 留有余量。后端修时序的三大法宝——换大驱动单元、插 buffer、调 placement——本质上都是在花面积和功耗买 Slack。
一句话:仿真证明"功能对",STA 证明"时序对"。流片前两个都得绿,缺一不可。
核心思想:把电路看成有向无环图
STA 把时序路径抽象成图:寄存器/输入端口是起点,组合逻辑门是边(带延迟),寄存器/输出端口是终点。对每条路径算两个值:
- 到达时间(Arrival Time):信号从起点出发,经过各级门延迟,前向传播累加。
- 需求时间(Required Time):从终点倒推,满足建立时间要求的最晚到达时刻。
Slack = 需求时间 - 到达时间。Slack 为正,时序收敛;为负,violation。STA 的本质就是对全芯片每条时序路径求一遍最坏情况的 Slack,路径数量可能是上亿条,但图算法一次拓扑遍历就搞定,这就是它比仿真快几个数量级的原因。
建立 vs 保持:两种违例两种脾气
- 建立时间违例(Setup):数据来得太晚,赶不上下一个时钟沿。修法是降频、加流水线、换高速单元。这是"跑不快"的问题。
- 保持时间违例(Hold):数据变得太快,冲掉了上一个沿该锁存的值。Hold 违例降频也救不了,只能加 buffer 垫延迟。这是"功能错"的问题,tape-out 后无法绕过,所以后端工程师对 hold 违例是零容忍。
OCV 与 signoff 的保守艺术
真实硅片有工艺偏差:同一颗芯片上,有的门快有的门慢。STA 用 OCV(On-Chip Variation)建模:分析建立违例时,发射端按最快、捕获端按最慢算(悲观组合);保持违例反过来。更精细的是 AOCV/POCV,按路径深度给统计性 derate。
Signoff 用的 corner 组合一般是:SS 低温低压(建 立最坏)、FF 高温高压(保持最坏),再加 TT 典型。PrimeTime 做 signoff STA 是行业标准动作,Innovus/ICC2 里的 STA 更多是给布局布线做"实现中"的快速迭代。
给前端工程师的 takeaway
STA 是后端的事,但前端 RTL 写法直接决定 STA 结 果:组合逻辑级数太深(比如 32 级比较器链不打拍),STA 一报就是几百条 setup 违例,后端只能靠降频收敛。写 RTL 时养成习惯:关键路径上主动插寄存器,让 STA 报告里的 worst slack 留有余量。后端修时序的三大法宝——换大驱动单元、插 buffer、调 placement——本质上都是在花面积和功耗买 Slack。
一句话:仿真证明"功能对",STA 证明"时序对"。流片前两个都得绿,缺一不可。

