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、收敛容差、断点策略。

配置数据库的价值在于把“平台搭建”与“用例编写”解耦。当验证从模块级推进到芯片级时,只需替换配置中的模型选择项,而无需改动测试用例和连接代码。

四、工程可复用性规划

可复用性规划要回答三个问题:接口是否稳定、配置是否参数化、模型是否可替换。建议采用“三层分离”结构:

  1. 接口层:定义稳定的 wreal/electrical 端口和事务接口,不随内部实现变化。
  2. 适配层:连接模块与配置数据库,负责域转换和模型选择。
  3. 用例层:UVM 序列和检查器,只面向接口层编程,不感知模拟细节。

这样,当模拟团队把行为级模型替换为晶体管级模型时,数字验证工程师的用例无需修改,只需在配置数据库中切换模型路径。复用性不是靠“写得更通用”实现的,而是靠把变化点集中到适配层实现的。

混合信号验证平台三层架构与数据流 用例层(UVM Testbench) Sequence Driver / Monitor Scoreboard Coverage / Checker 适配层(Connect Module + 配置数据库) Connect Module 电平转换 / 时间同步 方向仲裁 ams.cfg 模块归属 / 连接规则 模型选择 / 仿真控制 模型库 晶体管级 / 行为级 / wreal 可替换抽象层级 仿真层(双求解器协同) 数字求解器 离散事件 / 时钟周期 SystemVerilog / Verilog 模拟求解器 连续时间 / 牛顿迭代 SPICE / Verilog-A 同步点 事务 / 信号 wreal / electrical 变化点集中在适配层:模型替换、连接规则调整、仿真精度切换均不影响用例层

五、一个可参考的配置片段

下面给出一个简化的 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 的模型从行为级替换为晶体管级,用例层无需任何改动。这就是配置数据库带来的复用收益。

连接模块的阈值和驱动强度必须与模拟侧的实际电气规范一致。若数字侧输出 1.8V 逻辑高,而模拟侧期望 3.3V,连接模块会引入系统性偏差,导致功能通过但电气行为错误。

总结来看,AMS 平台架构设计的本质是在数字与模拟之间建立一层可控、可配置、可替换的适配层。接口层定义语义边界,连接模块负责同步与转换,配置数据库管理模型与仿真策略,三层分离保证工程可复用性。架构设计的目标不是让平台“能跑”,而是让平台在模型替换、精度切换、规模扩展时,仍然保持用例层的稳定与可维护。