2. Virtuoso ADE环境搭建

在完成 Virtuoso 启动与库路径准备之后,真正决定仿真能否跑通、结果是否可信的,是 ADE(Analog Design Environment)环境的搭建。本节围绕 ADE L、ADE XL 与 ADE Assembler 三种工作模式的定位差异,讲清仿真器选择、模型库与工艺库加载、PVT 变量设置的具体做法,并给出一个可直接参考的配置示例。

一、先分清 ADE L / XL / Assembler 的职责边界

三者共用同一套仿真引擎与设计数据库,差别在于“管理仿真的方式”。ADE L 是单点仿真环境:一个 state 对应一组设计、一组激励、一组分析,适合调试单个电路、验证某个 corner 下的直流工作点或瞬态波形。ADE XL 在 ADE L 之上引入“多测试(Test)+ 多 corner + 多参数扫描”的批量管理能力,用一张数据视图同时跑几十甚至上百个组合,适合做 PVT 扫描与蒙特卡洛。ADE Assembler 则面向“多测试、多模块、多检查”的验证流程,支持把不同测试、不同 DUT、不同检查项组织成一个可复用的验证计划,并输出 pass/fail 汇总,适合可靠性验证与回归。

选择原则很直接:单点调试用 ADE L;需要批量 corner 与扫描用 ADE XL;需要跨测试、跨模块的验证计划与结果汇总用 Assembler。三者之间可以互相导入 state,因此常见做法是先在 ADE L 调通一个测试,再导入 XL 或 Assembler 扩展成批量验证。

ADE L / XL / Assembler 职责与数据流 ADE L 单测试 / 单 state DC · AC · TRAN · NOISE 调试工作点与波形 ADE XL 多 Test × 多 Corner 参数扫描 / Monte Carlo 批量 PVT 数据视图 ADE Assembler 多测试 / 多模块 验证计划 + 检查项 Pass/Fail 汇总 导入 state 扩展验证 共用底层: 设计库(Design Library) · 工艺库(Tech Library) · 模型库(Model Library) · 仿真器(Spectre / APS / X) · 变量与 Corner 定义 三者共享同一套 setup,切换模式不改变底层网表与模型绑定关系 推荐流程: ADE L 调通单测试 → 保存 state → 导入 ADE XL 做 PVT/蒙特卡洛 → 需要跨测试汇总时导入 Assembler 避免在未调通单测试的情况下直接批量跑 corner,否则错误会被放大且难以定位

二、仿真器选择:Spectre、APS 与 Spectre X

在 ADE 的 Setup → Simulator/Directory/Host 中指定仿真器。常用选项有三类:spectre 是标准精度引擎,适合小规模电路与最终签核;aps(Accelerated Parallel Simulator)在多核下对大规模后仿网表有明显加速,精度与 spectre 基本一致;spectre X 面向超大规模与高并行场景,适合大模块后仿。选择时先看电路规模与是否带寄生:前仿小电路用 spectre 即可;后仿几万到几十万节点用 aps;更大规模或需要分布式并行时用 spectre X。

同时要设置仿真目录与主机。建议为每个项目单独指定 Simulation Directory,避免不同项目结果互相覆盖;主机可选本地或远程,远程时需保证模型库路径在远端可见。仿真精度相关选项如 reltol、abstol、vntol 默认即可,只有在收敛困难或需要更高精度时才调整,并记录调整原因。

三、模型库与工艺库加载

工艺库通过 Setup → Model Libraries 加载。典型做法是:先加载工艺厂提供的模型文件(如 models/spectre/xxx.scs),再按 section 选择所需工艺角。模型库条目一般写成“文件路径 + section 名”,例如:

# Model Library 示例(示意,非真实工艺)
/home/pdk/xxx/models/spectre/xxx.scs   section=tt
/home/pdk/xxx/models/spectre/xxx.scs   section=ff
/home/pdk/xxx/models/spectre/xxx.scs   section=ss
/home/pdk/xxx/models/spectre/xxx.scs   section=fs
/home/pdk/xxx/models/spectre/xxx.scs   section=sf

工艺库(Tech Library)则通过 Setup → Technology Library 或库管理器绑定,决定版图与器件参数。注意区分:模型库影响仿真电气行为,工艺库影响版图与器件定义,两者路径不要混用。加载后建议在 ADE 中打开 Model Libraries 面板核对 section 是否与目标 corner 一致,避免“选了 ff 却仍加载 tt”的低级错误。

四、PVT 变量设置方法

PVT 即 Process、Voltage、Temperature。在 ADE 中通常用设计变量(Design Variables)承载 V 与 T,用模型 section 承载 P。具体做法:在 ADE L 的 Variables 面板中定义 vdd、temp 等变量,并在原理图中以变量名引用;温度也可通过 Setup → Temperature 直接设置。进入 ADE XL 后,把这些变量加入 Corners 的扫描维度,即可一次跑完全部组合。

一个可参考的 PVT 组合示例如下(示例参数,实际以项目规格为准):

维度取值说明
Processtt / ff / ss / fs / sf通过模型 section 切换
Voltage1.62 V / 1.80 V / 1.98 V±10% 电源波动
Temperature-40 ℃ / 25 ℃ / 125 ℃工业级温度范围

组合总数 = 5 × 3 × 3 = 45 个 corner。在 ADE XL 中把这三维加入 Corners 后,点击 Run 即可批量执行。结果查看时重点关注最差 corner:例如低压 ss 高温下的增益、带宽与相位裕度,以及高压 ff 低温下的功耗与可靠性指标。若某个 corner 不收敛,先回到 ADE L 用相同变量单独复现,确认是模型、初始条件还是收敛设置问题,再决定是否调整 cmin、gmin 或初始节点电压。

建议把调通的 ADE L state 保存为模板,再导入 ADE XL 建立 corner 组。这样单点与批量使用同一套变量和模型绑定,能显著减少“单点通过、批量失败”的排查成本。
模型库 section 与 corner 名称必须一一对应。若在 XL 中新增 corner 却忘记同步模型 section,仿真会静默使用默认 tt,导致 PVT 结论失真。每次批量运行前,抽查一个 corner 的 log 中实际加载的模型文件与 section。