在先进工艺节点的物理实现中,我们发现一个奇怪的现象:ME5(Metal 5)与 ME6(Metal 6)之间的 VIA5 始终无法正常生成。无论是布线工具(如 Innovus/ICC2)还是物理验证工具(Calibre),都在 VIA5 的生成或检查阶段报错,导致设计无法继续。
ME5 的 LEF 定义(节选)如下:
将上述 5 条 FROMABOVE 规则全部替换为以下两条后,VIA5 恢复正常:
注意:不是只换高亮的两条,而是 5 条全部换成了 2 条。这个细节至关重要,原因后文详述。
先看 VIA5 的真实定义:
VIA5 是正方形,边长为 0.36 µm
VIA5 之间的最小间距为 0.34 µm
因此,沿导线方向(ME5 为 Vertical 方向)排列 VIA5 时,相邻两个 VIA5 中心距 ≥ 0.36 + 0.34 = 0.70 µm
问题规则:
两条规则的核心矛盾在于:
检查窗口只有 0.301 µm
但 2 个 VIA5 的最小物理跨距是 0.70 µm(中心距),4 个 VIA5 则更是需要 2.46 µm(单列)或至少 0.70 µm(2x2 阵列)
数学上:0.301 < 0.70
这意味着,在任何长度为 0.301 µm 的窗口内,物理上连 2 个 VIA5 都无法同时容纳,更不用说 4 个。
VIA5 定义中还有一条三重临近规则:
如果在 0.56 µm 范围内有 3 个相邻 VIA,间距需从 0.34 增大到 0.54。
在旧规则的 0.301 窗口内要塞 4 个 VIA,必然触发此规则,实际最小跨距将变为:
> ( 4 \times 0.36 + 3 \times 0.54 = 3.06 \text{ µm} )
与 0.301 的差距更加悬殊。
这里有一个容易踩的坑:误以为工具会按顺序匹配第一条满足的规则就停止。
正确答案是:所有 MINIMUMCUT 规则是“累加生效”的(逻辑与关系),不存在“谁优先级高就只听谁的”。
当线宽为 4.5、长度为 20(满足所有长度门槛)时,旧 5 条规则全部被触发:
| 规则 | 要求 | 解空间 | 状态 |
|---|---|---|---|
2个, WIDTH 0.45, WITHIN 0.301 | 0.301 内放 2 个 VIA | 需要 0.70 > 0.301 | ❌ 无解 |
4个, WIDTH 1.15, WITHIN 0.301 | 0.301 内放 4 个 VIA | 需要 3.06 > 0.301 | ❌ 无解 |
2个, WIDTH 0.71, L=0.71, WITHIN 1.351 | 1.351 内放 2 个 VIA | 需要 0.70 < 1.351 | ✅ 有解 |
2个, WIDTH 2.1, L=2.1, WITHIN 2.751 | 2.751 内放 2 个 VIA | 需要 0.70 < 2.751 | ✅ 有解 |
2个, WIDTH 3.1, L=10.1, WITHIN 7.001 | 7.001 内放 2 个 VIA | 需要 0.70 < 7.001 | ✅ 有解 |
关键点:工具必须同时满足所有触发的规则。只要有一条无解(规则 1 或 2),整体判定为失败,工具直接拒绝生成 VIA5。后面 3 条规则即使再宽松也救不回来。
这就是为什么必须把 5 条全部换掉,而不是只删改那两条“显眼包”。任何一条无解的残存规则都会继续污染整层的通孔合法性。
FROMABOVE 语法位置的说明细心的读者可能注意到,旧规则 1 的写法是:
而旧规则 3 的写法是:
这两种写法语义完全等价,解析上没有优先级差异。 FROMABOVE / FROMBELOW 是方向修饰符,位置相对灵活。EDA 工具的解析器基于关键字(Keyword)抓取,而非固定顺序。规则 1 没写 LENGTH,解析为无长度门槛(任何长度都触发);规则 3 写了 LENGTH,解析器依然能正确识别。这个问题不会影响规则的触发逻辑。
替换后的两条规则:
每条规则只要求 2 个 VIA5,而不是 4 个
检查窗口分别扩大到 1.651 µm 和 4.901 µm
2 个 VIA5 只需 0.70 µm,远小于窗口尺寸 → 有解
新规则 1 不带 LENGTH,是“全域检查”:
任何线宽 ≥ 1.849 的 ME5 线(无论多短),都要求在 1.651 µm 内至少有 2 个 VIA5
对于线宽 4.5 的线,这个条件轻松满足
新规则 2 带 LENGTH 10.1,是一个双重过滤门槛:
> 只有当线宽 > 3.1 µm 并且该连续线段长度 > 10.1 µm 时,才要求每 4.901 µm 内有 ≥ 2 个 VIA5。
豁免短宽线:短的宽线(如小型焊盘连接)不需要强制多 VIA
只针对长距离宽线(典型为电源/地线)施加过孔密度约束,确保电流承载能力和 EM 可靠性
两条规则各司其职,共同覆盖了旧规则想要覆盖的场景,同时剔除了物理上不可行的约束。
| 维度 | 旧规则问题 | 新规则改进 |
|---|---|---|
| 检查窗口 | 0.301 µm,小于通孔物理跨距 | 1.651 / 4.901 µm,远大于通孔跨距 |
| 通孔数量 | 要求 4 个,物理上不可行 | 只要求 2 个,物理可行 |
| 触发门槛 | 无长度过滤,任何宽线都触发 | 增加 LENGTH 门槛,过滤短宽线 |
| 规则可解性 | 零解空间(No Solution Space) | 有解空间(Valid Solution) |
| 规则间关系 | 5 条并行生效,无优先级,一条无解即全盘失败 | 精简为 2 条可同时满足的规则 |
在 Design Rule 中,
MINIMUMCUT的WITHIN检查窗口必须大于通孔自身的最小物理跨距(宽度 + 间距)。否则,规则将成为“永远无法满足的死规则”,导致工具直接放弃该层的通孔生成。
所有
MINIMUMCUT规则并行生效、累加检查,不存在“优先级覆盖”或“匹配即停止”的机制。只要有一条被触发的规则无解,整层通孔即告失败。 排查时务必检查所有规则,而不是只盯着报错的那一条。
排查此类问题时,务必回到物理尺寸本身做数学验证,并检查所有规则是否同时可满足。