在 EDA(电子设计自动化)领域,Cadence Virtuoso 是事实上的工业标准。然而,长期以来,其核心扩展语言 SKILL 虽然强大,却处于一种相对封闭的生态中。随着人工智能和 AI Agent 技术的爆发,如何让底层的设计环境与现代化的 Python 生态深度融合,成为了提升芯片设计效率的关键。

今天,我们要深入探讨的开源项目 SkillBridge(由 unihd-cag 开发),正是连接这两个世界的坚实桥梁。该项目由德国高校开发维护,是目前最主流的 Virtuoso-Python 桥接方案,已经陆续开发了 7 年,非常成熟。


1. 为什么需要 SkillBridge?

传统的 SKILL 脚本开发面临几个痛点:

  1. 人才门槛:SKILL 基于 Lisp 方言,学习曲线陡峭,由于生态封闭,相关库和工具链较少。
  2. 生态脱节:现代的 AI/ML 框架(如 PyTorch, TensorFlow)和大数据处理工具几乎全部集中在 Python 生态。
  3. 集成困难:过去通过 IPC(进程间通信)或文件交换的方式与 Virtuoso 交互,代码冗长且难以维护。

SkillBridge 的出现,让开发者可以像调用原生 Python 库一样操作 Virtuoso。


2. 核心架构与原理

SkillBridge 采用的是一种 IPC Server-Client 模型:

  • Server 端:在 Virtuoso 的 SKILL 进程中启动一个 IPC 服务器。
  • Client 端:Python 脚本通过 JSON-RPC 风格的协议发送请求。

它的精妙之处在于 自动化映射。它不仅仅是简单的命令发送,而是实现了:

  • 函数映射 (Function Mapping):将 SKILL 函数(如 geGetWindowCellView)自动映射为 Python 方法(如 ws.ge.get_window_cell_view())。
  • 远程对象 (RemoteObject):Virtuoso 中的 dbId 在 Python 中表现为代理对象。例如,直接访问 cv.cell_name 即可获取底层属性。
  • 数据类型转换:在 Python 的 list/dict/bool 与 SKILL 的 list/association list/boolean 之间自动无缝转换。

3. 快速上手指南

第一步:安装 Python 包

在你的 shell 中运行:

1
pip install skillbridge

第二步:启动 Virtuoso 服务器

  1. 获取 IPC Server 脚本路径:在 shell 中输入 skillbridge path
  2. 在 Virtuoso CIW 窗口中加载该脚本:
    1
    
    load("PATH_TO_IPC_SERVER_SCRIPT")
    

第三步:Python 连接并操作

1
2
3
4
5
6
7
8
9
10
11
12
from skillbridge import Workspace

# 建立连接
ws = Workspace.open()

# 获取当前 CellView
cv = ws.ge.get_window_cell_view()
print(f"Current Cell: {cv.cell_name}")

# 创建一个矩形 (调用 dbCreateRect)
# 注意:SKILL 函数中的参数会自动按 Python 风格处理
ws.db.create_rect(cv, ["Metal1", "drawing"], [[0, 0], [1, 1]])

4. 助力 AI Agent 与现代化开发

SkillBridge 最大的潜力在于它是 AI Agent 友好 的:

  1. 类型提示与补全:通过 skillbridge generate 命令,可以生成 Python Stub 文件(.pyi)。这意味着在 VS Code/PyCharm 中,你可以享受到完整的自动补全和类型检查,极大地提升了开发体验。
  2. LLM 集成:AI Agent 现在可以直接通过 Python 接口,利用其对 Python 代码生成的能力,直接驱动 Virtuoso 进行版图编辑、仿真配置或属性检查,而无需专门学习复杂的 SKILL 语法。

5. 总结

SkillBridge 不仅仅是一个库,它是 EDA 基础设施现代化的重要一步。它降低了 Virtuoso 二次开发的门槛,并为未来的“AI 辅助设计”铺平了道路。


参考资料


本文由 icinfra.cn 团队编写,欢迎交流讨论。