3、PDK架构:PDK的目录结构、文件类型及设计流程中的角色
硅光芯片PDK(Process Design Kit)是连接晶圆代工厂工艺能力与芯片设计者设计意图的桥梁。一个完整的PDK不仅仅是若干文件的简单堆叠,而是一套经过严格验证、具有明确层级关系和调用契约的工程化交付物。理解PDK的目录结构、各类文件的作用以及它们在设计流程中的流转位置,是进行高效版图设计与验证的前提。本章将系统拆解PDK的物理组成与逻辑架构,帮助读者建立从文件到流程的完整认知。
3.1 PDK目录结构:从根目录到工艺文件的逻辑分层
一个规范的硅光PDK通常以pdk_root为顶层目录,内部按照功能域划分为若干子目录。这种组织方式并非随意为之,而是为了适配EDA工具链的搜索路径机制。以业界常见的Silvaco、Synopsys或Lumerical环境为例,PDK根目录下至少包含以下核心子目录:cal/(参数化单元与回调)、layermap/(层映射与工艺文件)、gds/(标准单元版图)、lib/(仿真模型与参数)、doc/(设计规则文档)以及scripts/(自动化脚本)。
在cal/目录中,存放的是Pcell(Parameterized Cell)的源代码或编译后的二进制文件。对于硅光工艺,Pcell通常包含波导、MMI(多模干涉仪)、SSC(模斑转换器)、微环谐振器等无源器件,以及调制器、探测器等有源器件的版图生成逻辑。这些Pcell通过Skill、Python或C++编写,并注册到EDA工具的菜单中。当设计者在版图编辑器中调用一个波导Pcell并设置宽度、长度、包层厚度等参数时,工具会实时调用这些回调函数生成对应的多边形和层次。
layermap/目录是硅光PDK中技术含量最高的部分之一。它包含.layermap文件(定义GDS层号与工艺层的映射关系)、.tf文件(Technology File,定义显示属性、线宽、填充样式)以及.drc规则文件(用于物理验证)。硅光工艺的特殊性在于,除了传统的CMOS金属层和介质层,还包含硅波导层(Si)、氮化硅层(SiN)、锗探测器层(Ge)等光学专用层。这些层在GDS中的编号必须与晶圆厂的实际制造层次严格对应,任何错位都会导致流片失败。
gds/目录通常存放经过验证的标准单元GDS文件,例如固定的耦合光栅、光纤阵列耦合器、测试结构等。这些单元不需要参数化,直接以固定版图形式提供。而lib/目录则包含紧凑模型库(如.scs文件用于Spectre仿真,.l文件用于LVS提取)和光学仿真模型(如.dat或.mat文件用于FDTD或模式求解)。
cal/和layermap/,仿真工具只读取lib/,物理验证工具只读取layermap/中的规则文件。这种隔离设计使得PDK可以独立升级某一模块而不影响其他流程。
3.2 关键文件类型详解:.lib、.gds、.layermap、.tf的角色与格式
理解每种文件类型的内部格式和调用场景,是使用PDK进行设计的基础。下表总结了硅光PDK中最关键的四种文件类型及其在设计流程中的角色:
| 文件类型 | 扩展名 | 核心内容 | 主要消费工具 | 设计流程角色 |
|---|---|---|---|---|
| 模型库 | .lib / .scs / .l | SPICE参数、S参数、噪声模型、温度特性 | Spectre、HSPICE、Lumerical INTERCONNECT | 电路仿真、链路预算、蒙特卡洛分析 |
| 版图数据 | .gds / .gdsii | 多边形、路径、文本标签、层次结构 | Virtuoso、KLayout、Calibre | 版图绘制、IP合并、最终tape-out |
| 层映射 | .layermap | GDS层号↔工艺层名、数据类型映射 | Calibre、Assura、PVS | DRC/LVS运行时的层识别与转换 |
| 工艺文件 | .tf | 显示颜色、线型、填充图案、格点设置 | Virtuoso、版图编辑器 | 版图可视化、编辑约束、层次显示 |
以.layermap文件为例,其典型内容片段如下:
; GDS层号 数据类型 工艺层名 用途
layer 65 0 si_wg_core ; 硅波导芯层
layer 66 0 si_wg_clad ; 硅波导包层
layer 67 0 sin_wg ; 氮化硅波导
layer 68 0 ge_detector ; 锗探测器区
layer 81 0 metal1 ; 金属互连层1
layer 82 0 via1 ; 通孔1
layer 91 0 pad_open ; 焊盘开窗
这段映射定义了GDS中数字65到91分别对应哪些工艺层。在DRC验证时,Calibre工具会读取该文件,将版图中的GDS层号转换为规则文件中的层名,然后执行几何检查。如果设计者手动绘制了一个多边形并错误地放在了GDS层65上,而实际意图是氮化硅波导(67层),那么DRC会报出“层错误”或“意外层”的违规。
.tf文件则控制版图编辑器的显示属性。例如,硅波导层通常显示为蓝色实线,金属层显示为红色虚线,焊盘开窗显示为绿色点划线。这些视觉区分对于复杂硅光芯片的版图审查至关重要——设计者可以一眼识别出光波导路径和电互连路径,避免布线冲突。
.layermap文件往往比.tf文件更重要。因为.tf只影响显示,而.layermap直接影响物理验证的正确性。在导入第三方GDS或进行多项目晶圆(MPW)合封时,务必核对各PDK的.layermap是否兼容,否则会出现“DRC通过但流片后器件不工作”的严重问题。
3.3 设计流程中的角色:从原理图到流片的PDK调用链
PDK在硅光芯片设计流程中扮演着“数据中枢”的角色。一个典型的设计流程从原理图设计开始,到最终GDS交付结束,PDK文件在多个环节被反复调用。下图展示了PDK在完整流程中的位置与作用:
- 原理图设计阶段:设计者从PDK的
lib/目录中调用光器件模型(如微环调制器的紧凑模型),搭建链路原理图。此时PDK提供的是行为级或物理级仿真模型,用于初步验证链路预算。 - 版图设计阶段:设计者切换到版图编辑器,从
cal/目录中调用Pcell,设置参数生成版图。此时.tf文件确保各层以正确的颜色和线型显示,.layermap确保层号正确。 - 物理验证阶段:版图完成后,运行DRC(设计规则检查)和LVS(版图原理图一致性检查)。DRC工具读取
.layermap和.drc规则文件,检查最小线宽、间距、包层覆盖等几何约束。LVS工具则提取版图中的器件连接关系,与原理图网表进行比对。 - 后仿真与签核:LVS提取的寄生参数(如波导损耗、金属电阻电容)反馈回仿真工具,进行后仿真验证。最终GDS文件从版图编辑器导出,连同
.layermap一起交付给晶圆厂。
值得注意的是,硅光PDK与纯电子PDK的一个重要区别在于光学器件的版图-模型一致性。例如,一个微环谐振器的Pcell生成的版图,其波导宽度、弯曲半径、耦合间距等几何参数必须与lib/中的紧凑模型参数完全一致。如果设计者手动修改了Pcell生成的版图(例如拉伸了波导),那么后仿真结果将与实际流片性能产生偏差。因此,硅光PDK通常会在Pcell中内置“几何-模型绑定”机制,禁止或警告用户对关键光学尺寸进行非参数化修改。
3.4 实战案例:MPW项目中PDK文件冲突的排查与解决
在某次多项目晶圆(MPW)流片项目中,团队同时使用了两个不同版本的硅光PDK——一个来自晶圆厂A(用于有源器件),另一个来自第三方IP供应商B(用于无源波导库)。在版图合并阶段,DRC验证出现了大量“层号冲突”错误。具体现象是:IP供应商B的GDS中,氮化硅波导层使用了GDS层号67,而晶圆厂A的PDK中,67层被定义为“硅波导包层”。
分析过程:首先,我们检查了两个PDK的.layermap文件,发现层号定义确实存在重叠。进一步检查发现,IP供应商B的GDS在导出时没有附带其专属的.layermap文件,导致在Calibre验证时默认使用了晶圆厂A的映射规则。这属于典型的“层映射错位”问题。
解决步骤:
- 创建了一个独立的层映射文件
mpw_merge.layermap,将IP供应商B的GDS层号重新映射到晶圆厂A未占用的层号(例如将67→77,68→78)。 - 在Calibre的DRC运行脚本中,通过
LAYOUT PATH和LAYOUT MAP语句指定该合并映射文件。 - 对IP供应商B的GDS执行了层号转换操作,生成了一个新的GDS文件,确保其层号与晶圆厂A的PDK兼容。
- 重新运行DRC和LVS,确认所有层号冲突消除,且光学器件的完整性未受影响。
结果与复盘:该问题在两天内解决,避免了流片延期。复盘经验是:任何第三方GDS导入时,必须要求对方提供配套的.layermap文件,并在合并前进行层号兼容性预检。此外,建议在PDK根目录中维护一个CHANGELOG文件,记录每次PDK更新时层号的变化,以便快速定位类似问题。
3.5 常见误区与总结复盘
在PDK使用过程中,设计者常陷入以下误区,需要特别警惕:
- 误区一:将
.tf文件当作层定义文件。实际上,.tf只负责显示属性,不参与物理验证。修改.tf中的颜色不会改变GDS层号,也不会影响DRC结果。 - 误区二:忽略PDK版本更新日志。晶圆厂会定期更新PDK,可能调整Pcell默认参数、修改层号或更新模型。使用旧版本PDK设计的版图,在新版本环境下可能无法通过DRC。
- 误区三:手动编辑Pcell生成的版图。对于硅光器件,手动拉伸或移动多边形会破坏Pcell内部的参数绑定关系,导致LVS无法识别器件类型,甚至产生错误的仿真模型。
- 误区四:认为所有PDK文件都是文本可读的。部分Pcell以编译后的二进制形式(如
.so或.dll)发布,无法直接查看源码。此时应依赖PDK文档中的接口说明,而非尝试逆向工程。
总结复盘:PDK架构的核心在于“分层清晰、映射准确、调用规范”。设计者应建立以下工作习惯:第一,每次启动新项目时,记录PDK版本号和安装路径;第二,在版图设计前,先运行一个简单的测试结构(如一根直波导)走通DRC/LVS流程,确认PDK环境配置正确;第三,对于任何来自第三方的GDS或模型,强制要求附带完整的层映射和版本说明。只有将PDK视为一个严谨的工程系统而非零散文件的集合,才能确保硅光芯片设计的高效与可靠。