![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=1739315056-QC81vYgtADOCEelaMUEpUsjUmeQ4hWvt-0-bf33a834b81884c28029a898dfde8b34)
图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=1739315056-1okHP0OHMrhzm14k7b7cSFmY3AWU1ucV-0-fa9e0d7a2290ec845ef29ea935278bca)
图1-18 创建新工程
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/18_2.jpg?sign=1739315056-NdiIPItAdZIkCD61mgz260OpLFzS4uU8-0-e44bb150eccf36040c386fce0ebc7751)
图1-19 输入工程名称
(3)创建工程完毕。在第二步中单击 OK 按钮后,新的工程和库就被创建了。在创建工程前,ModelSim 的 Workspace 窗口中只有 Library 一个标签,当创建工程结束后,Workspace 窗口出现了新标签 Project。由于新建的工程中没有文件,所以显示为空白区域,如图1-20所示。至此,工程和工程库创建完毕,可以向工程中加载设计文件了。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/18_3.jpg?sign=1739315056-CPNwDfpbCkwKatk8zLmkOMbSCcw9CTau-0-9b209b550999a628760a1fdea5c77b93)
图1-20 创建工程的前后对比
1.4.2 创建新文件
向工程中添加设计文件可以有两种方式:创建新文件和加载设计文件。创建新文件的步骤如下。
(1)创建新文件。在创建工程结束后,会弹出对话框,有多种添加方式可供选择。在本例中选择其中的【Create New File】选项,如图1-21所示。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/19_1.jpg?sign=1739315056-fb5c69LDMvL3FNzFfVj6Gkl9SF2Hb9o3-0-f79a726b8a73a16395ac4672fda59990)
图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=1739315056-IbXH0ZiR65nyb1skjNkm7YjHI0BcWcQT-0-3500b6cf5c2cc9b05381ebb31c2ba6da)
图1-22 输入文件名
(3)新建文件完毕。单击 OK 按钮后,就可以在 Project 窗口中看到新加入的文件“fulladd.v”,这时可以对该文件进行设计输入。双击文件,即可在编辑窗口看到文件内部的内容。由于是新建的文件,可以看到内部是空白的,如图1-23所示。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/19_3.jpg?sign=1739315056-sSS2UplEIskNtgvbiGYgbKRNmUZt8IZ0-0-240005269e8b1e07a7c54fc2789f9625)
图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=1739315056-UdfITm3MfZy4leUJcz43DswvifF9oaC8-0-84326dd7630868a206086c6052dc2fd5)
图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=1739315056-8HUd077KXb5HtbSP1c5aCPdTl1VufAmo-0-b186794c66a7a074781337dea11f59e2)
图1-25 添加已有文件路径名
(3)加载完成。单击 OK 按钮后,可以看到 Project 窗口又加入了一个“test.v”文件,如图 1-26 所示。细心的读者会发现我们加入的两个文件,它们对应的 status 栏都是“?”。这是该设计文件还没有被编译的标志,接下来就要编译文件了。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/21_1.jpg?sign=1739315056-tS4RFajkQaeefboviDpdr4FjgC0FDT0e-0-ff02aefb37d818ccfc51f41f42c7a3c4)
图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=1739315056-E1j9Tans2rMJw902zSQwOcfwF2mdRY28-0-b5ffd744c6070e36c62de81f269ed6a8)
图1-27 利用菜单编译
(2)利用快捷工具栏编译。在 ModelSim 菜单栏下方有一排快捷工具,其中有编译按钮,可以直接单击它来对文件进行编译,如图 1-28 所示。共有三个编译按钮,最左侧的是编译选中文件,最右侧的是编译所有文件。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/21_3.jpg?sign=1739315056-gWaDlTJkW0aeijvlcQt0aDXfJEYVYR5m-0-d328a89aed75c3f3dc64ce85202fa71f)
图1-28 利用快捷工具编译
选中最右侧的【Compile All】按钮,编译通过后,原有的问号会变成对号,同时在命令窗口中会出现类似提示:Compile of XXX was successful,如图1-29所示。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/22_1.jpg?sign=1739315056-prOHNH87QSdWbU2JnrJNNHnOAZtfrCBC-0-cdb56aa0458092aab19446f02e1418fd)
图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=1739315056-KwFIA9tH6mxrVU6svH5uHfbtmtZwzJ0U-0-6c17a5b35a3d794d572b99402a57a473)
图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=1739315056-U57DnfL5heBE7fAV2hGsLRrCJgsqO4kd-0-36ba87a4cf5d832bda3458a7bd1b6a33)
图1-31 编译错误提示
(2)查找错误原因和位置。双击命令窗口中的提示,就会弹出一个对话框的提示,会显示在文件的第几行出现了哪种错误。如图 1-32 所示的提示,在文件的第 7 行出现了语法错误。这时,文件的第 7 行会以醒目的颜色标出来,方便设计者查找。当然,同其他设计语言一样,软件指出的错误位置不一定是真正的错误,只是提供一个参考,具体的调试还需要设计者来进行。
![](https://epubservercos.yuewen.com/15C250/18822094508351006/epubprivate/OEBPS/Images/23_1.jpg?sign=1739315056-B19yZmgYGVCtmHZhLqZYjuvGPuZ4TU7C-0-71ed9c8f00d7b01c5eb091ab739f9acd)
图1-32 错误原因和位置提示
将上述的基本过程连接起来,就构成了一个简单的工程实例。从创建工程开始,经过设计文件的加载,之后对设计文件进行编译和调试,调试通过后可以按照仿真的步骤进行仿真并查看最后的输出结果。读者可以参考配套的视频演示。
有了输出结果并不意味着设计已完成。设计是要实现一定功能的,如果仿真器的输出结果与设计者最初的设计初衷不相符,就证明设计出现了问题,需要修改源文件。所以,一个设计并不是通过了编译就宣告成功的,需要对仿真结果进行细致分析,直至确定达到了需要完成的功能。