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

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

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

RAL寄存器模型操作指南

sanyue7758 ? 來源:芯片學(xué)堂 ? 2023-07-12 09:37 ? 次閱讀

寄存器模型操作,指的是通過寄存器模型對RTL中寄存器進行讀寫訪問,或者同步寄存器模型與RTL中寄存器的值。對寄存器模型的操作,可以通過調(diào)用模型提供的方法來實現(xiàn)。這些方法的調(diào)用,建立在已經(jīng)完成寄存器模型的構(gòu)建和集成到驗證環(huán)境的基礎(chǔ)上。

本文將展開介紹寄存器模型訪問上的一些內(nèi)容,包括寄存器域段的成員值、寄存器的前后門訪問以及具體各種訪問方法圖示。

01 寄存器域段

按照前文介紹UVM寄存器模型基礎(chǔ)時的描述,寄存器域段(uvm_reg_field)是構(gòu)造寄存器模型最小的功能單元。這也就意味著,寄存器的值,是由多個域段的值拼接起來的。那么,在介紹寄存器的訪問方法之前,有必要先看看寄存器的域段都是怎么存放值的。

從uvm_reg_field類型定義的源碼可以看到,跟域值相關(guān)的成員變量有這么幾個:value, m_mirrored, m_desired, m_reset[“HARD”]。它們的數(shù)據(jù)類型均為uvm_reg_data_t,其實也就是UVM對bit unsigned [`UVM_REG_DATA_WIDTH-1:0]的類型重命名。

e681b9c2-1ffc-11ee-962d-dac502259ad0.png

盡管除value以外其他三個成員都是local可見的,但是知道這些local成員的存在和意義,對理解和使用后面要介紹的操作方法會有很大的幫助。

02 前后門訪問

寄存器的前門訪問(front door access),指的是Testbench所發(fā)出的寄存器操作,都會被轉(zhuǎn)換成總線事務(wù),并實際驅(qū)動到DUT的總線上,會占用總線和消耗總線周期。換句話說,這種寄存器訪問方式跟其他硬件組件訪問寄存器一樣,是從”明面“上對寄存器進行訪問。

寄存器的后門訪問(back door access),指的是用戶通過仿真器,對DUT中指定路徑的寄存器信號進行改寫或讀取。這種寄存器訪問方式不需要消耗仿真時間,畢竟”走后門“總是要比走前門要方便快捷很多。后門訪問的前提是,在建立寄存器模型的時候,指定了對應(yīng)寄存器在DUT中的路徑(HDL_path)。

e6d04b28-1ffc-11ee-962d-dac502259ad0.png

后門訪問帶來的壞處是,這種直接改寫和讀取寄存器的操作不會被反映成總線行為,也就無法覆蓋到寄存器訪問涉及到的總線系統(tǒng),以及總線上其他相關(guān)的邏輯模塊。舉個栗子,后門訪問可以掩蓋掉總線系統(tǒng)上本來存在著的地址譯碼錯誤。總結(jié)起來:除一些特殊的測試場景,寄存器的訪問少走后門,多走前門。

下一小節(jié)介紹寄存器模型操作方法的同時,也會提到哪些是對寄存器的前門訪問,哪些是后門訪問。

03 寄存器模型方法

寄存器模型方法有很多,大致如下圖所示。由于方法較多,本文就不再列出這些方法的原型,有需要的讀者完全可以通過UVM提供的類型手冊找到非常詳細的函數(shù)原型和說明。

e73eb25c-1ffc-11ee-962d-dac502259ad0.png

對寄存器的訪問方法,無非是對DUT中寄存器,或者是對寄存器模型中各個成員值的改寫或讀取。因此,可以整理出每種方法對這些值的影響(見下圖),然后總結(jié)出來常用場景下的操作組合。下圖中彩色漸變格式表示操作的開始。

wKgZomSuBFyAETcNAAChHDkW6mc053.jpg

在大多數(shù)的應(yīng)用場景,對寄存器的訪問完全可以通過write(value) & read()這樣的組合來完成,也可以選用set(value)先修改期望值,然后在通過update()函數(shù)去做同步。這樣的好處是,如果RTL寄存器的值已經(jīng)是我們的期望值,那么就不會也沒有必要再浪費總線資源去重新配置一遍。





審核編輯:劉清

聲明:本文內(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

    文章

    5343

    瀏覽量

    120385
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59797
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19171
  • HDL語言
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

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

    關(guān)注

    0

    文章

    189

    瀏覽量

    12386

原文標題:RAL寄存器模型操作圖鑒

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

收藏 人收藏

    評論

    相關(guān)推薦

    寄存器是什么?怎么操作寄存器點亮LED燈?

    寄存器,是集成電路中非常重要的一種存儲單元,通常由觸發(fā)組成。在集成電路設(shè)計中,寄存器可分為電路內(nèi)部使用的寄存器和充當(dāng)內(nèi)外部接口的寄存器這兩
    的頭像 發(fā)表于 07-21 16:59 ?4044次閱讀
    <b class='flag-5'>寄存器</b>是什么?怎么<b class='flag-5'>操作</b><b class='flag-5'>寄存器</b>點亮LED燈?

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

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

    如何構(gòu)建UVM寄存器模型并將寄存器模型集成到驗證環(huán)境中

    模型操作圖鑒(前后門訪問API),以及寄存器覆蓋率的收集。01 寄存器模型概述為什么要對寄存器
    發(fā)表于 09-23 14:29

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

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

    寄存器變量

    C語言中使用關(guān)鍵字register來聲明局部變量為寄存器變量。寄存器變量的值會被存放在CPU的寄存器中,每當(dāng)需要使用它們時,CPU就可以直接使用,而無須再通過控制從內(nèi)存中獲取。由于
    發(fā)表于 06-03 10:13 ?2383次閱讀

    C語言:寄存器操作

    C語言:寄存器操作
    發(fā)表于 01-13 12:56 ?6次下載
    C語言:<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>

    STM32的寄存器操作

    STM32的寄存器操作在使用STM32單片機編程時一般都用ST給的庫函數(shù)編程,庫函數(shù)編程的底層就是對單片機寄存器操作,庫函數(shù)就是一系列寄存器
    發(fā)表于 01-13 15:43 ?19次下載
    STM32的<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>

    簡化UVM寄存器模型的使用教程

    當(dāng)我開始使用UVM RAL時,我無法理解UVM基類庫對更新Desired和Mirror 寄存器的解釋。覺得使用的術(shù)語并不能準確地反映里面的真實的意思?;艘恍r間后,我想出了一個表格,它可以幫助我理解寄存器
    的頭像 發(fā)表于 01-30 15:25 ?2268次閱讀
    簡化UVM<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>的使用教程

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

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

    VersaClock 6 系列寄存器描述和編程指南

    VersaClock 6 系列寄存器描述和編程指南
    發(fā)表于 03-15 19:12 ?0次下載
    VersaClock 6 系列<b class='flag-5'>寄存器</b>描述和編程<b class='flag-5'>指南</b>

    RAL寄存器模型操作圖鑒

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

    簡化UVM寄存器模型的使用

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

    VersaClock 6 系列寄存器描述和編程指南

    VersaClock 6 系列寄存器描述和編程指南
    發(fā)表于 07-05 20:54 ?0次下載
    VersaClock 6 系列<b class='flag-5'>寄存器</b>描述和編程<b class='flag-5'>指南</b>

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

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

    如何在shell中操作寄存器

    shell 中操作寄存器可以使用 devmem 命令. devmem 命令其實就是上述應(yīng)用層操作寄存器生成的可執(zhí)行文件,只不過busybox已經(jīng)幫我們實現(xiàn)了。 devmem 命令格式:
    的頭像 發(fā)表于 09-26 16:39 ?1060次閱讀