2. 版图设计基础与工艺文件

版图(Layout)不是“画一堆彩色方块”,而是把电路网表映射为可制造的几何图形集合。要能在 Virtuoso Layout Editor 中正确、高效地完成这一步,必须先建立三个基础认知:版图层次决定组织方式,图层决定几何图形的工艺含义,设计规则决定图形能否被制造。三者之上,再由 PDK 与 techfile 把它们绑定到具体工艺,最终通过版图编辑器落地为可编辑、可验证的版图数据。

一、版图层次:从单元到系统

版图采用层次化(hierarchical)结构,与电路原理图的层次一一对应。最底层是基本单元,例如一个 NMOS 管、一个接触孔阵列、一个反相器;中间层是功能单元,例如 NAND 门、触发器、电流镜;顶层是模块或芯片,把各功能单元按网表连接并完成电源、地、I/O 布线。

层次化的价值在于复用与一致性:一个反相器单元只画一次,被调用上千次,修改一次即全局生效。在 Virtuoso 中,每个单元对应一个 cell,同一单元的不同版本对应 view,版图视图通常命名为 layout,原理图视图为 schematic,符号视图为 symbol。调用关系由 instance 建立,实例可以带参数(如晶体管宽度 W、长度 L、指数 m),从而在不复制几何的前提下生成不同尺寸的器件。

层次化也带来一个常见问题:跨层次连接。当子单元内部使用金属 1,父单元使用金属 2 时,需要通过 pin 或 label 在子单元边界暴露端口,父单元才能正确连接。若端口未定义或命名不一致,LVS 会报“开路”或“器件不匹配”。因此,画版图前应先确认单元的端口定义与原理图一致。

二、图层:几何图形的工艺语义

版图中的每一个矩形、多边形都归属于某个图层(layer),图层再细分为目的(purpose),例如 drawing、pin、label、boundary。工艺厂在 techfile 中定义图层编号、名称、颜色、线型与填充方式。常见图层包括:

  • 有源区(active/diffusion):定义晶体管源漏与沟道区域;
  • 多晶硅(poly):形成栅极与局部互连;
  • N 阱 / P 阱(nwell/pwell):定义衬底类型与隔离;
  • 注入层(nplus/pplus):定义源漏掺杂类型;
  • 接触孔(contact/via):连接不同导电层;
  • 金属层(metal1、metal2…):布线;
  • 钝化/焊盘(passivation/pad):芯片对外接口。

图层不是“颜色”,而是工艺步骤的抽象。同一个几何形状放在不同图层,制造结果完全不同。例如,一个矩形放在 poly 上是栅极,放在 metal1 上是导线。因此,切换图层时必须确认当前图层与目的,避免“画对了形状、放错了层”。

三、设计规则:可制造性的边界

设计规则(Design Rules)是工艺厂给出的几何约束集合,通常以规则文件(如 .tf 或 techfile)形式提供。常见规则类型包括:

  • 最小宽度(minWidth):单层图形的最小尺寸;
  • 最小间距(minSpacing):同层或异层图形之间的最小距离;
  • 最小包围(enclosure):如 contact 被 metal 包围的最小量;
  • 最小延伸(extension):如 poly 超出 active 的最小量;
  • 密度规则(density):某层在给定窗口内的面积占比上下限;
  • 天线规则(antenna):金属与栅极面积比限制。

这些规则不是“建议”,而是硬性约束。违反规则的版图在 DRC 中会报错,即使功能正确也无法流片。实际画图时,应养成“边画边查”的习惯:先满足最小宽度与间距,再处理包围与延伸,最后检查密度与天线。

四、加载 PDK 与 techfile

PDK(Process Design Kit)是工艺厂提供的设计套件,包含 techfile、器件模型、符号库、版图单元、DRC/LVS 规则文件等。在 Virtuoso 中加载 PDK 的典型流程如下:

# 1. 确认 PDK 路径与版本
echo $PDK_PATH
# 2. 在 CIW 中加载 techfile
techLoad("$PDK_PATH/techfile.tf")
# 3. 绑定工艺库
techBindTechFile("myLib" "$PDK_PATH/techfile.tf")
# 4. 打开版图编辑器,确认图层与规则已生效
layoutEditor = hiGetCurrentWindow()

加载完成后,应在 Layout Editor 中检查:图层列表是否完整、颜色是否可区分、DRC 规则是否可调用。若图层缺失或颜色异常,通常是 techfile 路径错误或版本不匹配。此时不要强行画图,应先解决环境问题。

提示:PDK 版本必须与工艺线一致。使用旧版 techfile 画新版工艺的版图,可能导致 DRC 误报或漏报。建议在项目开始时锁定 PDK 版本,并记录在项目文档中。

五、版图编辑器基本操作与快捷键

Virtuoso Layout Editor 的操作围绕“视图控制、对象创建、对象编辑、层次操作”四类展开。以下为常用快捷键与操作:

操作快捷键/命令说明
缩放Z / Shift+Z放大/缩小
平移中键拖动移动视图
创建矩形R选择图层后绘制
创建多边形P绘制任意形状
创建路径W绘制导线
移动M移动选中对象
复制C复制选中对象
删除Delete删除选中对象
拉伸S调整图形尺寸
层次进入E进入子单元编辑
层次返回Ctrl+E返回父单元
保存Ctrl+S保存当前单元

实际画图时,建议先设置好栅格(grid)与捕捉(snap),再开始绘制。栅格间距通常设为最小设计规则的一半或整数倍,例如最小宽度 0.1 μm 时,栅格可设为 0.05 μm。捕捉开启后,图形边缘会自动对齐栅格,减少 DRC 错误。

六、从规则到版图:一个反相器示例

以 0.18 μm 工艺为例,假设最小宽度 0.18 μm、最小间距 0.18 μm、contact 包围 0.06 μm。画一个反相器时,先放置 PMOS 与 NMOS 的有源区,再画多晶硅栅,接着画 N 阱与注入层,最后打 contact 并连金属 1。每一步都应检查:有源区是否满足最小宽度?多晶硅与有源区是否满足延伸?contact 是否被金属完全包围?

若 DRC 报出“poly 与 active 间距不足”,应优先调整多晶硅位置,而不是缩小有源区。因为缩小有源区可能引入新的宽度违规。修改后重新运行 DRC,直到无错误。此时版图才具备进入 LVS 与寄生提取的基本条件。

版图设计基础:层次、图层、规则与 PDK 加载 版图层次 顶层模块 chip 功能单元 NAND / INV 基本单元 NMOS / PMOS 几何图形 rect / poly cell / view / instance 端口 pin / label 图层与设计规则 active / poly / nwell contact / via / metal1 purpose: drawing / pin minWidth / minSpacing enclosure / extension density / antenna PDK 加载与编辑器 techLoad(techfile.tf) techBindTechFile(lib) Layout Editor 打开 R / P / W / M / C / S DRC 检查 → 无错误 映射 绑定

总结来看,版图设计基础可以归纳为一条主线:层次决定“怎么组织”,图层决定“画什么”,设计规则决定“能不能画”,PDK 与 techfile决定“按哪个工艺画”,编辑器操作决定“怎么画得快且对”。掌握这条主线后,后续的 DRC、LVS 与寄生提取才有稳定的起点。