![ModelSim电子系统分析及仿真(第3版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/954/35276954/b_35276954.jpg)
1.4 ModelSim工程仿真流程
ModelSim的工程仿真流程如图1-17所示,概括为5步:首先建立一个工程,然后向工程中添加设计文件,接下来编译设计文件,再运行仿真,最后进行调试。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/17_3.jpg?sign=1738774490-hHCabkY3e0sZHlRqZscY6LmjNwXwwHKQ-0-64ac5b0194bc5557aa86dcb38921af63)
图1-17 ModelSim工程仿真流程
结果文件——配套资源“Ch1\1-2”文件夹
动画演示——配套资源“AVI\1-2.avi”
1.4.1 创建工程及工程库
在开始一个设计之前,首先要在 ModelSim 中创建一个工程和对应的工作库。这里并不把所有的创建方式都列举出来,仅采用新建工程的方式直接创建默认工程库,这种方式比较简便。具体的操作按如下的步骤进行操作。
(1)创建新工程。在ModelSim菜单栏中选中【File】→【New】→【Project】,如图1-18所示。
(2)输入工程名称。在弹出的对话框中输入工程名(Project Name)并进行工程设置,这里直接采用默认库work,输入的工程名称为quick,其他设置保持不变,输入完毕后单击OK按钮完成,如图1-19所示。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/18_1.jpg?sign=1738774490-jmbgV3xvoHenD2ACkNcDkX4puEyuxN2C-0-dc497beb01fff44c2a612a25f5d346ae)
图1-18 创建新工程
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/18_2.jpg?sign=1738774490-Ymvkt1XeXvylwB66AUgV3RObDzkCuLp1-0-04392b2789a70a1766f13e6308887667)
图1-19 输入工程名称
(3)创建工程完毕。在第二步中单击 OK 按钮后,新的工程和库就被创建了。在创建工程前,ModelSim 的 Workspace 窗口中只有 Library 一个标签,当创建工程结束后,Workspace 窗口出现了新标签 Project。由于新建的工程中没有文件,所以显示为空白区域,如图1-20所示。至此,工程和工程库创建完毕,可以向工程中加载设计文件了。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/18_3.jpg?sign=1738774490-BjjndU4P442yaxZ7H4D9dGn1IgZnrRVH-0-9892d026ad18d83003ce5038904a32c0)
图1-20 创建工程的前后对比
1.4.2 创建新文件
向工程中添加设计文件可以有两种方式:创建新文件和加载设计文件。创建新文件的步骤如下。
(1)创建新文件。在创建工程结束后,会弹出对话框,有多种添加方式可供选择。在本例中选择其中的【Create New File】选项,如图1-21所示。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/19_1.jpg?sign=1738774490-1lqfisTOaV4mARWN7H9THtXDLmVCd4Mp-0-0dbeda091329b1adedf299df67d72374)
图1-21 选择创建新文件
(2)输入文件名。在弹出的对话框中输入文件名称,在本例中输入 fulladd,将【Add file as type】选项选为【Verilog】,单击OK按钮完成操作,如图1-22所示。注意文件类型默认是VHDL类型,一定要选择为Verilog类型,仿真文件才能编译正确。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/19_2.jpg?sign=1738774490-T9sFdcUq8WACrWl7I9oczgChVB5gYuVW-0-3b4d24302ddbbe352ae9168a6d886c8f)
图1-22 输入文件名
(3)新建文件完毕。单击 OK 按钮后,就可以在 Project 窗口中看到新加入的文件“fulladd.v”,这时可以对该文件进行设计输入。双击文件,即可在编辑窗口看到文件内部的内容。由于是新建的文件,可以看到内部是空白的,如图1-23所示。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/19_3.jpg?sign=1738774490-qe3VYXKaJXDVWGHOFKRKl3MQwHGNbVfO-0-66ef243ed81825eb56e35aa246858a73)
图1-23 添加文件完成
第2步输入的文件名不能是fulladd.v,因为后缀的形式是在【Add file as type】中定义的!
第2步输入的文件名不能是fulladd.v,因为后缀的形式是在【Add file as type】中定义的!
1.4.3 加载设计文件
除了新建文件,还可以向工程中添加已有的设计文件,具体步骤如下。
(1)选择添加已有文件。在创建工程结束弹出的对话框中,单击其中的【Add Existing File】,如图1-24所示。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/20_1.jpg?sign=1738774490-E5Wt2pMuosJKqVuBgwY8Zel8fpu3vxhM-0-8576bff6fddacd4f29bc8cf87a7d371c)
图1-24 选择添加已有文件
(2)选择文件路径。选择添加已有文件后会有如图 1-25 所示的对话框,选择添加文件的目录。ModelSim 默认的路径是安装文件夹中的 examples 目录。当然,也可以手动选择其他目录添加文件。这里将 examples目录下“1-1”文件夹中的“test.v”文件加载到工程中。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/20_2.jpg?sign=1738774490-XlEwE64flwe3OHpCTCWwQfNTb12coaEW-0-8d0eb04db4c24aa7c1d2d6ed8d4f5338)
图1-25 添加已有文件路径名
(3)加载完成。单击 OK 按钮后,可以看到 Project 窗口又加入了一个“test.v”文件,如图 1-26 所示。细心的读者会发现我们加入的两个文件,它们对应的 status 栏都是“?”。这是该设计文件还没有被编译的标志,接下来就要编译文件了。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/21_1.jpg?sign=1738774490-WPC1AEqCwwrHeknAd79t5xcoEArFwjen-0-ca285b40b1732a2820e390f7578cac04)
图1-26 成功添加已有文件
1.4.4 编译源文件
编译过程是仿真器检查被编译文件是否有语法错误的过程。没有被编译的文件是不可以进行仿真的。编译的方式这里先简单介绍以下两种。
(1)利用菜单选项编译。在【Project】标签中选择一个文件,单击鼠标右键会出现菜单,选择其中的【Compile】选项,会出现一系列的编译方式。最常用的是前两个,即编译选中文件【Compile Selected】和编译所有文件【Compile All】,如图1-27所示。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/21_2.jpg?sign=1738774490-8KrVZXFYCPk5fUCCX5Gwj1tbLBxWPnEK-0-462272aed6cc81f54604a12f7c48554b)
图1-27 利用菜单编译
(2)利用快捷工具栏编译。在 ModelSim 菜单栏下方有一排快捷工具,其中有编译按钮,可以直接单击它来对文件进行编译,如图 1-28 所示。共有三个编译按钮,最左侧的是编译选中文件,最右侧的是编译所有文件。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/21_3.jpg?sign=1738774490-pydy04keje1I37R7tP3cYXyAMrT6Bln3-0-856577d3702acfd2aab65400881aef7c)
图1-28 利用快捷工具编译
选中最右侧的【Compile All】按钮,编译通过后,原有的问号会变成对号,同时在命令窗口中会出现类似提示:Compile of XXX was successful,如图1-29所示。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/22_1.jpg?sign=1738774490-axk4806km2GSsz8B9pXxaX3Ve6ZZAAs2-0-16f5af279a316239659924d56af0ec42)
图1-29 编译后的提示
如果设计文件较多时,多文件编译就会出现多行的编译提示,这时可以选择快捷工具栏最中间的【Compile Out of Date】按钮,在工程流程中,该命令的功能如下:
(1)首次点击时,编译所有的文件,只在命令窗口中输出有错误的文件提示,如果无错,则命令窗口无提示。
(2)工程标签内的Status一栏正常显示。
(3)再次点击时,只编译之前出错的文件和上一次编译后修改过的文件。
该按钮类似于【Compile All】的优化版,尤其在多文件修改和编译时,使用起来非常方便。如果设计较小,则直接编译全部即可。
1.4.5 运行仿真和查看结果
运行仿真和查看结果的步骤与 1.3.3 节和 1.3.4 节中介绍的基本相同,这里不再重复。在此只介绍一下开始仿真的方法,可以在菜单栏中选择【Simulate】→【Start Simulation】,同样可以打开如图1-30所示的对话框,按步骤进行设置和仿真即可。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/22_2.jpg?sign=1738774490-w6SOO2O4wovFh6vQOhN00LUNEWrtlDfO-0-c6f4c96b34899a04cf7943a1d7f3bfcc)
图1-30 启动仿真
1.4.6 工程调试
在实际的设计当中,错误是不可避免的,ModelSim 提供了丰富的错误提示类型,帮助设计者快速发现错误的位置和错误的类型,一般情况下调试过程如下。
(1)编译错误提示。此时Status栏会显示一个红色的叉,表示编译不通过,即源文件中有错误。此时在命令窗口中会出现红色字体的提示,告知设计者哪个文件出现了几个错误,可能包含error,也可能包含warning,如图1-31所示。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/22_3.jpg?sign=1738774490-t4TzeADe4dm9cJRGHuR0WaKZEyKJaUAn-0-3b069643e57677d4e94d6f1c781d7e36)
图1-31 编译错误提示
(2)查找错误原因和位置。双击命令窗口中的提示,就会弹出一个对话框的提示,会显示在文件的第几行出现了哪种错误。如图 1-32 所示的提示,在文件的第 7 行出现了语法错误。这时,文件的第 7 行会以醒目的颜色标出来,方便设计者查找。当然,同其他设计语言一样,软件指出的错误位置不一定是真正的错误,只是提供一个参考,具体的调试还需要设计者来进行。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/23_1.jpg?sign=1738774490-69YxN4vSfk1TCK7W0QKTn1tgAWhYsBtu-0-9022e2b1ec79d70f325779f69a57b574)
图1-32 错误原因和位置提示
将上述的基本过程连接起来,就构成了一个简单的工程实例。从创建工程开始,经过设计文件的加载,之后对设计文件进行编译和调试,调试通过后可以按照仿真的步骤进行仿真并查看最后的输出结果。读者可以参考配套的视频演示。
有了输出结果并不意味着设计已完成。设计是要实现一定功能的,如果仿真器的输出结果与设计者最初的设计初衷不相符,就证明设计出现了问题,需要修改源文件。所以,一个设计并不是通过了编译就宣告成功的,需要对仿真结果进行细致分析,直至确定达到了需要完成的功能。