我的 System Verilog 学习记录(2)

news/2024/11/25 0:21:22/



引言

从本文开始,就开始系统学习 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.ppmy.cn/news/27264.html

相关文章

剑指 Offer 47. 礼物的最大价值

剑指 Offer 47. 礼物的最大价值 难度:middle\color{orange}{middle}middle 题目描述 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次…

Java static+private实现单例模式

1. 单例模式介绍 在Java中单例设计模式准确来说是,类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 2. 实现思路 如果我们要让类在一个虚…

操作系统作业

1、下列关于线程的描述中,错误的是A.内核级线程的调度由操作系统完成B.操作系统为每个用户级线程建立一个线程控制块C.用户级线程间的切换比内核级线程间的切换效率高D.用户级线程可以在不支持内核级线程的操作系统上实…

FPGA纯verilog代码实现H.264/AVC视频解码,提供工程源码和技术支持

目录1、前言2、硬件H.264/AVC视频解码优势3、vivado工程设计架构4、代码架构分析5、vivado仿真6、福利:工程代码的获取1、前言 本设计是一种verilog代码实现的低功耗H.264/AVC解码器(baseline ),硬件ASIC设计,不使用任何GPP/DSP等内核&#…

斗地主洗牌发牌-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)

【案例6-4】 斗地主洗牌发牌 【案例介绍】 1.任务描述 扑克牌游戏“斗地主”,相信许多人都会玩,本案例要求编写一个斗地主的洗牌发牌程序,要求按照斗地主的规则完成洗牌发牌的过程。一副扑克总共有54张牌,牌面由花色和数字组成…

git 的使用方法(上 - 指令)

目录前言:一、Git 是什么?二、SVN与Git的最主要的区别?三、Git 安装四、git 配置1. 创建仓库 - repository2. 配置3. 工作流与基本操作五、Git 的使用流程1. 仓库中创建 1.txt文件2. 查看工作区的文件状态3. 添加工作区文件到暂存区4. 创建版…

D1s RDC2022纪念版开发板开箱评测及点屏教程

作者new_bee 本文转自:https://bbs.aw-ol.com/topic/3005/ 目录 芯片介绍开发板介绍RT-Smart用户态系统编译使用感想引用 1. 芯片介绍 RISC-V架构由于其精简和开源的特性,得到业界的认可,近几年可谓相当热门。操作系统方面有RT-Thread&am…

numpy的常见数据类型

常见数据类型介绍Python 原生的数据类型相对较少, bool、int、float、str等。这在不需要关心数据在计算机中表示的所有方式的应用中是方便的。然而,对于科学计算,通常需要更多的控制。为了加以区分 numpy 在这些类型名称末尾都加了“_”。类型…