预编译指令:

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文件编写的更多相关文章

  1. modelsim仿真中 do文件的写法技巧

    网上的关于DO文件的编写好像资料不多,比较杂,所以本人总结一下常用的简单语法,方便大家查看.其实本人也刚接触DO文件没多久,有纰漏很正常,欢迎指正批评,互相学习.PS:写得有点乱   还有一个值得注意 ...

  2. 转:SYNOPSYS VCS Makefile文件编写与研究

    SYNOPSYS VCS Makefile文件编写与研究 这个Makefile是synopsys提供的模板,看上去非常好用,你只要按部就班提供实际项目的参数就可以了.我们来看这个文件的头部说明:mak ...

  3. 网站 robots.txt 文件编写

    网站 robots.txt 文件编写 Intro robots.txt 是网站根目录下的一个纯文本文件,在这个文件中网站管理者可以声明该网站中不想被robots访问的部分,或者指定搜索引擎只收录指定的 ...

  4. 【OpenWRT】【RT5350】【三】MakeFile文件编写规则和OpenWRT驱动开发步骤

    一.Makefile文件编写 http://www.cnblogs.com/majiangjiang/articles/3218002.html 可以看下上面的博客,总结的比较全了,在此不再复述 二. ...

  5. linux库文件编写入门(笔记)

    linux库文件的编写 作者: laomai地址: http://blog.csdn.net/laomai 本文主要参考了如下资料⑴hcj写的"Linux静态/动态链接库的创建和使用&quo ...

  6. VCS仿真生成fsdb文件(Verilog)

    VCS仿真生成fsdb文件(Verilog) 一.环境 Linux 平台 csh环境 VCS 64bit Verdi3 二.开始仿真 1. 联合仿真环境配置 a.在testbench中加入如下语句: ...

  7. VCS仿真生成vpd文件(verilog)

    VCS仿真生成vpd文件(verilog) 一.环境与文件 Linux平台  csh环境 VCS 64bit 代码文件请参考<一个简单的Verilog计数器模型> 二.开始仿真 1.com ...

  8. Linux Makefile文件编写详细步骤与实践

    Linux Makefile文件编写详细步骤与实践 1.makefile概述 Windows环境下IDE会帮你完成makefile文件的编写,但在UNIX环境下你就必须自己写makefile了,会不会 ...

  9. Pdf File Writer 中文应用(PDF文件编写器C#类库)

    该文由小居工作室(QQ:2482052910)    翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/ ...

随机推荐

  1. web socket

    @ServerEndpoint("/my-websocket") @Component public class MyWebSocket { protected final Log ...

  2. DateTimeOffset DateTime

    DateTime只保存两部分信息:Ticks和KindTicks 一个Tick是100纳秒(1万Tick等于1毫秒)Ticks记录了从1/1/0001 12:00 AM到现在经过了多少100纳秒.Ki ...

  3. JEECG 上传插件升级-代码生成器

    前言: 现有的uploadify上传是基于swf的,随着H5的普及,flash即将退出历史舞台,JEECG本着与时俱进的原则,将全面升级JEECG系统中的上传功能,采用新式上传插件plupload,此 ...

  4. 尚硅谷springboot学习27-使用外置servlet容器

    嵌入式Servlet容器:应用打成可执行的jar ​ 优点:简单.便携: ​ 缺点:默认不支持JSP.优化定制比较复杂(使用定制器[ServerProperties.自定义EmbeddedServle ...

  5. cadence 17.2 安装破解

    安装包都在gaobo百度云/工具/开发工具  或者    下载链接 进去pcb edit 可能会提示 licese什么的,忽略就可以了.

  6. Codeforces Round #554 (Div. 2)-C(gcd应用)

    题目链接:https://codeforces.com/contest/1152/problem/C 题意:给定a,b(<1e9).求使得lcm(a+k,b+k)最小的k,若有多个k,求最小的k ...

  7. Zabbix告警脚本-邮件

    [root@iot-svndata02 bin]# cat zbmail.sh #!/bin/bash to_email_address="$1" # 收件人Email地址,zab ...

  8. pipeline-安全测试

    代码安全检查 需要安装SonarQube(版本6.7,安装了Findbugs插件) MySQL >=5.6,笔者安装的是MySQL 5.7版本 Jenkins需要安装下列插件: SonarQub ...

  9. yum安装命令:遇到的问题报错如下: File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: 通过看报错可以了解到是使用了python2的语法,所以了解到当前yum使用的Python2,因为我单独安装了python3,且python3设置为默认版本了,所以导致语法问题 解决方法: 使用python2.6 yum install

    1.安装zip yum install -y unzip zip 2.安装lrszs yum -y install lrzsz 3.安装scp 遇到下面的问题: 结果提示: No package sc ...

  10. Linux驱动之按键驱动编写(中断方式)

    在Linux驱动之按键驱动编写(查询方式)已经写了一个查询方式的按键驱动,但是查询方式太占用CPU,接下来利用中断方式编写一个驱动程序,使得CPU占有率降低,在按键空闲时调用read系统调用的进程可以 ...