CAD FLOW / PARASITIC EXTRACTION
RCE · 寄生参数提取
在同一表单中配置 Quantus、StarRC 或 Calibre XRC,选择工艺角、温度与输出形式。输入连接与工艺数据需要先确认正确。
先选择提取引擎
| GUI 引擎 | 工艺目录变量 | 有效 corner 的识别文件 | 前置条件 |
|---|---|---|---|
| QRC | QUANTUS_TECH_DIR | qrcTechFile、qrc.tch 或 cap_coeff.dat | Quantus 与 Calibre;正常 OA/CDL/GDS 流程使用 RCE_LVS_FILE。 |
| StarRC | STARRC_TECH_DIR | 配对的 NXTGRD 与 mapping 文件 | StarXtract 与 Calibre;正常流程使用 RCE_LVS_FILE。 |
| CalXRC | CALXRC_TECH_DIR | xrc.cal | Calibre XRC;独立 LVS runset 与 corner 的 xrc.cal 配套使用。 |
export RCE_DB_DIR="$PROJECT_ROOT/runs/rce"
export RCE_LVS_FILE="default,$PDK_ROOT/pv/lvs-rc.cal"
export QUANTUS_TECH_DIR="default,$PDK_ROOT/rc/quantus"
export STARRC_TECH_DIR="default,$PDK_ROOT/rc/starrc"
export CALXRC_TECH_DIR="default,$PDK_ROOT/rc/calibre-xrc"
export RCE_DEF_TOOL="StarRC"
export RCE_CORNER="Typ"
export RCE_DEF_TEMP="25"
export RCE_TEMP_LIST="125,85,25"
export RCE_OUTPUT_CHOICES="dspf,spf,spef,view"
export SICO_FLOW_CPU_ALLOW="1,2,4,8"上面把温度显式改为 25°C;未配置时默认是 125°C。工艺目录推荐指向包含各 corner 子目录的根,表单只显示其中有效的 corner,名称大小写保留。也可直接指向有效 corner。可选输出由引擎能力约束,环境列表不能启用引擎不支持的格式。
Techdir 与 corner 目录怎么组织
每个提取引擎使用自己的 techdir。同一 techdir 对应一套工艺版本和金属栈,其下一级才是各个 RC corner。Process Directory 填 techdir,Process Corner 选择其直接子目录;SiCo 不会递归跨过金属栈目录寻找 corner。
$PDK_ROOT/ # 已选定的工艺版本
└── rc/
└── stack_A/ # 当前设计采用的金属栈
├── quantus/ # QUANTUS_TECH_DIR 的路径部分
│ ├── Typ/
│ ├── Cmax/
│ ├── Cmin/
│ ├── RCmax/
│ └── RCmin/
├── starrc/ # STARRC_TECH_DIR 的路径部分
│ └── 各 corner/ # 每个 corner 直接放配套文件
└── calibre-xrc/ # CALXRC_TECH_DIR 的路径部分
└── 各 corner/stack_A 是金属栈占位名;只有一种金属栈时可省略这一层。Typ、Cmax、Cmin、RCmax、RCmin 是示例角名,应按 PDK 实际提供的角建立目录,并保持文件与角的对应关系。创建不同名字的目录不会生成不同工艺角。
export QUANTUS_TECH_DIR="stack_A,$PDK_ROOT/rc/stack_A/quantus"
export STARRC_TECH_DIR="stack_A,$PDK_ROOT/rc/stack_A/starrc"
export CALXRC_TECH_DIR="stack_A,$PDK_ROOT/rc/stack_A/calibre-xrc"
export RCE_CORNER="Typ"有多种金属栈时,用分号增加 显示名,路径,例如 stack_A,路径A;stack_B,路径B。GUI 中先选择 Process Directory 的金属栈,再选择该目录中的 corner。
工艺目录对照
下面选取 $PROJ_PDK_HOME 中的一个金属栈,展示原始工艺文件的位置。stack_A 是金属栈名称;该目录中的 typical 模型对应典型角。整理时把金属栈与 RC corner 分成两级,便于以后增加其他角:
$PROJ_PDK_HOME/
├── Assura/online/stack_A/ # Quantus / Assura 侧的工艺数据
│ ├── qrcTechFile
│ ├── RCXspiceINIT
│ ├── RCXdspfINIT
│ ├── lvsfile
│ ├── cap_coeff.dat, caps2d, capsw3d
│ └── rcxfs.dat, paxfile_coeff
├── CCI/online/stack_A/ # StarRC / CCI 侧的工艺数据
│ ├── starrcxt.nxtgrd
│ ├── starrcxt_mapping
│ ├── starrcxt_mapping_stack_A
│ └── *.itf # 建模输入,不直接替代 nxtgrd
└── Calibre/
├── online/rcx_online/stack_A/
│ ├── calibre.rcx # 原始 Calibre RCX 规则入口
│ └── rules # 由 calibre.rcx 引用的规则数据
└── rcx/calview.cellmap # Calibre View 的 OA cell map例如,可将已确认的 typical StarRC 文件通过软链接组织到 rc/stack_A/starrc/Typ/nxtgrd 和 tran.map,再把 Process Directory 指向 rc/stack_A/starrc。其他角使用各自的模型。Quantus 的 Calibre 适配文件、CalXRC 的规则入口按下面各节准备。
核对时,项目 modulefile 中的 $PROJ_PDK_HOME/QRC、StarRC、CalXRC 尚无对应目录。这里展示的是整理方法与原始文件对照,不表示该项目已经具有可直接运行的完整 corner 配置。
示例一 · Quantus / QRC
quantus/
├── Typ/
│ ├── qrcTechFile # 必需:对应角的完整工艺文件
│ ├── RCXspiceINIT # 必需:配套运行初始化脚本
│ ├── RCXdspfINIT -> RCXspiceINIT # 必需:常见形式为此软链接
│ ├── lvsfile # 必需:Calibre 接口配套文件
│ └── fabBlockCells.list # 按配置:foundry blocking 清单
├── Cmax/ # 同样四项必需文件,各用自己的角数据
├── Cmin/
├── RCmax/
└── RCmin/| 文件 | 需要条件 | 作用与配置 |
|---|---|---|
qrcTechFile | 上述 Quantus 流程必需 | 包含该角的 RC 工艺模型与提取所需数据,应已完成适配 Calibre LVS 输入的 Techgen compilation;只有仿真模型、尚未完成配套编译的文件不能视为就绪。 |
RCXspiceINITRCXdspfINIT | 上述 Quantus 流程必需 | 与 qrcTechFile 配套的晶体管级运行初始化入口,包含工具调用、层映射和 blocking 等设置。RCXdspfINIT 常由 PDK 提供为指向 RCXspiceINIT 的软链接;保留有效的配套文件或链接。 |
lvsfile | Calibre–Quantus 流程必需 | 供 Quantus 使用的 Calibre LVS 接口数据,与工艺文件和前置 LVS 规则匹配。它与 RCE_LVS_FILE 指向的 Calibre SVRF runset 用途不同,不能相互替代。 |
fabBlockCells.list | 配置 blocking 文件时必需 | foundry 提供的寄生 blocking 器件清单。示例文件名可自定;设置 RCE_QUANTUS_BLOCK_CELL_FILE="fabBlockCells.list" 时,相对当前有效 corner 解析。多角运行只取所选首角的文件,作为本次运行的共有清单;未配置时不自动读取它。 |
| 其他 PDK 配套文件 | 按该工艺包要求 | 初始化脚本或工艺配置引用的外部文件也必须保留。不能根据此处的最小清单删除工艺包中的其他依赖。 |
SiCo 扫描时只检查是否存在 qrcTechFile、qrc.tch 或 cap_coeff.dat 中的任意一项;这是兼容不同目录格式的识别条件,并不表示这三个文件可以在 Quantus 运行中任意互换。上面的四项清单针对当前 Calibre–Quantus 晶体管级流程。
已有 PDK 可能同时保留 cap_coeff.dat、caps2d、capsw3d、paxfile_coeff、rcxfs.dat 等历史 capgen/RCX 模型数据。它们属于原工艺包的配套或历史格式;是否在运行时需要,应以该包的初始化脚本和工具版本说明为准。不要从 Assura 目录只取一个 qrcTechFile 就当作已适配 Calibre 的完整目录。
多角运行所需的 corner.defs 和技术库定义由 SiCo 在运行日志目录生成,不要求用户把它们预先放进每个 corner。
示例二 · StarRC
starrc/
├── Typ/
│ ├── nxtgrd # 必需:该角的 NXTGRD 工艺模型
│ ├── tran.map # 必需:匹配该金属栈的层映射
│ ├── common.opt # 可选:PDK 附加命令
│ ├── OA_DEVICE_MAP # OA view 输出时必需
│ └── OA_LAYER_MAP # OA view 输出时必需
├── Cmax/ # 同样具备 grid / mapping
├── Cmin/
├── RCmax/
└── RCmin/| 文件 | 需要条件 | 作用与配置 |
|---|---|---|
nxtgrd | 每个 corner 必需 | StarRC 使用的工艺网格与 RC 模型,生成命令中的 TCAD_GRD_FILE 指向它。可用同名软链接指向该角的原始 NXTGRD 文件。 |
tran.map | 每个 corner 必须能解析到一份 | 将 Calibre/CCI 的提取层与 StarRC 工艺层对应,生成命令中的 MAPPING_FILE 指向它。必须与 LVS 规则、金属栈和 grid 配套;可以按下述规则共享。 |
common.opt | 可选 | PDK 附加 StarRC 命令,存在时自动追加到生成命令末尾。单角使用当前角的文件;多角只使用所选第一个 corner 的文件,因此多角共有设置应保持一致。 |
OA_DEVICE_MAP | 输出原生 OA view 时必需 | 把提取器件及相关信息映射到目标 OA/PDK 器件。可放在 corner 中供自动发现,或由 RCE_STARRC_OA_DEVICE_MAP 指定其他位置。 |
OA_LAYER_MAP | 输出原生 OA view 时必需 | 把提取层映射到 OA 层用途。可由 RCE_STARRC_OA_LAYER_MAP 指定;它与上面的 tran.map、stream-out 的 TECH_LAYER_MAP 用途不同。 |
文件名查找顺序:grid 优先取 nxtgrd,否则要求本角中只有一个 *.nxtgrd;mapping 依次找 tran.map、map、MAPPING_FILE、mapping_file,再尝试唯一的 *.map。多个后缀候选会产生歧义,推荐用上面两个固定名称明确选择。
若所有角确实共用同一映射,可以只在 starrc/ 根放 MAPPING_FILE 或 mapping_file;本角没有 mapping 候选时才回退到根目录。仅有根目录的 tran.map 不会按此规则共享。多角运行仍须为每个角准备各自的 grid。
例如已有 PDK 使用 starrcxt.nxtgrd、starrcxt_mapping 等原始名称时,可在 corner 中建立 nxtgrd、tran.map 入口指向配套文件。*.itf 是工艺建模输入,SiCo 提取时读取准备好的 NXTGRD;它不能直接替代 nxtgrd。
示例三 · Calibre XRC
$PDK_ROOT/
├── pv/
│ └── lvs-rc.cal # 必需:独立的 RCE LVS runset
└── rc/stack_A/calibre-xrc/
├── Typ/
│ ├── xrc.cal # 必需:本角的 XRC 规则入口
│ ├── rules # 按规则依赖:此处仅作文件名示例
│ ├── hcell_list # 启用 hcell 时需要
│ ├── xcell_list # 可选:PDK 提供的 xcell/blocking 清单
│ └── calview.cellmap # 输出 Calibre View 时需要
├── Cmax/ # 各角都有自己的 xrc.cal
├── Cmin/
├── RCmax/
└── RCmin/| 文件 | 需要条件 | 作用与配置 |
|---|---|---|
xrc.cal | 每个 corner 必需 | 本角的 XRC 提取规则入口,负责选取该角的模型、规则与工艺设置。可为 PDK 规则文件或站点配套包装文件;此名称用于 GUI 识别 corner。 |
| 规则引用的文件 如 rules | 被规则引用时必需 | 提供实际提取模型或其他 SVRF 规则。例如原始工艺包含 rules、DFM 等依赖时应保持完整引用。rules 不是 SiCo 强制的固定文件名。 |
hcell_list | 启用 LVS hcell 时必需 | 指定版图与源网表的层次 cell 对应,用于 XRC LVS 的 -hcell。GUI 启用 hcell 后须在表单中填写文件路径;手写 TOML 未指定 hcell 路径时,才回退到本角 hcell_list。 |
xcell_list | 可选的 PDK 基础清单 | XRC 层次抽取/blocking 的 cell 清单,用于 PDB 阶段的 -xcell。本角存在时会自动读取,也可显式指定。仅使用用户 Block Cells 时可由 SiCo 在运行目录生成清单,不要求预置此文件;两种方式都要求启用 hcell,并保持 cell 映射相符。 |
calview.cellmap | 输出 Calibre View 时必需 | 将提取网表中的器件映射到 Virtuoso 库/cell 及参数。默认取当前角此文件,也可用 RCE_CALIBRE_VIEW_CELLMAP 指向共享文件;普通 DSPF/SPICE 输出不要求它。 |
| 独立 LVS runset 示例: pv/lvs-rc.cal | XRC 运行必需,可放在 corner 外 | 由 RCE 表单中的 LVS Runset(环境候选 RCE_LVS_FILE)写入 lvs.runset_file。SiCo 先 include 这份文件,再 include xrc.cal;两者必须是不同文件,并使用配套且不重复定义的规则。 |
GUI 会明确保存 hcell 开关;手写 XRC TOML 若省略 lvs.hcell_enable,默认按启用处理,无显式路径时会要求 corner 下存在 hcell_list。不使用层次 cell 清单的流程应按工艺要求关闭该选项;不要用空目录冒充清单文件。
将原始 calibre.rcx 整理成 xrc.cal 时,还要核对它的 include、工艺角开关和 LVS 内容。SiCo 从运行目录启动 Calibre,简单改名或建立软链接不会自动修复规则里的 ./rules、./DFM/… 等相对路径。应由站点提供路径完整、适合该角的规则入口。
运行前核对:三个 techdir 都应能列出期望的角;各角文件使用对应的工艺版本、金属栈和 RC 模型;所有软链接和规则引用在实际执行节点可读;需要 OA view 或 blocking 时已补齐相应映射和清单。随后按下面的步骤配置提取。
配置一次提取
- 选择 SiCo → RCE,加载 RCE Profile 或填写输入。支持 OA、CDL+GDS、CDL+LAY、SCH+GDS;使用 SVDB 或 CCI 时必须确认它们来自匹配且已通过 LVS 的设计。
- 选择 EXT Engine 和 Process Directory,确认 Process Corner。选择与提取引擎配套的 LVS runset;CalXRC 同样需要独立 LVS runset,另由当前 corner 提供 xrc.cal。
- 设置提取温度、RC 类型、top cell 来源和命名来源。常见完整寄生选项为 R+Cg+Cc;其他模式按设计目标与引擎支持选择。
- 选择输出格式与必要的 view 目标;按需设置 Nets、Block Cells、寄生过滤和 pin order。
- 确认运行目录、LVS CPU / EXT CPU 和主机,运行后检查各阶段日志与实际输出。
单角与多角
Single Corner 使用一个工艺角与温度;Multiple Corners 逐行勾选工艺角,并为每行设置温度。StarRC 同时最多选择 15 个 corner;StarRC 和 Calibre XRC 多角只支持文件网表输出。GUI 多角列表最多展示 32 个有效 corner,工艺目录过大时应缩小范围。
CLI TOML 用 extract.corners 和 extract.corner_temperatures 保存完整选择,两者一一对应。不要只修改首个兼容字段 corner 或 temperature 就认为已经改变全部多角配置。
各引擎支持的输出格式
| 引擎 | 文件输出 | 原生 OA 输出 |
|---|---|---|
| QRC | sp(spice/hspice 为别名)、dspf、spef | view → Smart / Extracted |
| StarRC | dspf / spf、spef | view → OpenAccess Parasitic View |
| CalXRC | dspf、sp / spice | view → Calibre View |
为默认引擎设置对应的 RCE_OUTPUT_CHOICES:例如 QRC 用 sp,dspf,spef,view,CalXRC 用 dspf,spice,view。旧运行配置仍可能出现 extview / smartview(QRC)、calibreview(Calibre)、starrcview(StarRC);新 Profile 统一使用 view 与 extract.view.kind。
输出原生 OA 寄生 view
| 引擎 / View | 默认 view 名称 | 额外配置 |
|---|---|---|
| QRC Smart / Extracted View | av_extracted | 有效 OA 目标、对应 layout view;原生输出使用 schematic 命名空间。 |
| Calibre View | calibre | RCE_CALIBRE_VIEW_CELLMAP 或当前 corner 的 calview.cellmap;需 Calibre–Virtuoso 集成。 |
| StarRC OpenAccess Parasitic View | starrc | RCE_STARRC_OA_DEVICE_MAP 和 RCE_STARRC_OA_LAYER_MAP,或 corner 中可识别的配套映射。 |
Output Type 选择统一的 view,再选择 View Kind。OA 输入从选定设计解析目标;非 OA 输入需要明确的 lib/cell/view。StarRC 的 OA device/layer mapping 不能用 stream-out 的 TECH_LAYER_MAP 替代。
[extract]
tool = "QRC"
tech_dir = "${PDK_ROOT}/rc/quantus"
corner = "Typ"
corners = ["Typ"]
temperature = "25"
corner_temperatures = ["25"]
output_type = "view"
[extract.view]
kind = "smart"
library = "my_design"
cell = "amplifier"
name = "av_extracted"
layout_view = "layout"这是完整运行 TOML 的局部示例,还需配置 run、input、LVS 与 runtime 等内容。推荐先在 GUI 填好并运行生成完整文件。
选择性抽取与 blocking
Nets 与 Cells 可填写空格分隔的名称,或一个可访问文件的路径。Profile 加载时,只有实际存在的文件才按文件路径解析;例如 VDD VSS 保持内联网络名。
QRC foundry blocking 文件由 RCE_QUANTUS_BLOCK_CELL_FILE 指定。相对路径基于当前有效 corner(多角时为所选首角),例如 fabBlockCells.list;未配置时只使用用户 Block Cells,不猜测 foundry 文件名。设置后文件缺失会在启动 Quantus 前报错。
命令行与运行记录
rce run /path/to/run/rce.toml --dry-run
rce generate /path/to/run/rce.toml
rce run /path/to/run/rce.toml
# 打开已经生成的 DSPF 文件进行分析。
dspfana /path/to/output/amplifier.dspfQRC / StarRC 常见阶段为 CDL、GDS、LVS、query、extract;输入 SVDB / CCI 时会复用已有阶段数据。Calibre XRC 使用其自身 LVS / PDB / FMT 阶段。失败时先定位具体阶段,再核对输入、许可证和工具日志。
XRC 在非空 MGC_HOME 下使用 $MGC_HOME/bin/calibre;未设置时查 PATH。普通 DRC / LVS / RCE 前置 Calibre 阶段仍查 PATH。流程默认命令维护方式见公共默认项。