testbench仿真模型

概述

在FPGA中仿真测试验证是必不可少了,验证通常又分为仿真验证和板级验证,在上篇说过了板级验证调试的几种手段,本篇主要讲述如何在设计初步完成即将上板调试前进行仿真验证。

提到仿真,我们通常会提到testbench的概念,即所谓的测试平台,就好比一个小型实验室,在这个实验室里有源,示波器等测试验证仪器,要测试的代码文件就是一个小黑盒子,这个黑盒子在实验室里测试,就需要具备源端输入接口和波形输出接口,我们要做的是给这个黑盒子添加激励和同时观察它的输出响应是否满足预期结果。


上述是初学者在刚接触仿真这个概念时,对testbench测试平台一些简单理解,但是对于大规模的设计,用波形产生激励是不现实的,比如对于一个16位输入总线,它有65536种输入组合和对应的输出组合,如果看波形肯定会“眼花缭乱”的。所以tsetbench应该有更高效和灵活的测试设计手段。

比如设计的测试结果判断也可以通过使用脚本命令将有用的输出信息打印到终端或者产生文本对比观察,也可以写一段代码让它们自动比较输出结果。总之testbench的设计是多种多样的。

基本testbench模型搭建


上图描述的是简单归纳的三个步骤,有时候,最后一步还要比较复杂一点,不一定只是简单的输出观察,可能还需要反馈一些输入值给待测试设计模块。

例化的目的就是把待测试设计和testbench进行对接,和FPGA内部例化是一个概念。那么如何去例化呢?

下面将以时序逻辑电路设计之计数器来阐述这一过程。


对于上面这个待测试模块计数器,testbench中例化需要把input转换成reg型,因为待测试模块设计的输入值是由testbench决定的,相应的output就应该转换成wire型,因为待测试设计的输出值不是由testbench决定的。如果是inout端口,在例化中也是一个wire类型。

对于激励的产生,只提最基本的时钟信号和复位信号的产生,时钟信号的产生有很多种,主要是使用initial和always语句,上面文件中列举了三种常见的时钟产生方法。

复位信号的产生上述描述也是比较简单,另一种常见的做法是封装成一个task,在需要复位的时候直接调用即可。


上图是功能仿真波形,可以看出led高低电平转换的时间均是0.5s也就是500ms,符合既定的设计要求。
由于该设计可以上板直接观察led灯反转情况,所以又添加了板级调试这一步,利用signalTap II来直接观察cnt信号和led信号的具体情况。


可以看出cnt信号在计数到2499999结束后led信号电平反转。

**推荐书籍《深入浅出玩转FPGA第三版》**

里面详细介绍了testbench如何去封装task,来打印测试时有用的报告显示(error,warning,fatal,terminate),和如何去搭建结构化testbench。,由于个人学习计划中未列入该项内容,留待后期深入学习。

testbench仿真模型相关推荐

  1. FPGA矩阵键盘的驱动设计与验证

    请关注微信公众号"FPGA科技室" 本文讲解利用***verilog实现矩阵键盘的驱动设计*** ,在此之前,想必学过单片机的小伙伴应该很熟悉矩阵键盘,单片机用c语言实现了矩阵键盘 ...

  2. 如何写一个仿真文件——testbench

    欲观原文,请君移步微信 testbench作用是什么? testbench就是对写的FPGA文件进行测试的文件.任何设计都是有输入输出的,testbench的作用就是给这个设计输入,然后观察输出是否符 ...

  3. Verilog学习笔记(4):仿真验证与Testbench编写

    文章目录 1.Verilog电路仿真和验证概述 2.Verilog测试程序设计基础 2.1Testbench及其结构 2.2测试平台举例 2.3Verilog仿真结果确认 2.4Verilog仿真效率 ...

  4. FPGA:IIC验证镁光EEPROM仿真模型(纯Verilog)

    目录 日常·唠嗑 一.程序设计 二.镁光模型仿真验证 三.testbench文件 四.完整工程下载 日常·唠嗑 IIC协议这里就不赘述了,网上很多,这里推荐两个,可以看看[接口时序]6.IIC总线的原 ...

  5. HDLBits 系列(40)如何写 TestBench 文件?

    目录 序言 变量定义 时钟设计 设计输入 模块例化 实战演练 序言 由于入门的测试文件很简单,所以一直以来也都是直接给出测试文件,直到今天才想着去总结一个测试文件的写法.这篇博客将根据HDLBits的 ...

  6. Verilog中testbench的设计,文件读取和写入操作

    1. 激励的产生 对于 testbench 而言,端口应当和被测试的 module 一一对应. 端口分为 input,output 和 inout 类型产生激励信号的时候, input 对应的端口应当 ...

  7. Verilog testbench总结(二)

    1.激励的设置 相应于被测试模块的输入激励设置为reg型,输出相应设置为wire类型,双向端口inout在测试中需要进行处理. 方法1:为双向端口设置中间变量inout_reg作为该inout的输出寄 ...

  8. Simulink仿真---PMSM滞环电流控制仿真模型学习

    学习<现代永磁同步电机控制原理及MATLAB仿真>袁雷编著 书中的PMSM滞环电流控制仿真模型: 控制方法: 1.PI子系统模块 内部模块图: 其中的KP.KI.输出结果的上下限幅都被封装 ...

  9. 修改网站自动关闭时间timeout_Testbench仿真方法2:在Quartus下Testbench编写及脚本文件修改...

    之前文章已经说明了在Quartus使用Testbench仿真的流程,此文章主要关注Testbench文件的编写以及仿真脚本文件的修改. 新建工程编写一个简单的timer模块. module 按照qua ...

最新文章

  1. qt信号发送间隔短而槽耗时多_Qt信号槽问题汇总 - osc_9q1dp3jk的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. C++ 单例模式析构函数的运用,析构函数的线程安全
  3. python编程从入门到精通pdf-跟老齐学Python:从入门到精通 完整版PDF[7MB]
  4. Codeforces Round #642 (Div. 3)(AB)
  5. java中string和int的相互转换
  6. 帝国cms模板仿企业网站
  7. innerHTML和outerHTML的区别
  8. CString,string,char*,比较
  9. 「leetcode」131.分割回文串【回溯算法】详解!
  10. eclipse与myeclipse恢复已删除的文件和代码
  11. ArcgisPro3.0.1中文安装包下载及安装教程
  12. 音乐播放微信小程序基于node.js后台
  13. 如何下载sonar?
  14. 人脸识别打卡项目(7)
  15. 【转】上大数学系博士点
  16. 腾讯校招都会问些什么?| 五面腾讯(Java岗)经历分享
  17. 计算机菜单专业英语,InDesign中英文菜单对照表 -电脑资料
  18. 11月最新WIFI大师小程序源码/支持无限部署
  19. 【聚英云农】无线节水灌溉系统应用智慧农业
  20. 论文图片格式要求具体有哪些?

热门文章

  1. html5标签云,TagCanvas - HTML5 Canvas技术开发的标签云动画
  2. 宗宁:拍拍微店猛于虎,或将洗牌微信电商
  3. xilinx zynq 10g相关ip延迟总览
  4. Excel怎么在一列关键字后面加相同的词
  5. 票根不符合目标服务_什么!中考要交演出票的票根?官方解读来了!
  6. 微信/QQ聊天记录可成证据,资料备份用它!
  7. 零基础学习想考华为认证,要从何学起,需要什么资料?
  8. 新一期ARM作业(二)----UART串口
  9. 硬盘对拷必备 AGE USB/eSATA对拷机现卖场!_青岛行情-中关村在线
  10. C语言实现Base64编码解码