如何仿真IP核(建立modelsim仿真库完整解析)
来源:http://www.ednchina.com/ART_49023_19_0_AN_7116cf44.HTM
IP核生成文件:(Xilinx/Altera 同)
IP核生成器生成 ip 后有两个文件对我们比较有用,假设生成了一个 asyn_fifo 的核,则asyn_fifo.veo 给出了例化该核方式(或者在 Edit->Language Template->COREGEN 中找到verilog/VHDL 的例化方式)。asyn_fifo.v 是该核的行为模型,主要调用了 xilinx 行为模型库的模块,仿真时该文件也要加入工程。(在 ISE中点中该核,在对应的 processes 窗口中运行“ View Verilog Functional Model ”即可查看该 .v 文件)。如下图所示。
1. 在 ISE 集成环境中仿真 IP核
IP 核应该在新建的工程中进行仿真与例化;在原工程中可以例化使用,但好像不能直接对它加 testbench 后进行仿真。如下两图所示。
图 1:直接在工程中对 ip核加 testbench 仿真时出错
图 2:新建工程单独对 ip核仿真
2.在 modelsim中仿真 ip 核
a.在 modelsim中编译库(Xiliinx)
(1)在$Modeltech_6.0d/Xilinx_lib_tt下新建文件夹 Xilinx_lib($代表安装盘符)
(2)打开 Modelsim->File->Change Diriectory,将路径指向刚才新建的文件夹 Xilinx_lib,这样 Xilinx 编译的所有库都将会在该文件夹下。
(3)编译 Xilinx 库。在$Xilinx->verilog->src 下有三个库“simprims”,“unisims”和“xilinxcorelib”。在 modelsim 的 workpace 窗口 Library 属性中点右键->new->library(或在File 菜单下 new->libary),输入库名(自定义)如 Xilinx_lib_tt,这样在 workpace library 属性下就可看到 Xilinx_lib_tt 了。
(4)modelsim 中选中 compile,在弹出的对话框中,library 选择刚才新建的 xilinx_lib_tt,查找范围为 xilinx 库($Xilinx/verilog/src/),如 XilinxCoreLib,选中文件编译即可。
b. 在 modelsim中加载已编译的库
当要在 modelsim 中仿真带有 ip 核的设计时,需要加载对应公司的库才能仿真。仿真Xilinx 公司ip 核时需要在原工程文件中加入 ip 核的行为描述文件(<核名>.v)。
如果工程文件直接包含在 xilinx“ XilinxCoreLib” library中,则可直接进行仿真。如果工程文件开始默认包含在“work”library 中,则需要在 Simulation->Start Simulation->library 中添加已编译的库,如图示。这样就可以对 ip 核进行仿真了。
aa.在 modelsim中编译 Altera 的库与 Xilinx方法一样
bb.在 modelsim中对 ip 核进行仿真,与 xilinx 一致;首先需要在 modelsim工程中加入设计文件,testbench 文件以及核的行为描述文件(<核名>.v);其次,自 File 菜单中更改库路径指向已编译的 altera库路径(否则原先编译的 altera 库将变为不可用,unavailable),这时原先编译的库将变为可用,然后在 Simulation->Start Simulation->library中添加库路径(同Xilinx,图4,图附 3)。
图 3:编译xilinx 库
图 4:加入库进行核仿真
使用 modelsim 进行仿真,相对在 ISE 或 Quartus 中直接调用 modelsim,至少有三个好处:
1.速度快。仿真必然会不停的修改设计,每次修改设计后在 ISE 中需要重新综合后才能调用 modelsim;而在 Quartus 中时间花费更多,它还要等布局布线完成了才能调用。这样每次等待是件很痛苦的事。而直接在 modelsim 里面仿真,修改后只要重新编译即可仿真,速度要快的多。不过这样有一个坏处,那就是设计不一定是可综合的。但只要我们编程时时刻遵循可综合设计规则,培养良好的编程风格,这个缺点影响可减到最低。
2.调试方便。在 ISE/Quartus 中调用 modelsim仿真只能看到输入输出信 号,而对于设计的中间信号/变量,特别是ip核的内部信号/变量无法观测。而在modelsim中直接仿真可以观测设计中出现的任何信号/变量无和 ip 核内的任何信号/变量,这样我们设计的数据流向就可以很清楚的表示出来,还可以检测不同编程方式的处理效果,极大的方便了调试。
3.修改参数方便。在 modelsim中仿真 ip 核时需要将该 ip 核的行为描述文件加入到工程中去。修改该行为描述文件中 ip 核的参数可以方便的更改 ip 核特性。
附 A:在 ISE/Quartus中直接调用 modelsim。
a.先安装 ISE,再安装 modelsim,则 modelsim会自动嵌入到 ISE 中去,如图附 1。ISE集成环境下:Edit->Preferences->Integrated Tools可以设置常用的第三方仿真,综合工具。
图附 A1:ISE 中调用 modelsim
b.直接在 ISE 中编译库
除了可以用前面介绍的方法自己编译ISE的库外,还可以在ISE环境下自动编译库,编译完成之后将会自动嵌入到 modelsim的 libarary中去,非常方便。
编译之前,首先把modelsim的属性文件 modelsim.ini$Modeltech_6.0d/modelsim.ini)的“只读”属性去掉,否则每次都要重新编译。然后在 ISE 环境下新建一个工程,选中芯片型号,在出现的 process 窗口中可以看到“Desin Entry Utilities”,展开它可以看到“Compile HDL Simulation Libraries”,双击它即可自动编译 ISE 的库(要确保 Process属性窗口中“Target Simulator”正确设置为“Modelsim SE”,如图附 2);编译好的库放在$Xilinx/Verilog/mti_se/ 下(在 modelsim中仿真 ip 核需添加库时指向该路径即可,如图附 3)。
图附 2:ISE中编译库
图附 3:ISE中编译库后自动在 modelsim里加载
aa.在 Quartus 中设置第三方工具
在 Quartus 环境下:Assignment->EDA Tool Settings->….如图附 3 所示,在“EDA Tool Settings”下拉框中选择“Simulation”窗口,设置“Tool name”(如 Modelsim(verilog)),并选中下面的“Run this tool automatically after compliation”。这样每次 Quartus 综合完之后将会自动调用 modelsim仿真了。同时要注意,在“More Setting”中“command/macro file”应选为“None”,否则当你使用别的 testbench 时,调用将会出错。
bb.在 Quartus 中自动编译库: 尚未发现有此方法,暂时只能由用户自己编译。
附 B:Xilinx/Altera 库文件
a. 与 Xilinx 相关的库有三个:
(编译路径:$Xilinx/Verilog/src/(XilinxCoreLib, unisims,simprims),编译时可改名)-L 表示仿真时需要的库文件。(下面的命名方式可以使 Modelsim对库进行准确映射)
Xilinxcorelib_ver对应 Xilinx 提供的软核的功能仿真库;
Unisims_ver 对应使用 ECS所做的原理图的功能仿真库;
Simprims_ver 对应项目布局布线以后的时序仿真库。
b. 与 Altera 相关的库暂时只用到一个(Altera 的用的还不熟哦^_^):
(编译路径:$Quartus50/eda/sim_lib)命名方式可以任意