数字ic后端设计从入门到精通7(含fusion compiler, tcl教学)sta时序分析
易混术语区分
时间
buf/inv delay/mm (ps):分rise和fall的;不同工艺角,取值50-150
clk_tran(ps):分不同工艺角/晶体管工艺,取值40-170
data_tran(ps):分不同工艺角/晶体管工艺,取值140-500
组合逻辑时间计算部分时间
clk_q delay(ps):即TclktoQ,分不同工艺角/晶体管工艺,取值20-100
clk_d setup time(ps):分不同工艺角/晶体管工艺,取值5-50
clkfreq(MHz):这里以1000MHz左右为例,下面的参数和Tclk有关
OCV:分不同工艺角,取值40-100
SI pushout:分不同工艺角,取值5-50
Clock skew:分不同工艺角,取值50-150
时序变量关系详解
🧠 三个关键延迟参数如下:
参数名称 | 含义 | 取值范围(ps) | 分类/影响因素 |
---|---|---|---|
buf/inv delay/mm (ps) | 缓冲器或反相器在单位长度(毫米)上的延迟 | 50~150 ps/mm | Rise/Fall 不同;工艺角不同 |
clk_tran(ps) | 时钟信号传输延迟(从源到触发器时钟端) | 40~170 ps | 工艺角、晶体管类型 |
data_tran(ps) | 数据路径传输延迟(从组合逻辑输入到输出) | 140~500 ps | 工艺角、晶体管类型 |
这三个延迟之间是什么关系?它们与组合逻辑延迟的计算有什么联系?
✅ 简要总结:
这三个参数都属于 时序路径中的延迟组成部分,但在不同的路径段中起作用:
buf/inv delay/mm
是 物理布线层级的延迟,用于估算 Repeater 插入距离或长线走线的总延迟;clk_tran
和data_tran
是 从寄存器到寄存器路径中的关键延迟项,分别代表时钟路径和数据路径的延迟;- 在进行 组合逻辑时间(Tlogic)计算 时,
data_tran
是主要来源,而clk_tran
则出现在时钟路径中,共同参与时序约束判断。
🔍 更详细的关系解析(以表格形式)
参数 | 所属路径 | 用途 | 与其他参数的关系 | 示例说明 |
---|---|---|---|---|
buf/inv delay/mm | 布线层(Routing Layer) | 用于 Repeater 插入距离计算、长线延迟估算 | 它是 data_tran 或 clk_tran 的基础之一(走线越长,delay越大) | 如果某段走线为 2mm,且 delay/mm=100ps,则该段走线延迟为 200ps |
clk_tran | 时钟路径(Clock Path) | 表示从时钟源到触发器时钟端口的延迟 | 与 data_tran 共同决定是否满足 setup/hold 时间约束 | clk_tran = 100ps,表示时钟到达触发器需要 100ps |
data_tran | 数据路径(Data Path) | 表示从上一级触发器输出到当前触发器输入之间的组合逻辑+布线延迟 | 是 Tlogic 的主要组成部分 | data_tran = 300ps,表示组合逻辑+走线延迟总共为 300ps |
🧮 组合逻辑时间(Tlogic)是如何计算的?
组合逻辑时间(Tlogic)通常指的是从一个触发器输出(Q)到下一个触发器输入(D)之间的所有延迟之和,包括:
Tlogic = TclktoQ + Tcombo + Tnet
Tlogic = TclktoQ + data_tran
其中:
- TclktoQ:触发器输出延迟(由工艺角决定)
- Tcombo:组合逻辑单元本身的延迟(如 AND、OR、MUX 等)
- Tnet:互连网络延迟(即 data_tran),包含 buf/inv 的走线延迟
所以可以看到:
data_tran
≈Tcombo + Tnet
buf/inv delay/mm
是Tnet
的一部分,取决于走线长度和金属层特性
📌 举个例子帮助理解
假设你有一个触发器 → 组合逻辑 → 触发器的路径:
参数 | 数值 |
---|---|
TclktoQ | 60 ps |
Tcombo(组合逻辑) | 200 ps |
Tnet(走线延迟) | 100 ps |
data_tran(总数据路径) | 300 ps(= 200 + 100) |
clk_tran(时钟路径) | 100 ps |
OCV | 50 ps |
Clock Skew | 20 ps |
Setup Time | 20 ps |
Tclk(时钟周期) | 1000 MHz → 1 ns = 1000 ps |
那么 setup 检查公式为:
TclktoQ + Tcombo + Tnet + Setup ≤ Tclk - clk_tran + Clock Skew - OCV
代入数值:
60 + 200 + 100 + 20 ≤ 1000 - 100 + 20 - 50
→ 380 ≤ 870 ✅ 满足 setup 要求
✅ 问题:
问题 | 回答 |
---|---|
buf/inv delay/mm 是什么? | 表示每毫米走线的缓冲器或反相器延迟,用于估算布线延迟 |
clk_tran 和 data_tran 是什么? | 分别表示时钟路径和数据路径的总延迟 |
它们之间有什么关系? | buf/inv delay/mm 是 data_tran 和 clk_tran 的一部分(走线延迟);data_tran 是 Tlogic 的主要部分 |
它们如何影响组合逻辑延迟? | data_tran 直接构成 Tlogic;clk_tran 用于判断是否满足 setup/hold 时间要求 |
setup 和 hold 的检查公式
✅ 一、Setup 时间检查公式(完整)
目标:确保数据在下一个时钟上升沿之前已经稳定到达触发器 D 端。
TclktoQ + Tcombo + Tnet + Tsetup ≤ Tclk - (clk_tran_FF2 - clk_tran_FF1) + Skew - OCV_neg
📌 各项含义:
术语 | 含义 |
---|---|
TclktoQ | 上游触发器输出延迟(Clock 到 Q) |
Tcombo | 组合逻辑延迟(AND、OR、MUX 等) |
Tnet | 数据路径布线延迟(走线+buffer) |
Tsetup | 当前触发器所需的建立时间 |
Tclk | 时钟周期(= 1 / 频率) |
clk_tran_FF1 | 上游触发器的时钟路径延迟 |
clk_tran_FF2 | 当前触发器的时钟路径延迟 |
Skew | 两个触发器之间的时钟偏差(FF2_CLK - FF1_CLK) |
OCV_neg | 片上变化(用于 setup 的保守裕量) |
✅ 二、Hold 时间检查公式(完整)
目标:确保当前时钟沿之后的数据不会被前一个周期的时钟沿错误采样。
TclktoQ + Tcombo + Tnet ≥ Thold + (clk_tran_FF2 - clk_tran_FF1) - Skew + OCV_pos
📌 各项含义:
术语 | 含义 |
---|---|
Thold | 当前触发器所需的保持时间 |
clk_tran_FF1 , clk_tran_FF2 | 两个触发器各自的时钟路径延迟 |
Skew | 两个触发器之间的时钟偏差(FF2_CLK - FF1_CLK) |
OCV_pos | 片上变化(用于 hold 的保守裕量) |
🧠 三、关键概念总结
概念 | 公式中的作用 | 是否参与 Tlogic | 是否参与 setup/hold |
---|---|---|---|
TclktoQ | 数据路径起点延迟 | ✅ 是 | ✅ 参与 |
Tcombo | 组合逻辑单元延迟 | ✅ 是 | ✅ 参与 |
Tnet (data_tran) | 布线延迟 | ✅ 是 | ✅ 参与 |
Tsetup | 建立时间要求 | ❌ 否 | ✅ 参与 setup |
Thold | 保持时间要求 | ❌ 否 | ✅ 参与 hold |
Tclk | 时钟周期 | ❌ 否 | ✅ 参与 setup |
clk_tran_FF1 | 上游触发器时钟延迟 | ❌ 否 | ✅ 参与 setup/hold |
clk_tran_FF2 | 当前触发器时钟延迟 | ❌ 否 | ✅ 参与 setup/hold |
Skew | 时钟偏移 | ❌ 否 | ✅ 参与 setup/hold |
OCV_neg | OCV 裕量(setup) | ❌ 否 | ✅ 参与 setup |
OCV_pos | OCV 裕量(hold) | ❌ 否 | ✅ 参与 hold |
🎯 四、举个完整数值例子
参数 | 数值(ps) |
---|---|
TclktoQ | 60 |
Tcombo | 200 |
Tnet | 100 |
Tsetup | 20 |
Thold | 30 |
Tclk | 1000 |
clk_tran_FF1 | 90 |
clk_tran_FF2 | 110 |
Skew | 10 |
OCV_neg | 50 |
OCV_pos | 50 |
✅ Setup Check:
左边 = 60 + 200 + 100 + 20 = 380
右边 = 1000 - (110 - 90) + 10 - 50 = 950
→ 380 ≤ 950 ✅ 通过
✅ Hold Check:
左边 = 60 + 200 + 100 = 360
右边 = 30 + (110 - 90) - 10 + 50 = 90
→ 360 ≥ 90 ✅ 通过
✅ 总结一句话:
组合逻辑延迟(Tlogic)由 TclktoQ、Tcombo、Tnet 构成;而 setup 和 hold 检查则需要结合 clk_tran、skew、OCV、setup/hold 时间等参数进行综合判断。