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/ ...
随机推荐
- C++学习基础十六-- 函数学习笔记
C++ Primer 第七章-函数学习笔记 一步一个脚印.循序渐进的学习. 一.参数传递 每次调用函数时,都会重新创建函数所有的形参,此时所传递的实参将会初始化对应的形参. 「如果形参是非引用类型,则 ...
- idea搭spring boot项目
Spring Boot是由Pivotal团队提供的全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程.它主要推崇的是'消灭配置’,实现零配置. 那么,如何在idea中创建一个spri ...
- leetcode309
使用动态规划,下面的代码可以通过210个测试,最后1个(第211个)会超时.说明思路是正确的,但是其中有一些是无效的计算. class Solution { public: int maxProfit ...
- leetcode560
public class Solution { public int SubarraySum(int[] nums, int k) { , result = ; Dictionary<int, ...
- 30个php操作redis常用方法代码例子(转载)
1.connect 描述:实例连接到一个Redis.参数:host: string,port: int返回值:BOOL 成功返回:TRUE;失败返回:FALSE示例: $redis = new red ...
- ArcGIS自定义工具箱-清空工作空间
ArcGIS自定义工具箱-清空工作空间 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:删除工作空间里的要素类,栅格和独立表 使用方法: 例如"C:\ ...
- python 网络编程 tcp和udp 协议
1. 网络通信协议 osi七层,tcp\ip五层 tcp\ip五层 arp协议:通过IP地址找到mac地址 2.tcp和udp的区别 tcp协议:面向连接,消息可靠,相对udp来讲,传输速度慢,消息是 ...
- 【Django】数据迁移问题
最近发现,Django在修改models之后重新生成迁移文件(这里可以生成),再进行数据库迁移的时候老是出错,查询数据库时老是找不到表格或者字段. 尝试过重新新建项目,新建一个同名APP,然后mode ...
- Linux系统minicom命令详解
minicom 功能说明:调制解调器通信程序 语 法:minicom [-8lmMostz][-a<on或0ff>][-c<on或off>][-C<取文件>][-d ...
- Sublime Text3快捷键大全
选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数 ...