3. 混合信号验证平台架构设计
混合信号验证平台的核心难点,不在于单独跑通一个数字用例或一个模拟仿真,而在于让两个原本独立演进的验证世界在同一时刻、同一语义下协同工作。数字侧通常运行在 SystemVerilog/UVM 环境中,以离散事件和时钟周期为节拍;模拟侧运行在 SPICE 类仿真器中,以连续时间步长和收敛迭代为节拍。AMS 平台架构设计要解决的,正是这两套节拍之间的“翻译、同步与复用”问题。
一、接口层:数字与模拟之间的语义边界
接口层决定数字信号如何变成模拟激励、模拟结果又如何回到数字域。工程上通常把接口划分为三类连接:电气连接(real/wreal 类型的节点电压、电流)、逻辑连接(logic 类型的数字端口经 Connect Module 转换)、事务连接(通过 UVM 的 analysis port 或 TLM 传递配置与观测数据)。
以 Xcelium AMS 为例,数字侧通过 nettype 与 discipline 声明把 Verilog 端口绑定到模拟节点。一个典型的电阻分压采样接口可以写成:
// 数字侧驱动模拟节点
wreal vdd_sense;
assign vdd_sense = (enable) ? 1.8 : 0.0;
// 模拟侧接收
module divider(input wreal vdd_sense, output wreal vout);
parameter real R1 = 10k;
parameter real R2 = 10k;
assign vout = vdd_sense * R2 / (R1 + R2);
endmodule
这里的关键约定是:wreal 表示连续量的离散采样值,它不参与 SPICE 的牛顿迭代,而是作为边界条件注入模拟求解器。若需要真正的双向电气耦合,则必须使用 electrical 节点配合 Connect Module,由工具在数字事件与模拟时间步之间插入同步点。
二、连接模块:同步与转换的枢纽
Connect Module(连接模块)是 AMS 平台中最容易被低估、却最影响仿真效率的部件。它承担三项职责:电平转换(0/1 逻辑到 0V/1.8V 电压)、时间同步(把数字事件对齐到模拟时间步)、方向仲裁(避免双向端口出现驱动冲突)。
实际工程中,连接模块的插入位置和采样策略直接决定仿真速度。若把连接模块放在每个门级端口上,模拟求解器会被频繁打断,仿真时间可能膨胀数十倍。合理的做法是在功能边界而非门级边界插入:例如只在 ADC 输入、DAC 输出、PLL 控制电压、电源监测点等位置建立连接,内部数字逻辑保持纯数字仿真。
maxstep)保持同一量级。若数字侧时钟为 100MHz(10ns),而模拟侧 maxstep 设为 1ns,则每个数字周期会产生 10 次同步点,需评估是否必要。三、配置数据库:平台可复用的基础
AMS 平台的配置数据库不是简单的参数文件,而是描述“哪些模块用数字仿真、哪些用模拟仿真、哪些用真实 SPICE 模型、哪些用行为级 wreal 模型”的映射表。Xcelium 中通常通过 ams.cfg 或 connectrules 文件管理。
一个可复用的配置数据库应包含四类信息:
- 模块归属:每个实例的仿真域(digital / analog / real / behavioral)。
- 连接规则:端口到连接模块的映射,含方向、阈值、驱动强度。
- 模型选择:同一模块在不同验证阶段使用不同抽象层级(晶体管级 / 行为级 / 混合)。
- 仿真控制:模拟求解器精度、maxstep、收敛容差、断点策略。
配置数据库的价值在于把“平台搭建”与“用例编写”解耦。当验证从模块级推进到芯片级时,只需替换配置中的模型选择项,而无需改动测试用例和连接代码。
四、工程可复用性规划
可复用性规划要回答三个问题:接口是否稳定、配置是否参数化、模型是否可替换。建议采用“三层分离”结构:
- 接口层:定义稳定的 wreal/electrical 端口和事务接口,不随内部实现变化。
- 适配层:连接模块与配置数据库,负责域转换和模型选择。
- 用例层:UVM 序列和检查器,只面向接口层编程,不感知模拟细节。
这样,当模拟团队把行为级模型替换为晶体管级模型时,数字验证工程师的用例无需修改,只需在配置数据库中切换模型路径。复用性不是靠“写得更通用”实现的,而是靠把变化点集中到适配层实现的。
五、一个可参考的配置片段
下面给出一个简化的 ams.cfg 示例,用于说明配置数据库如何描述模块归属与连接规则。示例参数为教学假设值,实际工程需按工艺与验证阶段调整。
// ams.cfg 示例(教学假设)
connectrules ams_rules;
connect wreal2electrical(wreal, electrical);
connect electrical2wreal(electrical, wreal);
endconnectrules
// 模块归属
instance top.adc : analog;
instance top.dac : analog;
instance top.digital : digital;
instance top.pll : mixed;
// 模型选择
model top.adc = "adc_behavioral.va";
model top.dac = "dac_transistor.sp";
model top.pll = "pll_wreal.vams";
// 仿真控制
simulator analog maxstep = 1n;
simulator analog reltol = 1e-4;
simulator analog abstol = 1e-12;
当验证从模块级推进到芯片级时,只需把 top.adc 的模型从行为级替换为晶体管级,用例层无需任何改动。这就是配置数据库带来的复用收益。
总结来看,AMS 平台架构设计的本质是在数字与模拟之间建立一层可控、可配置、可替换的适配层。接口层定义语义边界,连接模块负责同步与转换,配置数据库管理模型与仿真策略,三层分离保证工程可复用性。架构设计的目标不是让平台“能跑”,而是让平台在模型替换、精度切换、规模扩展时,仍然保持用例层的稳定与可维护。