【UVM源码学习】uvm_queue


  uvm_queueuvm_object扩展而来,是对sv queue的扩展。

  sv中,队列queue有以下几种方法(假设已定义int q[$]):

  1. q.push_back(a),元素a压入队尾
  2. q.push_front(a),元素a压入队首
  3. q.pop_front(),弹出队首元素
  4. q.pop_back(),弹出队列元素
  5. q.insert(n,a),队列q位置n插入元素a
  6. q.delete(n),删除队列q第n个元素
  7. q.size(),获取队列q的长度

  uvm_queue实现了基于类的动态队列,在sv 队列基础上,主要更改/新加了以下方法:

  1. get_global_queue(),获取全局队列,没有全局队列的话,新建全局队列;
  2. get_global(int index),获取全局队列并返回第index个元素;
  3. get(int index),返回队列第index个元素,index超出范围会报warning;
  4. size(),返回队列的长度;
  5. insert(int index, q item),队列index位置插入元素item,index超出范围会报warning;
  6. delete(int index),删除队列第index个元素,超出范围会报warning,index=-1删除整个队列;
  7. get_type_name(),返回队列type_name
  8. do_copy(uvm_object rhs),调用uvm_object的do_copy并做类型转换$cast(this_type, rhs),然后copy队列;
  9. covert2string(),吧队列转换为字符串
  10. pop_front(), pop_back(), push_front(), push_back()与sv队列的相关方法相同

  uvm库中有如下几个地方用到uvm_queue

  1. uvm_component,用uvm_queue存储unused_resources、scope等;
  2. uvm_callback_base
  3. uvm_resource
  4. uvm_config_db
  5. uvm_reg
  6. uvm_req_array
  7. uvm_req_block
  8. uvm_reg_file
  9. uvm_mem
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MangoPapa

请作者喝瓶可乐吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值