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












































評(píng)論