10、Testbench设计技巧
在FPGA整个开发周期中测试往往占大部分的时间,测试分为仿真测试和板级调试,大型的系统板级调试费事费力,在上板之前进行仿真测试,往往能尽早发现并修复各种大大小小的bug,减轻板级调试的难度。
testbench即测试平台,主要是设计一个测试平台,给待验证设计提供各种激励,验证相应响应是否满足要求。
1、一个完整的testbench可以包含:
1) 产生时钟和复位信号(必须)
2) 产生激励信号(非必须)
3) 例化待测试模块(必须)
4) 响应验证(非必须)
5) 终止仿真(非必须)
2、常用技巧
1) 封装常用子程序。如将打印功能封装成任务,使用时例化print_task模块,就可使用其打印任务。
module print_task();// 显示 warning 报告, 同时显示当前时间和警告内容(由用户输入)
task warning;input [80 * 8:1] msg;begin$write("WARNING at %t : %s", $time, msg);end
endtask// 显示 error 报告, 同时显示当前时间和错误内容(由用户输入)
task error;input [80 * 8:1] msg;begin$write("-ERROR- at %t : %s", $time, msg);end
endtask// 显示 fatal 报告, 同时显示当前时间和致命内容(由用户输入)
task fatal;input [80 * 8:1] msg;begin$write("*FATAL* at %t : %s", $time, msg);end
endtask// 显示 terminate 报告, 同时显示当前时间和结束信息(系统产生)
task terminate;begin$write("Simulation completed\n");end
endtaskendmodule
2) 封装常用功能
/** @Author: * @Date: * @LastEditors: * @LastEditTime: * @FilePath: sys_ctrl_task.v* @Description: testbench时钟与复位模块* */`timescale 1ns/1ps
module sys_ctrl_task(output reg clk, // 时钟output reg rst_n // 复位信号);parameter CLK_PERIOD = 20; // 时钟周期,单位ns//----------------------------------------------------------------//系统时钟信号产生//----------------------------------------------------------------initial beginclk = 1'b0;forever begin#(CLK_PERIOD/2) clk = ~clk;endend//----------------------------------------------------------------//系统复位任务封装//----------------------------------------------------------------task reset;input [31:0] reset_time;begin rst_n = 1'b0;#reset_time;rst_n = 1'b1;endendtaskendmodule
3) 防止读写紊乱,使用非阻塞赋值语句
4) 防止同时调用任务,可加入检错机制,在该任务已被调用时,停止该次调用
10、Testbench设计技巧相关推荐
- 原始样式增加标题_好看又实用! 10个标题字体设计技巧
很多新手设计师刚做海报设计的时候,经常直接使用字库的字体,觉得字体设计很难,所以很少自己去设计字体,其实字体设计有很多种形式,今天我们分享10种常见适用于标题的字体设计技巧,好看又实用,足够让你设计出 ...
- 10个用好模糊效果的超实用设计技巧
http://bestwebgallery.com/ 模糊的(英: Blurred)照片图像:虽然在摄影中是犯了错误的照片,但也可以成为一个有用的设计工具. 这次的话题是,不是因为有了品质差的照片而在 ...
- 【模糊背景制作工具】Canva在线设计!10个用好模糊效果的超实用设计技巧
编者按:模糊效果最近这两年特别流行,不过它的作用可不仅仅是模糊个背景这么简单,今天@喪心病狂十六夜貓 这篇好文,总结了10个能帮你用好模糊背景的设计技巧,绝对让你大开眼界!最后附上一个快速模糊的神器, ...
- 21个UI设计必会的设计技巧
想要成为一名合格的UI设计师,必须要有扎实的基础,和丰富的设计经验,本期小编为大家介绍的UI设计培训教程是21个UI设计必会的设计技巧,可帮助大家提升自己. UI设计培训技术分享:一个好的UI设计是由 ...
- 14 个实用的数据库设计技巧,一次性教给你!
目录 原始单据与实体之间的关系 主键与外键 基本表的性质 范式标准 通俗地理解三个范式 要善于识别与正确处理多对多的关系 主键PK的取值方法 正确认识数据冗余 E--R图没有标准答案 视图技术在数据库 ...
- .NET框架设计—常被忽视的框架设计技巧
阅读目录: 1.开篇介绍 2.元数据缓存池模式(在运行时构造元数据缓存池) 2.1.元数据设计模式(抽象出对数据的描述数据) 2.2.借助Dynamic来改变IOC.AOP动态绑定的问题 2.3.元数 ...
- 十个简单好用的设计技巧[SM]
复杂的设计技巧总是很花时间,也实在是-.复杂 (-_-||). 高级效果 为设计增色不少,但如果用得不对,只会影响用户对重点内容的关注.高级效果可能正好是一项好的设计的冲击力所在,但即便如此,也还是需 ...
- 14个数据库的设计技巧 (来自Blogcn中我的窝)
1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对 ...
- 14个实用的数据库设计技巧!
作者: sirfei 来源:blog.csdn.net/sirfei/article/details/434994 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它 ...
最新文章
- 【linux基础】重命名文件和文件夹
- login控件设置居中
- linux help命令编写,Linux shell命令帮助格式详解
- php调用image类提示不存在的字体,php – 无效的字体文件名(imagettfbox)
- java手动切换成独立显卡_MacBook如何一键切换显卡 MacBook显卡切换方法【详细介绍】...
- 编写高质量JS代码上
- 在window7 64位下Oracle 10g 数据库中PLSQL Developer配置和使用
- 考勤系统(源代码+论文+答辩PPT+指导书)
- windows编译python扩展Unable to find vcvarsall
- 基于Axis1.4的webservice接口开发(环境搭建)
- PHP关于按位取反结果的推导过程
- 顺序结构—— 华氏温度转摄氏温度
- 青龙脚本合集(不定期更新版)
- word打字时后面的字会消失是什么原因?如何解决?
- 小白先学哪一门编程语言
- Windows CMD中的findstr命令详解
- wps linux 程序转pdf文件,wps转pdf服务器
- Arduino控制数码管显示,亮度,冒号,字符(四段共阳)
- 乐学python慕课答案_乐学软件工程,中国大学MOOC(慕课)答案公众号搜题
- 数字签名算法的原理与设计
热门文章
- Java API操作ES
- oracle 标示符太长,Oracle PLS-00114: 标识符 ' ' 太长
- Python爬虫:制作一个属于自己的IP代理模块2
- 今天下午去京东物流应聘快递员
- Java------Thread线程
- 计算机应用自荐信,计算机应用毕业生自荐信
- 2020年魔兽联盟优势服务器,商业化的《魔兽世界》怀旧服,2020年又会带给我们怎样的惊喜?...
- 彻底解决 Ubuntu 10.04 对部分声卡不支持或耳机无声的问题
- 123720服务器网站,123720a.com
- python什么是类的继承_Python类的继承(进阶5)