标准单元库与 Liberty:EDA 工具眼里的「器件手册」
更新时间:2026-09-12。本文是「集成电路大类 · 芯片设计」进阶层(intermediate)数字逻辑第八十五篇。综合把 RTL 映射成门,STA报告每条路径延迟,但工具凭什么知道某个与门在某个负载下快还是慢、漏多少电?答案是代工厂/库团队预先建好的标准单元库,其中时序/功耗的「说明书」就是 Liberty(.lib)。
本文要回答的问题
- 标准单元库里一个单元有哪几种「视图」,为什么综合、P&R、验证各看不同文件?
- Liberty 的层级(库→单元→pin→时序弧)怎么组织?
- NLDM 为什么用「输入转换 × 输出负载」两张查找表就能给出延迟?
- setup/hold、转换时间、内部功耗、泄漏在 .lib 里怎么表示?
- CCS 比 NLDM 精确在哪?多工艺角(MCMM)要准备哪些库?
一、一个标准单元的多副面孔
标准单元是高度固定、宽度不等的预制版图(INV、BUFFER、NAND/NOR 各种驱动强度、DFF、锁存器、AOI/OAI 复合门、延迟单元等),同一逻辑功能随工艺提供不同**阈值(HVT/RVT/LVT)**版本以权衡速度与漏电。围绕一个单元有几套视图:
- Liberty(.lib→.db)时序/功耗/功能视图:综合和 STA 用,本文重点;
- LEF:抽象物理视图(单元外形、pin 位置和金属层、阻塞层、阱),供布局布线;
- GDS/OASIS:最终制造用全版图;
- Verilog/VHDL 功能模型:仿真用(一般是行为级
assign/门级原语); - 还有 SPICE 模型、噪声库(CCS noise)、天线/可靠性信息。
P&R用 LEF 摆单元、布线,签核时序时再回到 .lib 取延迟。
二、Liberty 的层级与时序弧
.lib 是 ASCII(或编译成二进制 .db),层级为:library → cell → pin / bus → timing/power 数据。关键概念是时序弧(timing arc):从一个相关输入 pin 到输出 pin 的延迟/检查关系。组合单元有输入→输出弧(如二输入与门有 A→Y、B→Y 两条,还可用 function/pin 区分相关逻辑);时序单元有 clock→Q 弧和 D→CLK 的 setup/hold 约束弧(timing check)。每条弧用 timing_sense(positive_unate/negative_unate/non_unate)说明输入输出翻转方向关系,工具据此做时序传播。
三、NLDM:用两张查找表描述延迟
延迟不是一个常数,而随**输入转换时间(input slew)和输出负载电容(output load)**变化。NLDM(非线性延迟模型)用二维表:
cell_rise / cell_fall 表: index_1 = 输入转换(若干档), index_2 = 负载电容(若干档)
值 = 该单元从输入到输出 50% 点的传播延迟
rise_transition / fall_transition 表: 同样两个索引, 值 = 输出转换时间(slew)工具拿到上游传来的输入 slew 和由布线提取的输出负载电容,在表里双线性插值得到本单元延迟和输出 slew,再向下游传播——这就是 STA 的基本运算。功耗也在库里:leakage_power(可随输入状态 state-dependent 变化,因为不同输入堆叠截止不同)、internal_power(单元自身翻转的内部功耗,同样按输入 slew/输出负载查表),开关功耗则由连线电容和翻转率在工具侧算(见功耗构成)。时序单元还有 setup_timing/hold_timing 检查表(也是 slew/load 的二维表)。
四、为什么需要多个库:PVT 与多阈值
同一单元在不同工艺批次、电压、温度下延迟差很多,库团队用 SPICE 在多个 PVT 角特征化出多套 .lib,典型配:ss/低压/高温(慢角,做 setup)、ff/高压/低温(快角,做 hold)、典型 tt;还要为 HVT/RVT/LVT 等不同阈值电压版本各出一套(门电气特性讲过漏电-速度权衡)。综合/P&R/STA 以 **MCMM(多角多模)**方式同时载入多个库和多个 SDC 场景,分别检查 setup/hold、不同功能/测试模式。先进工艺还提供比 NLDM 更精确的 CCS/ECSM 复合电流源模型,用随时间变化的驱动电流波形来计算延迟(对高阻互连、米勒电容、噪声更准),NLDM 仍是入门最该理解的基础。
五、库如何驱动综合与签核
综合时,映射器对每个通用门在候选库单元(不同驱动强度、不同 Vt)中,按 .lib 预估延迟+功耗+面积,选最优组合并做尺寸调整(sizing);布线前用估算线负载(wireload),布线后用真实提取 RC 重算。签核 STA 完全以库的时序弧、slew/load 表、时序检查为准,库数据本身的误差直接决定分析可信度,所以库特征化(characterization:对每个单元跑大量 SPICE 扫描填这些表)是连接工艺与数字设计的关键一环。
与现有篇目的衔接
总结
一句话总结:标准单元库是连接工艺与数字设计的桥梁,同一预制单元同时提供 Liberty 时序/功耗/功能视图、LEF 抽象物理视图、GDS 制造视图和仿真模型,Liberty 文件按 library-cell-pin 组织,用从相关输入到输出的时序弧描述组合传播、用 clock→Q 和 D→CLK 的时序检查弧描述触发器,时序值不是常数而由 NLDM 二维查找表给出:以输入转换时间和输出负载电容为两个索引,分别查表并双线性插值得到单元延迟和输出 slew 再向下游逐级传播,同时库还给出随输入状态变化的漏电、按 slew/load 查表的内部翻转功耗以及 setup/hold 检查表;同一逻辑通常有不同驱动强度和 HVT/RVT/LVT 多阈值版本以权衡速度与漏电,且必须在 ss 低压高温、ff 高压低温等多个 PVT 角各特征化一套库,供综合映射时挑选最优单元、供 STA 在 MCMM 多角多模下分别签核 setup 与 hold,先进工艺再用更精确的 CCS 复合电流源波形模型替代 NLDM;这些表本身由对每个单元跑海量 SPICE 扫描的库特征化流程产生,其精度直接决定综合选型和时序签核的可信度。