教程
学 klink 的地方,也是可跑 demo 集齐的地方。先看实战对话案例感受 agent 怎么把一句话变成版图,再按类目跟着分步图文教程做;每个可跑 starter 卡片直接给运行命令和实测数字,跟着敲就能跑。
python … 命令的是随 wheel 打包的可跑 starter(klink init 会脚手架进你的项目);跑 demo 不需要 MCP,就是普通脚本经插件端口和 KLayout 对话。用空的或测试专用 session,别用你手工的工作 tab。实战对话案例 真实对话
不是分步说明,而是真实对话记录:用户用一句话提需求,klink 的 AI agent 真的调用工具在实时 KLayout 里把版图画出来 / 跑 DRC / 跑 LVS——看它怎么把自然语言变成版图。想跟着做完整分步版,看下面的图文教程。
一句话画出 Hall bar
“画个中间长条、上下各 3 接触的 Hall bar” → agent 真的画出 mesa、接触、探针 pad 并调路由器布线。
看对话 → 对话 · DRC跑 DRC 查违例再修好
“画两条贴太近的金属线” → 跑 DRC 抓到 1 个间距违例 → 挪开 → 再跑 0 违例。违例数是真实 DRC 结果。
看对话 → 对话 · LVS自定义器件跑到 LVS match
“拟合器件 → 按网表摆放布线 → 跑 LVS” → 173 器件、routed 94/94、真实 LVS match=True。
标端口 → 连线 → 拖动重连
“手绘三角形转端口 → 连到 MMI → 挪一下重新连” → 手绘转 0.8 µm 端口、直波导 40 µm、拖动后 reroute 成 60 µm S 弯。
看对话 →纳米器件 nanodevice
EBL 与探针器件生成:写场规划、批量 RPC、Port + Anchor 到路由的完整入门链路。
Hall bar 器件
geometry-first 的完整入门流程:画 mesa/接触/pad,标 Port + Anchor 意图,一次调用路由 fanout,用路由报告验证。
python example_template/nanodevice/hallbar.py
semantic bundle + routed(--live 写入 KLayout)
EBL wraparound 纳米器件
写场约束下的手工布线:keepout 边界、允许穿越窗口(corridor Anchor)、拼接 patch 补偿,以及事后补标 Port/Anchor 的场景。
python example_template/nanodevice/ebl_wraparound.py
40 电极 · 12 patch · 0 violations · 0 overlaps
看分步教程 → 批量 RPC · 参数化 live KLayout神经电极阵列 harness
由 --elec-rows 参数化生成,394 个几何对象靠 shape.insert_many 批量写入;键合 pad 到电极近 8 倍尺度落差,走廊 Anchor 强制汇聚后一次批量路由。
python example_template/nanodevice/neural_electrode.py --port <端口> --elec-rows 4
48 ports · 24 nets routed · overlap 0 · hit 0
看分步教程 →硅光 photonics
gdsfactory 桥接:拿到端口的三种方式,以及把普通 gdsfactory 脚本一次接管进拖动重布线循环。
三种拿到端口的方式 + 拖动重连
对话式走三条拿 Port 的路:手绘三角形转换(含"底边画错"反面教材)、标准 gdsfactory 自动端口、PDK 黑箱按 stub 约定 harvest;再走 SEND → 连线 → 移动 → 重连闭环。每步含 agent 的话 + 工具调用 + 结果。
python example_template/photonics/gf_ports.py --port <端口>
五场景一次跑完 · 拖动后 --reroute 只重连不重建
gdsfactory MZI 接管与拖动重布线
一次 import_gf_component 接管普通 gdsfactory 热光 MZI 脚本;GUI 里拖动任意组件后,同一个 photonics.reroute 调用只重新布线、不重建器件。
python example_template/photonics/gf_mzi_module.py --port <端口>
6 光学 net · reroute 12 routes · 0 crossings
看分步教程 →PnR · 任意器件 place & route digital/
把任意自定义器件从网表摆放、布线到 live LVS——是器件无关的 place & route,不是"数字逻辑"。这一组都需要一个 live KLayout 会话。
自定义器件:拟合 → PCell → P&R → LVS
从几个不同尺寸的范例几何拟合出参数化边模型,注册成真 PCell,按网表摆放 173 个实例,FlexDR 详细布线,最后 live LVS match=True。
python example_template/digital/fit_device_pnr_lvs.py --port <端口>
routed 94/94 · LVS match=True · 173 器件
看分步教程 → structdevice · padframe 需 live KLayout 会话针卡优先的 padframe
探针卡 / pad 环先固定,电路必须迁就它:pad 环 harvest、net→pad 分配、一半卡内一半卡下的摆放、分区电网,card 与 --no-card 裸线头两种模式各自 live LVS match=True。
python example_template/digital/padframe_pnr_lvs.py --port <端口>
routed 94/94 · LVS match=True · 16 pad connected
看分步教程 →规模化多层 place & route
766 器件的合成网表(玩具 4-bit ALU,268 门),内置层数顾问在 3 层 vs 自定义 7 层栈上对比 core-area 成本,再用多层路由引擎布线。复制文件、改 PUBLIC_MULTILAYER 就是你自己的层栈。
python example_template/digital/multilayer_pnr_lvs.py --port <端口>
routed 405/405 · LVS match=True · 766 器件 · ~17s(命令即跑,无独立分步页)
手写网表 → lint → P&R → LVS
一个 3 级环形振荡器网表手写而成,先 lint_netlist(在任何几何之前就给 fix-it 提示),再 place / route / LVS。网表是纯数据——任意拓扑都能写,不需要逻辑综合器。
python example_template/digital/chat_to_netlist_pnr.py --port <端口>
lint 0 err · routed 3/3 · LVS match=True(命令即跑,无独立分步页)
成像 imaging
从一份 GDS 出五种图:剖面、逐步工艺胶片、3D 自含网页查看器、SEM 风格顶视、Blender 论文级渲染,全部由一份 VisualStack 声明 + 一份 .pyxs 配方驱动,离线可跑。
控制面 · 协作 control plane
不是画某种器件,而是控制面本身:一个 agent 同时驱动多个 KLayout 窗口,人和 agent 靠工具栏协作。