第1章:PDK目录结构解析
各位同学,咱们今天聊聊PDK的目录结构。说实话,我刚入行那会儿,拿到一个PDK压缩包,第一反应就是直接解压,然后满世界找文件。结果呢?浪费了大半天时间,最后发现原来人家目录结构是有规律的。
PDK,全称是Process Design Kit,工艺设计套件。说白了,就是晶圆厂给我们设计师准备的一套工具包。你想想看,没有PDK,你连个管子都画不出来,更别提仿真了。
1.1 PDK根目录长什么样?
我习惯把PDK解压后,先看一眼根目录。以SMIC 0.18μm工艺为例,典型的根目录结构是这样的:
smic18mmrf_1.0/
├── doc/ # 文档目录
├── lib/ # 库文件目录
├── models/ # 模型文件目录
├── pdk/ # PDK核心文件
├── rules/ # 规则文件目录
├── tech/ # 技术文件目录
└── tools/ # 工具脚本目录
嗯,这里要注意:不同版本的PDK,目录名可能略有差异。比如有的叫documents而不是doc,但核心内容是一样的。
doc目录下的README或release_notes文件。那里通常会写明版本号、支持的EDA工具、已知问题等。我曾经因为没看这个,用了一个不兼容的版本,折腾了两天。
1.2 库文件(lib)详解
库文件,这是PDK里最核心的部分之一。它包含了所有标准单元、IO单元、存储器等数字库的信息。
在lib目录下,你通常会看到:
- 数字标准单元库:比如
smic18_sc,里面是各种逻辑门、触发器等 - IO库:比如
smic18_io,包含输入输出缓冲器 - 存储器库:比如
smic18_sram,SRAM等存储器宏单元
每个库文件通常有多个视图:
| 视图类型 | 文件后缀 | 用途 |
|---|---|---|
| 逻辑视图 | .lib | 综合用,包含时序、功耗信息 |
| 物理视图 | .lef / .gds | 布局布线用,包含版图信息 |
| 仿真视图 | .v / .vhdl | 功能仿真用,Verilog/VHDL模型 |
1.3 技术文件(tech)详解
技术文件,说白了就是告诉EDA工具:你这个工艺有哪些层、每层的颜色、最小线宽、间距规则等等。
在tech目录下,常见的文件有:
- .tf文件:技术文件,用于Virtuoso等版图工具
- .techlef文件:技术LEF,用于数字后端工具
- .map文件:层映射文件,用于GDS导入导出
举个例子,一个典型的.tf文件片段:
layer {
name "M1"
layerNumber 31
datatype 0
color "blue"
pattern "solid"
minWidth 0.23
minSpacing 0.23
}
你看,这里定义了金属层M1的编号、颜色、最小宽度和间距。我刚开始学的时候,总觉得这些参数是固定的。后来有一次做项目,发现M1的最小间距其实是0.23μm,但我的版图里画了0.2μm,结果DRC报错。嗯,这就是不看技术文件的后果。
1.4 规则文件(rules)详解
规则文件,包括DRC(设计规则检查)和LVS(版图与原理图一致性检查)规则。
在rules目录下,你通常能找到:
- DRC规则文件:比如
smic18_drc.cal(Calibre格式)或smic18_drc.drc(Assura格式) - LVS规则文件:比如
smic18_lvs.cal或smic18_lvs.lvs - 天线规则文件:用于检查天线效应
重点: 规则文件是晶圆厂最核心的技术资料之一。它包含了工艺的所有设计约束。我建议你每次流片前,至少跑三遍DRC:第一遍快速检查,第二遍仔细检查,第三遍用不同的规则文件交叉验证。
为什么会这样?因为有时候规则文件本身也有bug。我记得有一次,我用SMIC的DRC规则文件,发现有个规则总是报假错。后来联系FAE,才知道是规则文件版本问题,更新后就正常了。
1.5 模型文件(models)详解
模型文件,这是仿真用的核心文件。它描述了MOS管、电阻、电容等器件的电学特性。
在models目录下,常见的文件有:
- SPICE模型:
.lib或.model文件,用于HSPICE、Spectre等仿真器 - Verilog-A模型:
.va文件,用于行为级建模 - 统计模型:
.stat文件,用于蒙特卡洛分析
一个典型的MOS管模型定义:
.MODEL nmos_1p8 NMOS (
+ LEVEL = 49
+ VTH0 = 0.45
+ U0 = 350
+ TOX = 4.0E-9
+ ...)
这里LEVEL=49表示使用BSIM4模型。你想想看,如果没有这些模型参数,你拿什么去仿真?
1.6 各目录之间的关系
说了这么多,你可能觉得这些目录是孤立的。其实不是,它们之间是相互关联的。
举个例子,你做一个反相器的版图:
- 从库文件里调用标准单元
- 用技术文件定义版图层
- 画完版图后,用规则文件做DRC/LVS检查
- 提取寄生参数后,用模型文件做后仿真
你看,一个完整的流程,需要用到PDK里几乎所有的目录。所以,理解目录结构,不是让你背下来,而是让你知道:遇到问题该去哪个目录找答案。
好了,这一章就讲到这里。下一章我们聊聊如何搭建PDK环境,包括环境变量设置、库文件安装等实操内容。到时候我会手把手带你走一遍。