![基于MATLAB与FPGA的图像处理教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/918/47548918/b_47548918.jpg)
1.3.2 仿真验证平台介绍
通常情况下,在完成相关的RTL设计之后,接下来要做的事情就是对设计功能进行仿真,验证它是否满足我们的设计需求。本节基于ModelSim,搭建了一个简易的仿真验证平台,用于本书中RTL设计的功能仿真。
该平台是基于批处理脚本、do脚本、一键化可运行图形界面或命令形式的仿真机制的。图1.18所示为仿真验证平台的文件组织架构,下面分别对各文件夹和文件的作用进行介绍。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_20.jpg?sign=1739286236-WlYeSndI1ZZkb9ewDJKdMVEHXT8aCNLW-0-97883531176664530aa47826dc860f65)
图1.18 仿真验证平台的文件组织架构
(1)sim_log:存放ModelSim仿真过程中产生的文件,包括编译文件、仿真波形文件等。
(2)source_files:存放ModelSim仿真用的数据源。
(3)print_files:存放ModelSim仿真的打印结果。
(4)design_ver.f:存放Verilog设计文件列表。
(5)read_wave.bat:用于打开仿真波形文件的批处理脚本。
(6)run.bat:启动ModelSim仿真的批处理脚本。
(7)run.do:执行ModelSim仿真的相关指令,包括建立库、映射库、编译、启动仿真。
(8)testbench.sv:存放ModelSim仿真的顶层文件。
仿真验证平台的运行机制,如图1.19所示。通过批处理脚本和do脚本文件之间的调用来启动仿真验证平台。运行run.bat时,启动ModelSim对run.do进行编译(包括design_ver.f和testbench.sv)和仿真。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_21.jpg?sign=1739286236-QZMXMSSx1443gvsWZKzWC2WNXlgoVd8k-0-d215c065c6246797a4ef4d1555a8393a)
图1.19 仿真验证平台的运行机制
接下来对批处理脚本和do脚本的内容进行介绍。
1.3.2.1 read_wave.bat
关闭显示信息,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_22.jpg?sign=1739286236-OfoyNOo8zbagMBP9LBFyDuKojODCJqYP-0-9f067bdf0c5c9b0dc98537b66e731e2e)
将当前路径作为cmd窗口的标题显示,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_23.jpg?sign=1739286236-5TJmXZkSriszWwzfAPam4IDfX6PNFk35-0-f080b5aad07932363c580155913c3b8c)
进入sim_log目录,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_24.jpg?sign=1739286236-BAR9o73vFpTHX1ImI0aYeGe9NlKYs7Ql-0-de1a9248253b83a06622bfd5421e3898)
打开仿真波形文件vsim.wlf,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_25.jpg?sign=1739286236-7fdKfgy1S3l1i8U4ZNmJyvmgjmNiAErt-0-fc705380d7b297cfdb2c6323ffc10ce7)
1.3.2.2 run.bat
关闭显示信息,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_26.jpg?sign=1739286236-7USg5GTt4VsWWDd9uv5HfxZ0bPbRnKSZ-0-4862ee779064e4417521289dd31e6177)
将当前路径作为cmd窗口的标题显示,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_27.jpg?sign=1739286236-QtLZDTIgof8RuqUAZ4rTUZ4oBIQebzjY-0-97d0923a4739e6f129fe655039210c83)
删除sim_log目录下的内容,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_28.jpg?sign=1739286236-Fyv9eiQJvsQSnz3EHZ5MwuovugRklkjG-0-249901516b21c3750c6818e92b25c95d)
删除print_files目录下的内容,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_29.jpg?sign=1739286236-ayZpHChwacJBRKA8cQBqKfoSC7YbeK2S-0-ea62653f368d435e68f9c72a2c7bddf0)
进入sim_log目录,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_30.jpg?sign=1739286236-RitDLwwJ80b6owlVFK72jKDWNHsgG4Gg-0-10442855322f1318f26d158184de860d)
后台模式启动ModelSim软件执行run.do进行仿真,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_31.jpg?sign=1739286236-xwO0sSPg3c995nRGi5W7uiup1tnA2PdV-0-08789faed513a53043158c436feea742)
终止cmd窗口并退出,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_32.jpg?sign=1739286236-qdP5U6oIxV3Q49f7p3xtnEaIKwj9YJcx-0-65943857cdb60433b3b2b07fc2ae7014)
1.3.2.3 run.do
将ModelSim的配置文件ModelSim.ini拷贝到当前目录,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_33.jpg?sign=1739286236-zkwexSwqHuWaDBNJ4XAuHabvk6vI2InZ-0-129707ef99f8a298efcbc24178231b65)
建立库目录和映射库,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_34.jpg?sign=1739286236-zr2AfEJJmMzBuPxR5sIWxsICwhVLKQ7W-0-bf2e039bafe16f1dacd7f603c7870262)
编译testbench.sv和design_ver.f,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_35.jpg?sign=1739286236-ljLqGySulDQ3c8gh41cMKBQ6bvf07PQY-0-cd5341e145fe0e03d8909448b2346daf)
启动仿真并使用相关的器件库,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_36.jpg?sign=1739286236-vKH1bi5XwDe0JToF2B3GCs1EmGzgSHjr-0-76143c245aee0891f19671ed39e0cad7)
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_37.jpg?sign=1739286236-1WFnCh0XiubCA4J4am81HTVknmWSlPqV-0-96424693918f6a3928ce08d7da15d231)
添加波形;记录波形;设置仿真时间,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_38.jpg?sign=1739286236-qSunTBeXb3jvrfjAfjqormNyxlZd1Nqa-0-6623ca0c4b28affddd89fb7190331b05)
关于仿真验证平台的具体使用流程,请参考第2章2.4.2节仿真流程的详解。