FPGA仿真的概念及语法特点
以下是特权同学《FPGA设计+实战演练》书中的描述:
一个正规的设计需要花费在验证上的工作量,往往可能会占到整个开发流程的70%左右。验证通常分为仿真验证和板机验证。
所谓testbench测试平台,详细地说就是给待验证的设计添加激励,同时观察它的响应是否符合设计要求。
初学者在刚接触仿真这个概念的时候,可能以为仿真只是简单地用一些开发软件自带地波形发生器产生一些激励,然后观察一下最后地波形输出就可以了。但是对于大规模地设计,用波形激励是不现实的,观察波形的工作量可想而知。例如,对于一个16位的输入总线,它可以有65536种组合,如果每次随机产生一种输入,那用波形岂不是“累死”人。再说对输出结果的观察,对应65536种输入就有65536种输出,看波形肯定让人眼花缭乱。所以,testbench应该有更高效的测试手段。
如图所示,设计的测试结果判断不仅可以通过观察对比波形,而且可以灵活地使用脚本命令将有用的输出信息打印到终端或者产生文本进行观察,也可以写一段代码让它们自动比较输出结果。总之,testbench的设计是多种多样的,它的语法也是很随意的,不像RTL级设计代码有那么多讲究,它是基于行为级的语法,很多高级的语法都可以在脚本中使用。但是使用verilog的验证脚本也有很多需要设计者留意的地方,它是一种基于硬件语言但又服务于软件测试的语言,所以常常游离于并行和顺序之间让人捉摸不透。不过,只要掌握好了这些关键点,则可以很好地让它服务于测试。
testbench地编写其实也没有想象中的那么神秘,简单地将其归纳为3个步骤:
• 对测试设计的顶层进行例化;
• 给被测试的输入接口添加激励;
• 判断被测试设计的输出响应是否满足设计要求;
相对而言,最后一步还要复杂一些,有时不一定只是简单地输出观察,可能还需要反馈一些输入值给待测试设计。
参考资料:
1、《FPGA设计+实战演练》吴厚航
FPGA仿真的概念及语法特点的更多相关文章
- FPGA仿真设置步骤
1.FPGA仿真流程图 2.FPGA时序图 3.FPGA开发方式
- C#中区别多态、重载、重写的概念和语法结构
C#中区别多态.重载.重写的概念和语法结构 重写是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override. 格式: 基类中: public virtual ...
- 学习 JavaScript (三)核心概念:语法、变量、数据类型
JavaScript 的核心概念主要由语法.变量.数据类型.操作符.语句.函数组成,这篇文章主要讲解的是前面三个,后面三个下一篇文章再讲解. 01 语法 熟悉 JavaScript 历史的人应该都知道 ...
- net必问的面试题系列之基本概念和语法
上个月离职了,这几天整理了一些常见的面试题,整理成一个系列给大家分享一下,机会是给有准备的人,面试造火箭,工作拧螺丝,不慌,共勉. 1.net必问的面试题系列之基本概念和语法 2.net必问的面试题系 ...
- XML的基础之一(概念和语法)
XML的基础(概念和语法) xml html 概念 异同 XML全称为extensible markup language,即可扩展标记语言,简单理解为可预定义标签的编程语言.它与HTML(超文本标 ...
- JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- 单片机与嵌入式 以及ARM DSP FPGA 几个概念的理解
嵌入式设备一般要满足实时性的要求,而实时性是要求数据输入和输出的延时满足一定的要求.当然嵌入式一般都便携性都比PC要好,功能没有PC多,PC是通用,他是专用,一般只专注某些功能的实现,比如DSP专注数 ...
- linux设备树笔记__dts基本概念及语法【转】
转自:http://www.360doc.com/content/15/1113/11/15700426_512794532.shtml 设备树手册(Device Tree Usage)原文地址:ht ...
- C++学习14 继承的概念及语法
继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似. 继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程.例如类B继承于 ...
随机推荐
- Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响
前几天在<Spring Boot 2.4 对多环境配置的支持更改>一文中,给大家讲解了Spring Boot 2.4版本对多环境配置的配置变化.除此之外,还有一些其他配置变化,所以今天我们 ...
- Promise 之初探
陈旧的知识应该更新一下了,先尝试一下 Promise ,主要参考 https://www.cnblogs.com/whybxy/p/7645578.html 定义一个函数 直接上干货,定义一个函数: ...
- js Table表格选中一行变色或者多选 并获取值
使用JQ <script> let old, oldColor; $("#sp_body tr").click(function (i) { if (old) oldC ...
- [.NET] - Enhanced Strong Naming (加强版的强签名程序集) – 如何迁移原有的强命名程序集
依据文档: https://msdn.microsoft.com/en-us/library/hh415055(v=vs.110).aspx 虽然文档上给出了看似完整的步骤,但是如果按照上面的步骤,结 ...
- Telegraf+Influxdb+Grafana自动化运维监控
概述:Telegraf收集信息,influxdb时序数据库存储数据,grafana平台展示数据,并进行监控告警,组成一个自动化运维监控平台. 一.influxdb InfluxDB是一个由Infl ...
- 实验2 C语言表达式编程应用及输入输出函数( 后附炫彩小人:) )
实验任务一 #include <stdio.h> int main (){ int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; prin ...
- mysql多个TimeStamp设置
mysql多个TimeStamp设置 2012-11-02 12:58 轩脉刃 阅读(39590) 评论(3) 编辑 收藏 timestamp设置默认值是Default CURRENT_TI ...
- Spring源码深度解析之Spring MVC
Spring源码深度解析之Spring MVC Spring框架提供了构建Web应用程序的全功能MVC模块.通过策略接口,Spring框架是高度可配置的,而且支持多种视图技术,例如JavaServer ...
- rocketmq部署架构
1 技术架构 RocketMQ架构上主要分为四部分,如上图所示: Producer:消息发布的角色,支持分布式集群方式部署.Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息 ...
- API接口的安全设计验证—ticket,签名,时间戳
概述 与前端对接的API接口,如果被第三方抓包并进行恶意篡改参数,可能会导致数据泄露,甚至会被篡改数据,我主要围绕时间戳,token,签名三个部分来保证API接口的安全性 1.用户成功登陆站点后,服务 ...