3. 版图设计环境与工艺文件准备

超导量子芯片的版图设计并不是打开绘图软件直接画几何图形,而是先搭建一个“懂工艺”的设计环境。这个环境由三部分共同构成:版图编辑工具负责几何图形的绘制与编辑,工艺层定义文件告诉工具每一层 GDSII 图层号对应哪种物理材料与工艺步骤,设计规则检查文件则把代工厂的工艺约束转化为可自动执行的几何判据。三者缺一,版图要么画得“好看但不可制造”,要么在交付前才发现大量规则违例。本节以 KLayout 为主线,说明如何从零完成这套环境的配置,并给出可复用的检查方法。

一、工具选型与界面认知

超导量子芯片版图的主流工具分为两类。商业工具以 Cadence Virtuoso 为代表,优势在于与原理图、参数化单元和仿真流程深度集成,适合大规模团队协作;开源工具以 KLayout 为代表,免费、跨平台、脚本能力强,对 GDSII/OASIS 读写稳定,且内置 DRC 引擎与 Python/Ruby 宏接口,非常适合教学、中小规模芯片和规则验证。本节以 KLayout 为例展开,其操作逻辑可迁移到其他 GDSII 编辑器。

KLayout 主界面由几个关键区域组成:左侧是图层控制面板(Layers),显示当前版图文件包含的所有图层及其可见性、填充样式;中部是视图区,支持多视图并行对比;右侧是单元树(Cells),展示层次化单元结构与引用关系;底部是宏编辑器与日志窗口,用于运行 DRC 脚本和查看报错。初学者最容易忽略的是图层控制面板中的“图层属性”设置——它只影响显示,不影响数据,但合理的配色能让后续读图效率大幅提升。

二、导入工艺层定义文件(Layer Map)

GDSII 文件本身只记录图层号(layer)与数据类型(datatype),例如“layer 1 datatype 0”,并不携带任何物理含义。同一个图层号在不同工艺中可能代表铌薄膜、铝结或空气桥。Layer Map 的作用就是建立“图层号 → 工艺名称 → 显示属性”的映射。KLayout 支持通过 .lyp 文件或 .klayout_layers 配置导入映射。

一个典型的超导量子芯片 Layer Map 片段如下(示例参数,需按实际工艺文件替换):

<layer-mapping>
  <layer source="1/0"   name="NB_BASE"     fill="#3B82F6" frame="#1E40AF"/>
  <layer source="2/0"   name="AL_JUNCTION" fill="#F59E0B" frame="#B45309"/>
  <layer source="3/0"   name="AIRBRIDGE"   fill="#10B981" frame="#047857"/>
  <layer source="4/0"   name="GROUND_PLANE" fill="#8B5CF6" frame="#6D28D9"/>
  <layer source="10/0"  name="TEXT_LABEL"  fill="#EF4444" frame="#B91C1C"/>
</layer-mapping>

导入后应在图层控制面板逐项核对:图层号是否与工艺文件一致、名称是否可读、填充色是否区分明显。一个实用技巧是把金属层设为半透明填充、结层设为高对比实心,这样在叠加查看时能同时看清底层走线与上层结区。若发现某图层在视图中“消失”,优先检查其 datatype 是否被映射遗漏,而不是怀疑图形未绘制。

三、配置 DRC 规则文件

DRC 文件把工艺约束写成可执行的几何判据。超导量子芯片常见的规则包括:最小线宽、最小间距、结区与布线的最小包围、空气桥与下方金属的套刻余量、以及芯片边缘的禁布区宽度。KLayout 的 DRC 脚本基于 Ruby 或 Python,核心是“选择图层 → 施加规则 → 输出违例”。

以下为一段简化的 DRC 示例,用于检查铌基线与铝结之间的最小间距(示例阈值 2 μm,实际值以工艺文件为准):

source = $input
nb   = source.layout.layer(1, 0)
jj   = source.layout.layer(2, 0)

# 结区与基线金属的最小间距
jj_to_nb = jj.separation(nb, 2.0)
jj_to_nb.output("JJ_to_NB spacing < 2.0um")

# 基线金属最小线宽
nb.width(1.5).output("NB width < 1.5um")

运行后,日志窗口会列出每条规则的违例数量,视图区以高亮标记违例位置。判断环境是否配置成功的标准不是“零违例”,而是“规则能被正确触发”:可以故意画一个间距明显不足的测试图形,确认 DRC 能报出对应条目,再删除测试图形。这一步能有效排除图层映射错误导致的“假通过”。

四、加载参数化单元(PCell)库

超导量子芯片中存在大量重复结构:传输线谐振器、耦合电容、约瑟夫森结、空气桥跨接、共面波导拐角等。把这些结构做成参数化单元,可以在修改线宽、长度、耦合间距时自动重建几何,避免手工重画带来的不一致。KLayout 的 PCell 可用 Ruby/Python 编写,注册到库中后出现在“实例化单元”对话框里。

一个谐振器 PCell 的关键参数通常包括:中心频率对应的总长度、共面波导中心线宽、间隙宽度、耦合指长度与间距、端点过渡形式。加载 PCell 库后,应先在空白版图中实例化一个单元,修改两三个参数,观察几何是否按预期变化,再将其纳入正式设计。若 PCell 依赖特定图层号,务必确认其内部图层引用与 Layer Map 一致,否则会出现“单元能放置但图层错位”的问题。

超导量子芯片版图设计环境配置关系图 工艺输入文件 Layer Map 图层号 → 工艺名称 .lyp / 映射表 DRC 规则文件 最小线宽/间距/包围 Ruby / Python 脚本 PCell 库 谐振器/结/空气桥 参数化几何生成 GDSII 版图数据 KLayout 设计环境 图层控制面板 可见性 / 填充 / 叠加显示 视图区 + 单元树 层次化编辑 / 引用关系 DRC 引擎 规则执行 / 违例高亮 PCell 实例化 参数修改 / 自动重建 环境自检 测试图形触发规则 交付与判断 可制造版图 图层语义正确 规则违例可控 DRC 报告 违例条目 + 坐标 逐条定位修正 PCell 一致性 参数变更可追溯 图层引用无错位 常见失败:假通过

五、环境自检与常见问题

配置完成后,建议按以下顺序做一次自检,而不是直接开始正式设计。第一步,新建空白版图,导入 Layer Map,确认图层列表数量与工艺文件条目数一致。第二步,在每一层各画一个矩形,切换可见性,确认没有图层“隐身”。第三步,运行 DRC 脚本,观察日志是否正常输出每条规则名称;若某条规则完全没有输出,通常是图层选择写错或脚本未加载。第四步,实例化一个 PCell,修改参数并观察几何重建,确认其内部图层与映射一致。

实践中常见的三类问题值得提前警惕。其一是图层号与 datatype 混淆:工艺文件写“1/0”,脚本里只写了 layer 1 而忽略 datatype,导致选中的图形范围与预期不符。其二是DRC 阈值单位不一致:KLayout 内部以数据库单位(通常 1 nm)计算,脚本中写 2.0 表示 2 μm 还是 2 个数据库单位,取决于接口约定,必须在脚本开头明确并统一。其三是PCell 缓存未刷新:修改 PCell 源码后,已放置的实例可能仍显示旧几何,需要重新加载库或重建实例。把这三类问题纳入自检清单,能显著减少后续返工。

建议把 Layer Map、DRC 脚本、PCell 库三者放在同一工程目录下,并用版本号命名(如 layer_map_v1.2.lyp、drc_v1.2.rb)。工艺文件更新时,三者应同步升级,避免出现“图层映射已更新但 DRC 仍按旧图层号检查”的隐性错误。

完成上述配置后,设计环境才真正具备“可画、可查、可复用”的能力:Layer Map 让图形有物理语义,DRC 让几何有工艺边界,PCell 让重复结构有统一来源。后续的器件绘制与规则优化,都建立在这一环境之上。