仿真和驗(yàn)證是開發(fā)任何高質(zhì)量的基于 FPGA 的 RTL 編碼過程的基礎(chǔ)。在之前的文章中,我們介紹了面向?qū)嶓w/塊的仿真以及如何在IP核中執(zhí)行面向全局的仿真,即通過在每個(gè)輸入信號(hào)上生成激勵(lì)并驗(yàn)證 RTL 代碼行為是否符合預(yù)期,對(duì)構(gòu)成每個(gè) IP 核的不同模塊進(jìn)行實(shí)體/塊的仿真。而一旦不同的模塊被單獨(dú)驗(yàn)證,則意味著下一步將整個(gè)IP仿真為單個(gè) UUT(被測(cè)試單元)。
盡管擴(kuò)展的仿真計(jì)劃提供了良好的可信度,但仍有許多corner的情況無法在虛擬環(huán)境中驗(yàn)證。對(duì)于這些情況,需要基于硬件的測(cè)試計(jì)劃,這也是獲得高質(zhì)量結(jié)果的最后一步。在本篇文章中,我們將介紹如何在硬件平臺(tái)上驗(yàn)證IP核。
硬件測(cè)試
硬件測(cè)試是為IP核產(chǎn)品執(zhí)行高質(zhì)量測(cè)試和驗(yàn)證計(jì)劃的最后一步,主要可以分為以下幾個(gè)階段:
1. 測(cè)試準(zhǔn)備:定義在產(chǎn)品開始測(cè)試之前必須完成的步驟
在這個(gè)階段,定義了測(cè)試計(jì)劃文檔。在這個(gè)文檔中,詳細(xì)描述了必須在 DUT(被測(cè)設(shè)備)上執(zhí)行的每一項(xiàng)測(cè)試。
2. 測(cè)試執(zhí)行:執(zhí)行上一個(gè)階段中定義的測(cè)試用例
3. 問題報(bào)告:檢查和報(bào)告在測(cè)試執(zhí)行期間檢測(cè)到的所有問題
可以使用問題電子表格來記錄在測(cè)試階段檢測(cè)到的每個(gè)問題。每當(dāng)注冊(cè)新問題時(shí),都會(huì)向開發(fā)團(tuán)隊(duì)報(bào)告,并且能夠追蹤哪些問題已解決,哪些問題仍有待審查。
4. 測(cè)試結(jié)束:確定測(cè)試階段何時(shí)完成,并創(chuàng)建測(cè)試結(jié)果文檔,其中將包含成功執(zhí)行的測(cè)試的摘要以及有關(guān)測(cè)試的更多相關(guān)信息。
虹科SoC-e測(cè)試工具
為了優(yōu)化測(cè)試執(zhí)行過程,我們使用了虹科SoC-e測(cè)試工具,以進(jìn)行自動(dòng)化測(cè)試。該工具考慮了以下內(nèi)容:
● DUT配置過程
● 流量注入和嗅探
● 記錄從 DUT 返回的流量
● 驗(yàn)證保存的日志
● 將 DUT 設(shè)置為原始狀態(tài)
SoC-e測(cè)試軟件架構(gòu)
該工具的第一步與DUT 配置的執(zhí)行有關(guān)。這是通過名為 Platform.vars 的輸入配置文件完成的。通過該文件,用戶可以配置不同的參數(shù),如 DUT SSH 參數(shù)、主機(jī) PC 的 IP 地址或網(wǎng)絡(luò)接口。
第二步,完成TS(測(cè)試站)和 DUT之間的流量注入和嗅探。我們有不同的第三方設(shè)備用作測(cè)試站,但最常用的設(shè)備之一是IXIA Novus One Plus。流量可以通過 IXIA 的 Python API 輕松發(fā)送。數(shù)據(jù)包操作是通過 Scapy Python 模塊完成的。盡管 Scapy 允許傳輸該工具生成的所有流量,但它是使用不同的工具tcpreplay執(zhí)行的。這使我們能夠克服由 Scapy 引起的帶寬和準(zhǔn)確性方面的某些限制。在此步驟中,測(cè)試提供了自定義流量的靈活性,以驗(yàn)證不同的 DUT 功能??蓴U(kuò)展性不是問題,因?yàn)樵摴ぞ咧С痔砑宇~外的流量和測(cè)試端口。
第三步,該工具使用測(cè)試站或通過 Linux tcpdump 軟件登記來自 DUT 的流量。
第四步,SoC-e 測(cè)試工具驗(yàn)證上一步中存儲(chǔ)的信息(統(tǒng)計(jì)、寄存器轉(zhuǎn)儲(chǔ)(dump)等),以檢查一切是否正常。通過這兩個(gè)步驟,SoC-e 測(cè)試工具為測(cè)試用例的驗(yàn)證提供了一個(gè)很好的解決方案。
最后,第五步,也是最后一步。最后一步的主要目的是將 DUT 配置恢復(fù)到其原始狀態(tài),因?yàn)樗赡茉跍y(cè)試期間被修改。