2. 协同仿真平台与工具链搭建
混合信号协同仿真的核心难点,不在于单独跑通一个模拟仿真器或一个数字仿真器,而在于让两个原本独立运行的仿真内核在同一个时间轴上协同推进、交换数据并保持一致。因此,工具链搭建的本质是解决三件事:模拟内核与数字内核如何各自运行、两者通过什么接口交换信号、时间同步由谁主导。本节围绕主流方案 Cadence AMS、Spectre-Verilog 以及 Simulink 与 SPICE 联合仿真,讲清安装配置、接口连接与基本操作。
一、三种主流协同仿真架构的定位
Cadence AMS Designer 是工业界最常用的混合信号平台,它把 Spectre(模拟求解器)与 Incisive/Xcelium(数字求解器)通过 AMS 控制层统一调度,模拟侧用 Verilog-A/Verilog-AMS 建模,数字侧用 Verilog/VHDL,接口通过 connect module 完成电气域与逻辑域的转换。Spectre-Verilog 是更轻量的组合方式,适合模拟为主、数字逻辑较少的场景,通常由 Spectre 通过 Verilog 接口直接调用数字模块。Simulink 与 SPICE 联合则常见于系统级验证,Simulink 负责控制算法与系统模型,SPICE 负责电路级精度,两者通过 S-function 或协同仿真接口交换数据。
选择哪种方案,取决于三个判断条件:数字逻辑规模是否大、是否需要 AMS 语言建模、以及是否需要与系统级工具联动。数字规模大且需要 AMS 建模,选 AMS Designer;模拟为主、数字逻辑简单,选 Spectre-Verilog;需要控制算法与电路联合,选 Simulink+SPICE。
二、环境安装与基础配置
以 Cadence AMS Designer 为例,安装完成后需要配置环境变量。典型配置如下:
export CDS_INST_DIR=/opt/cadence/IC618
export PATH=$CDS_INST_DIR/tools/bin:$CDS_INST_DIR/tools/dfII/bin:$PATH
export SPECTRE_DEFAULTS=+mt
export AMS_HOME=$CDS_INST_DIR/tools/ams
export PATH=$AMS_HOME/bin:$PATH
配置完成后,用 spectre -W 和 xrun -version 分别验证模拟与数字内核是否可用。若 xrun 报 license 错误,检查 LM_LICENSE_FILE 是否指向正确的 license 服务器。Simulink 与 SPICE 联合时,需要确认 MATLAB 的 mex 编译器已配置,SPICE 侧通常使用 ngspice 或 HSPICE 的协同接口,通过 mex -setup 选择 C 编译器后编译 S-function 包装层。
三、接口连接与基本操作
接口连接是协同仿真最容易出错的部分。以 AMS Designer 为例,模拟侧输出一个 1.2V 的模拟节点,数字侧需要把它识别为逻辑高电平。这需要在 connect module 中定义阈值:
// connect module 示例:模拟到数字的转换
module a2d_connect (inout a, input d);
parameter real vth = 0.6;
parameter real vdd = 1.2;
assign d = (V(a) > vth) ? 1'b1 : 1'b0;
endmodule
数字到模拟的转换则相反,需要定义驱动强度和上升/下降时间。若接口未定义,仿真会报“no connect module found”或信号悬空。基本操作流程是:先建立模拟测试台并单独跑通 Spectre,再建立数字测试台并单独跑通 xrun,最后在 AMS 顶层把两者例化并通过 connect rules 连接。单独跑通这一步不能跳过,否则混合仿真出错时无法定位是模拟侧还是数字侧的问题。
四、一个可复现的配置示例
假设要仿真一个 1.2V 供电的 SAR ADC 前端:模拟侧是采样保持电路,数字侧是逐次逼近逻辑。配置参数如下表所示,这些参数属于教学示例,实际值需根据工艺库调整。
| 配置项 | 示例值 | 说明 |
|---|---|---|
| 模拟电源 | 1.2 V | Spectre 侧 vdd 节点 |
| 数字逻辑电平 | 1.2 V / 0 V | Verilog 侧 supply1/supply0 |
| 接口阈值 vth | 0.6 V | 模拟转数字判决门限 |
| maxstep | 1 ns | 模拟最大时间步长 |
| sync tolerance | 10 ps | 时间同步容差 |
| 数字时钟周期 | 100 ns | SAR 逻辑时钟 |
运行后观察三个关键点:模拟节点波形是否在阈值附近正确翻转、数字输出码字是否随输入斜坡单调变化、仿真日志中是否出现时间同步警告。若码字在某个输入点跳变异常,优先检查接口阈值与模拟信号摆幅是否匹配;若仿真速度极慢,检查 maxstep 是否过小或数字事件是否过于频繁。
五、常见问题与判断依据
协同仿真报错通常集中在三类:license 与路径问题、接口连接问题、时间同步问题。license 问题表现为工具启动即退出,检查环境变量与 license 文件;接口问题表现为信号恒为 0 或恒为 1,检查 connect module 是否被正确例化、阈值是否合理;时间同步问题表现为仿真卡死或结果不收敛,检查 maxstep、sync tolerance 以及是否存在数字侧组合环路。判断依据是:单独跑模拟通过、单独跑数字通过、混合失败,则问题一定在接口或同步配置,而不在电路或 RTL 本身。
掌握这些配置与判断方法后,工具链就从“能启动”进入“能定位问题”的状态,这是后续进行实际混合信号验证的基础。