学习Synopsys Fusion Compiler FE24: 布线过孔规则

文摘   2024-10-12 18:38   上海  

报告CCD时序

report_ccd_timing命令会打印关键端点的时序松弛,并允许您分析先前和后续阶段的时序路径。

• report_multistage_timing命令提供了用于一连串寄存器的启动/捕获时钟延迟、CRP(Clock-to-Register-to-Register Path,寄存器间时钟路径)值、时钟偏斜、时序松弛以及数据路径的逻辑层次信息,有助于更深入地分析时序情况。

CCD优化的设置

• 采取CTS(时钟树综合)设置步骤,使有用偏斜计算中的最小延迟估算更加准确:
 ■ 指定将在CTS期间使用的单元(如缓冲器等)。
 ■ 指定非默认的布线和过孔规则(NDR,Non-Default Routing)。

控制CTS单元选择
• 在以下示例中,仅使用$cts_libcells来构建时钟树。根据需要进行修改:

1set cts_libcells [get_lib_cells \
2"*/INV_CTS* */BUF_CTS* \
3*/MUX* */AND* */CG* */AO* */FF*"]
4set_lib_cell_purpose -exclude cts [get_lib_cells]
5set_lib_cell_purpose -include cts $cts_libcells
6set_dont_touch $cts_libcells false
1■ 除了缓冲器和反相器外,还应在时钟树中包含任何门(如MUX、AND、ICG等)和FlipFlops的逻辑等效单元。
2  - 这允许在需要时对它们进行大小调整。
3■ 应添加常开缓冲器,以便为MV设计提供常开CTS
4  - 如果时钟分支需要穿过一个关闭电压区域,常开CTS会插入AO缓冲器;否则,必须绕过该区域。

MV = 多电压
对于CCD优化来说,将FlipFlops(触发器)也加入列表中是很重要的,因为CCD优化可能会为了调整偏斜而改变FF的尺寸。这对于传统的CTS来说不是必需的,但这样做并无害处。因此,建议始终将FFs添加进去。

如果库单元设置了dont_touch属性,即使你使用set_lib_cell_purpose命令将其指定为时钟树引用,它们也不会被时钟树综合所使用。你必须确保指定为时钟树引用的库单元没有设置dont_touch属性。

如果你的库中有仅用于CTS的单元(专供CTS使用),可以使用以下命令:

1set_lib_cell_purpose -exclude cts [get_lib_cells]
2set_lib_cell_purpose -include none $cts_libcells
3set_lib_cell_purpose -include cts $cts_libcells
4set_dont_touch $cts_libcells false

不在cts_libcells列表中的时钟树上的单元不会被调整大小,除非它们在列表中有逻辑等效的单元(例如AND、OR门、ICGs)。

建议:将所有位于你的时钟树上的参考单元都包含在cts_libcells列表中!

非默认布线规则

• Fusion Compiler能够使用非默认布线(NDR)规则来布线时钟网络,例如双间距、双宽度、屏蔽等。
 ■ NDR规则被视为物理设计规则检查(DRC)的一部分,如果不满足这些规则,将会作为违规报告出来。
• NDR规则常用于“强化”时钟网络,比如减少时钟路由对串扰和电迁移(EM)效应的敏感性。

非默认过孔规则

• 为了进一步增强可靠性,时钟网络通常要求100%的过孔优化。
 ■ 最小尺寸的单切割过孔会被替换为:
    - 多切割的过孔阵列
    和/或
    - 更大尺寸的“方形”或“条形”切割过孔
• 这也是通过时钟NDR规则来定义的。

定义并应用非默认布线和过孔规则

1create_routing_rule 2xS_2xW_CLK_RULE \
2-multiplier_width 2.0 \
3-multiplier_spacing 2.0 \
4-cuts { {VIA1 {Vrect 1}} ... {VIA5 {Vrect 1}} }
5
6set_clock_routing_rules -rule 2xS_2xW_CLK_RULE \
7-min_routing_layer M4 \
8-max_routing_layer M5

自动缩减NDR宽度以连接至引脚

  1. 在这个规则列表中,较低的金属层是一个“软”规则,意味着如有需要会切换到更低的金属层进行连接。

您可以通过应用选项route.detail.pin_taper_mode来控制锥度。允许的值包括:

  • default_width(默认值)、pin_width、off。

可以使用应用选项route.common.net_min_layer_mode将此规则设为“硬”规则。另外,如果保持默认的“软”设置,您可以使用route.common.net_min_layer_mode_soft_cost来控制成本(默认为medium,其他选项包括low和high)。

您还可以分别针对驱动端和接收端设置锥度,使用命令:

1create_routing_rule [-taper_distance distance] [-driver_taper_distance distance]
2
3Reporting Settings Summary
4# Report clock tree settings for all clocks and modes:
5report_clock_settings
6[-clock CLOCKS]
7[-type type]
8type can be:configurations, routing rules, references , spacingrules, all

IC技术圈
致力于建立IC技术知识、IC技术圈内人的联系
 最新文章