3. 版图设计环境与工具链搭建

硅光PIC版图与纯电子IC版图最大的区别在于:光波导、调制器、探测器等器件对几何尺寸、层间套刻、弯曲半径和相位关系极其敏感,因此工具链不仅要能画版图,还要能承载PDK、工艺层映射、DRC/LVS规则以及团队协作。本节围绕“选型—配置—PDK导入—层映射—版本管理”这条主线,给出可落地的搭建方法。

一、主流版图工具选型

硅光领域常用的三类工具各有定位,选型时应先明确团队规模、PDK来源和交付格式,而不是只看界面是否顺手。

工具核心优势典型适用场景主要限制
KLayout免费开源、脚本能力强(Python/Ruby)、GDS/OASIS处理快、支持DRC/LVS扩展硅光初创团队、学术研究、PDK二次开发、批量版图检查原理图驱动设计(SDL)生态弱于Virtuoso,复杂模拟混合流程需自建
Virtuoso与Cadence模拟/射频流程深度集成,支持SDL、ADE、Assura/PVS验证数模混合硅光芯片、需要与高速电路协同设计的项目License成本高,学习曲线陡,PDK依赖代工厂支持
L-Edit轻量、易上手、Tanner流程完整,适合教学和小规模器件库教学实验、简单器件版图、MEMS/光子器件入门大规模硅光PIC和先进PDK支持有限,脚本生态较弱

对多数硅光PIC团队,推荐以KLayout为主力版图工具,用Python脚本实现参数化单元(PCell)和自动布线;若项目必须与CMOS驱动电路同平台交付,再引入Virtuoso做混合流程。L-Edit可作为教学或快速验证的补充。

二、KLayout环境配置要点

KLayout安装后,第一件事是建立统一的工艺层定义文件(.lyp)和项目目录结构。.lyp文件把GDS中的layer/datatype映射为可读名称和颜色,例如硅光中常见的:

# 示例:硅光PDK层映射片段(layer/datatype -> 名称/颜色)
1/0    WG_SI        波导硅芯层
2/0    SLAB_SI      平板硅层
3/0    OXIDE_OPEN   氧化层开窗
4/0    METAL1       第一层金属
5/0    VIA1         通孔
6/0    GE           锗探测器层
7/0    NIMPLANT     N型注入
8/0    PIMPLANT     P型注入
10/0   TEXT         标签层

配置时需注意:不同代工厂的层号可能完全不同,不能直接套用别家PDK的.lyp。正确做法是从PDK包中提取官方层映射表,逐条核对后再导入KLayout。同时建议开启“Grid”为0.001 μm,硅光波导宽度常在0.4~0.5 μm量级,网格过粗会导致吸附误差。

三、PDK导入与工艺层映射

硅光PDK通常包含:器件库(GDS/OASIS)、层映射文件、DRC规则、LVS规则、仿真模型和文档。导入流程如下:

  1. 解压PDK包,确认目录中有 tech/、devices/、drc/、lvs/ 等子目录。
  2. 导入层映射:在KLayout中打开 File → Setup → Layers,加载PDK提供的.lyp文件,检查每层名称、颜色和可见性。
  3. 注册器件库:将PDK的GDS库路径加入KLayout的库管理,或通过Python脚本批量读取PCell。
  4. 加载DRC/LVS规则:KLayout使用Ruby或Python DRC脚本,需确认规则文件中的层号与.lyp一致。
  5. 验证:新建一个测试版图,放置一个波导和弯曲单元,运行DRC,确认无“unknown layer”报错。
工艺层映射是硅光版图最容易出错的环节。建议在项目启动时做一次“层映射对照表”,把PDK层号、KLayout层名、GDS layer/datatype、用途四列写清楚,团队共用。

四、版本管理与团队协作环境

版图文件是二进制GDS/OASIS,直接用Git管理会产生巨大diff且无法合并。推荐采用“脚本+数据分离”策略:

  • 代码入库:PCell生成脚本、DRC/LVS规则、层映射文件、布线脚本全部用Git管理,这些是文本文件,可diff、可合并。
  • 版图数据归档:GDS/OASIS按版本号存入共享存储或制品库(如Artifactory),每次流片前打tag,记录对应的脚本commit hash。
  • 目录规范:建议 project/tech/(PDK与层映射)、project/scripts/(PCell与DRC)、project/layout/(GDS输出)、project/docs/(流片记录)。
  • 协作工具:KLayout支持多人同时查看同一GDS,但编辑需约定“谁负责哪个cell”。可用KLayout的cell锁定或简单的编辑分区表避免冲突。

下面用一张关系图概括本节工具链的核心结构:PDK如何经过层映射进入版图工具,脚本与版本管理如何支撑团队协作。

硅光 PDK 包 器件 GDS / PCell 层映射 .lyp DRC / LVS 规则 工艺层映射 layer/datatype → 层名 / 颜色 → 用途标注 版图工具层 KLayout(主力) / Virtuoso / L-Edit PCell 调用 · 手动/自动布线 DRC / LVS 验证 脚本与版本管理 PCell 生成脚本(Python) DRC / LVS 规则文件 层映射 .lyp Git 仓库 · commit / tag 版图数据归档 GDS / OASIS 输出 按版本号存储 流片前打 tag 关联脚本 commit hash 团队协作 Cell 分区负责 共享存储 / 制品库 编辑锁定约定 流片记录文档 关键原则: ① 层映射必须与代工厂PDK逐条核对,不可跨PDK套用;② 脚本与GDS分离管理,Git管脚本、制品库管数据; ③ 每次流片前打tag并记录commit hash,确保版图可追溯、可复现。

五、实操检查清单

环境搭建完成后,建议用以下清单做一次自检,确认工具链可用:

检查项判断标准常见问题
KLayout版本≥0.28,支持Python DRC旧版无Python API
.lyp层映射每层名称、颜色、可见性正确层号与PDK不一致
PCell调用能放置波导、弯曲、MMI等单元库路径未注册
DRC运行测试版图无unknown layer报错规则层号与.lyp不匹配
Git仓库脚本、规则、.lyp已入库GDS误入Git导致仓库膨胀
归档目录GDS按版本号存放,tag可查版本混乱,无法回溯
不要用Git直接管理GDS/OASIS二进制文件。一次流片版图可能几十到几百MB,频繁commit会让仓库迅速膨胀且无法有效合并。正确做法是:脚本和规则入Git,GDS输出到共享存储或制品库,用tag和commit hash建立关联。