ModelSim电子系统分析及仿真(第3版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 ModelSim工程仿真流程

ModelSim的工程仿真流程如图1-17所示,概括为5步:首先建立一个工程,然后向工程中添加设计文件,接下来编译设计文件,再运行仿真,最后进行调试。

图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所示。

图1-18 创建新工程

图1-19 输入工程名称

(3)创建工程完毕。在第二步中单击 OK 按钮后,新的工程和库就被创建了。在创建工程前,ModelSim 的 Workspace 窗口中只有 Library 一个标签,当创建工程结束后,Workspace 窗口出现了新标签 Project。由于新建的工程中没有文件,所以显示为空白区域,如图1-20所示。至此,工程和工程库创建完毕,可以向工程中加载设计文件了。

图1-20 创建工程的前后对比

1.4.2 创建新文件

向工程中添加设计文件可以有两种方式:创建新文件和加载设计文件。创建新文件的步骤如下。

(1)创建新文件。在创建工程结束后,会弹出对话框,有多种添加方式可供选择。在本例中选择其中的【Create New File】选项,如图1-21所示。

图1-21 选择创建新文件

(2)输入文件名。在弹出的对话框中输入文件名称,在本例中输入 fulladd,将【Add file as type】选项选为【Verilog】,单击OK按钮完成操作,如图1-22所示。注意文件类型默认是VHDL类型,一定要选择为Verilog类型,仿真文件才能编译正确。

图1-22 输入文件名

(3)新建文件完毕。单击 OK 按钮后,就可以在 Project 窗口中看到新加入的文件“fulladd.v”,这时可以对该文件进行设计输入。双击文件,即可在编辑窗口看到文件内部的内容。由于是新建的文件,可以看到内部是空白的,如图1-23所示。

图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所示。

图1-24 选择添加已有文件

(2)选择文件路径。选择添加已有文件后会有如图 1-25 所示的对话框,选择添加文件的目录。ModelSim 默认的路径是安装文件夹中的 examples 目录。当然,也可以手动选择其他目录添加文件。这里将 examples目录下“1-1”文件夹中的“test.v”文件加载到工程中。

图1-25 添加已有文件路径名

(3)加载完成。单击 OK 按钮后,可以看到 Project 窗口又加入了一个“test.v”文件,如图 1-26 所示。细心的读者会发现我们加入的两个文件,它们对应的 status 栏都是“?”。这是该设计文件还没有被编译的标志,接下来就要编译文件了。

图1-26 成功添加已有文件

1.4.4 编译源文件

编译过程是仿真器检查被编译文件是否有语法错误的过程。没有被编译的文件是不可以进行仿真的。编译的方式这里先简单介绍以下两种。

(1)利用菜单选项编译。在【Project】标签中选择一个文件,单击鼠标右键会出现菜单,选择其中的【Compile】选项,会出现一系列的编译方式。最常用的是前两个,即编译选中文件【Compile Selected】和编译所有文件【Compile All】,如图1-27所示。

图1-27 利用菜单编译

(2)利用快捷工具栏编译。在 ModelSim 菜单栏下方有一排快捷工具,其中有编译按钮,可以直接单击它来对文件进行编译,如图 1-28 所示。共有三个编译按钮,最左侧的是编译选中文件,最右侧的是编译所有文件。

图1-28 利用快捷工具编译

选中最右侧的【Compile All】按钮,编译通过后,原有的问号会变成对号,同时在命令窗口中会出现类似提示:Compile of XXX was successful,如图1-29所示。

图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所示的对话框,按步骤进行设置和仿真即可。

图1-30 启动仿真

1.4.6 工程调试

在实际的设计当中,错误是不可避免的,ModelSim 提供了丰富的错误提示类型,帮助设计者快速发现错误的位置和错误的类型,一般情况下调试过程如下。

(1)编译错误提示。此时Status栏会显示一个红色的叉,表示编译不通过,即源文件中有错误。此时在命令窗口中会出现红色字体的提示,告知设计者哪个文件出现了几个错误,可能包含error,也可能包含warning,如图1-31所示。

图1-31 编译错误提示

(2)查找错误原因和位置。双击命令窗口中的提示,就会弹出一个对话框的提示,会显示在文件的第几行出现了哪种错误。如图 1-32 所示的提示,在文件的第 7 行出现了语法错误。这时,文件的第 7 行会以醒目的颜色标出来,方便设计者查找。当然,同其他设计语言一样,软件指出的错误位置不一定是真正的错误,只是提供一个参考,具体的调试还需要设计者来进行。

图1-32 错误原因和位置提示

将上述的基本过程连接起来,就构成了一个简单的工程实例。从创建工程开始,经过设计文件的加载,之后对设计文件进行编译和调试,调试通过后可以按照仿真的步骤进行仿真并查看最后的输出结果。读者可以参考配套的视频演示。

有了输出结果并不意味着设计已完成。设计是要实现一定功能的,如果仿真器的输出结果与设计者最初的设计初衷不相符,就证明设计出现了问题,需要修改源文件。所以,一个设计并不是通过了编译就宣告成功的,需要对仿真结果进行细致分析,直至确定达到了需要完成的功能。