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/ ...
随机推荐
- Unable to complete the scan for annotations for web application [/wrs] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies.
tomcat启动报错:Jul 20, 2018 11:48:37 AM org.apache.catalina.core.ContainerBase addChildInternalSEVERE: C ...
- python大法好—模块 续
1.sys模块 sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传递参数. sys.exit([arg]): 程序中间的退出,arg=0为正常退出. sys.getdefaulten ...
- 2018SDIBT_国庆个人第七场
A - Complete the Word(暴力) Description ZS the Coder loves to read the dictionary. He thinks that a wo ...
- ceph结构详解
引言 那么问题来了,把一份数据存到一群Server中分几步? Ceph的答案是:两步. 计算PG 计算OSD 计算PG 首先,要明确Ceph的一个规定:在Ceph中,一切皆对象. 不论是视频,文本,照 ...
- 学习linux—— VMware 安装 ubantu 18 如何连接wifi
1 适配器设置 修改本地连接 2 修改VMware的虚拟网络编辑器 3 虚拟机设置
- window.innerWidth和document.body.clientWidth的区别
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 大数据入门到精通14--hive 对 字符串的操作
一.基本操作 concat(string,string,string)concat_ws(string,string,string)select customer_id,concat_ws(" ...
- 大数据入门到精通10--spark rdd groupbykey的使用
//groupbykey 一.准备数据val flights=sc.textFile("data/Flights/flights.csv")val sampleFlights=sc ...
- vm ware虚拟机ping不通解决办法
本人是linux菜鸟,在使用vm ware的时候,在多台电脑上安装了多个虚拟机,这多台电脑是同一网段的,并且能够互相ping通,但是vm ware下的虚拟机就无法ping通 通过自己的各种才是,发现在 ...
- [leetcode]50. Pow(x, n)求幂
Implement pow(x, n), which calculates x raised to the power n (xn). Example 1: Input: 2.00000, 10 Ou ...