☰
Design Compiler:单元密度(Cell Density)和引脚密度(Pin Density)的相关优化
2026/10/26 1:29:08 网站建设 项目流程

相关阅读

Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482


目录

placer_max_cell_density_threshold(2008版本引入)

set_congestion_options命令(2008版本引入)

placer_reduce_high_density_regions(2013版本引入)

compile_high_pin_density_cell_spreading和compile_high_pin_density_cell_spreading_threshold(2018版本引入)

compile_high_pin_density_cell_optimization和compile_high_pin_density_cell_optimization_utilization_threshold(2018版本引入)

compile_cell_density_aware_optimization和compile_cell_density_aware_optimization_threshold(2019版本引入)

placer_icc2_link_auto_density_control(2023版本引入)


拓扑模式的Design Compiler中存在很多与粗布局(Coarse Placement)过程中单元密度(Cell Density)和引脚密度(Pin Density)相关的应用变量,本文将列举其中的一部分并详细说明。

placer_max_cell_density_threshold(2008版本引入)

某些情况下消除拥塞并不是设计的重点,用户可以通过设置placer_max_cell_density_threshold变量(默认值为-1)控制单元聚集的紧密程度(或者说局部单元密度),此时单元不会均匀地分布在芯片表面,这可以避免在低利用率设计中因单元布局过于分散而导致的布线过长及相关的结果质量(QoR)问题。

placer_max_cell_density_threshold变量应设置为高于设计总体利用率但低于1.0的值(如果设计为-1,即不允许单元聚集)。例如,如果设计的总体利用率是0.5(50%),那么该变量的合理取值应在0.5到1.0之间,该数值设定得越高,单元聚集得就越紧密。

如果用户未设置该变量,且使用compile_ultra -spg命令进行综合,如果综合工具检测到设计的总体利用率较低,会根据该阶段的利用率动态设置placer_max_cell_density_threshold变量(综合完成后,综合工具将把placer_max_cell_density_threshold变量恢复为默认值-1,因此调整过程对用户不见,该功能由2018版本引入):

  • 当设计的总体利用率低于0.4(40%)时,综合工具在全量综合和增量综合过程中将把placer_max_cell_density_threshold变量设置为0.7。
  • 当设计的总体利用率在0.4(40%)和0.6(60%)之间时,综合工具在全量综合过程中将把placer_max_cell_density_threshold变量设置为0.6,在增量综合过程中将把placer_max_cell_density_threshold变量设置为0.7。
  • 当设计的总体利用率在0.6(60%)和0.65(65%)之间时,综合工具在全量综合过程中将把placer_max_cell_density_threshold变量设置为-1,在增量综合过程中将把placer_max_cell_density_threshold变量设置为0.7。
  • 当设计的总体利用率高于0.65(65%)时,综合工具在全量综合和增量综合过程中将把placer_max_cell_density_threshold变量设置为-1。

placer_max_cell_density_threshold变量动态调整时会提示以下信息。

Information: The design utilization is 0.53 Information: Based on the design utilization, automatically setting placer_max_cell_density_threshold to '0.60'. (SPG-128)

如果使用compile_ultra -spg命令进行综合,设计的总体利用率较低但用户设置的placer_max_cell_density_threshold变量小于0.5,综合工具会尊重用户的设置但会产生以下警告。

Warning: user-defined value of placer_max_cell_density_threshold is set to ***, which is considered low.The recommended value of placer_max_cell_density_threshold for sparse designs is 0.50 Previously defined placer_max_cell_density_threshold value *** is being used

下面举例进行说明,图1展示了这种情况下综合结果的版图,图2展示了这种情况下综合结果的单元密度(查看单元密度的功能由2016版本引入)。

dcnxt_shell-topo> create_die_area -coordinate {0 0 20 20} dcnxt_shell-topo> set placer_max_cell_density_threshold -1 dcnxt_shell-topo> compile_ultra

图1 综合结果的版图

图2 综合结果的单元密度

dcnxt_shell-topo> create_die_area -coordinate {0 0 20 20} dcnxt_shell-topo> set placer_max_cell_density_threshold 0.6 dcnxt_shell-topo> compile_ultra

图3展示了这种情况下综合结果的版图,图4展示了这种情况下综合结果的单元密度。

图3 综合结果的版图

图4 综合结果的版图

如果使用了IC Compiler II Link,则设置placer_max_cell_density_threshold变量等价于设置place.coarse.max_density应用选项,placer_max_cell_density_threshold变量的值会通过place.coarse.max_density应用选项传递给IC Compiler II,如果两个都设置,则place.coarse.max_density应用选项优先级更高。

set_congestion_options命令(2008版本引入)

set_congestion_options -max_util命令用于指定在拥塞驱动的单元布局过程中(需要使用compile_ultra -spg命令),局部区域或整体设计的最大利用率(默认为95%)。例如,假设初始设计的总体利用率为80%。这意味着在默认情况下,可能拥有高达95%的局部高密度区域,以及低于80%密度的其他区域(即存在波峰/波谷)。如果将-max_util设置为小于95%但大于或等于设计的总体利用率,这些波峰/波谷将被平滑,建议尽可能允许较高的密度值,以减少对时序的影响。

如果使用了IC Compiler II Link,则使用set_congestion_options -max_util命令等价于设置place.coarse.congestion_driven_max_util应用选项,set_congestion_options -max_util命令会通过place.coarse.congestion_driven_max_util应用选项传递给IC Compiler II,如果两个都设置,则place.coarse.congestion_driven_max_util应用选项优先级更高。

placer_reduce_high_density_regions(2013版本引入)

如果默认的粗布局强度不足以消除宏单元或阻挡层周围的高密度区域,可以在设计中设置placer_reduce_high_density_regions变量(默认值为false)。作为副作用,该功能会导致运行时间变长(粗布局的运行时间预计会增加一倍)。此外,由于该功能目前尚不具备互连长度或时序感知能力,使用它可能会导致互连长度增加和时序结果质量(QoR)下降。

该变量在使用IC Compiler II Link时失效(实验结果表明,尽管手册中似乎没有提到这一点)。

compile_high_pin_density_cell_spreading和compile_high_pin_density_cell_spreading_threshold(2018版本引入)

金属间距的缩小速度慢于栅极或晶体管尺寸的缩小速度,在最新工艺节点下,引脚访问(Pin Access)会受到影响,因为此时金属间距与16 nm工艺相似,但引脚面积显著减小,如图5所示。

图5 引脚访问问题

综合工具通过改进引脚映射和引脚密度热点检测来处理引脚访问问题,可以在设计中设置compile_high_pin_density_cell_spreading变量(默认值为false),在粗布局过程中通过将高引脚密度单元分散布局来减少引脚访问热点(需要使用compile_ultra -spg命令)。

高引脚密度单元的识别由compile_high_pin_density_cell_spreading_threshold变量(默认值为0.9)决定。

compile_high_pin_density_cell_optimization和compile_high_pin_density_cell_optimization_utilization_threshold(2018版本引入)

对于引脚访问优化(Pin Access Optimization, PAO),除了使用compile_high_pin_density_cell_spreading变量控制高引脚密度单元分散布局外,还可以使用compile_high_pin_density_cell_optimization变量(默认值为false)开启高引脚密度单元交换功能,在粗布局过程中通过将高引脚密度单元替换为低引脚密度且电气等效(EEQ)的单元(需要使用compile_ultra -spg命令)。

当使用该功能时,综合工具会将设计划分为一些更小的区域并计算其局部利用率,一旦区域的局部利用率超过由compile_high_pin_density_cell_optimization_utilization_threshold变量(默认值为0.5)控制的阈值,就会将其识别为高密度区域,并尝试将该区域内的高引脚密度单元替换为等效的低引脚密度单元,从而在对结果质量(QoR)影响最小的情况下,减少拥塞并提高可布线性。

除此之外,2019版本引入的set_pin_access_optimization_options命令可以用来指定哪些库单元易于引脚访问,哪些难以引脚访问,而不依赖电气等效(EEQ)的单元。

compile_cell_density_aware_optimization和compile_cell_density_aware_optimization_threshold(2019版本引入)

拓扑模式的Design Compiler NXT在2019版本引入了compile_cell_density_aware_optimization变量(默认值为false)用于在增量综合(需要使用compile_ultra -spg -incr命令)的布局后延时优化阶段防止综合工具为了改善WNS和TNS而在局部区域过度堆积单元,显著提升综合结果与物理实现工具(如IC Compiler II)中布局合法化后结果的相关性,这么做虽然在综合阶段可能会因为单元分散导致WNS和TNS略微退化,但在进入物理实现阶段后,整体的设计质量(QoR)通常会更好或持平。

当使用该功能时,综合工具会将设计划分为一些网格(Grid)并计算其局部单元密度,一旦区域的单元密度超过由compile_cell_density_aware_optimization_threshold变量(默认值为1.15)控制的阈值,就会将其识别为高密度区域,并尝试将该区域内的时序关键单元移动到最近的低单元密度区域中。

placer_icc2_link_auto_density_control(2023版本引入)

当placer_icc2_link_auto_density_control变量(默认值为false)被设置为true时,Design Compiler NXT会开启IC Compiler II Link中的自动密度控制(Auto Density Control, ADC),自动尝试在不引起布线拥塞的区域使用更高的单元密度,并通过PLACE-027消息报告所选用的相关设置,以获得更好的整体聚集效果,同时降低出现密度热点的可能性。

该变量的值会通过place.coarse.auto_density_control应用选项传递给IC Compiler II(不通过set_app_options命令设置)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询