Detail Routing for Signal Integrity, Timing, Power and Design for Yield

这个章节虽然标题有点长,但不要被它吓到,其实这个章节就是将工具的绕线Routing。只不过这个阶段做Route不是仅仅是把所有的逻辑连接,用实际的金属层连线来实现实际物理连接,它还需要考虑时序,DRC,功耗和DFM(考虑良率)等因素。

这里所说的Signal Integrity是指信号完整性,在PR中是指信号的质量分析,主要是靠crosstalk串扰来衡量信号的完整性。

对于普通信号,如果存在crosstalk,但timing是满足的,我们是可以不用修复。

对于关键时钟信号,如果有crosstalk,我们需要尽量修复干净。

DFM全称是Design For Manufacture。工艺在制作过程中,需要满足一些特殊的要求,这些特殊的要求往往比基本要求要严格点,比如原来Metal的space要求只要0.05um,考虑DFM,foundary可能会把space要求提高到0.07um,又比foundry又希望信号变得更宽,通孔VIA变成双(多)孔。

这段话讲的是 后端详细布线阶段 Detail Routing。标题虽然很长,但核心意思就是:

Routing 阶段不是简单把线连起来,而是要在连通性的基础上,同时考虑时序、信号完整性、功耗、DRC 和制造良率。


1. 这个标题怎么翻译?

Detail Routing for Signal Integrity, Timing, Power and Design for Yield

可以翻译成:

面向信号完整性、时序、功耗和可制造性良率的详细布线

逐词理解:

英文 中文
Detail Routing 详细布线
Signal Integrity 信号完整性
Timing 时序
Power 功耗
Design for Yield 面向良率的设计

2. Detail Routing 是干啥的?

在后端 APR 里,Routing 大概分两层:

1
2
Global Routing:全局布线,规划大致走线区域
Detail Routing:详细布线,真正生成金属线和 VIA

Detail Routing 要做的是:

1
2
把 netlist 中的逻辑连接
变成版图里的真实金属连线

比如 RTL/网表里有:

1
U1/Y 连接到 U2/A

Routing 后就会用 M1/M2/M3/M4 等金属层和 via 把它们真正连起来。

但它不能随便连,因为还要满足:

1
2
3
4
5
不能 DRC 违规
不能让 timing 变差太多
不能引入严重串扰
不能让功耗太大
尽量满足 DFM 良率要求

3. 为什么 Routing 不只是“连线”?

因为真实金属线会带来很多物理问题:

1)时序 Timing

线越长,寄生 RC 越大,延迟越大。

1
长线 → RC 大 → net delay 大 → setup 可能变差

所以 routing 要尽量避免关键路径绕太远。


2)DRC

金属线之间不能太近,线宽不能太窄,via 也要满足规则。

常见 DRC 包括:

1
2
3
4
5
6
metal spacing
metal width
via enclosure
min area
short
open

所以 detail route 必须在满足工艺规则的前提下连线。


3)Power

布线会影响功耗,主要是因为线电容会带来动态功耗:

1
P ≈ α C V² f

线越长,电容越大,动态功耗可能越高。

所以 routing 也要尽量控制线长和负载电容。


4)Signal Integrity

信号完整性主要关注信号质量,在数字后端里常见问题就是 crosstalk 串扰

当两根线距离很近、平行走线很长时,彼此之间会有耦合电容。

1
2
net A  ========
net B ========

如果 net A 翻转,可能会影响 net B 的波形,造成:

1
2
3
4
噪声毛刺
延迟变化
setup/hold 变差
功能风险

这就是串扰问题。


4. crosstalk 是啥?

Crosstalk 中文叫 串扰

它是指:

一根信号线的跳变,通过耦合电容影响旁边另一根信号线。

简单例子:

1
2
Aggressor:干扰源信号线
Victim:被干扰信号线

如果 aggressor 快速翻转,victim 可能会出现毛刺,或者信号延迟变大/变小。

在后端里,SI 通常重点看:

1
2
3
4
crosstalk noise
crosstalk delay
glitch
delta delay

5. 普通信号有 crosstalk 一定要修吗?

不一定。

原文说:

对于普通信号,如果存在 crosstalk,但 timing 是满足的,可以不用修复。

意思是:

如果某条普通 data net 有一点串扰,但是:

1
2
3
没有产生功能风险
setup/hold 仍然满足
noise 没超过阈值

那一般可以接受,不一定要花很多代价去修。

因为修串扰可能会带来额外成本:

1
2
3
4
5
6
绕线更长
插 buffer
加 spacing
加 shielding
面积变大
拥塞增加

所以普通 data net 一般看是否影响时序和噪声阈值。


6. 为什么 clock 信号有 crosstalk 要尽量修干净?

因为 clock 是全芯片最敏感的信号之一。

Clock 如果被串扰影响,可能导致:

1
2
3
4
5
clock edge 抖动
clock skew 变化
clock latency 变化
setup/hold 同时受影响
严重时触发器采样错误

普通 data 信号只影响某条数据路径,但 clock 影响的是一大片寄存器。

所以时钟信号通常要更严格处理,比如:

1
2
3
4
5
6
加 shielding
加 spacing
使用高层金属
减少平行长距离走线
控制 transition
避免被高速信号干扰

因此原文说:

对于关键时钟信号,如果有 crosstalk,需要尽量修复干净。


7. DFM 是什么?

DFM = Design For Manufacture

中文叫:

面向制造的设计 / 可制造性设计

它关注的是:

版图不只是满足最低 DRC 规则,还要尽量让芯片更容易被制造出来,提高良率。

DRC 是最低要求,DFM 是更高要求。

比如 foundry 规定:

1
最低 metal spacing = 0.05um

只要你做到 0.05um 就 DRC clean。

但从制造良率角度看,0.05um 太紧了,容易因为工艺波动造成短路风险,所以 DFM 可能建议:

1
推荐 metal spacing = 0.07um

这就是更保守、更利于制造的规则。


8. DFM 常见做法

原文里提到几个典型例子:

1)增大 metal spacing

1
2
原始 DRC 要求:space ≥ 0.05um
DFM 推荐要求:space ≥ 0.07um

这样可以降低短路风险。


2)加宽 wire

foundry 可能希望某些关键线更宽:

1
wire 更宽 → 电阻更小 → 电迁移风险更低 → 制造更稳定

3)使用 double via / multi via

普通 via 可能是一个孔:

1
2
3
4
5
M2
|
via
|
M1

DFM 希望用两个或多个 via:

1
2
3
4
5
M2
| |
via via
| |
M1

这样可以提高可靠性。

好处:

1
2
3
4
降低 via 电阻
降低单个 via 失效风险
提高良率
改善 EM/IR 可靠性

所以后端里经常会做:

1
2
3
via redundancy
double via insertion
multi-cut via insertion

9. 这段话整体怎么理解?

你可以理解成:

Detail Routing 阶段会把设计中的逻辑连接真正转化为版图金属连线,但这个过程不能只追求“连通”。工具还需要综合考虑 timing、signal integrity、power、DRC 和 DFM 等目标。对于普通数据信号,少量 crosstalk 只要不影响 timing 和噪声要求,一般可以接受;但对于 clock 等关键网络,串扰会直接影响 skew、latency 和触发器采样,因此需要重点修复。DFM 则是在基本 DRC 之外进一步提高布线规则裕量,例如增大 spacing、加宽金属线、使用 double via 或 multi via,以提升制造良率和可靠性。


10. 一句话总结

Detail Routing 不只是把线连上,而是在满足连接关系的基础上,尽量让布线满足时序、低功耗、低串扰、DRC clean 和高制造良率要求。

LAB15-1

这个章节的学习目标是学会给一些关键信号设置NDR(Non-Default Rule) 和shielding,从而确保时序和信号质量满足设计要求。

NDR 与 Shielding 学习笔记

1. 章节学习目标

本章节主要学习如何在后端布线阶段,对一些关键信号设置 NDR(Non-Default Rule)Shielding,从而提升信号质量,降低串扰影响,并保证设计的时序满足要求。

可以简单理解为:

NDR 是让关键信号“走更好的线”;Shielding 是给关键信号“加保护墙”。


2. NDR 是什么?

NDR 全称是:

1
Non-Default Rule

中文可以理解为:

1
非默认布线规则 / 特殊布线规则

默认情况下,工具进行 routing 时,会按照普通布线规则进行走线,例如:

1
2
3
4
默认线宽
默认线间距
默认 via 数量
默认布线层选择

但是对于一些重要信号,如果仍然使用默认规则,可能会导致:

1
2
3
线太细 → 电阻较大 → 延迟增加
间距太小 → 耦合电容增大 → 串扰增强
via 太少 → 电阻增大 / 可靠性降低

因此,可以对关键信号设置 NDR,使其采用更严格、更可靠的布线规则。


3. NDR 常见设置内容

NDR 通常可以包括:

1
2
3
4
5
增大 metal width
增大 metal spacing
指定 routing layer
增加 via 数量
使用 double via / multi-cut via

例如:

1
2
默认规则:线宽 1 倍,间距 1 倍
NDR 规则:线宽 2 倍,间距 2 倍

这样可以降低线电阻、减少串扰,并提升可靠性。


4. 哪些信号适合设置 NDR?

常见适合设置 NDR 的信号包括:

1
2
3
4
5
6
clock
reset
高扇出 enable 信号
关键 timing path 上的 net
高速 data bus
跨模块长距离传输信号

其中,clock 信号 是最典型的 NDR 使用对象,因为 clock 对 skew、latency、transition 和 crosstalk 都非常敏感。


5. Shielding 是什么?

Shielding 中文叫:

1
屏蔽 / 加屏蔽线

它的基本做法是在关键信号线旁边放置一根或两根固定电位的线,一般接:

1
2
VDD
VSS

例如:

1
2
3
VSS  ─────────────
CLK ─────────────
VSS ─────────────

中间是关键信号 CLK,上下两侧是接地或接电源的 shield wire。


6. Shielding 的作用

Shielding 的主要作用是减少关键信号受到其他信号的串扰影响。

如果没有 shielding,两个相邻信号长距离平行走线时,会产生较强耦合电容:

1
2
Signal A  ─────────────
Signal B ─────────────

当 Signal A 翻转时,可能会影响 Signal B 的波形,产生:

1
2
3
4
crosstalk noise
glitch
delay variation
setup/hold 恶化

加入 shield wire 后,可以把耦合干扰更多地引到 VDD/VSS 上,从而保护关键信号。


7. NDR 和 Shielding 的区别

项目 NDR Shielding
中文含义 非默认布线规则 屏蔽线
核心做法 加宽线、加大间距、增加 via 在关键信号旁边加 VDD/VSS 线
主要目的 降低 RC、改善 timing、提高可靠性 降低 crosstalk、保护信号质量
常用对象 clock、reset、高扇出信号、关键路径信号 clock、高速信号、噪声敏感信号
是否占用布线资源 会,而且通常更多
效果 改善时序和可靠性 改善信号完整性

8. 为什么 Clock 信号常用 NDR 和 Shielding?

Clock 是整个芯片中最关键的信号之一,如果 clock 被串扰或 RC 影响严重,可能导致:

1
2
3
4
5
6
clock latency 变大
clock skew 变大
clock transition 变差
clock edge 抖动
setup/hold 时序恶化
触发器采样错误

因此,在实际后端设计中,clock net 通常会采用更严格的布线策略,例如:

1
2
3
4
5
6
使用更高层金属
增大线宽
增大线间距
减少长距离平行走线
使用 double via / multi via
添加 shielding

9. 使用 NDR 和 Shielding 的代价

虽然 NDR 和 Shielding 可以提高信号质量,但也会带来一定代价:

1
2
3
4
5
占用更多 routing resource
可能增加布线拥塞
可能增加面积
可能增加电容
可能影响其他信号布线

因此,NDR 和 Shielding 一般不会对所有信号都使用,而是主要用于关键信号。


10. 一句话总结

NDR 是通过加宽线、加大间距、增加 via 等方式,让关键信号使用更好的布线规则;Shielding 是在关键信号旁边加入 VDD/VSS 屏蔽线,减少串扰影响。二者的共同目标都是提高时序质量和信号完整性。

Innovus 中 restoreDesign 命令后为什么要加 Top Cell 名

1. 命令示例

1
restoreDesign ../saved/postCTSopt.inv.dat DTMF_CHIP

这条命令用于在 Innovus 中恢复之前保存的设计数据库。

其中:

1
2
../saved/postCTSopt.inv.dat  →  保存的 Innovus 设计数据库文件
DTMF_CHIP → 当前设计的顶层模块名 / top cell name

2. restoreDesign 的作用

restoreDesign 用于恢复之前通过 saveDesign 保存下来的设计状态。

例如前面可能执行过:

1
saveDesign ../saved/postCTSopt.inv.dat

后面重新打开 Innovus 时,不需要从最开始重新跑 floorplan、placement、CTS 等流程,可以直接用:

1
restoreDesign ../saved/postCTSopt.inv.dat DTMF_CHIP

恢复到之前保存的状态。


3. 恢复的内容一般包括什么?

restoreDesign 恢复的内容通常包括:

1
2
3
4
5
6
7
8
9
设计网表
Floorplan 信息
Power plan 信息
Placement 结果
CTS 结果
Routing 状态
约束信息
时序环境
物理库和工艺相关信息

具体能恢复哪些内容,取决于保存数据库时所处的设计阶段。


4. 为什么后面要加 DTMF_CHIP

后面的 DTMF_CHIP 表示当前设计的 top cell / top design

也就是说,Innovus 不仅需要知道要恢复哪个数据库文件,还需要知道:

恢复出来的设计中,哪个模块是顶层设计。

如果不指定 top cell,工具可能无法正确建立当前设计环境,也不知道后续 timing、placement、routing 等操作应该针对哪个顶层模块执行。


5. DTMF_CHIP 能不能随便写?

不能。

这个名字必须和设计中的顶层模块名保持一致。

例如 Verilog 顶层模块是:

1
module DTMF_CHIP (...);

那么恢复时就应该写:

1
restoreDesign ../saved/postCTSopt.inv.dat DTMF_CHIP

如果你的顶层模块叫 mac16,则应该写成:

1
restoreDesign ../saved/postCTSopt.inv.dat mac16

如果 top cell 名写错,可能会导致:

1
2
3
4
找不到顶层设计
数据库恢复失败
时序环境不匹配
后续流程无法继续

6. 类比理解

可以把这条命令理解为打开一个工程文件:

1
2
3
restoreDesign  →  打开工程
postCTSopt.inv.dat → 工程保存文件
DTMF_CHIP → 工程里的顶层设计名

类似于一个工程里可能有多个模块,工具需要知道哪个模块是最终要实现和分析的顶层。


7. 一句话总结

restoreDesign ../saved/postCTSopt.inv.dat DTMF_CHIP 的意思是:从 postCTSopt.inv.dat 这个 Innovus 保存数据库中恢复设计,并指定 DTMF_CHIP 作为当前顶层设计。后面的 DTMF_CHIP 必须与 Verilog 顶层模块名一致,不能随便填写。

ESC 关闭 | 导航 | Enter 打开
输入关键词开始搜索