Verilog-A 建模与系统设计
建模方法论:从系统需求 → 模块划分 → 模型书写 → 验证。核心思想:在系统设计早期用抽象模型换取仿真速度。
输入输出关系(行为建模起点)
所有模块本质:定义电压 / 电流 / 阻抗三者中的两者。
| 关系 | 写法 | 适用 |
|---|---|---|
| 电压→电压 | V(OUT) <+ V(IP,IN)*GAIN; |
放大器、比较器 |
| 电压→电流 | I(OUT) <+ V(IP,IN)*GM; |
gm 单元、V/I 转换 |
| 电流→电压 | V(OUT) <+ I(IP,IN)*R; |
电流检测 |
| 电流→电流 | I(OUT) <+ I(IP,IN)*RATIO; |
电流镜 |
输入输出阻抗
- 一般不定义无穷大输入阻抗/无穷驱动能力输出(保持模拟特性)。
- 电阻性:
V(P,N) <+ I(P,N)*R; - 感性:
V(P,N) <+ ddt(I(P,N))*L; - 容性:
I(P,N) <+ ddt(V(P,N))*C;
内部节点 vs 数值变量
- 数值变量(real/integer):保存中间结果,不增加仿真器节点数 → 优先使用。
- 内部节点(electrical):需要保留波形显示、ddt 多次操作、避免 RF Hidden State 错误时使用。
- 例:输入输出阻抗描述时用内部节点串联:
I(ip1, net1) <+ I(net1, ip2); // 串联:电流相同
并联与 branch
并联 = 电压相同、电流相加(用叠加赋值):
I(ip1, in1) <+ V(ip1, in1)/R1;
I(ip1, in1) <+ V(ip1, in1)/R2; // 三条支路并联特性
I(ip1, in1) <+ V(ip1, in1)/R3;
或命名 branch(可读性):
branch (ip1, in1) resistor1;
I(resistor1) <+ V(ip1, in1)/R1;
系统划分
顶层划分
- 绝大多数系统顶层简单分为数字模块 + 模拟模块。
- 好处:功能清晰、便于分工(数模工程师分离)、接口清晰仿真高效。
子模块划分原则
- 功能独立性:ADC/DAC 等独立单元单独成模块。
- 分工合作:为团队分工与后端工作量考虑。
- 强调关键模块:关键路径放进同一层次的大模块,便于单独验证。
- 层次化:建议 5~7 层。反例:Power→LDO→Bandgap→运放→输入级→Trim 层层嵌套(不可控)。应扁平化:Bandgap 内运放直接放置、Trim 放 Bandgap 层。
关键路径与关键模块
- 一般 70%+ 是「成熟模块」可直接复用;主要精力放在 ≤30% 的「挑战型模块」。
- 整体建模先行:先按输入输出关系建模,再逐步细化结构(两级电阻比例放大等)。
- 使用参数:模型尽量参数化(Cadence 可 pPar("name") 直接传仿真参数)。
- 分离指标:把难实现的指标从其他指标中分离出来独立模块(如 PSRR 独立化),降低复杂度。
模型书写一般流程
构思/公式描述端口关系
↓
书写第一版 Verilog-A 公式模型
↓
公式模型 → 结构化实现描述(如有需要)
↓
模块仿真验证(多种情况)
↓ ← 发现问题回溯修改
书写准则
- 简单的模型最好:只反映关心的细节。不关心功耗就不建电流尖峰;关心电流就必须建模电流。
- 让模型像模拟电路:用 transition/slew 等增加非理想(延时、边沿),避免全理想信号蒙蔽验证问题、改善收敛。
- 良好注释习惯(参考 ahdl 库风格:版本信息、参数介绍、工作原理)。
验证(电路与模型)
验证类型
| 类型 | 用途 | 容差 |
|---|---|---|
| 模型对模型 | 系统设计初期理想比对 | 要求很高(残留容差无法被电路弥补) |
| 电路对电路 | 修改/简化现有电路、IP 复用 | 取决于模块指标 |
| 模型对电路 | 测试实际电路是否符合系统设计 | 较大(工艺/电压/温度变化) |
验证方式
- 数值指标:对比仿真计算值(可用 Excel/在线表格处理)。
- 波形:多结果对比工具(Cadence Visualization&Analysis、SimVision)。
- 自动化:AmsDmv 可自动对比端口、测量结果与波形。
S 域与 Z 域建模实践
- S 域(laplace_*):描述线性频率响应,与瞬态器件模型 AC/阶跃响应一致,但无 DC 工作点/大信号非线性/初始状态。混合用法:非线性用瞬态描述,线性小信号用 laplace。
- Z 域(zi_*):离散采样系统(采样保持、ADC/DAC、开关电源)。⚠️ 采样时钟应对齐输入稳定周期,否则采样到斜坡值产生误差。
相关笔记
- 模块定义 → 05 - VerilogA 模块定义与实例化
- 模拟算子 → 07 - VerilogA 模拟算子
- 调试与收敛 → 14 - VerilogA 调试与收敛
- 常用模型 → 15 - VerilogA 常用器件模型
- 混合信号 → 12 - VerilogA 混合信号仿真