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