uvm學習筆記(不斷更新中。。。)

2021-10-14 07:25:37 字數 1764 閱讀 4909

記錄uvm學習和使用中的一些所得,與君共學,有異之處煩請指出~

1) 一般在test的main_phase中啟動sequence。在uvm中,objection一般伴隨著sequence,通常只在sequence出現的地方才提起和撤銷objection。

example:

my_sequence seq;

phase.raise_objection(this);

seq = my_sequence::type_id::create(「seq」);

seq.start(i_agt.sqr);

phase.drop_objection(this);

sequencer在sequence和driver之間傳遞transaction,當sequence要發transaction時,若driver沒有取transaction的請求,則等待driver取transaction的請求;當driver要取transaction時,若sequence沒有發transaction的請求,則等待sequence發transaction的請求。

driver在取transaction時有兩種方法:

1)阻塞式,會一直等到有新的transaction才返回

seq_item_port.get_next_item(req);

…seq_item_port.item_done();

2)非阻塞式,嘗試著詢問sequencer是否有新的transaction,如果有,則得到此transaction,否則就直接返回。

seq_item_port.try_next_item(req);

if(req == null)

@(posedge vif.clk);

else begin

…seq_item_port.item_done();

end強烈建議只在build_phase中完成例項化。

1)在build_phase中主要通過config_db的set,get來傳參,以及例項化成員變數。

2)build_phase過載時,需要加入super.build_phase(phase),因為在其父類的build_phase中執行了一些必要的操作,這裡必須顯示地呼叫並執行它。

3)build_phase總是在**時間為0時執行。

連線元件間的port。

1)把include reg_model寫在乙個單獨的package裡,然後在不同的模組裡都通過import的方式匯入。

2)不要在monitor裡和scoreboard裡面發起讀rm的操作,影響整合,一般會在test裡面讀寫rm,可以通過reg_mst的monitor把需要的rm中的資料採集後,通過port傳到參考模型或是scoreboard。如果非要讀寫rm,則加個標識上,用來在整合時隔離這個讀寫的操作。

環境裡定義的每個檔案都要帶上if define. 

example:

`ifndef spi_mst_env_sv

`define spi_mst_env_sv

… `endif

參考模型裡面不能涉及到dut內部的訊號。
謹慎使用斷言裡的sequence,盡量不用。
異常場景一般會在正常場景測試完後再加,此時要注意不要為了測試異常場景,而修改了正常場景的環境。
每個while(1)中有等待的操作,則每個時間點都會去迴圈執行每個while(1)一次,其作用類似於開多個fork join_none的執行緒。

apache學習筆記(不斷更新)

win下 用putty.exe英文版 linux下 用命令 ssh l username p hostname 其中 表示埠 port username是使用者名稱 httpd.conf 學習 1.設定預設最先開啟的頁面 在httpd.conf裡directoryindex index.html這裡...

VC學習筆記(不斷更新)

改變檢視的背景顏色 可以通過兩種方式 1.填充區域。呼叫fillrect函式實現。2.擦除區域。通過呼叫patblt來實現。具體過程 1 建立畫刷物件,初始化畫刷。2 選入新畫刷,儲存舊畫刷。3 獲取客戶端區域。4 填充區域。擦除區域 5 還原舊畫刷。例子cbrush m brush rgb 0,1...

linux筆記(不斷更新)

首先安裝字型支援 apt get install language pack zh hant base language pack zh hans base 生成字符集 sudo dpkg reconfigure locales 然後選擇和zh開頭的用空格選上 安裝zhcon sudo apt in...