当前位置:文档之家› ModelSim使用的一点心得

ModelSim使用的一点心得

ModelSim使用的一点心得- -1、至今还没有弄明白为什么要用ModelSim,因为看波形Quartus II自带的工具就可以了啊。

2、我刚刚接触modelsim,我想大多数菜鸟跟我一样,看过如何使用ModelSim的介绍,说句实话,那些介绍写的都太过简单,仿佛大家都不屑写上一些比较“弱智”的步骤,恰恰就是这些看似累赘的步走,难为我好久。

教程上都写道,modelsim的简单使用方法如下:建立库- 影射库到物理目录- 编译代码- 启动仿真。

首先建立库就叫我头晕。

库的概念用在这儿实在不合适,把我吓坏了,也就没心思看下一步了。

在我看来,教程应该这么写:<1> 建立一个目录modelsimStudy。

用任何文本编辑器编辑一个简单的例子程序,比如计数器counter.vhd。

有clk、ena、reset输入,cnt作为输出。

<2> 打开Modelsim,首先create project,工程名随意取了,比如命名为test,目录设在modelsimStudy下,默认的库work不变(这样就不用管什么建立库之类的东西了)。

然后add existing file,把counter.vhd加入当前工程。

<3> 编译这个文件,通过之后,work下面会出现counter这个实体。

然后选中它,右键,simulate(左键双击也可)。

<4> ModelSim有很多窗口(新手就怕这个),一开始只要选择view下面的objects 和wave窗口就行了。

旧版的signal窗口在6.0的版本改名为Objects(这个我是摸索了好久才发现的,是不是太笨了?)。

wave窗口刚打开时是空的,需要在objects窗口的add -> wave -> signals in region。

这时,wave上就有clk\ ena \ reset等信号了。

<5> 我们给clk来个输入激励,在object窗口中选中clk,右键选clock,给它定义个时钟。

<6>运行Run。

嘿嘿。

有波形出来了吧。

3、2中的例子绝对适合刚刚接触modelsim的新手,有了这个体会之后,结合书上的教程,理解库以及modelsim的各个窗口用途就比较容易了。

然后再尝试结合Quartus使用。

4、Quartus中,选中modelsim作为仿真工具之后,在Quartus目录下会生成一个si mulation文件夹,下面有个modelsim。

完成编译之后,在这个目录下面生成了供mode lsim使用的库和时序文件。

如果选中了编译之后自动调用modelsim,我的做法是用Qua rtus编辑波形文件,然后导出作为激励文件。

或者,自行打开modelsim,然后选择改变目录,把目录指向Quartus生成的modelsim目录。

新建工程,把Quartus下的vhdl以及激励文件添加进来,进行仿真。

5、Modelsim仿真cyclone PLL的问题。

我也遇到过,出现什么fatal error。

解决方法:** Simulation property -> Design Tab -> Resolution 应该设为pssimulation -> start simulation -> Design , 那个resolution非常不显眼,认真找,它的默认值是default,改为ps就行了。

ps:Quartus中把不用的管脚设成高阻态:assignment -> device -> pin&device里面设置。

ModelSim的简要使用方法在这一章里通过一些课程来简单介绍ModelSim的使用方法,更多的需要在实际应用中熟练和掌握。

第一课 Create a Project第一次打开ModelSim会出现Welcome to ModelSim对话框,选取Create a 1. Project,或者选取File\New\Project,然后会打开Create Project对话框。

2.在Create Project对话框中,填写test作为Project Name;选取路径Project Location作为Project文件的存储目录;保留Default Library Name 设置为work。

3.选取OK,会看到工作区出现Project and Library Tab。

4.下一步是添加包含设计单元的文件,在工作区的Project page中,点击鼠标右键,选取Add File to Project。

5.在这次练习中我们加两个文件,点击Add File to Project对话框中的B rowse按钮,打开ModelSim安装路径中的example目录,选取counter.v和tc ounter.v,再选取Reference from current location,然后点击OK。

6.在工作区的Project page中,单击右键,选取Compile All。

7.两个文件编译了,鼠标点击Library Tab栏,将会看到两个编译了的设计单元列了出来。

看不到就要把Library的工作域设为work。

8.最后一不是导入一个设计单元,双击Library Tab中的counter,将会出现Sim Tab,其中显示了counter设计单元的结构。

也可以Design\Load design 来导入设计。

到这一步通常就开始运行仿真和分析,以及调试设计,不过这些工作在以后的课程中来完成。

结束仿真选取Design \ End Simulation,结束Project选取File \ Close \ Project。

第三课 Basic verilog Simulation1.新建一个目录,并设置该目录为当前工作目录,通过从该目录调用Model Sim或是选取File\Change Directory命令来完成。

2.拷贝example目录中verilog文件到当前目录下。

在你编译verilog文件前,你需要在新目录下生成一个设计库。

如果你仅仅熟悉解释性verilog仿真器,诸如Cadence Verilog-XL,那么对于你来说这是一个新的方法。

因为Model Sim是一个编译性Verilog仿真器,对于编译它需要一个目标设计库。

如果需要的话,ModelSim能够编译VHDL和Verilog代码到同一个库中。

3.在编译任何HDL代码前,要建立一个设计库来存放编译结果。

选取Desig n \ Create a New Library生成一个新的设计库。

确定选取Create: a new li brary and a logical mapping to it,在Library Name域中键入work,然后选取OK。

这就在当前目录中建立了一个子目录,即你的设计库。

ModelSim在这个目录中保存了名为_info的特殊文件。

4.下面你将编译Verilog设计。

这个设计例子由两个Verilog源文件组成,每一个都包含一个唯一的模块。

文件counter.v包含一个名为counter的模块,它执行一个简单的八位加法计数器。

另一个文件tcounter.v是一个测试台模块(test_counter),通常用来校验c ounter。

在仿真下,你可以看到这两个文件,通过一个被测试台例示了的模块c ounter的一个简单的实例(名为dut的实例),来层次化的设置了。

稍候你将有机会看一下这个代码的结构,现在,你需要编译两个文件到work设计库。

5.通过选取工具条中的Compile按钮来编译两个文件。

( PROMPT : vlog counter.v tcounter.v )这就打开了Compile HDL Source Files对话框。

选取两个文件后,选择Compile,编译完成后选取Done。

6.选取工具条中的Load Design按钮开始仿真。

( PROMPT : vsim test_counter )Load Design对话框允许你从指定的库中选取一个设计单元仿真。

你也可以为仿真选取Simulation Resolution限制,缺省的库是work,缺省的Simula tion Resolution是1ns。

7.选取test_counter,点击Load接受这些设置。

8.通过在主窗口下的vsim提示符下敲入下述命令来调出Signals、List an d Wave window: view signals list wave (MENU: View\1.为了列示顶级( top-level )信号,移动鼠标到Signals window,选取Vi ew\List\Signals in Region。

( Prompt : add list /test_counter/* )2.现在向Wave window添加信号。

在Signals window选取Edit\Select Al l选择三个信号,拖动三个信号到Wave window的路径名或是数值窗格的任一个中。

HDL条目也能够从一个窗口拷贝到另一个窗口(或者是在Wave and List windo w内部),通过Edit \ Copy和Edit \ Paste菜单命令。

也能删除选取的条目Edit \ Delete。

3.下面打开Source window,选取View \ Source( Prompt : view source )4.导入设计的时候会在工作去开出一个新的Sim Tab栏。

这个Structure P ane展示了设计的层次结构。

你可以点即“+”(expand)或“-”(contract)来观察。

5.点击其中的Function increment可以注意到其他窗口是怎么适当的自动更新的。

明确地说,Source window显示了你在Structure window所选的层次水平的Verilog代码.在这种方式下使用Structure Pane类似于解释性Verilo g的范围命令。

现在,点击Structure Pane的顶层线,确定test_counter模块显示在Source window。

1.Run运行100ns,缺省设置。

(PROMPT: run ) (MENU: Run\Run 100ns)2.设置Run Length为500ns,然后Run。

在仿真运行了600ns,在工作取底部状态栏可以看到这些信息。

3.上个命令使仿真器前进了500ns,也可以设置仿真器推进的时间run @ 3000际仿真器向前推进了2400ns(3000-600)4.选取主窗口Run All。

相关主题