工艺迁移这个事请,在日常工作中太常见了。如果全靠人工替换,工作量可想而知,所以自动化的 Porting 方案一直是大家关心的话题。
之前写过一篇文章,介绍了使用 SKILL 脚本做 Porting 的方法。这个方法轻量方便,但映射规则需要手动维护,配置出错后还要花时间排查。而且,规则文件和 SKILL 脚本对设计工程师来说,理解起来有门槛,用起来也不够顺手,往往还得找懂 SKILL 的同事帮忙。
最近试了 Cadence 的 WiCkeD Schematic Porting工具,它把映射配置和检查做成了可视化流程。
这篇就来分享一下它的具体操作流程,文末也会和之前的 SKILL 方案做个对比,方便大家根据需求选择。
简要介绍
WiCkeD Schematic Porting(以下简称 SPT)最初由 MunEDA 开发。MunEDA 于 2024 年被 Cadence 收购后,SPT 也整合进了 Cadence 的 Virtuoso 平台,成为一款用于不同 PDK 间电路图转换的 GUI 工具。
和 SKILL 脚本相比,最大的区别就是 —— 它把整个 Porting 过程做成了可视化的工作流。
它能做什么?
SPT 会帮你管理三张映射表:
| 映射表 | 作用 |
|---|---|
| Cell Mapping Table | 定义旧 PDK 的哪个器件对应新 PDK 的哪个器件 |
| Property Mapping Table | 定义器件参数之间的转换规则(可以是简单映射,也可以是表达式计算) |
| Symbol Mapping Table | 定义引脚名称对应关系和 Symbol 的旋转/平移变换 |
这几张表在 SKILL 方案里全部压缩在一个 .map 文件中 —— 你只能盯着纯文本对比。而在 SPT 里,它们被拆成独立的可视化界面,每一项都可以单独编辑、检查和验证。
下面是我实际跑通 SPT 的完整流程。
第一步:新建 Mapping
启动前需要确保 cds.lib 中同时加载了 Source PDK 和 Target PDK。

在 Virtuoso 的 CIW 窗口中,选择 Tools → WiCkeD Schematic Porting。

SPT 主窗口中点击 File → New,在弹窗中:
👈将【旧工艺库】移到左边的 【Source Technology Lib】
将【新工艺库】移到右边的 【Target Technology Lib】👉

然后点击 OK,两个 PDK 的信息就被加载到工具中了。
第二步:定义映射规则 Cell Mapping
切换到主窗口上方的 Cell Mapping Table ,点击表格里的绿色 “+”,逐一添加需要转换的源器件。这一步相当于建立“源器件 → 目标器件”的替换清单,后续的参数和 Symbol 规则也会基于这些器件对应关系配置。

如上图所示,SPT 提供了两种添加方式:
➊ 手动从 Source PDK 库中选择器件: 适合提前整理一份通用映射清单,或只处理少量、明确的器件。
➋ 自动扫描某个 schematic cell 中用到的所有器件: 适合从实际设计出发,先盘点本次转换涉及哪些器件,扫描结果可以帮助避免漏项。
点击 OK 后,继续在生成的这一行中设置 Target PDK 中的器件,确认对应关系:

第三步:定义映射规则 Property Mapping
为每组 Cell Mapping 定义参数转换规则。两套 PDK 的参数名、取值方式或单位可能不同,因此这里不仅要决定“哪个参数对应哪个参数”,也要明确是否需要计算或条件转换。
首先,切换到 Property Mapping Table 选项卡,点击左侧规则表里的绿色 “+”,输入一个唯一的规则组名称,例如:mos_rule。

然后选中这个规则组,在下半部分继续点击绿色 “+”,设置 Target Property(目标属性) 和 Property Value Expression(赋值表达式),以此添加一条或多条目标属性规则。
假设你要把“新 PDK 中的 NMOS 的 w l m 直接换成旧 PDK 中的 NMOS 的 w l m”,可以参照下图这样设置:

左侧填写「目标器件属性」,右边填写「该属性的取值表达式」。实际使用时,属性名和表达式要以你自己的两个 PDK 为准,上表仅作示意。
那么,Property Value Expression 这列的表达式具体可以怎么写?
SPT 支持 SKILL 表达式作为映射规则。下面列出几种常见写法及其使用场景:
| 写法 | 含义 |
|---|---|
srcP{w} | 直接读取源器件的 w 值,适用于两端参数含义和单位一致的情况 |
srcP{w} / srcP{l} | 根据源 w 和 l 计算比例,可用于目标参数需要由源器件尺寸关系推导的场景 |
srcP{l} * 0.66 | 将源长度按比例换算为目标值 |
trgP{nh} | 读取目标器件当前的 nh |
100e-9 | 使用固定数值 |
if srcP{grRing} then "ON" else "OFF" | 根据源参数的状态输出目标参数值,适用于参数取值形式不同的情况 |
更多表达式语法和用法,可参阅《WiCkeD™ Schematic Porting Manual》手册。
属性规则组创建完毕后,再次切换到 Cell Mapping Table 选项卡,在对应器件行的 Property Mapping Rule 列中,指定刚创建的规则组:

第四步:定义映射规则 Symbol Mapping
Symbol Mapping 主要处理两件事:
➊ 引脚映射: 指定源器件的各个引脚分别对应目标器件的哪个引脚。
➋ Symbol 对齐: 通过平移、旋转或镜像调整目标 Symbol,让它的位置和方向尽量贴合原 Symbol,从而减少对原有连线的影响。
你可以在 Symbol Mapping Table 中填写引脚对应关系,并设置 Symbol 的变换信息:

Transformation 一列记录 Symbol 的变换方式,包括平移、旋转或镜像,以及缩放因子。通常缩放因子应保持为 1.0。
设置引脚映射时,重点要确认引脚的实际功能是否对应,而不能只看名称。例如:
- 源端口
S G D→ 目标端口S G D:名称相同,但仍要确认各引脚的功能对应。 - 源端口
PLUS MINUS→ 目标端口POS NEG:名称不同,需要手动指定对应关系。
在表格中逐个核对引脚、调整符号位置不够直观。你也可以从 Cell Mapping 行打开独立的 Cell Mapping Editor 窗口,在图形界面中完成这些配置。
具体操作
➊ 回到 Cell Mapping Table,找到已经设置好 Target Lib 和 Target Cell 的器件行,点击左侧橙色的铅笔图标。

➋ 在弹出的编辑器中,先在窗口上方的 Symbol Mapping 位置输入一个唯一的规则名(比如:nmos4pin),然后切换到 Symbol Mapping Rule 选项卡。

➌ 在左侧 Terminals 区域,先检查 SPT 根据两边 Terminal 信息自动匹配的引脚对应关系。如果 Terminal 信息无法自动匹配,就手动添加并指定对应关系。
➍ 在右侧 Transformation 区域,SPT 会根据已匹配的 Terminal 自动计算 Symbol 的平移和旋转,使替换后引脚位置尽量贴合原有连线。如果自动计算出的 Symbol 位置或方向不合适,再通过右下角的控件手动调整。

➎ 点击 Apply 或 OK。规则会保存到 Symbol Mapping Table,并关联到当前 Cell Mapping 行。

如果是初次配置,我更建议你使用 Cell Mapping Editor 编辑器,操作更直观,也更容易上手。
第五步:检查并保存状态文件
完成映射定义后,点击 File → Check Setup,在下方的 Setup Checking Results 中查看错误和警告,点击其中的消息还可以跳转到对应的配置项:

SPT 在执行转换时也会自动检查,但建议提前手动检查,方便定位并修改问题。这也是比 SKILL 方案进步最大的地方 —— 在执行转换之前就能发现问题,而不是转完了再一个个排查。
然后点击 File → State → Save as… 将所有映射配置保存为 .spz 文件。这个文件包含了完整的映射信息和 PDK 数据,后面转换时需要重新加载。

保存完后,需要关闭当前 SPT 和 Virtuoso 会话(这一步很关键)。
第六步:执行转换
之前设置 Map 规则前,要让 Virtuoso 能看到 Source PDK 和 Target PDK,这样 SPT 才能读取两边的器件、参数和 Symbol 信息来建立映射。但在这次转换的环境中,要先让 cds.lib 不再定义 Source PDK 库,然后重新启动 Virtuoso。
再次启动 SPT,点击 File → State → Load… 加载刚才保存的 .spz 文件。

点击 File → Run Schematic Porting,在弹窗中选择要转换的 Library、Cell 和 View,同时建议你勾选下方的 Backup all Cellviews modified during Porting,为被修改的 cellview 创建备份。最后点击 OK,开始转换。

转换完成后,SPT 会生成 Conversion Log 和 Property Mapping Report,可以逐一核对每个器件的转换结果:

转换完成并查看报告后,回到 schematic,重点检查器件型号与参数是否按预期映射、引脚对应和连线是否正确。
SKILL 脚本 vs SPT 工具
经过以上这几个操作环节,现在可以回头比较下 SKILL 脚本和 SPT 工具:
| 对比项 | SKILL 脚本方案 | WiCkeD SPT 工具 |
|---|---|---|
| 获取门槛 | 免费,Cadence 论坛可下载 | 需要许可证 |
| 上手难度 | 需理解 SKILL,非 CAD 工程师上手较难 | GUI 操作,设计工程师可自行上手 |
| 映射定义 | 手写 .map 文本文件 | GUI 可视化编辑 + 表达式支持 |
| 参数映射灵活度 | 基础名称对应 | SKILL 表达式 + Skill Hook 扩展 |
| 转换前检查 | 无 | 自动 Setup Checking |
| Symbol 处理 | 不支持调整位置 | 自动计算变换矩阵 + 重连线 |
| State 复用 | 复用 .map 文件 | .spz 文件,包含完整配置 |
| 转换报告 | 无 | Conversion Log + Property Mapping Report |
如果你正在进行工艺迁移,尤其是团队里没有专职 CAD 支持的话,不妨试试这个工具。
更多文章

调一调更好用:布线助手 Wire Assistant 的几项设置
Wire Assistant 用得多但每次都要重新调?教你用环境变量一劳永逸搞定默认设置。

让 Layout Status 状态工具栏更有用的几种配置方式
通过 statusToolbarFields 环境变量自定义 Layout 状态栏的显示字段、顺序和文字样式,让坐标、选中对象、CellView 尺寸和工具状态等信息更直观地展示在编辑窗口中。

Virtuoso 多窗口管理:自定义标题栏和显示样式
快速区分项目:修改 CIW 窗口和设计窗口标题栏的文本显示;设置 Palette(LSW) 面板显示样式
邮件列表
加入我们的社区
订阅邮件列表,及时获取最新消息和更新
