沒有人首先確保測試用例是有效的并且將充分利用如此寶貴的資源,就將驗證工作放到模擬器上。在上一篇博客中,我們展示了如何從便攜式刺激模型出發(fā),并使用測試臺綜合技術(shù)將該測試從事務(wù)通用驗證方法 (UVM) 環(huán)境遷移到生成在設(shè)計的嵌入式處理器上運行的代碼的環(huán)境中。這些處理器可以實例化到模擬器中——等等什么?這是您聽到針在唱片上被刮擦的地方。
它比這復(fù)雜得多,但這就是創(chuàng)建便攜式刺激 (PSS) 的原因。將為模擬器開發(fā)的測試平臺遷移到模擬器上太困難了。該標準沒有說明應(yīng)該如何做。這留給 PSS 工具開發(fā)人員作為練習。PSS 定義了一種可以定義場景的語言,并允許測試臺綜合技術(shù)針對多個平臺和抽象。這些目標有一些特定的要求。讓我們一步一步來。
仿真器的大小取決于它們可以處理的門當量數(shù)。這類似于說 FPGA 有這么多門容量。從獲取寄存器傳輸級別 (RTL) 代碼到使其適用于仿真器或 FPGA,有一個轉(zhuǎn)換過程。對于某些類型的設(shè)計,每個供應(yīng)商可能或多或少有效率。增加仿真器的大小既慢又昂貴,因此您必須小心使用這些仿真資源的目的。如果您的設(shè)計有四個處理器,您是否真的要將它們映射到仿真器中,即使您有可用的 RTL 代碼?
這就是混合仿真概念的用武之地。您需要將設(shè)計劃分為將使用仿真器結(jié)構(gòu)的部分以及將在行為模型中運行的部分。處理器通常是這個目標,并且會使用與模擬器相同的行為模型?;旌戏抡媸悄姆抡嫫魈峁┥虒碛械囊豁椆δ?,他們應(yīng)該擁有適合使系統(tǒng)的該部分高效的工具。然而,在某些情況下,這種情況可能會發(fā)生逆轉(zhuǎn)。如果您正在開發(fā)自己的 RISC-V 處理器并且想要驗證它怎么辦?現(xiàn)在,您可能想要制作多個環(huán)境之一的虛擬模型,并讓您的處理器的 RTL 代碼在這些環(huán)境中運行。
大多數(shù)系統(tǒng)不是獨立的,需要某種形式的外部刺激,并且必須檢查結(jié)果。仿真器和主機之間的通信可以通過 Accellera 的 SCE-MI 標準來實現(xiàn),該標準定義了外部軟件或測試平臺與仿真器之間的通信協(xié)議。并非所有供應(yīng)商都使用此標準,有些供應(yīng)商有它的變體。他們都在同一個概念上工作。首先,您采用驗證知識產(chǎn)權(quán) (VIP) 模型并將其分成兩部分。連接到模擬器的一側(cè)將事務(wù)轉(zhuǎn)換為邏輯信號轉(zhuǎn)換。另一方處理更高級別的協(xié)議。介于兩者之間的是一種通信協(xié)議,可優(yōu)化流量在兩部分之間流動的時間和方式。再次,
錯誤的通信可能會影響您的仿真器性能??紤]一個以 10MHz 運行的仿真器(基于 FPGA 的仿真器的典型速度,沒有過多的跟蹤或調(diào)試啟用)連接到一個行為模型。每次這兩個模型必須交換數(shù)據(jù)時,模擬器都必須停止,并且會遇到物理通信系統(tǒng)的延遲,可能是 PCIe,加上軟件層,然后模擬器或測試平臺必須運行。如果每個周期都發(fā)生這種情況,你的模擬器會爬,這會花費你很多錢。這就是為什么沒有人愿意使用 UVM 運行模擬器的原因——每次需要數(shù)據(jù)時,它都必須考慮下一個向量。在本例中,這意味著每個處理器總線周期至少一次。模擬器效率越高,速度下降的成本就越高。
仿真編譯需要很長時間,在絕對必要之前應(yīng)避免重新編譯。在驗證過程的后期,重新編譯設(shè)計變得不那么頻繁,因為大多數(shù)錯誤都被發(fā)現(xiàn)了。但是,測試臺經(jīng)常更改,幾乎每次運行時都會更改。如果測試臺是用 Verilog 硬件描述語言編寫的,這將觸發(fā)重新編譯,從而產(chǎn)生大量開銷。使用 Test Suite Synthesis 進行仿真,該工具的輸出將是在處理器上運行的 C 代碼和用于 I/O 的事務(wù)。這些測試存儲在設(shè)計內(nèi)存中,并在運行時作為目標文件加載。更改不會導(dǎo)致重新編譯,只是快速重新加載內(nèi)存。這可以極大地改變編譯動態(tài)。
便攜式刺激也可以產(chǎn)生真正的影響,因為我們提前為跑步預(yù)先生成了所有刺激。雖然可能無法將所有刺激存儲在模擬器中,但可以利用一些內(nèi)存,以便可以批量傳輸大量刺激,僅在需要重新填充緩沖區(qū)時停止模擬器。
同時,可以進行類似的修改,以便結(jié)果檢查的數(shù)據(jù)也被緩沖,直到它需要被刷新,或者模擬器已經(jīng)停止以獲得更多刺激。此時,可以下載響應(yīng)數(shù)據(jù)并檢查是否有任何故障。如果已經(jīng)存在,則可以終止仿真器運行??赡芤呀?jīng)有足夠的信息可以開始調(diào)試了。如果不是,則故障時間是已知的,因此模擬器中的調(diào)試運行只需執(zhí)行到第一次故障時。
Breker 與一些仿真提供商合作,將這一解決方案變?yōu)楝F(xiàn)實。反過來,他們一直在努力完善混合仿真,現(xiàn)在他們可以在其中添加 Breker 測試綜合解決方案。我們將繼續(xù)共同努力改進組合解決方案,并使 Accellera 標準的原始概念成為現(xiàn)實。我們現(xiàn)在可以采用單個模型并將其定位到多個執(zhí)行平臺。這消除了繁瑣的任務(wù)并提高了模擬器的使用效率。與往常一樣,如有問題或意見,請隨時與我聯(lián)系。
審核編輯:湯梓紅
電子發(fā)燒友App












































評論