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; 电流镜

输入输出阻抗

内部节点 vs 数值变量

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;

系统划分

顶层划分

子模块划分原则

  1. 功能独立性:ADC/DAC 等独立单元单独成模块。
  2. 分工合作:为团队分工与后端工作量考虑。
  3. 强调关键模块:关键路径放进同一层次的大模块,便于单独验证。
  4. 层次化:建议 5~7 层。反例:Power→LDO→Bandgap→运放→输入级→Trim 层层嵌套(不可控)。应扁平化:Bandgap 内运放直接放置、Trim 放 Bandgap 层。

关键路径与关键模块

模型书写一般流程

构思/公式描述端口关系
    ↓
书写第一版 Verilog-A 公式模型
    ↓
公式模型 → 结构化实现描述(如有需要)
    ↓
模块仿真验证(多种情况)
    ↓ ← 发现问题回溯修改

书写准则

  1. 简单的模型最好:只反映关心的细节。不关心功耗就不建电流尖峰;关心电流就必须建模电流。
  2. 让模型像模拟电路:用 transition/slew 等增加非理想(延时、边沿),避免全理想信号蒙蔽验证问题、改善收敛。
  3. 良好注释习惯(参考 ahdl 库风格:版本信息、参数介绍、工作原理)。

验证(电路与模型)

验证类型

类型 用途 容差
模型对模型 系统设计初期理想比对 要求很高(残留容差无法被电路弥补)
电路对电路 修改/简化现有电路、IP 复用 取决于模块指标
模型对电路 测试实际电路是否符合系统设计 较大(工艺/电压/温度变化)

验证方式

S 域与 Z 域建模实践

相关笔记