数字ic后端设计从入门到精通7(含fusion compiler, tcl教学)sta时序分析

发布于:2025-06-22 ⋅ 阅读:(16) ⋅ 点赞:(0)

易混术语区分

时间

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_trandata_tran从寄存器到寄存器路径中的关键延迟项,分别代表时钟路径和数据路径的延迟;
  • 在进行 组合逻辑时间(Tlogic)计算 时,data_tran 是主要来源,而 clk_tran 则出现在时钟路径中,共同参与时序约束判断。

🔍 更详细的关系解析(以表格形式)

参数 所属路径 用途 与其他参数的关系 示例说明
buf/inv delay/mm 布线层(Routing Layer) 用于 Repeater 插入距离计算、长线延迟估算 它是 data_tranclk_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_tranTcombo + Tnet
  • buf/inv delay/mmTnet 的一部分,取决于走线长度和金属层特性

📌 举个例子帮助理解

假设你有一个触发器 → 组合逻辑 → 触发器的路径:

参数 数值
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_trandata_tran 是什么? 分别表示时钟路径和数据路径的总延迟
它们之间有什么关系? buf/inv delay/mmdata_tranclk_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 时间等参数进行综合判断。