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 | Global Routing:全局布线,规划大致走线区域 |
Detail Routing 要做的是:
1 | 把 netlist 中的逻辑连接 |
比如 RTL/网表里有:
1 | U1/Y 连接到 U2/A |
Routing 后就会用 M1/M2/M3/M4 等金属层和 via 把它们真正连起来。
但它不能随便连,因为还要满足:
1 | 不能 DRC 违规 |
3. 为什么 Routing 不只是“连线”?
因为真实金属线会带来很多物理问题:
1)时序 Timing
线越长,寄生 RC 越大,延迟越大。
1 | 长线 → RC 大 → net delay 大 → setup 可能变差 |
所以 routing 要尽量避免关键路径绕太远。
2)DRC
金属线之间不能太近,线宽不能太窄,via 也要满足规则。
常见 DRC 包括:
1 | metal spacing |
所以 detail route 必须在满足工艺规则的前提下连线。
3)Power
布线会影响功耗,主要是因为线电容会带来动态功耗:
1 | P ≈ α C V² f |
线越长,电容越大,动态功耗可能越高。
所以 routing 也要尽量控制线长和负载电容。
4)Signal Integrity
信号完整性主要关注信号质量,在数字后端里常见问题就是 crosstalk 串扰。
当两根线距离很近、平行走线很长时,彼此之间会有耦合电容。
1 | net A ======== |
如果 net A 翻转,可能会影响 net B 的波形,造成:
1 | 噪声毛刺 |
这就是串扰问题。
4. crosstalk 是啥?
Crosstalk 中文叫 串扰。
它是指:
一根信号线的跳变,通过耦合电容影响旁边另一根信号线。
简单例子:
1 | Aggressor:干扰源信号线 |
如果 aggressor 快速翻转,victim 可能会出现毛刺,或者信号延迟变大/变小。
在后端里,SI 通常重点看:
1 | crosstalk noise |
5. 普通信号有 crosstalk 一定要修吗?
不一定。
原文说:
对于普通信号,如果存在 crosstalk,但 timing 是满足的,可以不用修复。
意思是:
如果某条普通 data net 有一点串扰,但是:
1 | 没有产生功能风险 |
那一般可以接受,不一定要花很多代价去修。
因为修串扰可能会带来额外成本:
1 | 绕线更长 |
所以普通 data net 一般看是否影响时序和噪声阈值。
6. 为什么 clock 信号有 crosstalk 要尽量修干净?
因为 clock 是全芯片最敏感的信号之一。
Clock 如果被串扰影响,可能导致:
1 | clock edge 抖动 |
普通 data 信号只影响某条数据路径,但 clock 影响的是一大片寄存器。
所以时钟信号通常要更严格处理,比如:
1 | 加 shielding |
因此原文说:
对于关键时钟信号,如果有 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 | 原始 DRC 要求:space ≥ 0.05um |
这样可以降低短路风险。
2)加宽 wire
foundry 可能希望某些关键线更宽:
1 | wire 更宽 → 电阻更小 → 电迁移风险更低 → 制造更稳定 |
3)使用 double via / multi via
普通 via 可能是一个孔:
1 | M2 |
DFM 希望用两个或多个 via:
1 | M2 |
这样可以提高可靠性。
好处:
1 | 降低 via 电阻 |
所以后端里经常会做:
1 | via redundancy |
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 | 默认线宽 |
但是对于一些重要信号,如果仍然使用默认规则,可能会导致:
1 | 线太细 → 电阻较大 → 延迟增加 |
因此,可以对关键信号设置 NDR,使其采用更严格、更可靠的布线规则。
3. NDR 常见设置内容
NDR 通常可以包括:
1 | 增大 metal width |
例如:
1 | 默认规则:线宽 1 倍,间距 1 倍 |
这样可以降低线电阻、减少串扰,并提升可靠性。
4. 哪些信号适合设置 NDR?
常见适合设置 NDR 的信号包括:
1 | clock |
其中,clock 信号 是最典型的 NDR 使用对象,因为 clock 对 skew、latency、transition 和 crosstalk 都非常敏感。
5. Shielding 是什么?
Shielding 中文叫:
1 | 屏蔽 / 加屏蔽线 |
它的基本做法是在关键信号线旁边放置一根或两根固定电位的线,一般接:
1 | VDD |
例如:
1 | VSS ───────────── |
中间是关键信号 CLK,上下两侧是接地或接电源的 shield wire。
6. Shielding 的作用
Shielding 的主要作用是减少关键信号受到其他信号的串扰影响。
如果没有 shielding,两个相邻信号长距离平行走线时,会产生较强耦合电容:
1 | Signal A ───────────── |
当 Signal A 翻转时,可能会影响 Signal B 的波形,产生:
1 | crosstalk noise |
加入 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 | clock latency 变大 |
因此,在实际后端设计中,clock net 通常会采用更严格的布线策略,例如:
1 | 使用更高层金属 |
9. 使用 NDR 和 Shielding 的代价
虽然 NDR 和 Shielding 可以提高信号质量,但也会带来一定代价:
1 | 占用更多 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 | ../saved/postCTSopt.inv.dat → 保存的 Innovus 设计数据库文件 |
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 | 设计网表 |
具体能恢复哪些内容,取决于保存数据库时所处的设计阶段。
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 | 找不到顶层设计 |
6. 类比理解
可以把这条命令理解为打开一个工程文件:
1 | restoreDesign → 打开工程 |
类似于一个工程里可能有多个模块,工具需要知道哪个模块是最终要实现和分析的顶层。
7. 一句话总结
restoreDesign ../saved/postCTSopt.inv.dat DTMF_CHIP的意思是:从postCTSopt.inv.dat这个 Innovus 保存数据库中恢复设计,并指定DTMF_CHIP作为当前顶层设计。后面的DTMF_CHIP必须与 Verilog 顶层模块名一致,不能随便填写。