第4章 版图设计工具入门:KLayout安装、界面与基本操作
聊到硅光版图,很多人第一反应就是“用啥工具?”
说实话,商业EDA工具功能虽强,但贵得离谱。个人学习、小团队验证甚至早期流片,我推荐KLayout——免费、小巧、开源,还支持Python脚本。我最早接触它是在一个光栅耦合器的版图检查项目里,当时商业工具还没买到位,靠KLayout撑了三个月。嗯,今儿就把我踩过的坑和摸出来的经验都抖出来。
提示:KLayout 不是 EDA 替代品,它是版图浏览、几何验证、小量编辑的利器。做 DRC/LVS 验证时它配合底层脚本跑,效率极高。
4.1 KLayout 安装与环境配置
安装这一步我被人问过不下二十次:“为什么我装了打不开?”多数是没装对版本。
| 操作系统 | 推荐版本 | 安装方式 | 注意事项 |
|---|---|---|---|
| Windows 10/11 | 0.28.12 以上 | 下载 .msi 安装包 | 安装路径不要有中文 |
| Ubuntu 18.04+ | 0.28.12 以上 | sudo apt install klayout | 可能需要添加 PPA |
| macOS | 0.28.12 以上 | 下载 .dmg 安装包 | 启用安全权限 |
我个人习惯:下载安装包之前先去官方 GitHub 的 Releases 页面看两天内有没有新版本。有一次我装了个老版本,跑新版 PDK 的 GDS 文件直接崩了。后来发现是层号映射格式变了。
装完记得做一件事——设置环境变量。Linux 用户把 klayout 加到 PATH,Windows 用户勾选“Add to PATH”(要是没勾,手动加,不然后面调命令行会哭)。
# Linux 用户可以先验证
klayout -v
# 看到类似 KLayout 0.28.12 就对了
注意:安装目录、工作目录、PDK 路径都别带空格和中文。KLayout 底层用 Qt,对非 ASCII 编码处理不太好。我有个同事把 PDK 放在“桌面/工艺文件”里,结果库怎么都加载不了。改目录名就好了。
4.2 界面布局:别被密密麻麻的按钮吓到
第一次打开 KLayout 你会觉得——这也太素了吧?但实际上,它的布局很经典:菜单栏 + 工具栏 + 版图窗口 + 层管理面板 + 输入输出面板。我习惯先把不用的面板关掉,只留层管理(Layer Properties)和版图窗口。
- 菜单栏:文件、编辑、视图、工具……都在这里。常用的“Cell 层级切换”在 View 里。
- 层管理面板(左侧/右侧):显示当前打开文件的所有 GDS 层号、层名、颜色。双击可以改颜色和透明度。我当年把 M1 层改成亮蓝色,结果看了一小时眼睛都快瞎了。建议用低饱和度色。
- 版图窗口:主要操作区。鼠标滚轮缩放,按住中键平移。
- 输入输出面板(底部):显示报错信息、宏输出。做版图验证时,DRC 结果经常输出到这里。
还有个小细节:右键菜单超级好用。选中一个图形,右键有“属性”、“复制”、“删除”等。我做版图比对时常右键看 Cell 坐标,方便得很。
4.3 基本操作:从打开文件到跑第一个 DRC
我们直接走一个完整流程。我拿一个简单的马赫‑曾德尔干涉仪版图举例子。
4.3.1 打开 GDS 文件
File → Open,选你的 .gds 或 .oas 文件。KLayout 会自动解析拓扑,按层显示。有一次我打开一个 2 GB 的大版图,卡了半分钟。如果你也遇到大版图,先开一个小的查看器再加载大文件,或者先用 klayout -b 命令行转换成 .lz4 压缩格式。
# 命令行转换大文件
klayout -b -z your_layout.gds -o your_layout.lz4
4.3.2 查看与导航
版图窗口底部有个输入框,可以输入坐标或者 Cell 名称直接跳转。比如输入 0 0 回到原点,输入 Y_Coupler 跳到指定 Cell。这比满屏幕拖拽快多了。
- 放大:按住 Ctrl + 滚轮 或按 + 键
- 缩小:Ctrl + 滚轮向下 或按 - 键
- 全视图:按 F 键或 View → Fit
- 测量:按 M 键,然后依次点击起点、终点。距离和角度会显示在状态栏。
测量这个功能我几乎天天用。验证光波导宽度是否 0.5 µm,测一下就知道了。有一次我测一条弧形波导,发现半径标的是10 µm,但实际版图画出来是9.8 µm。幸亏发现得早,没送流片。
4.3.3 层控制与编辑
层管理面板里,每个层都有眼睛图标。点一下可以隐藏/显示该层。做光栅结构检查时,我会把所有金属层隐藏,只保留 Si 波导层,这样看得清楚。
编辑方面:KLayout 支持简单的图形绘制(矩形、多边形、路径、圆形)。选中工具栏里的绘图图标,在版图上画即可。不过说实话,我没用它画过完整版图——太慢了。一般只用来画测试标记或辅助框。
实用技巧:用 Ctrl+D 可以复制选中的图形。复制时按住 Shift 可以限制水平或垂直移动,做精确对齐。
4.3.4 运行 DRC 检查(入门版)
KLayout 自带了简单的 DRC 引擎。写一个 .lydrc 脚本,放在安装目录的“macros”文件夹里。然后在 Tools → DRC → Run 里选择脚本。
举个最简单的规则:检查同一层是否有间距小于 0.2 µm 的图形。
# 示例 DRC 脚本片段
source("path/to/your/pdk.lydrc")
l1 = input(1,0) # 层1
rule "min space 0.2" = l1.space(0.2)
output("drc_result.gds")
跑完后结果以 GDS 格式输出,你可以直接叠在原版图上查看错误图形——红色高亮。我在一个分束器版图里发现了一条疑似短路,结果放大一看是版图合并时生成的极小毛刺。DRC 一下就抓出来了。
4.4 一张图理清 KLayout 基本工作流
这张图总结了我平时用 KLayout 检查硅光版图的完整流程。你看,从安装到最后的修正,核心就几步。其中“测量”和“层管理”这两个分支都是可选的——但实际工作中几乎必做。
4.5 避坑清单(都是我踩过的)
- 文件格式兼容:有些上游工具导出的 GDS 版本太老(比如 1.x),KLayout 提示“不支持格式”。解决:用
klayout -b -z先转成新版。 - 层号映射错误:不同 PDK 的层号定义可能不一样。我之前打开他方提供的 .lyp 层文件,颜色全乱套了。后来手动加载正确的 .lyp 才正常。
- 缩放卡顿:大版图缩放时一帧一帧地渲染。我的建议:按
E键进入“编辑模式”,再按一次E退出。有时候退出编辑模式能释放一些缓存。 - DRC 脚本路径:KLayout 的脚本路径搜索顺序有坑。如果你把 .lydrc 放在自定义目录,必须在脚本第一行
source("full/path")。否则提示找不到函数。我刚开始就因为这个卡了两小时。
小技巧:KLayout 支持 Python 宏。你可以用 klayout -r your_script.py 批量执行。比如批量导出所有层的 GDS 视图,或自动检测某个 Cell 内的所有最小间距。