Verilog for Verification

1.引言

  • Testbench也是一个模块(module...endmodule)

  • Testbench没有输入和输出,因为它是一个闭环,自己产生激励,灌给module,module输出响应,testbench会捕捉响应,进行比较,自己在自己内部形成闭环

  • 完成对待测设计的例化,测试代码的封装,提供测试激励,收集测试结果

  • 无需综合,行为级描述优先

module module_name_tb;
//测试代码
endmodule

2.变量声明

  • 给待测设计的输入端口提供激励
  • 通过待测实际的输出端口收集激励
  • 提供激励的信号:reg类型信号进行声明,便于在initial和always中进行赋值
  • 收集激励的信号:reg或wire,多数情况下使用wire
  • 也可以使用logic变量进行声明

// 名称关联的方式
apd_slave U_apb_slave(
.pclk (pclk),
.prestn (prestn),
.paddr (paddr),
.psel (psel),
.pwrite (pwrite),
.penable (penable),
.pwdata (pwdata),
.prdata (prdata)
);

3.激励

3.1 时钟产生

  • forever语句,必须写在initial中
  • forever后面执行多条语句,加begin end
// clock generate
initial begin
pclk = 0;
forever
begin
#10 pclk = ~pclk; // 时钟周期是20个时间单位
end

3.2 reset信号

  • 低电平有效
  • 在某个时间点将reset置为0
reg rst_n;
initial begin
rst_n = 1'b0; // 复位信号置为低电平
#45;
rst_n = 1'b1; // 延迟45个时间单位之后,将复位撤销
end

3.3 产生激励

  • wait(条件表达式),条件表达式为真的时候解除等待
initial begin
......
wait(rst_n = 1'b1);
wait(sim_start)
......
end
  • @(posegde clk) ...
initial
begin
.....
wait(rst_n = 1'b1);
wait(sim_start);
@(posedge pclk);
a = 1'b1;
end initial
begin
.....
wait(rst_n = 1'b1);
wait(sim_start);
@(posedge pclk);
#3; // 寄存器d到q端的延迟
a = 1'b1;
end
  • function是不能有延迟信息语句的
  • task是可以具有延迟信息语句的
  • 将读写操作封装成task
task apb_write(input [31:0] addr,input [31:0] wdata);
begin end
endtask task apb_read(input [31:0] addr,output [31:0] rdata);
begin end
endtask reg [31:0] memory [1024:0] FILE0 = $open("block90");
for(address=32'h0,address<32'h80;address=address+1)
$fwriteh(FILE0,32'hFFFFFFFF,"\n")
$fclose(FILE0) $readmemh("block0",memory);

3.4 dump 波形

`ifdef VPD_ON
initial begin
$vcdpluson();
end
`endif

3.5 显示激励

3.6 结束仿真

3.7 预编译

3.8 include



4.实例

4.1 设计代码

4.2 验证流程

4.3 APB Slave testbench

  • testbench中输入定义为reg,输出定义为wire

  • 例化模块

  • 产生时钟和复位

  • 产生激励,产生激励的时候要给模块的输入一定的初始值,不给初始值就会产生x态



















14-Verilog for Verification的更多相关文章

  1. Team Foundation Server 2013 with Update 3 Install LOG

    [Info   @10:14:58.155] ====================================================================[Info   @ ...

  2. SpringBoot+mybatis:报错Fri Oct 19 14:29:24 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requiremen

    报错:Fri Oct 19 14:29:24 CST 2018 WARN: Establishing SSL connection without server's identity verifica ...

  3. Xilinx ISE 14.1利用Verilog产生clock

    <一>建立如下的Verilog Module module myClock( input clock ); endmodule <二>建立 Verilog Test Fixtu ...

  4. Verilog Tips and Interview Questions

    Verilog Interiew Quetions Collection :  What is the difference between $display and $monitor and $wr ...

  5. 【设计经验】5、Verilog对数据进行四舍五入(round)与饱和(saturation)截位

    一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件:Vivado2015.4.2  Matlab2016a 仿真工具:Vivado自带仿真器 二.引言 在利用 ...

  6. Verilog对数据进行四舍五入(round)与饱和(saturation)截位

    转自https://www.cnblogs.com/liujinggang/p/10549095.html 一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件 ...

  7. verilog FAQ(zz)

    1. What is the race condition in verilog? Ans :The situation when two expressions are allowed to exe ...

  8. system verilog的一些总结(从其他博客复制来的)

    转载自 http://blog.sina.com.cn/s/blog_e7fec2630101f5t9.html SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE 136 ...

  9. FPGA Verilog HDL 系列实例--------步进电机驱动控制

    [连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我 ...

  10. Verilog语法基础讲解之参数化设计

    Verilog语法基础讲解之参数化设计   在Verilog语法中,可以实现参数化设计.所谓参数化设计,就是在一个功能模块中,对于一个常量,其值在不同的应用场合需要设置为不同的置,则将此值在设计时使用 ...

随机推荐

  1. windows10更新文件存在哪里

    windows10更新文件存在哪里windows10更新文件存在哪里 电脑系统每次更新都会有相应的更新文件,很多win10用户都想知道电脑更新文件存在哪里,其实这个很好找的. 你先双击此电脑进入,然后 ...

  2. 容器处于`Pending`状态Warning FailedScheduling <unknown> default-scheduler 0/10 nodes are available

    Warning FailedScheduling default-scheduler 0/10 nodes are available: 1 node(s) had taint {agreeml: a ...

  3. GOF23--23种设计模式(二)

    一.建造者模式 建造者模式也是属于建造型模式,它提供了一种创建对象的最佳方式 定义:将一个复杂的对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示 主要作用:在用户不知道对象的构建细节的情 ...

  4. 欢迎使用CSDN-markdown编辑器测试

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  5. 拖拽功能实现vue

    1.按钮 <el-button @mousedown="down" @touchstart="down" @mousemove="move&qu ...

  6. 共探AI大模型时代下的挑战与机遇,华为云HCDE与大模型专家面对面

    摘要:近日,华为开发者大会2023(cloud)"开发者生态创新发展圆桌会议"在东莞华为溪流背坡村成功举办. 2023年7月8日,华为开发者大会2023(cloud)"开 ...

  7. 华为云GaussDB圈层活动走进香港,以技术创新构筑金融政企数智发展基石

    摘要:近日,华为云GaussDB圈层活动在中国·香港如期举办,活动聚集了22家香港金融政企客户和合作伙伴. 本文分享自华为云社区<华为云GaussDB圈层活动走进香港,赋能金融政企数字化转型&g ...

  8. 使用LiteOS Studio图形化查看LiteOS在STM32上运行的奥秘

    摘要:本文带来基于LiteOS一站式开发工具LiteOS Studio,通过单步调试,来动态分析LiteOS的启动流程. 编者按:在LiteOS大揭秘系列,我们和读者们分享了<LiteOS是怎么 ...

  9. 云小课|ModelArts Pro 视觉套件:零代码构建视觉AI应用

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:ModelArts ...

  10. 下载安装Ipa Guard

    ​ 可以前往ipaguard工具官网下载,工具是免费下载,免费体验使用的.下载地址是https://www.ipaguard.com. 下载后解压工具便ok了,工具是绿色软件,无需其他安装流程.双击I ...