在模拟/混合信号 IC 设计中,将已验证的原理图从一个 Fab(代工厂)的工艺节点迁移到另一个 Fab 或另一个节点,是一项高频但复杂的工程任务。Cadence 提供的 Wicked(全称 Virtuoso Custom Design Migrate — Schematic Migration,在工程团队中常被简称为 “Wicked”)正是解决这一问题的核心工具。

本文从工程实践角度出发,详细介绍 Wicked 的适用场景、操作流程、映射文件编写、常见问题及团队 SOP 最佳实践。


1. 背景:为什么需要跨工艺原理图迁移?

典型场景 问题 解决思路
Fab-A 180nm → Fab-B 180nm 同节点换厂,器件名称和参数体系完全不同 建立器件映射,自动替换并重连
TSMC 28nm → TSMC 16nm FinFET 同厂升级节点,器件模型结构变化大 映射 + 参数换算 + 手动微调
多项目复用 IP 一套 Bandgap/LDO IP 要部署到 3 个不同工艺 批量迁移 + 参数化映射
旧工艺 EOL(End-of-Life) 代工厂停产,强制迁移 全库批量迁移,最大化自动化

手动逐个修改原理图中的器件实例,不仅耗时,而且极易遗漏或引入错误。Wicked 的自动化流程可将迁移周期从数周压缩到数天。


2. Wicked 是什么?

2.1 工具定位

Wicked 是 Cadence Virtuoso Custom Design Migrate 工具套件中的原理图迁移引擎。它集成在 Virtuoso 的 Migrate 菜单下(从 IC6.1.8 / ICADVM20.1 / IC23.1 及更高版本均可用),支持:

  • 器件映射(Device Mapping):将源工艺的器件单元一对一或多对一地映射到目标工艺的等效器件
  • 参数映射(Parameter Mapping):处理源/目标 PDK 之间 CDF 参数名称和值的差异(例如 wwf、单位换算)
  • 拓扑保留(Topology Preservation):迁移后保持原始的电路连接关系(网络拓扑),自动重新布线(Rewire)
  • 层次化迁移(Hierarchical Migration):支持从顶层 Cell 递归迁移所有子模块

2.2 名称由来与产品历史

WiCkeD 的名字源自其核心算法 Worst Case Distance(最坏情况距离)—— 在工艺角与器件失配的统计空间中,寻找规格违例点距离标称点的”最短距离”,并据此进行高 sigma 良率分析、电路 sizing 与鲁棒性优化。

需要特别澄清的一点是:WiCkeD 并非 Cadence 自研工具,而是德国慕尼黑(Unterhaching)公司 MunEDA GmbH 的旗舰产品套件。早在 2010 年前后,WiCkeD 就以第三方插件形式深度整合进 Cadence Virtuoso(同时也支持 Synopsys Custom Designer),是模拟设计圈内处理 sizing、yield optimization、IP porting 的事实标准工具之一。

[!NOTE] 收购里程碑:Cadence 于 2024 年 5 月 16 日 完成对 MunEDA 的收购(Add-on 收购,是 Cadence 在德国的首笔交易、半导体板块第 11 笔交易)。收购后,WiCkeD 整套技术原生整合进 Virtuoso Studio,与 Cadence 自有的 Virtuoso Custom Design Migrate(即本文重点介绍的 Schematic / Layout Migration 流程)形成互补:前者负责”在新工艺下重新优化 sizing 与良率”,后者负责”把网表与版图机械地迁移到新工艺”,两者配合构成跨工艺 IP 复用的完整闭环。

因此本文中所谓的”Wicked 流程”,在工程团队口语中常常指代 Virtuoso 里包含 MunEDA WiCkeD 优化能力 + Custom Design Migrate 迁移引擎的整体能力组合。在 Cadence 正式文档中,原理图迁移操作路径对应 Virtuoso Custom Design Migrate User GuideSchematic Design Migration Flow 章节;而 WiCkeD 的 sizing / yield 优化能力则在 Virtuoso Studio 相关手册中描述。


3. 端到端操作流程(6 步)

Wicked 的原理图迁移流程在 Virtuoso 的 Migrate 菜单中完成,核心为 6 个步骤:

Step 0:前置准备

在开始迁移前,确保以下条件就绪:

  • 源工艺库和目标工艺库均已在 Library Manager 中正确挂载
  • 目标 PDK 的 CDF(Component Description Format)信息已加载
  • 源原理图在当前版本 Virtuoso 中可正常打开且无 DM/CDS 错误
  • 已在 cds.lib 中注册好目标输出库(通常新建一个空库)

Step 1:收集源原理图信息

1
Migrate → Schematic → Utilities → Gather Source Information

此步骤会扫描源原理图中的所有实例,提取:

  • 使用的器件名称(Library / Cell / View)
  • 每个实例的 CDF 参数及当前值
  • 非默认的自定义参数

输出为一份 CSV 或文本报告,作为下一步建立映射文件的依据。

Step 2:创建器件映射文件(Device Mapping File)

1
Migrate → Schematic → Utilities → Mapping File Editor

映射文件是 Wicked 的核心输入,它定义了源器件和目标器件的对应关系。文件格式为 CSV,典型结构如下:

# Source Library, Source Cell, Target Library, Target Cell, Parameter Mapping
fab_a_pdk, nmos_3p3, fab_b_pdk, nch_33, w=w;l=l;nf=nf;m=m
fab_a_pdk, pmos_3p3, fab_b_pdk, pch_33, w=w;l=l;nf=nf;m=m
fab_a_pdk, nmos_1p8, fab_b_pdk, nch_18, w=w;l=l;nf=fingers;m=multi
fab_a_pdk, rpoly_h,  fab_b_pdk, rnpoly, w=w;l=l;r=PLACEHOLDER
fab_a_pdk, cap_mim,  fab_b_pdk, cmim,   w=w;l=l

映射文件编写要点

说明
Source Library / Cell 源 PDK 器件的 Library 和 Cell 名称
Target Library / Cell 目标 PDK 中对应器件的 Library 和 Cell 名称
Parameter Mapping 源参数名=目标参数名 对,分号分隔;值不变时仅映射名称

[!IMPORTANT] 参数映射中特别注意以下常见差异:

  • 单位不同:某些 PDK 用 um,另一些用 m(SI 标准),需在映射中加入换算因子
  • 参数名不同:例如 nf(number of fingers)在目标 PDK 中可能叫 fingersnfin
  • 参数缺失:目标 PDK 可能新增了源 PDK 中不存在的必填参数(如 FinFET 的 nfin),需设置合理默认值
  • 一对多映射:一个源器件在目标工艺中可能拆分为多个变体(如 core / IO 两种 MOSFET)

Step 3:配置迁移设置

1
Migrate → Schematic → Mapping → Settings

在设置界面中指定:

  • 工作目录(Run Directory):迁移中间文件和日志存放路径
  • 映射文件路径:指向 Step 2 创建的 CSV 文件
  • 源工艺库目标工艺库
  • View 过滤:通常迁移 schematic view,也可选择包含 symbol view

Step 4:保存源原理图数据

1
Migrate → Schematic → Mapping → Step 1: Save Source Schematic Data

指定需要迁移的库、Cell 列表(或整库)、目标 Cell 命名规则(如加前缀/后缀:_migrated),以及映射文件。

此步骤会:

  1. 遍历源原理图层次结构
  2. 提取所有器件实例的完整信息(包含参数、坐标、连接关系)
  3. 将映射关系存入中间数据文件

Step 5:生成目标原理图

1
Migrate → Schematic → Mapping → Step 2: Generate Target Schematic

Virtuoso 根据 Step 4 的数据,自动:

  1. 在目标库中创建新的 Cellview
  2. 放置目标工艺的器件实例,替代源工艺器件
  3. 映射参数值(根据映射文件规则)
  4. 自动重新布线(Rewire):保持与源原理图相同的网络拓扑

Step 6:审核迁移结果

1
Migrate → Schematic → Results Browser

Results Browser 会显示:

状态 含义 处理
✅ Mapped 成功映射 人工抽检参数值
⚠️ Partially Mapped 器件已替换,但部分参数需手动补全 打开目标原理图逐一补全
❌ Unmapped 映射文件中未定义该器件 补充映射文件后重跑,或手动替换
🔄 Rewired 连线已自动重建 目视检查关键节点

[!WARNING] 迁移完成后必须做 Check & Save。打开每个迁移后的原理图,执行 Check → Rules → All,确保无悬空连线(dangling wire)、未连接 Pin 或 CDF 错误。某些复杂参数表达式(如含变量的 W=W0*nf)可能不会被自动翻译。


4. 进阶技巧

4.1 批量迁移整个库

对于 IP 复用场景(如将整个 Analog IP 库从 28nm 迁移到 16nm),可以在 Step 4 中选择 Entire Library 而非逐个 Cell 操作。Wicked 会自动递归处理所有层次化引用。

4.2 处理 Symbol View

默认情况下 Wicked 只迁移 schematic view。如果目标 PDK 的 symbol 外形有变化(如 Pin 数量不同),需要额外处理:

  1. 若目标 PDK 器件有兼容的 symbol → 自动关联即可
  2. 若 Pin 数目或名称变化 → 需手动更新 symbol 或使用 Migrate → Schematic → Utilities → Symbol Migration需验证:该功能在部分版本中可能为 beta

4.3 使用 SKILL 脚本增强

对于映射文件中难以表达的复杂参数转换逻辑(如条件判断、公式计算),可以编写 SKILL 脚本作为迁移后的 Post-processing 步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
;; 示例:迁移后批量调整 FinFET nfin 参数
procedure( fixNfin( cellViewId )
  foreach( inst cellViewId~>instances
    when( inst~>cellName == "nch_16ff"
      let( ( wVal nfinVal )
        wVal = cdfFindParamByName( inst "w" )~>value
        ;; 根据宽度自动计算 nfin(需验证:具体公式取决于 PDK)
        nfinVal = ceiling( atof(wVal) / 0.007 )
        dbReplaceProp( inst "nfin" "string" sprintf(nil "%d" nfinVal) )
      )
    )
  )
  dbSave( cellViewId )
)

4.4 与版图迁移(Layout MXL)联动

Wicked 完成原理图迁移后,可以无缝衔接 Layout MXL 进行版图迁移。两者共享相同的映射文件基础结构,但版图迁移需要额外定义层映射(Layer Mapping)。完整流程参见 Virtuoso Custom Design Migrate 使用指南


5. 常见问题与排查

Q1:映射后某些器件参数值变为 0 或空白

根因:映射文件中的参数名拼写与目标 PDK CDF 定义不一致(区分大小写)。
排查:在目标 PDK 中用 Edit → Component → CDF 查看目标器件的参数名称列表,与映射文件逐一比对。

Q2:迁移后原理图中出现 “Instance of undefined cell” 红色标记

根因:映射文件中指定的目标 Cell 在目标 PDK 库中不存在(Cell 名拼写错误或 PDK 版本不匹配)。
排查

  1. 在 Library Manager 中确认目标 PDK 库包含该 Cell
  2. 检查 cds.lib 中的库路径是否正确
  3. 确认 PDK 版本——某些器件在特定 PDK 发布中才引入

Q3:迁移后连线断开(Dangling Wires)

根因:源器件和目标器件的 Pin 名称不同(如 D vs drainG vs gate),Wicked 无法自动对应。
解决:在映射文件中增加 Pin Mapping 列(需验证:具体语法取决于 Virtuoso 版本),或在迁移后手动重连。

Q4:FinFET 迁移时缺少 nfin 参数

根因:传统 Planar MOSFET 不存在 nfin 参数;迁移到 FinFET 工艺时必须新增。
解决

  1. 在映射文件的参数映射中添加 nfin=<默认值>nfin=PLACEHOLDER
  2. 迁移后使用 SKILL 脚本批量计算并填入正确的 nfin 值(基于目标工艺的 fin pitch 和有效宽度)

Q5:迁移日志中大量 “WARNING: CDF parameter not found” 告警

根因:源 PDK 中器件含有自定义 CDF 参数,在目标 PDK 中不存在对应项。
处理

  1. 如果该参数在目标工艺无意义 → 在映射文件中标记为忽略(不映射)
  2. 如果该参数名称变化 → 更新映射关系
  3. 迁移完成后在 Results Browser 中确认 “Partially Mapped” 项并逐一处理

6. 团队 SOP 与最佳实践

6.1 映射文件版本化管理

1
2
3
4
5
6
7
project_root/
├── migration/
│   ├── mapping_fab_a_to_fab_b.csv    # 版本化存储在 Git/SVN
│   ├── mapping_28nm_to_16nm.csv
│   ├── README.md                     # 记录每次映射的修改理由
│   └── scripts/
│       └── post_migrate_fixup.il     # SKILL 后处理脚本
  • 映射文件必须纳入版本控制(Git/SVN)
  • 每次修改附带 commit message 说明变更原因
  • 多项目复用时,创建通用映射 + 项目差异叠加层

6.2 迁移验证清单

阶段 验证项 工具/方法
迁移完成后 Check & Save 无错误 Virtuoso Check → Rules → All
迁移完成后 所有实例均为 Mapped 状态 Results Browser
迁移完成后 CDF 参数值合理(无 0、无空白、无 PLACEHOLDER) SKILL 脚本批量扫描
仿真验证 标称仿真结果与源工艺对比 Spectre DC/AC/Tran
仿真验证 Monte Carlo 良率达标 ADE MC(参考 MC 仿真指南
LVS 验证 迁移后原理图 vs 手动 Reference 一致 Calibre / PVS CDL Netlist Diff

6.3 回滚策略

  • 在迁移前使用 dmXtool 或手动备份源库
  • 如果使用 SOS / SVN 管理设计数据,迁移前打 Tag,便于一键回退
  • 建议迁移输出到独立的目标库,不要覆写源库

6.4 多人协作

  • 指定一名 Migration Owner 负责映射文件维护
  • 大型 IP 库可按 Block 分工:各 Block Owner 验证各自区域的迁移结果
  • 使用统一的映射文件版本,避免各自维护导致不一致

7. 与 Virtuoso Custom Design Migrate 的关系

术语 含义
Wicked 工程团队对 Schematic Migration 引擎的常用代号
Virtuoso Custom Design Migrate 官方工具名称,涵盖原理图迁移和版图迁移
Schematic Migration Custom Design Migrate 中的原理图迁移子流程(即 Wicked)
Layout MXL Custom Design Migrate 中的版图迁移子流程
Mapping File Editor 用于创建/编辑 CSV 映射文件的内置 GUI 工具

[!NOTE] 从 IC23.1 / IC25.1 开始,Cadence 对 Custom Design Migrate 的 GUI 和流程做了显著增强,包括更友好的 Mapping File Editor 和改进的 Results Browser。建议使用最新版本以获得最佳体验。


8. WiCkeD 的源头:MunEDA 收购始末

理解 WiCkeD 的来龙去脉,对于设置正确的工程预期很有帮助。

8.1 MunEDA:一家”低调”的德国 EDA 公司

项目 内容
公司名 MunEDA GmbH
总部 德国慕尼黑近郊 Unterhaching(前身可追溯到由 ChipMD 销售的早期版本)
旗舰产品 WiCkeD —— Worst Case Distance 工具套件
客户 德系/日系车规模拟厂商、存储 IDM、欧洲学术机构等
与 Cadence 的关系 在被收购之前,WiCkeD 长期作为 第三方插件 整合进 Cadence Virtuoso 与 Synopsys Custom Designer

8.2 收购事件:2024 年 5 月

  • 收购日期:2024 年 5 月 16 日
  • 收购方式:Add-on 收购(金额未公开披露)
  • 战略意义
    • Cadence 在德国的 首笔 收购交易
    • Cadence 在半导体行业的 第 11 笔 收购
    • 媒体形容这次交易为”quietly acquired”(低调收购),Cadence 没有发布大规模新闻稿

8.3 收购后的产品整合

收购完成后,MunEDA 团队与技术被并入 Cadence Custom IC Design 业务部门,WiCkeD 套件做了如下整合:

  • 原生进入 Virtuoso Studio:从外挂插件升级为 Cadence 官方组件,license 与安装流程统一管理
  • AI 化升级:Cadence 在 WiCkeD 基础上叠加机器学习驱动的设计空间搜索算法,替代蛮力 Monte Carlo(参见 Monte Carlo 仿真指南),在高 sigma(如 6σ 存储单元)场景下显著加速
  • Pre-layout 到 Post-layout 闭环:WiCkeD 被定位为 “transistor tweaker”,在 Virtuoso Studio 中支持从前端 sizing 到后端 sign-off 的全流程优化
  • 重点应用市场:先进工艺节点(FinFET、GAAFET)、车规模拟、存储(高 sigma 良率)、通信等高可靠性应用

8.4 与本文 Schematic Migration 流程的协同

在跨 Fab / 跨节点的实际工程实践中,WiCkeD 的能力与 Virtuoso Custom Design Migrate 是 互补关系,典型流程:

  1. 第 1 阶段:机械迁移 —— 用 Custom Design Migrate(即本文 §3 的 6 步流程)把原理图从源工艺迁移到目标工艺,完成器件替换、参数映射、网表重连
  2. 第 2 阶段:重新 sizing —— 在目标工艺下,由于器件特性、设计规则、Vt/Idsat 都已变化,原始 sizing 通常无法满足规格。此时使用 WiCkeD 的 DNO(Design Nominal Optimization)Sizing 工具,自动调整 W/L/nf/nfin 等参数以重新满足标称规格
  3. 第 3 阶段:鲁棒性与良率验证 —— 使用 WiCkeD 的 Robustness Verification Flow 与高 sigma 分析,在新工艺的工艺角与失配空间中验证电路是否仍满足良率指标

[!IMPORTANT] 在很多团队的口语里,”用 Wicked 做工艺移植”这句话其实包含了上述 三个阶段 的合集。如果只做了 Custom Design Migrate 的机械迁移而没有做 WiCkeD 的重新 sizing,迁移后的电路在新工艺下大概率无法满足原始规格 —— 这是跨工艺 IP 复用最常见的”踩坑点”之一。

8.5 Evatronix 等案例:WiCkeD IP Porting Flow

收购前,MunEDA 已经与多家 IP 公司建立了基于 WiCkeD 的 IP porting 方法学。例如波兰 IP 厂商 Evatronix SA 公开宣布采用 WiCkeD IP Porting and Verification Flow,将其模拟 IP 库快速移植到新工艺并完成鲁棒性验证。这类案例验证了 WiCkeD 在跨工艺迁移中的实战价值,也是 Cadence 看中并最终收购 MunEDA 的重要原因之一。


参考资料


建议截图(供实际操作时补充)

以下内容建议在实际操作时截图补充:

  • Virtuoso 菜单栏 Migrate → Schematic 子菜单全貌
  • Mapping File Editor 界面:源器件列表与目标器件下拉选择
  • Results Browser 界面:Mapped / Unmapped / Partially Mapped 状态展示
  • 迁移前后原理图对比(源工艺器件 vs 目标工艺器件高亮标注)
  • Check & Save 对话框中的典型迁移后告警信息

本文由 [icinfra.cn] 团队整理。Wicked / Custom Design Migrate 的详细功能请以 Cadence 官方文档为准,部分内容标注”需验证”的地方请结合实际 PDK 和 Virtuoso 版本确认。