欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

SoC芯片上的寄存器設(shè)計(jì)與驗(yàn)證

冬至子 ? 來(lái)源:長(zhǎng)點(diǎn)芯 ? 作者:SJ ? 2023-10-20 10:39 ? 次閱讀

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

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

下面我們就來(lái)一一簡(jiǎn)單介紹一下,它們是如何在設(shè)計(jì)里面實(shí)現(xiàn)的。

1. Reg Field:

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

圖片

CSR中的不同域

圖片

A Register Block

2.Reg & Reg Block:

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

3. Memory Map:

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

圖片

A Memory Map

第二部分:UVM中關(guān)于CSR的驗(yàn)證方法學(xué)

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

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

這是來(lái)自一個(gè)論壇上對(duì)于UVM_REG的介紹。大致意思就是UVM_REG的前身是 UVM_RGM ,在加入到Accellera標(biāo)準(zhǔn)之前,它其實(shí)是一個(gè)民間創(chuàng)建的package。所以我們可以簡(jiǎn)單理解UVM_REG就是一個(gè)UVM的library。

UVM_REG重新定義了TB和設(shè)計(jì)中的寄存器,它提供了一種不同的驗(yàn)證方法來(lái)簡(jiǎn)化對(duì)芯片上的寄存器的仿真。那么它到底是如何簡(jiǎn)化的呢?

就像設(shè)計(jì)中寄存器的層級(jí)結(jié)構(gòu),在搭建寄存器驗(yàn)證環(huán)境的時(shí)候我們當(dāng)然也想要一個(gè)能模仿DUT中CSR行為的結(jié)構(gòu),所以UVM Reg Model也提供了

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

1. UVM Reg Field Class:

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

2. UVM Reg Class:

對(duì)于Reg本身,UVM定義了uvm_reg這一class,就像所有的Reg field需要繼承自u(píng)vm_reg_field一樣,寄存器驗(yàn)證環(huán)境中的每個(gè)寄存器都要繼承自u(píng)vm_reg。如下code所示,Reg Field被聲明成rand類型的變量便于我們有時(shí)候做一些特殊的case,后面會(huì)介紹到。

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

圖片

在一個(gè)uvm_reg中聲明不同rand類型的域

3. UVM Reg Block Class:

當(dāng)我們?cè)诃h(huán)境里面定義了所有需要被仿真的寄存器后,就需要將它們集合在一起方便做一些更高層級(jí)的操作,就像DUT中的CSR一樣。這個(gè)時(shí)候我們就用到了uvm_reg_block這個(gè)class了。以下是一段uvm block的code。

圖片

在uvm_block中聲明所有這個(gè)block中的CSR

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

圖片

configure函數(shù)

第三部分:如何用UVM搭建CSR驗(yàn)證環(huán)境

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

當(dāng)然,這只是寄存器仿真環(huán)境的一部分,要想進(jìn)行寄存器操作,我們還需要向bus發(fā)送bus transaction,就像直接通過(guò)普通的bus agent向外設(shè)寄存器配置接口發(fā)送讀寫的transaction一樣。

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

Desired Value:

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

圖片

CSR中的期望值

Mirrored Value:

而mirror value則是盡它最大的可能反應(yīng)實(shí)際DUT中的值,每次我們通過(guò)寄存器模型發(fā)送讀寫操作到DUT中,對(duì)應(yīng)寄存器的mirror value都會(huì)被更新。如下圖:

圖片

CSR中的鏡像值

實(shí)際上,整個(gè)寄存器環(huán)境一共有四個(gè)組成部分:

圖片

寄存器模型環(huán)境整體

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

Register Model就是上文用了大量筆墨提到的一個(gè)組成部分。Agent也與其他常規(guī)驗(yàn)證環(huán)境中的agent類似,依據(jù)不同的protocol將不同的transaction通過(guò)agent作為激勵(lì)送到DUT中。下面我們將重點(diǎn)介紹一下在寄存器環(huán)境中特有的兩個(gè)組成部分:AdapterPredictor

Adapter:

由于寄存器模型中的seq有它特有的封裝方式,所以為了將寄存器模型類型的seq轉(zhuǎn)化成bus agent可識(shí)別的bus transaction,我們需要一個(gè)轉(zhuǎn)換器,同理來(lái)自bus agent的transaction也需要經(jīng)過(guò)Adapter的轉(zhuǎn)換才能將來(lái)自DUT的信息同步到寄存器模型中。Adapter中最重要的兩個(gè)函數(shù)就是reg2bus()bus2reg() 了,分別對(duì)應(yīng)上述的兩個(gè)方向的transaction的轉(zhuǎn)化。

Predictor:

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

所以predictor的main idea就是在環(huán)境中增添了一個(gè)連接agent中monitor的component來(lái)無(wú)時(shí)無(wú)刻監(jiān)視著bus agent的動(dòng)態(tài),只要有任何write/read transaction經(jīng)過(guò),都會(huì)將其同步回寄存器模型中。

圖片

集成了predictor的寄存器模型環(huán)境

ok,現(xiàn)在我們已經(jīng)具備了寄存器模型環(huán)境中的所有所需要的“磚頭”了,那么接下來(lái)就是如何將他們搭建成一個(gè)完整的房子了。如同其他所有驗(yàn)證環(huán)境一樣,我們要在build phase將它們一個(gè)個(gè)實(shí)例化,然后在connect phase中再將它們銜接在一起。以下是一個(gè)簡(jiǎn)易的寄存器模型環(huán)境的實(shí)例,僅供參考。

結(jié)語(yǔ)

寄存器雖然在整個(gè)芯片當(dāng)中作為一個(gè)設(shè)計(jì)風(fēng)險(xiǎn)較小的組成部分,但在SoC驗(yàn)證過(guò)程中是要優(yōu)先完成驗(yàn)證的部分。如果由于一個(gè)頂層寄存器的問(wèn)題而導(dǎo)致一個(gè)芯片上大部分模塊無(wú)法正常工作是很耽誤驗(yàn)證時(shí)效的。對(duì)于寄存器驗(yàn)證來(lái)講,特別是一個(gè)有很多寄存器的芯片來(lái)講,如何通過(guò)UVM Reg進(jìn)行高效,靈活的寄存器驗(yàn)證十分重要!

聲明:本文內(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)投訴
  • CSR
    CSR
    +關(guān)注

    關(guān)注

    3

    文章

    118

    瀏覽量

    69736
  • SoC芯片
    +關(guān)注

    關(guān)注

    1

    文章

    617

    瀏覽量

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

    關(guān)注

    0

    文章

    182

    瀏覽量

    19236
  • 狀態(tài)寄存器
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

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

    關(guān)注

    0

    文章

    190

    瀏覽量

    12513
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    寄存器與移位寄存器

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

    寄存器應(yīng)用舉例

    寄存器應(yīng)用舉例   在9.2.3寄存器的應(yīng)用一節(jié)中,曾介紹利用寄存器集成芯片74LS194構(gòu)造的兩種脈沖分配器:環(huán)形計(jì)數(shù)和扭環(huán)形計(jì)數(shù)
    發(fā)表于 05-17 00:02 ?1805次閱讀
    <b class='flag-5'>寄存器</b>應(yīng)用舉例

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

    寄存器,寄存器是什么意思 寄存器定義  寄存器是中央處理內(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.3w次閱讀

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

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

    寄存器傳輸級(jí)低功耗設(shè)計(jì)方法

    寄存器傳輸級(jí)的低功耗設(shè)計(jì)對(duì)降低整個(gè)芯片的功耗作用非常顯著,本文討論的三種寄存器傳輸級(jí)低功耗設(shè)計(jì)方法,經(jīng)驗(yàn)證對(duì)動(dòng)態(tài)功耗的降低很有效。
    發(fā)表于 02-16 18:12 ?1492次閱讀
    <b class='flag-5'>寄存器</b>傳輸級(jí)低功耗設(shè)計(jì)方法

    寄存器組網(wǎng)絡(luò)處理寄存器分配技術(shù)

    本內(nèi)容提供了多寄存器組網(wǎng)絡(luò)處理寄存器分配技術(shù)
    發(fā)表于 06-28 15:26 ?28次下載
    多<b class='flag-5'>寄存器</b>組網(wǎng)絡(luò)處理<b class='flag-5'>器</b><b class='flag-5'>上</b>的<b class='flag-5'>寄存器</b>分配技術(shù)

    寄存器與移位寄存器

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

    芯片寄存器

    芯片寄存器作為一個(gè)嵌入式開(kāi)發(fā)人員,從接觸第一塊單片機(jī)的時(shí)候,就一定會(huì)聽(tīng)到一個(gè)此,叫做寄存器。單片機(jī)的很多功能都是通過(guò)配置修改寄存器來(lái)實(shí)現(xiàn)的。我們了解
    發(fā)表于 11-23 16:21 ?50次下載
    <b class='flag-5'>芯片</b>與<b class='flag-5'>寄存器</b>

    GPIO寄存器

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

    深度學(xué)習(xí)_硬件知識(shí)_寄存器與下拉寄存器

    寄存器寄存器是控制對(duì)應(yīng)端口上拉使能的。當(dāng)對(duì)應(yīng)位為0時(shí),設(shè)置對(duì)應(yīng)引腳上拉使能,對(duì)應(yīng)位為1時(shí),禁止對(duì)應(yīng)引腳上拉使能。如果
    發(fā)表于 01-14 14:31 ?10次下載
    深度學(xué)習(xí)_硬件知識(shí)_<b class='flag-5'>上</b>拉<b class='flag-5'>寄存器</b>與下拉<b class='flag-5'>寄存器</b>

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

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

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

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

    車載芯片安全寄存器的布局設(shè)計(jì)

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

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

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