![基于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=1739574454-938y3162gDH2YKb1kB4CjQrhOHqXC6D2-0-7b710eb5be250f4e0cc464fc02240e60)
图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=1739574454-QB1bS4cIeT0oNhdCjDLldowP4mEUlLxS-0-c55e0f8f75bcbc6c77ca55e1760b3987)
图1.19 仿真验证平台的运行机制
接下来对批处理脚本和do脚本的内容进行介绍。
1.3.2.1 read_wave.bat
关闭显示信息,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_22.jpg?sign=1739574454-L077U2hnirMVJtelKvLDW6xw5lI641Ut-0-b419a21f74144bdd695cbf0b76e4cac7)
将当前路径作为cmd窗口的标题显示,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_23.jpg?sign=1739574454-T39pCLiAQIPMRVg6jG0v1tH8fwOlkrXv-0-3dc1f5ec9431b6acef42ee5b5e760d32)
进入sim_log目录,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_24.jpg?sign=1739574454-kSmhbIIYNxlU4UHiGOw239OZer5qnAI7-0-e397bc07116ff2ef6debf320a822ac8c)
打开仿真波形文件vsim.wlf,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_25.jpg?sign=1739574454-4nzIxtcZt1SUJqc7yFMPismq0w7jP1xf-0-8910bb9fa431b5232ef6398b2f74422d)
1.3.2.2 run.bat
关闭显示信息,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_26.jpg?sign=1739574454-lJioCHDbwEcIncBUV7c8ZIqhBHUTM7bT-0-9e4724dc4f76656ae709703c58710330)
将当前路径作为cmd窗口的标题显示,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_27.jpg?sign=1739574454-uHnlAJxKNmB8YXfiPgb6PoQMFLfOUFcN-0-c6d8f184088375ca3d60fb709ef3657e)
删除sim_log目录下的内容,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_28.jpg?sign=1739574454-eUQtlujoos8CrrhHAjYOeoVWEGhKH47t-0-0abee9c1e536048835c791199e89f2fd)
删除print_files目录下的内容,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_29.jpg?sign=1739574454-dIE2kUbHnjSPyOi5djZlpnzV2v1Rx3gC-0-ef4bc480b9b11eaf47bc8514640421dc)
进入sim_log目录,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_30.jpg?sign=1739574454-SAnl08OH179XaitWboZseXcCcHAjQkpx-0-e85ecc62d95718cceb89a557ba12c881)
后台模式启动ModelSim软件执行run.do进行仿真,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_31.jpg?sign=1739574454-vTxgFniZFCPdiPqRvGbDZKPhPElxKoIG-0-e753f6c24c1586c493e7b36e85696305)
终止cmd窗口并退出,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_32.jpg?sign=1739574454-JZghXmXHXgeXcp2nczbLArCizLHx6x8g-0-443d6183ac73c03b246636553ca283d6)
1.3.2.3 run.do
将ModelSim的配置文件ModelSim.ini拷贝到当前目录,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_33.jpg?sign=1739574454-YgXtLL4AZwxDl7PQlF4NXHYijXYhKjmf-0-7d17f437375579784498582e18b7c980)
建立库目录和映射库,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_34.jpg?sign=1739574454-pV2Nj4CDB4ZOVDzYtGSiwwIbkeoEJMiv-0-fbb52154275597bad159f1b8c778ed69)
编译testbench.sv和design_ver.f,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_35.jpg?sign=1739574454-bdJhRbeSCzabatF2sFpJYZCsB6vL4RSt-0-11b70fbcf4db1c9cd3f5ca9e78849e02)
启动仿真并使用相关的器件库,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_36.jpg?sign=1739574454-6mxaVlpbVdGXcijZS3LhxbYyhGvTYB6u-0-7d971d22ca8adf87bc98b6d6e12b980f)
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_37.jpg?sign=1739574454-KE1w8v3BxhPKvmOxtGoj5N3AyKt8d3rm-0-e595b4aa4ed180d6fc15b6b3e6d993d5)
添加波形;记录波形;设置仿真时间,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_38.jpg?sign=1739574454-KY7RpohvSxTTUbO70XBJ8nahi426bOGV-0-ae480e2274d975269461d9300c474144)
关于仿真验证平台的具体使用流程,请参考第2章2.4.2节仿真流程的详解。