veri HDL modeisim仿真:test bench文件编写
预编译指令:
verilog HDL预编译指令是以" ' "字符开头,而且不需要以";"结尾。
作用:指示在编译verilog hdl源代码前,需要执行哪些操作。
'timescale的使用方法:
verilog hdl的时序分析是以时间先后为顺序的,时延用'timescale定义的时间单位来表示。
一般一个代码文件就用一个'timescale预编译指令,一般放在文件的开头。
格式:'timescale 时间单位/时间精度
时间单位由数字+单位组成,其中数字只能是1,10,100.单位是s,ms,us,ns,ps,fs.
时间精度也是由数字与单位组成,后面的单位是前面单位的下一级。
test bench:
test bench与设计模块有相同点,也有不同点。
相同点是:他们都是verilog hdl代码;都是module开头,endmodule结束。
不同点是:该模块不需要输入输出端口的定义,但是要实例化被测试模块。(实例化类似于c语言的函数调用)
基本格式:
module module_tb
//变量声明
//产生相应激励信号
//实例化被测试模块
//监视输入输出信号
//保存被监视信号的信息
endmodule
备注:
模块名字一般为被测试模块模块名+_tb(test bench缩写)
产生相应的激励信号是根据被测试模块的功能产生完备的输入激励
实例化被测试模块是对被测试模块进行端口映射,把产生的输入激励连接到被测试模块的输入端口中,同时连接输出端口以便观察分析
引脚映射要求:
输入引脚映射用reg或者wire型变量;
输出与双向引脚只能用wire型变量。
**************************************************************************************************************************************************************************************************
自定义模块实例化格式:
module_name instance_name(port_connection);
module_name 是模块名
instance_name是实例化名
port_connection是端口连接关系
一种端口连接方式举例:
比如一个比较大小模块,其端口声明是:
module is_big(
input[7:0] a,
input[7:0] b,
output y
);
那么按端口名称连接的方式如下:
is_big u1_is_big(
.a(d_one),
.b(d_two),
.y(result)
);
**************************************************************************************************************************************************************************************************
initial初始化语句:
该语句在仿真运行中只运行一次,在仿真0时刻开始执行,执行完成后就挂起不再执行;同一个文件可以有多个initial初始化语句。
initial赋初值,initial语句只用于读取初始化存储文件的时候才被综合。
语法格式:
initial
【时序控制】顺序语句;
其中时序控制可以是以时间刻度为单位的时间延时数字,也可以是信号变量。
当顺序语句多于一条时,可以使用begin-end 字符对进行组织。
*************************************************************************************************************************************************************************************************
赋值延时:
赋值延时类似于硬件中的连线,是对赋值操作符右边的值送到赋值操作符左边的信号的连线进行延时建模。
格式:
#delay 赋值语句
#是延时符号,delay是时间单位的数量
************************************************************************************************************************************************************************************************
ok 学完上面的东西 就可以了看懂下面的程序了
`timescale 1ns / 1ps
module led_test_tb;
// Inputs
reg clk;
reg rst_n;
// Outputs
wire [:] led;
// Instantiate the Unit Under Test (UUT)
led_test uut (
.clk(clk),
.rst_n(rst_n),
.led(led)
);
initial begin
// Initialize Inputs
clk = ;
rst_n = ;
// Wait 100 ns for global reset to finish
#;
rst_n = ;
// Add stimulus here
#;
$stop;//仿真停止
end
always # clk = ~ clk; //产生 50MHz 时钟源 endmodule
veri HDL modeisim仿真:test bench文件编写的更多相关文章
- modelsim仿真中 do文件的写法技巧
网上的关于DO文件的编写好像资料不多,比较杂,所以本人总结一下常用的简单语法,方便大家查看.其实本人也刚接触DO文件没多久,有纰漏很正常,欢迎指正批评,互相学习.PS:写得有点乱 还有一个值得注意 ...
- 转:SYNOPSYS VCS Makefile文件编写与研究
SYNOPSYS VCS Makefile文件编写与研究 这个Makefile是synopsys提供的模板,看上去非常好用,你只要按部就班提供实际项目的参数就可以了.我们来看这个文件的头部说明:mak ...
- 网站 robots.txt 文件编写
网站 robots.txt 文件编写 Intro robots.txt 是网站根目录下的一个纯文本文件,在这个文件中网站管理者可以声明该网站中不想被robots访问的部分,或者指定搜索引擎只收录指定的 ...
- 【OpenWRT】【RT5350】【三】MakeFile文件编写规则和OpenWRT驱动开发步骤
一.Makefile文件编写 http://www.cnblogs.com/majiangjiang/articles/3218002.html 可以看下上面的博客,总结的比较全了,在此不再复述 二. ...
- linux库文件编写入门(笔记)
linux库文件的编写 作者: laomai地址: http://blog.csdn.net/laomai 本文主要参考了如下资料⑴hcj写的"Linux静态/动态链接库的创建和使用&quo ...
- VCS仿真生成fsdb文件(Verilog)
VCS仿真生成fsdb文件(Verilog) 一.环境 Linux 平台 csh环境 VCS 64bit Verdi3 二.开始仿真 1. 联合仿真环境配置 a.在testbench中加入如下语句: ...
- VCS仿真生成vpd文件(verilog)
VCS仿真生成vpd文件(verilog) 一.环境与文件 Linux平台 csh环境 VCS 64bit 代码文件请参考<一个简单的Verilog计数器模型> 二.开始仿真 1.com ...
- Linux Makefile文件编写详细步骤与实践
Linux Makefile文件编写详细步骤与实践 1.makefile概述 Windows环境下IDE会帮你完成makefile文件的编写,但在UNIX环境下你就必须自己写makefile了,会不会 ...
- Pdf File Writer 中文应用(PDF文件编写器C#类库)
该文由小居工作室(QQ:2482052910) 翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/ ...
随机推荐
- win7 64 位 + vs2015 + opencv3.2
下载OpenCv_3.2_vc14 链接:http://pan.baidu.com/s/1eSBu1NG 密码:104g 1.下载好后,进行解压到自己指定的目录: 解压后可以得到: 2.添加环境变量 ...
- scp: command not found
scp 不能用? [root@doc]# scp jdk-8u144-linux-x64.tar.gz root@10.10.10.17:/root/ root@10.10.10.17's passw ...
- Visual Studio资源汇总
Visual Studio 2015:http://tieba.baidu.com/p/3442930798Visual Studio 2013:http://tieba.baidu.com/p/34 ...
- myeclipse和jdk的安装和配置
一.安装JDK 1.下载得到jdk-8u11-windows-i586.1406279697.exe,直接双击运行安装,一直next就可以,默认是安装到系统盘下面Program Files,我这里装在 ...
- Mysql 日期加减
mysql表中有一些字段是显示日期的.因为各种需要,需要将它时间往后调整1年. mysql 日期增加一年的更新语句更新的语句如下: UPDATE table SET date = DATE_A ...
- 关于游览器 cookie的操作类
var Cookie = { getCookie : function(c_name,is){ var value = this._getCookie(c_name); if(JSON &&a ...
- toString() 数组转字符串
var monthNames = ['Jan', 'Feb', 'Mar', 'Apr']; var myVar = monthNames.toString(); // assigns "J ...
- indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1. let a = [2, 9, 7, 8, 9]; a.indexOf(2); // 0 a.indexOf ...
- Vue.js组件之间的调用
index.html: <div id="app"></div> 运行完index.html之后自动寻找运行main.js文件 main.js: impor ...
- Ubuntu输入命令无效的问题
https://blog.csdn.net/u014797226/article/details/80800550?utm_source=blogxgwz2 Ubuntu启动时输入密码后,一直停留在登 ...