什么是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
2、在ADS中新建模型对应的symbol,放入两个port,
编辑design parameter,需要对应将之前代码中设置为parameter的gain和freq设置一个参数
[图片上传失败...(image-99d247-1570289668560)]
让后软件即可自动生成一个symbol,symbol的形状可以编辑,本文只作示意,用默认不更改
3、重新建立一个测试电路原理图,将刚才模型导入设计中,整体搭建的简单测试电路如下
4、运行并获得仿真结果,与预测的标准模型功能一致,模型顺利工作(注意步进时间的取舍,过小,仿真时间过长,过大,会导致波形细节有问题,可以自己调试做调整)
5、改变 parameter 的设置,观察参数是否有传递。将Freq设置为2,仿真查看波形,发现参数导入正常,模型的参数化功能也是可以顺利使用的
小结
在ADS引入标准的Verilog-A模型,可以利用硬件描述来实现模拟器件的行为级建模,为仿真建模带来很多便利性,可以在此基础上构建更加复杂的模型,同时解决那些用分离器件构建复杂模型的痛楚。新版本软件应该加强了对Verilog-A model的使用便捷性,感兴趣的同学可以寻找最新的教程学习!
【本文仅供学习交流使用,转载请注明出处,谢谢!】
-
引用wiki解释 ↩