什么是reg_model鏡像值?
DUT的配置寄存器的值是實際值,reg_model有鏡像值、期望值的概念。
鏡像值:存放我們認為此時DUT里寄存器的實際值。
期望值:存放我們期望DUT寄存器被賦予的值。
什么是auto predict?
那么怎么更新reg_model里面的鏡像值呢?有三種方式更新reg_model里面的鏡像值。
方式1:reg_model調(diào)用自己的auto predict
舉個例子,如下圖,model.regA.write(47),通過regA找到對應(yīng)的uvm_reg_item,然后找到address_map里面對應(yīng)的地址,用adapter完成轉(zhuǎn)換得到bus_item并給到sequencer。然后通過driver的讀寫完成reg_model寄存器的鏡像值刷新。
在寄存器模型創(chuàng)建的組件的connect_phase()調(diào)用寄存器模型中的uvm_reg_map的set_auto_predict(on)來選擇打開(on=1)或關(guān)閉(on=0)自動預(yù)測功能,默認關(guān)閉。
景芯SoC驗證項目采用的就是auto_predict,如下圖,在SoC_subsys_env.sv里面connect_phase階段寫一句regmodel.default_map.set_auto_predict(1)即可。默認是關(guān)閉的。
自動預(yù)測打開的優(yōu)點在于我們UVM環(huán)境實現(xiàn)起來會比較簡單,工作量大大降低,缺點是無法predict寄存器模型之外的總線行為(例如sequence),因而不能保證寄存器模型與DUT的實時匹配。
方式2:關(guān)閉自動預(yù)測功能并實例化uvm_reg_predictor
如果關(guān)閉自動預(yù)測功能,那么我們需要將uvm_reg_predictor實例化(或者繼承一個我們自己的predictor),將predictor實例與我們monitor相連接(這里還需要我們monitor能夠正確抓去總線數(shù)據(jù)),這樣predictor就會實時的獲取monitor所監(jiān)測到的transaction信息,通過transaction中提供的address信息與uvm_reg_map中的寄存器address進行匹配進而發(fā)起相應(yīng)的uvm_reg的predict()行為。
這樣一來uvm_reg的predict行為就跟寄存器模型中的讀寫行為脫鉤了,只是跟monitor上的行為想關(guān)聯(lián),即使不是寄存器模型發(fā)起的讀寫(例如通過一般的sequence發(fā)起的總線讀寫),也是可以實時的更新寄存器模型中的鏡像值和期望值,這樣做更能保證寄存器模型中的值與DUT中的寄存器值最大程度的保持一致。
方式3:reg_model被動實例化uvm_reg_predictor
reg_model不做寄存器配置,僅作為被動檢測,由bus agent的monitor來獲取DUT的寄存器配置值,經(jīng)過adapter轉(zhuǎn)為為address和data,address從map關(guān)系中找到對應(yīng)的register,然后把data通過uvm_reg_item返回給reg_model。
我們需要在寄存器模型創(chuàng)建的組件的connect_phase()調(diào)用寄存器模型中的uvm_reg_map的set_auto_predict(on)來選擇打開(on=1)或關(guān)閉(on=0)自動預(yù)測功能,默認關(guān)閉。
自動預(yù)測打開的優(yōu)點在于我們UVM環(huán)境實現(xiàn)起來會比較簡單,工作量大大降低,缺點是無法predict寄存器模型之外的總線行為(例如sequence),因而不能保證寄存器模型與DUT的實時匹配。
關(guān)閉自動預(yù)測我們就需要實例化uvm_reg_predictor,并將uvm_reg_predictor實例中的bus_in與我們的uvm_monitor中的uvm_analysis_port相連接,這就需要我們保證uvm_monitor實現(xiàn)必須完善,這樣就可以保證我們寄存器模型與DUT中的寄存器值最大可能的保持一致性。
-
寄存器
+關(guān)注
關(guān)注
31文章
5290瀏覽量
119789 -
soc
+關(guān)注
關(guān)注
38文章
4087瀏覽量
217742 -
模型
+關(guān)注
關(guān)注
1文章
3108瀏覽量
48646 -
DUT
+關(guān)注
關(guān)注
0文章
189瀏覽量
12306
原文標(biāo)題:詳解寄存器模型reg_model的auto_predict
文章出處:【微信號:全棧芯片工程師,微信公眾號:全棧芯片工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論