第四章:工艺设计套件(PDK)入门

各位同学,今天咱们聊聊PDK。说实话,PDK这东西,刚入行的时候觉得它就是个黑盒子,装完就完事了。但干久了你会发现——PDK玩得转不转,直接决定了你流片能不能一次成功。

我见过太多工程师,DRC报错几百条,愣是不知道怎么查。还有更惨的,LVS没过就敢tapeout,结果回来芯片短路。嗯,这些坑我都踩过。今天就把我这些年的经验,掰开了揉碎了讲给你们听。

4.1 PDK是什么?为什么它这么重要?

PDK,全称Process Design Kit,工艺设计套件。说白了,就是晶圆厂给你的一套「设计工具包」。里面包含了从电路设计到物理验证的所有必要文件。

我个人习惯把PDK比作「乐高说明书」。你想想看,没有说明书,你拿着一堆乐高零件能拼出什么?同样的道理,没有PDK,你拿着晶体管、电阻、电容这些器件,根本不知道该怎么摆、怎么连。

PDK的核心内容:

  • 器件模型:MOS管、BJT、电阻、电容、电感的SPICE模型
  • 版图层次:各层掩模的定义、颜色、用途
  • 设计规则:最小线宽、间距、包围等几何约束
  • 标准单元库:数字电路用的基本逻辑单元
  • 验证文件:DRC、LVS、PEX的规则文件

我在项目中遇到过一件事:有个同事用错了PDK版本,把0.18μm的规则套到了0.13μm的工艺上。结果呢?流片回来,MOS管的沟道长度全偏了,整个芯片没法工作。那次教训让我养成了一个习惯——每次新建项目,第一件事就是核对PDK版本号。

4.2 PDK的安装与配置

中芯国际的BCD工艺PDK,安装起来其实不复杂。但有几个关键点,我给大家捋一捋。

4.2.1 安装前的准备工作

首先,你得确认你的EDA工具版本。我记得有一次,我用的是IC617,结果PDK要求IC618以上,折腾了半天才发现是版本不兼容。

常见的EDA工具版本要求:

PDK版本 Cadence IC版本 Mentor Calibre版本
BCD350 IC617及以上 2020.2及以上
BCD180 IC618及以上 2021.1及以上
BCD130 IC618.7及以上 2022.1及以上

安装步骤其实就三步:

  1. 解压PDK压缩包——注意路径不要有中文,不要有空格
  2. 运行安装脚本——通常是./install.sh或者./setup.csh
  3. 配置环境变量——把PDK路径加到.bashrc.cshrc

我的小技巧:安装完成后,先跑一个简单的反相器仿真,验证PDK是否正常工作。别一上来就搞大项目,先确认基础没问题。

4.2.2 环境变量配置示例

以BCD180工艺为例,我一般这样配置:

# 在 .bashrc 中添加
export PDK_HOME=/home/designer/pdk/SMIC_BCD180
export CDS_Netlist_Mode=Analog
export MGC_CALIBRE_HOME=/tools/mentor/calibre/2021.1

# 启动Cadence时加载PDK
alias icfb='cds_icfb -pdkhome $PDK_HOME &'

为什么要用别名?因为每次敲一长串路径太麻烦了。我这个人比较懒,能省一步是一步。

4.3 工艺文件解读

工艺文件,说白了就是晶圆厂给你的「技术说明书」。里面记录了每一层掩模的物理参数、电学特性、以及制造过程中的各种限制。

我刚开始看工艺文件的时候,头都大了。几百页的PDF,全是英文,各种专业术语。后来慢慢摸索出了一些门道。

4.3.1 关键工艺参数

你需要重点关注这几个参数:

  • 最小沟道长度:决定了你能做多快的管子
  • 栅氧化层厚度:直接影响阈值电压和可靠性
  • 金属层厚度和电阻率:决定了电流承载能力
  • 阱深度和掺杂浓度:影响闩锁效应和击穿电压

注意:千万不要只看典型值!工艺文件里通常会给出最小、典型、最大三个值。做设计的时候,一定要用最坏情况组合来仿真。我曾经因为只用了典型值,结果芯片在高温下性能严重退化。

4.3.2 层次定义文件

在PDK里,有一个文件叫layermap.map或者techfile.tf。这个文件定义了每一层掩模的编号、颜色、填充样式。

举个例子,BCD工艺里常见的层次:

层次名称 GDS编号 用途
NW 1 N阱
PW 2 P阱
ACT 3 有源区
PO 4 多晶硅栅
M1 10 第一层金属

为什么要记住这些编号?因为有时候DRC报错会说「layer 4 violation」,如果你不知道layer 4是啥,查起来就费劲了。

4.4 设计规则检查(DRC)基础

DRC,Design Rule Check,设计规则检查。这是流片前最重要的一步,没有之一。

你想想看,晶圆厂的生产设备是有物理极限的。线宽太窄,光刻机刻不出来;间距太小,相邻导线会短路;包围不够,器件边缘会漏电。DRC就是帮你检查这些问题的。

4.4.1 常见的DRC规则类型

我给大家总结一下,DRC规则主要分这么几类:

  • 宽度规则:最小线宽、最大线宽
  • 间距规则:同层间距、不同层间距
  • 包围规则:N阱包围PMOS、有源区包围接触孔
  • 密度规则:金属密度不能太低也不能太高
  • 天线规则:长走线不能直接连栅极

举个例子:在BCD180工艺中,M1的最小宽度是0.24μm,最小间距是0.24μm。如果你画了一条0.2μm宽的线,DRC就会报错。别问我怎么知道的——我第一版版图就犯过这个错。

4.4.2 如何运行DRC

以Calibre为例,运行DRC的步骤:

  1. 在Virtuoso中导出GDS文件
  2. 打开Calibre Interactive界面
  3. 加载DRC规则文件(通常是.drc.rul文件)
  4. 设置输入GDS和输出结果路径
  5. 点击Run DRC

等结果出来,你会看到一个错误列表。每个错误都有坐标、层次信息和规则描述。

4.4.3 解读DRC结果

DRC结果怎么看?我教你们一个方法:

  • 先看总数:如果报错上千条,别慌,很多是重复的
  • 按规则分类:相同的规则错误可以批量修改
  • 从大到小修:先修大面积的错误,再修小细节

避坑指南:我曾经遇到过一个DRC错误,显示「M1 density too low」。我以为是金属密度不够,就拼命加金属填充。结果越加越错。后来才发现,是某个模块的金属层被误删了。所以,遇到DRC错误,先定位到具体位置,看清楚是什么问题,再动手改。

4.4.4 DRC常见问题及解决方法

错误类型 常见原因 解决方法
宽度违规 走线太细 加宽走线到规则要求
间距违规 两条线靠太近 拉开间距或调整走线路径
包围违规 接触孔离有源区边缘太近 加大包围尺寸
天线违规 长金属线直接连栅极 加天线二极管或跳线到高层金属

嗯,说到这里,我想起一个事。有一次我帮一个同事查DRC,他有个错误怎么都修不掉。我过去一看,原来是他的版图里有个孤立的浮空多晶硅,没有任何连接。这种错误,说白了就是画图的时候手滑了。删掉就好了。

4.5 本章小结

PDK入门,说白了就是三件事:装对、看懂、会用。

  • 装对:版本匹配、路径正确、环境变量配置好
  • 看懂:工艺参数、层次定义、设计规则,心里要有数
  • 会用:DRC工具要熟练,错误要会查会改

下一章,我们会深入讲LVS(版图与原理图一致性检查)。到时候我会分享一个我亲身经历的LVS惨案——因为一个衬底接触没画,整个芯片的衬底电位都浮空了。嗯,那故事可有意思了。

今天就到这里。记住,PDK是你的工具,不是你的敌人。多花点时间熟悉它,后面设计的时候会省很多事。