先进工艺节点物理实现中,出现一系列诡异现象:
VIA5(ME5-ME6)无法生成,布线工具直接报错
修改ME5的MINIMUMCUT后,VIA5能生成了,但VIA4和VIA5在电源网络上依然有Adjacent Cut Spacing DRC违例
修改VIARULE后部分报错依然顽固存在
| 层级 | 作用 | 关键点 |
|---|---|---|
| VI层定义 | 通孔自身的物理尺寸和间距规则 | WIDTH 0.36 ; SPACING 0.54 ADJACENTCUTS 3 WITHIN 0.56 |
| VIARULE | 工具动态生成通孔的规则 | RECT ... ; SPACING 0.7 BY 0.7 |
| 硬编码VIA | 工具直接调用的固定通孔宏 | VIA V56_2x2_HV ... RECT ... |
| 金属层MINIMUMCUT | 宽线上必须打多少个通孔 | MINIMUMCUT 4 WIDTH 1.15 WITHIN 0.301 |
关键认知:四层独立生效、累加检查。改任何一层,其他层不会自动适配。硬编码VIA完全不受VIARULE修改影响——这是最大陷阱。
边长0.36,间距0.34,中心距0.70
2x2阵列沿导线方向跨距 = 0.70
规则要求:0.301窗口内放4个VIA5
物理极限:4个VIA最小跨距0.70
0.301 < 0.70 → 永远无法满足
所有MINIMUMCUT累加生效,一条无解则全盘失败。线宽4.5时5条全触发,规则1/2无解 → 整层VIA非法。
| VIA层 | 边长 | 增强间距要求 | 所需中心距 | 当前中心距 | 状态 |
|---|---|---|---|---|---|
| VI1~VI4 | 0.07 | 0.09 | 0.16 | 0.165 | ✅安全 |
| VI5(单孔) | 0.36 | 0.54 | 0.90 | 不适用 | ✅安全 |
| VI5(阵列) | 0.36 | 0.54 | 0.90 | 0.70/0.88 | ❌需改 |
2x2阵列中心距=0.165,边距=0.095 ≥ 0.09 ✅,跨距0.165 < MINIMUMCUT窗口0.201 ✅
以下硬编码VIA定义完全独立于VIARULE,必须逐一修改:
| VIA名称 | 原中心距 | 修改为 |
|---|---|---|
| V56_2x2_HV | 0.70 | 0.90 |
| V56_2x1_HV_E/W | 0.88 | 0.90 |
| V56_1x2_HV_N/S | 0.88 | 0.90 |
以V56_2x2_HV为例,孔中心从±0.35移到±0.45:
物理VIA实例不会因LEF修改而自动移动。修改后必须删除旧VIA并重打。
两排所需宽度 = 0.07+0.09+0.07+0.06(ENCLOSURE)=0.29 > 0.21
工具只打了单排1x3,老规则中心距0.14边距0.07 < 0.09 → 报错
改中心距0.16后边距0.09,满足规则,但必须删除旧数据重打
| 修改对象 | 原值 | 新值 |
|---|---|---|
genm1m2~genm4m5 SPACING | 0.14 | 0.16 |
genm5m6 SPACING | 0.70 | 0.90 |
V56_2x2_HV | 中心距0.70 | 中心距0.90 |
V56_2x1_HV_E/W | 中心距0.88 | 中心距0.90 |
V56_1x2_HV_N/S | 中心距0.88 | 中心距0.90 |
| ME4 FROMABOVE | 旧5条 | 新2条(同ME5) |
| ME1~ME3、ME4/ME5 FROMBELOW | 保持不动 | 小孔安全 |
四层规则独立生效:VI定义、VIARULE、硬编码VIA、MINIMUMCUT互不自动同步
检查窗口 > 通孔物理跨距:否则成“死规则”
硬编码VIA是“暗桩”:全文搜索VIA ... DEFAULT逐一核对
改LEF≠刷新数据库:必须删除旧VIA重新生成
改动范围要精确:小孔改间距后跨距0.16仍小于0.201,原有4孔规则可保留
核心方法论:回到物理尺寸做数学验证,而非在工具报错中盲目调试。