知识干货—UVM介绍

UVM已经成了学习数字验证的入门课程,重要性不言而喻。想必很多有志于往数字IC验证方向发展的同学,都已经或多或少对UVM有所了解,下面IC修真院就带大家具体来了解一下。

什么是UVM

基于SV的验证方法学(可以简单理解为验证平台的框架)中,目前主要有以下三种:

VMM(Verification Methodology Manual):Synopsys在2006年推出的,集成了寄存器解决方案RAL(Register Abstraction Layer)。

OVM(Open Verification Methodlogy):Candence和Mentor在2008年推出的,从一开始就是开源的。引入了factory机制,功能非常强大,但是没有寄存器解决方案,这是他最大的短板。

UVM(Universal Verification Methodology):正式版是在2011年2月由Accellera推出的,得到了Synopsys,Mentor和Candence的支持。UVM几乎完全继承了OVM,同时由采纳了Synopsys在VMM中的寄存器解决方案RAL。

UVM是一个以SystemVerilog为主体的验证平台开发框架,验证工程师利用其可重用组件可以构建具有标准化层次结构和接口的功能验证环境。

UVM是一个库,在这个库中,几乎所有的东西都是使用类(class)来实现的。类是面向对象编程语言中最伟大的发明之一,是面向对象的精髓所在。
在这里插入图片描述

UVM验证平台的优势:

1.(理念)UVM为验证工程师提供了一套完美的库文件,验证工程师只需要对这些库文件进行扩展即可建立自己的验证平台,此外UVM提供了一个标准的验证平台模板,节省构建平台结构的时间,可以把精力集中放在事物级建模以及结果的分析上。同时UVM也支持覆盖率驱动模式,根据当前覆盖率的情况,验证工程师决定下一步的验证内容。

2.(环境组件)UVM组件更加完善,引入了agent和sequence的概念,并将driver模块的功能更加细化,分工更加明确,降低组件间的关联性,提高验证平台的可移植性和复用性,同时各个模块的验证环境是独立封装的,对外不需要保留数据端口,便于环境的进一步集成复用;

3.(通信)UVM平台使用TLM(transaction level modeling事务级建模)端口进行组件间的通信,相对于mailbox或者旗语的通信方式更为简便,同时降低组件之间的依赖性和通信频率,提高整体仿真效率;

4.(功能)uvm提供诸多机制可以方便的进行各种操作,比如实现factory机制(可以实现不改变原代码情况下实现对象的替换,比如替换driver来实现不同的驱动行为)、field_automation机制(可以直接调用UVM中的函数,无需自己定义)、phase机制(在顶层协调各个子环境时,无需考虑由于子环境之间的例化顺序导致的对象引用时句柄悬空的问题)等等,UVM平台还提供了寄存器模型,便于对DUT和reference model进行配置。

UVM组件介绍

driver:向sequencer申请sequence_item数据包transaction),并将包里的信息按照总线协议规定驱动到DUT的端口上;
sequencer:组织管理sequence,driver申请数据时,它就把sequence生成的sequence_item发给driver;
scoreboard:比较reference model和monitor分别发送来的数据,根据比较结果判断DUT是否正确工作;
monitor:从DUT接收数据,并将其转成transaction级别的sequence_item,发送给scoreboard,供其比较;
reference model:模仿DUT,完成与DUT相同的功能,为scoreboard提供判断标准;
agent:将sequencer、driver和monitor封装在一起(UVM_ACTIVE/UVM_PASSIVE、两种模式),agent模块的使用提高了代码的可重用性;
env:将平台上的component组件封装在一起,并配置各个组件间的通信端口,实现一个环境多个用例。运行不同用例时,在其中实例化env即可;
base_test(uvm_test_top):例化和配置共同的组件和env,其他的test继承base_test,并进行针对性的修改;
sequence:(不属于验证平台的任一部分)产生激励内容(transaction)。通过sequence中的body任务创建(随机化)事务,并发送给sequence。

UVM好处就是,复用性高。为什么复用性高,是因为,它有一个库。在这个库里,有很丰富的资源,你可以直接拿来就用。这其实和很多语言都是一样的。UVM作为验证方法学,在库里有很多基类,也就是父类,你如果要用,可以直接用,还可以扩展。

在公司,很多项目都是不断的迭代,改进,所以在最初搭建好验证平台之后,在以后的反复迭代的过程当中,我们就可以进行复用、优化、拓展、改写,而不需要从零开始搭建验证平台,越是成熟的公司,它的验证平台会越完善,这样虽然省事,但是对于初学者来说,并没有很友好。很多新人有误解,觉得做验证就是搭平台,其实,用不着你,等你搭出平台来,公司都能黄两次了。但是,如果是初学者,我还是建议尝试着自己搭建一个验证平台,即使是一个简单的,也是挺锻炼人的。

我们为什么要用UVM呢,当然是为了省事,省时间。要是每做一次项目,都要推倒重来,从零开始,那该是多么费劲。

学UVM仅仅是入门,想要拿到更高的薪资,有更好的发展前景,还要掌握更多知识。比如SoC芯片的设计验证相关知识。了解更多知识,关注IC修真院。

猜你喜欢

转载自blog.csdn.net/coachip/article/details/128792415