在ADS中使用Verilog-A模型

什么是Verilog-A模型

可以简单理解为采用Verilog类似的语法来描述Analog电路器件模型,见wikipedia的解释:

Verilog-A是一种针对模拟电路的工业标准模型语言,它是 Verilog-AMS的连续时间子集。
Verilog-A被设计用来对Spectre电路仿真器(Spectre Circuit Simulator)的行为级描述进行标准化,以实现与VHDL(另一个IEEE标准支持的硬件描述语言)。它从其他语言(例如MAST)吸收了对模拟电路的支持。国际Verilog开放组织(Open Verilog International, OVI)支持 Verilog的标准化,使得Verilog-A作为整个Verilog-AMS计划的一部分,从而实现对模拟电路和数字电路设计的处理能力。Verilog-A是Verilog-AMS项目的最初阶段发展起来的。不过,Verilog的开发进展与Verilog-AMS延迟不同,而当时Verilog被纳入了IEEE 1364标准,这就使得Verilog-AMS被遗留给了Accellera公司。因此最初的单一语言标准的目标并没有实现。[1]

构建一个简单的测试模型

使用一个正弦信号源模型来做为测试用,Verilog A代码如下

`include "disciplines.vams"
`include "constants.vams"
module sine_wave(n1,n2);
       electrical n1,n2;
       parameter real gain = 1.0, freq = 1.0;
       analog begin:
       V(n1,n2) <+ gain * sin(2 * `M_PI * freq* $abstime);
       $bound_step(0.05/freq);
       end
 endmodule

其中gain和freq做为变量,作为模型可变参数后续可以进行灵活设置

如何在ADS中使用Verilog-A模型

1、在ADS软件中新建一个project,在对应的project下面建立一个veriloga文件夹,将测试代码另存到这个文件夹内部,命名为sine_wave.va

image

2、在ADS中新建模型对应的symbol,放入两个port,

image

编辑design parameter,需要对应将之前代码中设置为parameter的gain和freq设置一个参数

[图片上传失败...(image-99d247-1570289668560)]

让后软件即可自动生成一个symbol,symbol的形状可以编辑,本文只作示意,用默认不更改
3、重新建立一个测试电路原理图,将刚才模型导入设计中,整体搭建的简单测试电路如下

image

4、运行并获得仿真结果,与预测的标准模型功能一致,模型顺利工作(注意步进时间的取舍,过小,仿真时间过长,过大,会导致波形细节有问题,可以自己调试做调整)

image

5、改变 parameter 的设置,观察参数是否有传递。将Freq设置为2,仿真查看波形,发现参数导入正常,模型的参数化功能也是可以顺利使用的

小结

在ADS引入标准的Verilog-A模型,可以利用硬件描述来实现模拟器件的行为级建模,为仿真建模带来很多便利性,可以在此基础上构建更加复杂的模型,同时解决那些用分离器件构建复杂模型的痛楚。新版本软件应该加强了对Verilog-A model的使用便捷性,感兴趣的同学可以寻找最新的教程学习!

【本文仅供学习交流使用,转载请注明出处,谢谢!】


  1. 引用wiki解释 ↩

你可能感兴趣的:(在ADS中使用Verilog-A模型)