UVM原始碼學習 uvm misc

2021-10-11 18:32:42 字數 2632 閱讀 9243

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等方法 只有使用...