Design Compiler:增强型引脚负载电容建模(LoadUR、LoadUF、LoadLR、LoadLF)

相关阅读

Design Compilerhttps://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模型。

相关推荐
日晨难再4 天前
SDC命令详解:使用annotate_trace命令进行调试
数字ic
日晨难再6 天前
Design Compiler:Multibit优化(增强型布局感知的Multibit Banking流程)
数字ic
日晨难再9 天前
我在CSDN的三年创作历程
数字ic
日晨难再24 天前
Design Compiler:Multibit Banking(一)
数字ic
日晨难再1 个月前
Design Compiler:Early Data Flow
数字ic
日晨难再1 个月前
Design Compiler:SDC相关运行时间问题的报告和修复
数字ic
日晨难再1 个月前
Design Compiler:Guide Hierarchical Map(GHM) Flow
数字ic
IC_Brother2 个月前
数字IC经典电路(6)—Ring Oscillator(环形振荡器)与工艺角监控
verilog·数字ic·dc综合
0基础学习者2 个月前
跨时钟域处理
fpga开发·verilog·数字ic