【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



目录
相关文章
|
存储 NoSQL 测试技术
SystemVerilog学习-05-数组
SystemVerilog学习-05-数组
1947 0
SystemVerilog学习-05-数组
【EDA】 Verdi 使用笔记
【EDA】 Verdi 使用笔记
4389 0
【EDA】 Verdi 使用笔记
|
XML 数据格式 SoC
深入理解AMBA总线(十)AHB Bus Matrix以及AHB的局限性
深入理解AMBA总线(十)AHB Bus Matrix以及AHB的局限性
1801 0
|
索引
【UVM源码学习】uvm_packer
【UVM源码学习】uvm_packer
1595 0
|
芯片
芯片验证 | UVM的objection机制
芯片验证 | UVM的objection机制
804 1
|
测试技术 芯片 开发者
芯片验证 | UVM的phase机制
芯片验证 | UVM的phase机制
1271 0
|
编译器 API C语言
芯片验证 | 理解SystemVerilog DPI并不难
芯片验证 | 理解SystemVerilog DPI并不难
1736 0
|
存储 数据安全/隐私保护 芯片
流水线中的握手与反压
流水线中的握手与反压
2551 0