uvm_misc,uvm雜貨鋪,定義了uvm用到但不好歸類的雜散的task、function、class。
uvm_void
,基類,所有uvm類都直接或間接擴充套件自uvm_void。uvm_void中沒有任何成員變數或方法,是個抽象類,其作用與c語言中的void相似。
uvm_scope_stack
,用區域性字串型別佇列m_stack實現了堆疊,用來存放uvm路徑(scope)。該類中主要實現了以下方法:
序號方法描述1
depth
獲取堆疊m_stack的size
2set_arg
設定m_arg,無法設定為空字串
3get_arg
返回字串m_arg
4set_arg_element
set_arg只有乙個string型別的輸入引數arg,set_arg_element增加了乙個int型別的輸入引數ele,講ele轉換為字串後,m_arg = arg[ele]
5unset_arg
清空字串m_arg。只有當unset_arg的輸入引數arg與m_arg相同時才清空
6set
清空佇列m_stack及m_arf,然後把指定字串壓入隊尾
7get
獲取字串佇列m_stack內所有字串並用點號「.」對各字串進行拼接。若某字串以「[」「(」「{」其開頭,追加到前一字串尾部且不以點號分隔。8up
從m_stack隊尾取scope並清空m_arg
9down
指定scope壓入隊尾並清空m_arg
10up_element
跟up的區別:從隊尾取出scope後再壓入隊尾
11down_element
跟down的區別:傳入的scope為int型別
uvm_status_container
,用來儲存automation方法狀態的類。
序號方法描述1
do_field_check
檢測field陣列中是否存在指定的field,不存在則報error
2get_function_type
返回指定引數代表的type,如引數有列舉變數uvm_copy、uvm_compare、uvm_print、uvm_record、uvm_pack、uvm_unpack、uvm_flags、uvm_setint、uvm_setobj、uvm_setstr等,返回其對應的字串
3get_full_scope_arg
呼叫uvm_scope_stack的get函式返回m_stack內所有字串
4m_do_cycle_check
cycle check,具體使用時再介紹吧
uvm_utils
,基類,此類中臨時存放了一些比較重要的方法:
序號方法描述1
find_all
呼叫uvm_root::find_all,在uvm_component佇列中查詢所有start(使用者指定的component)之後的已經例化的component
2find
呼叫了find_all,但只返回第乙個查詢到的component
3create_type_by_name
呼叫uvm_factory的create_object_by_name,根據name建立object
4get_config
獲取指定uvm_component的所有config
序號方法描述1
uvm_global_random_seed
全域性隨機seed
2uvm_seed_map
3uvm_instance_scope
返回uvm lib所在的層級(import uvm_pkg::*的地方)
4uvm_oneway_hash
單向雜湊演算法,多用於用以生成隨機seed
5uvm_create_random_seed
生成隨機seed,此處就用了oneway hash,生成的seed會加入seed_table中
6uvm_object_value_str
把指定uvm_object型別的object轉換為字串str,返回字串@str
7uvm_leaf_scope
獲取uvm的葉子節點
8uvm_bitstream_to_string
位元流轉字串,可指定轉換字串的數字進製
9uvm_integral_to_string
整型轉字串,可指定轉換字串的數字進製
10uvm_vector_to_string
向量引數轉字串,呼叫uvm_bitstream_to_string實現
11uvm_get_array_index_int
檢測指定字串是否為整型陣列的索引
12uvm_get_array_index_string
檢測指定字串是否為字串陣列的索引
13uvm_is_array
判斷是否為陣列(檢測最後一位字元是否為「]」)
14uvm_has_wildcard
判斷是否有萬用字元
15process_container_c
程序容器
16m_uvm_string_queue_join
把指定字串佇列加入到字串m_uvm_string_queue_join中
UVM原始碼學習 uvm queue
uvm queue從uvm object擴充套件而來,是對sv queue的擴充套件。sv中,佇列queue有以下幾種方法 假設已定義int q q.push back a 元素a壓入隊尾 q.push front a 元素a壓入隊首 q.pop front 彈出隊首元素 q.pop back 彈出...
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等方法 只有使用...