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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

Mysql 中的性能调优方法

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

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…

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

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

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

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

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

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

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

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

Kibana开发工具安装

版本说明 名称版本备注kibana kibana-7.7.1-linux-x86_64.tar.gz 安装配置 tar -zxvf kibana-7.7.1-linux-x86_64.tar.gz -C /usr/local/ cd /usr/local/ mv kibana-7.7.1-linux-x86_64/ kibana-7.7.1/ #编辑配置文件,在末尾添加 vim /usr/local/kibana-7.7.1/con…

贝锐花生壳+Fooocus,快速自建可远程访问的SDXL,平替Midjourney

Midjourney、stable diffusion两款AI绘图工具是最近这段时间的热点。不过,事无完美,他们各有一些优缺点。 例如:stable diffusion虽然开源可私有化部署,但操作相对复杂,需要设置各类参数;Midjourney虽然简单…

【斗罗二】天梦哥告白冰帝,唐三再返场,雨浩通过冰帝考验,觉醒新武魂

Hello,小伙伴们,我是小郑继续为大家深度解析斗罗大陆2绝世唐门国漫资讯。 斗罗大陆动画第二部绝世唐门第19集已经更新了,全都是霍雨浩与天梦哥在极北之地,吸引冰帝加入造神计划的过程。不仅有天梦哥的爱情宣言告白,唐三也再次限时…

选择最佳的项目管理工具:推荐哪一个?

项目管理工具推荐哪个?Zoho Projects项目管理工具为各类团队提供卓越的项目管理解决方案。 1、全面管理各类团队项目 Zoho Projects是一款全面的项目管理工具,具备简化工作流程和提高团队生产力的功能。无论是软件开发与DevOps,还是人力资源与…

大数据精准营销告诉你如何找到对的人?

如今,朋友圈广告已经“稀松平常”,而用户接收到什么样的商品广告,则基本取决于平日里对微信的使用习惯。无独有偶,淘宝、京东等电商平台在网页中弹出的定向品类广告,也是大数据基于用户对于某一商品的搜索行为。 可见&…

图像识别-人脸识别与疲劳检测 - python opencv 计算机竞赛

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是…

内存拷贝函数 memcpy 的原理及实现

memcpy是memory copy的缩写,意为内存复制,在写C语言程序的时候,我们常常会用到它。它的函原型如下: void *memcpy(void *dest, const void *src, size_t n);它的功能是从src的开始位置拷贝n个字节的数据到dest。如果dest存在数据…

python安装第三方包

1 命令行下载 pip install 包名称 进入命令行输入该命令 由于pip是连接的国外的网站进行包的下载,所以有的时候会速度很慢。 我们可以通过如下命令,让其连接国内的网站进行包的安装: pip install -i https://pypi.tuna.tsinghua.edu.cn/s…

STM32F4XX之串口

一、标准串口(UART)介绍 1、通信协议相关概念 1.1同步通信和异步通信 (1)同步通信:两个器件之间共用一个时钟线,要发送的数据在时钟的作用下一位一位发送出去。 (2)异步通信:指两个器件之间没…