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

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

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

重復(fù)使用UVM RTL驗(yàn)證測(cè)試進(jìn)行門(mén)級(jí)仿真詳細(xì)過(guò)程介紹

PCB線路板打樣 ? 來(lái)源:LONG ? 2019-08-09 15:25 ? 次閱讀

當(dāng)我們驗(yàn)證片上系統(tǒng)(SoC)嵌入了具有多個(gè)數(shù)字外設(shè)的微處理器以及可能的模擬模塊時(shí),我們希望檢查所有實(shí)現(xiàn)的功能和可能的極端情況,以最大限度地縮短驗(yàn)證時(shí)間。多種技術(shù)和方法的混合用于改進(jìn)功能驗(yàn)證并提取覆蓋等級(jí)的度量:基于通用驗(yàn)證方法(UVM)的形式驗(yàn)證和隨機(jī)約束測(cè)試增加了發(fā)現(xiàn)錯(cuò)誤的可能性。有時(shí)我們?yōu)镽TL驗(yàn)證創(chuàng)建一個(gè)完美有效的測(cè)試,但發(fā)現(xiàn)它不能在門(mén)級(jí)仿真期間重復(fù)使用,因?yàn)閁VM監(jiān)視器掛在內(nèi)部SoC信號(hào)上,這些信號(hào)在實(shí)現(xiàn)階段后可能會(huì)消失或改變。

本文將描述創(chuàng)建有效的自檢模型是多么容易,這些測(cè)試既簡(jiǎn)單又可以在門(mén)級(jí)模擬過(guò)程中重復(fù)使用。令人驚訝的是,通過(guò)改變數(shù)據(jù)流,我們可以為測(cè)試平臺(tái)帶來(lái)好處,降低記分板的復(fù)雜性,這也意味著更少的測(cè)試開(kāi)發(fā)時(shí)間。

流程基于實(shí)例化UVM驗(yàn)證用于檢查接口的組件,例如SPI,I 2 C,& UART,但它也可以擴(kuò)展到更復(fù)雜的接口。

SoC驗(yàn)證流程

最有效的SoC驗(yàn)證是基于內(nèi)部總線內(nèi)部,特定內(nèi)部模塊和主SoC接口上的多個(gè)UVM驗(yàn)證組件(UVM VC)的實(shí)例化。這些UVM VC用作總線協(xié)議檢查器(例如,AMBA檢查器);串行協(xié)議檢查器和主動(dòng)主控器(例如,I 2 C,SPI,UART,JTAG,SATA,PCIe)。

基于UVM開(kāi)發(fā)的測(cè)試應(yīng)該是自檢的;必須通過(guò)檢查器驗(yàn)證每個(gè)操作,激勵(lì)和事務(wù),如果不匹配,會(huì)引發(fā)一個(gè)“標(biāo)志”,停止模擬并發(fā)出模擬器控制臺(tái)上顯示的錯(cuò)誤消息并寫(xiě)入日志文件。

通信接口(例如,SPI)的驗(yàn)證需要使用由在總線上獲取事務(wù)的收集器形成的UVM VC,用于檢查協(xié)議合規(guī)性的監(jiān)視器以及生成的生成的總線功能模型(BFM)交易。 SoC和外部UVM VC之間交換的數(shù)據(jù)通過(guò)名為記分板的模塊進(jìn)行驗(yàn)證。

此記分板至少有兩個(gè)端口,其中添加的對(duì)象與第二個(gè)相匹配 - 參考。如果不匹配,則發(fā)出錯(cuò)誤。在門(mén)級(jí)仿真期間必須重復(fù)使用這種檢查器以刺激關(guān)鍵路徑。圖1顯示了驗(yàn)證測(cè)試平臺(tái)的簡(jiǎn)單框圖,該平臺(tái)使用多個(gè)檢查器進(jìn)行有效的驗(yàn)證方法。

重復(fù)使用UVM RTL驗(yàn)證測(cè)試進(jìn)行門(mén)級(jí)仿真詳細(xì)過(guò)程介紹

圖1:典型的UVM驗(yàn)證測(cè)試平臺(tái)

黃色塊是UVM VC??偩€監(jiān)視器是一個(gè)只有監(jiān)視器和檢查器的無(wú)源組件。

用于測(cè)試串行外設(shè)的通用數(shù)據(jù)流是將數(shù)據(jù)從UVM VC發(fā)送到微處理器并檢查數(shù)據(jù)是否有到達(dá)目的地(微處理器)。在第二步中,我們將數(shù)據(jù)從微處理器發(fā)送到UVM VC,檢查正確的數(shù)據(jù)是否已到達(dá)目的地(UVM VC)。

圖2顯示了數(shù)據(jù)記分板<的示例/i>用于全雙工同步通信(例如,SPI)。 UVM VC和外圍總線上的監(jiān)視器(被動(dòng))用于將數(shù)據(jù)發(fā)送到記分板:UVM VC發(fā)送的數(shù)據(jù)被添加到記分板 TX路徑,當(dāng)它們到達(dá)外圍設(shè)備時(shí),將通過(guò)總線監(jiān)視器發(fā)送到相同的記分板進(jìn)行匹配。來(lái)自外圍設(shè)備的數(shù)據(jù)被添加到記分板 RX路徑中,并與UVM VC被動(dòng)監(jiān)視器接收的數(shù)據(jù)相匹配。

重復(fù)使用UVM RTL驗(yàn)證測(cè)試進(jìn)行門(mén)級(jí)仿真詳細(xì)過(guò)程介紹

圖2:全雙工同步外設(shè)示例

此方法的主要缺點(diǎn)是門(mén)級(jí)仿真的可移植性。在實(shí)施階段,RTL中可用的內(nèi)部信號(hào)可能會(huì)在優(yōu)化的網(wǎng)表中消失,UVM VC模塊的綁定變得困難,有時(shí)甚至不可能(例如,在合成期間刪除未使用的端口)。

新的SoC驗(yàn)證流程

新流程的基本概念是記分板中檢查的數(shù)據(jù)不應(yīng)來(lái)自內(nèi)部SoC節(jié)點(diǎn)上綁定的監(jiān)視器(參見(jiàn)圖2)。因此,修改了測(cè)試平臺(tái)配置,以便僅使用UVM VC(主動(dòng)和被動(dòng))進(jìn)行頂層綁定的數(shù)據(jù)檢查。內(nèi)部監(jiān)視器(綁定在SoC內(nèi)部節(jié)點(diǎn)上的監(jiān)視器)僅用于RTL仿真,檢查總線的合規(guī)性并跟蹤覆蓋范圍。

此時(shí),有必要更改數(shù)據(jù)在UVM VC和SoC外設(shè)之間交換數(shù)據(jù)包的流程。主要要求是:

數(shù)據(jù)隨機(jī)化

門(mén)級(jí)模擬的可移植性

易用性

由UVM VC生成并由外圍設(shè)備接收的隨機(jī)約束數(shù)據(jù)分組被SoC用于生成出站分組。為了增加隨機(jī)化,SoC中的微處理器計(jì)算接收數(shù)據(jù)的CRC并將結(jié)果用作要傳輸?shù)臄?shù)據(jù)。

記分板將從UVM獲取數(shù)據(jù)VC,在將它們添加到數(shù)據(jù)列表之前,它將計(jì)算CRC。從外圍設(shè)備返回的數(shù)據(jù)將直接添加到記分板以進(jìn)行匹配過(guò)程。圖3顯示了這個(gè)新流程的一個(gè)示例。

重復(fù)使用UVM RTL驗(yàn)證測(cè)試進(jìn)行門(mén)級(jí)仿真詳細(xì)過(guò)程介紹

圖3:數(shù)據(jù)檢查的新方法

計(jì)算CRC非常簡(jiǎn)單;對(duì)于記分板,可以使用內(nèi)置函數(shù)(偽方法),例如,可以使用 e 語(yǔ)言:

list_bytes 。crc_32(來(lái)自字節(jié),字節(jié)數(shù))

list_bytes 。crc_8(來(lái)自字節(jié),字節(jié)數(shù))

它逐字節(jié)讀取列表返回位或字節(jié)列表的CRC函數(shù)的整數(shù)值??梢杂?jì)算CRC,定義起始字節(jié)(通過(guò)第一個(gè)參數(shù) from byte )和選定的字節(jié)數(shù)(通過(guò)第二個(gè)參數(shù)字節(jié)數(shù))。

32位CRC的生成多項(xiàng)式為:

x 32 + x 26 + x 23 + x 22 + x 16 + x 12 + x 11 + x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x +1

8位CRC的生成多項(xiàng)式為:

x 8 + x 2 + x + 1

類似的函數(shù)用于SoC中微處理器執(zhí)行的 C 代碼:


POLY_GEN8為0x03??梢允褂肞OLY_GEN32 = 0x2608EDB為CRC32擴(kuò)展該功能。

使用此方法可以極大地簡(jiǎn)化記分板上的數(shù)據(jù)管理;由于數(shù)據(jù)檢查是在串行接口上進(jìn)行的,因此它與微處理器總線的數(shù)據(jù)大小無(wú)關(guān),可以是8,16,32位或更多。以下是記分板的示例。

重復(fù)使用UVM RTL驗(yàn)證測(cè)試進(jìn)行門(mén)級(jí)仿真詳細(xì)過(guò)程介紹



全雙工同步接口

如果是全雙工同步接口,例如SPI,我們可以有兩種可能的模式:外設(shè)是從機(jī),或外設(shè)是主機(jī)。

當(dāng)外設(shè)是從機(jī)時(shí),事務(wù)由外部UVM VC啟動(dòng)。全雙工模式意味著必須同時(shí)發(fā)送和接收數(shù)據(jù)。由于我們希望避免在SoC側(cè)生成數(shù)據(jù)(在 C 代碼上沒(méi)有有線數(shù)據(jù)),因此有效數(shù)據(jù)存在系統(tǒng)延遲。此延遲應(yīng)在記分板上實(shí)現(xiàn),以便正確比較交換的數(shù)據(jù)。

重復(fù)使用UVM RTL驗(yàn)證測(cè)試進(jìn)行門(mén)級(jí)仿真詳細(xì)過(guò)程介紹

圖4:全雙工數(shù)據(jù)序列用于從模式

圖4顯示了在主(UVM VC)和從(外設(shè))之間交換的數(shù)據(jù)序列的示例。由外圍設(shè)備發(fā)送的第一個(gè)符號(hào)對(duì)于記分板“不關(guān)心”,因此被釋放。微處理器需要一些時(shí)間從緩沖區(qū)獲取數(shù)據(jù)并計(jì)算CRC。一段時(shí)間后,數(shù)據(jù)準(zhǔn)備就緒,交換繼續(xù)從UVM VC隨機(jī)生成和來(lái)自外圍側(cè)的偽隨機(jī)數(shù)據(jù)(在D x 上計(jì)算的CRC)。

我們可以通過(guò)使用傳統(tǒng)的“不關(guān)心”數(shù)據(jù)(例如,零)來(lái)進(jìn)行自動(dòng)符號(hào)同步。當(dāng)然,這些數(shù)據(jù)不應(yīng)由UVM VC生成。 SoC上的外設(shè)將發(fā)送零直到CRC數(shù)據(jù)準(zhǔn)備就緒,并且UVM VC以足夠的零符號(hào)終止以完成記分板中的匹配。

當(dāng)外圍設(shè)備是主設(shè)備時(shí),事務(wù)通過(guò)微處理器自行啟動(dòng)。

重復(fù)使用UVM RTL驗(yàn)證測(cè)試進(jìn)行門(mén)級(jí)仿真詳細(xì)過(guò)程介紹

圖5:主模式的全雙工數(shù)據(jù)序列

數(shù)據(jù)流與奴隸模式的情況非常相似。圖5顯示了在主(外設(shè))和從(UVM VC)之間交換的數(shù)據(jù)序列的示例。外圍設(shè)備發(fā)送的第一個(gè)符號(hào)對(duì)于記分板“不關(guān)心”。 UVM VC用隨機(jī)符號(hào)D x 回復(fù),微處理器用它來(lái)計(jì)算外圍設(shè)備發(fā)送的偽隨機(jī)數(shù)據(jù)。如上所述,黃色突出顯示的符號(hào)是在記分板中比較的符號(hào)。

半雙工接口

如果是半雙工接口,例如I 2 C,我們可以有兩種可能的模式:外設(shè)是從機(jī),或外設(shè)是主機(jī)。

外設(shè)是slave,事務(wù)由外部UVM VC啟動(dòng)。半雙工模式基于通信協(xié)議,其中主設(shè)備發(fā)送命令請(qǐng)求數(shù)據(jù)作為回復(fù)或?qū)?shù)據(jù)發(fā)送到專用從設(shè)備。

對(duì)于全雙工模式,有必要定義良好的流程這樣可以避免 C 代碼中的數(shù)據(jù)(非隨機(jī))并使數(shù)據(jù)檢查變得簡(jiǎn)單:

通過(guò)發(fā)送write命令啟動(dòng)事務(wù)。 UVM VC將開(kāi)始發(fā)送數(shù)據(jù)包。在計(jì)算CRC之后,這些數(shù)據(jù)被添加到記分板中。

接收的數(shù)據(jù)被DUT用作“回復(fù)讀取”命令。微處理器計(jì)算接收數(shù)據(jù)的CRC并準(zhǔn)備數(shù)據(jù)包以進(jìn)行回復(fù)。

UVM VC發(fā)送讀命令。外圍設(shè)備開(kāi)始發(fā)送先前準(zhǔn)備的數(shù)據(jù)。這些數(shù)據(jù)將添加到記分板中以進(jìn)行匹配。

圖6顯示了此數(shù)據(jù)握手的簡(jiǎn)單圖表。

重復(fù)使用UVM RTL驗(yàn)證測(cè)試進(jìn)行門(mén)級(jí)仿真詳細(xì)過(guò)程介紹

圖6:從模式的半雙工數(shù)據(jù)交換

主模式

當(dāng)外圍設(shè)備是主設(shè)備時(shí),事務(wù)通過(guò)微處理器自行啟動(dòng)。

在這種情況下,為了利用UVM VC的隨機(jī)約束特性,協(xié)議必須

通過(guò)發(fā)送讀命令啟動(dòng)事務(wù)。 UVM VC將開(kāi)始作為回復(fù)發(fā)送數(shù)據(jù)包。在計(jì)算CRC之后,這些數(shù)據(jù)被添加到記分板中。

接收的數(shù)據(jù)被DUT用作“寫(xiě)入數(shù)據(jù)”命令。微處理器計(jì)算接收數(shù)據(jù)的CRC并為下一步準(zhǔn)備數(shù)據(jù)包。

外設(shè)發(fā)送寫(xiě)命令,然后開(kāi)始發(fā)送先前準(zhǔn)備的數(shù)據(jù)。這些數(shù)據(jù)將添加到記分板中以進(jìn)行匹配。

圖7顯示了此數(shù)據(jù)握手的簡(jiǎn)單圖表。

重復(fù)使用UVM RTL驗(yàn)證測(cè)試進(jìn)行門(mén)級(jí)仿真詳細(xì)過(guò)程介紹

圖7:主模式的半雙工數(shù)據(jù)交換

復(fù)雜協(xié)議

相同的方法可以也可用于USB以太網(wǎng)等復(fù)雜協(xié)議。概念是相同的:對(duì)于全雙工通信,初始符號(hào)是“不關(guān)心”(空符號(hào)),然后DUT使用接收的樣本來(lái)計(jì)算CRC并將數(shù)據(jù)發(fā)回。

對(duì)于半雙工,數(shù)據(jù)交換由UVM VC啟動(dòng),然后DUT使用接收的數(shù)據(jù)包構(gòu)建傳輸數(shù)據(jù)包。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)注

    50

    文章

    4082

    瀏覽量

    133613
  • PCB打樣
    +關(guān)注

    關(guān)注

    17

    文章

    2968

    瀏覽量

    21709
  • 華強(qiáng)PCB
    +關(guān)注

    關(guān)注

    8

    文章

    1831

    瀏覽量

    27760
  • 華強(qiáng)pcb線路板打樣

    關(guān)注

    5

    文章

    14629

    瀏覽量

    43045
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RTL級(jí)仿真與門(mén)級(jí)仿真

    調(diào)用了modelsim進(jìn)行門(mén)級(jí)仿真,發(fā)現(xiàn)有毛刺,后來(lái)才知道有RTL仿真,運(yùn)行后波形很好。想問(wèn)下如
    發(fā)表于 08-08 22:57

    關(guān)于RTL仿真門(mén)級(jí)仿真求助~

    `剛剛本科畢業(yè),假期導(dǎo)師要求做一個(gè)設(shè)計(jì)。實(shí)驗(yàn)室沒(méi)有做過(guò)FPGA的學(xué)長(zhǎng)只好問(wèn)網(wǎng)上的各位了。寫(xiě)好的FPGA代碼進(jìn)行RTL仿真波形是符合要求的,如下圖。但是做門(mén)
    發(fā)表于 08-06 12:12

    IC驗(yàn)證UVM驗(yàn)證平臺(tái)加入objection機(jī)制和virtual interface機(jī)制“(七)

    機(jī)制來(lái)控制驗(yàn)證平臺(tái)的關(guān)閉。細(xì)心的讀者可能發(fā)現(xiàn),在上節(jié)的例子中,并沒(méi)有如**《IC驗(yàn)證"一個(gè)簡(jiǎn)單的UVM驗(yàn)證平臺(tái)"是如何搭建的(五)》**所示顯式地調(diào)用 finish語(yǔ)句來(lái)結(jié)束
    發(fā)表于 12-09 18:28

    數(shù)字IC驗(yàn)證之“UVM”基本概述、芯片驗(yàn)證驗(yàn)證計(jì)劃(1)連載中...

    ,這決定了芯片的用途以及芯片的功能,然后從市場(chǎng)需求到高層算法,算法的目的是建立芯片的功能模型,然后從高層算法到芯片的架構(gòu),從芯片的架構(gòu)到具體rtl代碼的實(shí)現(xiàn),對(duì)rtl代碼進(jìn)行綜合就得到了門(mén)
    發(fā)表于 01-21 15:59

    數(shù)字IC驗(yàn)證之“什么是UVM”“UVM的特點(diǎn)”“UVM提供哪些資源”(2)連載中...

    原文鏈接:https://zhuanlan.zhihu.com/p/345775995大家好,我是一哥,上章內(nèi)容主要講述兩個(gè)內(nèi)容,芯片驗(yàn)證以及驗(yàn)證計(jì)劃。那本章我們主要講述的內(nèi)容有介紹什么是uv
    發(fā)表于 01-21 16:00

    數(shù)字IC驗(yàn)證之“典型的UVM平臺(tái)結(jié)構(gòu)”(3)連載中...

    應(yīng)用的過(guò)程中,將uvm的組件封裝起來(lái),可以將這些封裝的組件呢作為一個(gè)整體進(jìn)行重用,在進(jìn)行芯片級(jí)或者是系統(tǒng)
    發(fā)表于 01-22 15:32

    數(shù)字IC驗(yàn)證之“構(gòu)成uvm測(cè)試平臺(tái)的主要組件”(4)連載中...

      大家好,我是一哥,上章一個(gè)典型的uvm驗(yàn)證平臺(tái)應(yīng)該是什么樣子的?從本章開(kāi)始就正式進(jìn)入uvm知識(shí)的學(xué)習(xí)。先一步一步搭建一個(gè)簡(jiǎn)單的可運(yùn)行的測(cè)試平臺(tái)。  本章首先來(lái)
    發(fā)表于 01-22 15:33

    數(shù)字IC驗(yàn)證之“搭建一個(gè)可以運(yùn)行的uvm測(cè)試平臺(tái)”(5)連載中...

      大家好,我是一哥,上章介紹了構(gòu)成uvm測(cè)試平臺(tái)的主要組件?最后,我們將一個(gè)典型的uvm平臺(tái)進(jìn)行最簡(jiǎn)化,從本章我們開(kāi)始搭建一個(gè)可以運(yùn)行的
    發(fā)表于 01-26 10:05

    什么是uvm?uvm的特點(diǎn)有哪些呢

    大家好,我是一哥,上章內(nèi)容我們介紹什么是uvm?uvm的特點(diǎn)以及uvm為用戶提供了哪些資源?本章內(nèi)容我們來(lái)看一看一個(gè)典型的uvm
    發(fā)表于 02-14 06:46

    UVM驗(yàn)證平臺(tái)執(zhí)行硬件加速

    UVM已經(jīng)成為了一種高效率的、從模塊級(jí)到系統(tǒng)級(jí)完整驗(yàn)證環(huán)境開(kāi)發(fā)標(biāo)準(zhǔn),其中一個(gè)關(guān)鍵的原則是UVM可以開(kāi)發(fā)出可重用的
    發(fā)表于 09-15 17:08 ?14次下載
    <b class='flag-5'>UVM</b><b class='flag-5'>驗(yàn)證</b>平臺(tái)執(zhí)行硬件加速

    如何建立VHDL程序的仿真模型和平臺(tái)及仿真過(guò)程詳細(xì)說(shuō)明

     前面已經(jīng)講述了VHDL語(yǔ)法和建模,VHDL程序作為硬件的描述語(yǔ)言,可以實(shí)現(xiàn)仿真測(cè)試,包括RTL門(mén)級(jí)仿真
    發(fā)表于 01-20 17:03 ?14次下載
    如何建立VHDL程序的<b class='flag-5'>仿真</b>模型和平臺(tái)及<b class='flag-5'>仿真</b><b class='flag-5'>過(guò)程</b><b class='flag-5'>詳細(xì)</b>說(shuō)明

    芯片設(shè)計(jì)之門(mén)級(jí)仿真

    綜上,門(mén)級(jí)仿真基于測(cè)試平臺(tái)文件、門(mén)級(jí)網(wǎng)表文件、時(shí)序反標(biāo)文件、庫(kù)文件,可以
    的頭像 發(fā)表于 08-15 14:50 ?2813次閱讀

    UVM中的虛擬序列:為什么,如何?

    大多數(shù)UVM測(cè)試平臺(tái)由可重復(fù)使用驗(yàn)證組件組成,除非我們正在對(duì)像MIPI-CSI這樣的簡(jiǎn)單協(xié)議進(jìn)行級(jí)
    的頭像 發(fā)表于 05-29 09:46 ?808次閱讀

    測(cè)試驗(yàn)證復(fù)雜的FPGA設(shè)計(jì)(2)——如何在虹科的IP核中執(zhí)行面向全局的仿真

    仿真驗(yàn)證是開(kāi)發(fā)任何高質(zhì)量的基于FPGA的RTL編碼過(guò)程的基礎(chǔ)。在上一篇文章中,我們介紹了面向?qū)嶓w/塊的
    的頭像 發(fā)表于 06-15 17:31 ?706次閱讀
    <b class='flag-5'>測(cè)試</b>與<b class='flag-5'>驗(yàn)證</b>復(fù)雜的FPGA設(shè)計(jì)(2)——如何在虹科的IP核中執(zhí)行面向全局的<b class='flag-5'>仿真</b>

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

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