摘要: 仿真和驗(yàn)證是開發(fā)任何高質(zhì)量的基于 FPGA 的 RTL 編碼過程的基礎(chǔ)。本文檔主要分享虹科設(shè)計(jì)過程中的關(guān)鍵步驟。
在IP核的開發(fā)過程中,面臨著許多關(guān)鍵技術(shù),比如IP核的規(guī)格定義、基于接口的設(shè)計(jì)、IP核測(cè)試存取結(jié)構(gòu)標(biāo)準(zhǔn)、IP核的驗(yàn)證與打包等。對(duì)于IP核的驗(yàn)證,主要是建立參照模型和測(cè)試平臺(tái),然后進(jìn)行回歸測(cè)試和形式驗(yàn)證。
這里參照的模型主要用于對(duì)系統(tǒng)功能進(jìn)行驗(yàn)證以及和RTL模型的對(duì)照驗(yàn)證,該模型主要用Verilog HDL等語言來構(gòu)造。測(cè)試平臺(tái)的建立與子模塊設(shè)計(jì)并行,搭建驗(yàn)證環(huán)境和開發(fā)測(cè)試用例,并針對(duì)IP核的行為級(jí)模型對(duì)測(cè)試環(huán)境和測(cè)試用例進(jìn)行調(diào)試,從而同步準(zhǔn)備好用來仿真測(cè)試RTL級(jí)IP核的驗(yàn)證環(huán)境和測(cè)試用例。
仿真和驗(yàn)證是開發(fā)任何高質(zhì)量的基于 FPGA 的 RTL 編碼過程的基礎(chǔ)。在本系列文章中,我們將分享我們?cè)O(shè)計(jì)過程中的關(guān)鍵步驟,并將基于虹科以太網(wǎng)IP核產(chǎn)品組合進(jìn)行介紹。
整個(gè)過程的關(guān)鍵步驟如下:
- 面向?qū)嶓w/塊的仿真:通過在每個(gè)輸入信號(hào)上生成激勵(lì)并驗(yàn)證 RTL 代碼行為是否符合預(yù)期,對(duì)構(gòu)成每個(gè) IP 核的不同模塊進(jìn)行實(shí)體/塊的仿真。
- 面向全局的仿真:一旦不同的模塊被單獨(dú)驗(yàn)證,則意味著下一步將整個(gè)IP仿真為單個(gè) UUT(被測(cè)試單元)。
- (On)硬件測(cè)試:盡管擴(kuò)展的仿真計(jì)劃提供了良好的可信度,但仍有許多corner的情況無法在虛擬環(huán)境中驗(yàn)證。對(duì)于這些情況,需要基于硬件的測(cè)試計(jì)劃,這也是獲得高質(zhì)量結(jié)果的最后一步。
一、面向?qū)嶓w/塊的仿真
“面向?qū)嶓w或塊的仿真”這一步驟意味著驗(yàn)證在 IP 核內(nèi)具有特定操作的特定實(shí)體或模塊的正確操作。每個(gè) IP 核都由許多實(shí)體或塊組成,為了測(cè)試它們,每個(gè)實(shí)體會(huì)有不同的測(cè)試平臺(tái),通過在輸入受到刺激時(shí)觀察設(shè)計(jì)的輸出來執(zhí)行設(shè)計(jì),這將有助于檢查預(yù)期的行為。舉個(gè)例子有助于理解這些內(nèi)容,在此之前,我們需要先介紹虹科以太網(wǎng)交換機(jī) IP 核的過濾數(shù)據(jù)庫。
過濾數(shù)據(jù)庫存儲(chǔ) MAC 地址及其相關(guān)信息以做出幀轉(zhuǎn)發(fā)決策。它是一個(gè)基于哈希的存儲(chǔ)器,每個(gè)地址條目都有一些存儲(chǔ)過濾數(shù)據(jù)的 bin。該哈希算法還生成過濾數(shù)據(jù)庫內(nèi)存的索引。
過濾數(shù)據(jù)庫執(zhí)行有三個(gè)主要過程:學(xué)習(xí)、查找和老化。
- 學(xué)習(xí)過程負(fù)責(zé)在滿足不同條件時(shí)保存幀。
- 查找過程是在過濾數(shù)據(jù)庫中搜索并獲得幀的轉(zhuǎn)發(fā)端口掩碼的過程。
- 老化過程根據(jù)給定的時(shí)間段刪除舊的 MAC 條目。
在這個(gè)仿真MAC表的具體案例中,請(qǐng)始終嘗試測(cè)試構(gòu)成過濾數(shù)據(jù)庫功能的所有機(jī)制。從這個(gè)意義上說,就像學(xué)習(xí)不同的MAC,不同的查詢、老化是并行完成的,最后需要清除MAC表并驗(yàn)證所有條目都已刪除。此外,研究并始終能夠測(cè)試可能的corner案例也十分重要。
測(cè)試和驗(yàn)證復(fù)雜 FPGA 設(shè)計(jì)的第二個(gè)關(guān)鍵步驟是面向全局的仿真。一旦形成 IP 核的所有實(shí)體都按預(yù)期工作,全局仿真就會(huì)發(fā)揮作用。
二、面向全局的仿真
全局仿真意味著驗(yàn)證整個(gè)IP實(shí)體的正確行為,包括構(gòu)成產(chǎn)品的每個(gè)子模塊。為了適應(yīng)不同客戶的用例,虹科SoC-e IP核解決方案在設(shè)計(jì)時(shí)充分考慮了靈活性,這意味著虹科所有的IP核都是高度可配置的,無論是在集成時(shí)(以優(yōu)化 FPGA 中的封裝)還是在運(yùn)行時(shí)。借助于有著不同接口選項(xiàng)的寄存器映射(在下面的示例中,使用 AXI4),運(yùn)行時(shí)配置成為可能。
這種靈活性也對(duì)仿真過程提出了挑戰(zhàn),因?yàn)樾枰鶕?jù)仿真環(huán)境中的不同測(cè)試用例來配置IP。對(duì)此,虹科的合作伙伴SoC-e團(tuán)隊(duì)開發(fā)了一個(gè)令人驚嘆的智能測(cè)試平臺(tái)環(huán)境,在該環(huán)境中可以進(jìn)行實(shí)時(shí)配置并實(shí)現(xiàn)自動(dòng)化,開發(fā)人員可以通過“點(diǎn)擊應(yīng)用”的方式來執(zhí)行復(fù)雜的仿真。例如,測(cè)試平臺(tái)可以通過交換機(jī)發(fā)送以太網(wǎng)幀,并可以通過訪問IP 核的統(tǒng)計(jì)寄存器來讀取結(jié)果(并檢查輸出是否符合預(yù)期)。
這極大地加快了調(diào)試過程,并允許開發(fā)團(tuán)隊(duì)執(zhí)行快速迭代,而這在基于硬件的測(cè)試環(huán)境中會(huì)慢得多。在下圖為具有此類全局測(cè)試平臺(tái)架構(gòu)的框圖(基于虹科網(wǎng)管以太網(wǎng)交換機(jī)IP核):
網(wǎng)管型以太網(wǎng)交換機(jī) (MES) 表示為UUT。其余的測(cè)試平臺(tái)組件是符合整個(gè)環(huán)境的不可綜合的 VHDL 模塊:
- Frame Generator::該模塊連接到以太網(wǎng)交換機(jī) IP 的入口端口,負(fù)責(zé)生成激勵(lì)(以太網(wǎng)幀)。
- Frame Checker:該模塊連接到以太網(wǎng)交換機(jī)IP的出端口,負(fù)責(zé)分析交換機(jī)轉(zhuǎn)發(fā)的流量。
- AXI Configurator:它控制 AXI4 配置總線以修改配置寄存器的內(nèi)容(讀/寫操作)。
2.1 測(cè)試平臺(tái)執(zhí)行流程
正常的測(cè)試平臺(tái)執(zhí)行流程如下:首先,AXI Configurator模塊根據(jù)測(cè)試用例配置IP核。之后,每個(gè)Frame Generator都會(huì)生成測(cè)試幀,并將其發(fā)送到啟用的入口端口。幀是通過循環(huán)重復(fù)某些特定測(cè)試文件中定義的內(nèi)容來生成的。最后,F(xiàn)rame Checker接收幀(接收與否,取決于測(cè)試用例)。該塊將檢查每個(gè)端口對(duì)應(yīng)的統(tǒng)計(jì)信息,并根據(jù)執(zhí)行的測(cè)試用例確定輸出是否符合預(yù)期的。
虹科SoC-e測(cè)試平臺(tái)架構(gòu)的一大亮點(diǎn)是Frame Checker可以自動(dòng)檢測(cè)多種錯(cuò)誤,例如完整性錯(cuò)誤、轉(zhuǎn)發(fā)錯(cuò)誤或幀丟失。這是可實(shí)現(xiàn)的,因?yàn)镕rame Generator可以生成具有特定格式的流量(例如有效載荷中的特殊模式、序列號(hào)等),F(xiàn)rame Checker可以解釋這些流量。
2.2 虹科測(cè)試平臺(tái)測(cè)試計(jì)劃
該測(cè)試平臺(tái)套件的驚人靈活性還與SoC-e定義的嚴(yán)格測(cè)試計(jì)劃相結(jié)合。對(duì)于每個(gè)IP核,都有一個(gè)測(cè)試計(jì)劃,旨在在仿真環(huán)境中測(cè)試盡可能多的特性。
例如,網(wǎng)管以太網(wǎng)交換機(jī)IP的測(cè)試計(jì)劃可以被劃分為五個(gè)主要部分:
- 通用交換
- 自定義轉(zhuǎn)發(fā)
- 過濾數(shù)據(jù)庫
- 優(yōu)先隊(duì)列
- VLAN
這些部分旨在涵蓋與網(wǎng)絡(luò)相關(guān)的不同功能的行為,以及不同的流量模式和情況。
2.3 仿真波形和TCL控制臺(tái)
測(cè)試平臺(tái)的結(jié)果可以由開發(fā)人員或用戶以不同的方式進(jìn)行分析。TCL控制臺(tái)用于快速反饋測(cè)試結(jié)果。然而,在某些情況下,在仿真的特定時(shí)刻深入了解特定信號(hào)值可能會(huì)很有趣。對(duì)于這種情況,虹科團(tuán)隊(duì)還開發(fā)了預(yù)先格式化的波形,以便于查找特定信號(hào)。
2.4 用于測(cè)試執(zhí)行的命令行界面(CLI)
此測(cè)試平臺(tái)環(huán)境中包含的最新功能之一是可以直接從命令行界面(CLI)執(zhí)行所有測(cè)試,而無需打開RTL仿真工具(Vivado或其他工具)。這是一個(gè)很大的改進(jìn),因?yàn)樗梢詫?shí)現(xiàn)更高的測(cè)試自動(dòng)化。它基于使用Vivado編譯器命令的腳本(Python)的使用,以便用戶生成易于解釋的結(jié)果。下圖顯示了向用戶顯示的仿真菜單。用戶只需選擇相應(yīng)的選項(xiàng)即可執(zhí)行任何列出的測(cè)試:
眾所周知,仿真是一個(gè)需要大量時(shí)間的過程。即使在功能強(qiáng)大的計(jì)算機(jī)中執(zhí)行,毫秒或以上范圍內(nèi)的復(fù)雜仿真也需要持續(xù)數(shù)十分鐘,甚至更長(zhǎng)。為了簡(jiǎn)化執(zhí)行所有測(cè)試的過程(這需要幾個(gè)小時(shí)),我們實(shí)現(xiàn)了一個(gè)“-all”選項(xiàng),它允許在管道中執(zhí)行所有測(cè)試,且無需用戶交互。完成所有測(cè)試后,它將提供有關(guān)每個(gè)測(cè)試的報(bào)告消息(如下圖所示),并在測(cè)試失敗的情況下生成輸出文件,以便開發(fā)人員稍后進(jìn)行分析。
虹科SoC-e測(cè)試平臺(tái)套件,現(xiàn)在作為產(chǎn)品提供!
雖然所有這些測(cè)試平臺(tái)環(huán)境僅用于內(nèi)部調(diào)試和開發(fā)目的,但由于不少客戶有使用該測(cè)試平臺(tái)的需求,因此虹科的合作伙伴SoC-e目前已將其作為產(chǎn)品,提供給那些使用虹科SoC-e IP核解決方案并希望能夠執(zhí)行高級(jí)仿真工作(系統(tǒng)級(jí)仿真)的客戶。如果您對(duì)該產(chǎn)品感興趣和/或想了解更多信息,請(qǐng)通過sales@hkaco.com聯(lián)系我們。
三、硬件測(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è)到的所有問題
我們提供了一個(gè)問題電子表格,其中將記錄在測(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)信息。
3.1 虹科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)
3.2 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è)試期間被修改。
IP核可以使開發(fā)人員減設(shè)計(jì)工作量并縮短產(chǎn)品上市時(shí)間。虹科目前已有豐富的IP核產(chǎn)品組合,包括TSN IP核、HSR/PRP IP核、以太網(wǎng)IP核、冗余IP核等,可以輕松集成到用戶的FPGA中。若想了解更多信息,歡迎隨時(shí)通過info@hkaco.com聯(lián)系虹科工業(yè)控制團(tuán)隊(duì)!
聯(lián)系虹科工程師:18922242268
聯(lián)系鏈接:https://tl-tx.dustess.com/ChxLxfu6M0