2. Synopsys AMS验证平台架构
Synopsys AMS 混合信号协同验证平台的核心思路,是把数字仿真、模拟仿真和版图/原理图设计环境组织成一个可协同工作的整体,而不是把三套工具简单串起来。理解这一架构,关键要抓住三个问题:谁负责什么、它们之间通过什么接口交换信息、以及混合信号域在什么地方被切开又重新连接起来。
一、平台中的三个核心角色
在典型的 Synopsys AMS 流程中,VCS 承担数字域仿真,负责 Verilog/SystemVerilog 描述的 RTL 或门级网表、数字激励、断言与覆盖率;Custom Compiler 提供原理图与版图设计入口,是模拟电路、混合信号 IP 和顶层连接的编辑与查看环境;PrimeSim 系列(如 PrimeSim HSPICE、PrimeSim SPICE、PrimeSim Continuum 等)承担模拟/晶体管级仿真,处理 SPICE 网表、器件模型和模拟激励。三者不是替代关系,而是分工关系:VCS 管离散事件与数字时序,PrimeSim 管连续时间与模拟精度,Custom Compiler 管设计数据与连接关系的组织。
需要特别注意的是,AMS 验证并不是“VCS 调一次、PrimeSim 调一次,然后人工比对波形”。真正的协同验证要求两个求解器在同一仿真时间轴上推进,并在跨域边界处按约定交换信号值。这个“同一时间轴、按边界交换”的机制,才是 AMS 平台架构的实质。
二、协同机制:主从式联合仿真
Synopsys AMS 通常采用主从式(master-slave)联合仿真架构。VCS 作为数字侧求解器,PrimeSim 作为模拟侧求解器,二者通过 AMS 接口层(常以 VCS AMS / Custom Compiler AMS 环境体现)建立通信。数字侧按事件推进,模拟侧按时间步推进;当数字信号跨越模拟边界、或模拟信号需要驱动数字输入时,接口层负责在同步点上交换数值并协调下一步时间推进。
这种协同的关键约束是时间同步策略。常见做法是让模拟求解器在数字事件之间“走到”下一个同步点,数字侧则在同步点采样模拟输出。若模拟侧时间步过大,可能漏掉窄脉冲;若同步过密,又会显著增加通信开销。因此实际项目中需要根据信号翻转率和精度要求设置合理的同步与容差参数,而不是默认一路跑到底。
三、仿真器接口:连接模块与边界信号
AMS 接口层的核心构件是连接模块(connect module)。它位于数字域和模拟域的边界上,负责把数字逻辑值转换为模拟电气量,或把模拟电压/电流转换为数字逻辑值。连接模块不是简单的“0 变 0V、1 变 1.8V”,它通常还包含驱动强度、上升/下降时间、阈值判断和双向控制等行为。例如数字输出驱动模拟输入时,连接模块按指定电压摆幅和转换时间产生模拟波形;模拟输出送回数字输入时,连接模块按输入阈值和噪声容限判定逻辑值。
在 Custom Compiler 中,设计者通过原理图或网表把数字模块和模拟模块放在同一顶层,并在跨域端口上放置连接模块或指定连接关系。VCS 侧则通过 AMS 配置识别哪些模块属于数字域、哪些属于模拟域,以及边界上使用哪种连接模块。这个“域划分 + 边界连接”的配置,直接决定联合仿真能否正确建立。
四、混合信号域划分与连接方式
域划分的本质是回答“哪些部分交给 VCS,哪些部分交给 PrimeSim”。常见划分原则是:纯数字逻辑、数字控制、寄存器、总线接口交给 VCS;模拟前端、放大器、比较器、偏置、电源、时钟发生器等晶体管级电路交给 PrimeSim;跨域信号则通过连接模块衔接。划分不是越细越好,过度切分会导致同步点过多、仿真变慢;划分过粗又可能让模拟域承担本可数字化的逻辑,浪费仿真资源。
连接方式上,常见有三类:数字输出到模拟输入(如数字控制码驱动模拟可调增益)、模拟输出到数字输入(如比较器输出送入数字状态机)、以及双向或反馈连接(如模拟环路中的数字校准)。每一类都需要在边界上明确方向、阈值和时序关系。若方向或阈值设置错误,典型现象是数字侧一直采到固定值、模拟侧输入悬空或波形不翻转,这类问题往往不是求解器本身出错,而是边界连接配置与设计意图不一致。
五、一个可参考的配置片段
下面给出一个示意性的 AMS 配置片段,用于说明域划分与连接关系如何表达。参数为教学示例,实际值需按工艺、电压和设计需求确定。
// 示意性 AMS 配置(教学示例,非实测配置)
digital_domain: top.digital_ctrl, top.spi_slave
analog_domain: top.analog_frontend, top.bias_gen
connect:
top.digital_ctrl.dac_code[7:0] -> top.analog_frontend.dac_in[7:0]
type: logic_to_electrical
vhigh: 1.8V vlow: 0.0V
trise: 100ps tfall: 100ps
top.analog_frontend.comp_out -> top.digital_ctrl.comp_in
type: electrical_to_logic
vth: 0.9V
sync_interval: 1ns
sim_time: 200us
这段配置表达的核心信息是:哪些模块属于数字域、哪些属于模拟域、跨域端口的方向和转换类型、以及同步间隔和仿真时长。实际使用时,具体语法和字段名以所用 Synopsys 版本和 AMS 环境为准,但“域划分 + 边界连接 + 同步控制”这三层信息是共通的。
六、协同验证中值得关注的判断依据
联合仿真跑起来之后,判断协同是否正确,不能只看“有没有报错”。更可靠的观察点是:跨域边界上的信号是否按预期翻转;数字侧采样到的模拟输出是否落在合理逻辑区间;模拟侧接收到的数字驱动波形是否具有正确的摆幅和转换时间;同步点附近是否出现异常毛刺或数值跳变。若边界信号行为与单独仿真数字域或模拟域时的预期不一致,应优先检查连接模块配置和同步参数,而不是直接怀疑求解器精度。
总体来看,Synopsys AMS 平台架构可以概括为:VCS 与 PrimeSim 各自负责数字和模拟求解,Custom Compiler 负责设计数据与连接组织,AMS 接口层通过连接模块和同步机制把两个域在同一时间轴上协同起来。域划分决定仿真资源分配,连接方式决定跨域信号能否正确传递,同步策略决定联合仿真的效率与精度。理解这三者的关系,是后续搭建 AMS 验证环境和排查混合信号问题的前提。