Cadence Virtuoso 中模拟电路版图 DRC 常见错误排查与修复
模拟版图跑 DRC,最怕的不是报错多,而是 marker 一堆却不知道先修哪——先动金属 spacing,结果阱没包住 AA,LVS 又回过头来返工。下面这套排查节奏在 TSMC 180/65、SMIC 40 这类成熟节点上通用,按"阱/衬底 → 几何 → 密度"三层顺序走,基本一轮能压到十位数以内。
一、先修阱和衬底类:错一处带一串
这类错误不改,LVS 也过不了,优先级最高。
• NWELL Enclosure 不足:NWELL 边缘没超出 Active(AA)至少 0.6 μm@0.18μm。Virtuoso 里开 Snap to Grid + Extend,画 NWELL 时直接外扩一档,别手动画刚好贴边。
• SP8a(AA spacing 类):NMOS 与 PMOS 的 AA 间距不够,常见于无 Guard Ring 的紧凑布局。TSMC 180 要求 ≥ 1.2 μm,修法两种:拉开 AA 间距,或在中间插 PSDM Guard Ring 吃掉这段距离。
• Well Tap 悬空:PMOS 衬底接 VDD、NMOS 接 VSS,必须显式放 Substrate Contact/Tap Cell 连到 Power Ring,否则 LVS 里 !vdd!/!gss! 未匹配会一路追到你怀疑人生。
⚠ PMOS 所在 NWELL 如果没和全局 VDD 的 NW strap 连上,LUP.6(source/drain 到最近 NW strap ≤ 33 μm)会爆——大模块里加几根 NW strap 比事后塞 guard ring 省事。
二、几何类高频坑:Marker Explain 先看 rule text
跑完 DRC,别盯着闪红框瞎猜。Verify → Markers → Explain,点 marker 弹文本,rule 编号和阈值一目了然。几个 analog 版图的常客:
• GT3B(Poly on AA spacing):AA 上多指 MOS 的 Poly 间距压到阈值下,常见于电流镜阵列手指塞太密。修法是拉开 finger pitch,或把电流镜拆两组放远点。
• DG.5(3.3V Gate 双栅包围):0.18 μm 混压工艺里 3.3V 管子的 DG 层(AA2)包围 GT 不够 0.4 μm,报 Min.enclosure of DG beyond 3.3V gate: 0.32um (rule: 0.40um)——直接 Expand edges 把 DG 往外推一格。
• M1/M2 Min Area(X.6 类):0.15 μm 逻辑工艺里 M2 小碎块 0.25×0.35 μm 面积 0.088 μm²,低于 0.144 μm² 就爆。这种碎块屏幕上都看不见,RVE 里按 layer 筛 M1.6/M2.6 批量抓,合并或删。
• CT Enclosure / CT on Field Oxide:接触孔离 AA 边缘不够,或 CT 落到 FOX 上(CT.10)。前者扩 M1 包围,后者把 CT 挪进 AA 或补 silicide block。
快捷键配合:k 量距,Shift+F 全层展开看 CT 阵列,Verify → Markers → Find 里勾 Zoom to Marker,Next/Previous 逐个跳,比满屏 zoom 快。
三、Auto Fix 的坑:修了反而多
M1.S.1 Minimum spacing 0.18um 这类金属间距错,很多人直接点工具 Auto Fix,拉宽那条线——结果线宽一变,相邻的 spacing 又爆,修一条新长 20 条。正确做法:
1. RVE 里 Filter 只留 M1 spacing 类
2. 看是局部拥挤还是通道整体不够——局部就 Create → Path 重拉一根干净的,别拉伸原线(容易带歪邻居)
3. 涉及 M1–M2 via 阵列的跨层错,两层边界一起调,单动一层没用
修完 Verify → Markers → Delete All,清旧标记再 re-run,别信"改完就过"。
四、密度类:模块级可 defer
PO density(窗口 10×10 μm,step 5 μm ≥ 10%)、Metal density 这类,模块级版图经常不够,顶层拼完再补 dummy / metal fill 一般能消。模块阶段可以不管,但记得跟 PDK 确认 foundry 是否允许 waiver。
一点节奏
CIW 里跑 DRC 前先清场,避免旧 marker 误导:
# CIW 清理旧标记
deLoadCV("mylib" "mycell" "layout")
leHiDeleteAllMarkers()
# 跑 DRC(以 Diva 为例,Assura/Calibre 另起 rule deck)
hiDrcSetup()
Analog 版图 DRC 的真谛:阱/衬底先锁、几何按 rule text 修、Auto Fix 必 re-run、密度丢给顶层。 这套顺序走熟了,模拟模块的 DRC 一般两轮内能 clean,不至于在 LVS 阶段才发现衬底没接、回头改得满版图飞线。





