UVM = universal verification methodology(通用驗證方法學,基於sv)
- encapsulation(封裝)
- inheritance(繼承)
- polymorphism(多態)
基於verilog的驗證語言:
- verilog(功能模塊化、隨機化驗證的不足)
- systemC(基於C++,需要用戶自己管理內存)
- systemverilog(兼容verilog)
基於systemverilog的驗證方法學:
- VMM
- OVM
- UVM(三大EDA廠商均支持)
driver:將獲取的事務轉化爲pin級信號驅動DUT
sequencer:啓動sequence產生事務,並將事務發送給driver
monitor:檢測接口上的有效信號,並轉化爲事務,再發送到reference model 進行分析
agent:將sequencer、driver和monitor封裝起來,連接sequencer和driver
reference model:模擬DUT的行爲,根據激勵來產生結果,該結果會送入scoreboard中比對
slave agent中的monitor往往是捕獲DUT的輸出信號並轉化爲事務的功能組件
scoreboard:比較預期的結果與DUT的輸出結果是否一致
env:可包含多個agent、reference model、scoreboard以及其他連接組件和配置組件
testcase:測試案例,實例化env,配置env,啓動測試平臺
需要從UVM的基類擴展:
一個只有driver的UVM驗證平臺:
1、創建用戶所需的transaction
2、創建sequence(產生並控制sequence)
//req是指向產生事務對象的指針,repeat 10 ->產生10個事務對象
3、創建sequencer
由於sequence不能啓動body中的事務對象,需要由sequencer啓動
4、創建driver
5、創建monitor
6、創建agent
7、創建env
8、創建testcase
//config 1、 調用set的位置(mytest所調用)2、調用的路徑 3、目標變量的標識符 4、啓動sequence的類型(default_sequence指向my_sequence)
9、運行測試平臺
由於之前在testcase中加入了打印平臺結構的函數