在modelsim下建立VHDL库

在modelsim下建立VHDL库,第1张

VHDL 语言一般会调用各种库( library ),这些库包括用户自定义库、其他 EDA 软件下的库,比如 altera 、 synopsys 等 EDA 软件下定义的库。而目前modelsim都会兼容很多流行EDA厂商的library,比如上面提到的altera、synopsys等,这些library设计者都不用去自己建立,modelsim已经为我们建立好了,但用户自定义的库还要设计者自己在modelsim中建立,而在 model-sim 如何调用这样的库,有以下步骤:

1.    在 modelsim 下建立一个 project ,首先应该建立这些用户自定义库、其他 EDA 软件下的库,而不是新建一个工程。

2.    先在建立一个文件夹,把要建立的库文件拷到这个目录下。比如 D:modelsim_project/user_lib

3.    先打开 modelsim ,在 file 菜单下选择 change  directory ,在d出对话框中选择 D:modelsim_project/user_lib

4.   执行菜单 File->new->Library ,按照下图 *** 作,完成 library 的命名,比如命名为 jpeg2k_e 。

5.  然后执行菜单 complie->complie… ,然后选 D:modelsim_project/好键user_lib 下的库文件,然后点击 complie ,完成后点击 done 完成。这里特别注意,在下图的最上面 library 的选框中,颂磨一定要选择刚才建立的 library 的名称,上面我们命名为 jpeg2k_e ,所以,选择的 library 的名称一定为 jpeg2k_e ,默认的一般是 work ,所以大家一定要改过来,改成自己刚才新建的库的名称,这点这重要,我之前在 *** 作中犯过这样的错误,采用了默认的库名 work ,导致建立不成功。

6.      最后,友樱巧在该目录 D:modelsim_project/user_lib 下或者 D:modelsim_project/user_lib/jpeg2k_e 目录下会生成一个文件“ modelsim.ini ”,打开后添加以下语句:

jpeg2k_e = D:modelsim_project/user_lib/jpeg2k_e 。

7.    重启 modelsim ,或者刷新 library ,就 ok 了。

 

 

在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面:

·Quartus不支持Testbench;

·调用了megafunction或者lpm库之类的Altera的函数;

·时序仿真要在Modelsim下做仿真。

下面以Altera器件为例,介绍如何在ModelSim中加入Altera的仿真库,Quartus II软件中自带有Altera的仿真库,只要把它拿到

ModelSim中去编译一下就可以了,具体步骤如下:

1.设置仿真库路径

打开ModelSim安装目录(我用的是ModelSim SE 6.2版本,安装在D:\ModelSim\吵侍旁Installfiles目录下),新建文件夹altera,我们就在该目录下存放预编译的各种Altera库。

启动ModelSim SE 6.2,在主窗口执行【File】/【Change Directory】命令将路径转到altera文件夹。或在命令行中执行cd D:/ModelSim/Installfiles/altera。

2.新建库

Quartus II中提供的仿真库文件存放的路径是…\altera\80\quartus\eda\sim_lib,每个库文件提供了两种形式:。v(Verilog)

格式和。vhd(VHDL)格式两种,根据你所用的语言选择使用。用于编译资源库的文件有220model.v,220model.vhd,220pack.vhd,altera_mf.v,altera_mf.vhd,altera_mf_components.vhd,altera_primitives.v,altera_primitives.vhd,altera_primitives_components.vhd文件。网上的很多教程都是把这些文件一起编译,这样适用于Verilog和VHDL混合仿真,但如果只用一种语言,如Verilog则完全没必要全部编译。下面以该目录下的altera_mf.v为例介绍建立预编译库的方法。

注:ModelSim中仿真库可以分为两大类:第一类是工作库(working),默认值为“work”目录,work目录谈喊中包含当前工程下所有被编译的设计单元,编译前必须建立一个work库,并且每个编译有且仅有一个work库;第二类是资源库(resource),存储能被当前编译引用的设计单元,在编译期间允许有多个resource库。

在主窗口中选择【File】/【New】/【Library】命令,新建一个名为altera_mf的库。

3.编译库

方便起见在altera文件夹下新建目录src,把用于编译资源库的文件复制到src文件夹中。

在主菜单中选【Compile】/【Compile】命令,d出Compile Source Files对话框,library中选择你刚才建立的库名

altera_mf,查找范围你选择altera_mf.v文件,刚才你已经把它复制到了…\altera\src目录下。执行编译命令。

继续按照步骤2和3中介绍的方法添加剩下的几个库。添加完成后如下图所示。

4.配置modelsim.ini文件

这一步是为了将前面建立的库添加进系统库,以后就不用再重复添加了。

ModelSim安装根目录下的配置文件modelsim.ini的只读属性去掉,用记事本或其他文本编辑程序打开。在[Library]下修改前面

添加的库的路径。注意修改后关闭并改回只读属性。

注:第1步设置的仿真库路径必须在ModelSim的安装目录下才能事业能够此相对路径。

altera_primitives = $MODEL_TECH//altera/altera_primitives

220model = $MODEL_TECH//altera/220model

altera_mf = $MODEL_TECH//altera/altera_mf

5.添加Altera底层硬件原语仿真库(ATOM)

 升橡 在时序仿真时,必须加载所使用到的对应于具体Altera器件的底层硬件原语的仿真库(ATOM)。

上面编译了Altera三个资源库文件:220model.v,altera_mf.v,altera_primitives.v,编译通过之后。根据我们选用的具体器件型号继续编译我们所需要的器件底层原语仿真库文件,比如我们选择使用的是cycloneii,所以编译cycloneii_atoms.v。

另外,在进行仿真的时候,还要注意将上述已经编译的相关库添加到当前的工程中,以便相关lpm之类的核的调用, *** 作如下:在Start Simulation窗口的libraries一栏下进行添加,如图:

然后再选择work目录中当前工程的顶层实体进行仿真即可。

若是要进行时序仿真,则还应在SDF一栏进行。sdo延时文件的添加。

Quartus Prime 中集成了Modelsim,可以调用Modelsim对顶层文件进行仿真。

Tools--Options

General--EDA Tool Options,设置仿真工具的目录。右侧窗口选择你电脑Quartus安装目录中Modelsim-altera的位置,示例如图

Assignments -- Settings,d出的对话框中,左侧选择EDA Tool Setting -- Simulation,右侧的第一个下拉列表选择ModelSim-Altera,示例如图。

先对工程执行分析综合,然后利用工具自动生成测试文件模板, *** 作如下。

生成的.vt文件位于当前工程目录中..\simulation\modelsim\ 文件夹内。

用Quartus打开.vt 文件

刚才自动生成的 .vt只是一个模板,并不完整,需要补充。在vt文件中,编辑需要的测试激励后,保存。记下vt文件中的顶层模块名和文件名,比如下图中的顶层模块是森枣蔽Uart_FSM_vlg_tst,文件名是UART_FSM.vt

Assignments -- Settings,d出的对话框中,左侧选择EDA Tool Setting -- Simulation,右侧的第一个下拉列表选择ModelSim-Altera,下面添加Test Benches,流程示例如图。

第一个Test Bench name给当前的仿真起个名字

第二个Top level module ....输入测试文件.vt里顶层module的名字

建议先填第二个

点击Add后,点击OK--OK---OK........

Tools -- Run ---RTL Simulation(寄存器传输级仿真,与功能仿真相同)

也可以选择:Tools -- Run ---Gate level Simulation(门级仿真,与时序仿真相同)。

如果使用时序仿真,需要设置正确的芯片型号并将工程编译后再仿真。

常见错误:

1、功能仿真时,输出无信号,波形显示红色直线。

原因:可能是由于设计文件中的寄存器没有初始值,而电路基于该寄存器进行了取值、判断等 *** 作,导致获取不到寄存器的值。

解决办法:为电路添加复位信号,在复位信号有效时给寄存器赋初岩闭值。

说此州明:这是仿真器的问题。在实际电路中,芯片上电后,寄存器内必然有值。

2、error deleting "msim_transcript": permission denied.

原因:Modelsim已经打开了,不能进行新的仿真。

解决办法:关闭已经打开的Modelsim,重新启动仿真。

3、其他错误解决办法

测试文件如果有语法错误的话,会在modelsim的输出窗口以红色字体给予提示。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8226121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存