3. 硅光PDK与工艺设计套件实战

硅光MPW流片能否一次成功,很大程度上取决于设计者是否真正“读懂”了代工厂提供的PDK(Process Design Kit,工艺设计套件)。PDK不是一堆文件的简单打包,而是把某一代硅光工艺的物理规则、器件行为、版图层级和验证逻辑固化下来的一整套设计契约。本节围绕PDK目录结构、器件库调用、层定义与映射、工艺堆叠、DRC规则文件、仿真模型与实测数据关联、版本管理七个方面展开,重点讲清楚“文件在哪里、怎么用、用错会怎样”。

一、PDK目录结构与器件库调用

主流硅光PDK(如IMEC、AMF、CompoundTek、国内180 nm/90 nm硅光平台)的目录组织大体一致,典型结构如下:

SiPh_PDK_v2.4/
├── tech/                 # 工艺技术文件
│   ├── tech.lib          # 工艺库入口(Cadence/华大九天)
│   ├── layers.map        # GDS层号 ↔ 工艺层名映射
│   └── stack.xml         # 工艺堆叠定义
├── devices/              # 器件库
│   ├── passive/          # 波导、MMI、光栅耦合器
│   ├── active/           # 调制器、探测器、加热器
│   └── pcells/           # 参数化单元源码
├── drc/                  # 设计规则检查
│   ├── drc_runset.rs      # Calibre/ICV规则集
│   └── drc_manual.pdf
├── lvs/                  # 版图与原理图一致性
├── models/               # 仿真模型
│   ├── compact/          # 紧凑模型(SPICE/Verilog-A)
│   └── optical/          # 光学S参数、传输矩阵
├── examples/             # 参考设计
└── release_notes.txt     # 版本说明

器件库调用不是“拖一个波导符号”那么简单。以参数化单元(PCell)为例,调用一个条形波导时,需要同时确定:芯层宽度W、刻蚀深度(浅刻/深刻)、包层厚度、侧壁角度、掺杂类型。这些参数会直接改变有效折射率neff和传播损耗。例如在220 nm SOI平台上,500 nm宽、70 nm浅刻的条形波导,TE基模neff约2.44,单模条件要求W<600 nm;若误用450 nm宽,虽然仍是单模,但耦合到光纤时的模场失配会明显增大。因此调用器件时必须核对PDK手册给出的“推荐工作点”,而不是随意改参数。

二、层定义与映射、工艺堆叠

硅光版图涉及几十个工艺层:波导芯层、浅刻层、深刻层、N/P掺杂、硅化物阻挡、金属1/2、通孔、钝化开窗等。层定义与映射的核心是保证“设计端看到的层名”和“代工厂GDS里的层号”严格对应。常见错误是把设计中的“WG_CORE”映射到错误的GDS层号,导致流片后波导消失或与掺杂层短路。

工艺堆叠(Process Stack)描述的是从衬底到顶层金属的纵向结构,包括各层材料、厚度、折射率和允许的刻蚀组合。它决定了光学模式分布、金属对光的吸收损耗以及热调制的效率。下图给出一个典型220 nm SOI硅光工艺的堆叠与层映射关系示意:

220 nm SOI 硅光工艺堆叠与层映射示意 纵向工艺堆叠(从下到上) Si 衬底(Handle Wafer) 埋氧 BOX 2 μm(SiO₂) 硅芯层 220 nm(Si) 浅刻 70 nm(Slab) N⁺/P⁺ 掺杂区 上包层 SiO₂ 1.5 μm 金属层 M1 / M2(Al) 钝化层 + 开窗 GDS 层号 ↔ 工艺层名映射 GDS层号 工艺层名 1 / 0 WG_CORE(硅芯) 2 / 0 WG_SLAB(浅刻) 3 / 0 DEEP_ETCH(深刻) 10 / 0 N_DOPING(N掺杂) 11 / 0 P_DOPING(P掺杂) 20 / 0 CONTACT(接触孔) 30 / 0 METAL1(金属1) 31 / 0 VIA1(通孔1) 40 / 0 METAL2(金属2) 50 / 0 PASSIVATION(钝化) 51 / 0 PAD_OPEN(焊盘开窗) ⚠ 层映射错误是MPW流片最高频的致命错误之一:设计层名与GDS层号必须逐条核对,流片前用代工厂提供的layer.map做一次自动比对。

三、DRC规则文件与常见违规

DRC(Design Rule Check)规则文件是PDK中“最不能改”的部分。硅光DRC与CMOS DRC不同,除了最小线宽、最小间距、最小面积等几何规则外,还包含大量光学专用规则:波导最小弯曲半径、波导间距(避免定向耦合)、光栅周期与占空比、掺杂区与波导芯层的最小套刻间距、金属与波导的最小距离(避免吸收损耗)等。

以某220 nm硅光平台为例,典型规则包括:单模条形波导最小宽度400 nm、最大宽度600 nm;浅刻波导最小弯曲半径10 μm;深刻波导最小弯曲半径5 μm;两条平行波导最小间距1.5 μm(避免倏逝耦合);金属边缘距波导芯层边缘≥3 μm。这些数值不是“建议值”,而是工艺能力边界,违反后轻则损耗剧增,重则器件完全失效。

实际跑DRC时,通常用Calibre或ICV,命令形如:

calibre -drc -hier -turbo 8 drc_runset.rs
# 输出:drc_results.db / drc_summary.rpt
# 重点看:Total Errors、Rule ID、坐标位置

拿到DRC报告后,不要只看“错误总数”,要按Rule ID分类统计。如果某条规则反复出现在同一区域,往往是PCell参数设置错误或阵列复制时未更新参数,而不是单点手误。

四、仿真模型与实测数据关联

PDK中的紧凑模型(Compact Model)是把器件物理行为抽象成可快速仿真的数学表达。以马赫-曾德尔调制器(MZM)为例,模型通常包含:波导损耗(dB/cm)、相移效率VπL(V·cm)、调制带宽、插入损耗、消光比等参数。这些参数来自代工厂的实测统计,而不是理论推导。

设计者需要做的是“模型与实测对齐”。例如PDK手册给出某MZM在2 V驱动下VπL=1.2 V·cm,而你的仿真结果显示需要3 V才能达到π相移,说明模型调用时可能把调制区长度设错,或忽略了掺杂浓度对相移效率的影响。此时应回到PDK的models/compact目录,检查所用模型的版本和适用条件(如是否包含载流子吸收引起的额外损耗)。

更严谨的做法是:在流片前用PDK提供的S参数或传输矩阵做系统级仿真,流片后用实测数据反标模型参数,形成“设计—流片—实测—修正”的闭环。MPW由于是多项目共享掩模,单次流片成本虽低,但周期长,因此第一次设计就应尽量让仿真与PDK模型一致,而不是等实测后再补救。

五、PDK版本管理

PDK会随工艺迭代而更新:层号可能调整、DRC规则可能收紧、器件模型可能修正。MPW流片最忌讳“设计用旧版PDK、流片用新版PDK”。建议在项目目录中固定PDK版本,并在release_notes.txt中记录每次变更。例如:

# PDK版本锁定示例(项目根目录)
PDK_VERSION = SiPh_PDK_v2.4.1
PDK_PATH    = /pdk/SiPh_PDK_v2.4.1
# 禁止使用 v2.5 或未发布版本

如果代工厂在流片前发布新版PDK,必须重新跑DRC和LVS,并核对层映射表是否变化。版本管理不是行政流程,而是避免“设计通过、流片失败”的技术防线。

实战建议:拿到PDK后,先跑一遍examples目录中的参考设计,确认DRC、LVS、仿真流程全部通过,再开始自己的设计。这一步通常能提前暴露80%的环境配置问题。

总结来看,硅光PDK实战的核心是“三对齐”:层映射对齐、器件参数对齐、模型版本对齐。把这三件事做扎实,MPW流片的首次成功率会显著提升。