首页 / 资讯中心 / 文章详情

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

Design Compiler:增强型引脚负载电容建模(LoadUR、LoadUF、LoadLR、LoadLF) ★ FEATURED ARTICLE
相关阅读Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.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.00000dcnxt_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对上升沿和下降沿引脚负载分别建模它们必须成对出现否则会产生LBDB-475错误。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同理并产生LBDB-1054警告。如果不使用库引脚属性capacitance则库引脚属性capacitance会被设置为库引脚属性rise_capacitance_range和fall_capacitance_range上限中更大的那个优先级高于库属性default_input_pin_cap并产生LBDB-476警告如果使用库引脚属性capacitance则它必须大于库引脚属性rise_capacitance_range和fall_capacitance_range下限中更小的那个此处不能来自于rise_capacitance和fall_capacitance否则会产生LBDB-263错误必须小于库引脚属性rise_capacitance_range和fall_capacitance_range上限中更大的那个此处不能来自于rise_capacitance和fall_capacitance否则会产生LBDB-282错误。如果同时使用库引脚属性rise_capacitance_range和rise_capacitance需要保证库引脚属性rise_capacitance在库引脚属性rise_capacitance_range上限和下限之间库引脚属性fall_capacitance同理否则会产生LBDB-263或LBDB-282错误与上一段类似。此时互连延迟的计算过程如下所示可以看出其中最大条件和最小条件的上升延迟和下降延迟的引脚负载c_pin的值是不同的这对于互连延迟的计算如果使用拓扑模式似乎Design Compiler并不区分上升沿、下降沿、最大条件、最小条件统一使用最大的引脚负载进行计算这可能是一个Bug。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下限的负载总量。在计算是否满足设计规则约束比如set_max_capacitance命令设置的约束时以考虑库引脚属性capacitance的负载总量为准即Load而不是LoadUR或LoadUF。如果使用report_net -verbose命令还可以显示引脚负载总量的最大值指的是库引脚属性rise_capacitance_range和fall_capacitance_range上限以及端口上设置的最大条件下的引脚负载分别累加结果中更大的那个和最小值指的是库引脚属性rise_capacitance_range和fall_capacitance_range下限以及端口上设置的最大条件下的引脚负载分别累加结果中更小的那个如下所示如果指定了-min选项显示引脚负载总量的最大值指的是库引脚属性rise_capacitance_range和fall_capacitance_range上限以及端口上设置的最小条件下的引脚负载分别累加结果中更大的那个和最小值指的是库引脚属性rise_capacitance_range和fall_capacitance_range下限以及端口上设置的最小条件下的引脚负载分别累加结果中更小的那个。如果关闭增强型引脚负载电容建模则不会有max和min字段。报告下方的connection部分会列出驱动引脚和各个负载引脚的负载最大值指的是库引脚属性rise_capacitance_range和fall_capacitance_range上限中更大的那个或负载最小值如果指定了-min选项指的是库引脚属性rise_capacitance_range和fall_capacitance_range下限中更小的那个。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以上所说的都是针对非线性延迟模型(Non-Linear Delay Model, NLDM)的负载对于复合电流源模型(Composite Current Source Timing Model, CCST)的负载逻辑库中使用receiver_capacitance1_rise, receiver_capacitance1_fall, receiver_capacitance2_rise, receiver_capacitance2_fall组描述引脚负载这是一个电压依赖的电容模型考虑了包括密勒效应在内的非线性效应比NLDM模型的负载更加准确。需要注意的是对于Design Compiler而言CCST模型的负载无法直接被使用Design Compiler会先将其导出为NLDM模型的负载即通过库引脚属性receiver_capacitance的receiver_capacitance1_rise, receiver_capacitance1_fall, receiver_capacitance2_rise, receiver_capacitance2_fall组推导出库引脚属性rise_capacitance_range和fall_capacitance_range库引脚属性capacitance则为库引脚属性rise_capacitance_range和fall_capacitance_range上限的平均值。如果库同时包含NLDM和CCST模型的负载当lib_pin_using_cap_from_ccs变量设置为true默认时则Design Compiler会使用CCST模型的负载导出的NLDM模型的负载当lib_pin_using_cap_from_ccs变量设置为false时Design Compiler会直接使用库中的NLDM模型的负载。这里插个题外话对于IC Compiler和PrimeTime而言如果设计尚未布线即未反标RC网络或者说详细(Detailed, Distributed)寄生参数则会像Design Compiler那样将CCST模型的负载导出为NLDM模型的负载后使用即时序与Design Compiler是对齐的使用report_delay_calculation命令时提示Information: Using CCS timing information. (TIM-026)如果设计已布线即已反标RC网络或者说详细(Detailed, Distributed)寄生参数则rc_driver_model_mode变量默认值为advanced和rc_receiver_model_mode变量默认值为advanced可以控制是否直接使用真正的CCST模型的负载此时使用report_delay_calculation命令时提示Information: Using CCS timing info. (TIM-025)和Advanced receiver/driver-modeling used for rise and fall.单元的引脚负载与输入转换时间和输出负载相关而不再是几个由库引脚属性rise_capacitance_range和fall_capacitance_range决定的固定值这里指的是负载总量(Total capacitance)而不是有效负载总量(Effective capacitance)由Arnoldi模型计算得到的有效负载总量在不使用CCST模型的负载的情况下也不是固定值。
阅读完成 · 觉得有帮助?
咨询建站