当前位置:首页 > 公众号精选 > 芯片验证工程师
[导读]uvm_env是一个容器,用于将围绕某个DUT(模块级或者系统级)的所有验证组件集合在一起。 在模块级验证平台中,env用于集合DUT周围的接口agent和DUT通信,与env相关联的不同class被组织成一个SystemVerilog package。除了接口agent之外,e...

uvm_env是一个容器,用于将围绕某个DUT(模块级或者系统级)的所有验证组件集合在一起。

 

模块级验证平台中env用于集合DUT周围的接口agent和DUT通信,env相关联的不同class被组织成一个SystemVerilog package除了接口agent之外,env还将包含以下部分组件:


Configuration object - env中可以有一个配置对象,使测试用例开发者能够控制验证环境的构建。env配置对象还应该包含其中所有验证子组件(agent)配置对象的句柄。 


Scoreboards - scoreboard(或者说checker) 是一个使用来自agent内部monitors 发送过来的事务以检查DUT行为是否正确的组件。


Predictors - 或者说参考模型是计算相应DUT输入激励预期响应的一个组件,然后发送给checker进行比较。


Functional Coverage Monitors - 功能覆盖分析组件包含一个或多个covergroups ,用于在测试用例执行期间收集相关的功能覆盖信息。一般功能覆盖率也可以直接写成module直接挂载在DUT上。


Virtual Sequencers -使用virtual sequencer组织输入激励的发送,在单个sequence中控制多个不同agent中的sequencer发送请求。

 

UVM最大的优势就是验证组件的重用,系统级层次的env就可以复用各自模块的env。模块级env和系统级env最大的区别就是某些agent对于模块是外部接口,会暴露在边界上,但是对于系统级验证环境可能就处于系统内部,无需驱动或者监测。此时,模块级env中的某些agent就是冗余,更准确地说是其中的sequencer、driver是冗余的,只需要提供monitor即可。

 

同理,最符合UVM的做法的系统级env中存在一个配置对象,其中声明各个子模块env配置对象的句柄。

 


如上图所示的系统级验证环境env,其中“灰色”的组件就是冗余组件,其实更好的做法是保留所有组件,只是使能所需要的功能,并且复用模块级环境的checker(主动驱动、被动响应、监测)。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭
关闭