在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

SoC芯片上的寄存器設計與驗證

冬至子 ? 來源:長點芯 ? 作者:SJ ? 2023-10-20 10:39 ? 次閱讀

就像芯片本身一樣,SoC上的CSR設計也沿用了層級設計的方法。從最底層往上,寄存器可以被分為以下幾個層級。

  1. Reg Field
  2. Reg
  3. Reg Block
  4. Memory Map

下面我們就來一一簡單介紹一下,它們是如何在設計里面實現的。

1. Reg Field:

為了提升設計的效率,一個寄存器往往包含著許多功能的控制或是模塊的狀態,所以一個寄存器往往可以再向下分出幾個更小的配置單元來達到不同的目的。比如說下圖就是一個被設計了五個不同域的寄存器,每個域都有它特定的功能。

圖片

CSR中的不同域

圖片

A Register Block

2.Reg & Reg Block:

那么Reg本身不用說就是最常見的CSR unit了。而Reg Block則是根據SoC上不同模塊的Reg Collection組成的一個寄存器塊。比如對于SoC Top層的寄存器有控制 Direct Memory Access(DMA 的也有監視中斷狀態的寄存器。一個模塊的寄存器往往都擁有同一個 offset address 。如下圖所示。

3. Memory Map:

一個SoC上通常都有一個或多個processor cores,direct memory access(DMA),bus network interconnects和許多種 peripheral module 。而每個外設模塊都擁有一個它所有CSRReg BlockMemory Map就是這些所有Reg Block的頂層模塊,并為每個Reg Block定義了不同的地址范圍,每個Block都有它一個對應的 base address 。而且對于不同的 processor core ,這些地址范圍還可能不一樣,根據不同的 rocessor bus(Maybe AHB or AXI)

圖片

A Memory Map

第二部分:UVM中關于CSR的驗證方法學

在了解UVM Reg Model這一部分之前,讓我們先了解一下它的一些來源吧。

At the begining, UVM_RGM is not part of the Accellera standard, it is a user contribution from Cadence which is based on their use contribution from the OVM. UVM1.1 has a Register Abstaction as a part of the Accellera standard called UVM_REG. There is already multiple vendors that supprot generations producing UVM_REG descriptions

這是來自一個論壇上對于UVM_REG的介紹。大致意思就是UVM_REG的前身是 UVM_RGM ,在加入到Accellera標準之前,它其實是一個民間創建的package。所以我們可以簡單理解UVM_REG就是一個UVM的library。

UVM_REG重新定義了TB和設計中的寄存器,它提供了一種不同的驗證方法來簡化對芯片上的寄存器的仿真。那么它到底是如何簡化的呢?

就像設計中寄存器的層級結構,在搭建寄存器驗證環境的時候我們當然也想要一個能模仿DUT中CSR行為的結構,所以UVM Reg Model也提供了

  1. UVM Reg Field Class
  2. UVm Reg Class
  3. UVM Reg Block Class

1. UVM Reg Field Class:

正如前面所提,UVM將設計中的CSR每一層都抽象成了一種class。對于Reg Field而言就是uvm_reg_field這個class了。一般它在Reg Class中被聲明成rand類型的變量。

2. UVM Reg Class:

對于Reg本身,UVM定義了uvm_reg這一class,就像所有的Reg field需要繼承自uvm_reg_field一樣,寄存器驗證環境中的每個寄存器都要繼承自uvm_reg。如下code所示,Reg Field被聲明成rand類型的變量便于我們有時候做一些特殊的case,后面會介紹到。

就像所有uvm的class一樣,我們需要將它實例化才能夠真正使用它。這里我們看到一個函數——‘configure()‘這個configure()函數十分重要,它決定了這個寄存器中每個寄存器域的屬性,決定了這個域的訪問權限,是否具有失憶性等等。這在后面的驗證過程中十分重要!!!

圖片

在一個uvm_reg中聲明不同rand類型的域

3. UVM Reg Block Class:

當我們在環境里面定義了所有需要被仿真的寄存器后,就需要將它們集合在一起方便做一些更高層級的操作,就像DUT中的CSR一樣。這個時候我們就用到了uvm_reg_block這個class了。以下是一段uvm block的code。

圖片

在uvm_block中聲明所有這個block中的CSR

除了要聲明,實例化這些寄存器以外,也不要忘記使用configure()定義這些寄存器的屬性,并將它們添加到default map當中。一個reg_block的對象就是一個Register model然后通過它可以訪問到里面所有的寄存器進行讀寫操作。

圖片

configure函數

第三部分:如何用UVM搭建CSR驗證環境

到目前為止,我們只知道了如何去構建一個類似于DUT中的寄存器仿真模型(有點reference model內味兒)。但如何讓環境中的寄存器模型“動起來”,like模擬DUT中CSR的讀寫操作還仍未知曉。

當然,這只是寄存器仿真環境的一部分,要想進行寄存器操作,我們還需要向bus發送bus transaction,就像直接通過普通的bus agent向外設寄存器配置接口發送讀寫的transaction一樣。

但在我們繼續這個環境的剩余部分之前我還需要向你們介紹UVM Reg中兩個重要的概念——Mirror Value和Desired Value。這兩個概念十分重要,對于理解后面UVM Reg內建的各種task和sequence幫助巨大!

Desired Value:

這個value可以理解成我們期望DUT寄存器中的值。寄存器模型中的這個變量其實就是我們預先設定好而后再更新同步到DUT中的寄存器里。如下圖:

圖片

CSR中的期望值

Mirrored Value:

而mirror value則是盡它最大的可能反應實際DUT中的值,每次我們通過寄存器模型發送讀寫操作到DUT中,對應寄存器的mirror value都會被更新。如下圖:

圖片

CSR中的鏡像值

實際上,整個寄存器環境一共有四個組成部分:

圖片

寄存器模型環境整體

  1. Register Model
  2. Agent
  3. Adapter
  4. Predictor

Register Model就是上文用了大量筆墨提到的一個組成部分。Agent也與其他常規驗證環境中的agent類似,依據不同的protocol將不同的transaction通過agent作為激勵送到DUT中。下面我們將重點介紹一下在寄存器環境中特有的兩個組成部分:AdapterPredictor

Adapter:

由于寄存器模型中的seq有它特有的封裝方式,所以為了將寄存器模型類型的seq轉化成bus agent可識別的bus transaction,我們需要一個轉換器,同理來自bus agent的transaction也需要經過Adapter的轉換才能將來自DUT的信息同步到寄存器模型中。Adapter中最重要的兩個函數就是reg2bus()bus2reg() 了,分別對應上述的兩個方向的transaction的轉化。

Predictor:

Predictor的作用也是用來同步寄存器模型中的值的。但經常,如果我們只通過寄存器模型里發起sequence,我們只擁有一個adpter就足夠同步寄存器模型里面的值通過寄存器模型built-in的task——read(),write(),因為這些內建的task中都有predict()函數,它的作用就是來將我們配置或從DUT收集來的值同步到寄存器模型中。但如果有一些配置DUT中寄存器的transaction來自于其他sequencer發送到bus agent的話,這個時候寄存器模型就不能實時的更新了,這有可能使我們最后的check mismatch。

所以predictor的main idea就是在環境中增添了一個連接agent中monitor的component來無時無刻監視著bus agent的動態,只要有任何write/read transaction經過,都會將其同步回寄存器模型中。

圖片

集成了predictor的寄存器模型環境

ok,現在我們已經具備了寄存器模型環境中的所有所需要的“磚頭”了,那么接下來就是如何將他們搭建成一個完整的房子了。如同其他所有驗證環境一樣,我們要在build phase將它們一個個實例化,然后在connect phase中再將它們銜接在一起。以下是一個簡易的寄存器模型環境的實例,僅供參考。

結語

寄存器雖然在整個芯片當中作為一個設計風險較小的組成部分,但在SoC驗證過程中是要優先完成驗證的部分。如果由于一個頂層寄存器的問題而導致一個芯片上大部分模塊無法正常工作是很耽誤驗證時效的。對于寄存器驗證來講,特別是一個有很多寄存器的芯片來講,如何通過UVM Reg進行高效,靈活的寄存器驗證十分重要!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • CSR
    CSR
    +關注

    關注

    3

    文章

    118

    瀏覽量

    69641
  • SoC芯片
    +關注

    關注

    1

    文章

    612

    瀏覽量

    34921
  • UVM
    UVM
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19171
  • 狀態寄存器
    +關注

    關注

    0

    文章

    39

    瀏覽量

    7088
  • DUT
    DUT
    +關注

    關注

    0

    文章

    189

    瀏覽量

    12386
收藏 人收藏

    評論

    相關推薦

    寄存器與移位寄存器

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

    寄存器應用舉例

    寄存器應用舉例   在9.2.3寄存器的應用一節中,曾介紹利用寄存器集成芯片74LS194構造的兩種脈沖分配器:環形計數和扭環形計數
    發表于 05-17 00:02 ?1686次閱讀
    <b class='flag-5'>寄存器</b>應用舉例

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

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

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

    數據寄存器,數據寄存器是什么意思 數據寄存器數據寄存器包括累加AX、基址寄存器BX、計數
    發表于 03-08 14:38 ?1.3w次閱讀

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

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

    寄存器傳輸級低功耗設計方法

    寄存器傳輸級的低功耗設計對降低整個芯片的功耗作用非常顯著,本文討論的三種寄存器傳輸級低功耗設計方法,經驗證對動態功耗的降低很有效。
    發表于 02-16 18:12 ?1469次閱讀
    <b class='flag-5'>寄存器</b>傳輸級低功耗設計方法

    寄存器組網絡處理寄存器分配技術

    本內容提供了多寄存器組網絡處理寄存器分配技術
    發表于 06-28 15:26 ?28次下載
    多<b class='flag-5'>寄存器</b>組網絡處理<b class='flag-5'>器</b><b class='flag-5'>上</b>的<b class='flag-5'>寄存器</b>分配技術

    寄存器與移位寄存器

    寄存器與移位寄存器:介紹寄存器原理和移位寄存器的原理及實現。
    發表于 05-20 11:47 ?0次下載

    芯片寄存器

    芯片寄存器作為一個嵌入式開發人員,從接觸第一塊單片機的時候,就一定會聽到一個此,叫做寄存器。單片機的很多功能都是通過配置修改寄存器來實現的。我們了解
    發表于 11-23 16:21 ?50次下載
    <b class='flag-5'>芯片</b>與<b class='flag-5'>寄存器</b>

    GPIO寄存器

    每組IO口有10個寄存器組成,如果芯片有GPIOA~GPIOI,9個組那么一共有90個寄存器如果配置一個IO口需要2個位,那么剛好32位寄存器配置一組IO口16個IO口如果配置一個IO
    發表于 12-08 17:06 ?5次下載
    GPIO<b class='flag-5'>寄存器</b>

    深度學習_硬件知識_寄存器與下拉寄存器

    寄存器寄存器是控制對應端口上拉使能的。當對應位為0時,設置對應引腳上拉使能,對應位為1時,禁止對應引腳上拉使能。如果
    發表于 01-14 14:31 ?10次下載
    深度學習_硬件知識_<b class='flag-5'>上</b>拉<b class='flag-5'>寄存器</b>與下拉<b class='flag-5'>寄存器</b>

    ARM通用寄存器及狀態寄存器詳解

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

    簡述RAL寄存器模型基礎

    ,以及如何將寄存器模型集成到驗證環境中。篇幅原因,將在下一篇文章再給出寄存器模型的操作圖鑒(前后門訪問API),以及寄存器覆蓋率的收集。
    的頭像 發表于 02-14 16:55 ?2727次閱讀
    簡述RAL<b class='flag-5'>寄存器</b>模型基礎

    車載芯片安全寄存器的布局設計

    我們知道在車載芯片的數字實現中,常用的安全機制有安全寄存器(Safety Register),所以識別出關鍵路徑失效風險高的寄存器(也就是熱點寄存
    的頭像 發表于 05-22 10:25 ?1439次閱讀
    車載<b class='flag-5'>芯片</b>安全<b class='flag-5'>寄存器</b>的布局設計

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

    寄存器是計算機中用于存儲數據的高速存儲單元,它們是CPU內部的重要組成部分。寄存器可以分為基本寄存器和擴展寄存器兩種類型。 一、基本寄存器
    的頭像 發表于 07-12 10:31 ?1375次閱讀
    主站蜘蛛池模板: 7777奇米| 女人aaaaa片一级一毛片| 狠狠色噜噜狠狠狠狠91| 日韩午夜大片| 6969精品视频在线观看| 午夜啪啪网站| 天堂网2014| 国产精品李雅在线观看| 国产一级影院| 亚洲六月丁香六月婷婷花| 狠狠色丁香婷婷综合久久来| 奇米999| 国产2021成人精品| 寄宿日记在线看| 国产一级免费视频| 亚洲天堂不卡| 99久久伊人| 羞羞漫画喷水漫画yy漫画| 免费在线看黄色| 精品久久久久久久久久| 亚洲综合亚洲综合网成人| 国产精品99r8免费视频2022| 日本人69xxxxxxx69| 色综合久久综合| 天天骑天天射| 高h文男主又粗又狠| 国产一区二区三区四卡| 操视频网站| 日本黄a| 久久久久久久成人午夜精品福利| 一级毛片在线免费视频| 俺也去第四色| 性夜黄a爽影免费看| 久久久久久久综合色一本| 69国产视频| 青青青青久久精品国产h| 久久免费香蕉视频| 四虎在线免费视频| 日本视频免费高清一本18| 亚洲国产精品网站久久| 午夜免费观看_视频在线观看 |