您当前的位置: 首页 > 

FPGA硅农

暂无认证

  • 2浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

UVM中的类和常用组件

FPGA硅农 发布时间:2022-05-26 11:21:15 ,浏览量:2

UVM中的类和常用组件
  • UVM中的类
    • uvm_object
    • uvm_component
  • UVM中的常见组件
    • driver
    • sequencer
    • monitor
    • agent
    • environment
    • reference model & scoreboard

UVM中的类

UVM中所有的类都有一个共同的基类:uvm_void 类。它没有数据成员,也没有成员函数。由uvm_void 类扩展得到了两个子类,分别为uvm_object类和uvm_port_base类。其中uvm_object类是UVM中所有的实体(包括 component和 transaction)的基类。uvm_port_base 是 UVM 中各种通信端口的基类。

uvm_object

uvm_object 是 UVM 中所有实体的基类。uvm_object 扩展得到很多子类, 其中比较重要的有uvm_reg、uvm_report_object 、uvm_transaction、uvm_phase。在上面重要的子类中,我们接触最多的还是uvm_report_object和 uvm_transaction。driver、monitor等component都是继承自uvm_component,而uvm_component 又继承自 uvm_report_object。 transaction、sequence 继承自 uvm_sequence_item,而 uvm_sequence_item 又继承自 uvm_transaction。 因此说 uvm_object 是 UVM 中比较基础的一个类。对验证人员来说只需要掌握到 uvm_component和 uvm_sequence_item 就行。

uvm_component

uvm_component是 UVM中比较关键的一个类,在 UVM框架中的 **uvm_agent、uvm_driver、 uvm_monitor、 uvm_scoreboard **等比较重要的组件都继承自该类。uvm_component最终还是扩展自 uvm_object类,因而比 uvm_object类有更多的特性。 下面介绍一些UVM中以这些类为基类的常用组件:

UVM中的常见组件 driver

用于向 DUT 输入测试激励,满足 DUT 对时序的要求。典型的 driver 重复地接收数据项并将其驱动给 DUT。例如, driver 在一段时钟周期中通过控制读/写信号、地址总线和数据总线实现一个写操作。

sequencer

用于调度向 DUT 发送激励的顺序,满足 DUT 对不同顺序激励的要求。Sequencer获取用户定义的 sequcence 中数据项的顺序,sequence形成更加结构化和有意义的激励模式,并且支持多个接口之间的同步。Sequence也能够对不同的协议进行分层。

monitor

monitor 是一个采样 DUT 输出信号但不驱动 DUT 的被动的实体,同时执行接口协议检查。Monitor 收集数据项,从总线上提取信息并将其转换为可用于其他组件的 transaction或者其他事件信息。

agent

sequencer、 driver、 monitor 都是可以单独可重用的,但是为了减少整合以及连接的工作量,UVM 建议环境开发者生成一个更抽象的容器,叫做 agent。验证组件能够包含不止一个 agent,许多 Active agents 激励 DUT,同时另外的 Passive agents响应事务请求。

environment

environment(env)是验证组件中最高层级的组件。它包括了一个或多个 agents。Env一般具有配置属性,可以自定义验证环境的拓扑结构和行为。

reference model & scoreboard

**reference model(参考模型)用于得到输出期望值。**如果 reference model 有错误,那么最终比较的结果也是不可信的。 Scoreboard:对 DUT 和 reference model 输出的反馈进行比较和统计,得到比对结果。

关注
打赏
1658642721
查看更多评论
立即登录/注册

微信扫码登录

0.1327s