testbench编写流程的简单举例
本文首发于公众号【木叶芯】,版权所有,禁止转载。
如需转载,请在评论区留言或私信申请,经同意后可转载,否则属于侵权行为。
作者昵称:城外南风起
原文链接:testbench编写流程的简单举例
————————————————
目录
- 顶层结构
- 生成clk_tb
- 生成resetb
- 初始化变量
- DUT例化
- 写任务
- 读任务
- 测试实现
- 仿真结果
- 参考文献
顶层结构
将模块device_regs_withfunction作为DUT编写一个简单的testbench。该模块的功能是对一组寄存器进行读写操作。下图为测试平台的顶层结构。任务reg_write产生和寄存器写操作相关的控制信号,任务reg_read产生和寄存器读操作相关的控制信号,reg_read还可以将期望读出的结果与实际读出的数据进行比较。如果二者不匹配,它将给出一条错误消息。
`timescale 1ns/10ps
module testbench_top ();//no inputs or outputs here
reg [3:0] address_tb;
reg [7:OJ wrdata_tb;
reg write_en_tb, read_en_tb;
reg clk_tb, resetb;
wire [7:0] rddata_tb;
//**************************************************************
parameter CLKTB_HALF_PERIOD = 5; //100MHz clock
parameter RST_DEASSERT_DLY = 100;
parameter REG0_OFFSET = 4'b0000, REGl_OFFSET = 4'b0001, REG2_OFFSET = 4'b0010, REG3_OFfSET = 4'b0011;
生成clk_tb
生成resetb
初始化变量
DUT例化
写任务
写任务用于写操作,它驱动相应的地址,写入数据和写使能信号write_en。DUT接收这些信号,执行实际的写操作。我们可以通过写任务来给出需要的写入地址和数据。在后面的testbench中,我们将调用该任务。下面是写任务的例子。
读任务
此任务用于读操作。读任务将读出寄存器的地址和读使能信号read_en传递给DUT。DUT实现实际的读操作,并将对应的数据输出给testbench。读任务将期望的读出数据与实际读出的数据进行比较,并将比较结果显示出来。下面是读任务的例子。
测试实现
现在,我们将使用上面的任务将不同的数据写入寄存器,然后再将寄存器中的数据读取出来。在testbench中.我们写入的是不同的常数,我们还可以产生随机数或者从文本文件中读出数据并写入DUT中,此时可以进行更为全面和细致的仿真验证,举例如下。
仿真结果
data matches: expected_data = a5, actual data = a5
data matches: expected_data = a6, actual data = a6
data matches: expected_data = a7, actual data = a7
data matches: expected_data = a8. actual data = a8
参考文献
[1] (美),Kishore,Mishra著.Verilog高级数字系统设计技术与实例分析[M].电子工业出版社,2018.
————————————————
感谢您的阅读,欢迎 点赞 / 评论 / 收藏 / 打赏 ~
我是城外南风起,欢迎关注我的公众号【木叶芯】。
以下链接可以快速搜索公众号内的文章:号内搜
木叶飞舞之处,火亦生生不息。
testbench编写流程的简单举例相关推荐
- Java编程技巧之单元测试用例编写流程
简介: 立足于"如何来编写单元测试用例",让大家"有章可循",快速编写出单元测试用例. 作者 | 常意 来源 | 阿里技术公众号 温馨提示:本文较长,同学们可收 ...
- ROS入门笔记(十一):编写与测试简单的Service和Client (Python)
ROS入门笔记(十一):编写与测试简单的Service和Client (Python) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建自定义服务类型 3.1 定义srv文件 3.2 在 ...
- ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++)
ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++) 文章目录 01 导读 02 功能包的创建 03 功能包的源代码编写 3.1 编写发布器节点(talker.cpp) 3.2 编写订阅 ...
- Testbench编写指南(2)文件的读写操作
Testbench编写指南是博主新开的一个系列,主要介绍在编写testbench时使用到的技巧,让编写者的水平不再仅仅停留在时钟信号.复位信号等简单信号的设置上,更好的完成对设计的仿真工作. 第2篇的 ...
- 【testbench】第1篇:testbench编写规则
本文依据网络资料及工作经验整理而成,如有错误请留言. 文章为个人辛苦整理,付费内容,禁止私自转载. 文章专栏:<黑猫的FPGA知识合集> 1 概述 实现仿真需要自己增加testbench文 ...
- 【审批工作流camunda教程】(四):不使用camunda-modeler,使用Fluent Builder API,代码编写流程定义并部署
教程一: 创建camunda项目=>部署流程定义=>创建流程实例=>走完流程实例 教程二: camunda数据库中的48张表分别的大致含义,数据库表结构介绍 教程三: 下载camun ...
- 测试用例的基本介绍及编写流程
1.什么是测试用例? (1)测试用列(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境.操作步骤.测试数据.预期结果等要素. (2)测试用列(Test Case ...
- 软件著作权申请流程很简单,不过这些事项需要格外注意
上年年末时编写了一个软件,然后就想顺便申请一个软著.一开始在网上看到有人自主申请成功以后,就想着自己申请软著,但了解到自主申请软著需要一到四个月的时间,而找代理机构却可以最快几天就拿证以后,为避免夜长 ...
- 编写运行最简单的java程序——使用记事本编写java程序
编写运行最简单的java程序--使用记事本编写java程序 第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还 ...
最新文章
- online Solver of a Bimatrix Game
- android 音乐播放器 获取sd卡所有音乐文件,Android Studio音乐播放器无法读取SD卡,只有内部存储器...
- numpy基础(part6)--协方差与相关系数
- vue --- vue中的几个钩子属性
- 浅谈HR谈薪水的技巧
- hdu 2795 Billboard
- matlab 等字符数 输出,Matlab 输入输出函数整理
- 怎样将PDF作为矢量图插入PPT中
- 毕业答辩ppt怎么做?
- 欧美风游戏音乐的特点
- Office快捷键大全之四(Frontpage快捷键)
- 关于ubuntu系统不显示wifi图标或WiFi无法连接问题解答
- 给刚入市朋友的几点建议
- [P4]源码管理 - perforce(p4)的分支与集成
- 毕业设计-基于机器学习的动态 CAPM 模型
- 初学编程,从抄代码开始就够了吗?看看我的故事!
- 驱动文件中只有cat/inf/dll文件,怎么安装
- html input跳转页面,html input type=button 页面跳转
- php纺织系统源码,XYCMS纺织企业建站系统
- java程序拦截dde漏洞问题_勒索病毒又更新 Office DDE漏洞被利用