2、版图设计基础工具:主流EDA工具介绍(Cadence Virtuoso、Mentor Calibre)、PDK安装与配置、工艺文件解读

各位同学,咱们今天聊聊吃饭的家伙——EDA工具。做射频芯片版图,说白了就是跟这三样东西打交道:画图的、检查的、还有工艺厂给的PDK。我刚开始入行那会儿,光装PDK就折腾了两天,后来才发现是环境变量写错了。嗯,今天就把这些坑给你们填上。

2.1 主流EDA工具:Cadence Virtuoso 与 Mentor Calibre

先说画图的。业界最主流的版图设计工具,就是Cadence的Virtuoso。我个人习惯叫它“Virtuoso Layout Suite”,简称VLS。这玩意儿功能确实强大,从原理图到版图,再到寄生参数提取,一条龙搞定。

Cadence Virtuoso 的核心能力:

  • 版图编辑:支持多层金属、通孔、器件的绘制与编辑。快捷键我闭着眼都能按——p画多边形,r画矩形,c复制,m移动。你想想看,一天按几千次,能不熟吗?
  • 原理图驱动版图(SDL):从原理图直接生成版图,自动连线。我在项目中遇到过,用SDL做LNA的版图,省了至少半天的手动对齐时间。
  • Assura / PVS 验证:虽然自带DRC/LVS工具,但说实话,我很少用。为什么?因为流片厂最终认的是Calibre的结果。

再来说检查工具——Mentor Calibre。这玩意儿是DRC/LVS的行业标准。几乎所有Foundry的PDK里,都会附带Calibre的规则文件。你画完版图,跑一遍Calibre DRC,没报错,心里才踏实。

重要:Virtuoso负责“画”,Calibre负责“查”。两者缺一不可。我见过有人只用Virtuoso自带的DRC,结果流片回来金属间距违规,整批芯片报废。从那以后,我每次tape-out前,必须用Calibre再过一遍。

2.2 PDK安装与配置:别让环境变量坑了你

PDK(Process Design Kit)是工艺厂提供的“设计工具包”。里面包含了器件模型、参数化单元(Pcell)、DRC/LVS规则文件、还有工艺文档。没有PDK,你连个MOS管都画不出来。

PDK安装步骤(以TSMC 65nm为例):

  1. 获取PDK压缩包:从Foundry官网或内部服务器下载。通常是.tar.gz.zip格式。
  2. 解压到指定目录:我习惯放在/home/PDK/TSMC65nm/下。注意路径不要有中文或空格。
  3. 设置环境变量:这是最容易出错的一步。需要设置CDS_LOAD_ENVMGC_HOMECALIBRE_HOME等变量。
# 示例:在 .bashrc 中添加
export PDK_DIR=/home/PDK/TSMC65nm
export CDS_LOAD_ENV=CSH
export MGC_HOME=/tools/mentor/calibre/2021
export CALIBRE_HOME=$MGC_HOME
export PATH=$MGC_HOME/bin:$PATH

小技巧:我曾经因为CDS_LOAD_ENV没设对,导致Virtuoso启动后找不到PDK里的Pcell。折腾了一下午,最后发现是大小写写错了。记住:环境变量名是区分大小写的!

PDK配置验证:

  • 启动Virtuoso,在CIW窗口输入ddGetObj("PDK_LIB"),如果能返回库对象,说明PDK加载成功。
  • 打开版图编辑器,试着调用一个NMOS管。如果能看到带参数的Pcell,恭喜你,配置成功了。

2.3 工艺文件解读:DRC规则、LVS规则、RC参数

工艺文件,说白了就是Foundry给你的“规矩”。你画的每一层、每一条线,都得按规矩来。我刚开始看DRC规则文件时,头都大了——几千行代码,全是条件语句。后来慢慢摸出门道,其实核心就几类。

DRC规则文件(.drc或.rule):

规则类型 示例 说明
最小宽度 WIDTH M1 >= 0.1 金属1的线宽不能小于0.1μm
最小间距 SPACE M1 >= 0.12 两条金属1之间的间距不能小于0.12μm
包围规则 ENCLOSURE V1 M1 >= 0.04 通孔V1被金属1包围的余量至少0.04μm
密度规则 DENSITY M1 >= 0.3 AND <= 0.7 金属1的密度必须在30%~70%之间

LVS规则文件(.lvs):

LVS检查的是“版图”和“原理图”是否一致。说白了,就是看你的版图连得对不对。规则文件里会定义器件识别规则,比如:

// 识别NMOS管
DEVICE NMOS(G S D B) [ 
  (GATE & ACTIVE) 
  CONTACT 
  ...
]

嗯,这里要注意:LVS规则文件里,器件的端口顺序必须和原理图符号一致。我遇到过因为端口顺序写反,导致LVS报错,查了半天才发现是PDK版本不匹配。

RC参数文件(.itf或.rc):

这个文件定义了每层金属的方块电阻、单位电容、以及层间介质的厚度。做寄生参数提取时,Calibre会读取这个文件来计算互连线的RC值。举个例子:

// 金属1参数
METAL M1 {
  SHEET_RESISTANCE = 0.078  // 方块电阻,单位Ω/sq
  CAPACITANCE = 0.095e-15   // 单位面积电容,单位F/μm²
  THICKNESS = 0.28          // 金属厚度,单位μm
}

避坑指南:我曾经在做一个PA项目时,发现后仿结果和实测差了3dB。查来查去,原来是RC参数文件里用了错误的温度系数。记住:工艺文件里的参数都是标称值,实际流片会有波动。做仿真时,最好用corner模型(TT、FF、SS)来覆盖最坏情况。

2.4 我的个人工作流

最后,分享一下我平时的工作流,供你们参考:

  1. 启动Virtuoso:先检查PDK环境变量,确认Pcell能正常调用。
  2. 画版图:用SDL从原理图生成初始版图,然后手动调整布局。
  3. 跑DRC:每画完一个模块,就局部跑一次DRC。别等到最后一起跑,否则报错几百个,你改都改不过来。
  4. 跑LVS:模块级LVS通过后,再拼顶层。
  5. 寄生提取:用Calibre PEX提取RC参数,做后仿。
  6. 最终检查:tape-out前,跑一次全芯片DRC+LVS+天线规则检查。

嗯,今天就先聊到这儿。工具只是手段,关键还是你对工艺规则的理解。下一章,咱们开始讲具体的版图设计技巧——怎么画一个低噪声的匹配网络。