uvm_queue
從uvm_object
擴充套件而來,是對sv queue的擴充套件。
sv中,佇列queue有以下幾種方法(假設已定義int q[$]):
uvm_queue實現了基於類的動態佇列,在sv 佇列基礎上,主要更改/新加了以下方法: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的長度
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_base
uvm_resource
uvm_config_db
uvm_reg
uvm_req_array
uvm_req_block
uvm_reg_file
uvm_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等方法 只有使用...