相关阅读
Design Compiler
https://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482
在使用report_net命令报告线网信息时,对于不同工艺节点的逻辑库,报告格式可能会有所不同,下面展示了较旧逻辑库和较新逻辑库的报告。
****************************************
Report : net
Design : dff_100_flat
Version: W-2024.09-SP2
Date : Sat Jan 10 21:39:52 2026
****************************************
Operating Conditions: fast1 Library: fast1
Wire Load Model Mode: top
Design Wire Load Model Library
------------------------------------------------
dff_100_flat tsmc090_wl50 fast1
Net Fanout Fanin Load Resistance Pins Attributes
--------------------------------------------------------------------------------
d[0] 1 1 0.05101 0.00003 2
--------------------------------------------------------------------------------
Total 1 nets 1 1 0.05101 0.00003 2
Maximum 1 1 0.05101 0.00003 2
Average 1.00000 1.00000 0.05101 0.00003 2.00000
dcnxt_shell> report_net d[0] -significant_digits 5
****************************************
Report : net
Design : dff_100_flat
Version: W-2024.09-SP2
Date : Sat Jan 10 21:42:52 2026
****************************************
Operating Conditions: ss0p95v125c Library: saed32hvt_ss0p95v125c
Wire Load Model Mode: enclosed
Design Wire Load Model Library
------------------------------------------------
dff_100_flat ForQA saed32hvt_ss0p95v125c
Net
Fanout Fanin Load LoadUR LoadUF LoadLR LoadLF Resist Pins Attr
-----------------------------------------------------------------------------------------------
d[0]
1 1 0.71985 0.71999 0.71970 0.71999 0.71970 0.01881 2
-----------------------------------------------------------------------------------------------
Total 1 nets
1 1 0.71985 0.71999 0.71970 0.71999 0.71970 0.01881 2
Maximum
1 1 0.71985 0.71999 0.71970 0.71999 0.71970 0.01881 2
Average
1.00000 1.00000 0.71985 0.71999 0.71970 0.71999 0.71970 0.01881 2.00000
可以看出,对于较新逻辑库,线网不再像之前一样拥有一个简单的负载总量Load,而是由Load、LoadUR、LoadUF、LoadLR、LoadLF组成的复杂负载总量表示,这是由于增强型引脚负载电容建模默认开启(timing_use_enhanced_capacitance_modeling变量默认为true),且逻辑库中存在库引脚属性rise_capacitance、rise_capacitance_range、fall_capacitance、fall_capacitance_range,本文就将详细解释这些属性的用法。
在很早以前,那些较老的逻辑库使用一个简单的库引脚属性capacitance描述单元的引脚负载,如下所示。
cell (DFFRQX1) {
pin (D) {
direction : input;
capacitance : 0.001005;
*****
}
}
在进行互连延迟或单元延迟的计算时,将直接使用该值作为引脚负载,下面使用report_delay_calculation命令展示了一个互连延迟的计算过程(为了方便展示计算过程,使用了线负载模式,但本文内容对拓扑模式也适用),可以看出其中引脚负载c_pin的值为0.001005。
dcnxt_shell> report_delay_calculation -from d[0] -to q_reg[0]/D -significant_digits 10
****************************************
Report : delay_calculation
Design : dff_100_flat
Version: W-2024.09-SP2
Date : Sat Jan 10 22:05:32 2026
****************************************
From port: d[0]
To pin: q_reg[0]/D
Main Library Units: 1ns 1pF 1kOhm
Operating Conditions: fast1 Library: fast1
Wire Load Model Mode: top
Design Wire Load Model Library
------------------------------------------------
dff_100_flat tsmc090_wl50 fast1
arc type: net
Balanced case tree
RC delay: (r_wire/load_count) * (c_pin + c_wire/load_count)
rise: (2.83335e-05 / 1) * (0.001005 + (0.0500003 / 1))
fall: (2.83335e-05 / 1) * (0.001005 + (0.0500003 / 1))
total delay rise, fall: 0.0000014452 , 0.0000014452
由于这样的建模过于粗糙,后面出现了增强型引脚负载电容建模,下面展示在逻辑库中使用库引脚属性rise_capacitance和fall_capacitance对上升沿和下降沿引脚负载分别建模(它们必须成对出现)。
cell (DFFRQX1) {
pin (D) {
direction : input;
capacitance : 0.001005;
rise_capacitance : 0.001010;
fall_capacitance : 0.001000;
*****
}
}
此时互连延迟的计算过程如下所示,可以看出其中上升延迟和下降延迟的引脚负载c_pin的值是不同的。
dcnxt_shell> report_delay_calculation -from d[0] -to q_reg[0]/D -significant_digits 10
****************************************
Report : delay_calculation
Design : dff_100_flat
Version: W-2024.09-SP2
Date : Sat Jan 10 22:42:20 2026
****************************************
From port: d[0]
To pin: q_reg[0]/D
Main Library Units: 1ns 1pF 1kOhm
Operating Conditions: fast1 Library: fast1
Wire Load Model Mode: top
Design Wire Load Model Library
------------------------------------------------
dff_100_flat tsmc090_wl50 fast1
arc type: net
Balanced case tree
RC delay: (r_wire/load_count) * (c_pin + c_wire/load_count)
rise: (2.83335e-05 / 1) * (0.00101 + (0.0500003 / 1))
fall: (2.83335e-05 / 1) * (0.001 + (0.0500003 / 1))
total delay rise, fall: 0.0000014453 , 0.0000014450
进一步地,如果想像SDC命令的-max选项和-min选项那样分别指定最大条件(一般情况下,如果不开启on_chip_variation,这指的是建立时间检查)和最小条件(一般情况下,如果不开启on_chip_variation,这指的是保持时间检查)下的引脚负载,则可以使用库引脚属性rise_capacitance_range和fall_capacitance_range表示上限(最大条件)和下限(最小条件),如下所示。
cell (DFFRQX1) {
pin (D) {
direction : input;
capacitance : 0.001005;
rise_capacitance : 0.001010;
rise_capacitance_range(0.001008, 0.001012);
fall_capacitance : 0.001000;
fall_capacitance_range(0.000998, 0.001002);
*****
}
}
需要注意的是,如果不使用库引脚属性rise_capacitance_range和fall_capacitance_range,但使用了库引脚属性rise_capacitance和fall_capacitance,则库引脚属性rise_capacitance_range会被视为(rise_capacitance, rise_capacitance),库引脚属性fall_capacitance同理。
此时互连延迟的计算过程如下所示,可以看出其中最大条件和最小条件的上升延迟和下降延迟的引脚负载c_pin的值是不同的。
dcnxt_shell> report_delay_calculation -from d[0] -to q_reg[0]/D -significant_digits 10
****************************************
Report : delay_calculation
Design : dff_100_flat
Version: W-2024.09-SP2
Date : Sat Jan 10 22:56:52 2026
****************************************
From port: d[0]
To pin: q_reg[0]/D
Main Library Units: 1ns 1pF 1kOhm
Operating Conditions: fast1 Library: fast1
Wire Load Model Mode: top
Design Wire Load Model Library
------------------------------------------------
dff_100_flat tsmc090_wl50 fast1
arc type: net
Balanced case tree
RC delay: (r_wire/load_count) * (c_pin + c_wire/load_count)
rise: (2.83335e-05 / 1) * (0.001012 + (0.0500003 / 1))
fall: (2.83335e-05 / 1) * (0.001002 + (0.0500003 / 1))
total delay rise, fall: 0.0000014454 , 0.0000014451
dcnxt_shell> report_delay_calculation -from d[0] -to q_reg[0]/D -significant_digits 10 -min
****************************************
Report : delay_calculation
-min
Design : dff_100_flat
Version: W-2024.09-SP2
Date : Sat Jan 10 22:56:44 2026
****************************************
From port: d[0]
To pin: q_reg[0]/D
Main Library Units: 1ns 1pF 1kOhm
Operating Conditions: fast1 Library: fast1
Wire Load Model Mode: top
Design Wire Load Model Library
------------------------------------------------
dff_100_flat tsmc090_wl50 fast1
arc type: net
Balanced case tree
RC delay: (r_wire/load_count) * (c_pin + c_wire/load_count)
rise: (2.83335e-05 / 1) * (0.001008 + (0.0500003 / 1))
fall: (2.83335e-05 / 1) * (0.000998 + (0.0500003 / 1))
此时使用report_net命令报告线网信息,如下所示,在此之前使用了set_load命令将互连负载设置为0,这么做是为了方便观察引脚负载。
dcnxt_shell> set_load 0 [get_nets d[0]]
dcnxt_shell> report_net d[0] -significant_digits 6
****************************************
Report : net
Design : dff_100_flat
Version: W-2024.09-SP2
Date : Sat Jan 10 22:58:26 2026
****************************************
Operating Conditions: fast1 Library: fast1
Wire Load Model Mode: top
Design Wire Load Model Library
------------------------------------------------
dff_100_flat tsmc090_wl50 fast1
Attributes:
c - annotated capacitance
Net
Fanout Fanin Load LoadUR LoadUF LoadLR LoadLF Resist Pins Attr
-----------------------------------------------------------------------------------------------
d[0]
1 1 0.001005 0.001012 0.001002 0.001008 0.000998 0.000028 2 c
-----------------------------------------------------------------------------------------------
Total 1 nets
1 1 0.001005 0.001012 0.001002 0.001008 0.000998 0.000028 2
Maximum
1 1 0.001005 0.001012 0.001002 0.001008 0.000998 0.000028 2
Average
1.000000 1.000000 0.001005 0.001012 0.001002 0.001008 0.000998 0.000028 2.000000
到了这一步,想必读者已经明白报告中的Load、LoadUR、LoadUF、LoadLR、LoadLF分别是什么含义了,Load指的是考虑库引脚属性capacitance负载总量,LoadUR指的是考虑库引脚属性rise_capacitance_range上限的负载总量,LoadUF指的是考虑库引脚属性fall_capacitance_range上限的负载总量,LoadLR指的是考虑库引脚属性rise_capacitance_range下限的负载总量,LoadLF指的是考虑库引脚属性fall_capacitance_range下限的负载总量。
如果使用report_net -verbose命令,还可以显示引脚负载的最大值(指的是库引脚属性rise_capacitance_range和fall_capacitance_range上限中更大的那个)和最小值(指的是库引脚属性rise_capacitance_range和fall_capacitance_range下限中更小的那个),如下所示,如果关闭增强型引脚负载电容建模,则不会有max和min字段。
dcnxt_shell> report_net d[0] -verbose -connections
****************************************
Report : net
-connections
-verbose
Design : dff_100_flat
Version: W-2024.09-SP2
Date : Sat Jan 10 23:01:40 2026
****************************************
net 'd[0]':
dont_touch: FALSE
pin capacitance: min:0.000998 max:0.001012
wire capacitance: min:0 max:0
total capacitance: min:0.000998 max:0.001012
wire resistance: 2.83335e-05
number of drivers: 1
number of loads: 1
number of pins: 2
Connections for net 'd[0]':
Driver Pins Type Pin Cap
------------ ---------------- --------
d[0] Input Port 0
Load Pins Type Pin Cap
------------ ---------------- --------
q_reg[0]/D Input Pin (DFFRQX1) 0.001012
以上所说的都是针对非线性延迟模型(NLDM),对于复合电流源模型(CCS),逻辑库中使用receiver_capacitance1_rise, receiver_capacitance1_fall, receiver_capacitance2_rise, receiver_capacitance2_fall组描述引脚负载,这是一个电压依赖的电容模型,考虑了包括密勒效应在内的非线性效应,比NLDM模型更加准确。
需要注意的是,对于Design Compiler而言,CCS模型无法直接被使用,Design Compiler会先将其导出为NLDM模型,即通过receiver_capacitance1_rise, receiver_capacitance1_fall, receiver_capacitance2_rise, receiver_capacitance2_fall组推导出库引脚属性rise_capacitance_range和fall_capacitance_range。如果库同时包含NLDM和CCS模型,当lib_pin_using_cap_from_ccs变量设置为true(默认)时,则Design Compiler会使用CCS模型导出的NLDM模型;当lib_pin_using_cap_from_ccs变量设置为false时,Design Compiler会直接使用库中的NLDM模型。