本课深入讲解版图编辑器(Magic),这是IC Layout设计中版图基础阶段的核心内容。理解本课内容对于成为一名合格的版图设计师至关重要。
版图编辑器(Magic)在实际芯片设计中有着广泛的应用:
版图编辑器(Magic)涉及以下几个关键概念,我们需要逐一理解:
| 概念 | 说明 | 重要性 |
|---|---|---|
| 基本原理 | 版图编辑器(Magic)的物理/电气基础 | ⭐⭐⭐⭐⭐ |
| 设计规则 | 版图编辑器(Magic)相关的DRC约束 | ⭐⭐⭐⭐⭐ |
| 版图实现 | 版图编辑器(Magic)的具体画法 | ⭐⭐⭐⭐⭐ |
| 验证方法 | DRC/LVS/PEX检查 | ⭐⭐⭐⭐ |
| 优化策略 | 面积/性能/功耗权衡 | ⭐⭐⭐ |
在实现版图编辑器(Magic)的版图时,需要特别注意以下设计规则:
| 规则编号 | 描述 | 约束条件 | 违反后果 |
|---|---|---|---|
| DR-1 | 最小尺寸约束 | ≥ 最小工艺尺寸 | 制造失败 |
| DR-2 | 间距约束 | ≥ 最小间距 | 短路/漏电 |
| DR-3 | 包围约束 | ≥ 最小包围 | 接触不良 |
| DR-4 | 匹配约束 | 对称/共质心 | 性能偏差 |
| DR-5 | 寄生约束 | 走线长度限制 | 性能下降 |
这些规则在Magic中通过tech文件定义,使用drc check命令自动验证。
以下是在Magic中实现版图编辑器(Magic)版图的完整脚本:
magic -dnull -noconsole <<'EOF'
# 版图编辑器(Magic) 版图实现
# 创建基本结构
box 0 0 100 50
paint nwell
# 添加有源区
box 5 5 45 45
paint pdiff
box 4 4 46 46
paint pplus
# 添加栅极
box 22 3 24 47
paint poly
# 添加接触孔和金属
box 10 20 12 22
paint contact
box 9 19 13 23
paint metal1
box 32 20 34 22
paint contact
box 31 19 35 23
paint metal1
# 保存
save lesson_04_layout
quit -noprompt
EOF
版图创建成功,DRC检查通过。
magic -dnull -noconsole <<'EOF'
load lesson_04_layout
drc check
puts "DRC Errors: [drc count]"
quit -noprompt
EOF
magic -dnull -noconsole <<'EOF'
load lesson_04_layout
extract all
ext2spice
quit -noprompt
EOF
netgen -batch lvs lesson_04_layout.spice schematic.spice
magic -dnull -noconsole <<'EOF'
load lesson_04_layout
extract all
ext2spice -R -C
quit -noprompt
EOF
所有验证步骤通过:DRC=0错误,LVS匹配,寄生参数已提取。
通过合理的器件放置和共享结构,可以显著减少版图编辑器(Magic)的版图面积:
关键信号路径的走线优化:
对于需要匹配的器件:
按照上述步骤完整实现版图编辑器(Magic)的版图,确保DRC和LVS都通过。
在基础版图上进行面积优化,目标减少20%面积。记录优化前后的面积和DRC结果。
Magic使用角点缝合(corner-stitched)数据结构,这是其高效操作的秘密:
平面版图被分割为不重叠的矩形瓷砖(tiles),每个瓷砖记录4个指针指向邻居:
┌─────┬───┐
│ │rt │ rt = right tile
│ T ├───┤ tp = top tile
│ │tp │ lb = left tile
├─────┼───┤ bt = bottom tile
│lb │bt │
└─────┴───┘
| 特性 | Magic | Virtuoso | KLayout |
|---|---|---|---|
| 数据结构 | 角点缝合 | 多边形列表 | 多边形列表 |
| 实时DRC | ✅ 内置 | ❌ 需Calibre | ❌ 需DRC脚本 |
| 脚本语言 | Tcl | SKILL | Ruby/Python |
| 开源 | ✅ | ❌ ($$$) | ✅ |
| Pcell | 手动Tcl | SKILL Pcell | 有限支持 |
完成以下综合项目,将本课所学知识融会贯通:
提交内容:版图截图、DRC报告、LVS报告、寄生参数分析。
在基础版图上进行以下优化尝试:
记录每次优化前后的指标变化,总结最优方案。
# 根据条件选择不同画法
proc conditional_paint {x y w l type} {
if {$type eq "nmos"} {
box $x $y [expr {$x+$w}] [expr {$y+$l}]
paint ndiff
} elseif {$type eq "pmos"} {
box $x $y [expr {$x+$w}] [expr {$y+$l}]
paint pdiff
} else {
puts "Unknown type: $type"
}
}
# 批量替换层
proc replace_layer {old new} {
select area $old
set boxes [box values]
# 选中后重画
erase $old
paint $new
}
# 批量移动
proc move_all {layer dx dy} {
select area $layer
move $dx $dy
}
# 统计版图中各层的使用面积
proc layer_stats {} {
foreach layer {nwell ndiff pdiff poly metal1 metal2} {
set area [count $layer]
puts "$layer: $area square lambda"
}
}
| 错误 | 症状 | 修复方法 |
|---|---|---|
| 忘记画N-Well | PMOS不工作,LVS报错 | 先画N-Well再画PMOS |
| Poly未延伸出Active | DRC报错,沟道不完整 | 每侧延伸≥2 lambda |
| 接触孔数量不足 | 串联电阻大,性能差 | 增加contact/via数量 |
| 金属线太窄 | DRC报错,电迁移风险 | ≥最小宽度,大电流加宽 |
| 差分走线不对称 | 失调大,CMRR差 | 以对称轴镜像布线 |
| 缺少dummy器件 | 边缘器件匹配差 | 两端加dummy |
| 电源轨太窄 | IR drop大,噪声大 | 用高层金属,宽线 |
| 保护环缺失 | 闩锁效应风险 | 添加P+/N+保护环 |
| 术语 | 英文 | 含义 |
|---|---|---|
| 版图 | Layout | 芯片的物理几何描述 |
| 设计规则 | Design Rule | 代工厂规定的几何约束 |
| 掩膜版 | Photomask | 光刻用的图案模板 |
| 有源区 | Active Area | 晶体管源漏区域 |
| 多晶硅 | Polysilicon | 栅极材料 |
| 通孔 | Via | 层间连接 |
| 寄生 | Parasitic | 版图引入的额外RC |
| 匹配 | Matching | 器件参数一致性 |
| 闩锁效应 | Latch-up | 寄生可控硅导通 |
| 电迁移 | Electromigration | 大电流导致金属线断裂 |
🏆 版图编辑器(Magic)专家
✅ 理解版图编辑器(Magic)的核心原理
✅ 完成版图编辑器(Magic)版图实现
✅ 掌握版图编辑器(Magic)的验证流程
✅ 了解版图编辑器(Magic)的优化技巧