3. 工艺设计套件与规则文件解析
在Calibre流片签核交付工程中,PDK(Process Design Kit,工艺设计套件)是连接晶圆厂工艺能力与设计公司版图实现的唯一契约。它并不是一个单一文件,而是一套经过晶圆厂验证、版本受控、与特定工艺节点绑定的文件集合。理解PDK的组成结构,以及DRC、LVS、ERC规则文件的组织方式,是判断签核结果是否可信、能否复现的前提。
一、PDK的组成:不只是规则文件
一个完整的PDK通常包含以下几类内容,它们各自承担不同职责,缺一不可:
- 工艺层定义文件:如Calibre的
.layermap或layer.map,定义GDSII层号/数据类型与工艺层名称(如poly、active、via1)的映射关系。这是所有规则文件能正确识别版图图形的基础。 - 器件模型与符号:SPICE模型文件(
.lib/.scs)、器件符号库、CDF参数定义,用于原理图仿真与LVS器件识别。 - 规则文件集:DRC、LVS、ERC、天线检查(ANT)、密度检查(DFM)等Calibre规则文件,通常以
.cal或.rule为扩展名。 - 技术文件与显示资源:
.tf(Technology File)、.drf(Display Resource),供版图工具正确显示层次与颜色。 - Pcell与参数化单元:由晶圆厂提供的参数化版图单元,保证器件几何与工艺规则一致。
- 文档与版本说明:工艺规范、规则变更记录(Release Note)、已知问题列表。
在签核交付中,最容易被忽视的是版本一致性:PDK版本、Calibre版本、规则文件版本三者必须匹配。晶圆厂通常会在规则文件头部用注释声明适用版本,例如# PDK: 55nm_LL, Rev 1.8, Calibre 2023.4。若版本错配,可能出现“规则通过但流片失败”的隐性风险。
二、DRC规则文件结构解析
Calibre DRC规则文件本质是一段可执行的规则描述程序,其典型结构可分为五个区段:
// 1. 版本与头信息
# DRC RULE FILE FOR 55nm_LL
# Rev 1.8 2024-03-15
PRECISION 1000
LAYOUT PATH "top.gds"
LAYOUT PRIMARY "top"
// 2. 层定义
LAYER poly 1
LAYER active 2
LAYER via1 10
// 3. 规则主体
// 最小宽度
WIDTH poly < 0.06 ABUT < 90 REGION
// 最小间距
SPACE poly poly < 0.07 ABUT < 90 REGION
// 包围
ENCLOSURE via1 poly > 0.03
// 4. 输出控制
DRC RESULTS DATABASE "drc.results" ASCII
DRC MAXIMUM RESULTS 1000
// 5. 结束
END
其中PRECISION 1000表示数据库单位与用户单位的换算精度,直接影响尺寸判断的舍入行为;LAYER语句将GDS层号绑定到规则中使用的层名;WIDTH、SPACE、ENCLOSURE是三类最基本的几何检查算子。规则主体通常按“层—检查类型—条件—输出”组织,同一层可能有多条规则,执行顺序会影响结果数据库中的记录顺序,但不影响最终违例集合。
三、LVS与ERC规则文件结构
LVS规则文件的目标是从版图提取器件与连接关系,并与原理图网表比对。其结构比DRC更复杂,核心区段包括:
- 层定义与器件识别:通过
LAYER和DEVICE语句定义MOS、电阻、电容等器件的识别条件,例如DEVICE MOS (poly active) (poly) ...。 - 连接性提取:
CONNECT语句声明哪些层之间通过接触/通孔形成电连接,如CONNECT via1 poly active。 - 端口与文本:
PORT、TEXT语句定义版图端口与标签的识别方式。 - 网表输出与比对:
LVS SPICE、LVS COMPARE控制输出格式与比对策略。
ERC(Electrical Rule Check)通常与LVS共用同一套提取结果,检查的是电气合理性而非几何尺寸,例如:浮空栅(floating gate)、电源/地短路、衬底未连接、多驱动冲突等。ERC规则往往以ERC关键字或独立规则段出现,其判断依赖LVS提取出的网表拓扑,因此ERC必须在LVS通过后才有意义。
四、层次化规则与include机制
先进工艺的规则文件动辄数万行,直接维护单文件不可行。Calibre通过INCLUDE机制实现模块化:
// 主规则文件 top_drc.cal
INCLUDE "layers.cal"
INCLUDE "drc_core.cal"
INCLUDE "drc_density.cal"
INCLUDE "drc_antenna.cal"
INCLUDE在解析时将被包含文件的内容原地展开,因此被包含文件中的层定义、变量、规则对后续内容可见。这带来两个工程要点:一是包含顺序即作用域顺序,层定义必须在使用之前;二是变量覆盖,若多个文件定义同名变量,后包含者生效,容易造成隐性冲突。
层次化规则还体现在版图层次的处理上。Calibre默认对版图进行层次化检查,利用单元(cell)的重复引用减少计算量。规则中可用HIERARCHY、FLATTEN等语句控制展开策略。对于跨层次的结构(如跨cell的间距),需要显式声明层次穿透条件,否则可能漏检。签核时若发现“单cell通过、顶层失败”,往往就是层次化规则与展开策略不匹配所致。
五、签核交付中的检查要点
基于上述结构,在Calibre签核交付时建议按以下顺序确认:
- 版本核对:检查PDK Release Note中声明的Calibre最低版本、规则文件Rev号,与本地环境比对。
- 层映射验证:用
calibre -drc -hier或规则文件中的LAYOUT段确认GDS层号与规则层名一致,避免“层错位”导致假通过。 - INCLUDE展开检查:用
calibre -drc -precompile或查看展开后的中间文件,确认所有被包含文件均存在且顺序正确。 - 层次化策略确认:对跨cell规则,确认是否使用了
HIERARCHY穿透;必要时对关键规则做FLATTEN对比,观察违例数量是否变化。 - ERC依赖确认:确保LVS先通过,再运行ERC;若LVS未通过,ERC结果不可作为签核依据。
SPACE poly poly未声明跨层次穿透,而顶层两个相邻cell的poly恰好跨越边界。在规则中加入HIERARCHY穿透条件后,违例被正确捕获。这说明层次化规则与展开策略必须与版图实际层次结构匹配。PDK与规则文件的解析能力,直接决定了签核结果的可信度。把PDK当作“黑盒”直接跑规则,可能在版本错配、层映射错误或层次穿透缺失时得到虚假的“干净”结果。只有理解其组成、结构与include机制,才能在交付前做出正确判断。