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

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

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

在UVM中更輕松地進(jìn)行內(nèi)存管理

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Siddharth Nair ? 2022-11-29 17:11 ? 次閱讀

典型的SOC由多個(gè)接口組成,這些接口可以訪問設(shè)計(jì)中的存儲(chǔ)器。當(dāng)我們驗(yàn)證這樣的設(shè)計(jì)時(shí),我們需要確保各種接口訪問的內(nèi)存不重疊,從而導(dǎo)致數(shù)據(jù)完整性損失。

在使用涉及多個(gè)接口的基于 System Verilog 的驗(yàn)證環(huán)境中進(jìn)行驗(yàn)證時(shí),我們需要對激勵(lì)提供簡潔的約束,以確保這些訪問不會(huì)重疊并導(dǎo)致數(shù)據(jù)完整性丟失。

驗(yàn)證工程師通常不得不花費(fèi)大量時(shí)間來調(diào)試應(yīng)用的約束,這種形式的約束導(dǎo)致激勵(lì)約束不足,這是一條非常危險(xiǎn)的路徑。

隨著基于 UVM 的單例內(nèi)存管理器的引入,隨著 UVM 提供的內(nèi)存管理類的可用性,此任務(wù)變得更加易于實(shí)現(xiàn)。但是,這些新的驗(yàn)證組件仍然不是專門為開發(fā)涉及多個(gè)主站的環(huán)境而設(shè)計(jì)的。我們在這里開發(fā)的“簡易內(nèi)存管理器”最大限度地利用了現(xiàn)有的UVM方法,并且還提供了多個(gè)主服務(wù)器之間更輕松的內(nèi)存訪問。

什么是 UVM 內(nèi)存管理器?

關(guān)于uvm_mem_mam類的可用資源非常稀缺,因此如果讀者對其功能沒有太多了解,這是可以理解的。在繼續(xù)討論內(nèi)存管理器提供的功能之前,我們想簡要介紹一下默認(rèn) UVM 內(nèi)存管理器的功能。

在 UVM 中,有四個(gè)類與內(nèi)存管理相關(guān)聯(lián)。它們在下面提到 -

uvm_mem_mam_cfg– 它允許我們選擇要由管理器管理的字節(jié)數(shù)以及開始和結(jié)束偏移量。

uvm_mem_mgr– 它由希望分配內(nèi)存的靜態(tài)/動(dòng)態(tài)實(shí)體啟動(dòng)。

uvm_mem_alloc_policy– 它還可用于控制管理器的開始和結(jié)束偏移量,并根據(jù)我們的要求約束這些變量。

uvm_mem_region– 這些表示內(nèi)存管理器要分配的區(qū)域。這些區(qū)域包含開始偏移量和管理器要分配的字節(jié)數(shù)。

現(xiàn)在我們已經(jīng)簡要了解了默認(rèn)內(nèi)存管理器的操作以及與 UVM 中的內(nèi)存管理關(guān)聯(lián)的類,讓我們看看我們在內(nèi)存管理器中的這個(gè)現(xiàn)有功能上添加了什么。

支持的功能

“簡易內(nèi)存管理器”支持以下一組功能,可以在各種項(xiàng)目中重用:

整個(gè)內(nèi)存分為內(nèi)存、主內(nèi)存和分配的區(qū)域,支持這三個(gè)維度上的區(qū)域分配和釋放。

將記憶劃分為虛擬區(qū)域。

區(qū)域的運(yùn)行時(shí)分配和釋放。

多個(gè)主節(jié)點(diǎn)的非重疊分配。

通過提供要分配的區(qū)域的物理地址和字節(jié)數(shù)來分配區(qū)域。

可以保留內(nèi)存塊,以便任何主節(jié)點(diǎn)都無法訪問它。

提供有關(guān)已分配區(qū)域的詳細(xì)信息的調(diào)試機(jī)制。

根據(jù).xls文件中的輸入創(chuàng)建記憶。

頂部寄存器塊和管理器可通過腳本進(jìn)行配置。

即插即用,因此可以直接在任何現(xiàn)有的UVM環(huán)境中使用。

建筑

本節(jié)描述了內(nèi)存管理器的結(jié)構(gòu)以及將介紹“簡易內(nèi)存管理器”的環(huán)境。管理器由頂部uvm_reg_block 組成,其中包含單個(gè)存儲(chǔ)器(例如 – Flash、JTAG、SRAM 等)。單個(gè)存儲(chǔ)器是根據(jù).xls文件中提供的數(shù)據(jù)創(chuàng)建的。各個(gè)內(nèi)存類配置可根據(jù)項(xiàng)目要求完全定制。以類似的方式,我們可以通過腳本的命令行選項(xiàng)配置頂部內(nèi)存。管理器是單例,因此不會(huì)有數(shù)據(jù)重復(fù)。

poYBAGOFzMWADgzvAAB5PhuVPSs408.png

圖1使用簡易內(nèi)存管理器的環(huán)境

pYYBAGOFzM6AbuMWAABDvAtgHBs280.png

poYBAGOFzM-AbVBuAABIwbW8vdk807.png

圖2使用 Easy 內(nèi)存管理器分配和釋放內(nèi)存區(qū)域

pYYBAGOFzNaAJvQZAAE4Thk9Nh0750.png

表1管理器內(nèi)的方法列表

在這里,我們展示了如何在多主場景中使用“簡易內(nèi)存管理器”的場景。存儲(chǔ)器由兩個(gè)主站訪問,一個(gè)是SPI主機(jī),另一個(gè)是以太網(wǎng)主機(jī),它們正在執(zhí)行自己的測試序列。在該示例中,您可以觀察到主節(jié)點(diǎn)在訪問內(nèi)存時(shí)提供的唯一編號如何使用戶更易于控制測試用例中的區(qū)域處理。此外,用戶不需要知道RAL模型中內(nèi)存的結(jié)構(gòu)。他可以簡單地提供實(shí)際地址,經(jīng)理足夠聰明,可以根據(jù)地址保留區(qū)域。

5e14a851f2990-Picture4.png

圖3預(yù)留/釋放區(qū)域時(shí)主節(jié)點(diǎn)與管理器的交互

最初,整個(gè)內(nèi)存范圍都可用,SPI主站請求兩個(gè)區(qū)域,以便它可以在這些區(qū)域上啟動(dòng)其序列。

同樣,以太網(wǎng)主站也請求了三個(gè)區(qū)域。以太網(wǎng)主站和SPI主站區(qū)域?qū)⑼ㄟ^主站編號進(jìn)行區(qū)分,主站編號在分配時(shí)由主站作為參數(shù)傳遞。

SPI 主站已完成其序列,并通過在調(diào)用釋放函數(shù)時(shí)指定其唯一主站編號來釋放它分配的兩個(gè)區(qū)域。

以太網(wǎng)主站現(xiàn)在希望訪問先前分配給SPI主站的區(qū)域。因此,它將通過指定物理地址來請求這些區(qū)域。

以太網(wǎng)序列已完成,它將釋放它請求的區(qū)域。

整合步驟

poYBAGOFzOmAFSxxAABVZsjRFL4426.png

圖4 集成步驟

向XLS提供輸入–以適當(dāng)?shù)母袷綄?shù)據(jù)寫入.xls文件以創(chuàng)建單個(gè)內(nèi)存。

通過腳本生成內(nèi)存和reg_block – 使用適當(dāng)?shù)拿钚羞x項(xiàng)運(yùn)行腳本。如果未提供命令行選項(xiàng),則使用默認(rèn)選項(xiàng)。

在環(huán)境中獲取經(jīng)理的實(shí)例 –內(nèi)存和管理器將根據(jù).xls文件和命令行選項(xiàng)中提供的數(shù)據(jù)創(chuàng)建。在要訪問管理器的組件中創(chuàng)建管理器的對象實(shí)例。

獲取管理器的句柄 – 管理器的實(shí)例需要獲取管理器的句柄,因?yàn)樗菃卫?。管理器由返回單一?shí)例句柄的方法組成。

通過句柄訪問方法可以使用管理器的句柄訪問管理器的方法。

“簡易內(nèi)存管理器”本質(zhì)上是通用的,可用于任何現(xiàn)有的基于UVM的驗(yàn)證環(huán)境。管理器包易于配置,可以擴(kuò)展到任何特定于項(xiàng)目的環(huán)境中,而無需對內(nèi)部代碼進(jìn)行任何更改。

在eInfochips,我們已經(jīng)在系統(tǒng),子系統(tǒng)和IP級環(huán)境中使用了這種內(nèi)存管理器,并取得了預(yù)期的結(jié)果。我們已經(jīng)使用QuestaSim和NCSim模擬器驗(yàn)證了此組件。

審核編輯:郭婷

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

    關(guān)注

    40

    文章

    5452

    瀏覽量

    172190
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7521

    瀏覽量

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

    關(guān)注

    38

    文章

    4190

    瀏覽量

    218625
收藏 人收藏

    評論

    相關(guān)推薦

    使用 Memtester 對華為云 X 實(shí)例進(jìn)行內(nèi)存性能測試

    測試環(huán)境 ? 3.3 測試命令 ? 4 測試數(shù)據(jù)及性能分析 ? 4.1 帶寬測試結(jié)果 ? 4.2 延遲測試結(jié)果 ? 5 性能瓶頸與優(yōu)化建議 ? 6 總結(jié) ? 前言 云計(jì)算的應(yīng)用場景內(nèi)存性能對系統(tǒng)
    的頭像 發(fā)表于 12-30 14:52 ?102次閱讀
    使用 Memtester 對華為云 X 實(shí)例<b class='flag-5'>進(jìn)行內(nèi)存</b>性能測試

    Linux下如何管理虛擬內(nèi)存 使用虛擬內(nèi)存時(shí)的常見問題

    Linux系統(tǒng),虛擬內(nèi)存管理是操作系統(tǒng)內(nèi)核的一個(gè)重要功能,負(fù)責(zé)管理物理內(nèi)存和磁盤上的交換空間
    的頭像 發(fā)表于 12-04 09:19 ?564次閱讀

    如何使用 ChatGPT 進(jìn)行內(nèi)容創(chuàng)作

    使用ChatGPT進(jìn)行內(nèi)容創(chuàng)作是一個(gè)高效且富有創(chuàng)意的過程。以下是一些關(guān)鍵步驟和建議,幫助您充分利用ChatGPT進(jìn)行內(nèi)容創(chuàng)作: 一、準(zhǔn)備階段 注冊與登錄 : 確保您已注冊ChatGPT賬號,并登錄
    的頭像 發(fā)表于 10-25 16:08 ?499次閱讀

    Linux內(nèi)存管理HVO的實(shí)現(xiàn)原理

    代碼閱讀工具:vim+ctags+cscope本文主要介紹內(nèi)存管理的HVO(HugeTLB Vmemmap Optimization)特性,通過HVO可以節(jié)省管理HugeTLB 頁面
    的頭像 發(fā)表于 10-22 16:51 ?270次閱讀
    Linux<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b><b class='flag-5'>中</b>HVO的實(shí)現(xiàn)原理

    Windows管理內(nèi)存的三種主要方式

    Windows操作系統(tǒng)提供了多種方式來管理內(nèi)存,以確保系統(tǒng)資源的有效利用和性能的優(yōu)化。以下是關(guān)于Windows管理內(nèi)存的三種主要方式的詳細(xì)闡述,包括堆
    的頭像 發(fā)表于 10-12 17:09 ?1145次閱讀

    內(nèi)存管理的硬件結(jié)構(gòu)

    常見的內(nèi)存分配函數(shù)有malloc,mmap等,但大家有沒有想過,這些函數(shù)在內(nèi)核是怎么實(shí)現(xiàn)的?換句話說,Linux內(nèi)核的內(nèi)存管理是怎么實(shí)現(xiàn)的?
    的頭像 發(fā)表于 09-04 14:28 ?357次閱讀
    <b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>的硬件結(jié)構(gòu)

    Jtti:新加坡云服務(wù)器運(yùn)行內(nèi)存和存儲(chǔ)內(nèi)存有何區(qū)別?

    。它是一種易失性存儲(chǔ),意味著斷電后存儲(chǔ)的數(shù)據(jù)會(huì)丟失。 存儲(chǔ)內(nèi)存:用于持久化存儲(chǔ)數(shù)據(jù),如操作系統(tǒng)、應(yīng)用程序、數(shù)據(jù)庫和用戶數(shù)據(jù)。它是一種非易失性存儲(chǔ),即使斷電后也能保持?jǐn)?shù)據(jù)不丟失。 二、速度: 運(yùn)
    的頭像 發(fā)表于 06-25 14:26 ?524次閱讀

    ESP-IDF內(nèi)核內(nèi)存管理如何驗(yàn)證?

    請教一下,ESP-IDF 內(nèi)核內(nèi)存管理如何驗(yàn)證
    發(fā)表于 06-19 06:30

    FreeRTOS如何在中斷調(diào)用內(nèi)存分配函數(shù)?

    最近在玩FreeRTOS,遇到一個(gè)問題,就是不知如何在中斷調(diào)用內(nèi)存分配函數(shù)。pvPortMalloc函數(shù)中會(huì)調(diào)用xTaskResumeAll,而這個(gè)函數(shù)不能再中斷調(diào)用,所以請問中斷中進(jìn)行內(nèi)
    發(fā)表于 05-08 08:25

    stm32h7想把sarm1作為運(yùn)行內(nèi)存,但上電會(huì)進(jìn)入hard fault是哪里的問題?

    因項(xiàng)目需要,想把sarm1(0x30000000-0x3000ffff)作為運(yùn)行內(nèi)存,但上電會(huì)進(jìn)入hard fault, 請問有哪大哥這樣設(shè)置是成功的
    發(fā)表于 04-17 07:20

    STM32如何用HAL庫進(jìn)行內(nèi)核復(fù)位?

    STM32如何用HAL庫進(jìn)行內(nèi)核復(fù)位 普通的系統(tǒng)復(fù)位函數(shù)如下: / ** 簡短的系統(tǒng)重置 詳細(xì)信息發(fā)起系統(tǒng)重置請求以重置MCU。 * / __STATIC_INLINE void
    發(fā)表于 04-11 06:49

    fpga驗(yàn)證和uvm驗(yàn)證的區(qū)別

    FPGA驗(yàn)證和UVM驗(yàn)證芯片設(shè)計(jì)和驗(yàn)證過程中都扮演著重要的角色,但它們之間存在明顯的區(qū)別。
    的頭像 發(fā)表于 03-15 15:00 ?1708次閱讀

    uvm1.1升級為uvm1.2 uvm_report_server報(bào)錯(cuò)是何原因?

    ISP算法仿真中,小編會(huì)用reference model調(diào)用DPI接口用C++ 算法實(shí)現(xiàn)pixel算法處理,然后和DUT算法處理輸出的pixel值進(jìn)行比較,比較時(shí)候發(fā)現(xiàn)報(bào)錯(cuò),報(bào)錯(cuò)代碼如下,原因是小編把uvm1.1升級為uvm1.
    的頭像 發(fā)表于 03-04 14:18 ?842次閱讀
    <b class='flag-5'>uvm</b>1.1升級為<b class='flag-5'>uvm</b>1.2 <b class='flag-5'>uvm</b>_report_server報(bào)錯(cuò)是何原因?

    UVM手把手教程系列(二)Phase機(jī)制簡單介紹

    UVM的phase,按照其是否消耗仿真時(shí)間($time打印出的時(shí)間)的特性,可以分成兩大類
    的頭像 發(fā)表于 02-29 09:26 ?1482次閱讀
    <b class='flag-5'>UVM</b>手把手教程系列(二)Phase機(jī)制簡單介紹

    C語言中的動(dòng)態(tài)內(nèi)存管理講解

    本章將講解 C 的動(dòng)態(tài)內(nèi)存管理。C 語言為內(nèi)存的分配和管理提供了幾個(gè)函數(shù)。這些函數(shù)可以
    的頭像 發(fā)表于 02-23 14:03 ?411次閱讀
    C語言中的動(dòng)態(tài)<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>講解