马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
首先,讲一下AMS中的数字部分,是用verilog写的,而不是veriloga,verilog是描述数字电路的,veriloga是描述模拟电路的。 一、AMS仿真详细流程 1. AMS仿真不同于其他常规仿真,仿真之前需要在terminal输入命令(如下图),目的是先设置incisive的版本。我用的是irun工具,因此必须载入高本版的incisive,如果用早期的ncverilog就不需要高本版incisive。irun、ncverilog还是xrun的介绍有必要看下以下链接: 转 | cadence验证仿真工具IUS,IES,irun和xrunblog.csdn.net/Clara_D/article/details/122964837PS:incisive是什么?Cadence公司针对复杂IC设计,特别是纳米级设计,推出Incisive验证平台。它是嵌入式软件、控制、数据通道和模拟/混合信息/RF设计的统一平台。Incisive平台内建支持Verilog、VHDL、SystemC、SystemC验证库、规范语言PSL/Sugar、算法开发和模拟/混合信息(AMS),实现了设计功能集成。 载入高本版的incisive的命令
一共3个命令,module list可查看当前incisiv的版本。 2. 载入高本版incisive后,打开virtuoso,建立模拟部分和数字部分的cellview。在new file--cellview建立。数字部分是verilog代码编写,type是verilog,这时view会自动变为functional,模拟部分两个都是schematic。这两个很简单很基础,不再赘述。 3. 建立数模混合仿真的testbench,步骤同2,也是schematic,同模拟电路的新建方法,将步骤2建立好的数字和模拟的cellview导入到此schematic中。 4. 新建config。用于AMS仿真的配置的view,如下图。点击ok。
5. 然后出现如下window,将Top cell的View选为schematic,点击下方的use Template。出现use Template的窗口,点击AMS,再点击ok即可,出现config的选项,可看到config已配置好。
6. 然后出现如下图配置。在Cell Bindings出现数模混合电路的所有模块,这里注意方的Stop list应写上verilog,这样混合电路中的数字电路才能被识别。点击左上角的保存,再点击ADE L。(点击open可以打开混合仿真的schematic,如果进行了修改,需要点击update)。
7. 打开ADE L之后,点击仿真器,确认是AMS无误。由于混合仿真可能速度很慢,建议设置APS多线程仿真。
8. 设置连接规则,如下图,在Rules name中选择自己需要的规则,点击add,上方就会出现选中的rules,也可以自己定义规则,点击customize按钮即可(一般也不需要自定义)。
9. 然后设置仿真器,如下图点击Netlist and Run options,选择第一个irun模式,其他默认即可。然后设置AMS仿真器,点击Options,AMS Simulator,出现AMS options窗口,选择-f文件(你自己的数字电路的verilog代码如果例化了其他人的verilog模块,需要.f文件,如果都是自己的verilog模块,那么此项不填)
10. 在ADE加入tran仿真,和spectre进行tran仿真相同的方法。然后点击右边绿色的run就可以仿真了。
二、我的debug过程
1. 由于我们不是一个独立的模拟组,是要和数字组进行合作对接的。比如我们模拟做了时钟模块、电源模块等很多模块,那么数字那边会针对每个模块设计数模混合仿真的数字模块的.v文件,我们模拟是不用写verilog代码的。回到AMS仿真流程的第9步,也就是说此时的.f文件也是数字组针对每个模拟模块编写的。也就是说,数字组会针对时钟模块和电源模块等分别写出数模混仿的.v文件和.f文件,在他们自己的目录下编写。因此我需要加载数字组的.v文件和.f文件,那么要准确知道他们在什么目录下编写的,也就是说知道他们的.v和.f文件目录。 由于数字模块的.v文件不在自己目录下,因此需要在virtuoso的file导入这个文件,如下图设置。将别人的.v文件导入自己的目标库,正确填写自己的库名字。并选择别人的.v文件点击add。其他设置如红框所示。 对于.f文件我没做详细的研究,但是有一点很明白的是,数字那边写的代码在.f文件中包含他们自己的.v文件的路径之类的代码,因此需要和数字那边做好沟通,我们就是要在启动virtuoso之前要source一个文件才可以,这个不同的人写代码风格不一样,不能一概而论。 PS:完全由自己做AMS,在自己目录下写数字模块,不会出现我这个问题的。 2. 开始用了ncverilog而不是irun,会报以下错误,仿真不会报error但是有warning,仿真无法得到正确结果。将ncverilog改为irun之后,错误解决。 3.仿真也不报错,会卡住,长时间不刷新,是因为incisive的版本太低了,按照第一步更换新版本即可。 4.数字那边的.v文件更新修改过,我这里用的数字电路的.v文件是copy的他们的,是在我自己的路径下的。但是这个.v文件里面还例化了其他的module,这个module数字那边修改过,而我不知道,他们删除了几个端口port,所以会提示port没找到。所以在我的.v文件里面注释掉他们删除的端口,错误解决。在output log可详细查看哪里的bug。 AMS数模混仿的bug较多,此文只是我自己遇到的问题,我看网上还有很多其他的问题,要根据实际电路去debug,问题出现的多主要也就是和其他小组有关系,尤其在公司这个问题尤为凸显,因为公司不同部门之间都有联系,文件也很多。单纯自己做个简单的AMS还是不复杂的
|