3、标准单元库:单元库的构成(时序弧、延迟模型NLDM/CCS)、PVT条件对延迟的影响
标准单元库,说白了就是芯片设计的“乐高积木”。你想想看,我们做数字芯片,不可能从晶体管一级开始画吧?那得画到猴年马月去。标准单元库就是把这些最基础的门电路——与门、或门、触发器、锁存器——封装成一个个“黑盒子”。我们做综合、做时序分析,用的就是这些黑盒子的“行为模型”。
我个人习惯,拿到一个新工艺的库,第一件事不是看它的驱动能力,而是先翻它的 时序弧 和 延迟模型。这两样东西,决定了你的芯片能不能跑得快,会不会出问题。
3.1 单元库的构成:不只是“门”那么简单
一个完整的标准单元库,里面包含的东西可多了。除了我们熟知的逻辑功能,还有一堆“附加属性”。我把它分成三块:
- 逻辑功能:这个单元是干嘛的?AND、OR、INV、DFF…… 这是最基础的。
- 时序与功耗模型:这是核心。包括延迟、输出转换时间、功耗(动态、静态、漏电)。我们今天重点聊的就是这个。
- 物理与工艺信息:版图尺寸、引脚位置、金属层、天线效应规则…… 这些是后端布局布线用的。
嗯,这里要注意,同一个逻辑功能,往往有多个“版本”。比如一个2输入与非门,可能有 NAND2_X1、NAND2_X2、NAND2_X4 等等。后面的数字代表驱动能力。驱动能力越大,能带动的负载就越大,但面积和功耗也越大。这就是我们常说的“面积-速度-功耗”的权衡。
核心知识点: 标准单元库的“灵魂”是它的时序模型。没有准确的时序模型,STA就是纸上谈兵。
3.2 时序弧:信号传播的“路径”
什么是时序弧?说白了,就是信号从一个引脚到另一个引脚之间的延迟路径。一个简单的反相器,输入是A,输出是ZN。那么从A到ZN就有一条时序弧。
但触发器就复杂了。它有多个时序弧:
- 建立时间弧:数据引脚(D)到时钟引脚(CK)的建立时间检查。
- 保持时间弧:数据引脚(D)到时钟引脚(CK)的保持时间检查。
- 传播延迟弧:时钟引脚(CK)到输出引脚(Q/QN)的延迟。
- 复位/置位弧:复位引脚(RN)到输出引脚(Q)的延迟。
我在项目中遇到过一个问题:一个复杂的时序路径,STA报了一堆违例,但怎么看都觉得不应该。后来一查,发现是库里的一个触发器,它的 复位时序弧 定义错了。复位信号的延迟被定义成了“负值”,导致STA算出来的保持时间完全不对。嗯,从那以后,我每次换库都会先跑一个简单的测试用例,验证一下基本的时序弧。
时序弧还有一个重要的属性:条件。比如一个多路选择器,它的输出延迟取决于选择信号的状态。库里面会用 when 条件来描述这种依赖关系。
3.3 延迟模型:NLDM vs CCS
这是今天的重头戏。延迟模型,就是描述“输入转换时间”和“输出负载”如何影响“单元延迟”和“输出转换时间”的数学模型。
目前主流的有两种:NLDM 和 CCS。
3.3.1 NLDM(非线性延迟模型)
NLDM 是最经典的模型。它用一张二维查找表来描述延迟。横轴是输入转换时间(Input Slew),纵轴是输出负载电容(Output Load)。
举个例子,一个反相器的延迟表可能长这样:
| Input Slew (ps) | Load = 10 fF | Load = 50 fF | Load = 100 fF |
|---|---|---|---|
| 20 | 15.2 | 28.7 | 45.3 |
| 50 | 22.1 | 38.5 | 58.9 |
| 100 | 35.6 | 55.2 | 80.1 |
STA工具会根据实际的输入斜率和负载,在表里做线性插值,算出最终的延迟。
NLDM 的优点:简单、计算快、文件小。
NLDM 的缺点:精度有限。尤其是在深亚微米工艺下,波形不再是简单的线性斜坡,NLDM 的近似误差会变大。
我的经验: 在 28nm 及以上的工艺,NLDM 基本够用。但到了 16nm 以下,我强烈建议用 CCS。我曾经在一个 7nm 项目上,用 NLDM 做 STA,结果后仿真的时序和 STA 差了 20% 以上,查了好久才发现是模型精度的问题。
3.3.2 CCS(电流源模型)
CCS 是 Synopsys 推出的更先进的模型。它不再用简单的查找表,而是把单元建模成一个 电流源。它描述的是:在不同的输入波形和输出负载下,单元输出端的电流随时间变化的曲线。
你可以把 CCS 想象成:它不光告诉你“延迟是多少”,还告诉你“输出波形长什么样”。
CCS 的优点:
- 精度高:能准确模拟非线性的波形,比如 Miller 效应、IR Drop 对波形的影响。
- 一致性:延迟计算和噪声计算用的是同一个模型,避免了 NLDM 中“延迟模型”和“噪声模型”不一致的问题。
- 支持高级效应:比如多输入同时翻转(SIS)、电压降(IR Drop)感知的时序分析。
CCS 的缺点:文件大(可能是 NLDM 的 5-10 倍)、计算时间长。
避坑指南: 我曾经在一个项目中,库同时提供了 NLDM 和 CCS 两种模型。我图省事,用了 NLDM 做综合,CCS 做 STA。结果综合出来的网表在 STA 里一堆违例。为什么?因为综合工具用 NLDM 算的延迟偏小,它觉得时序很好,就拼命优化面积,结果实际流片回来,芯片跑不到目标频率。所以,综合和 STA 一定要用同一个模型,要么都用 NLDM,要么都用 CCS。
3.4 PVT条件对延迟的影响
PVT 就是 工艺(Process)、电压(Voltage)、温度(Temperature)。芯片的延迟不是固定的,它会随着 PVT 的变化而剧烈变化。
你想想看,同一颗芯片,在冬天和夏天,跑起来的速度可能差 20%。这就是 PVT 的影响。
3.4.1 工艺(Process)
工艺偏差是指晶圆制造过程中的随机变化。比如掺杂浓度、氧化层厚度、线宽等等。这些偏差会导致不同芯片、甚至同一颗芯片上不同位置的晶体管速度不一样。
- Fast 工艺角:晶体管速度快,阈值电压低,漏电大。
- Slow 工艺角:晶体管速度慢,阈值电压高,漏电小。
- Typical 工艺角:介于两者之间。
3.4.2 电压(Voltage)
电压越高,晶体管开关越快,延迟越小。但功耗也越大。所以芯片设计总是在“性能”和“功耗”之间做权衡。
- 高电压(如 1.1V):延迟小,速度快。
- 低电压(如 0.9V):延迟大,速度慢,但省电。
3.4.3 温度(Temperature)
温度对延迟的影响比较复杂。在先进工艺下,有一个有趣的现象叫 温度反转效应(Temperature Inversion)。
- 传统工艺:温度越高,电阻越大,延迟越大。
- 先进工艺(28nm 以下):在低电压下,温度越高,阈值电压下降,晶体管反而开关更快,延迟变小。
所以,在做 STA 时,我们通常要跑多个 PVT 组合:
- 最差情况(Worst Case):Slow 工艺 + 低电压 + 高温(或低温,取决于工艺)。用于检查建立时间。
- 最好情况(Best Case):Fast 工艺 + 高电压 + 低温(或高温)。用于检查保持时间。
一句话总结: PVT 决定了芯片的“快慢”。STA 的目的,就是确保芯片在所有 PVT 条件下都能正常工作。
3.5 知识体系结构图
下面这张图,帮你理清本章的核心逻辑:
这张图从“标准单元库构成”出发,一路拆解到“时序弧”、“延迟模型”和“PVT条件”。你顺着箭头看,就能明白我们今天讲的所有内容是怎么串起来的。
好了,关于标准单元库的构成、时序弧、延迟模型和 PVT 的影响,我们就聊到这里。这些东西,是 STA 的“地基”。地基不牢,上面盖的房子再漂亮也没用。希望你能花点时间,把今天的内容消化掉。
课后小练习: 找一个你手头项目的标准单元库,打开它的 .lib 文件,找到其中一个单元的 NLDM 或 CCS 模型,看看它的时序弧是怎么定义的。再对比一下不同 PVT 条件下的延迟值,感受一下 PVT 的影响有多大。
可可精品资料库