UVM(二)

UVM庫(在類庫中使用繼承和封裝)

  • TLM(TLM是組件之間通信的標準)
  • structural Elements(不同方法學的通用類:組件、信息系統、仿真階段等等)
  • methodology(用戶實現平臺重用的主要接口,用戶可以在不改變代碼的情況下更改平臺配置、替換平臺組件、更換不同的激勵甚至仿真行爲)

在這裏插入圖片描述
UVM package 包含三個主要的類:

  • uvm_component(構建UVM testbench 層次結構最基本的類)
  • uvm_object(作爲UVM的一種數據結構,可作爲配置對象來配置測試平臺)
  • uvm_transaction(用來產生激勵和收集響應)

在這裏插入圖片描述
在這裏插入圖片描述
UVM結構樹:
在這裏插入圖片描述
在這裏插入圖片描述
實際的UVM結構樹:
在這裏插入圖片描述
構建的原因:
(1)爲config機制提供搜索路徑
(2)爲override機制提供搜索路徑
(3)是phase自動執行的需要

UVM phase
在這裏插入圖片描述
在執行過程中左右過程是並行執行的

爲什麼需要phase?
從驗證平臺的構建,到配置,到連接,再到運行,最後停止需要有一定的先後順序。
(1)將創建對象的語句打包放入build_phase()中執行
(2)將組件之間的連接打包放入connect_phase()中執行//即保證build phase先於connect phase執行即可
在這裏插入圖片描述
在這裏插入圖片描述
其中分爲task phase(消耗時間) &function phase(不消耗時間)黃色爲task_phase,橙色爲function_phase

注意:
(1)只有當所有的component的同名phase都執行完畢,纔會執行下一個phase
(2)同名phase在不同的component中的執行順序
(3)run phase 與12個run-time phase的關係
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
啓動UVM平臺會自動啓動phase

uvm objection

  • 控制task phase 的運行和終止
  • 同步各個components同名的task phase

(在task phase中調用raise_objection()和drop_objection(),task phase其他需要執行的語句放在這兩個方法之間)

注意:

  • objection對於task phase纔有意義
  • 在執行消耗仿真時間語句之前raise_objection()
  • 在task phase結束時drop_objection()
  • 建議每一個task phase都raise,drop一次

在這裏插入圖片描述
但是在log文件中並未找到reset_phase中打印的語句
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
儘管在monitor.sv中沒有raise和drop函數,但通過log文件顯示仍執行了reset task,這是由於在drive.sv中有相同的reset task,從而執行task

在這裏插入圖片描述
在這裏插入圖片描述
將仿真時間延後至monitor的reset task,會出現沒有reset task的執行
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章