ModelSim软件仿真步骤教程
- 格式:doc
- 大小:238.00 KB
- 文档页数:9
ModelSim的仿真1.仿真的分类仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。
仿真主要分为功能仿真和时序仿真。
功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行。
1). 功能仿真( 前仿真)功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。
布局布线以前的仿真都称作功能仿真,它包括综合前仿真(Pre-Synthesis Simulation )和综合后仿真(Post-Synthesis Simulation )。
综合前仿真主要针对基于原理框图的设计; 综合后仿真既适合原理图设计, 也适合基于HDL 语言的设计。
2). 时序仿真(后仿真)时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。
时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。
后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。
其输入文件为从布局布线结果中抽象出来的门级网表、Testbench 和扩展名为SDO 或SDF 的标准时延文件。
SDO 或SDF 的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。
一般来说后仿真是必选的,检查设计时序与实际的FPGA运行情况是否一致,确保设计的可靠性和稳定性。
2.仿真的作用1).设计出能工作的电路:因此功能仿真不是一个孤立的过程,其和综合、时序分析等形成一个反馈工作过程,只有这个过程收敛,各个环节才有意义。
1. ModelSim概览ModelSim仿真软件是由Midel技术公司开发的工业界上最为通用的仿真器之一,它可以用于Verilog仿真,VHDL仿真或者两者的混合仿真。
ModelSim仿真软件产品的类型很多,我们在这里要介绍的是ModelSim/S,它是ModleSim的首要版本,功能最为强大,包含了ModelSIm/PLUS的所有功能及其附加功能。
ModelSim/SE随着时间的推移不断地推出新的版本,我们要介绍的是Mentor Graphis公司于2005年6月推出的ModelSim/Se 6.1版本的使用。
图1.1 ModelSim/Se 6.1用户界面在UNIX操作系统的命令行中首先输入fpga.setup命令,然后输入vsim命令,便可以得到图1.1所示的ModelSim图形用户界面。
为了完成后续的实验内容,请先将ModelSimLAB 文件夹(内部包含lab1、lab2、lab3、lab4四个文件夹)复制到自己的根目录下面。
2. 基本的仿真步骤ModleSim 有三种实现方法。
第一种是交互式的命令行,这种操作方法没有用户界面,唯一的界面是控制台的命令行。
第二种是用户界面(UI),它能够接收菜单输入和命令行输入。
第三种是批处理模式,是用DOS 或UNIX 命令行运行批处理文件。
我们在这里主要讨论第二种——用户界面的方式。
2.1建立ModelSim 库(物理库)这里要插入怎么创作的命令,进到哪个目录,运行什么命令?从主菜单里面:File->New->Library 点击Library 得到Create a New Library 对话框。
选择a new library and a logical mapping to it ,在Library Name 中输入work ,相应的在Library Physical Name 中也会出现物理名work 。
然后点击OK 确定。
此时在工作空间workspace 的Library 内会出现一个名为work 的库。
Modelsim新手入门仿真教程1.打开modelsim软件,新建一个library。
2.library命名3.新建一个工程。
3.出现下面界面,点击close。
4.新建一个verilog文件键入主程序。
下面以二分之一分频器为例。
文件代码:module half_clk(reset,clk_in,clk_out); input clk_in,reset;output clk_out;reg clk_out;always@(negedge clk_in)beginif(!reset)clk_out=0;elseclk_out=~clk_out;endendmodule编辑完成后,点击保存。
文件名要与module后面的名称相同。
5.再新建一个测试文件,步骤同上面新建的主程序文件,文件名后缀改为.vt程序代码如下:`timescale 1ns/100ps`define clk_cycle 50module top;reg clk,reset;wire clk_out;always #`clk_cycle clk=~clk;initialbeginclk=0;reset=1;#10 reset=0;#110 reset=1;#100000 $stop;endhalf_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out));Endmodule6.添加文件,编译文件先右键点击左边空白处,选择add to project→existing File选择刚刚新建的两个文件。
按ctrl键可以同时选择两个,选择打开,下一步点击ok7选中其中一个,右键,选择complie→complie all出现两个勾,说明编译通过。
出现×,说明文件编译出错,双击×,可以查看错误。
8.终于可以仿真了选择simulate→start simulate。
选择刚刚新建的库里面的top,或者测试文件名称,左下角的enable optimization一定要去掉勾,有勾的画不会出来波形,一定要去掉勾!一定要去掉勾!一定要去掉勾!(本人也不清楚原因,都是初学者,嘻嘻)跳出界面,右键测试文件,选择如下图接下来,选择仿真,run→run all点击缩小键,如图,就可以看到波形啦到此结束!初学者,如有错误,欢迎指出。
使用Modelsim仿真FPGA工程步骤以及一些问题使用Modelsim仿真Altera FPGA工程(包括IP核)步骤以及问题汇总前提:计算机上已经安装QuartusII和Modelsim通用版,并且均已破解。
环境说明:所用的软件版本,QuartusII为9.0,Modelsim为6.5c。
本测试仅在WIN XP SP3上测试,对于VISTA/WIN7/LIN或者其他平台没做过测试。
但其他平台或者其他版本的过程应该都差不多。
其他:感谢teamo版主的破解和编译教程,以及后期对我的热心指导。
如果各位对整个步骤还有什么问题的华可以直接和我联系,我的论坛ID是lanphon,邮箱是*****************。
一、Altera库的编译(本部分基本上全部抄袭teamo版主的教程,懒得写了)1) 先到C:\modeltech_6.5目录下找到文件"modelsim.ini",将其属性改为可写(右键‐>属性)。
2) 启动modelsim se,选择【file】‐>【new】‐>【library】命令,在弹出的【create a newlibrary】窗口中将选项【create】设置为【a new library and a logical mapping to it】,在【libryr name】和【library library】窗口中将选项【create】设置为【a new library and a logical mapping to it】,在【libryr name】和【library physical name】中键入所要创建库名字,如Altera ,此时在主窗口中已多了一个Altera 项。
注:这个过程实质上想当于在modelsim 主窗口中的脚本区域中输入了vlib和vmap命令。
3) 在workspace中的library中选中你健入的库名Altera,在主菜单中选【compile】→【compile…】命令。
modelsim 仿真波形默认高度Models i m是一种流行的模拟和仿真工具,可以用于设计和测试数字电路和模拟电路。
在使用这种工具时,通常需要设置仿真波形的高度以更好地观察和分析电路行为。
本文将介绍如何设置Modelsim仿真波形的默认高度。
第一步:打开Modelsim工具首先,您需要启动Modelsim工具。
您可以单击应用程序菜单中的快捷方式或在终端中运行相应的命令。
这将打开Modelsim的主窗口。
第二步:创建仿真电路接下来,您需要创建要仿真的电路。
您可以通过打开已有设计文件或创建一个新的设计文件来完成此操作。
如果您已经有一个现有的设计文件,请导入它并确保其中包含了所需的电路部件并已正确配置。
如果您要创建新的设计,则可以在Modelsim工具中打开新的设计文件或使用其他设计工具。
第三步:设置仿真波形高度一旦您的设计文件准备好,您就可以打开仿真波形以观察电路的行为。
默认情况下,Modelsim仿真波形的高度是自适应的,以适应波形中数据的最大振幅。
但是,您可以手动设置波形的高度,以更好地观察波形数据并进行更精细的分析。
要手动设置仿真波形高度,请执行以下步骤:1. 在仿真波形窗口中单击“设置”按钮,该按钮位于工具栏的右上角。
2. 在“波形设置”对话框中,选择您要更改的波形。
3. 在“显示”选项卡上,找到“高度”选项,并可以选择“最小值”或“值”两种方式。
若选择“最小值”,则波形窗口的高度将自动调整以适应波形数据的最小振幅。
若选择“值”,则您可以手动输入您希望设置的高度值。
4. 设置波形高度后,单击“确定”以保存更改。
注意:由于Modelsim工具的版本不同,一些操作可能会有所不同。
如果您遇到困难,请参考Modelsim工具的用户手册或联系工具供应商进行支持。
结论:通过以上步骤,您可以手动设置Modelsim仿真波形的默认高度,并能更好地观察电路数据图形。
这些设置可能会根据您要仿真的电路或个人首选项而有所不同。
利用Quartus5.0实现功能仿真1)打开一个工程文件。
2)打开Settings设置栏,选择Fitting Settings下的Simulator栏。
在右边出现的设置栏中将“Simulation Mode”的下拉菜单选择“Functional”,即可以实现软件下的功能仿真。
(下拉菜单中有“Functional”、“Timing”和“Timing using Fast Timing Model”,分别代表可以在Quartus软件下实现功能仿真,时序仿真和快速时序仿真。
最后一项一般不选,如果在Settings->Timing Requirement->More Settings下“Report Combined Fast/Slow Timing”选项设为“On”,就可以选择最后一项。
编译的报告里也会分别列出最快和最慢的时序报告。
)3)选择“Processing”菜单下的“Generate Functional Simulation Netlist”命令,否则将无法启动仿真。
4)新建一个波形仿真文件,文件后缀名为.vwf。
选择File菜单下的New->Other Files->VectorWaveform File。
如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。
波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。
将新建的波形仿真文件保存下来。
5)将需要仿真的信号加入波形编辑窗口。
在列表区任一位置双击或者点击右键选择“InsertNode or Bus…”,弹出的对话框点击“Node Finder”按钮。
在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。
如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。
FPGA系统设计的仿真验证之:ModelSim的仿真流程7.3 的流程7.3.1 ModelSim的安装ModelSim的最新版本可以从互连网上免费得到,需要购买的只是License文件。
ModelSim的下载地址为http:///。
打开网站页面后可以点击Download,用户填写完一张表格以后可以得到一个小时的下载时光。
获得License的办法有无数种。
首先可以在线申请License文件,选取“开头→程序→ModelSim SE 5.8c →Submit License Request”,会打开一个网页,填写信息以后点击Submit就可以在线申请License了。
另外也可以点击“开头→程序→Modelsim SE 5.8c→License Request Instructions”会打开一个文本文档,按要求填写好后发到指定邮箱即可。
在得到License以后点击“开头→程序→Modelsim SE 5.8c→License Wizard”,在弹出的对话框里面指定License文件即可。
7.3.2 用法ModelSim举行功能仿真用法ModelSim对设计的HDL程序举行仿真分为功能仿真和时序仿真两种。
本节将以一个详细的实例讲解如何用法ModelSim对HDL工程举行功能仿真。
时序仿真的详细内容将在7.4节详细介绍。
这里我们用法的例子是一个分频的设计。
所谓分频电路是将较高频率的时钟分频,得到较低频率的时钟。
分频电路的用法较为广泛。
例如,我们要编写一个显示时光的电路就需要一个分频器,将晶振的频率分频得到1Hz的时钟信号。
分频有几种办法。
对于较为规章的分频,如2分频、4分频、8分频等,可以调用或者ISE本身的库函数来实现。
对于较不规章的分频,我们也有两种办法:一种是利用计数器的某一第1页共4页。
Modelsim脚本仿真教程
以计数器C OUNTER为例
第1步:建立工程文件夹
在电脑中任意位置建立一个空文件夹(路径不能包含中文),把设计源代码.v文件,仿真激励文件.v,仿真脚本文件.do拷贝到该目录下。
打开Modelsim软件,点击菜单项File->Change Directory..,选择刚才建立的文件夹作为当前工程路径。
第2步:执行脚本文件
在Transcript栏中输入“do sim.do”,按回车键,执行仿真脚本文件。
如果Modelsim软件中没有出现Transcript栏,只需在菜单项选择View->Transcript即可。
第3步:在Wave窗口中观察波形
第4步:结束仿真
在菜单项选择Simulate->End Simulation即可结束当前仿真。
如若波形有错,则修改源代码或激励文件后重新执行第2步。
附件:。
modelsim实验-计数器仿真实验步骤————————————————————————————————作者:————————————————————————————————日期:一、新建工程a)如图,打开modelsim后点击File→New→Project...b)弹出如下图对话框,输入Project Name后,点击OKc)弹出如下对话框,点击Close二、在建好的工程中添加Verilog程序文件并进行编译a)新建好的空工程如下图,在空白处右击,选择Add to Project New File...b)弹出如下对话框,将type选项改为Verilog,然后输入名称,点击OKc)双击新建好的文件,在右侧的编辑框里输入程序d)输入完成后,点击左上角工具栏的保存按钮e)同样的步骤建立一个测试文件,然后在空白处右击选择Compile Compile All,进行编译f)编译成功后,会出现如下变化,否则请检查程序重新编译三、进行仿真a)编译成功后,点击下方Library选项,在展开的work文件夹中右击刚才建立的测试文件,选择Simulateb)此时弹出如下sim选项界面,在任意处右击选择Add to→Wave→All items in regionc)添加波形完成后,会弹出右侧如下波形框,将上方工具栏中的时间长度100ps改为1ms,然后点击傍边的run工具按钮d)点击运行之后,出现如下波形图,通过调节工具栏上的放大、缩小、适应屏幕的按钮,以及拖动下方的进度条,就会出现合适的波形视图,如下PS: 鼠标右击波形框中的测试文件名,选择Radix Unsigned,可以将二进制改为十进制,如下图,可以看到,计数器随着时钟频率的上升沿,开始计数四、附录Verilog计数器实验源程序module counter3b(clk,cnt); //counter3b.v input clk;output reg[2:0]cnt=3'b0;always @(posedge clk) begincnt<=cnt+1;endendmodule`timescale 1 ns/10 ps // counter3b_tb module counter3b_tb();reg clk=0;wire [2:0]cnt;always #100 clk=~clk;counter3b i1(.clk(clk),.cnt(cnt)); endmodule。
modelsim仿真流程ModelSim6.4仿真的操作流程1. ModelSim简介ModelSim是Mentor公司的产品。
在业界,它被认为是最优秀的HDL语言仿真软件。
它提供友好的仿真环境,是支持VHDL和Verilog混合仿真的仿真器。
它采用直接优化的编译技术、T cl/Tk技术和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核。
其个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。
其主要特点可概括如下:RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;VHDL和Verilog混合仿真;源代码模版、项目管理;集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal Spy、虚拟对象(Virtual Object)、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;C和T cl/Tk接口,C调试;对SystemC的直接支持和HDL任意混合;支持SystemVerilog的设计功能;对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;ASIC Sign off。
ModelSim分几种不同的版本:它们分别是SE、PE、LE和OEM,其中SE(System Edition)是最高级的版本,PE是版本,LE是版本,而集成在Actel、Atmel、Altera、Xilinx以及Lattice 等FPGA厂商设计工具中的均是其OEM(Original Equipment Manufacture,原始设备生产商)版本。
SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSim XE为例,对于代码少于40000行的设计,ModelSim SE 比ModelSim XE要快10倍;对于代码超过40000行的设计,ModelSim SE要比ModelSim XE快近40倍。
一、为modelsim生成3个库。
首先,介绍一下这三个库。
Simprim_ver:用于布局布线后的仿真。
Unisim_ver :如果要做综合后的仿真,还要编译这个库。
Xilinxcorelib_ver:如果设计中调用了CoreGen产生的核,则还需要编译这个库。
我们要为modelsim生成的是标准库。
所谓的标准库就是modelsim运行后,会自动加载的库。
不过这方面我还不是很肯定。
因为我在后仿真时,还是要为仿真指定库的路径,不然modelsim找不到。
第一步:在modelsim环境下,新建工程,工程的路径与你想把库存储的路径一致。
第二步:新建库,库名起作simprim_ver。
我们首先就是要建的就是这个库。
第三步:在modelsim的命令栏上,打下如下命令:vlog -work simprim_verd:/Xilinx/verilog/src/simprims/*.v其中的d:/Xilinx是我的Xilinx的安装路径,你把这个改成你的就行了。
以下凡是要根据自己系统环境改变的内容,我都会用绿色标出,并加一个下划线。
编译完之后,你会发现你的工程文件夹下出现了一个simprim文件夹,里面又有很多个文件夹。
这些就是我们要的库了。
第四步:按照上面的方法,编译另外两个库。
所需要键入的命令分别如下:vlog -work unisim_ver d:/Xilinx/verilog/src/unisims/*.vvlog -work xilinxcorelib_verd:/Xilinx/verilog/src/XilinxCoreLib/*.v如果你想要编译的是VHDL的库,你需要建立的库分别是simprim,unisim和xilinxcorelib。
这三个库所需要的modelsim指令分别如下:vcom –work simprim d:Xilinx/VHDL/src/simprims/simprim_Vcomponents.vhd vcom –work simprim d:Xilinx/VHDL/src/simprims/simprim_Vpackage.vhd vcom –work simprim d:Xilinx/VHDL/src/simprims/simprim_VITAL.vhdvcom –work unisim d:Xilinx/VHDL/src/unisims/unisim_VCOMP.vhdvcom –work unisim d:Xilinx/VHDL/src/unisims/unisim_VPKG.vhdvcom –work unisim d:Xilinx/VHDL/src/unisims/unisim_VITAL.vhdvcom –work unisim d:Xilinx/VHDL/src/unisims/unisim_VCFG4K.vhdvcom –work xilinxcorelib d:Xilinx/VHDL/src/ XilinxCoreLib/*.vhd关于VHDL方面,我没有实践过,如果有误的话,改一下应该问题也不大。
ModelSim仿真⼊门ModelSim仿真⼊门之⼀:软件介绍编写这个教程之前,为了让不同⽔平阶段的⼈都能阅读,我尽量做到了零基础⼊门这个⽬标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度。
如果您是FPGA开发⽅⾯的初学者,那么这个教程⼀定能够帮助你在仿真技术上越过新⼈的台阶;如果您是FPGA开发的⽼⼿,这篇⽂档也并⾮对您没有帮助,您可以把教程发给其他刚⼊门的同事,免去您亲⾃上阵指导的⿇烦,把主要的精⼒放在更有价值的地⽅。
⼀、FPGA设计仿真验证简介严格来讲,FPGA设计验证包括功能仿真、时序仿真和电路验证,它们分别对应整个开发流程的每⼀个步骤。
仿真是指使⽤设计软件包对已实现的设计进⾏完整的测试,并模拟实际物理环境下的⼯作情况。
功能仿真是指仅对逻辑功能进⾏模拟测试,以了解其实现的功能是否满⾜原设计的要求,仿真过程没有加⼊时序信息,不涉及具体器件的硬件特性,如延时特性等,因此⼜叫前仿真,它是对HDL硬件描述语⾔的功能实现情况进⾏仿真,以确保HDL语⾔描述能够满⾜设计者的最初意图。
时序仿真则是在HDL可以满⾜设计者功能要求的基础上,在布局布线后,提取有关的器件延迟、连线延时等时序参数信息,并在此基础上进⾏的仿真,也成为后仿真,它是接近于器件真实运⾏状态的⼀种仿真。
⼆、仿真软件ModelSim及其应⽤HDL的仿真软件有很多种,如VCS、VSS、NC-Verilog、NC-VHDL、ModelSim等,对于开发FPGA来说,⼀般是使⽤FPGA⼚家提供的集成开发环境,他们都有⾃⼰的仿真器,如Xilinx公司的ISE,Altera公司的Quartus II等,但是这些⼚家开发的仿真器的仿真功能往往⽐不上专业的EDA公司的仿真⼯具,如ModelSim AE(Altera Edition)、ModelSim XE(Xilinx Edition)等。
Quartus II设有第三⽅仿真⼯具的接⼝,可以直接调⽤其他EDA公司的仿真⼯具,这极⼤地提⾼了EDA设计的⽔平和质量。
Verilog-HDL仿真软件ModelSim 的基本操作时间:2006-10-24 来源: 作者:常晓明点击:2690 字体大小:【大中小】Verilog-HDL与CPLD/FPGA设计应用讲座第 4 讲Verilog-HDL仿真软件的基本操作4.1 建立新的工程文件4.2 一个最简单的仿真实例在本讲以Xilinx WebPACK 4.1 ModelSim XE Starter为例,说明仿真软件的基本操作。
4.1 建立新的工程文件启动Xilinx WebPACK 4.1 ModelSim XE Starter后,选中【File】菜单中的【New】菜单项,然后选择【Project】选项。
如图1所示。
图1 建立一个新的工程文件单击后,在弹出的对话框内适当填写工程文件名,如图2所示。
单击【OK】后,一个新的工程文件就建立了。
图2 工程文件名称及位置的填写4.2一个最简单的仿真实例[To top]下面,用一个"与"运算的仿真应用例子来说明ModelSim XE仿真软件的操作过程。
通过这个最简单的例子,可以基本掌握该软件的使用方法。
编辑如下两个文件/* exp1-1.v */module AND2 ( A, B, OUT );input A, B;output OUT;and U1 ( OUT, A, B );endmodule/* fig1-9.tst */`timescale 1ns/1nsmodule AND2_TEST;reg A, B;wire OUT;AND2 AND2 (A, B, OUT);initial beginA = 0;B = 0;#100 A = 1;#100 A = 0; B = 1;#100 A = 1;#200 $finish;endendmodule第一个是与门逻辑的Verilog-HDL描述,第二个是相应的顶层模块(测试程序),将这两个文件拷贝到test的目录下,如图3所示。
使用ModelSim模擬驗證HDL code
1.在模擬前先準備好我們要模擬的電路檔案(Verilog HDL,TestBench,…)
2. 打開ModelSim,新建一個Project,鍵入Project name 按OK。
此處我們的library name 為default library name “work”不必更改。
3.然後再加入我們所要模擬的電路檔案(若尚未準備,可開啟新檔案再將code 鍵入)選Add Existing File,將我們已編輯好的檔案加入。
將我們所需要的檔案加入,按Browse選擇我們所需檔案count.v,
count_test.vt),按下OK。
再將先前所開啟的增加檔案的視窗關閉,按close。
4.按下compile all。
Compile成功沒有顯示出錯誤訊息, 則開始模擬波形
5.按下Simulation, 選擇檔案所在的Library (work), 點選TestBench的Module
Name t_Gap_finder 按OK
6.承接上步驟將會跳出以下視窗,若要將所有訊號加入波型中觀察則選擇在
testbench的module name: count_tst按滑鼠右鍵選擇→ Add →
Add to Wave。
7.在波型畫面按下Run All開始模擬
跑完後會跳出下面視窗選擇否則可觀察模擬波形,若按下是則會將ModelSim關閉。
8.觀察波形圖是否與功能符合,若與設計不符則修改設計並重複執行Step 4到
Step 8
Testbench語法
`timescale 1 ps/ 1 ps 前面的1ps代表程式中最小的時間單位
後面的1ps代表運算的精準度
module count_tst(); testbench命名括號內不用加I/O
reg clk; 將Input設為reg
reg [7:0] in;
reg reset;
reg start;
reg load;
wire [3:0] num; Output設為wire
count i1 ( 將要測試的HDL名字寫進來,il 只是一個隨便的命名
.clk(clk), 將HDL的port和testbench的port做連接
.in(in),
.num(num),
.reset(reset),
.start(start),
.load(load)
);
initial clk=0; initial為只執行一次的訊號,clk訊號一開始為0 initial #150000 $finish; 經過150ns結束模擬
always always用在重複性的訊號clock就是一種begin 設定每5ns clk訊號反向
#5000 clk=!clk;
end
initial 設定in訊號為01101101
begin
in = 8'b01101101;
end
initial 設定reset訊號一開始為0,經過10ns為1,begin 再經過10ns又變為0
reset = 1'b0;
reset = #10000 1'b1;
reset = #10000 1'b0;
end
initial
begin
load= 1'b0;
load= #30000 1'b1;
load= #10000 1'b0;
end
initial
begin
start = 1'b0;
start = #60000 1'b1; end
endmodule。