一次 LEF 规则乌龙引发的 VIA5 打不上问题深度排查
专栏:iLoveIC July 30, 2026, 6:32 p.m. 18 阅读
LEF MINIMUMCUT 分析

一、问题现象

在先进工艺节点的物理实现中,我们发现一个奇怪的现象:ME5(Metal 5)与 ME6(Metal 6)之间的 VIA5 始终无法正常生成。无论是布线工具(如 Innovus/ICC2)还是物理验证工具(Calibre),都在 VIA5 的生成或检查阶段报错,导致设计无法继续。

二、现场还原:LEF 中的 ME5 规则

ME5 的 LEF 定义(节选)如下:

LAYER ME5
  TYPE ROUTING ;
  DIRECTION VERTICAL ;
  PITCH 0.14 ;
  OFFSET 0.07 ;
  WIDTH 0.07 ;
  ...
  MINIMUMCUT 2 WIDTH 0.3 WITHIN 0.201 FROMBELOW ;
  MINIMUMCUT 4 WIDTH 0.55 WITHIN 0.201 FROMBELOW ;
  MINIMUMCUT 2 WIDTH 0.3 FROMBELOW LENGTH 0.3 WITHIN 1.101 ;
  MINIMUMCUT 2 WIDTH 1.44 FROMBELOW LENGTH 1.44 WITHIN 2.701 ;
  MINIMUMCUT 2 WIDTH 2.2 FROMBELOW LENGTH 7.1 WITHIN 7.001 ;
  MINIMUMCUT 2 WIDTH 0.45 WITHIN 0.301 FROMABOVE ;   // <-- 问题规则1
  MINIMUMCUT 4 WIDTH 1.15 WITHIN 0.301 FROMABOVE ;   // <-- 问题规则2
  MINIMUMCUT 2 WIDTH 0.71 FROMABOVE LENGTH 0.71 WITHIN 1.351 ;
  MINIMUMCUT 2 WIDTH 2.1 FROMABOVE LENGTH 2.1 WITHIN 2.751 ;
  MINIMUMCUT 2 WIDTH 3.1 FROMABOVE LENGTH 10.1 WITHIN 7.001 ;
  ...
END ME5

将上述 5 条 FROMABOVE 规则全部替换为以下两条后,VIA5 恢复正常:

  MINIMUMCUT 2 WIDTH 1.849 WITHIN 1.651 FROMABOVE ;
  MINIMUMCUT 2 WIDTH 3.1 FROMABOVE LENGTH 10.1 WITHIN 4.901 ;

注意:不是只换高亮的两条,而是 5 条全部换成了 2 条。这个细节至关重要,原因后文详述。

三、Root Cause 分析

3.1 VIA5 的物理尺寸真相

先看 VIA5 的真实定义:

LAYER VI5
  TYPE CUT ;
  WIDTH 0.36 ;
  SPACING 0.34 ;
  SPACING 0.54 ADJACENTCUTS 3 WITHIN 0.56 ;
  ...
END VI5
  • VIA5 是正方形,边长为 0.36 µm

  • VIA5 之间的最小间距为 0.34 µm

  • 因此,沿导线方向(ME5 为 Vertical 方向)排列 VIA5 时,相邻两个 VIA5 中心距 ≥ 0.36 + 0.34 = 0.70 µm

3.2 旧规则为什么会“死”?

问题规则:

MINIMUMCUT 2 WIDTH 0.45 WITHIN 0.301 FROMABOVE ;
MINIMUMCUT 4 WIDTH 1.15 WITHIN 0.301 FROMABOVE ;

两条规则的核心矛盾在于:

  • 检查窗口只有 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 个。

3.3 更严格的 VIA 间距规则让问题更严重

VIA5 定义中还有一条三重临近规则:

SPACING 0.54 ADJACENTCUTS 3 WITHIN 0.56 ;

如果在 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 的差距更加悬殊。

3.4 为什么 5 条必须全换?—— 规则是“并行检查”,没有优先级

这里有一个容易踩的坑:误以为工具会按顺序匹配第一条满足的规则就停止

正确答案是:所有 MINIMUMCUT 规则是“累加生效”的(逻辑与关系),不存在“谁优先级高就只听谁的”。

当线宽为 4.5、长度为 20(满足所有长度门槛)时,旧 5 条规则全部被触发

规则要求解空间状态
2个, WIDTH 0.45, WITHIN 0.3010.301 内放 2 个 VIA需要 0.70 > 0.301❌ 无解
4个, WIDTH 1.15, WITHIN 0.3010.301 内放 4 个 VIA需要 3.06 > 0.301❌ 无解
2个, WIDTH 0.71, L=0.71, WITHIN 1.3511.351 内放 2 个 VIA需要 0.70 < 1.351✅ 有解
2个, WIDTH 2.1, L=2.1, WITHIN 2.7512.751 内放 2 个 VIA需要 0.70 < 2.751✅ 有解
2个, WIDTH 3.1, L=10.1, WITHIN 7.0017.001 内放 2 个 VIA需要 0.70 < 7.001✅ 有解

关键点:工具必须同时满足所有触发的规则。只要有一条无解(规则 1 或 2),整体判定为失败,工具直接拒绝生成 VIA5。后面 3 条规则即使再宽松也救不回来。

这就是为什么必须把 5 条全部换掉,而不是只删改那两条“显眼包”。任何一条无解的残存规则都会继续污染整层的通孔合法性。

3.5 FROMABOVE 语法位置的说明

细心的读者可能注意到,旧规则 1 的写法是:

MINIMUMCUT 2 WIDTH 0.45 WITHIN 0.301 FROMABOVE ;

而旧规则 3 的写法是:

MINIMUMCUT 2 WIDTH 0.71 FROMABOVE LENGTH 0.71 WITHIN 1.351 ;

这两种写法语义完全等价,解析上没有优先级差异。 FROMABOVE / FROMBELOW 是方向修饰符,位置相对灵活。EDA 工具的解析器基于关键字(Keyword)抓取,而非固定顺序。规则 1 没写 LENGTH,解析为无长度门槛(任何长度都触发);规则 3 写了 LENGTH,解析器依然能正确识别。这个问题不会影响规则的触发逻辑。

四、新规则为什么有效?

替换后的两条规则:

MINIMUMCUT 2 WIDTH 1.849 WITHIN 1.651 FROMABOVE ;
MINIMUMCUT 2 WIDTH 3.1 FROMABOVE LENGTH 10.1 WITHIN 4.901 ;

4.1 物理可满足

  • 每条规则只要求 2 个 VIA5,而不是 4 个

  • 检查窗口分别扩大到 1.651 µm4.901 µm

  • 2 个 VIA5 只需 0.70 µm,远小于窗口尺寸 → 有解

4.2 新规则 1 的作用:全域兜底

新规则 1 不带 LENGTH,是“全域检查”:

  • 任何线宽 ≥ 1.849 的 ME5 线(无论多短),都要求在 1.651 µm 内至少有 2 个 VIA5

  • 对于线宽 4.5 的线,这个条件轻松满足

4.3 新规则 2 的作用:长线专项检查

新规则 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 中,MINIMUMCUTWITHIN 检查窗口必须大于通孔自身的最小物理跨距(宽度 + 间距)。否则,规则将成为“永远无法满足的死规则”,导致工具直接放弃该层的通孔生成。

核心教训二:MINIMUMCUT 规则是“逻辑与”,不是“逻辑或”

所有 MINIMUMCUT 规则并行生效、累加检查,不存在“优先级覆盖”或“匹配即停止”的机制。只要有一条被触发的规则无解,整层通孔即告失败。 排查时务必检查所有规则,而不是只盯着报错的那一条。

排查此类问题时,务必回到物理尺寸本身做数学验证,并检查所有规则是否同时可满足。

感谢阅读,更多文章点击这里:【专栏:iLoveIC】
最新20篇 开设专栏