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