热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SystemVerilog和UVM的关系是什么

本篇内容主要讲解“SystemVerilog和UVM的关系是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sys

本篇内容主要讲解“SystemVerilog和UVM的关系是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SystemVerilog和UVM的关系是什么”吧!

UVM提供了丰富的基类库和验证方法学,并且被主流的EDA工具、IP供应商和设计公司采用。现在,使用SystemVerilog基本上等同于使用UVM验证。

如果你要问我,SystemVerilog和UVM到底是啥关系,我觉得汉字和诗的比喻也许比较恰当。我自然不会说是code language和library的关系,太没有想象空间。

当天空下雪了,

SystemVerilog+UVM:忽如一夜春风来,千树万树梨花开。

Only UVM:thousands of pear flowers bloom as if spring wind just passed by

Only SystemVerilog:“风景美如画,吟诗赠天下。奈何没文化,卧槽雪好大”。

SystemVerilog是一种硬件设计和验证语言(hardware design and verification language,HDVL),Verilog HDL的升级版。

为了更好地支持验证环境,SystemVerilog提供了面向对象编程(OOP)的能力受约束随机激励断言功能覆盖率等特性。

在复杂验证环境搭建的过程中,仅仅使用SystemVerilog已经无法满足验证需求,这时候就需要基类库(base class libraries)工具包(toolkits)或者说方法学(methodology guidance)的支持,提高验证平台搭建效率。

关于验证平台需要基于UVM的最主要的原因就是:复用(reuse)

1、  工具之间复用

SystemVerilog和UVM的关系是什么

SystemVerilog语言参考手册超过1300页,Cadence、Synopsys和Mentor等主流EDA工具在具体实现时存在差异,但在支持UVM时保持一致,也就是说基于UVM的验证环境可以在不同EDA工具之间移植。

2、  项目之间复用

基于UVM的验证环境很容易项目之间复用,同时工程师之间对于验证环境也容易达成共识。这是仅仅使用SystemVerilog语言无法做到的。

3、  验证IP的复用

在SoC设计中存在很多标准协议,AMBA、DDR和Ethernet等。UVM还能方便VIP的复用和维护。

4、解决方案的复用

验证和其他软件开发一样,存在几乎每个项目遇到的问题。UVM提供现成的解决方案实现。

下面介绍UVM中的一些关键概念:

1、Components&Data

UVM中的类主要分为两类:ComponentsData

Components继承自uvm_component,Data继承自uvm_sequence_item

uvm_component和uvm_sequence_item都继承自uvm_object

Components在仿真开始消耗时间之前的0时刻(build_phase)创建。用户在继承了Components之后,覆盖build_phase方法即可。

build_phase这种phase callback是top-down的。可以看出来UVM的Components是一个树形结构,根节点只有一个uvm_root(singleton object

Data在仿真过程产生的,像数据流一样流过各个Components。

2、factory机制

使用面向对象编程技术用户可以很容易地基于基类创建新的验证组件并且利用OOP的继承特性以通用方式操作用户定义的对象。例如,在基本的数据事物类的基础上进行错误注入。

为了充分利用这种OOP在验证平台中的灵活性,有必要利用factory机制这个设计模式在验证过程中实现类的替换。

class user_monitor extends uvm_monitor;`uvm_component_utils(user_monitor)...

3、configure&resourcedatabase

configure可以看成是一个全局可以访问的,使用字符串名称进行检索的数据资源。可以根据数据值配置相应的验证平台。

4、TLM connection

对于组件,需要在build_phase自上而下地完成实例化,对于组件之间的连接需要在connect_phase自下而上地完成TLM连接,用于数据流的发送和接收。

到此,相信大家对“SystemVerilog和UVM的关系是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程笔记网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


推荐阅读
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
author-avatar
马青筱BELLAIM_578
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有