当前位置:文档之家› 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 N ame设置为work。

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

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

5.在这次练习中我们加两个文件,点击Add File to Project对话框中的Browse按钮,打开ModelSim安装路径中的example目录,选取counter.v 和tcounter.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 desi gn来导入设计。

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

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

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

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

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

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

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

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

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

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

确定选取Create: a new l ibrary 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,缺省的Simu lation Resolution是1ns。

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

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

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

在Signals window选取Edit\Select A ll选择三个信号,拖动三个信号到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 Pane展示了设计的层次结构。

你可以点即“+”(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。

(PROMPT: run -all ) (MENU: Run\Run -All)5.选取Break中断运行。

相关主题