記錄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...