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/ ...
随机推荐
- mysql5.7.18.1修改用户密码报错ERROR 1054 (42S22): Unknown column 'password' in 'field list'解决办法
本意向修改一个用户的密码,网上搜到的命令为如下 mysql> update user set password=password(“新密码”) where user=”用户名”; 执行后报错 E ...
- !!!常用SVG代码
http://www.w3school.com.cn/svg/svg_examples.asp svg实例 http://www.w3school.com.cn/svg/svg_reference.a ...
- EasyARM-iMX283A的U盘使用教程
在编写代码前我们先来EasyARM-iMX283A对U盘使用的操作. 我们先拿一个U盘进行格式化 在U盘中写一些文件保存后,弹出U盘. 将U盘插入EasyARM-iMX283A的开发板. [注意]Ea ...
- linux 杀死进程kill 等用法
kill -9 $(ps -ef | grep process_name | grep -v grep | awk '{print $2}') 稍微解释一下: awk '{print $2} ...
- 为docker私有registry配置nginx反向代理
公司的Docker私有registry已经搭建好了,用官方的registry image很容易就搭建好了.现在就是要用nginx的反向代理把它放出来,以便在外网可以访问. 我的上一篇blog 讲了如何 ...
- MFC笔记5
1.MessageBox() 引用自(http://www.douban.com/note/40199603/) 一 函数原型及参数 function MessageBox(h ...
- linux下redis4.0.2集群部署(利用Ruby脚本命令)
一.原生命令方式和Ruby脚本方式区别 利用Ruby脚本部署和用原生命令部署,节点准备的步骤都是一样的,节点启动后的握手,以及主从.槽分配,利用Ruby脚本一步就能完成,利用原生命令需要一步一步地执行 ...
- Python基础-python数据类型(四)
python数据类型 在python中,变量就是变量,它没有类型,我们所说的类型是变量所指的内存中对象的类型. python中的数据类型: 1.数字 python中没有专门定义常量的方式,通常使用大写 ...
- 560. Subarray Sum Equals K 求和为k的子数组个数
[抄题]: Given an array of integers and an integer k, you need to find the total number of continuous s ...
- [leetcode]78. Subsets数组子集
Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solut ...