10.2.3 编写测试向量(Test Bench)加激励仿真
编写测试向量(Test Bench)进行仿真是工程应用中最常用的仿真方法。测试向量(Test Bench)文件是用通用的标准语言编写,可移植性强,能够在不同工具中直接调用。
Active-HDL工具可以很方便地自动生成测试向量文件的框架,然后由用户编写录入关键的测试激励语句,即可完成测试向量文件的编写。其操作如下:
(1)在VHDL源文件编译完成后,如图10.58所示,单击 “Design Browser”窗口中的刚刚编译过的文件count.vhd前的小加号,出现一个子项,这就是源文件中的实体和构造体。选中它,单击鼠标右键,在弹出窗口中选择“Generate Test Bench”。
图10.58 启动Test Bench产生窗口
(2)接下来出现如图10.59所示的Test Bench产生向导对话框。在此框中已经自动填好了实体名和构造体名。可选的Test Bench类型有两种:单进程、基于波形文件。用VHDL编写Test Bench时直接选择“单进程”。
图10.59 Test Bench产生向导对话框
单击“下一步”,出现如图10.60所示对话框。在此对话框中,若在上面的小方框中打钩,则需要从已经存在的一个外部文件中引入测试向量。如果不需要引入外部测试向量则直接单击“下一步”。
图10.60 Test Bench测试向量定义对话框
(3)接下来出现如图10.61所示对话框,里面一切已自动填好,读者只需单击“下一步”。
图10.61 Test Bench文件定义
(4)出现如图10.62所示对话框,单击“完成”即可。
图10.62 Test Bench产生向导对话框
(5)如图10.63所示,Active-HDL已经自动产生了Test Bench的基本框架。在 “Design Browser”中自动创建了一个TestBench文件夹,该文件夹内已经添加了一个Test Bench文件“count10en_TB.vhd”和一个宏文件“count10en_TB_runtest.do”。如图10.63所示的Test Bench文件源代码并不完整,尚需要加入用户自己的激励语句,激励语句添加到图中“Add your stimulus here…”标出的位置。
图10.63 Test Bench文件框架已产生
在图10.63中“Add your stimulus here…”标出的位置加入如下激励语句:
由于在上段语句中使用了一个变量“clk_cycle ”,此变量还需要在构造体中申明,所以只需要将申明语句“constant clk_cycle:TIME:=20 ns;”添加到构造体的变量申明部分就可以了,然后编译该Test Bench文件。
(6)编译成功后,如图10.64所示,在“Design Browser”栏中,选中“TestBench”目录中“count10en_TB.vhd”下面的子项“count10en_tb(tb_architecture)”,单击鼠标右键,在弹出菜单中选择“Set as Top-Level”。
图10.64 设置测试基准
(7)如图10.65所示,在“Design Browser ”栏中,选中“TestBench”目录中“count10en_ TB_runtest.do”,单击鼠标右键,在弹出菜单中选择“Execute”。宏文件执行后,波形观测窗会自动调出,如图10.65所示。
图10.65 执行宏文件
(8)在波形观测窗口中单击仿真运行按钮即可完成仿真,得到的最终仿真波形如图10.66所示。
图10.66 仿真波形图
(9)如果要重新开始仿真,则首先要使当前的仿真结束,单击工具栏上的“simulation”按钮,在其下拉菜单中选择“End Simulation”,如图10.67所示。
图10.67 结束仿真
(10)如图10.68所示,点击工具栏上的“Waveform”按钮,在其下拉菜单中选择“Clear All Waveforms”即可清除所有波形,然后可以开始重新仿真。
特别提示:在仿真中有一个小问题需要读者注意一下,相信读者已经了解了什么是“竞争-冒险”现象,所以在仿真过程中,给信号加激励时,应该尽量避免两个或若干输入信号同时动作的现象,使其动作发生的时间相互错开不失为一个好办法。
图10.68 清除波形的操作
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。