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硅光工艺的堆叠与层映射关系示意:
三、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实战的核心是“三对齐”:层映射对齐、器件参数对齐、模型版本对齐。把这三件事做扎实,MPW流片的首次成功率会显著提升。