0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解寄存器模型鏡像值

全棧芯片工程師 ? 來源:全棧芯片工程師 ? 2024-10-23 09:43 ? 次閱讀

什么是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寄存器的鏡像值刷新。

5cbfad96-9073-11ef-a511-92fbcf53809c.png

在寄存器模型創(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)閉的。

5cde59f8-9073-11ef-a511-92fbcf53809c.png

自動預(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中的寄存器值最大程度的保持一致。

5d0129b0-9073-11ef-a511-92fbcf53809c.png

方式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。

5d30bf22-9073-11ef-a511-92fbcf53809c.png

我們需要在寄存器模型創(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中的寄存器值最大可能的保持一致性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5290

    瀏覽量

    119789
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4087

    瀏覽量

    217742
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3108

    瀏覽量

    48646
  • DUT
    DUT
    +關(guān)注

    關(guān)注

    0

    文章

    189

    瀏覽量

    12306

原文標(biāo)題:詳解寄存器模型reg_model的auto_predict

文章出處:【微信號:全棧芯片工程師,微信公眾號:全棧芯片工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于DWC2的USB驅(qū)動開發(fā)-發(fā)送相關(guān)的寄存器DMA寄存器詳解

    本文轉(zhuǎn)自公眾號,歡迎關(guān)注 基于DWC2的USB驅(qū)動開發(fā)-發(fā)送相關(guān)的寄存器DMA寄存器詳解 (qq.com) 前言 如下寄存器DIEPxxx,對應(yīng)IN端點,和發(fā)送數(shù)據(jù)相關(guān),這一篇先介紹和
    的頭像 發(fā)表于 07-16 16:42 ?1547次閱讀
    基于DWC2的USB驅(qū)動開發(fā)-發(fā)送相關(guān)的<b class='flag-5'>寄存器</b>DMA<b class='flag-5'>寄存器</b><b class='flag-5'>詳解</b>

    UVM寄存器模型的常規(guī)方法有哪些呢?

    在應(yīng)用寄存器模型時, 除了利用它的寄存器信息, 還可以利用它來跟蹤寄存器。
    的頭像 發(fā)表于 11-25 09:27 ?1665次閱讀
    UVM<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>的常規(guī)方法有哪些呢?

    ARM寄存器詳解

    ARM有37個寄存器,其中31個通用寄存器,6個狀態(tài)寄存器。   這里尤其要注意區(qū)別的是ARM自身寄存器和它的一些外設(shè)的寄存器的區(qū)別。
    發(fā)表于 07-10 10:04 ?2925次閱讀

    DSP2812寄存器詳解

    DSP2812寄存器詳解DSP2812寄存器詳DSP2812寄存器詳解
    發(fā)表于 01-08 14:17 ?8次下載

    51寄存器的所有寄存器名稱,(包括寄存器每一位的作用及用法)資源詳解

    51寄存器的所有寄存器名稱,(包括寄存器每一位的作用及用法)資源詳解
    發(fā)表于 10-16 13:04 ?14次下載
    51<b class='flag-5'>寄存器</b>的所有<b class='flag-5'>寄存器</b>名稱,(包括<b class='flag-5'>寄存器</b>每一位的作用及用法)資源<b class='flag-5'>詳解</b>

    移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途

    移位寄存器是一個具有移位功能的寄存器,是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移。本文主要介紹了移位寄存器的用途以及移位寄存器
    發(fā)表于 12-22 15:49 ?2w次閱讀

    寄存器操作方法_對寄存器操作的通用方法總結(jié)

    本文主要詳解寄存器操作方法以及對寄存器操作的通用方法總結(jié),具體的跟隨小編來了解一下。
    的頭像 發(fā)表于 05-22 15:53 ?2.2w次閱讀

    ARM通用寄存器及狀態(tài)寄存器詳解

    筆者來聊聊ARM通用寄存器以及狀態(tài)寄存器的認識與理解。
    的頭像 發(fā)表于 01-06 14:58 ?6840次閱讀

    簡述RAL寄存器模型基礎(chǔ)

    RAL(Register Abstract Layer,寄存器抽象層),通常也叫寄存器模型,顧名思義就是對寄存器這個部件的建模。本文要介紹的內(nèi)容,包括對UVM
    的頭像 發(fā)表于 02-14 16:55 ?2646次閱讀
    簡述RAL<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>基礎(chǔ)

    RAL寄存器模型操作圖鑒

    寄存器模型操作,指的是通過寄存器模型對RTL中寄存器進行讀寫訪問,或者同步寄存器
    的頭像 發(fā)表于 05-17 09:01 ?880次閱讀
    RAL<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>操作圖鑒

    簡化UVM寄存器模型的使用

    當(dāng)我開始使用 UVM RAL 時,我無法理解 UVM 基類庫對更新所需鏡像寄存器有什么看法。我還認為,所使用的術(shù)語沒有準確反映其意
    的頭像 發(fā)表于 05-29 10:15 ?1145次閱讀
    簡化UVM<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>的使用

    基于DUT內(nèi)部寄存器鏡像

    寄存器模型保持著DUT內(nèi)部寄存器鏡像(mirror) 。 鏡像
    的頭像 發(fā)表于 06-24 12:02 ?827次閱讀

    寄存器模型Register Model學(xué)習(xí)筆記

    UVM的寄存器模型是一組高級抽象的類,用來對DUT中具有地址映射的寄存器和存儲進行建模。
    的頭像 發(fā)表于 07-11 09:20 ?1935次閱讀
    <b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>Register Model學(xué)習(xí)筆記

    RAL寄存器模型操作指南

    寄存器模型操作,指的是通過寄存器模型對RTL中寄存器進行讀寫訪問,或者同步寄存器
    的頭像 發(fā)表于 07-12 09:37 ?1004次閱讀
    RAL<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>操作指南

    如何理解 RAMECC FAR 寄存器

    如何理解 RAMECC FAR 寄存器
    的頭像 發(fā)表于 10-19 18:19 ?606次閱讀
    如何理解 RAMECC FAR <b class='flag-5'>寄存器</b>的<b class='flag-5'>值</b>