我的 System Verilog 学习记录(2)

news2024/10/7 6:47:20



引言

从本文开始,就开始系统学习 System Verilog ,不只是语法,还有结合 Questa Sim 的实际编程练习、Debug。

本文简单介绍 System Verilog 语言的用途以及学习的必要性。

前文链接:

我的 System Verilog 学习记录(1)



诸如 Verilog 和 VHDL 的硬件描述语言用于描述硬件行为,可以转换为由组合逻辑门和时序逻辑单元组成的电路块。为了验证 HDL 描述的硬件电路的正确性,需要一种在OOP(面向对象)具备更多特性的编程语言来支持复杂的测试流程,我们称之为 硬件验证语言。

System Verilog 就是Verilog 的一种拓展,具备诸多验证特性,允许EDA工具(引擎)使用复杂的testbench 和在仿真使用随机激励去验证设计。

为啥不用 Verilog 来做验证 ?

回溯到20世纪90年代,Verilog 是验证设计功能性的主要语言,但是只对能一些小规模设计、复杂度低的设计、特征量少的设计进行验证。随着设计复杂程度的提高,人们对更好的设计验证工具的需求程度也是渐渐增加。System Verilog 在这方面的优越性远超 Verilog ,因为其具备执行可约束的随机激励,在 testbench 结构中、功能覆盖率检查中、断言等等支持面向对象的特性。

何为验证 ?

验证就是保证一个硬件设计按预期运行的过程。芯片设计是一个涉及领域很宽并且很耗时的过程,需要耗资上百万去制造。如果在设计过程的早期阶段发现功能缺陷将会帮助节省很大的成本。如果在设计流程的后期发现一个 Bug ,那么所有的设计步骤需要重新再走一遍,这样会消耗很多资源、资金和时间,如果是设计的全流程都需要重新走一遍,那么这个过程称之为重新流片(respin)。

类似于 Vera 的硬件验证语言怎么样 ?

它们曾被使用过一段时间。System Verilog 可以看作是 Verilog(最流行的HDL语言) 的一种扩展,因此用它去验证 Verilog 的设计它是能够看的明白的。并且,System Verilog也支持面向对象,这将设计的验证过程提到了一个更到层次的抽象级。

它在验证中如何使用 ?

绝大多数的硬件设计都包含若干 Verilog 设计文件(.v 文件),其中有一个顶层文件,顶层文件中例化了各个子模块以达到整体设计的期望行为和功能。我们将验证所需的环境称为 testbench ,一般都用 System Verilog 语言去编写。目的就是用不同的激励驱动设计,然后观察输出,与期望值相比较,确定设计的行为是否正确。

为了达到这样的目的,设计的顶层模块应该例化在 testbench 环境中,并且设计的输入输出端口应该准确地和 testbench 中的组件信号相连接。设计的输入按照我们的意愿给进合适的激励信号。输出的结果和期望值进行分析比较,以确认设计行为是否正确。

举个栗子

chipverify官网给出了一个简单的设计验证例子:

设计文件:

验证文件:

 

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

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

相关文章

C#从值类型、引用类型到装箱和拆箱

上一篇文章讲了C#的值类型和引用类型,这里再来看看值类型和引用类型最直接的使用场景:装箱和拆箱。 一、基本概念 装箱:值类型转化为引用类型的过程。从托管堆中为新生成的引用类型对象分配内存,再把值类型的实例字段拷贝到托管堆上新对象的…

面向对象的三大特征

面向对象(OOP)的三大特征:继承、封装、多态 一、封装性 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内 部的结构吗?有必要碰电动机…

C语言【atoi函数】

C语言【atoi函数】🫅系统atoi函数🫅 模拟实现atoi函数看到atoi函数,有人又会问有这个函数,我怎么没用过。那就说明:不是你刷题太少,就是atoi函数存在感太低。 这篇函数就带你领略atoi函数的魅力 &#x1fa…

APP测试中ios和androis的区别,有哪些注意点

目录 一、运行机制不同 二、对app内存消耗处理方式不同 三、后台制度不同 四、最高权限指令不同 五、推送机制不同 六、抓取方式不同 七、灰度发版机制不同 八、审核机制不同 总结感谢每一个认真阅读我文章的人!!! 重点:…

Arduino-流水灯

LED流水灯实验产品介绍:电阻:电阻器通常分为三类:固定电阻器、可调电阻器及特殊电阻器。普通电阻器的识别电阻器阻值和允许误差常用的标志方法有下列3种。1、直接标志法将电阻器的阻值和误差等级直接用数字印在电阻器上。对小于1000W的阻值只…

C语言进阶(五)—— 多维数组

1. 一维数组 元素类型角度:数组是相同类型的变量的有序集合内存角度:连续的一大片内存空间在讨论多维数组之前,我们还需要学习很多关于一维数组的知识。首先让我们学习一个概念。1.1 数组名考虑下面这些声明:int a; int b[10];我们…

6、Fatfs系统移植

注意:挂载Fatfs笔记 Fatfs系统读写文件的时间是不固定的,随机性 搭载Fatfs的外设通信方式建议开启DMA方式,否则应避免中断打断时序,导致Fatfs出现FR_DISK_ERR(A hard error occurred in the low level disk I/O layer&…

金三银四丨黑蛋老师带你剖析-安全开发岗

作者丨黑蛋在之前呢,我们聊了二进制这块的病毒岗位,漏洞岗位,逆向岗位以及CTF这块的岗位。今天我们就来聊一聊安全开发类的工作岗位。首先网络安全方向中安全开发岗位都有哪些,安全开发主要指安全研发工程师或安全开发工程师&…

手写线程池实例并测试

前言:在之前的文章中介绍过线程池的核心原理,在一次面试中面试官让手写线程池,这块知识忘记的差不多了,因此本篇文章做一个回顾。 希望能够加深自己的印象以及帮助到其他的小伙伴儿们😉😉。 如果文章有什么…

运动戴耳机哪种款式比较好、最好用的运动耳机

很多人喜欢运动时听音乐,因为在运动场景中,听歌的节奏与步频匹配的时候,的确是可以起到很好的激励和缓解情绪的作用。认认真真地选择一副适合自己跑步的运动耳机,成了很多跑步爱好者的实际需求,专门为运动打造的耳机也不少!那么,如何挑选一款…

macm1安装qt6

macm1安装qt6 本文目录macm1安装qt6前提下载在线安装包使用安装包进行安装QT creator测试运行环境前提 需要安装xcode以及command line tools 需要先注册账号密码 根据官方提示,5.15版本以上就不支持离线安装了,需要下载在线安装包 OFFLINE_README.txt…

Anaconda和PyCharm的一些安装问题和命令

今天更新了Windows上的Anaconda到2.3.2,PyCharm到2022.3。 ——发现是纯纯的犯贱orz。出了一堆问题。在这里记录一下供后来者参考。 Anaconda安装 将.\anaconda3\Scripts 和.\anaconda3\Library\bin添加到系统环境变量中。 新建环境的目录在.\anaconda3\envs下 N…

Retrofit源码分析

文章目录一、简介二、源码分析2.1Retrofit的本质流程2.2源码分析2.2.1 创建Retrofit实例步骤1步骤2步骤3步骤4步骤5总结2.2.2创建网络请求接口的实例外观模式 & 代理模式1.外观模式2. 代理模式步骤3步骤4总结2.2.3执行网络请求同步请求OkHttpCall.execute()1.发送请求过程2…

解决 NestHost requires ASM7 (shrink、kotlin metadata)

① 场景 Caused by: java.lang.RuntimeException: NestHost requires ASM7Failed to resolve class org/vigame/demo/CrashHandler$1.class[transform input:not foundproject input:not foundaar input:not found]Caused by: java.lang.UnsupportedOperationException: NestH…

flstudio21中文版下载安装图文教程

fl studio21中文版是一款免费的音乐编曲制作软件,有了它你可以制作出色的音乐。它为您提供了一个集成的开发环境,使用起来非常简单有效,您的工作会变得更有条理。同时FL Studio为用户提供了更先进和原创的音乐制作理念,用户可以轻…

简单学生管理系统

文章目录1. 学生类2. 学生管理类3. 运行结果1. 学生类 包含四个属性,学号、姓名、年龄及地址。类中包含一个无参构造、一个有参构造以及各属性的 get、set 方法。 package com.zxe;public class Student {private String id;private String name;private String a…

Vue+element ui遇到的一些疑难问题总结(一)

element ui 疑难总结1. el-date-picker时间区间控制2. el-cascader 获取name3. el-tree 搜索判断是否匹配到值1. el-date-picker时间区间控制 控制只能选区间(7天,一个月,两个月等等)重点为 :picker-options"pickerOptions&…

Python爬虫(10)selenium爬虫后数据,存入csv、txt并将存入数据并对数据进行查询

之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章 Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式 Python爬虫(2)-Selenium控制浏览…

【原创】java+swing+mysql大学生竞赛管理系统设计与实现

上一篇文章我们介绍了使用swingtxt进行系统设计和数据存储,今天我们还是回归现实,使用javaswingmysql去设计开发一个大学生竞赛管理系统,以方便管理员对大学竞赛的一些信息进行管理。 功能分析: 大学生竞赛管理系统主要是提供给…

黄金短期陷入低位震荡颠簸

基本面: 周二(2月21日)黄金价格维持1843-1830区间震荡,日线收带上下影线小阴线。 今日数据 无重要数据 技术面: 日线上,黄金日线收带上下影线小阴线,目前处于短期线附近及下方运行,5日与1…