【UVM】搭建一个验证平台

UVM环境组件

组件功能 

  • sequence_item:包装数据
    • UVM中,所有的transaction都要从uvm_sequence_item派生
    • sequence item是每一次driver与DUT互动的最小粒度内容
  • sequence:产生数据
    • uvm_sequence是一个参数化的类,其参数是transaction类型
    • 当一个sequence启动之后,会自动执行body中的代码
  • sequencer:发送数据
    • uvm_sequencer是一个参数化的类,其参数是transaction类型
    • 在sequence与driver之间起到桥梁作用
  • driver:按照一定的时序驱动数据
    • uvm_driver是一个参数化的类,其参数是transaction类型
       class my_driver extends uvm_driver#(my_transaction);
  • scoreboard/checker:判断DUT的行为是否与预期相符合
  • monitor:收集DUT的输出并把它们传递给scoreboard
    • 一个用于监测DUT的输入口,一个用于监测DUT的输出口
  • reference model:验证平台给出的预期结果
  • env:实例化上述组件
  • agent:

  • base_test:设置平台超时退出时间;设置平台参数的值 ;统计ERROR/PASS

 组件自带成员和函数

  • 带参数化类的组件的成员变量:
    • req:类型是传递给uvm_driver的参数,即transaction
    • rsp:类型是transaction,sequence和driver的握手机制
    • seq_item_xxx:
      • seq_item_port:uvm_driver中,接收transaction类型
      • seq_item_export:uvm_sequencer中,传递transaction类型
      • 两者之间可以建立一个“通道”,在my_agent中,使用connect函数把两者联系在一起
  •  sequence相关组件自带函数:

  • driver相关组件自带函数: 
    • get_next_item:阻塞。向sequencer申请新的transaction,一直等到有新的transaction才返回
    • try_next_item:非阻塞。尝试着询问sequencer是否有新的transaction,如果有,则得到此transaction,否则就直接返回
    • item_done:通知sequencer完成驱动,sequencer会把这个transaction删除

UVM环境结构

UVM验证平台

实例:https://zhuanlan.zhihu.com/p/214115167

测试用例执行流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值