第二章 工艺文件与PDK准备:PDK安装与配置、工艺文件解读、DRC文件准备
做射频IC设计,说白了就是跟工艺厂打交道。你画得再漂亮的版图,如果工艺文件没搞对,流片回来就是一堆废片。我刚开始带项目那会儿,就见过有人因为PDK路径配错,整个团队白干了两周——嗯,这种坑咱们得绕着走。
这一章咱们就聊聊PDK怎么装、工艺文件怎么看、DRC规则怎么准备。别小看这些准备工作,它们决定了你后续所有工作的基础。
2.1 PDK安装与配置
PDK(Process Design Kit)是工艺厂给你的“工具箱”。里面包含了器件模型、参数化单元(Pcell)、设计规则文件、DRC/LVS命令文件等等。没有它,你连个NMOS都画不出来。
2.1.1 安装前的检查清单
我个人习惯,装PDK之前先确认三件事:
- 操作系统版本:大多数PDK支持Red Hat Enterprise Linux 6/7,CentOS 7也行。Ubuntu?嗯,我劝你别折腾。
- Cadence版本:IC617、IC618、ICADV12.3……不同PDK对Cadence版本有要求。我记得有一次IC617死活装不上某厂的28nm PDK,后来发现人家只支持IC618以上。
- 磁盘空间:一个完整的PDK,解压后少说5GB,带EM/IR和RF模型的能到20GB。别装到一半发现磁盘满了。
ls -la ~ 确认你有写权限。
2.1.2 安装步骤(以某28nm PDK为例)
不同工艺厂的安装方式大同小异,核心流程如下:
- 解压PDK压缩包:通常是.tar.gz或.zip格式,解压到指定目录,比如
/home/eda/pdk/TSMC28。 - 运行安装脚本:一般叫
install.pl或setup.sh。我建议用绝对路径运行,避免路径解析错误。 - 配置.cdsinit:在Cadence启动文件里加载PDK的初始化脚本。比如:
; 在.cdsinit文件中添加
load("/home/eda/pdk/TSMC28/cadence/tsmc28Init.il")
- 配置.cdslib:在库定义文件中添加PDK库路径。比如:
# 在.cdslib文件中添加
DEFINE tsmc28rf /home/eda/pdk/TSMC28/cadence/tsmc28rf.lib
- 验证安装:启动Cadence,在CIW窗口输入
pdkinfo(),如果能返回PDK版本信息,说明装好了。
printf("PDK loaded: %L\n", pdkinfo()),这样每次启动都能看到PDK是否加载成功,心里踏实。
2.1.3 常见安装问题
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| 启动Cadence报"PDK not found" | .cdsinit中路径写错 | 检查路径是否绝对路径,文件名大小写 |
| Pcell调不出来 | SKILL解释器版本不匹配 | 确认Cadence版本与PDK要求的SKILL版本一致 |
| DRC跑不了 | ASSURA/CALIBRE路径未配置 | 在.cdsinit中设置DRC工具路径 |
| 仿真模型找不到 | 模型库路径未添加到ADE环境 | 在ADE Setup中手动添加模型库路径 |
2.2 工艺文件解读
工艺文件,就是工艺厂给你的“技术说明书”。你想想看,一个芯片里几十层掩模,每层用什么材料、多厚、最小宽度多少、间距多少……全写在这些文件里。
我一般把工艺文件分成三类:
- 设计规则文件(DRC Rule):告诉你什么能画,什么不能画。
- 器件模型文件(Model File):告诉你管子怎么仿真。
- 工艺参数文件(Process Parameter):告诉你每层工艺的具体参数。
2.2.1 设计规则文件怎么看
DRC文件通常以 .rul 或 .drc 结尾。打开一看,密密麻麻的规则定义。别慌,咱们抓住几个核心:
- 最小宽度(Minimum Width):比如M1最小宽度0.1μm,你画0.09μm?DRC直接报错。
- 最小间距(Minimum Spacing):同层金属之间的最小距离。我做过一个LNA,为了省面积把两个电感挨得太近,结果耦合太大,后仿真直接崩了。
- 最小包围(Minimum Enclosure):比如过孔周围金属至少要包多少。
- 最小延伸(Minimum Extension):比如多晶硅栅超出有源区多少。
2.2.2 器件模型文件
模型文件通常以 .scs(Spectre)或 .lib(HSPICE)结尾。里面定义了MOS管、电阻、电容、电感等器件的SPICE模型参数。
举个例子,一个NMOS的BSIM4模型长这样:
// 28nm NMOS BSIM4模型片段
.model nch nmos (
+ version = 4.7
+ toxe = 1.4e-9
+ xj = 1.5e-8
+ nch = 2e18
+ vth0 = 0.35
+ u0 = 0.045
+ ... // 还有上百个参数
)
你不需要记住每个参数,但要知道几个关键的:
- vth0:阈值电压,决定了管子开启电压。
- u0:迁移率,影响跨导。
- toxe:栅氧化层厚度,影响栅电容。
做LNA时,我特别关注噪声模型参数,比如 noi 和 flicker 相关参数,它们直接决定了LNA的噪声系数。
2.2.3 工艺参数文件
这个文件通常叫 process.params 或 techfile.tf。里面定义了每层工艺的物理参数:
| 参数 | 典型值(28nm) | 说明 |
|---|---|---|
| M1厚度 | 0.08μm | 底层金属,最薄 |
| 顶层金属厚度 | 3.4μm | 用于电感,厚金属降低电阻 |
| ILD介电常数 | 3.9 | 层间介质,影响寄生电容 |
| 衬底电阻率 | 10 Ω·cm | 影响衬底耦合和电感Q值 |
做LNA版图时,我习惯把顶层金属的厚度和电阻率记下来——它们直接决定了电感的串联电阻,进而影响Q值。
2.3 DRC文件准备
DRC(Design Rule Check)文件,就是工艺厂给你的一套“交通规则”。你的版图必须完全遵守这些规则,否则流片时可能短路、断路,甚至芯片直接报废。
2.3.1 DRC文件的结构
一个典型的DRC文件(以CALIBRE格式为例)包含:
- 层定义(LAYER):定义每层版图的编号和名称。
- 规则定义(RULE):具体的几何约束。
- 派生层(DERIVED):通过逻辑运算生成的中间层。
- 规则检查语句:比如
WIDTH M1 < 0.1表示检查M1宽度是否小于0.1μm。
举个例子:
// DRC规则片段
LAYER M1 10
LAYER V1 11
LAYER M2 12
// 规则1:M1最小宽度0.1μm
WIDTH M1 < 0.1 { @ M1 minimum width violation }
// 规则2:M1与M1最小间距0.12μm
SPACING M1 < 0.12 { @ M1 minimum spacing violation }
// 规则3:V1被M1包围至少0.04μm
ENC M1 V1 < 0.04 { @ V1 enclosure by M1 violation }
2.3.2 如何准备DRC文件
我一般按以下步骤准备:
- 从PDK中获取原始DRC文件:通常在PDK的
calibre/或assura/目录下。 - 确认DRC工具版本:CALIBRE 2019和2021的语法有细微差别。我遇到过因为版本不匹配,DRC跑出来全是假错的情况。
- 创建DRC运行脚本:一个简单的CALIBRE DRC运行脚本:
// drc_run.sh
calibre -drc -hier -turbo 4 drc_rule_file.drc \
-layout layout.gds \
-o drc_results.db
- 设置排除层(Optional):有些层在LNA设计中用不到,可以排除掉以加快DRC速度。比如某些数字标准单元层。
2.3.3 DRC常见错误及处理
| 错误类型 | 常见原因 | 处理方法 |
|---|---|---|
| 宽度错误 | 金属线画窄了 | 加宽金属线,或调整走线 |
| 间距错误 | 两条线靠太近 | 拉开间距,或换层走线 |
| 包围错误 | 过孔周围金属不够 | 加大过孔周围的金属面积 |
| 密度错误 | 某层金属密度不达标 | 添加dummy填充 |
| 天线效应 | 长金属线连接栅极 | 加天线二极管,或跳线 |
2.4 本章知识体系
下面这张图帮你理清本章的核心逻辑:
- PDK安装前务必检查操作系统、Cadence版本和磁盘空间。
- 工艺文件要重点看最小宽度、间距、包围规则,以及顶层金属参数。
- DRC文件不要随意排除层,尤其是dummy填充层。
- 准备一个标准化的DRC运行脚本,可以节省大量重复劳动。
好了,PDK和工艺文件这块儿就聊到这儿。这些东西看着琐碎,但都是实打实的经验活。你把这些基础打牢了,后面画版图、跑仿真的时候才能心里有底。