【UVM源码学习】uvm_queue

简介: 【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



目录
相关文章
|
索引
【UVM源码学习】uvm_packer
【UVM源码学习】uvm_packer
1025 0
【UVM源码学习】uvm_event
【UVM源码学习】uvm_event
334 0
【UVM源码学习】uvm_event
【UVM源码学习】uvm_barrier
【UVM源码学习】uvm_barrier
159 0
【UVM源码学习】uvm_barrier
【UVM源码学习】uvm_object
【UVM源码学习】uvm_object
140 0
【UVM源码学习】uvm_object
|
测试技术 数据库 容器
【UVM源码学习】uvm_resource
【UVM源码学习】uvm_resource
193 0
【UVM源码学习】uvm_resource
|
安全
【UVM源码学习】uvm_links
【UVM源码学习】uvm_links
169 0
【UVM源码学习】uvm_links
【UVM源码学习】uvm_heartbeat
【UVM源码学习】uvm_heartbeat
258 0
【UVM源码学习】uvm_heartbeat
【UVM源码学习】uvm_recorder
【UVM源码学习】uvm_recorder
284 0
【UVM源码学习】uvm_recorder
【UVM源码学习】uvm_comparer
【UVM源码学习】uvm_comparer
651 0
【UVM源码学习】uvm_comparer
|
存储 C语言
【UVM源码学习】uvm_misc
【UVM源码学习】uvm_misc
142 0
【UVM源码学习】uvm_misc