第5章Quartus Ⅱ软件与第三方工具 5.1ModelSim软件的主要结构 首次启动ModelSim 6.4a软件,可以看到ModelSim的主窗口,包括菜单栏、工具栏、工作区和命令行操作区,如图5.1所示。 图5.1ModelSim主窗口 在工作区可以根据操作显示Project标签、Library标签、Sim标签(显示Load Design、Hierarchical Structure)以及Files标签; 在命令行操作区,可以用命令提示符的方式进行编译、仿真设计,同时打开其他窗口。 5.2ModelSim的简要使用方法 1. 建立工程 使用ModelSim建立工程的操作步骤如下: (1) 第一次打开ModelSim会出现Welcome to ModelSim对话框,选择Create a Project,或者启动ModelSim后选择File→New→Project...命令,都会打开Create Project对话框,如图5.2所示。 图5.2Create Project对话框 (2) 在Create Project对话框中,填写test作为Project Name; 在Project Location栏中选择Project文件的存储目录; 保留Default Library Name的设置为work。 (3) 单击OK按钮确认,在ModelSim软件主窗口的工作区中即增加了一个空的Project标签,同时弹出一个Add items to the Project对话框,如图5.3所示。 图5.3Add items to the Project对话框 (4) 添加包含设计单元的文件。直接单击Add items to the Project对话框中的Add Existing File或Create New File选项可以在工程中加入已经存在的文件或建立新文件。本节我们选择Add Existing File。 也可以单击Close按钮关闭Add items to the Project对话框以后,在ModelSim软件中选择File→Add to Project→Existing Files命令,弹出Add file to Project对话框,如图5.4所示。 图5.4Add file to Project对话框 单击Add file to Project对话框中的Browse按钮,打开ModelSim安装路径中的examples目录,选取counter.v和tcounter.v文件(注意,同时选取两个文件时,文件名直接用空格隔开),再打开对话框下面的Reference from current location选项,然后单击OK按钮。 (5) 在工作区的Project选项卡中可以看到新加入的文件,单击右键,选取Compile→Compile All命令对加入的文件进行编译,如图5.5所示。 图5.5编译软件 (6) 两个文件编译完成后,用鼠标单击Library标签栏。在Library选项卡中,用鼠标单击work库前面的加号“+”,展开work库,将会看到两个编译了的设计单元(如果看不到,需要把Library的工作域设为work),如图5.6所示。 图5.6编译后的设计单元 (7) 导入一个设计单元。双击Library选项卡中的pwm,在工作区中将会出现sim标签,其中显示了pwm设计单元的结构,如图5.7所示。 图5.7导入设计单元 到这一步通常就开始运行仿真、分析以及调试设计了,不过这些工作将在后面的讲述中完成。现在,结束仿真并关闭工程。选择Simulate→End Simulation命令,当提示是否退出仿真时选择“是”,然后选择File→Close→Project命令,并确定关闭当前工程。 前面的步骤在工作目录下建立了一个名为tset.mpf的工程文件,该文件中包含了建立工程过程中的所有信息。在任何时间,可以选择File→Open→Project命令打开该工程文件。 2. 基本VHDL仿真 1) 准备仿真 在进行仿真之前还应进行以下准备工作: (1) 为本次练习新建一个目录,然后复制\Modeltech_6.4a\ examples目录中所有的vhd文件到该目录下。 (2) 启动ModelSim软件,选择File→Change Directory命令,在弹出的Choose folder对话框中设置该目录为当前工作目录。 图5.8建立新的设计库 (3) 在编译任何HDL代码前,要建立一个设计库来存放编译结果。在ModelSim主窗口中,选择File→New→Library命令建立一个新的设计库,如图5.8所示。 在Create a New Library对话框中,选择Create栏中的a new library and a logical mapping to it选项,并在Library Name栏中输入新的设计库名称,如work,单击OK按钮确定。 这就在当前目录中建立了一个子目录,即用户的设计库。ModelSim在这个目录中保存了名为_info的特殊文件。 也可以直接在ModelSim的命令行操作区或DOS/UNIX的命令行中输入下面的命令完成设计库的建立和逻辑映射: vlib work(回车) vmap work work (回车) 注意: 不要直接在Windows或UNIX的文件夹管理器中建立设计库目录,因为这样建立的目录中无法得到ModelSim需要的特殊文件_info。 (4) 选择Compile→Compile命令,将弹出Compile Source Files对话框,如图5.9所示。 图5.9Compile Source Files对话框 从文件列表中选取要编译的VHDL文件,如counter.vhd,并单击图5.9中的Compile按钮,编译完成后单击Done按钮。也可以从文件列表中同时选择多个文件进行编译,按照设计的需要依次选取并进行编译。 还可以直接在ModelSim的命令行操作区或DOS/UNIX的命令行中输入下面的命令完成设计文件的编译: vcom couter.vhd(回车) (5) 在ModelSim主窗口工作区的Library选项卡中单击work库前面的加号“+”展开work库,从中选择counter设计单元并双击鼠标左键,如图5.10所示。 图5.10导入设计单元仿真 也可以直接在ModelSim的命令行操作区或DOS/UNIX的命令行中输入下面的命令行: vsim counter(回车) (6) 在ModelSim主窗口中选择View打开所有ModelSim窗口,包括dataflow窗口、list窗口、local窗口、message viewer窗口、objects窗口、process窗口、call stack窗口、workspace窗口以及wave窗口。 也可以直接在ModelSim的命令行操作区输入下面的命令打开所有窗口: view *(回车) (7) 从Objects窗口中选择Add→To Wave→All items in region命令,如图5.11所示,该命令将设计中的顶层(toplevel)信号加入wave窗口中,如图5.12所示。 图5.11signals窗口 图5.12wave窗口 也可以直接在ModelSim的命令行操作区输入下面的命令将顶层信号加入wave窗口中: add wave /counter/*(回车) (8) 在Objects窗口中选择Add→To List→All items in region命令,该命令在list窗口中加入设计中所有顶层信号,如图5.13所示。 图5.13list窗口 也可以直接在ModelSim的命令行操作区输入下面的命令将顶层信号加入list窗口中: add list /counter/*(回车) 2) 运行仿真 通过输入连续的时钟信号开始仿真。 (1) 在ModelSim主窗口的命令行操作区中,在VSIM提示符下输入下面的命令: forceclk150, 0100-repeat100(回车) 图5.14仿真时钟定义对话框 ModelSim解释force命令如下: 从当前时间开始,在其后50ns时置clk为1; 当前时间后100ns时置clk为0; 每隔100ns重复该clk周期。 也可以通过菜单操作定义时钟输入信号: 在signals窗口中选中clk信号,然后选择Objects窗口的Edit→Clock命令,弹出如图5.14所示的时钟定义(Define Clock)对话框,在此对话框中进行相应的设置。 (2) 执行主窗口或wave窗口工具条按钮的两个不同的Run功能(Run功能只在主窗口和波形(wave)窗口中定义,即这两个窗口中有Run功能)。首先选取Run按钮,运行完成之后选取RunAll按钮。 Run: 运行仿真,在100ns后停止。也可以在ModelSim的命令行操作区输入run 100后按回车键,或在主窗口中选择Simulate→Run→Run 100ns命令。 RunAll: 一直运行仿真,直到单击Break按钮为止。也可以在ModelSim的命令行操作区输入runall后按回车键,或在主窗口中选择Simulate→Run→RunAll。 (3) 选取主窗口或波形窗口的Break按钮来中断仿真,一旦仿真到达一个可接受的停止点,它就停止运行。 在源文件窗口中,箭头指向下一条将被执行的HDL语句。如果暂停发生时仿真器不是在评测一个过程,则没有箭头显示在源文件窗口上。 (4) 在函数内部设置一个断点,本节在counter.vhd文件的第18行函数内部设置一个断点: 移动鼠标到源文件窗口,在21行上单击设置断点,可以看到紧挨着行号有一个红点,可以用鼠标单击切换断点的使能功能,断点禁止后看到的是一个小的红色圆环。可以在断点上单击鼠标右键,选取Remove BreakPoint 21来取消断点,如图5.15所示。 图5.15设置或取消断点 也可以在ModelSim的命令行操作区输入下面的命令设置断点: bp counter.vhd 21(回车) 注意: 断点只能设置在蓝色标号的文本行上。 (5) 选取连续运行快捷按钮(Continue Run)恢复中断了的运行,ModelSim会碰上断点,通过源文件中的一个箭头或是在主窗口中的一条中断信息显示出来。 该操作也可以通过在ModelSim的命令行操作区输入runcontinue后按回车键来完成,或在ModelSim主窗口中选择Simulate→Run→Continue命令。 (6) 单击Step按钮可以单步执行仿真,注意Locals窗口中值的变化,如图5.16所示。可以持续单击Step按钮执行单步仿真。 图5.16Locals窗口 该操作也可以通过在ModelSim的命令行操作区输入runstep后按回车键来完成,或在ModelSim主窗口中选择Simulate→Run→Step命令。 (7) 输入下面的命令结束仿真: quit-force(回车) 该命令不需要确认就直接结束仿真并退出ModelSim。 3. 基本Verilog仿真 1) 准备仿真 在进行基本Verilog仿真之前要进行以下准备工作: (1) 为本练习新建一个目录,复制\Modeltech_6.4a\examples目录中所有的Verilog(.v)文件到该目录下。 (2) 设置该目录为当前工作目录,通过从该目录直接调用ModelSim或启动ModelSim软件后选择File→Change Directory命令来完成。 (3) 在编译Verilog文件前,需要在新目录下生成一个设计库来保留编译结果。如果读者仅仅熟悉解释性Verilog仿真器,诸如Cadence VerilogXL,那么对于用户来说这是一个新的方法。因为ModelSim是一个编译性Verilog仿真器,对于编译它需要一个目标设计库。如果需要,ModelSim能够编译VHDL和Verilog代码到同一个库中。 (4) 在ModelSim主窗口中,选择File→New→Library命令建立一个新的设计库,如图5.17所示。 图5.17Compile Source Files对话框 在Create a New Library对话框中,选择Create栏中的a new library and a logical mapping to it选项,并在Library Name栏中输入新的设计库名称,如work,单击OK按钮确定。 这就在当前目录中建立了一个子目录,即用户的设计库。ModelSim在这个目录中保存了名为_info的特殊文件。 也可以直接在ModelSim的命令行操作区或DOS/UNIX的命令行中输入下面的命令完成设计库的建立和逻辑映射: vlib work(回车) vmap work work (回车) 注意: 不要直接在Windows或UNIX的文件夹管理器中建立设计库目录,因为这样建立的目录中无法得到ModelSim需要的特殊文件_info。 (5) 编译Verilog设计。这个设计例子由两个Verilog源文件组成,每一个都包含一个唯一的模块。文件counter.v包含一个名为counter的模块,它执行一个简单的八位二进制加法计数器。另一个文件tcounter.v是一个测试台模块(test_counter),通常用来检验counter。在仿真中,可以看到这两个文件被层次化配置,它们使用了被测试台实例化的counter模块的一个简单实例(实例名为dut)。后面将有机会看到这个代码的结构,现在,需要编译两个文件到work设计库中。 (6) 选择Compile→Compile命令编译counter.v和tcounter.v两个文件。在如图5.17所示的Compile Source Files对话框中,使用Ctrl键+鼠标左键操作同时选择工作目录中的counter.v和tcounter.v文件,然后单击Compile按钮,完成后单击Done按钮。 也可以直接在ModelSim的命令行操作区输入下面的命令完成编译: vlogcounter.vtcounter.v(回车) 注意: ModelSim只有在载入设计以后才检查Verilog模块的顺序,因此,在这里不用考虑编译counter.v和tcounter.v文件的先后顺序。 (7) 在主窗口工作区的Library选项卡中,单击work库前面的加号“+”展开该库,可以看到counter和test_counter两个设计单元,如图5.18所示。 在图5.18中,用鼠标左键双击test_counter载入设计单元,同时在工作区中出现一个新的sim选项卡,如图5.19所示。 图5.18展开work库 图5.19载入设计单元 也可以直接在ModelSim的命令行操作区输入下面的命令完成设计单元的载入: vsimtest_counter(回车) (8) 在主窗口命令行操作区的VSIM提示符下输入下面的命令,调出signals、list和wave窗口: viewsignalslistwave(回车) 也可以通过选择View→<窗口名>打开需要的窗口。 (9) 向wave窗口添加信号。在signals窗口中,选择Edit→Select All命令,选择所有信号,然后拖动所有信号到wave窗口的路径名或数值窗格中,如图5.20所示。 图5.20向wave窗口拖入信号 HDL条目也能够从一个窗口复制到另一个窗口(或者是在wave和list窗口内部),这可通过选择Edit→Copy和Edit→Paste命令完成。通过Edit→Delete命令也能删除选取的条目。 (10) 导入设计的时候会在工作区打开一个新的sim标签。在sim选项卡中单击加号“+”展开设计层次结构,可以看到本节实例的test_counter、dut(counter)和名为increment的函数(如果在sim选项卡中没有显示test_counter,则当前仿真的是counter,而不是test_counter),如图5.21所示。 图5.21层级结构显示 (11) 单击其中的increment函数,可以注意到其他窗口自动更新。明确地说,source窗口显示了在sim选项卡层次结构中所选层次的Verilog代码,signals窗口显示了对应信号。在这种方式下使用层次结构类似于解释性Verilog仿真器中的Scoping命令。 现在,单击sim选项卡中的顶层行,保证test_counter模块显示在source窗口中,如图5.22所示。 图5.22source窗口 2) 运行仿真 (1) 单击主窗口工具条上的Run按钮启动仿真,默认仿真长度为100ns; 也可以在ModelSim的命令行操作区输入run(回车),或在主窗口中选择Simulate→Run→Run 100ns命令。 (2) 设置运行长度(Run Length)为500ns,然后单击Run按钮,如图5.23所示。 现在仿真运行了600ns(默认的100ns加上设置的500ns),在工作区底部状态栏可以看到这些信息。 图5.23设置运行长度 (3) 上面的设置使仿真器前进了500ns,也可以通过下面的命令设置仿真器推进的时间: run @ 3000(回车) (4) 单击主窗口工具条上的RunAll快捷按钮,让仿真器连续运行,直到停止在tcounter.v模块中为止,如图5.24所示。 图5.24仿真停止在tcounter.v模块 也可以单击Break按钮中断运行,在source窗口中查看中断时执行的语句。 3) 调试仿真 (1) 在list窗口中选取/test_counter/count,如图5.25所示。从list窗口菜单条中选择View→Signal Properties,弹出List Signal Properties对话框,如图5.26所示。 图5.25在list窗口中选择/test_counter/count 图5.26List Signal Properties对话框 在Radix栏为信号counter选取十进制(Decimal),相应的list窗口的输出也发生改变,成为十进制数,而不是缺省的二进制了。 (2) 选取主窗口工作区中sim选项卡层次结构中的dut: counter,然后在source窗口打开的counter.v中的第30行(这里包含一个Verilog功能增量的调用)设置断点,如图5.27所示。 (3) 单击Restart按钮,重载设计组件并重置仿真时间为零。也可以在ModelSim的命令行操作区输入restart(回车),或在主窗口中选择Simulate→Run→Restart命令。 (4) 确认Restart对话框中所有条目被选中,如图5.28所示,然后单击Restart按钮。 图5.27在source窗口中设置断点 图5.28Restart对话框 (5) 在主窗口工具条中选择RunAll快捷按钮,恢复执行仿真。中断后观察source窗口。 (6) 当中断到达后,可以观察一个或多个信号的值,通过以下几种方法可以检测这些值查看显示在signals窗口中的值; 在source窗口中,在变量上单击鼠标右键,从弹出的右键菜单中选择Examine命令; 在命令行操作区输入examine命令,可以输出变量值,如examine count。 (7) 执行单步命令Step,遍历Verilog源函数。 (8) 结束仿真,其执行命令为quitforce。 4. VHDL/Verilog混合仿真 1) 准备仿真 (1) 建立一个新的工作目录,复制\Modeltech_5.8d\ examples\mixedHDL目录中所有的VHDL(.vhd)文件和Verilog(.v)文件到该目录下。 (2) 启动ModelSim软件,选择File→Change Directory命令,将新建目录设置为当前工作目录。 (3) 在主窗口中选择File→New→Library命令,在新目录下建立一个设计库来保留编译结果。 (4) 编译文件。在主窗口中选择Compile→Compile命令,打开Compile Source Files对话框,逐个编译Verilog文件,如cache.v、memory.v和proc.v。也可以在主窗口命令行操作区输入下面的命令行完成Verilog文件编译: vlogcache.vmemory.vproc.v(回车) (5) 依赖于设计,VHDL的编译次序是特定的。在这个例子中,top.vhd文件必须最后编译。按照下面的顺序编译文件: util.vhdset.vhdtop.vhd 或在主窗口命令行操作区输入下面的命令行完成VHDL文件编译: vcomutil.vhdset.vhdtop.vhd(回车) (6) 编译完成后,单击Compile Source Files对话框中的Done按钮。 2) 运行仿真 (1) 在主窗口工作区的Library选项卡中单击work库前面的加号“+”展开该库,可以看到所有设计单元。 (2) 用鼠标左键双击work库中的top实体,在工作区中出现一个新的sim选项卡。也可以直接在ModelSim的命令行操作区输入下面的命令完成top实体的载入: vsimtop(回车) (3) 在ModelSim主窗口中选择View→All Windows命令,打开所有仿真窗口。也可以直接在命令行操作区输入下面的命令: view *(回车) (4) 在signals窗口中,选择Add→Wave→Signals in Region命令,向wave窗口添加信号; 选择Add→List→Signals in Region命令,向list窗口添加信号。 也可以直接在ModelSim命令行操作区输入下面的命令实现向wave窗口和list窗口添加信号: add wave *(回车) add list * (回车) (5) 观察ModelSim工作区sim选项卡中的层次结构。注意设计中两者的层次混合,VHDL层级用一个蓝色方框前缀指示,Verilog层级用一个天蓝色的圆形前缀指示。 (6) 在工作区sim选项卡中,单击层次结构中的c: cache模块,它的源代码出现在source窗口中。 (7) 在source窗口中,选择Edit→Find命令,用查找功能在cache.v文件中定位到cache_set的声明位置。 (8) 找到cache_set声明后可以发现,cache_set是cache.v文件内实例化的VHDL实体。 (9) 在ModelSim工作区sim选项卡的层次结构中单击c: cache前面的加号“+”展开,单击c: cache下一级的s0: cache_set(only),则source窗口显示了cache_set实体的VHDL代码。 (10) 结束仿真,其执行命令为quitforce。 5. 调试VHDL仿真 1) 准备仿真 (1) 建立一个新的工作目录,复制\Modeltech_6.4a\examples目录中的gates.vhd、adder.vhd和testadder.vhd文件到该目录下。 (2) 启动ModelSim软件,选择File→Change Directory命令,将新建目录设置为当前工作目录。 (3) 在主窗口中选择File→New→Library命令,在新目录下建立一个设计库library_2来保留编译结果,或在命令行中输入vlib library_2命令。 (4) 在ModelSim主窗口命令行操作区或UNIX/DOS命令行中,输入下面的命令将源文件编译到新的设计库中: vcom-work library_2 gates.vhdadder.vhdtestadder.vhd(回车) (5) 映射新库到工作库。可以直接编辑modelsim.ini文件来生成映射,或者用vmap命令生成一个逻辑库名字来完成: vmap work library_2(回车) ModelSim自动修改modelsim.ini文件。 (6) 在ModelSim主窗口工作区的Library选项卡中,单击work库前面的加号“+”展开,可以看到所有设计单元。 (7) 用鼠标左键双击work库中名为test_adder_structural的配置,在工作区中出现一个新的sim选项卡,如图5.29所示; 也可以直接在命令行操作区输入下面的命令: vsim-t ns work.test_adder_structural(回车) 图5.29载入配置 (8) 在主窗口中选择View→All Windows命令,或输入view *命令,打开所有仿真窗口。 (9) 在signals窗口中选择Edit→Select All命令,选中所有信号,然后将它们拖动到list窗口中。 该操作与在signals窗口中选择Add→List→Signals in Region命令或输入add list *命令的结果相同。 (10) 以同样的方法,把信号加到wave窗口中。 (11) 在ModelSim主窗口的运行时间长度中设置1000ns。 2) 运行调试仿真 (1) 选取Run命令,运行仿真。主窗口中的一条消息将通报有一个判断错误,如图5.30所示。执行后面的步骤查找错误。 图5.30运行消息提示 (2) 改变仿真判断选项,在主窗口中选择Simulate→Runtime Options命令,弹出如图5.31所示的Runtime Options对话框。 图5.31Runtime Options对话框 (3) 选取Assertions选项卡。在Break on Assertion栏中改变选择为Error,并单击OK按钮。该选项将使仿真停在HDL判断语句上。 (4) 选取Restart重新开始仿真。确定Restart对话框中的所有条目被选,然后单击Restart按钮。 (5) 选取Run命令,可以看到source窗口中的箭头指向判断语句,在variables窗口中可以看到i=6,这表示仿真停留在测试模式环路的第六次重复中,如图5.32所示。 (6) 在variables窗口中单击加号“+”展开名为test_patterns的变量,也要展开排列在test_patterns下的第六次记录,如图5.33所示。 图5.32调试中的variables窗口 图5.33展开第六次记录 判断表明了signals窗口中的sum不等于variables窗口中的sum字段。输入a、b和cin的和应该等于输出sum,但是在测试向量内有一个错误。为了改正这个错误,需要重新仿真且修改测试向量的初始值。 (7) 执行restartf命令。参数f使ModelSim不出现确认对话框就重新仿真。 (8) 在process窗口中选取test/testbench过程更新variables窗口,如图5.34所示。 图5.34process窗口 (9) 再次展开variables窗口中的test_patterns和test_patterns[6]。单击变量名字,高亮显示 .sum记录,然后选择variables窗口中的Edit→Change...命令,弹出Change Selected Variable对话框,如图5.35所示。 图5.35修改variables窗口中记录值 (10) 在Change Selected Variable对话框中,把Value中的数值最后四位(1000)替换为0111,并单击Change按钮。(这只是暂时编辑,必须用文本编辑器永久地改变源代码。) (11) 选取Run命令运行仿真。 这样,仿真运行时就不会报错了。 6. 运行批处理模式(batchmode)仿真 批处理模式仿真必须运行在DOS或UNIX提示符下。除非特殊说明,该部分所提到的命令都是在DOS或UNIX命令提示符下输入的。 (1) 建立一个新目录,复制\Modeltech_5.8d\examples\counter.vhd文件到该目录下。 (2) 将新建目录设置成当前工作目录。 (3) 生成一个新的设计库。在新建目录的DOS或UNIX命令提示符后输入vlib work后按回车键。 (4) 映射库: 在DOS或UNIX命令提示符后输入vmap work work后按回车键。 (5) 编译源文件: 在DOS或UNIX命令提示符后输入vcom counter.vhd后按回车键。 (6) 使用宏文件为计数器提供激励。这里我们使用ModelSim提供的宏文件,复制example\stim.do文件到当前工作目录中。 (7) 使用编辑器建立批处理文件,内容为 add list-decimal * do stim.do write list counter.lst quit-f 保存批处理文件到当前目录,命名为yourfile。 (8) 执行下面的命令,运行批处理模式仿真: vsim-do yourfile-wlf saved.wlf counter-c(回车) 在名为“counter”的设计单元调用vsim仿真器。 通过wlf这个可选项通知仿真器在名为saved.wlf的日志文件中保存仿真结果。 运行yourfile批处理设置: 值以十进制的方式列示出来; 执行名为stim.do的激励,并将结果写到名为counter.lst的文件中。默认设计名为counter。 (9) 浏览保存在saved.wlf文件中的仿真结果: vsim-view saved.wlf(回车) (10) 在ModelSim软件的主窗口中选择View菜单打开signals、list和wave窗口,或在ModelSim命令行操作区输入下面的命令: view signals list wave(回车) (11) 在窗口中放置信号,在ModelSim命令行操作区输入下面的命令: add wave *(回车) add list *(回车) (12) 在Variables窗口中检验保存的仿真结果。 (13) 结束仿真,其执行命令为 quit -f(回车) 5.3在ModelSim SE中指定Altera的仿真库 图5.36所示为ModelSim SE 6.4a版的启动画面。 图5.36ModelSim SE 6.4a版的启动画面 以下讲述如何在ModelSim SE中创立Altera的仿真库(在Quartus Ⅱ里提取库)。 (1) 启动ModelSim SE仿真工具,在主窗口中选择File→Change Directory命令,将工作目录改变到想要存放仿真库的目录下,如图5.37所示,单击OK按钮确定。 (2) 在主窗口中选择File→New→Library命令,弹出Create a New Library窗口,将Create选项设置为a new library and a logical mapping to it,输入库的名字(例如Altera_song),如图5.38所示,单击OK按钮确定。 这个操作过程实质上相当于在ModelSim主窗口的命令操作区中输入了vlib和vmap命令。 图5.37指定工作目录 图5.38Create a New Library对话框 (3) 选中主窗口Library选项卡中的Altera_song,选择Compile→Compile命令,弹出如图5.39所示的对话框。将查找范围指定到\eda\sim_lib文件夹下,对以下8个文件分两次进行编译: 220model.v,220model.vhd,220model_87.vhd,220pack.vhd, altera_mf.v,altera_mf.vhd,altera_mf_87.vhd,altera_mf_components.vhd。 编译顺序为220pack.vhd和altera_mf_components.vhd先编译,其他文件后编译。单击Compile按钮编译,完成后单击Done按钮。 图5.39选择Altera编译库 (4) 如果要后仿真,就把要用的系列库再编译。例如用Altera的Cyclone系列,就再编译cyclone_components.vhd、cyclone_atoms.vhd和cyclone_atoms.v三个文件。 (5) 将ModelSim SE根目录下的配置文件modelsim.ini的属性由只读改为可写,这个操作是为了使软件可以记录仿真库建立的路径以及映射关系。以后每次启动ModelSim仿真工具时,软件都会根据ini文件中的配置寻找仿真库,并形成映射关系。 (6) 保存文件并退出。以后对Altera的设计进行仿真都不需要再进行库的处理了。