UVM原始碼學習 uvm queue

2021-10-10 22:57:11 字數 1565 閱讀 2321

uvm_queueuvm_object擴充套件而來,是對sv queue的擴充套件。

sv中,佇列queue有以下幾種方法(假設已定義int q[$]):

q.push_back(a),元素a壓入隊尾

q.push_front(a),元素a壓入隊首

q.pop_front(),彈出隊首元素

q.pop_back(),彈出佇列元素

q.insert(n,a),佇列q位置n插入元素a

q.delete(n),刪除佇列q第n個元素

q.size(),獲取佇列q的長度

uvm_queue實現了基於類的動態佇列,在sv 佇列基礎上,主要更改/新加了以下方法:

get_global_queue(),獲取全域性佇列,沒有全域性佇列的話,新建全域性佇列;

get_global(int index),獲取全域性佇列並返回第index個元素;

get(int index),返回佇列第index個元素,index超出範圍會報warning;

size(),返回佇列的長度;

insert(int index, q item),佇列index位置插入元素item,index超出範圍會報warning;

delete(int index),刪除佇列第index個元素,超出範圍會報warning,index=-1刪除整個佇列;

get_type_name(),返回佇列type_name

do_copy(uvm_object rhs),呼叫uvm_object的do_copy並做型別轉換$cast(this_type, rhs),然後copy佇列;

covert2string(),吧佇列轉換為字串

pop_front(),pop_back(),push_front(),push_back()與sv佇列的相關方法相同

uvm庫中有如下幾個地方用到uvm_queue

uvm_component,用uvm_queue儲存unused_resources、scope等;

uvm_callback_baseuvm_resourceuvm_config_dbuvm_reguvm_req_arrayuvm_req_blockuvm_reg_fileuvm_mem

UVM原始碼學習 uvm misc

uvm misc,uvm雜貨鋪,定義了uvm用到但不好歸類的雜散的task function class。uvm void,基類,所有uvm類都直接或間接擴充套件自uvm void。uvm void中沒有任何成員變數或方法,是個抽象類,其作用與c語言中的void相似。uvm scope stack,...

UVM原始碼學習 uvm barrier

uvm barrier直接擴充套件自uvm object,提供多程序間的同步機制。簡單講就是使用者設定乙個閾值,每個等待同步的程序在執行完之後進入wait for等待事假觸發,當進入wait for的程序數達到閾值時觸發該事件,所有等待同步的程序跳出wait for繼續執行,從而實現多個程序的同步。...

UVM原始碼學習 uvm registry

如果對每個factory註冊的component object都建立其實例,記憶體 編譯的開銷會很大。為了減小這種開銷,可以採用uvm registry對factory註冊的componnet object類建立乙個輕量級的 僅含有get get type get type name等方法 只有使用...