UVM面试题(61-65)

61、什么是UVM Call back?

uvm_callback 类是用于实现回调(callbacks)的基类,这些回调用于在不更改组件类代码的情况下修改组件的行为。

一种常见用法是在driver将激励发送到DUT之前将错误注入到生成的数据包中。以下伪代码显示了如何实现Call back。

classPacket_c;

byte[4] src_addr, dst_addr;byte[] data;byte[4] crc;endclass//Userdefined callback class extended from base classclass PktDriver_Cb extends uvm_callback;function new (string name = “PktDriver_Cb”);super.new(name);endfunctionvirtual task corrupt_packet (Packet_c pkt);//Implement how to corrupt packet//example – flip one bit of byte 0 in CRCpkt.crc[0][0] = ~pkt.crc[0][0]endtaskendclass : PktDriver_Cb//Main Driver Classclass PktDriver extends uvm_component;uvm_component_utils(PktDriver)//Register callback class with driveruvm_register_cb(PktDriver,PktDriver_Cb)function new (string name, uvm_component parent=null);super.new(name,parent);endfunctionvirtual task run();forever beginseq_item_port.get_next_item(pkt);`uvm_do_callbacks(PktDriver,PktDriver_Cb, corrupt_packet(pkt))//other code to derive to DUT etcend

endtask

endclass

1) 定义数据包packet类

2) 定义从sequence中接收此数据包并将其发送到DUT的driver类

3) 定义一个从uvm_callback基类派生的driver callback类,并添加一个虚拟方法,该方法可用于注入错误或翻转数据包中的某个位。

4) 使用`uvm_register_cb()宏注册callback类

5) 在driver类的run()方法中接收数据包并将其发送到DUT

62、什么是uvm_root 类?

在这里插入图片描述

uvm_root类充当所有UVM组件的 隐式顶层phase控制器 。用户不直接实例化uvm_root。UVM自动创建一个uvm_root实例,用户可以通过全局实例变量uvm_top访问。

63、uvm_test的父类是什么?

uvm_test类是用户可以实现的顶层类,并且没有提到显式父类。但是,UVM有一个称为uvm_top的特殊组件,它被指定为test类的父类。

64、为异步Fifo编写Uvm Sequence Item

class seqItem extends uvm_sequence_item;

`uvm_object_utils(seqItem)logic [8-1:0] rdata;logic wfull;logic rempty;rand logic [8-1:0] wdata;logic winc, wrst_n;logic rinc, rrst_n;function new (string name=”seqItem”);super.new(name);endfunctionendclass

65、UVM是否独立于SystemVerilog?

UVM建立在SystemVerilog基础上,不支持SystemVerilog的工具也不会支持UVM。

  • 3
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值