SystemVerilog学习(1)——验证导论

写在最前

        选课不慎,选修课选了个SystemVerilog,事情比必修还多,上课老师讲的一点用没有,但是学分还得修,只能自学了,既来之则安之。

一、什么是SystemVerilog

        SystemVerilog简称为SV语言,是一种相当新的语言,它建立在Verilog语言的基础上,是 IEEE 1364 Verilog-2001 标准的扩展增强,兼容Verilog 2001,将硬件描述语言(HDL)与现代的高层级验证语言(HVL)结合了起来,并成为下一代硬件设计和验证的语言。

        System Verilog是Verilog语言的拓展和延伸。Verilog适合系统级,算法级,寄存器级,逻辑级,门级,电路开关级设计而System Verilog更适合于可重用的可综合IP和可重用的验证用IP设计,以及特大型基于IP的系统级设计和验证。

        相比与HDL,HVL具有一些典型的性质:

        (1)受约束的随机激励产生

        (2)功能覆盖率

        (3)更高层次的结构,尤其是面向对象的编程

        (4)多线程及线程间的通信

        (5)支持HDL数据类型,例如Verilog的四状态数值

        (6)集成了事件仿真器,便于对设计施加控制

        简单说,SV是建立在Verilog基础上的,一种用于验证的语言(其实也可以用于设计吧,毕竟很多综合工具都是支持SV的)。

二、验证流程

        验证的流程并行于设计的流程。对于每个设计模块,设计者需要首先阅读硬件描述规范,解析自然语言描述,然后使用RTL代码之类的机器语言创建相应的逻辑。为了完成这个过程,设计者需要知道输入格式,传输函数和输出格式,解析过程中总会有模糊的地方,原因可能是规范文档本身的表达不清楚,遗漏了细节或者细节不一致。验证工程师也必须阅读硬件规范并拟定验证计划,创建测试来检查RTL代码是否准确实习了所有的特征。

三、基本测试平台功能 

        测试平台的用途在于确定待测试的正确性。包含下列步骤:

        (1)产生激励

        (2)把激励施加到DUT上

        (3)捕捉响应

        (4)检测正确性

        (5)对照整个验证目标测算进展情况

四、分层的测试平台

        对于任意一个新型的验证方法学来说,分层的测试平台是一个关键的概念。虽然分层似乎会使得测试平台变得更加复杂,但是它能够把代码分而治之,确实有助于帮助测试工程师减轻自己的工作负担。不要尝试去编写一个包含所有功能的子程序,用它来随机产生所有类型的激励,包含合法的非法的,并使用多层协议进行错误注入。这样的子程序很快就会变得很复杂,并且难以维护。

4.1 信号与命令层

        下图是一个测试平台中最低的几个层次

        在底部的信号层,包含有待测试和把待测试设计连接到测试平台的信号。

        再往上一层就是命令层,执行总线读或者写命令的驱动器驱动了待测设计的输入。待测设计的输出与监视器相连,监测器负责监测信号的变化,并把这些变化按照命令分组。断言也穿过命令层与信号层,它们负责监视独立的信号以寻找穿越整个命令的信号变化。

4.2 功能层 

        下图为加上功能层的测试平台,功能层向下面对的是命令层。代理(在VMM 中称为事务处理器)接收到来自上层的事务,例如,DMA读或写,把它们分解成独立的命令。这些命令也被送往用于预测事务结果的记分板。检验器则负责比较来自监视器和记分板的命令。

4.3 场景层

        如图1.11所示,功能层被位于场景层中的发生器所驱动。什么是场景呢?记住一点,作为验证工程师,你的工作是确保待测设备能够完成预期的任务。一个设备案例是MP3 播放器,它能一边播放事先存储好的音乐,一边从一台主机上下载新的音乐,并且同时对用户输人如音量调整或音轨控制等操作保持响应。这中间的每一个操作都能称为一个场景。下载一个音乐文件需要若干步骤,例如前期准备时的控制寄存器读和写、歌曲传送过程中多次DMA写,以及之后的很多读写操作。场景层就是负责组织协调这些步骤的,操作的参数如音轨大小和寄存器位置等都采用受约束的随机值。
        在测试平台环境中的这些块(位于图1.11虚线框内)是在刚开始开发的时候画出来的。随着项目的进展,它们可能会有一些变化,你也可能会加入一些功能,但是这些块对于每个独立的测试都是不应该改变的。可以通过在代码中留下"钩子"来做到这一点,这样即使这些块的行为需要在测试时改变,也不必重新编写代码。"钩子"可以使用工厂模式和回调函数来创建。

4.4 测试的层次和功能覆盖率

        现在到了测试平台的最顶层——测试层,如图1.12所示,待测设计模块间的漏洞是比较难以发现的,因为这些模块可能是不同的人按照不同的规范设计出来的。

        这个顶层的测试就像一个指挥官:他不演奏任何乐器,但引领着其他人的表演,测试包含了用于创建激励的约束。
        功能覆盖率可以衡量所有测试在满足验证计划要求方面的进展,随着各项测量标准的完成,功能覆盖率代码在整个项目过程中会经常变化,由于代码经常被修改,所以它不作为测试环境的组成部分。
        你可以在受约束的随机环境中创建"定向测试"。只需在随机序列中间插人定向测试的代码,或者把两部分代码并列。定向代码执行你期望的任务,而随机的"背景噪声"可能会使漏洞暴露出来,而且漏洞还有可能是在你从来没有想到过的模块里。
        在你的测试平台中是否需要所有的层次呢?答案要视待测设计而定。设计越复杂。则所需的测试平台就要越完备。测试层则是必须的。对于一个简单的设计来说,场景层可能过于简单以至于可以把它合并到代理中。在估算对一个设计进行测试所需要的工作量时。不要以门数作为计算依据,而应该考虑设计人员的数目。每次往设计团队里增加一个人员,就意味着同时也增加了一种对规范的不同解读。
        当然,你可能还需要更多的层次。如果你的待测设计有多个协议层,那么每个层都应该在测试平台环境中有对应的层。例如,你使用IP封装了TCP流量,然后通过以太网数据包的形式发送,对这种情况的测试应该考虑使用三个独立的层来产生和校验数据。如果能够使用已有的验证构件则更好。
        图1.12中需要注意的最后一点是,它只给出了各块之间一些可能的连接方式,你的测试平台模块间的连接可能会与之不同。比如你的测试层可能需要连接到驱动器层以迫使物理漏洞出现。这里给出的只是一些引导——实际当中应该是,你需要什么就创建什么。

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

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

相关文章

汇编的指令

减法类指令: 不带借位的减法: sub dest,src;dest(dest)-(src) 注意: 1、源操作数和目的操作数不能同时为段寄存器或存储单元 2、对标志位有影响,主要影响CF、ZF、OF、SF。 带借位的减法: sbb dest,src;dest(dest)-(…

react native 使用夜神模拟器开发调试 windows+android

执行adb devices, 提示List of devices attached 打开本地sdk目录中的platform-tools文件夹,复制下面3个文件 打开夜神模拟器安装目录中的bin目录,把复制出来的文件复制替换到bin目录中 在复制一份platform-tools目录中的adb.exe,重命名为…

python基础教程:递归函数教程

嗨喽,大家好呀~这里是爱看美女的茜茜呐 1.递归的定义: 在函数内部直接或者间接调用函数本身 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资…

深度解析网络代理技术及其在网络安全和爬虫应用中的关键作用

在当今数字化时代,网络代理技术在维护网络安全、保护隐私以及实现高效数据获取方面发挥着不可或缺的作用。本文将全面解析Socks5代理、IP代理等关键技术,并探讨其在网络安全和爬虫开发中的重要作用。 1. Socks5代理与SK5代理:多功能代理协议…

四川云汇优想:短视频矩阵运营方案

短视频矩阵运营方案是为了提高短视频平台的用户黏性和活跃度,从而增强用户粘性和平台的商业价值而制定的。下面四川百幕晟小编将对短视频矩阵运营方案进行详细的介绍和分析。 首先,短视频矩阵运营方案要注重用户精细化运营。通过用户画像和兴趣标签&…

Mysql 中的性能调优方法

Mysql 性能调优方法可以从四个方面来说,分别是: 表结构与索引 SQL 语句优化 Mysql 参数优化 硬件及系统配置 这四个方面的优化成本和优化效果是成反比的。 表结构和索引的优化 表结构和索引的优化,主要可以下面这些方面去优化: 分…

Python学习笔记—基本语法

1、一般代码第一行会有#!/usr/bin/python3 这句注释是告诉操作系统执行该脚本时,调用/usr/bin目录下的Python 解释器。 在windows 下可以不写第一行注释 2、多行注释’’’和”””,用法类似verilog中的/**/ 如 ’’’ 第一行注释 第二行注释…

JVM第十六讲:调试排错 - Java 线程分析之线程Dump分析

调试排错 - Java 线程分析之线程Dump分析 本文是JVM第十六讲,Java 线程分析之线程Dump分析。Thread Dump是非常有用的诊断Java应用问题的工具。 文章目录 调试排错 - Java 线程分析之线程Dump分析1、Thread Dump介绍1.1、什么是Thread Dump1.2、Thread Dump特点1.3、…

【大模型AIGC系列课程 3-8】AI 代理的应用

1. 如果有一群角色(AI Agent)会发生什么? Generative Agents: Interactive Simulacra of Human Behavior Paper: https://arxiv.org/abs/2304.03442 Demo: https://reverie.herokuapp.com/arXiv_Demo/ 我们的生成式代理架构。代理感知(Perceive)其环境(Env),所有感知都…

2023年金九银十面经,假的今年没有金九银十

24岁的我选择了裸辞 前言 说实话选择裸辞后很迷茫,但是又不想在原本的公司上班,目前处于昏昏沉沉的状态,工作也是混一天是一天,没有了什么明确的目标,不知道屏幕前的你们有没有这种感觉,目前想着休息一段时间&#xff…

React之组件间过渡动画如何实现

一、是什么 在日常开发中,页面切换时的转场动画是比较基础的一个场景 当一个组件在显示与消失过程中存在过渡动画,可以很好的增加用户的体验 在react中实现过渡动画效果会有很多种选择,如react-transition-group,react-motion&…

cmd使用ssh连接Linux脚本

前言 在开发过程中,由于MobaXterm,我不知道怎么分页(不是屏内分页),用crtlTab,用起来不习惯,主要是MobaXterm连接了多个服务器,切换起来很麻烦。我是比较习惯使用altTab&#xff0c…

【SA8295P 源码分析 (四)】27 - QNX Ethernet MAC 驱动 之 emac_tx_thread_handler 数据发送线程 源码分析

【SA8295P 源码分析】27 - QNX Ethernet MAC 驱动 之 emac_tx_thread_handler 数据发送线程 源码分析 系列文章汇总见:《【SA8295P 源码分析 (四)】网络模块 文章链接汇总 - 持续更新中》 本文链接:《【SA8295P 源码分析 (四)】27 - QNX Ethernet MAC 驱动 之 emac_tx_thread…

js笔试面试题5道附答案

/*** 题目1: 解析Cookie字符串转化为对象* 输入:foobar; equationE%3Dmc%5E2* 输出:{ foo: bar, equation: Emc^2 }* 测试: parseCookie(foobar; equationE%3Dmc%5E2)*/ function parseCookie(str) {} /*** 题目2: 找出对象中符合…

非平稳信号分析和处理、STFT的瞬时频率研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

jpa 连接sqlserver 发布tomcat报错 SunJSSE

报错信息: java.ext.dirs: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/jre/lib/ext:/usr/java/packages/lib/ext 20-Oct-2023 16:37:28.074 信息 [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0] com.microsoft.sqlserver…

SpringBoot + MyBatis 在 jar 中可以启动但是 Idea中无法启动的原因

现象 在idea中启动始终卡住,查看线程堆栈发现一直在mybatis的处理过程中,细究了一下堆栈发现mybatis有使用远程方式加载类的情况,并且此时cpu会飙升, 在命令行中使用java -jar 的形式可以正常启动,但是在idea中启动始…

Java架构师分布式搜索架构

目录 1 导学1.1 初识Elasticsearch1.1.1 Elasticsearch的作用1.1.2 ELK技术栈1.1.3 Elasticsearch和lucene1.1.4.为什么不是其他搜索技术?1.1.5.总结2 Elasticsearch快速建立知识体系3 Elasticsearch和MySQL实体建立联系3.1.mapping映射属性3.2 数据分组聚合3.2.1.聚合的种类3…

图书教材经营小程序商城的作用是什么

线下图书教材店非常多,在以前线下店是学生、学者们经常去的场所,每到周末人流不绝,但随着互联网发展以及客户消费升级,如今线下书店人流量非常少,除了头部品牌可以支撑外,中小品牌几乎很难生存。 同时加之…

ssm351校园服务平台管理系统+jsp

项目名称:ssm351校园服务平台管理系统jsp 点击这里进入源码目录 声明: 适用范围: 本文档适用于广泛的学术和教育用途,包括但不限于个人学习、毕业设计和课程设计。免责声明: 特此声明,本文仅供参考学习之用…