1. Innovus中Shield Net的基础概念解析
在芯片物理设计领域,shield net(屏蔽网络)是一种特殊的互连结构,主要用于解决高速信号传输中的信号完整性问题。作为一名后端设计工程师,我经常需要在Innovus工具中处理这类网络。shield net本质上是在关键信号线(如时钟线、高速数据线)旁平行布设的接地或电源网络,其核心作用可以归纳为三点:
- 降低串扰干扰:通过提供稳定的参考平面,减少相邻信号线之间的电容耦合
- 控制阻抗匹配:维持传输线特性阻抗的稳定性
- 电磁屏蔽:吸收高频噪声和电磁干扰
在28nm及以下工艺节点中,shield net的应用尤为关键。以我最近处理的DDR4接口设计为例,数据线间距缩小到0.1um时,相邻信号线的串扰噪声可达信号幅度的15%,而添加shield net后能降低到3%以下。
2. 两种Shield Net删除方法的技术对比
Innovus提供了两种主要的shield net删除方式,它们在底层实现和后续影响上有显著差异:
2.1 editDelete -status shield 命令详解
这个命令的执行逻辑是遍历当前设计中的所有网络,仅移除被标记为shield状态的物理连线。其典型使用场景是当需要保留网络定义但暂时移除屏蔽结构时。具体特点包括:
tcl复制# 基本命令格式
editDelete -status shield [-quiet] [-selected]
重要提示:执行此命令后,建议立即运行verifyConnectivity检查连接性,因为某些shield net可能承担着直流路径的功能。
在实际项目中,我曾遇到一个典型案例:某电源网络被误标记为shield状态,使用editDelete后导致芯片静态功耗异常。解决方法是通过以下Tcl脚本检查网络属性:
tcl复制foreach net [getNets -hier *] {
if {[getAttr [getNet $net] isShielded]} {
puts "Net $net retains shield属性 after deletion"
}
}
2.2 deleteShield -net 命令深度解析
这是更彻底的删除方式,不仅移除物理连线,还会清除网络的shield属性定义。其完整语法包含多个实用选项:
tcl复制deleteShield -net <net_name>
[-all | -layer <layer_name>]
[-keepShieldAttitude]
参数选择策略:
- 使用
-all选项时,会跨所有金属层删除屏蔽网络 - 指定
-layer则只删除特定层的屏蔽结构 -keepShieldAttitude是重要保留选项,可维持网络的屏蔽属性
在16nm FinFET工艺的一个项目中,我们对比发现:
- 使用editDelete后,网络阻抗变化约2%
- 使用deleteShield后,阻抗波动达到8%(需要重新进行阻抗匹配)
3. 工程实践中的操作流程与验证方法
3.1 安全删除的标准操作流程
基于多个tape-out项目经验,我总结出以下标准化操作步骤:
-
前期检查:
tcl复制# 检查目标网络属性 reportShield -net <net_name> -detail # 生成删除前的DRC报告 verify_drc -report pre_delete_drc.rpt -
执行删除(根据需求选择):
tcl复制# 方案A:保留属性 editDelete -status shield -selected # 方案B:完全删除 deleteShield -net VSS_Shield1 -all -
后期验证:
tcl复制# 电气特性检查 extractRC reportDelayCalibration -net <net_name> # 物理验证 verifyConnectivity -report connectivity.rpt verify_drc -report post_delete_drc.rpt
3.2 典型问题排查指南
下表总结了常见问题现象及其解决方案:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 删除后出现天线违例 | shield net曾连接扩散区 | 使用addDiode -cell ANTENNA_DIODE |
| 时序变化超5% | 关键路径shield被移除 | 优先采用editDelete保留属性 |
| LVS不匹配 | shield net参与器件连接 | 执行deleteShield前检查netlist |
| 阻抗突变 | 参考平面不连续 | 在删除区域添加dummy metal |
4. Shield Net管理的高级技巧
4.1 属性保留与恢复技术
当需要临时禁用shield net时,推荐采用属性保存方法:
tcl复制# 保存shield属性到变量
set shield_attrs [list]
foreach net [getNets -hier *] {
lappend shield_attrs [list $net [getAttr [getNet $net] isShielded]]
}
# 恢复属性示例
foreach att $shield_attrs {
setNetAttr [lindex $att 0] isShielded [lindex $att 1]
}
4.2 工艺相关的特殊处理
在不同工艺节点下,shield net的处理策略需要调整:
- 28nm及以上:可以较自由地删除,影响较小
- 16/14nm:建议保留至少50%的shield结构
- 7nm及以下:任何删除都需进行全芯片EM/IR分析
在5nm项目中的一个实际案例:删除clock shield net导致时钟抖动增加12ps,最终采用部分删除方案:
tcl复制deleteShield -net CLK_shield -layer M4-M6
5. 版本兼容性与自动化脚本
不同Innovus版本对shield net的处理存在差异:
- 17.x版本:deleteShield会同时清除route guide
- 18.x以后:新增-keepRouteGuide选项
- 21.1开始:支持增量式删除(per-layer保留)
这里分享一个经过生产验证的自动化脚本:
tcl复制proc safeShieldDelete {net_name {mode full}} {
set orig_drc [verify_drc -error 100]
if {$mode eq "full"} {
deleteShield -net $net_name -all
} else {
editDelete -status shield -net $net_name
}
set new_drc [verify_drc -error 100]
if {[llength $new_drc] > [llength $orig_drc]} {
undo
puts "ERROR: DRC violation increased, operation aborted"
return 0
}
return 1
}
在实际工程中,建议在删除shield net后立即进行以下检查:
- 信号完整性分析(至少检查受影响网络的crosstalk delta)
- 电源完整性验证(检查IR drop变化)
- 时序签核(特别是hold timing margin)
最后提醒,任何shield net的修改都应该在项目文档中记录,包括:
- 修改时间点(对应哪个数据库版本)
- 执行的具体命令和参数
- 验证结果和责任人签字
这种严谨的做法在后期debug时可以节省大量时间