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

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

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

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

jf_78858299 ? 來(lái)源:芯片學(xué)堂 ? 作者:JKZHAN ? 2023-02-14 16:55 ? 次閱讀

RAL(Register Abstract Layer,寄存器抽象層),通常也叫寄存器模型,顧名思義就是對(duì)寄存器這個(gè)部件的建模。本文要介紹的內(nèi)容,包括對(duì)UVM寄存器模型的概述,如何構(gòu)建寄存器模型,以及如何將寄存器模型集成到驗(yàn)證環(huán)境中。篇幅原因,將在下一篇文章再給出寄存器模型的操作圖鑒(前后門訪問(wèn)API),以及寄存器覆蓋率的收集。

01 寄存器模型概述

為什么要對(duì)寄存器建模,可能是初學(xué)者問(wèn)得較多的問(wèn)題。簡(jiǎn)單地說(shuō),寄存器建模要做的事情,就是在軟件的世界里面,復(fù)刻RTL中的寄存器。既然是面向軟件世界做的事情,自然就是為軟件所用,要么方便軟件觀測(cè),要么方便軟件使用。

圖片

這里的軟件,指的是整個(gè)驗(yàn)證環(huán)境所構(gòu)造出來(lái)的面向?qū)ο蟮氖澜?。有了寄存器模型,軟件世界中的參考模型(reference model)可以很方便的獲取到當(dāng)前RTL的功能配置和狀態(tài),我們也可以很方便的收集到對(duì)寄存器各個(gè)域段甚至位的測(cè)試覆蓋情況等等。

要達(dá)成這一目標(biāo),就需要考慮兩個(gè)基本的問(wèn)題:如何對(duì)寄存器進(jìn)行建模,以及建立怎樣的機(jī)制才可以讓寄存器模型是“實(shí)時(shí)”復(fù)刻RTL寄存器的(上圖中的虛線箭頭)。這也是本文后面兩個(gè)小節(jié)要介紹的內(nèi)容。

02 構(gòu)造寄存器模型

寄存器模型的框架實(shí)際上跟RTL中的寄存器組沒(méi)有什么兩樣。寄存器組中有的,寄存器模型也應(yīng)該要有,頂多是多了一些抽象?;谶@個(gè)想法,構(gòu)造寄存器模型的工作,便可以從硬件寄存器組的設(shè)計(jì),一一映射為對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。

寄存器最小的功能單元是域段(field)。一個(gè)寄存器要切分成多少個(gè)域段、每個(gè)域段的位寬、默認(rèn)值、讀寫屬性以及分別用于什么功能的控制或狀態(tài)的指示,是根據(jù)功能規(guī)范來(lái)定義的。對(duì)域段的建模,UVM類庫(kù)提供的類型叫uvm_reg_field。

寄存器是可作為單個(gè)實(shí)體被訪問(wèn)的多個(gè)域段的集合,它可以被映射到一個(gè)或者多個(gè)地址上(memory-mapped)被訪問(wèn)。對(duì)寄存器的建模,UVM提供的類型叫uvm_reg。為了提供后門訪問(wèn)(backdoor access),uvm_reg還增加了成員來(lái)表示其對(duì)應(yīng)的硬件寄存器在RTL中的層次路徑。

寄存器訪問(wèn)譯碼表,或者叫memory map,是寄存器接口從訪問(wèn)地址到使能對(duì)應(yīng)寄存器所需要的查找表。這張表中指定了每個(gè)寄存器的偏移地址(offset)、訪問(wèn)屬性、大小端、對(duì)應(yīng)的總線等配置。對(duì)memory map的建模,UVM提供的類型叫uvm_reg_map。

圖片

多個(gè)寄存器及其訪問(wèn)譯碼表最終構(gòu)成寄存器組。在同個(gè)數(shù)字系統(tǒng)的不同總線視角下,寄存器組可以映射到不同的基地址(base)。因此,一個(gè)寄存器組除了可以包含多個(gè)寄存器,還可以有多個(gè)譯碼表。UVM針對(duì)寄存器組的建模提供的類型叫uvm_reg_block。為了便于集中管理,uvm_reg_block還可以包含其他子uvm_reg_block。

在同一類族中,UVM還提供了uvm_mem類,用于對(duì)連續(xù)地址存儲(chǔ)空間的建模。uvm_mem對(duì)象也可以被集成到uvm_reg_block中,并通過(guò)uvm_reg_map做地址映射,

此外,UVM還提供了uvm_reg_file類。這個(gè)類更像是一個(gè)對(duì)象容器,可以用來(lái)裝載多個(gè)寄存器(uvm_reg)和其他uvm_reg_file,以便對(duì)相同規(guī)格的寄存器進(jìn)行多次例化。

03 集成到驗(yàn)證環(huán)境

如果只是簡(jiǎn)單把寄存器模型集成到驗(yàn)證環(huán)境,那么只要例化寄存器模型就可以了?,F(xiàn)在主要的問(wèn)題是,建立怎樣的機(jī)制才可以讓寄存器模型“實(shí)時(shí)”復(fù)刻RTL寄存器的值。為了解決這個(gè)問(wèn)題,UVM引入Prediction機(jī)制,用到了兩個(gè)新的組件:Adapter和Predictor。

Adapter,可以翻譯為適配器,它的作用是寄存器訪問(wèn)事務(wù)和總線事務(wù)的相互轉(zhuǎn)換。寄存器訪問(wèn)事務(wù)對(duì)數(shù)據(jù)的封裝格式相對(duì)固定,一般包含讀寫類型、地址、數(shù)據(jù)和字節(jié)掩碼。而總線事務(wù)則根據(jù)不同的總線協(xié)議會(huì)有所不同。因此,Adapter扮演了中間做事務(wù)轉(zhuǎn)換的角色,其主要實(shí)現(xiàn)的函數(shù)為reg2bus和bus2reg。

圖片

Predictor,是保持寄存器模型“實(shí)時(shí)”復(fù)刻RTL寄存器值的關(guān)鍵組件。Predictor翻譯過(guò)來(lái)叫預(yù)測(cè)器,可能反而不是很好理解,對(duì)其功能比較好的描述我覺(jué)得應(yīng)該是“monitor and update the RAL Model”。根據(jù)是否使用外部predictor,有兩種應(yīng)用方式:Implicit Prediction和Explicit Prediction。

隱式預(yù)測(cè)(Implicit Prediction):用戶使用寄存器模型中memory map默認(rèn)的predictor,當(dāng)開(kāi)啟其預(yù)測(cè)功能之后,如果用戶在測(cè)試用例中通過(guò)寄存器模型的API(下篇文章會(huì)介紹都有哪些API)去發(fā)起硬件寄存器訪問(wèn)操作,該操作會(huì)自動(dòng)被predictor捕捉,并在該操作完成之后自動(dòng)同步到寄存器模型的寄存器中。下圖為了方便展示,將原本同屬于寄存器模型中的memory map、registers和adapter分開(kāi)畫了。

圖片

顯式預(yù)測(cè)(Explicit Prediction):用戶基于UVM提供的基類uvm_reg_predictor實(shí)現(xiàn)preditor,并將monitor的總線事務(wù)傳遞給該predictor,同時(shí)將其關(guān)聯(lián)到寄存器模型的memory map和對(duì)應(yīng)總線事務(wù)的adapter適配器。工作邏輯是這樣的:該predictor相當(dāng)于可以根據(jù)memory map監(jiān)測(cè)總線上的寄存器訪問(wèn)行為,并將該行為通過(guò)adapter轉(zhuǎn)換成寄存器事務(wù),最終用于更新寄存器模型。

圖片

Explicit Prediction相對(duì)于Implicit Prediction,除了監(jiān)視通過(guò)寄存器模型API對(duì)寄存器的訪問(wèn)操作,還可以覆蓋到其他測(cè)試序列(sequence)通過(guò)總線對(duì)寄存器的直接訪問(wèn),這一點(diǎn)會(huì)使它更加通用。

相應(yīng)的代碼示例,也將在下一篇UVM系列文章中提供,歡迎關(guān)注。

參考資料

[1] Accellera Systems Initiative. "Universal Verification Methodology (UVM) 1.2 Class Reference" (2014).

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

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119193
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1461

    瀏覽量

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

    關(guān)注

    0

    文章

    181

    瀏覽量

    19085
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

    寄存器(register)是數(shù)字系統(tǒng)中非常重要的部件,它常被用于數(shù)字系統(tǒng)的功能控制(control)和狀態(tài)(status)顯示。RAL(Register Abstract Layer,寄存器抽象層
    發(fā)表于 09-23 14:29

    寄存器與移位寄存器

    寄存器與移位寄存器 寄存器是用來(lái)寄存數(shù)碼的邏輯部件,所以必須具備接收和寄存數(shù)碼的功能。任何一種觸發(fā)
    發(fā)表于 03-12 15:19 ?59次下載

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定義  寄存器是中央處理內(nèi)的組成部分。寄存器是有限存貯容量
    發(fā)表于 03-08 14:26 ?2.2w次閱讀

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思 數(shù)據(jù)寄存器數(shù)據(jù)寄存器包括累加AX、基址寄存器BX、計(jì)數(shù)
    發(fā)表于 03-08 14:38 ?1.2w次閱讀

    移位寄存器,移位寄存器是什么意思

    移位寄存器,移位寄存器是什么意思 移位寄存器_
    發(fā)表于 03-08 14:50 ?1.7w次閱讀

    寄存器與移位寄存器

    寄存器與移位寄存器:介紹寄存器原理和移位寄存器的原理及實(shí)現(xiàn)。
    發(fā)表于 05-20 11:47 ?0次下載

    AD轉(zhuǎn)換寄存器設(shè)置

    AD轉(zhuǎn)換寄存器設(shè)置AD轉(zhuǎn)換寄存器設(shè)置AD轉(zhuǎn)換寄存器設(shè)置
    發(fā)表于 11-10 17:36 ?16次下載
    AD轉(zhuǎn)換<b class='flag-5'>寄存器</b>設(shè)置

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

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

    簡(jiǎn)化UVM寄存器模型的使用教程

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

    RAL寄存器模型操作圖鑒

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

    簡(jiǎn)化UVM寄存器模型的使用

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

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

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

    RAL寄存器模型操作指南

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

    寄存器分為基本寄存器和什么兩種

    寄存器是計(jì)算機(jī)中用于存儲(chǔ)數(shù)據(jù)的高速存儲(chǔ)單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類型。 一、基本寄存器
    的頭像 發(fā)表于 07-12 10:31 ?631次閱讀