本文主要是介绍FPGA杂记2——modelsim仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
modelsim设计及仿真所需文件
- Design文件:用于存放设计文件,将所设计的V代码放在文件中,方便在之后的运行程序中调用
- Testbench文件:用于存放与库文件编译、波形显示、测试脚本相关的代码文件,方便在之后的运行中直接调用 ,其中 .do文件 是modelsim的运行文件,包括测试脚本、设计文件、库文件的编译等
- .Bat文件:调用可执行的程序
下面我将会详细地按照上述的文件将一些代码写出来作为一个modelsim运行脚本的模板,在此也感谢 特权同学,接下来写到的FPGA杂记基本上源于他的B站讲解视频,同时这是他的淘宝商铺链接,感兴趣的同学也可以在B站中看到他更多的一些视频学习资料,一起学习一起成长
Design文件
这个设计文件在这里也没啥好说的,只要将相应所要实现的功能通过v代码实现,写在各个模块中,需要的话可以通过 例化 进行模块间的调用即可
Testbench文件
compile.do文件
vlib work
vmap work work#library
#vlog -work work ../../library/artix7/*.v#IP
#vlog -work work ../../../source_code/ROM_IP/rom_controller.v#SourceCode
vlog -work work ../design/vlg_design.v#Testbench
vlog -work work testbench_top.v vsim -voptargs=+acc work.testbench_top#Add signal into wave window
do wave.do#run -all
以上的代码主要包括四个部分:Library(库)、IP、SourceCode(设计文件)、Testbench(测试文件),其中
- Library 加上注释不用执行是因为我们所用的库在刚开始就已经编译好了的,即都是编译好的库文件
- IP 是在设计中使用到了IP文件(Vivado中是.COE文件)才需要调用IP所在位置的网表文件,相当于做一次编译操作,否则不需要执行,关于IP的Vivado设计我也会在之后的设计中再具体明说
- SourceCode ——设计原码
- Testbench ——测试脚本
- 运行的 do.wave.do 是添加波形,会自动将设计文件中设计的输入与输出接口添加进来
- 最后一句不加注释的话就会在 compile.do 文件执行最后直接跑仿真,若是加了注释就可以在图形界面中点击run -all的符号
- vsim那句是调用modelsim工具,在其中打开测试文件脚本
Testbench文件 :
`timescale 1ns/1ps //延时单位为1ns,延时精度是1ps
module testbench_top();
//参数定义
`define CLK_PERIORD 10 //时钟周期设置为10ns(100MHz)
//接口申明
reg clk;
reg rst_n;
//对被测试的设计进行例化
vlg_design uut_vlg_design(.clk(clk),.rst_n(rst_n));
//复位和时钟产生
//时钟和复位初始化、复位产生
initial beginclk <= 0;rst_n <= 0;#1000;rst_n <= 1;
end//时钟产生
always #(`CLK_PERIORD/2) clk = ~clk;
//测试激励产生
initial begin@(posedge rst_n); //等待复位完成@(posedge clk);repeat(10) begin@(posedge clk);end$stop;
endendmodule
以上模块包括了以下几个部分:
- 参数的定义:用于设定时钟周期
- 接口申明:定义模块的输入与输出接口,这里需要注意的是 测试模块的输入接口是设计模块的输出接口(reg型),测试模块的输出接口是设计模块的输入接口(wire型)
- 例化测试模块 : 对被测试的设计进行例化操作,才能在本测试模块中调用设计模块
- 复位与时钟的产生:主要是对复位以及时钟进行初始化操作,并且关闭复位信号,产生时钟
- 测试激励的产生:在等待复位完成之后,需要给测试模块添加激励(输入)信号,才能使得该测试模块正常运行
wave.do文件 :
add wave -position insertpoint sim:/testbench_top/* //添加波形操作
最后我想补充一点,在常见的设计中,Testbench文件夹中应该还有一个文件 glbl.v ,该文件主要的作用是宏定义一些全局信号,这在设计中也是很重要的(具体代码点击这里),如果加入了该文件就需要在 compile.do文件中编译,如下图所示:Testbench文件夹所有文件如下图所示:
.Bat文件
这是一个可执行程序,用于快速将所有文件在modelsim中打开,打开脚本会发现里面程序是这样的:
@echo off
@cls
title FPGA Auto Simulation batch script //打开的窗口名字echo ModelSim simulation
echo.
echo Press '1' to start simulation
echo.:input
set INPUT=
set /P INPUT=Type test number: %=%
if "%INPUT%"=="1" goto run1
goto end:run1
@cls
echo Start Simulation;
echo.
echo.
cd testbench
vsim -do "do compile.do" //打开modelsim并运行compile.do文件
goto clean_workspace:clean_workspacermdir /S /Q work
del vsim.wlf
del transcript.:end
这篇关于FPGA杂记2——modelsim仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!