跳转至

Virtuoso_全量使用与管理手册

上传件:Virtuoso_全量使用与管理手册.md(原文件可下载)。

本手册整合 Virtuoso 基础操作、高级仿真、集群调度、管理员配置、第三方工具集成等全维度内容,覆盖模拟 IC 设计前端仿真、版图设计、工具运维全流程,适用于模拟前端工程师、IC 设计仿真工程师及 Virtuoso 管理员,基于 IC6.1.8(推荐版本)编写,兼顾实操性与运维规范性。

一、工具核心认知

1.1 Virtuoso工具定位与核心功能

Virtuoso 是 Cadence 旗下模拟 / 混合信号 IC 设计的核心 GUI 平台,本身不具备仿真计算能力,仅提供设计、仿真配置的可视化界面,实际仿真通过后台调用Spectre/Hspice等仿真器完成,核心功能覆盖 IC 设计全流程:

  • 设计类:原理图绘制、版图绘制、GDSII 导入 / 导出
  • 仿真类:仿真参数配置、仿真任务运行与控制、波形结果分析
  • 验证类:版图验证前端 GUI 调用、工艺角 / 蒙特卡罗仿真支持
  • 集成类:第三方 EDA 工具(Calibre/EMX/StarRC)无缝集成

1.2 推荐版本与版本避坑

版本类型 推荐选择 不推荐原因
主版本 IC6.1.8 ISR16 及以上 修复 cdsXvnc 残留、x-lock 文件占用等多用户集群问题,改用 xvfb 实现分布式任务,稳定性最优
低版本 IC6.1.7(仅迫不得已使用) 存在字体混乱、缺码,cdsXvnc 端口抢占,需升级至 IC6.1.7-64b.500.23 + 并打 Hotfix_IC06.17.823 补丁
更早版本 IC6.1.5~IC6.1.8 ISR14 分布式任务依赖 cdsXvnc,易出现端口占用、任务提交失败,无官方修复支持

配套仿真器:Spectre 19 ISR19 及以上,对 AVX512 指令集优化,Intel 高主频机型运行性能更佳

1.3 核心组件与关键概念

1.3.1 仿真界面组件
组件 核心能力 适用场景
ADE L 经典轻量界面,仅支持单 job 本地运行,无分布式能力 单个模块小仿真、快速验证、单 case 调试
ADE XL/ADE Explorer ADE L 超集,支持多 job 分布式仿真,兼容 LBS / 调度器 Multi-corner(工艺角)、Monte Carlo(蒙特卡罗)仿真,集群环境大规模仿真
1.3.2 设计仿真关键概念
概念 定义 / 说明 工程价值
网表(Netlist) 原理图 “编译” 后的文本文档,仿真器核心输入 仿真器与 GUI 的桥梁,定义电路拓扑与器件连接
Model Files PDK 中器件物理 / 电气特性描述文件,文本格式 决定仿真精度,匹配实际工艺制造特性
工艺角(Corner) 器件工艺误差上下限的排列组合,对应 Model Files 的 section 字段 验证电路在工艺极限下的边界性能,保证设计鲁棒性
蒙特卡罗(Monte Carlo) 器件参数在工艺偏差内随机取值仿真,一个取样点为一个 job 验证芯片性能一致性,直接关联产品良率(通常 500-2000 个 job 并发)
前仿(Pre-simulation) 仅原理图转网表仿真,不考虑寄生特性 设计初期快速验证,定位模块级问题
后仿(Post-simulation) 从版图抽取网表,考虑导线 / 过孔寄生、信号串扰 设计后期整体验证,接近芯片实际工作状态,需更大内存
LBS(Load Balance System) 负载均衡调度器,原生支持 LSF/SGE,速石平台适配 SGE wrapper 集群环境下分布式任务调度,提高仿真效率
1.3.3 Virtuoso 系列差异
系列 功能特点 适用工艺节点
ic 基础版,功能全面,社区资料最丰富 平面 MOS 工艺(如 0.18μm、0.35μm)
icadv 进阶版,支持先进工艺设计流程 FinFET 工艺(如 28nm、14nm)
icadvm icadv 新版,优化先进工艺适配 5nm 及以下更先进制程

二、Virtuoso环境准备与工程标准化搭建

2.1 系统与基础环境要求

操作系统:CentOS7(官方推荐,兼容性最优)

环境管理:推荐使用modules统一管理 EDA 工具环境变量,避免多用户配置不一致

硬件要求:集群节点建议 Intel 高主频机型(适配 Spectre AVX512 优化),单节点核数≥8,内存≥64G(后仿建议≥128G)

2.2 工程目录标准化规范

核心原则:不使用用户 HOME 目录,挂载专用 project 目录,保证数据归档与权限管理便捷性。

2.2.1 集群环境推荐路径
/projects/<PROJ_NAME>/<USER>  # 按项目+用户划分,PROJ_NAME为项目名,USER为用户名
2.2.2 工程必备文件(初始化最小集)

所有文件均需与 PDK 匹配,Foundry 提供基础文件,用户自定义配置补充,文件作用与来源如下:

文件名 文件类型 核心用途 来源 / 配置方
display.drf 普通文件 定义 layout / 原理图的显示层次、样式、颜色 Foundry(PDK 自带)
cds.lib 普通文件 定义工艺库 / 设计库的名称与实际物理路径 用户根据 PDK 配置编写
.cdsinit 隐藏文件 Virtuoso 初始化配置,含第三方工具集成、GUI 自定义、仿真参数默认值 用户编写(工程级 / 全局级)
models 软链接 指向 PDK 中 Spectre Model Files 所在文件夹 用户创建(ln -s 源路径 目标路径)
2.2.3 工程文件的作用
  • cds.lib‌:定义设计库的映射关系,是访问工艺库和设计库的基础。
  • ‌display.drf‌:定义原理图和版图的图形显示规则,如颜色、线型等
  • $HOME/.cdsenv:设置仿真精度、格点间距、默认仿真结果路径等
  • $HOME/.cdsinit‌:用户主目录下的初始化脚本文件。这是一个Skill脚本,用于加载用户自定义脚本、定义快捷键、配置工作流程等

当前工作目录的cds.lib和display.drf‌:用于覆盖用户主目录或系统默认的库和显示设置。

环境变量CDS_LOAD_ENV可以控制.cdsenv的加载行为,例如设置为CWD+可同时加载工作目录和主目录的配置

2.3.4 集群调度器启动(srun 方式)

若需通过调度器启动 GUI,直接使用srun,不推荐 srun --x11(Slurm 对 X11 转发支持不佳):

module load ic/6.1.8
module load spectre/19.10
srun virtuoso &

2.4 环境变量全局配置

2.4.1 核心环境变量(必配)
环境变量 取值(速石 FCCE/FCP 平台) 作用
LBS_BASE_SYSTEM LBS_SGE 指定 LBS 调度器类型,适配 SGE wrapper
CDS_XVNC_OFFSET 0-9(可选) 低版本 Virtuoso 端口偏移,避免多用户端口抢占
CDS_XVNC_TENBASE 1-9/+(可选) 低版本 Virtuoso 端口十位基数,配合 OFFSET 使用
2.4.2 配置方式

将环境变量写入/etc/profile或 modules 配置文件,实现全局统一配置,避免每个用户单独编写脚本:

# 示例:modules配置文件中添加
setenv LBS_BASE_SYSTEM LBS_SGE
setenv CDS_XVNC_OFFSET 2

三、Virtuoso基础仿真流程(ADE L)

ADE L 为单任务本地仿真专用,不支持 Multi-corner、LBS 分布式计算,操作简洁、启动快速,适合模块级快速验证。

3.1 启动与基础配置

  1. 原理图界面执行:Launch → ADE L,打开仿真配置界面;

  2. 仿真器全局设置:点击Setup → High-Performance Simulation,优先级高于具体分析设置,会覆盖后者;

  3. 运行模式:选择 Spectre/APS(APS 为高性能模式,推荐);

  4. 精度预设:Conservative(保守,精度最高)、Moderate(中等,平衡精度与速度)、Liberal(宽松,速度最快),精度定义参考《Spectre 用户参考手册》;
  5. 多线程:ADE L 仅本地运行,建议关闭或设为 Auto。

  6. 具体分析设置:点击Analyses → Choose Analyses,选择仿真类型并配置参数:

  7. 常用仿真类型:tran(瞬态)、ac(交流)、dc(直流)、noise(噪声)、stb(稳定性);

  8. 关键参数:瞬态仿真需设置Stop Time(仿真终止时间,区别于仿真耗时),如 20u(20 微秒)。

  9. 变量与输出配置:

  10. 设计变量:Variables → Edit,定义器件参数、电源电压等变量(如 vdd=1.8V,load=1pF);

  11. 输出信号:Outputs → To Be Plotted,直接在原理图点选需观测的线网 / 器件端口,仿真后自动绘制波形。

3.2 仿真运行与结果查看

点击仿真界面Simulation → Run,任务以 local 方式在当前节点运行;

仿真完成后,波形自动弹出,可通过Plot菜单进行波形放大、叠加、测量(如峰峰值、延迟);

结果保存:File → Save Results,将仿真结果保存为 psf 格式,便于后续回溯。

四、Virtuoso高级仿真流程(ADE XL)

ADE XL 是集群环境大规模仿真核心工具,支持 Multi-corner、Monte Carlo 多 job 分布式仿真,包含 ADE L 全部功能,是模拟 IC 设计后期仿真的首选。

4.1 ADE XL 会话管理

支持新建会话(全新仿真)和打开已有会话(旧项目续跑 / 结果分析),两种方式操作如下:

4.1.1 新建会话(适用于全新仿真)
  1. 原理图界面执行:Launch → ADE XL;
  2. 弹出对话框选择Create New View,默认配置直接点击OK(自动生成 adexl 视图文件)。
4.1.2 打开已有会话(适用于旧项目)

方式 1(Library Manager):

  1. 点击Tools → Library Manager;
  2. 按Library → Cell → View层级,找到adexl视图,双击打开。

方式 2(原理图直接打开):

  1. 原理图界面Launch → ADE XL;
  2. 选择Open Existing View,选择对应工程的 adexl 文件,点击OK。

4.2 仿真 Case 标准化配置

4.2.1 添加 Test(关联原理图)
  1. 展开 ADE XL 左侧Tests,点击Click to add test;
  2. 在弹出的Choose Design中选择仿真对应的Library/Cell/View(schematic);
  3. 打开模式选择read(只读,避免修改原理图),点击OK完成关联。
4.2.2 添加仿真分析
  1. 展开左侧Analyses,点击Click to add analysis;

  2. 选择仿真类型(tran/ac/noise/Monte Carlo 等),勾选 Enabled开启该分析;

  3. 配置仿真参数(如瞬态仿真Stop Time、精度errpreset),点击OK;

  4. 蒙特卡罗仿真:需额外设置Number of Runs(取样次数)、Distribution(参数分布类型)。

4.2.3 添加输出信号(观测项)
  1. 切换至Outputs Setup选项卡,右键空白处选择Add Signal;
  2. 点击Detail窗格右侧...按钮,回到原理图点选需观测的线网 / 器件端口;
  3. 勾选信号对应的Plot(仿真后绘制波形)和Save(保存结果),完成输出配置。

4.3 分布式 Job 提交设置(集群核心)

ADE XL 支持Command 方式(首推)*和*LBS 方式两种分布式提交方式,核心原则:调度器资源分配参数与 Spectre 多线程参数必须严格一致,避免调度器资源统计错误。

4.3.1 方式 1:Command 方式(首推,原生支持速石调度器)

核心优势:不依赖 LSF/SGE wrapper,无需初始化环境变量,支持所有调度器,稳定性最优。

  1. 点击Options → Job Setup,Distribution Method选择Command;

  2. 核心配置项:

  3. Command:填入调度器原生命令,格式为srun -c<核数> --mem=<内存> -p<分区>,示例:srun -c4 --mem=16G -p hpc(4 核、16G 内存、提交至 hpc 分区);

  4. Max. Jobs:Virtuoso 一次向调度器提交的最大 job 数(如 16,根据集群资源调整);
  5. Timeouts:超时时间,默认 300s 即可,无需修改。

  6. srun 常用参数详解(速石平台):

| 参数 | 用法 | 说明 |

| ---- | ---- | ---- |

|-c N|-c 4| 指定单个 job 使用的 CPU 核数,不可跨服务器,默认 1|

|--mem X|--mem=16G| 指定单个 job 最小分配内存,溢出不终止,不足则 pending|

|-p <分区>|-p hpc| 指定任务运行分区,不加则使用默认分区 |

|-t <时长>|| 指定 job 最大运行时长,格式为 h:m:s,超时自动终止 |

|--deadline|| 指定 job 强制结束时刻,优先级高于 - t|

|-w <节点>|| 指定 job 运行节点,资源不足则 pending|

4.3.2.2 Job Setup 图形化配置

点击Options → Job Setup,Distribution Method选择LBS;

核心配置项:

  • Hard Resource Req:每 job 预分配资源,格式num_proc=<核数>,mem_free=<内存/core>,示例:num_proc=8,mem_free=10G(8 核、每核 10G,总计 80G);
  • Queue:勾选后填写分区名(如 ssim),不勾选则使用默认分区;
  • Max Jobs:一次提交的最大 job 数(如 16);
  • Job Policy Name:自定义策略名称(如 ADC_8core_80G),可保存复用,避免重复配置
4.3.3 特殊场景:srun Virtuoso 二次提交 job

若通过srun virtuoso将 GUI 运行在计算节点(非 login 节点),二次分发仿真任务时需修改提交命令,否则任务无法提交:

  1. 方案 1:将 Command 中的srun替换为salloc srun,示例:salloc srun -c4 --mem=16G -p hpc;
  2. 方案 2:使用 lsf wrapper 的bsub -I命令替代 srun,示例:bsub -I -n4 -q hpc -R rusage[mem=16G]

4.4 Spectre 多线程精细化设置

多线程设置直接影响仿真效率,禁止盲目设置大核数,需结合电路网表大小、结构适配,步骤如下:

点击Setup → High-Performance Simulation,Simulation Performance Mode选择APS(高性能模式);

Multi-Threading设置(核心):

  • 试跑阶段:选择Auto,让 Spectre 自动分配线程(避免手动设置被驳回);
  • 正式运行:根据试跑结果选择Manual,填入实际使用的线程数(超线程为 vCPU,关闭超线程则为物理核);

可选配置:Processor affinity,指定线程绑定的 CPU 核(如 0-3),适合对性能要求极高的仿真。

最佳实践:

  • 先以 1 个 job 试跑,查看仿真日志中Multithreading Enabled: N threads,记录 N 值;
  • 正式批量仿真时,手动将线程数设为 N,同时让调度器参数(-c/num_proc)与 N 严格一致

4.5 多任务资源分配最佳实践(集群避坑核心)

调度器无法自动识别 Spectre 实际使用的 CPU / 内存,若参数不匹配会导致节点满载仍提交任务、job 运行异常、节点死机等问题,核心规则如下:

参数一致性:High-Performance Simulation 中手动指定的线程数,与 Job Setup 中的资源参数必须完全一致:

  • Command 方式:srun -c N ↔ 手动线程数 N;
  • LBS 方式:num_proc=N ↔ 手动线程数 N;

内存合理预估:mem_free为 job 内存下限,实际使用超分配不会被终止,但需根据前仿 / 后仿预估(后仿内存需求通常为前仿的 2-5 倍);

禁止直登计算节点:集群环境下,所有任务必须通过调度器提交,禁止 ssh 直接登录计算节点执行,避免抢占资源导致调度器统计错误;

大电路特殊处理:元件数量>128 的电路,必须手动指定线程数,禁止使用 Auto,同时开启 APS 高性能模式。

4.6 仿真结果查看与回溯

4.6.1 实时结果查看
  1. 仿真完成后,切换至 ADE XLResults选项卡;
  2. 双击波形图标,打开Virtuoso Visualization & Analysis XL,可查看:
  3. 信号波形:瞬态 / 交流 / 噪声波形的放大、叠加、测量;
  4. 工艺角对比:不同 Corner 下的波形差异,直观查看边界性能;
  5. 蒙特卡罗统计:良率分析、参数分布、Pass/Fail 结果统计。
4.6.2 异常中断任务结果回溯

若 GUI 退出 / 崩溃导致仿真中断,已完成的 job 结果可直接回溯,无需重新运行:

  1. 切换至 ADE XLHistory选项卡,找到异常中断的仿真作业(按提交时间排序);
  2. 展开作业,右键选择View Results,即可查看已完成 job 的波形与统计结果;
  3. 未完成 job:右键选择Re-run Unfinished/Error Points,单独续跑失败 / 未完成的 job。

五、Virtuoso与第三方工具深度集成

Virtuoso 支持与Calibre/EMX/StarRC/SOS等主流 EDA 工具无缝集成,集成配置通过 .cdsinit文件实现,支持工程级配置 (仅当前工程生效)和全局级配置(所有工程生效)。

5.1 集成配置文件说明

  • 工程级:将.cdsinit 放在工程工作目录(/projects/<PROJ_NAME>/<USER>),仅当前工程生效;
  • 全局级:将.cdsinit 放在用户 HOME 目录(~/.cdsinit),所有工程均生效;
  • 语法:基于SKILL 语言(Cadence 专用脚本语言),语法参考《Virtuoso SKILL 语言参考手册》

5.2 主流工具集成配置示例

5.2.1 EMX(电磁仿真工具)集成

EMX 用于提取电感、变压器等无源器件的电磁特性,集成后可在 Virtuoso 中直接调用,配置如下:

;; EMX初始化开始
(load "emxskill/emxconfig.i")  ; 加载EMX配置文件,路径为EMX安装目录下的skill文件夹
;; 设置EMX默认仿真参数
(envSetVal "emx" "simType" 'string "3D")  ; 仿真类型:2D/3D
(envSetVal "emx" "freq" 'real 1e9)        ; 默认仿真频率:1GHz
;; EMX初始化结束
5.2.2 Calibre(物理验证工具)集成

Calibre 用于版图 DRC(设计规则检查)、LVS(版图与原理图一致性检查),集成后可在版图界面直接调用,配置如下:

;; Calibre初始化开始
(load "calibre/calibreSkill.i")  ; 加载Calibre SKILL库
;; 设置Calibre DRC/LVS默认规则文件
(envSetVal "calibre" "drcRuleFile" 'string "./rules/drc.rul")  ; DRC规则文件路径
(envSetVal "calibre" "lvsRuleFile" 'string "./rules/lvs.rul")  ; LVS规则文件路径
;; 版图界面添加Calibre菜单
(hiMenuAdd "Calibre" "Tools" '("DRC" "LVS" "PEX") '("calibreDRC" "calibreLVS" "calibrePEX"))
;; Calibre初始化结束
5.2.3 StarRC(寄生参数提取工具)集成

StarRC 用于后仿寄生参数提取(提取导线 / 过孔的 RC/RLC 寄生),集成后可直接在 Virtuoso 中生成提取脚本,配置如下:

;; StarRC初始化开始
(load "starrc/starrcSkill.i")  ; 加载StarRC SKILL库
;; 设置StarRC默认工艺文件与提取级别
(envSetVal "starrc" "techFile" 'string "./tech/starrc.tch")  ; 工艺文件路径
(envSetVal "starrc" "extractLevel" 'int 3)  ; 提取级别:1(全局)~5(精细)
;; StarRC初始化结束
5.2.4 自定义仿真数据目录
;; 设置仿真临时数据目录
(envSetVal "asimenv" "tmpDir" 'string "/projects/<PROJ_NAME>/<USER>/virtuoso_tmp")
;; 设置仿真结果默认保存目录
(envSetVal "adexl" "resultDir" 'string "/projects/<PROJ_NAME>/<USER>/virtuoso_results")

5.3 集成后工具调用方法

GUI 直接调用:集成后,工具菜单会自动添加至 Virtuoso 的Tools菜单,直接点击对应功能(如 Calibre → DRC)即可;

命令行调用:在 Virtuoso 命令行窗口输入工具专用命令(如emxSimulate、calibreDRC),执行对应操作;

批量调用:通过 SKILL 脚本编写批量操作命令,实现一键仿真 / 验证

六、Virtuoso GUI 自定义与优化

6.1 字体自定义(解决字体混乱 / 缺码)

针对 CentOS7 下 Virtuoso 字体混乱、中文缺码、显示不全问题,提供可视化配置和脚本配置两种方式,推荐结合使用。

6.1.1 可视化配置(临时生效)
  1. 打开 Virtuoso,点击Options → Set Fonts;
  2. 分别设置(标签)和(文本)字体:
  3. 推荐字体:Open Sans(Label)、Roboto Mono(Text),支持英文 / 数字完美显示;
  4. 字体大小:根据屏幕分辨率调整,推荐 11-14 号;
  5. 点击Apply → OK,立即生效,关闭 Virtuoso 后失效。
6.1.2 脚本配置(永久生效)

在.cdsinit 文件中添加字体配置,启动 Virtuoso 自动加载,永久生效:

;; GUI字体自定义
(hiSetFont "label" '("Open Sans" 12 0 0))  ; 标签字体:Open Sans,12号
(hiSetFont "text" '("Roboto Mono" 11 0 0))   ; 文本字体:Roboto Mono,11号
(hiSetFont "menu" '("Open Sans" 11 0 0))     ; 菜单字体:Open Sans,11号
;; 开启字体抗锯齿
(envSetVal "hi" "fontSmoothing" 'boolean t)

6.2 界面布局与快捷键自定义

6.2.1 界面布局自定义

在.cdsinit 中设置仿真界面、库管理器的默认大小和位置,避免每次手动调整:

;; 设置ADE XL界面默认大小(宽x高)
(envSetVal "asimenv.window" "width" 'int 1200)
(envSetVal "asimenv.window" "height" 'int 800)
;; 设置库管理器默认位置(x,y坐标)
(envSetVal "libManager.window" "x" 'int 50)
(envSetVal "libManager.window" "y" 'int 50)
6.2.2 快捷键自定义

自定义常用操作快捷键(如原理图保存、仿真运行),提高操作效率:

;; 原理图一键保存:Ctrl+S
(schBindKey "Ctrl<Key>s" 'schSave)
;; ADE XL一键运行仿真:F5
(adexlBindKey "<Key>f5" 'adexlRunSimulation)
;; 版图一键放大:Ctrl+++
(leBindKey "Ctrl<Key>plus" 'leZoomIn)

七、Virtuoso 管理员运维指南

7.1 集群多用户管理核心规则

  1. 版本统一:所有用户使用IC6.1.8 ISR16+,禁止混合使用低版本,避免 cdsXvnc 端口抢占;
  2. 资源隔离:按项目划分工程目录,设置目录权限(chmod 750 /projects/<PROJ_NAME>/<USER>),避免跨用户数据篡改;
  3. 任务管控:通过调度器配置资源配额(如每个用户最大并行 job 数 32,单 job 最大核数 16),防止个别用户抢占集群资源;
  4. 日志监控:定期查看 Virtuoso 日志(~/.virtuoso/log)和调度器日志,及时发现任务异常、资源耗尽问题。

7.2 GUI 退出后仿真任务后台保持运行

实现 Virtuoso GUI 退出 / 崩溃后,Spectre 仿真任务继续在后台运行,避免前期工作白费,配置如下:

  1. 在工程工作目录的.cdsinit 文件中添加以下 SKILL 代码:

lisp ; 开启GUI退出后后台继续运行仿真 envSetVal("adexl.distribute" "continueICRPRunOnAbruptGUIExit" 'boolean t)

  1. 生效条件与限制:

  2. 为 Virtuoso 内置功能,与调度器类型无关,无需额外配置;

  3. 仅适用于GUI 界面退出 / 崩溃,Spectre 本身崩溃、计算节点 OOM、系统死机无效;
  4. 静态集群有效,动态集群(auto-scale)节点释放后,进程会被销毁,无法继续运行

7.3 常见故障排查与解决

7.3.1 字体混乱 / 缺码 / 显示不全

故障原因:CentOS7 缺少 xorg-x11-front 的 75dpi/100dpi 字体包,或 IC617 版本未打补丁。

  1. 安装缺失字体包:
yum install -y xorg-x11-fonts-75dpi xorg-x11-fonts-100dpi xorg-x11-fonts-misc
  1. IC617 版本:升级至 IC6.1.7-64b.500.23+,并安装 Hotfix_IC06.17.823_lnx86 补丁。
7.3.2 ADE XL 无 LBS 选项

故障原因:缺少LBS_BASE_SYSTEM环境变量,或变量取值错误。

解决方法:

  1. 检查环境变量:env | grep LBS_BASE_SYSTEM,确认取值为LBS_SGE;
  2. 若未设置,执行:setenv LBS_BASE_SYSTEM LBS_SGE,并写入全局配置文件。
7.3.3 cdsXvnc 残留与 x-lock 文件占用(低版本核心故障)

故障触发条件:

  1. Virtuoso 版本:IC6.1.5~IC6.1.8 ISR14;

  2. 分布式任务以 LBS/Command 方式运行;

  3. 仿真异常退出,或多用户(>10 人)同时运行仿真。

故障现象:job 状态显示 TERMINATED,无法提交分布式任务,计算节点/tmp目录下出现.X*-Lock文件,存在 cdsXvnc 残留进程。

解决方法:

方法 1:官方推荐(彻底解决)

升级 Virtuoso 至IC6.1.8 ISR15+,官方放弃 cdsXvnc,改用 xvfb 实现分布式任务,无端口占用问题。

方法 2:临时解决(低版本迫不得已使用)

  1. 清理残留进程与文件:登录计算节点,执行以下命令(核实文件 / 进程所属用户,避免误删):
# 杀死cdsXvnc残留进程
ps -ef | grep cdsXvnc | grep -v grep | awk '{print $2}' | xargs kill -9
# 删除x-lock文件
rm -f /tmp/.X*-Lock
  1. 多用户端口错开:为每个用户配置不同的 CDS_XVNC_OFFSET/CDS_XVNC_TENBASE,避免端口抢占:
# 用户A
setenv CDS_XVNC_OFFSET 1
setenv CDS_XVNC_TENBASE 9
# 用户B
setenv CDS_XVNC_OFFSET 2
setenv CDS_XVNC_TENBASE 9
7.3.4 调度器资源统计错误,job 运行异常

故障原因:Spectre 多线程参数与调度器资源分配参数不一致,调度器无法识别实际资源使用。

解决方法:

  1. 严格保证参数一致性:手动指定 Spectre 线程数,让调度器参数(-c/num_proc)与之一致;
  2. 禁止使用 Auto 多线程:批量仿真时必须手动指定线程数;
  3. 清理计算节点非调度器任务:ssh 登录计算节点,杀死直登执行的任务,统一通过调度器提交

八 Spectre 电路仿真器全量使用手册

本手册全面覆盖 Spectre 电路仿真器的核心认知、环境配置、使用方法、多线程与精度调优、与 Virtuoso 协同操作、问题排查等内容,适用于模拟 IC 设计工程师、仿真工程师及运维人员,基于Spectre 19.10(推荐版本)编写,兼顾命令行原生使用与 Virtuoso GUI 集成使用场景,同时包含集群调度适配、性能优化等工程化实操方案

1 工具核心认知

Spectre 是 Cadence 旗下经典的模拟 / 混合信号电路仿真器,为业界黄金仿真标准,Foundry 通常以 Spectre 的仿真结果作为校正 PDK(工艺设计包)数据的参考依据,是模拟 IC 设计从模块验证到芯片量产全流程的核心仿真工具。

  • 本质:纯命令行工具,无独立 GUI 界面,通过读入网表、模型文件完成电路微分方程组的数值求解,输出仿真结果与日志;
  • 典型应用:配合 Virtuoso 作为后台仿真引擎使用,也可单独通过命令行 / 脚本实现批量仿真;
  • 适用场景:前仿(原理图仿真)、后仿(版图寄生提取后仿真)、工艺角(Corner)仿真、蒙特卡罗(Monte Carlo)仿真、噪声 / 稳定性 / 瞬态等各类电路特性仿真
1.2 核心特性与限制
特性 说明
GPU 支持 无,模拟电路仿真的微分方程组求解算法暂不适配 GPU,工具本身也未提供 GPU 加速能力
调度器支持 完美适配集群调度器,可通过 srun/bsub/qsub 等命令直接提交至 Slurm/LSF/SGE 调度器
多线程支持 有条件支持,仅电路元件数量≥128 时可开启多线程,否则会被强制单线程运行;线程数为上限值,实际使用由电路结构 / 仿真算法决定,无法强制干预
精度分级 提供多档精度配置,可在速度与精度间灵活权衡,满足不同电路仿真需求
工艺适配 支持全工艺节点,从传统平面 MOS 工艺到先进 FinFET/5nm 工艺,兼容各 Foundry 的 PDK 模型文件
1.3 核心版本与模式差异

Spectre 提供多种运行模式,不同模式对应不同的多线程支持、精度与性能,适配不同仿真场景,核心模式及多线程参数限制如下:

运行模式 多线程开关 默认线程数 最大线程数 核心适用场景
Spectre(默认) Off 4 4 简单模块单 case 仿真,对性能要求低
Spectre APS On 8 64 中大型电路仿真,兼顾精度与速度,工程化首选
Spectre X On 8 128 高精度模拟电路仿真,黄金参考仿真
Spectre XPS S-mode On 8 64 射频 / 高速混合信号电路仿真

2 环境配置与基础准备

2.1 系统与依赖要求
  • 操作系统:CentOS7(官方推荐,兼容性最优,与 Virtuoso 无缝适配);
  • 配套工具:与 Virtuoso IC6.1.8 ISR16 及以上版本搭配使用(低版本 Virtuoso 存在调度 / 端口兼容问题);
  • 硬件要求:推荐 Intel 高主频机型(对 AVX512 指令集优化,仿真性能提升显著);集群节点核数≥8,后仿建议内存≥128G。
2.2 环境变量配置(FCCE/FCP 平台标准)

Spectre 的环境变量需全局配置,推荐通过modules管理,避免用户间配置不一致,核心配置如下(csh/tcsh 环境):

# 指定Spectre安装根目录
setenv MMSIM_HOME /fastone/software/cadence/spectre/19.10
# 强制开启64位运行模式
setenv CDS_AUTO_64BIT ALL
# 调度器适配(速石平台,配合Virtuoso LBS使用)
setenv LBS_BASE_SYSTEM LBS_SGE
# 添加可执行文件路径至系统PATH
prepend-path PATH $MMSIM_HOME/bin
prepend-path PATH $MMSIM_HOME/tools/bin
prepend-path PATH $MMSIM_HOME/tools/dfII/bin

bash 环境可将setenv替换为export,prepend-path替换为export PATH=xxx:$PATH

2.3 核心输入文件准备

Spectre 的仿真输入为文本格式文件,核心包含 5 类,可通过 Virtuoso ADE L/XL 导出(执行netlist and run即可,无需完成仿真),也可手动编写,文件组成及用途如下:

文件类型 核心组成 用途 来源
电路网表 netlist、input.scs 等 描述电路拓扑、器件连接、激励源设置,是仿真的核心输入 Virtuoso 导出 / 手动编写
运行脚本 runSimulation 等 包含 Spectre 命令行指令、参数配置,实现一键仿真 Virtuoso 导出 / 手动编写
模型文件 spectre_lib(.scs/.lib) PDK 中器件的物理 / 电气特性描述,对应不同工艺角 PDK 提取
仿真日志 spectre.out、*.log 记录仿真过程、报错 / 警告信息,用于问题调试 仿真自动生成
输出配置 control、designInfo 等 指定仿真结果格式、保存路径、观测信号 Virtuoso 导出 / 手动编写
2.3.1 模型文件关键配置

模型文件为 Spectre 仿真的精度基础,需根据仿真工艺角引用对应section,典型引用格式如下(写入 input.scs):

// 引用PDK中的模型文件,指定不同工艺角section
include"/fastone/users/test/models/eflash55n_vamb.Lib.scs" section=setup
include"/fastone/users/test/models/eflash55n_vamb.Lib.scs" section=tt_io25
include"/fastone/users/test/models/eflash55n_vamb.Lib.scs" section=tt_bjt
2.4 仿真结果文件说明

仿真完成后自动生成psf 目录,为 Spectre 的标准结果格式,包含波形数据、器件参数、仿真统计等,核心内容:

  • tran.tran.tran.psfxl:瞬态仿真波形文件,可通过 Virtuoso Visualization & Analysis XL 打开查看;
  • element.info:电路器件信息统计;
  • modelParameter.info:模型参数实际取值;
  • finalTimeOP.info:直流工作点信息。

3 核心使用方法

Spectre 支持纯命令行使用和Virtuoso GUI 集成使用两种方式,前者适合批量仿真、脚本化调度,后者适合交互式仿真、参数调试,核心操作如下:

3.1 命令行原生使用(核心)
3.1.1 基础命令格式

Spectre 的所有功能通过主命令 + 参数实现,基础格式:

spectre [输入网表文件] [全局参数] [模式参数] [精度/多线程参数] [输出参数]
3.1.2 典型命令示例
spectre input.scs +escchars +log ../psf/spectre.out -format psfxl -raw ../psf +aps=conservative +mt=32 +lqtimeout 900 -maxw 5 -maxn 5
  • input.scs:核心输入网表文件;
  • +escchars:支持特殊字符解析;
  • +log ../psf/spectre.out:指定仿真日志保存路径;
  • -format psfxl -raw ../psf:指定结果格式为 psfxl,保存至../psf 目录;
  • +aps=conservative:开启 APS 模式,精度设为保守;
  • +mt=32:设置多线程上限为 32;
  • +lqtimeout 900:设置队列超时时间 900 秒;
  • -maxw/-maxn:设置仿真迭代最大警告 / 错误数
3.1.3 不同运行模式命令行参数
运行模式 启动命令行参数
Spectre(默认) spectre +mt=<N> [网表文件] [其他参数]
Spectre APS spectre +aps +mt=<N> [网表文件] [其他参数]
Spectre X spectre +preset=ax +mt=<N> [网表文件] [其他参数]
Spectre XPS S-mode spectre +xps=s +mt=<N> [网表文件] [其他参数]
3.1.4 批量仿真执行

将 Spectre 命令写入runSimulation脚本,通过调度器提交至集群,实现批量仿真:

  1. 编写脚本(runSimulation):
#!/bin/csh
module load spectre/19.10
spectre input.scs +aps +mt=16 +log ./psf/spectre.out -format psfxl -raw ./psf
  1. 添加执行权限:chmod +x runSimulation;

  2. 集群提交:sbatch runSimulation(Slurm)/bsub < runSimulation(LSF)

3.2 Virtuoso GUI 集成使用(主流场景)

Spectre 是 Virtuoso 的默认后台仿真器,通过 Virtuoso ADE L/XL 完成可视化参数配置,后台自动生成 Spectre 命令行并执行,核心操作流程参考 Virtuoso 手册,关键适配点:

  1. 仿真器选择:在 ADE L/XL 中Setup→Simulator,选择spectre;
  2. 模式与多线程配置:Setup→High-Performance Simulation,选择运行模式(Spectre/APS/X),配置多线程(Auto/Manual);
  3. 参数同步:Virtuoso 中的精度、仿真类型、激励源等配置,会自动转换为 Spectre 的命令行参数;
  4. 结果查看:仿真完成后,在 Virtuoso 中直接打开 psf 格式结果,无需手动解析。

核心优势:无需记忆复杂命令行参数,可视化调试参数,适合电路设计初期的交互式仿真。

4 多线程调优与集群调度适配

Spectre 的多线程是性能优化核心,但需与集群调度器参数严格匹配,否则会导致调度器资源统计错误、节点满载、job 运行异常等问题,核心调优方案与调度适配规则如下:

4.1 多线程核心规则
  1. 开启条件:电路元件数量≥128,否则强制单线程,手动设置+mt无效;
  2. 参数性质:+mt=<N>为线程数上限,实际使用线程数由 Spectre 内置算法根据电路结构 / 仿真类型决定,无法强制干预;
  3. 调度器识别:调度器将一个+mt=N的 Spectre 任务识别为1 个 job,而非 N 个 job,节点核数占用统计为 1 核,实际占用 N 核,需手动告知调度器实际核数需求。
4.2 多线程最佳配置流程
  1. 试跑阶段:通过 Virtuoso 设置多线程为Auto,或命令行设置+mt=64(APS 模式),执行单个 job 试跑;
  2. 获取实际线程数:查看仿真日志spectre.out,找到Multithreading Enabled: N threads,记录 N 值;
  3. 正式配置:

  4. 命令行:设置+mt=N,与试跑实际线程数一致;

  5. Virtuoso:High-Performance Simulation中选择Manual,填写 #Threads=N;

  6. 调度器适配:在调度器提交命令中指定核数为 N,与 Spectre 线程数一致。

4.3 集群调度器参数匹配规则

调度器(Slurm/LSF/SGE)无法自动识别Spectre 实际使用的核数 / 内存,需手动显式指定,否则会出现 “队列显示 1 核,实际使用 N 核” 的资源统计错误,核心匹配规则:

Spectre 配置 调度器参数(Slurm/srun) 调度器参数(LSF/bsub)
+mt=N/Manual #Threads=N srun -c N --mem=<内存> bsub -n N -R rusage[mem=<内存>]
APS 模式 + mt=16 srun -c16 --mem=64G -p hpc bsub -n16 -q hpc -R rusage[mem=64G]

关键注意事项:

  • 禁止通过 ssh 直接登录计算节点执行 Spectre 任务,需统一通过调度器提交,避免抢占资源;
  • --mem/mem_free为内存下限,实际使用超分配不会被调度器终止,后仿需根据网表大小适当提高;
  • 批量仿真(如蒙特卡罗)时,需将Max. Jobs(Virtuoso)与调度器的并行队列数匹配,避免节点过载
4.4 特殊场景:srun Virtuoso 二次提交 Spectre 任务

若 Virtuoso 通过srun在计算节点启动(非 login 节点),二次分发 Spectre 任务时,需修改调度命令,否则任务无法提交:

  1. 方案 1:将srun替换为salloc srun,例:salloc srun -c16 --mem=64G -p hpc;
  2. 方案 2:使用 LSF wrapper 的bsub -I命令,例:bsub -I -n16 -q hpc -R rusage[mem=64G]。

5 仿真精度调优

Spectre 提供多档精度配置,不同精度对应不同的仿真速度与结果准确性,可根据电路类型、仿真阶段灵活选择,核心精度分级及适配场景如下,精度越高,仿真速度越慢。

5.1 Spectre/APS 模式精度分级

Spectre 与 APS 模式为工程化主流使用模式,精度分为三级,通过参数+aps=<精度>(APS 模式)或 Virtuoso 中Error Preset配置:

精度等级 参数配置 核心特性 适用场景
Liberal(宽松) +aps=liberal/Virtuoso 选择 Liberal 精度最低,速度最快,迭代次数少 数字电路、模拟电路中的数字逻辑门、非关键通路仿真
Moderate(中等) +aps=moderate/Virtuoso 选择 Moderate(默认) 精度与速度平衡,满足绝大多数仿真需求 普通模拟电路、模块级验证、前仿常规测试
Conservative(保守) +aps=conservative/Virtuoso 选择 Conservative 精度最高,速度最慢,迭代次数多,结果最准确 关键信号通路、对噪声 / 工艺误差敏感的模拟电路、后仿、量产前黄金仿真
5.2 Spectre X 模式精度分级

Spectre X 为高精度仿真模式,通过+preset=<参数>配置,精度高于 APS 模式,为黄金参考仿真,核心分级:

预设参数 精度等级 适用场景
CX 最高精度 需要黄金仿真参考的核心电路、高精度模拟应用(如运放、ADC/DAC)
AX 中等精度(默认) 绝大多数高精度模拟电路仿真
MX 宽松精度 电源管理电路、对精度要求较低的模拟应用
LX/VX 超宽松精度 自定义 IC 验证、快速原型验证
5.3 APS 与 Spectre X 精度映射关系

APS 模式的精度可与 Spectre X 的预设参数一一映射,便于根据场景切换模式,映射关系如下:

APS 精度参数 Spectre X 预设参数 Post-Layout 配置
+aps=liberal CX +postlayout=upa(超精密模拟)
+aps=conservative AX +postlayout=hpa(高精度模拟)
+aps(默认) MX +postlayout=hpa
++aps LX/VX +postlayout
5.4 精度调优最佳实践

前仿阶段:使用Moderate(APS)/AX(X),平衡精度与速度,快速定位设计问题;

后仿阶段:使用Conservative(APS)/CX(X),保证仿真结果准确性,匹配实际芯片工作状态;

模块验证:非关键模块用Liberal,关键模块用Conservative;

蒙特卡罗仿真:试跑用Moderate,正式仿真用Conservative,保证良率统计的准确性;

精度与多线程结合:高精度仿真建议搭配合理的多线程数(如 16/32 核),抵消精度带来的速度损耗

6 与 Virtuoso 协同操作核心要点

Spectre 与 Virtuoso 为深度绑定的工具组合,Virtuoso 负责可视化设计与参数配置,Spectre 负责后台仿真计算,二者协同的核心要点与避坑指南如下:

6.1 核心配置同步规则

Virtuoso 中的所有仿真配置会自动转换为 Spectre 的命令行参数,全局设置优先级高于具体分析设置:

  1. High-Performance Simulation(Virtuoso):为 Spectre 的全局设置,包含运行模式、多线程、全局精度,会覆盖具体分析的精度设置;
  2. Choosing Analyses(Virtuoso):为 Spectre 的单分析设置,包含仿真类型(tran/ac/dc)、Stop Time、单分析精度,若与全局设置冲突,以全局为准;
  3. 变量映射:Virtuoso 中定义的设计变量(如 vdd=1.8V、load=1pF)会自动写入 Spectre 网表文件,无需手动修改。
6.2 网表与模型文件管理

Virtuoso 中Setup→Model Libraries添加的 PDK 模型文件,会自动在 Spectre 网表中生成include语句,指定对应工艺角section;

若需修改模型文件路径,可直接在 Virtuoso 中更新,或手动修改 input.scs 中的include行,无需重新绘制原理图;

执行netlist and run后,Virtuoso 会在工程目录下生成netlist和psf目录,分别为 Spectre 的输入与输出文件,可直接用于命令行仿真。

6.3 GUI 退出后保持 Spectre 仿真后台运行

Virtuoso GUI 退出 / 崩溃后,可通过配置让 Spectre 仿真继续在后台运行,避免前期工作白费,仅适用于 GUI 异常,Spectre 本身崩溃无效:

  1. 配置方法:在 Virtuoso 工程目录的.cdsinit文件中添加以下 SKILL 代码:
; 开启GUI退出后Spectre后台继续运行
envSetVal("adexl.distribute" "continueICRPRunOnAbruptGUIExit" 'boolean t)
  1. 结果回溯:Virtuoso 重启后,在 ADE XLHistory选项卡找到异常中断的任务,右键View Results查看已完成的仿真结果,Re-run Unfinished/Error Points续跑未完成任务。
6.4 仿真日志与问题调试
  1. 日志查看:Virtuoso 中Results→Open Run Log可直接查看 Spectre 的仿真日志spectre.out,也可通过命令行cat psf/spectre.out查看;
  2. 报错调试:日志中包含ERROR/WARNING信息,对应电路设计问题(如激励源错误、器件参数超限)或仿真参数问题(如精度不足导致不收敛);
  3. 不收敛解决:提高仿真精度(如从 Moderate 改为 Conservative)、增加迭代次数(-maxw/-maxn)、调整激励源斜率(如增大 tr/tf)。

7 常见问题与故障排查

7.1 多线程无法开启,强制单线程

故障原因:电路元件数量<128,或多线程参数设置错误;

解决方法:

  1. 检查电路网表,确认元件数量≥128;
  2. 确认多线程参数格式正确(如 APS 模式为+aps +mt=N,而非单独+mt=N);
  3. Virtuoso 中确认High-Performance Simulation的多线程未设置为Disable。
7.2 调度器资源统计错误,节点满载仍提交任务

故障原因:Spectre 多线程数与调度器核数参数不匹配,调度器无法识别实际核数占用;

解决方法:

  1. 严格保证 Spectre 的+mt=N/Manual #Threads=N 与调度器的-c N/-n N一致;
  2. 批量仿真时禁止使用 Auto 多线程,手动指定实际线程数;
  3. 清理计算节点上的非调度器任务,统一通过调度器提交
7.3 仿真不收敛,日志报迭代次数超限

故障原因:精度设置过低、激励源突变过大、电路拓扑存在问题;

解决方法:

  1. 提高仿真精度(如从 Liberal 改为 Conservative);
  2. 调整激励源参数,增大上升 / 下降时间(tr/tf),避免突变;
  3. 检查电路拓扑,确认无短路 / 开路、器件参数合理;
  4. 增加迭代次数,如-maxw 10 -maxn 10。
7.4 模型文件报错,提示 section 不存在

故障原因:模型文件路径错误,或工艺角 section 名称与 PDK 不一致;

解决方法:

  1. 检查 input.scs 中的include语句,确认模型文件路径正确(绝对路径 / 相对路径);
  2. 打开 PDK 的模型文件,确认section名称与引用一致(如 tt/ff/ss/io25 等);
  3. Virtuoso 中Setup→Model Libraries重新添加模型文件,选择正确的工艺角
7.5 Virtuoso 中无法选择 Spectre 仿真器

故障原因:Spectre 环境变量未配置,或 Virtuoso 与 Spectre 版本不兼容;

解决方法:

  1. 检查 Spectre 环境变量,确认MMSIM_HOME与PATH配置正确;
  2. 确保 Virtuoso 为 IC6.1.8 及以上版本,Spectre 为 19.10 及以上版本;
  3. 重新加载模块:module unload spectre && module load spectre/19.10
7.6 仿真结果文件无法打开,提示格式错误

故障原因:仿真结果格式设置错误,或仿真未正常完成;

解决方法:

  1. 确认命令行中指定了正确的格式参数(如-format psfxl);
  2. 查看仿真日志,确认无ERROR信息,仿真正常完成;
  3. Virtuoso 中选择File→Open,指定 psf 目录,选择正确的结果文件

九 EMX 5.7 电磁仿真工具全量使用

本手册基于 EMX 5.7 版本编写,全面覆盖工具环境配置、Virtuoso 集成、实操流程、集群调度、参数调优、故障排查等核心内容,适用于模拟 / 射频 IC 设计工程师、仿真工程师,兼顾基础使用与工程化实操,适配速石 FCC/FCCE 平台,同时包含通用配置与 PDK 适配要点。

EMX 是 Cadence 旗下专业的电磁仿真工具,主打射频 / 模拟 IC 中无源器件(电感、变压器、MOM 电容、巴伦等)的电磁特性提取与仿真,可精准计算器件的 S 参数、电感值、Q 值、寄生参数等,仿真结果可直接生成模型嵌入 Virtuoso/Spectre 进行联合仿真,是射频 IC 设计的核心工具之一

1 工具核心认知

1.1 核心功能与适用场景

EMX 专注于片上无源器件的 3D 电磁仿真与建模,核心解决射频 / 模拟 IC 中无源器件的寄生效应、高频特性仿真问题,具体功能与适用场景:

核心功能 适用器件 工程价值
电磁特性提取 螺旋电感、片上变压器、巴伦(Balun) 精准计算 L、Q、R、寄生电容,匹配高频实际工作特性
S 参数仿真 MOM 电容、传输线、射频走线 输出全频段 S 参数,用于射频链路匹配设计
3D 网格剖分仿真 复杂无源器件、异质结构器件 基于 3D 结构的高精度仿真,贴合实际工艺制造
模型自动生成 各类无源器件 生成 Spectre/Virtuoso 兼容模型,直接嵌入电路仿真
高频损耗分析 电感 / 变压器 分析金属损耗、衬底损耗,优化器件 Q 值
1.2 工具核心特性
  1. 与 Cadence 生态深度集成:无缝对接 Virtuoso/Spectre,仿真结果可直接生成 Virtuoso 视图,无需手动转换;
  2. 工艺适配性强:支持主流 Foundry 的 PDK(如 TSMC/GF/SMIC),PDK 会提供专属的 EMX 工艺文件(.proc)与模板;
  3. 集群调度支持:可通过 bsub/srun 等调度命令提交至集群,支持多线程与分布式仿真,提升大尺寸器件仿真效率;
  4. 开箱即用模板:速石 FCC/FCCE 平台提供标准化 template,包含示例器件、工艺配置,无需从零配置;
  5. 多格式结果输出:支持 Touchstone、Spectre、Matlab 等格式,适配不同仿真工具的联合仿真需求。
1.3 配套工具依赖

EMX 需与 Cadence 旗下其他工具协同使用,核心依赖如下,版本需严格匹配,避免兼容性问题:

依赖工具 推荐版本 作用
Virtuoso IC6.1.8 提供可视化版图设计与 EMX 操作 GUI,作为 EMX 前端界面
Spectre 19.10 接收 EMX 生成的无源器件模型,进行整体电路联合仿真
Calibre 2022(可选) 辅助版图 DRC/LVS 验证,确保无源器件版图符合工艺规则

2 环境配置(速石 FCC/FCCE 平台标准)

EMX 的环境配置分为基础环境加载和自定义环境变量配置,速石平台提供模块化管理,基础配置可一键加载,高级配置可通过修改环境变量与配置文件实现。

2.1 基础环境一键加载(推荐)

FCC/FCCE 平台已完成 EMX 的模块化封装,进入工作目录后直接执行以下命令,自动加载所有依赖与 EMX 核心环境:

# 初始化平台环境
source /fastone/softwares/eda/cshinit
# 加载配套工具
module load ic/6.1.8
module load spectre/19.10
module load calibre/2022  # 可选,仅需版图验证时加载
# 加载EMX 5.7核心环境
module load emx/5.7
2.2 自定义环境变量配置(高级 / 手动配置)

若需手动配置环境变量(如修改 EMX 安装路径、模型生成路径),可在~/.cshrc/~/.bashrc或模块配置文件中添加以下内容,适用于非平台化部署场景:

2.2.1 csh/tcsh 环境
# EMX核心环境变量
setenv EMX_HOME /fastone/software/others/emx
setenv MDG_HOME /fastone/software/others/emx  # ModelGen配套环境
# 添加可执行文件路径至系统PATH
prepend-path PATH $EMX_HOME/emx64-5.7
prepend-path PATH $MDG_HOME/modelgen64-2.22
# 可选:EMX临时工作目录
setenv EMX_WORK_DIR ./EMX_work
2.2.2 bash/zsh 环境
# EMX核心环境变量
export EMX_HOME=/fastone/software/others/emx
export MDG_HOME=/fastone/software/others/emx
# 添加可执行文件路径至系统PATH
export PATH=$EMX_HOME/emx64-5.7:$PATH
export PATH=$MDG_HOME/modelgen64-2.22:$PATH
# 可选:EMX临时工作目录
export EMX_WORK_DIR=./EMX_work
2.3 环境验证

配置完成后,执行以下命令验证环境是否生效,无报错则说明配置成功:

# 查看EMX版本(进入EMX安装目录执行)
cd $EMX_HOME/emx64-5.7
./emx -version
# 验证Virtuoso与EMX的环境关联
virtuoso -nograph -batch -eval 'puts "EMX environment loaded"'

3 Virtuoso 深度集成配置

EMX 无独立的 GUI 界面,需作为插件嵌入 Virtuoso实现可视化操作,核心通过修改 Virtuoso 的初始化文件.cdsinit完成集成,包含基础集成和高级参数配置两步。

3.1 基础集成:将 EMX 嵌入 Virtuoso 菜单

修改 Virtuoso 工程目录下的.cdsinit文件(工程级,仅当前工程生效)或用户 HOME 目录下的.cdsinit(全局级,所有工程生效),添加以下 SKILL 代码,实现 EMX 菜单在 Virtuoso 中的加载:

;################## EMX 5.7 与Virtuoso集成 ##################
; 定义EMX安装目录(与环境变量EMX_HOME一致)
setenv("EMX_INSTALL_DIR" "/fastone/software/others/emx/")
; 加载EMX核心配置脚本
loadi(strcat(getShellEnvVar("$EMX_INSTALL_DIR") "emxinterface/emxskill/emxconfig.il"))

关键注意:emxconfig.il的路径必须与实际安装路径一致,若路径错误,Virtuoso 中会无 EMX 菜单,需检查路径是否存在该文件。

3.2 高级配置:修改 emxconfig.il 核心参数

emxconfig.il是 EMX 的核心配置文件,位于$EMX_HOME/emxinterface/emxskill/,需根据工程需求修改以下关键参数,所有路径均为绝对路径,避免相对路径导致的文件找不到问题:

; 1. EMX接口文件路径(包含skill脚本、工艺模板)
EMX_interface_path="/fastone/software/others/emx/cadence6/emxinterface"

; 2. 集群调度配置(空为本地运行,注释为调度器运行,根据平台选择)
; LSF调度器(速石FCCE平台)
; EMX_remote_machine="bsub -q desired_queue"  # desired_queue替换为实际分区(如hpc/ssim)
; SGE调度器
; EMX_remote_machine="qsub -q desired_queue"
EMX_remote_machine=""  # 本地运行,清空则为默认

; 3. EMX主程序路径(与EMX_HOME一致)
EMX_path=(strcat (getShellEnvVar "EMX_HOME") "/emx64-5.7")

; 4. ModelGen路径(模型生成工具,与MDG_HOME一致)
EMX_modelgen_path=(strcat (getShellEnvVar "MDG_HOME") "/modelgen64-2.22")

; 5. PDF阅读器配置(EMX查看工艺文档用,选择系统已安装的阅读器)
EMX_ps_viewer="evince"  # 可选:okular/gv/ggv/acroread/konqueror

; 6. EMX临时工作目录(生成仿真中间文件、日志,建议工程内独立目录)
EMX_working_dir="./EMX_work"

; 7. 加载EMX表单脚本(无需修改,确保路径正确)
(load (strcat EMX_interface_path "/emxskill/emxform.ils"))
3.3 集成验证

完成配置后,启动 Virtuoso,打开任意版图视图(Layout),若在顶部菜单栏能看到EMX选项,且点击EMX→Simulate能弹出仿真配置窗口,说明集成成功。

4 EMX 核心仿真流程(Virtuoso GUI 可视化操作)

以平台模板中的单端电感(symind) 为例,讲解 EMX 从版图打开到结果查看、模型生成的完整仿真流程,其他器件(变压器 / 巴伦 / 电容)流程完全一致,仅需修改器件类型与仿真参数。

5.1 步骤 1:启动 Virtuoso 并打开目标器件版图
  1. 进入 EMX 工作目录,启动 Virtuoso:virtuoso &;
  2. 打开 Virtuoso 的Library Manager(库管理器):Tools→Library Manager;
  3. 按Library→Cell→View层级,打开testdir→symind→layout视图,即单端电感的版图视图。
5.2 步骤 2:启动 EMX 仿真配置窗口

在版图视图的顶部菜单栏,执行EMX→Simulate,弹出 EMX 核心仿真配置窗口,所有仿真参数均在此窗口配置,分为基础配置和高级配置两大模块。

5.3 步骤 3:核心仿真参数配置

EMX 仿真参数配置围绕工艺文件、器件结构、仿真精度、频率范围、输出设置展开,带 * 为必配参数,其余可使用默认值,PDK 场景下需替换为 PDK 专属工艺文件。

5.3.1 基础必配参数
参数分类 配置项 设置值(示例 / 默认) 说明
工艺配置* Process ./processes/generic65.proc 工艺文件路径,PDK 场景替换为 PDK 的.proc 文件
器件结构 X-section Scaled 截面类型,Scaled(缩放)/Unscaled(非缩放),默认 Scaled
Black-boxed cells 空 黑盒化单元,无需修改
GDS view EMX GDS 视图类型,默认 EMX
精度配置 Edge mesh 1 边缘网格剖分精度,单位 μm,值越小精度越高(仿真越慢)
Thickness 1 金属厚度剖分精度,单位 μm,默认 1
Via merge 0.5 过孔合并精度,单位 μm,默认 0.5
3D metals 勾选 开启 3D 金属仿真,必选(保证高频精度)
端口配置* Ports All 端口选择,All(所有端口)/ 自定义,示例电感为 P1/P2
Signals P1P2 信号端口,与器件版图的 pin 对应
Grounds DIF 地端口,与器件版图的地 pin 对应
频率范围* Start 1e8(100MHz) 仿真起始频率,单位 Hz
Stop 2e10(20GHz) 仿真终止频率,单位 Hz
Step 1e8(100MHz) 频率步长,单位 Hz,步长越小结果越精细
5.3.2 高级配置(集群调度 / 多线程 / 输出格式)

点击配置窗口中的Advanced options展开高级配置,核心用于集群提交、多线程设置、结果格式选择,本地运行可忽略,集群运行必配:

  1. 多线程设置:勾选Multi-threading,设置Threads数(如 4/8/16,根据集群资源调整);
  2. 集群调度:勾选Use bsub,在Bsub options中填写调度参数(如-q hpc -n 8,指定分区与核数);
  3. 输出格式:
  4. Types:选择仿真结果类型(S-parameters/Y-parameters,射频仿真优先 S-parameters);
  5. Formats:选择结果文件格式(Touchstone/Spectre/Matlab,需与 Spectre 联合仿真选 Spectre);
  6. 模型生成:Pole-zero models选择none(默认),无需修改。
5.3.3 器件类型与模型生成配置

在Plotting and model creation模块,配置器件类型与模型生成规则,用于仿真后自动生成 Virtuoso 可用模型:

  1. Type:选择器件类型(示例为Single-ended inductor,变压器选Transformer,电容选Capacitor);
  2. Create model:勾选(仿真后自动生成器件模型);
  3. Create view:勾选(生成 Virtuoso 的model/symbol视图,可直接拖入电路仿真);
  4. File or view:填写模型保存名称(如EMX_form,与模板一致即可,用于保存仿真参数)
5.4 步骤 4:启动仿真并监控运行状态
  1. 所有参数配置完成后,点击配置窗口中的Simulation→Start,启动仿真;
  2. 仿真过程中,配置窗口会显示Status(运行中 / 完成 / 错误),同时在EMX_working_dir目录生成中间文件与日志;
  3. 仿真成功标志:日志最后输出process exited normally,无 ERROR 信息
5.5 步骤 5:查看仿真结果波形

仿真成功后,点击配置窗口中的Plot按钮,自动弹出 Virtuoso 的Visualization & Analysis XL波形查看窗口,核心查看无源器件的关键指标:

  1. 单端电感:电感值(L)、品质因数(Q)、谐振频率(f0)随频率的变化;

  2. 变压器:互感(M)、耦合系数(k)、初级 / 次级电感值;

  3. MOM 电容:电容值(C)、等效串联电阻(ESR)、高频损耗;

  4. 射频走线:S11(回波损耗)、S21(插入损耗)。

波形操作:支持放大、叠加、数据导出,可将关键指标截图用于工程分析

5.6 步骤 6:生成并使用 EMX 器件模型(与 Spectre 联合仿真)

EMX 的核心价值是生成与 Spectre/Virtuoso 兼容的无源器件模型,仿真成功后自动生成,可直接嵌入电路进行联合仿真,步骤如下:

  1. 模型生成位置:在testdir→symind库中,自动生成model(模型视图)和symbol(符号视图);
  2. 调用模型:在 Virtuoso 原理图中,直接将symind→symbol拖入电路,与有源器件(晶体管 / 运放)连接;
  3. 联合仿真:启动 Spectre 仿真(ADE L/XL),Spectre 会自动加载 EMX 生成的模型,完成电磁 - 电路联合仿真,精准反映无源器件的高频特性。

6 集群分布式仿真配置(工程化高效仿真)

对于大尺寸无源器件(如大功率变压器、大面积 MOM 电容)或高精度 3D 仿真,本地运行效率极低,需将 EMX 任务提交至集群进行分布式仿真,EMX 支持 LSF/SGE/Slurm 调度器,速石 FCCE 平台优先使用LSF 调度器(bsub)

6.1 集群仿真两种配置方式

方式 1:GUI 可视化配置(推荐,无需记忆命令)

在 EMX 仿真配置窗口的Advanced options中,直接勾选配置,步骤如下:

  1. 勾选Use bsub(开启集群提交);
  2. 在Bsub options中填写调度参数,格式:-q <分区名> -n <核数> -R rusage[mem=<内存>];
  3. 示例:-q hpc -n 8 -R rusage[mem=16G](8 核、16G 内存、提交至 hpc 分区);
  4. 勾选Multi-threading,设置Threads数与-n的核数一致(如 8);
  5. 点击Simulation→Start,任务自动提交至集群,无需手动执行 bsub 命令。

方式 2:配置文件硬编码(批量仿真 / 脚本化)

修改emxconfig.il中的EMX_remote_machine参数,硬编码调度命令,适用于批量仿真,无需每次 GUI 配置:

; LSF调度器(速石FCCE平台),替换为实际分区与资源
EMX_remote_machine="bsub -q hpc -n 8 -R rusage[mem=16G]"
; SGE调度器
; EMX_remote_machine="qsub -q hpc -l nodes=1:ppn=8,mem=16G"

注意:配置后,GUI 中Use bsub会自动勾选,无需重复操作。

6.2 集群仿真任务监控与管理
  1. 任务查看:在终端执行bjobs(LSF)/qstat(SGE)/squeue(Slurm),查看 EMX 任务的状态(RUN/PEND/EXIT);
  2. 任务终止:执行bkill <任务ID>(LSF)/qdel <任务ID>(SGE),终止异常运行的任务;
  3. 日志查看:集群任务的日志保存在EMX_working_dir目录下,与本地运行一致,可通过cat <日志文件>查看报错信息。
6.3 集群仿真最佳实践
  1. 资源匹配:核数与内存需根据器件尺寸调整,大尺寸器件(如边长>100μm 的电感)建议 16 核 32G,小器件建议 4 核 8G;
  2. 频率步长优化:高频段(>10GHz)可适当增大频率步长,减少仿真时间,不影响关键指标精度;
  3. 网格精度权衡:Edge mesh/Thickness 并非越小越好,在满足精度要求的前提下,适当增大值(如 2μm),提升仿真效率;
  4. 避免资源浪费:仿真完成后,及时清理EMX_working_dir的中间文件,释放集群存储资源。

7 核心参数调优指南(精度与效率的平衡)

EMX 的仿真精度与效率成反比,网格越细、频率步长越小,精度越高,但仿真时间越长,需根据工程需求(前仿 / 后仿 / 射频指标要求)灵活调优,核心调优参数与原则如下:

7.1 精度调优核心参数(优先级从高到低)
参数 调优原则 前仿推荐值 后仿推荐值
Edge mesh(边缘网格) 值越小,边缘剖分越细,精度越高 2μm 0.5-1μm
Thickness(金属厚度) 值越小,金属层剖分越细,贴合实际工艺 2μm 0.5-1μm
Via merge(过孔合并) 值越小,过孔仿真越精准,适合多过孔器件 1μm 0.2-0.5μm
3D metals(3D 金属) 必勾选,关闭后为 2D 仿真,精度大幅下降 勾选 勾选
Frequency Step(频率步长) 步长越小,频率点越密,结果越精细 5e8Hz 1e8Hz
7.2 不同工程阶段的参数配置策略
工程阶段 核心目标 参数配置策略
器件原型设计(前仿) 快速验证器件趋势,优化结构 网格精度适中(2μm)、频率步长大(5e8Hz)、本地运行
器件性能优化(中仿) 精准计算关键指标(L/Q/f0) 网格精度较高(1μm)、频率步长中等(1e8Hz)、4/8 核集群
量产前验证(后仿) 黄金仿真,匹配实际工艺 网格精度最高(0.5μm)、频率步长最小(5e7Hz)、16 核以上集群
7.3 射频关键指标优化的参数侧重
优化指标 需重点调优的参数 说明
电感 Q 值 Edge mesh、3D metals、衬底模型 衬底损耗是 Q 值下降的核心原因,需 PDK 提供精准的衬底工艺文件
变压器耦合系数 k Via merge、金属重叠区域剖分 保证初级 / 次级金属重叠区域的网格精度
高频谐振频率 f0 Frequency Step、3D metals 高频段需减小频率步长,精准捕捉谐振点
S 参数平坦度 Frequency Step、端口配置 确保端口接触良好,频率步长均匀

8 常见问题与故障排查

8.1 Virtuoso 中无 EMX 菜单,集成失败

故障原因:

  1. .cdsinit中的 EMX 配置代码路径错误;

  2. emxconfig.il文件缺失;

  3. EMX 环境变量未正确加载。

解决方法:

  1. 检查EMX_INSTALL_DIR的路径是否与实际安装路径一致;

  2. 验证$EMX_HOME/emxinterface/emxskill/下是否存在emxconfig.il和emxform.ils;

  3. 重新加载 EMX 环境:module unload emx/5.7 && module load emx/5.7,重启 Virtuoso。

8.2 仿真启动失败,提示 “process exited with error”

故障原因:

  1. 工艺文件(.proc)路径错误或文件损坏;

  2. 器件版图无 pin / 端口配置错误;

  3. 临时工作目录EMX_working_dir无写入权限。

解决方法:

  1. 检查 Process 参数的路径是否为绝对路径,PDK 场景替换为 PDK 的.proc 文件;

  2. 打开器件版图,验证Create→Pin是否正确创建信号 / 地端口,与 EMX 的 Signals/Grounds 匹配;

  3. 给工作目录添加写入权限:chmod 775 ./EMX_work,或重新定义EMX_working_dir至用户有权限的目录。

8.3 集群提交任务后立即 PEND/EXIT,无运行日志

故障原因:

  1. Bsub options参数填写错误(如分区不存在、核数 / 内存超过集群配额);

  2. 集群调度器未初始化;

  3. EMX 无集群节点的执行权限。

解决方法:

  1. 验证分区名是否正确:bqueues(LSF)查看所有可用分区,调整核数 / 内存至配额内;

  2. 初始化集群环境:source /opt/fastone/wrappers/sge/profile.sge(速石平台);

  3. 联系集群管理员,赋予 EMX 在计算节点的执行权限。

8.4 仿真结果异常(如电感值为 0、Q 值极低)

故障原因:

  1. 器件版图绘制错误(如金属开路、短路、端口接触不良);

  2. 3D metals 未勾选,为 2D 仿真;

  3. 工艺文件与器件工艺不匹配(如金属厚度设置错误)。

解决方法:

  1. 打开版图,执行Verify→Connectivity检查金属连通性,确保端口与器件有效接触;

  2. 确认 EMX 配置中勾选了3D metals,重新启动仿真;

  3. PDK 场景下,替换为 PDK 专属的.proc 文件,避免使用通用工艺文件。

8.5 模型生成成功,但无法在 Spectre 中调用

故障原因:

  1. 模型格式选择错误(未选 Spectre 格式);

  2. Virtuoso 库中未生成model/symbol视图;

  3. 模型文件路径未添加至 Spectre 的模型库。

解决方法:

  1. 重新配置 EMX 的Formats为Spectre,重新仿真生成模型;

  2. 确认 EMX 配置中勾选了Create model和Create view;

  3. 在 Virtuoso ADE L/XL 中,Setup→Model Libraries添加 EMX 模型所在目录,确保 Spectre 能识别。

8.6 仿真速度极慢,大尺寸器件耗时数小时

故障原因:

  1. 网格精度设置过细(如 Edge mesh=0.1μm);

  2. 频率步长过小,频率点过多;

  3. 本地单线程运行,未使用集群多线程。

解决方法:

  1. 适当增大网格精度(如从 0.1μm 调整为 1μm),在精度与效率间平衡;

  2. 增大高频段的频率步长,或缩小仿真频率范围至器件工作频段;

  3. 提交至集群,使用 8/16 核多线程运行,匹配网格精度设置。

十 Calibre 全量使用与运维手册(2018-2022 版本适配)

本手册整合 Calibre 2018/2020/2022 全版本核心功能,覆盖环境配置、三大核心任务(DRC/LVS/PEX)实操、集群调度、分布式仿真、性能优化、故障排查等全维度内容,适用于 IC 后端版图工程师、仿真工程师及运维人员,适配速石 FCC/FCCE 平台,兼顾基础使用与工程化高效仿真需求

Calibre 是 Siemens(原 Mentor)旗下芯片后端版图验证的黄金工具,广泛应用于模拟 / 数字 / 射频 IC 设计流程,核心解决版图 “可制造性” 与 “功能一致性” 问题,是芯片量产前的关键验证环节,与 Cadence Virtuoso 深度集成,支持全工艺节点 PDK 适配。

1 工具核心认知

1.1 核心功能与工程价值

Calibre 的三大核心功能覆盖版图验证全流程,是芯片设计从版图完成到量产的必经之路:

核心功能 英文全称 核心作用 工程价值
DRC Design Rule Check(设计规则检查) 验证版图线宽、间距、元件摆放等是否符合 Foundry 工艺规则 确保版图可被正常制造,避免因工艺违规导致芯片报废
LVS Layout vs Schematic(版图与原理图对比) 验证版图与原理图的器件、连接关系一致性 确保版图功能与设计意图一致,避免因版图绘制错误导致功能失效
PEX Parasitic Extraction(寄生参数提取) 从版图中提取导线 / 过孔的寄生电阻(R)、电容(C)、耦合电容(CC) 生成包含寄生参数的网表,用于后仿验证,精准匹配芯片实际工作特性
1.2 工具核心特性
  1. 多版本兼容:2018-2022 版本支持 LSF/SGE/Slurm 调度器,2021 + 版本新增 SGE-wrapper 适配,2022 版本优化 GUI 分布式配置;
  2. 任务特性:DRC/LVS/PEX 均为线程间数据无关的检查类任务,支持多线程 / 多机分布式处理,计算效率与节点数量成正相关;
  3. 硬件需求:对 CPU 主频要求低,对内存容量要求极高(大版图验证需 64G + 内存),推荐大内存机型(如 c6i.128、z1d.48);
  4. 输出兼容性:PEX 提取结果支持 CalibreVIEW、SPICE、Spectre 等格式,可直接导入 Virtuoso/Spectre 进行后仿;
  5. 分布式原理:将版图 “切块” 分发至多个节点独立验证,主节点负责任务拆分与结果汇总,理论上节点数量与计算效率成反比。
1.3 版本差异与适配建议
版本 核心差异 调度器支持 推荐场景
Calibre 2018 GUI 仅支持 LSF-wrapper,MTFlex 需手动编写配置文件,-n 参数无效 LSF(Single/Multi-thread) 老项目兼容、静态集群环境
Calibre 2020 新增 Other Cluster 提交方式,支持 salloc 嵌套 srun LSF/Slurm 动态集群(Auto-Scale)、混合调度环境
Calibre 2022 GUI 直接支持 MTFlex 分布式配置,无需手动编写文件,新增 Custom Grid 提交方式 LSF/SGE/Slurm 新项目、大规模版图验证、高效集群环境

适配原则:优先使用 2022 版本,兼顾功能完整性与操作便捷性;老项目需兼容 2018 版本时,需规避 LSF-wrapper 的 - n 参数问题。

2、环境配置(速石 FCC/FCCE 平台标准)

2.1 基础环境变量配置

Calibre 环境变量需通过modules统一管理,避免用户间配置不一致,核心配置如下(以 2022 版本为例):

2.1.1 csh/tcsh 环境
# Calibre安装根目录
setenv MGC_HOME /fastone/software/mentor/calibre2022/aoj_cal_2022.2_38.20
# 许可证环境变量(浮动授权)
setenv MGLS_LICENSE_FILE 27001@<License-IP>  # 替换为实际License服务器IP
# 添加可执行文件路径
prepend-path PATH $MGC_HOME/bin
# 添加库文件路径
prepend-path LD_LIBRARY_PATH $MGC_HOME/lib
2.1.2 bash/zsh 环境
export MGC_HOME=/fastone/software/mentor/calibre2022/aoj_cal_2022.2_38.20
export MGLS_LICENSE_FILE=27001@<License-IP>
export PATH=$MGC_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MGC_HOME/lib:$LD_LIBRARY_PATH
2.2 环境验证

配置完成后,执行以下命令验证环境是否生效,无报错则说明配置成功:

# 启动Calibre GUI(后台运行)
calibre -gui &
# 查看版本信息
calibre -version
2.3 Virtuoso 集成配置

将 Calibre 菜单嵌入 Virtuoso,实现版图视图中直接调用 Calibre,步骤如下:

  1. 编辑 Virtuoso 的.cdsinit文件(工程级 / 全局级均可):
;################## Calibre与Virtuoso集成 ##################
; 加载Calibre SKILL脚本
load(strcat(getShellEnvVar("MGC_HOME") "/shared/pkgs/icv/tools/queryskl/calibre.skl"))
; 添加Calibre菜单到Virtuoso
hiMenuAdd("Calibre" "Tools" '("Run nmDRC..." "Run nmLVS..." "Run PEX..." "Start RVE") '("calibreDRC" "calibreLVS" "calibrePEX" "calibreRVE"))
  1. 重启 Virtuoso,打开版图视图,在Tools→Calibre中可看到 DRC/LVS/PEX 选项,说明集成成功

3 核心任务实操(DRC/LVS/PEX)

3.1 前置条件(通用)

所有核心任务执行前需满足以下条件,避免验证失败:

  1. 已准备 Virtuoso 工程的layout与schematic视图,且位于同一 Cell 下;
  2. 版图已通过基础连通性检查(Verify→Connectivity),无开路 / 短路;
  3. LVS/PEX 任务需先确保 DRC 无致命错误(Error),仅允许少量警告(Warning);
  4. 已获取 Foundry 提供的工艺规则文件(DRC:.rule/.drf;LVS:.lvs;PEX:.rcx/.pex)
3.2 DRC(设计规则检查)实操

以 Calibre 2022 为例,讲解 GUI 下 DRC 的完整流程,2018/2020 版本操作类似,仅调度器配置有差异:

3.2.1 启动 Calibre DRC
  1. 打开 Virtuoso 版图视图(Library→Cell→Layout);
  2. 执行Tools→Calibre→Run nmDRC...,弹出 Calibre Interactive DRC 配置窗口。
3.2.2 核心参数配置

(1)Rules(规则文件配置)

  • 点击Rules选项卡,在Rules File中选择 Foundry 提供的 DRC 规则文件(如cal_drc.rule);
  • 点击Load加载规则,确保无 “文件找不到” 报错。

(2)Inputs(输入文件配置)

  • Layout选项卡:Format选择GDSII,Export from layout viewer勾选,自动读取当前版图的Top Cell(如inv)、Library Name(如testdir);
  • 其他选项默认,无需修改。

(3)Outputs(输出配置)

  • Run Directory:指定 DRC 临时文件与结果输出路径(如./drc_results),建议每个任务单独创建目录,避免文件冲突;
  • 勾选View Results after DRC finishes,仿真完成后自动打开结果查看器(RVE)。

(4)Run Control(运行控制,集群核心)

根据集群环境选择提交方式,推荐使用Custom Grid(2022 版本)或Other Cluster(2020 版本):

方式 1:Custom Grid(2022 版本,推荐)
  • Run Calibre On选择Custom Grid;
  • Submission Command:填写 Slurm 调度命令,例:sbatch -p drc -c 16 --mem=64G(16 核、64G 内存、提交至 drc 分区);
  • Run Calibre DRC using选择Multiple Threads;
  • Number of CPUs to use填写 16(与调度命令-c参数一致);
  • License File Name选择MGLS_LICENSE_FILE,确保许可证正常加载。
方式 2:Remote Host(MTFlex 分布式,静态集群)
  • Run Calibre On选择Remote Host;
  • Host Name填写主节点名称(如drc-a1,不建议用 login 节点);
  • Run Calibre DRC using选择Distributed (MTFlex);
  • Remote Hosts选择Specify from GUI,点击+添加从节点(如drc-a2、drc-a3),确保节点间 ssh 免密登录;
  • 勾选从节点左侧复选框,等待 Calibre 读取节点信息(显示Ready)。
3.2.3 启动 DRC 与结果查看
  1. 点击Run DRC启动任务,调度器中可通过squeue(Slurm)/bjobs(LSF)查看任务状态;

  2. 任务完成后,自动弹出 RVE(Result Viewing Environment)窗口,查看 DRC 错误:

  3. 红色标记:致命错误(需修改版图);

  4. 黄色标记:警告(可根据工艺要求判断是否需要修改);

  5. 导出 DRC 报告:File→Save Report,生成drc.summary文件,包含错误统计、运行时间等信息。

3.3 LVS(版图与原理图对比)实操

LVS 流程与 DRC 类似,核心差异在于需同时导入版图与原理图,验证二者一致性:

3.3.1 启动 Calibre LVS

执行Tools→Calibre→Run nmLVS...,弹出 Calibre Interactive LVS 配置窗口。

3.3.2 核心参数配置

(1)Rules(规则文件配置)

  • 选择 Foundry 提供的 LVS 规则文件(如cal_lvs.lvs),点击Load加载。

(2)Inputs(输入文件配置)

  • Layout选项卡:与 DRC 一致,自动读取当前版图信息;
  • Netlist选项卡:Format选择SPICE,Export from schematic viewer勾选,自动读取当前 Cell 的schematic视图,确保Top Cell与版图一致。

(3)Outputs(输出配置)

  • Run Directory:指定输出路径(如./lvs_results);
  • 勾选Generate LVS Report,生成包含匹配结果的报告文件。

(4)Run Control(运行控制)

与 DRC 配置一致,根据版本选择Custom Grid/Other Cluster,确保调度器参数与 CPU 核心数匹配。

3.3.3 LVS 结果分析
  1. 任务完成后,RVE 窗口显示匹配结果:
  2. Total Matched:器件、网表完全匹配,无错误;
  3. Mismatch:存在不匹配项(如器件型号错误、网表连接不一致),需根据报告修改版图;
  4. 重点查看Device Mismatch(器件不匹配)和Net Mismatch(网表不匹配),修改后重新运行 LVS,直至完全匹配。
3.4 PEX(寄生参数提取)实操

PEX 需在 LVS 完全匹配后执行,核心提取版图的寄生 R/C/CC 参数,用于后仿验证,以 2022 版本为例:

3.4.1 启动 Calibre PEX

执行Tools→Calibre→Run PEX...,弹出 Calibre Interactive PEX 配置窗口。

3.4.2 核心参数配置

(1)Rules(规则文件配置)

  • 选择 Foundry 提供的 PEX 规则文件(如cal_pex.rcx),点击Load加载。

(2)Inputs(输入文件配置)

  • Layout选项卡:自动读取当前版图信息;
  • Netlist选项卡:Format选择SPICE,勾选Export from schematic viewer,确保与 LVS 使用的原理图一致。

(3)Outputs(输出配置)

  • Netlist Format选择CalibreVIEW(与 Virtuoso 兼容,可直接导入);
  • Netlist Path指定寄生网表输出路径(如./pex_results/inv.pex.netlist);
  • Use Names From选择Source Names(使用原理图中的器件 / 网表名称);
  • Extraction Mode选择XRC(高精度提取),Resistance/Capacitance选择R+C+CC(提取电阻 + 电容 + 耦合电容)。

(4)Run Control(运行控制)

与 DRC/LVS 一致,配置调度器参数,确保资源充足(PEX 提取需更大内存,建议 64G+)。

3.4.3 生成 Calibre View(Virtuoso 导入)
  1. 任务完成后,弹出Calibre View Setup窗口,配置如下:

  2. CalibreView Netlist File:选择生成的寄生网表(inv.pex.netlist);

  3. Output Library:选择目标库(如testdir);
  4. Calibre View Name:填写calibre(视图名称);
  5. Calibre View Type:选择schematic;

  6. 点击OK,生成 Calibre 视图,在 Virtuoso Library Manager 中可看到calibre视图;

  7. 导入 Spectre 后仿:将 Calibre 视图拖入原理图,启动 Spectre 仿真,即可包含寄生参数的影响。

4 集群分布式仿真配置(MTFlex)

Calibre 支持MTFlex 分布式仿真,适用于大版图(如芯片 Top 层)验证,可大幅缩短计算时间,支持Remote Host和LSF-wrapper两种方式,2022 版本 GUI 配置更便捷。

4.1 方式 1:Remote Host 分布式(静态集群,全版本支持)
4.1.1 前置准备
  1. 确保主节点与从节点间ssh 免密登录(执行ssh <节点名>无需输入密码);
  2. 静态集群需手动开启节点(N 个从节点 + 1 个主节点),任务完成后手动关闭。
4.1.2 配置步骤(2022 版本)
  1. 启动 Calibre DRC/LVS/PEX,进入Run Control选项卡;
  2. Run Calibre On选择Remote Host;
  3. Host Name填写主节点名称(如drc-a1),负责任务拆分与结果汇总;
  4. Run Calibre using选择Distributed (MTFlex);
  5. Remote Hosts选择Specify from GUI,点击+添加从节点(如drc-a2、drc-a3);
  6. 勾选从节点,等待 Calibre 读取节点信息(显示Ready);
  7. 点击Run DRC/LVS/PEX启动分布式任务。
4.1.3 注意事项
  • 主节点内存需足够大,建议能独立运行该任务(避免拆分 / 汇总时内存不足);
  • 任务分发绕开调度器,调度器中无法查看子任务,仅显示主节点任务;
  • 不推荐在多用户共享集群中使用,会导致调度器资源统计错误。
4.2 方式 2:LSF-wrapper 分布式(动态集群,2020 + 版本支持)
4.2.1 配置步骤(2022 版本)
  1. 进入Run Control选项卡,Run Calibre On选择Platform LSF;
  2. Submission Host选择localhost(仅作为 GUI 显示节点,无计算负载);
  3. Run Calibre using选择Distributed (MTFlex);
  4. Primary Host Selection:设置主节点资源(如Min CPUs=48),点击Hosts刷新符合条件的主节点;
  5. Remote Hosts Selection:
  6. Total CPUs:从节点总核心数(如 96);
  7. Min CPUs Per Host:单个从节点最小核心数(如 48);
  8. 点击Hosts刷新符合条件的从节点(自动分配 2 个 48 核节点);
  9. License File Name选择MGLS_LICENSE_FILE,点击Run DRC/LVS/PEX。
4.2.2 任务数量计算

从节点数量 = Total CPUs / Min CPUs Per Host,例:96 核总核心数 ÷48 核 / 节点 = 2 个从节点。

4.3 分布式性能测试结果
测试机型 核心数 运行时间 结论
z1d.48(单机) 48 9.17 小时 核心数增加,运行时间成比例缩短
c6i.128(单机) 128 3.57 小时 核心数倍率(128/48=2.67)与时间缩短倍率(9.17/3.57=2.57)基本一致
c.96(5 节点分布式) 96 2.6 小时 分布式仿真效率优于单机,瓶颈在存储 IO 与网络通信

5 不同版本关键配置差异

5.1 Calibre 2018 版本注意事项
  1. LSF-wrapper 提交时,-n参数无效,需通过Queue Command指定核心数;
  2. MTFlex 分布式需手动编写mtflex.config文件,示例:
LAUNCH AUTOMATIC
REMOTE HOST hpc-1 RSH ssh
REMOTE HOST hpc-2 RSH ssh
  1. 生成mtflex.config的快捷命令:
#!/bin/csh
echo "LAUNCH AUTOMATIC" > mtflex.config ; srun -n 4 echo "REMOTE HOST $HOSTNAME RSH ssh" >> mtflex.config
5.2 Calibre 2020 版本关键配置
  1. 支持Other Cluster提交方式,Queue Command填写:salloc -c 16 srun %C(16 核,与 CPU 核心数一致);
  2. License 配置需在Environment→Licensing中选择MGLS_LICENSE_FILE,避免许可证冲突。
5.3 Calibre 2022 版本新增功能
  1. GUI 直接支持 MTFlex 分布式配置,无需手动编写文件;
  2. 新增Custom Grid提交方式,支持 Slurm 原生命令,适配动态集群;
  3. 支持All Threads与--exclusive组合,实现节点独占(适合大版图验证):
  4. Submission Command:sbatch -p drc --exclusive;
  5. Run Calibre using:All Threads。

6 性能优化指南

6.1 硬件选型优化
  1. 内存优先:大版图验证(如 Top 层 DRC)推荐 128G + 内存,避免内存不足导致任务卡顿;
  2. 存储 IO 优化:使用 NVMe 硬盘存储版图文件与验证结果,减少 IO 等待时间;
  3. 节点选择:分布式仿真选择同机架节点,降低网络通信延迟。
6.2 参数配置优化
  1. CPU 核心数匹配:调度器-c参数与 CalibreNumber of CPUs to use必须一致,避免资源浪费;
  2. 任务拆分粒度:大版图建议拆分为 16-32 核 / 节点,过小会增加通信开销,过大则降低并行效率;
  3. 输出文件优化:仅勾选必要的输出选项(如不勾选Save Intermediate Files),减少磁盘占用。
6.3 工程流程优化
  1. 分模块验证:先进行模块级 DRC/LVS,再进行 Top 层验证,提前定位问题;
  2. 增量验证:版图修改后,仅验证修改区域(Check Selection选择修改部分),无需全版图重跑;
  3. 规则筛选:前期验证可关闭非致命规则(如部分警告规则),加快迭代速度,最终验证需加载完整规则。

7 常见问题与故障排查

7.1 环境类问题

(1)Calibre GUI 无法启动,提示许可证错误

原因:License 服务器未连通,或环境变量MGLS_LICENSE_FILE配置错误;

解决方法:

  1. 检查 License 服务器 IP 是否可达(ping <License-IP>);
  2. 确认MGLS_LICENSE_FILE格式正确(27001@<IP>);
  3. 执行lmutil lmstat -a -c 27001@<IP>,验证许可证是否可用。

(2)Virtuoso 中无 Calibre 菜单

原因:.cdsinit中 Calibre SKILL 脚本路径错误;

解决方法:

  1. 确认calibre.skl路径正确($MGC_HOME/shared/pkgs/icv/tools/queryskl/calibre.skl);
  2. 重启 Virtuoso,查看 CIW 窗口是否有路径错误提示,修正后重新加载。
7.2 任务提交类问题

(1)集群提交任务后立即 PEND

原因:调度器分区不存在,或资源请求超过集群配额;

解决方法:

  1. 执行sinfo(Slurm)/bqueues(LSF),确认分区名称正确;
  2. 降低资源请求(如将--mem=128G改为--mem=64G),或联系管理员调整配额。

(2)Calibre 2018 版本-n参数无效

原因:2018 版本 LSF-wrapper 不支持-n参数;

解决方法:

  1. 使用Queue Command指定核心数(如bsub -I -q drc -n 16 %C);
  2. 升级至 2020 + 版本,规避该兼容性问题。
7.3 结果类问题

(1)DRC 错误过多,无法定位

原因:版图存在基础连通性问题,或规则文件加载错误;

解决方法:

  1. 先执行 Virtuoso 的Verify→Connectivity,修复开路 / 短路;
  2. 重新加载 DRC 规则文件,确保无 “规则解析错误”。

(2)LVS 不匹配,提示 “Device Mismatch”

原因:版图器件型号与原理图不一致(如晶体管宽长比错误);

解决方法:

  1. 查看 LVS 报告,定位不匹配的器件;
  2. 在版图中修改器件参数(Edit→Properties),确保与原理图一致。

(3)PEX 提取失败,提示 “LVS Mismatch”

原因:LVS 未完全匹配,PEX 依赖 LVS 的匹配结果;

解决方法:先修复 LVS 不匹配项,确保 LVS 完全匹配后再执行 PEX。

7.4 分布式类问题

(1)Remote Host 分布式任务卡住,从节点无负载

原因:主节点与从节点 ssh 免密登录未配置,或节点间网络不通;

解决方法:

  1. 验证主节点能否免密登录从节点(ssh <从节点名>);
  2. 检查防火墙设置,确保节点间 22 端口开放。

(2)调度器显示任务 Running,但 Calibre 无进度

原因:CPU 核心数不匹配,或内存不足导致任务卡顿;

解决方法:

  1. 确认调度器-c参数与 Calibre 核心数一致;
  2. 查看节点内存使用情况(free -h),若内存使用率超过 90%,需增加内存配置。