WILDSCModelsimSE仿真教程Verilog & VHDL孙玉阳2014/6/3对于ModelsimSE仿真设置网上很难找到详细教程,在此写一篇基于Verilog 和VHDL的ModelsimSE的仿真设置教程,以期缩短大家ModelsimSE学习时间,由于时间仓促,不足之处还请见谅。
目录1 ModelsimSE仿真——Verilog HDL (2)1.1 建立资源库 (2)1.1.1 建立资源库的目的 (2)1.1.2 建立资源库前准备 (2)1.1.3 建立资源库的步骤 (3)1.2 功能仿真 (11)1.2.1 建立ModelsimSE工程 (11)1.2.2 添加Quartus工程文件 (12)1.2.3 编译 (14)1.2.4 仿真 (18)1.3 时序仿真 (21)2 ModelsimSE仿真——VHDL (25)2.1 建立资源库 (25)2.1.1 建立资源库的目的 (25)2.1.2 建立资源库前准备 (25)2.1.3 建立资源库的步骤 (26)2.2 功能仿真 (33)2.2.1 建立ModelsimSE工程 (33)2.2.2 添加Quartus工程文件 (34)2.2.3 编译 (37)2.2.4 仿真 (40)2.3 时序仿真 (44)1ModelsimSE仿真——Verilog HDL1.1建立资源库1.1.1建立资源库的目的Quartus Verilog工程文件里面在使用Primitives、Megafunction、LPM等Quartus自带模块时,会调用Quartus本身自带的一些库文件,但是ModelsimSE在仿真Quartus Verilog工程文件时不会自动去调用Quartus的库文件,同时ModelsimSE也不自带与Primitives、Megafunction、LPM相关的库文件。
所以在仿真Primitives、Megafunction、LPM等模块时,必须在ModelsimSE里建立与其对应的资源库,否则无法仿真。
1.1.2建立资源库前准备(备注:若需要后仿真(时序仿真)则进行这一步骤,若只进行前仿真(功能仿真)则跳过此步骤):打开待仿真的quartus工程,点击菜单Assignments->Settings,打开如下窗口将以下红色部分设置好,先点击apply,然后点击OK即可然后会发现quartus工程里多了个simulation文件夹,打开改文件夹simulation->modelsim,会发现里面有很多.VO和.SDO文件。
1.1.3建立资源库的步骤1.1.3.1建立文件夹首先在modelsimSE的安装目录下(比如,如果安装在C盘,则安装目录为C:\modeltech_10.0c)建立两个空文件夹文件名分别为altera_base_v,altera_device(这个名字最好就命名为这两个)。
1.1.3.2建立库altera_base_v打开modelsimSE,注意此时不要打开任何工程,如若已经打开modelsimSE工程,点击菜单file->change directory ,然后随便指定一个文件夹,将工程关掉。
下面开始建立lpm资源库,首先新建一个library,方法是打开菜单file->new->library,出现如下图所示窗口,按下图所示窗口填好,注意:Library Physical Name应该指向的是上一节所建立的altera_base_v文件夹。
点击OK之后,回到modelsim界面,会发现多出了altera_base_v (empty)库,现在这个库里什么都没有,下面往里面添加内容。
打开菜单Compile->Compile..,弹出如下界面:注意下图设置,Library一定要选择刚刚新建的altera_base_v库,查找范围则是在quartus 的安装目录下,在quartus的安装目录中找到sim_lib文件夹,比如我的quartus安装在C盘,则查找路径为C:\altera\11.0\quartus\eda\sim_lib。
为了建立altera_base_v库,需要编译3个文件,分别是220model.v,altera_mf.v,altera_primitives.v,这三个文件分别对应Quartus中的LPM库、Megafunction库、Primitiv库。
同时选中者三个文件,点击Compile,编译完之后点击Done。
此时发现刚刚新建的altera_base_v库前面出现了“+”号,说明里面已经有东西了,如下图所示:1.1.3.3建立库altera_device建立库altera与建立库altera_base_v的流程是一样的,首先新建一个library,方法是打开菜单file->new->library,出现如下图所示窗口,按下图所示窗口填好,注意:Library Physical Name应该指向的是上一节所建立的altera_device文件夹。
点击OK之后,回到modelsim界面,会发现多出了altera_device (empty)库,现在这个库里什么都没有,下面往里面添加内容。
打开菜单Compile->Compile..,弹出如下界面:注意下图设置,Library一定要选择刚刚新建的altera_device库,查找范围则是在quartus 的安装目录下,在quartus的安装目录中找到sim_lib文件夹,比如我的quartus安装在C盘,则查找路径为C:\altera\11.0\quartus\eda\sim_lib。
为了建立altera_device库,需要编译1个文件cycloneive_atoms.v(用什么型号的FPGA 选择什么名称的文件,这里用的FPGA是cycloneive),选中cycloneive_atoms.v后,点击Compile ,编译完之后点击Done,此时发现刚刚新建的altera_device库前面出现了“+”号,说明里面已经有东西了,如下图所示:1.1.3.4更改ModelsimSE的配置文件两个资源库altera_base_v,altera_device编译完成之后还没有结束,我们还需要改一下ModelsimSE的配置文件,配置文件在ModelsimSE的安装目录下(C:\modeltech_10.0c),文件名为modelsim.ini,在更改modelsim.ini时,最好先备份一下吧,防止不甚改错掉。
用记事本打开modelsim.ini(如果用记事本打开内容很乱,就用写字板打开吧),找到[Library],在后面添加如下图所示的两行命令,指定Library所在的位置,注意每一行命令一定要以回车结尾。
(modelsim.ini是只读文件,首先去掉只读才能更改)关闭ModelsimSE 软件,重新打开,会发现ModelsimSE 中的库多了以下两条,如果找不到这两条,证明库没有添加成功,检查modelsim.ini更改是否正确。
(注意:若是打开之前建立的ModelsimSE工程,则还是不会出现这两个库)1.2功能仿真1.2.1建立ModelsimSE工程打开ModelsimSE菜单file->new->Project,会出现下图对话框:Project Name既是所要建立的工程名,Project Location为工程存放的位置,Default Library Name既是工作库的名字,一般默认为work,不要去改这个名字。
一个ModelsimSE 工程只有一个工作库,很多个资源库,之前建立的altera_base_v,altera_device就是资源库。
1.2.2添加Quartus工程文件Quartus工程文件的结构如下如所示:这里建议把所有的模块名称都换为小写,理由如下:如果lpm_latch_12中有一个字母是大写,在将dsp_fpga_register.bdf生成dsp_fpga_register.v文件时,就会多生成lpm_latch_12_0.v、lpm_latch_12_1.v、…、lpm_latch_12_29.v共30个文件,这样子仿真往往会没有输出结果,如果是小写,就不会有这30个文件,所以在建立Quartus工程时,建议所有的模块名称全部改为小写。
由于ModelsimSE不能对BDF文件进行仿真,必须把BDF文件转换为verilog文件,只要选中BDF文件,在Quartus中选中菜单File->create/Update->create HDL Design file from current file即可。
在ModelsimSE中,如下图所示,选中红框出然后右击空白处,选择Add to Project –> Existing File,电机Browse..选择Quartus中对应的文件。
由上面的Quartus工程文件结构可以发现Quartus从顶层到底层共有两层,共4个实体模块,30个lpm_latch_12模块是同一个实体模块的复制,所以只能算一个,那么ModelsimSE中共需导入4个文件,如下图所示:这四个文件少一个都不行,多了也是不对的。
注意上图的蓝色问号了吧,这是由于ModelsimSE还没有对着四个文件进行编译。
下面新建testbench测试文件,在ModelsimSE中,如下图所示,选中红框出然后右击空白处,选择Add to Project –>New File,注意红框出选择Verilog,点击ok即可。
至于testbench文件如何编写,这里就不做详细叙述了,否则篇幅太大了。
这里只说一个建议吧,testbench文件中signal的名称是可以和Quartus顶层实体输入输出信号的名称一样的,如下图至此,ModelsimSE工程中该添加的文件都添加完了,下面就是编译仿真了。
1.2.3编译由于Quartus里调用了primitives库,所以ModelSimSE里也必须调用我们之前做的库,调用设置如下:在ModelSimSE里打开菜单Simulate->start simulation,打开如下图所示窗口:选择 Libraries,然后Add..,然后点击下拉箭头(注意不要选择Browse..,选择旁边的下拉箭头即可)。
添加如下图所示的两个库,点击OK即可。
在ModelsimSE中右击上一节添加的文件,点击Compile->Compile all编译所有的五个文件,编译通过后,蓝色的问号会全部变为绿色的对号,同时Transcript中也会显示0 failed 0 error,如下面两图:此时点击Library,展开work,会有一系列的实体名出现,这些实体名既是我们Quartus 中的实体名。