UVM原始碼學習 uvm recorder

2021-10-12 04:58:36 字數 1783 閱讀 5335

uvm_recorder.svh裡實現了兩個類:uvm_recorderuvm_text_recorder。uvm recorder規定了如何把field記錄到record中,是uvm_tr_stream中record的抽象表示方法。

uvm_recorder類直接派生自uvm_object,定義的主要方法如下表所示。uvm_text_recorder類直接派生自uvm_recorder,是uvm_text_tr_database的預設recorder,具體實現了uvm_recorder類中的鉤子函式及空函式。

序號方法描述1

get_stream

返回建立當前record的stream引用引數reference,若record未初始化就呼叫了該函式會報warning,do_open函式值會對record進行初始化

2close

在uvm_tr_stream::open_recorder開啟recorder之後,呼叫該函式關閉recorder並記錄close_time。關閉recorder意味著當前transaction的結束。如果已關閉則直接退出,否則呼叫鉤子函式do_close進行關閉。

3free

free,釋放recorder,用於解決資料庫實現跨語言邊界的問題。釋放recorder意味著當前stream及資料庫可以釋放recorder的reference引數。若recorder已被釋放則世界退出,若recorder未close先close再呼叫鉤子函式do_free釋放,並清理stream/recorder狀態。

4is_open

返回recorder是否open,1代表open

5get_open_time

返回recorder open時間

6is_closed

返回recorder是否close,1代表close

7get_close_time

返回recorder close時間

8m_do_open

呼叫鉤子函式do_open初始化recorder內部狀態,free前重複初始化會報error,

9m_free_id

根據recorder id刪除recorder及其對應的id

10get_handle

採用inst_id作為recorder的handle並返回handler,若當前recorder的id不是inst_id,以inst_id取而代之

11get_recorder_from_handle

根據handle(inst_id)獲取recorder

12record_feild

呼叫對應的鉤子函式來記錄當前型別的引數

13record_field_int

呼叫對應的鉤子函式來記錄當前型別的引數

14record_real

呼叫對應的鉤子函式來記錄當前型別的引數

15record_object

呼叫對應的鉤子函式來記錄當前型別的引數

16record_string

呼叫對應的鉤子函式來記錄當前型別的引數

17record_time

呼叫對應的鉤子函式來記錄當前型別的引數

18record_generic

呼叫對應的鉤子函式來記錄當前型別的引數

19use_record_attribute

用以表示是否支援使用uvm_record_attribute巨集,預設返回0不支援

20get_record_attribute_handle

提供相容uvm_record_attribute巨集的工具指定的handle,預設採用get_handle的值

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 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繼續執行,從而實現多個程序的同步。...