我的 System Verilog 学习记录(3)

news2024/11/24 16:40:36



引言

本文简单介绍 System Verilog 语言的 TestBench。

前文链接:

我的 System Verilog 学习记录(1)

我的 System Verilog 学习记录(2)


testbench 的目的何在 ?

testbench 可以让我们通过仿真验证设计的功能。它就像一个盛放设计的容器,并且可以驱动很多不同的输入激励。

  1. 产生不同类型的输入激励;
  2. 用产生的激励驱动设计的输入;
  3. 可以让设计处理输入的激励,并且产生输出结果;
  4. 检查输出结果和期望结果,发现设计的功能缺陷;
  5. 如果发现bug,可以修改设计源码修改bug;
  6. 重复执行上述过程直至没有任何功能问题;

testbench 的组件有哪些 ?

各部分解释:

组件描述
生成器生成用以驱动 DUT 的各种不同的输入激励
接口包含设计中可以被激励或者监测的信号
驱动器将生成的激励驱动至设计中
监视器监测设计的输入输出端口,以捕获设计的行为
计分板检查输出和期望结果的一致性
环境包括上述所有验证组件
测试

包括可以微调的不同配置设置项

啥是 DUT ?

DUT 表示的是 Design Under Test ,待测试的设计,设计用VHDL 或者 Verilog 描述的。DUT是个主要用在后验证阶段的术语。后验证阶段在硅芯片制造完成后进行。在前验证阶段,也称为Design Under Verification ,简写为 DUV。

这里网站给出了一个完全详细的示例:SystemVerilog Testbench Example 1

但是此处遇到一些问题,指出来和大家讨论:

Design 源程序:

什么是接口 ?

如果设计中包含成百上千的端口信号,那么接口信号的连接、维护、重用就会变得异常繁琐。然而,我们可以将设计中所有的输入输出端口放置在一个容器中,组成向DUT连接的接口。那么待测试的设计就可以通过这个接口给相应的驱动和激励。

什么是驱动器 ?

驱动器是通过接口中定义的任务来执行DUT引脚摆动的验证组件。当驱动器给设计的输入端口驱动一些数值时,其需要调用在接口中预定义的一些任务(task),不需要真正了解信号之间的时序关系。时序信息定义在由接口提供的任务里面。这种抽象级别使得testbench更加灵活可变。在未来,如果接口有变动,新的驱动器仍然可以调用相同的任务用不同的方式驱动信号。

驱动器怎么知道驱动什么 ?

生成器可以产生有效的数据事务并将它们送至驱动器的验证组件。驱动器就可以将由生成器提供的数据通过接口送至设计中。数据事务由类对象(class object)实现。上面组件图中蓝色正方形所示即是。驱动器的任务就是获取数据对象将其翻译成DUT可以理解的内容。

为啥需要监视器 ?

截至目前,已经讨论了数据如何驱动至DUT。但是那仅仅是一半的过程,我们主要的目的在验证设计的功能。DUT处理输入数据并且将计算结果送至输出引脚。此时监视器就负责获取已处理的数据,将其转化为数据对象将其送至计分板。

计分板存在的意义是啥 ?

计分板有一个和DUT有着相同行为方式的参考模型。该模型反映了对DUT期望的行为。输入到DUT的数据同样送至参考模型,所以当DUT存在功能问题时,其输出结果一定和参考模型的结果不一致。所以二者比较的结果就会告知我们设计中存在功能缺陷。这个过程一般都在计分板中完成。

为啥需要环境 ?

因为在未来的工程中更多的组件可以被加入相同的环境中,这样可以让验证变得更灵活可扩展。

测试是干嘛的 ?

确切地说测试会例化环境对象,配置测试的工作方式。注意,我们可能会有成千上万个测试,我们不可能为每一个测试做出直接的改变。因此,我们需要把环境中主要的开关项、参数等做一个微调,就可以用于其他测试。那样的话,测试将对激励生成有更高的控制力,并且也将变得更加有效。

此处我们讨论了简单的testbench的基本结构。在实际工程中,将会有很多类似的组件相互连接在更高抽象级完成各种任务。如果我们要验证一个不超过50行RTL代码的简易数字计数器,那么okay,这样做完全可以。但是随着复杂度的不断增加,将会需要处理更多的抽象级别。

啥叫抽象级 ?

上篇文章的示例中有用独立语句实现电平翻转。

 这个是可以通过任务实现,这样不仅实现了相同的功能,并且可重用性更强。这样就将信号的时序细节隐藏,使用者不需要关心其内部逻辑和时序,只要知道如何使用就可以,增加了抽象等级。

 还有另外一个示例:SystemVerilog Testbench Example 2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/365608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt 工程 pro文件

工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下。于此备录,分享共勉。 为了更好的理解,先创建一个简单的工程作为实践。 【1】创建一个pro文件 1.1 新建proDemo工程。步骤如下:Qt Creator--->New Pro…

数据结构初阶——时间复杂度与空间复杂度

时间复杂度与空间复杂度1. 算法效率1.1 如何衡量一个算法的好坏1.2算法的复杂度2.时间复杂度2.1 时间复杂度的概念2.2 大O的渐进表示法2.3常见时间复杂度计算举例实列1:实列2:实列3:实列4:实列5:实列6:实列…

k8s service的底层实现

承接上文同一个node中pod之间如何通信?当前的集群中给2个apache pod注册了一个service,这个地址是10.152.183.151,在ubuntu的pod中测试这个ip是可以通信的,it work来源于本机的pod,多访问几次发现会随机的把请求定向到…

远程控制详细教程,同时支持手机控制

​“我需要一些帮助,目前我因为休假旅游去了,需要临时远程办公。我工作的电脑运行的是Windows 10系统,我如何操作才能远程控制公司的电脑进行远程办公?我之前没用过远程控制相关的工具,什么简单的方法可以远程控制另一…

别只会搜日志了,求你懂点检索原理吧

别只会搜日志了,求你懂点检索原理吧 本篇主要内容如下: 前言 项目中我们总是用 Kibana 界面来搜索测试或生产环境下的日志,来看下有没有异常信息。Kibana 就是 我们常说的 ELK 中的 K。 Kibana 界面如下图所示: 但这些日志检索…

内网渗透(五十一)之域控安全和跨域攻击-跨域攻击介绍

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

软件测试面试题 —— 整理与解析(1)

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:🌎【Austin_zhai】🌏 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能&#xf…

数据库浅谈之向量化

数据库浅谈之向量化 HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是数据库浅谈系列,收录在专栏 DATABASE 中 😜😜😜 本系列阿呆将记录一些数据库领域相关的知识 &#x1f3…

Zabbix“专家坐诊”第182期问答汇总

问题一: Q:像烽火、浪潮这种没有ilo的设备怎么监控他们的硬件状态呢? A:如果没有ilo,可以使用其他硬件监控软件,例如HP Insight Manager、IBM Director、Dell OpenManage等。这些软件可以帮助您监控硬件状…

[神经网络]基干网络之ResNet、MobileNet

一、ResNet ①特点 ResNet的深度远比之前的算法深,且不会出现网络退化问题。 Ps.网络退化:网络深度增加反而不如原来的网络。(网络退化 ! 过拟合/梯度消失) ②残差块 残差块采用短路连接(Shortcut Connection) / 跳跃连接,拟合的目标由直接最…

2023年2月初某企业网络工程师面试题【建议收藏】

拓扑图如下,主机A与主机B能互相通信,但是A不能ping通RA的F0接口,这是为什么?RA上f0接口上配置了ACL,禁止源ip为主机A,目的ip为RA f0的数据包的发送; 第一个路由器上只有到主机B网段的路由&#…

MFCCA多通道多说话人语音识别模型上线魔搭(ModelScope)

实验室研发的基于多帧跨通道注意力机制(MFCCA)的多说话人语音识别模型近日上线魔搭(ModelScope)社区,该模型在AliMeeting会议数据集上获得当前最优性能。欢迎大家下载。开发者可以基于此模型进一步利用ModelScope的微调…

【Python】文本转语音库pyttsx3

一、语音输出 1、安装文本转换语音库pyttsx3 安装指令: pip install pyttsx3 2、导入pyttsx3库后,调用speak函数即可进行语音播放。 import pyttsx3 #语音播放 pyttsx3.speak("How are you?") pyttsx3.speak("I am fine, thank yo…

成都欢蓬电商:抖音直播卖药灰度测试通告

据报道,近日有MCN机构透露,目前抖音直播卖药为“测试项目,谨慎试跑中”; “仍处于灰度测试,至于测试多久,抖音官方确实没有答复,需要看第一阶段数据,然后定夺,预计4月份会纳入更多机…

第八章《嵌入式系统原理与实践》--沈建华 王慈 清华大学出版社 课后部分习题个人答案

第八章 1,2,3,4,6,7,9,12 1 什么是串行通信、并行通信? 按一次传输数据位个数区分 串行通信并行通信是数据是一位一位地由端口发送或接收数据的各个数据位(一般为 8 位…

「TCG 规范解读」初识 TPM 2.0 库续二

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

手写一个文件上传demo

背景 最近闲来无事,同事闻了一下上传文件的基本操作,如何用文件流来实现一个文件的上传功能 基本概念 流(Stream)是指在计算机的输入输出操作中各部件之间的数据流动。可以按照数据传输的方向,将流可分为输入流和输出…

Vue3:有关v-model的用法

目录 前言: 回忆基本的原生用法: 原生input的封装: 自定义v-model参数: 对el-input的二次封装: 多个v-model进行绑定: v-model修饰符: v-model自定义参数与自定义修饰符的结合: 前言&am…

Java 网络编程 Ⅰ

目录基础知识IP 和 Portinternet(互联网)Java UDP 编程UDP(User Datagram Protocol):无连接无状态的数据报通讯协议实现Java TCP 编程TCP(Transmission Control Protocol):面向连接的…

XSS注入进阶练习篇(三) XSS原型链污染

XSS原型链污染1.原型链的概念1.1 构造函数的缺点1.2 prototype 属性的作用1.3 原型链1.4 constructor属性1.5 prototype和__proto__2. 原型链污染2.1 原型链污染是什么?2.2 原型链污染的条件2.3 原型连污染实例2.3.1 hackit 20182.3.2 challenge-04223.总结1.原型链…