專利名稱:分布式包交換芯片模型驗證系統(tǒng)及驗證方法
技術(shù)領(lǐng)域:
本發(fā)明涉及包處理芯片設(shè)計領(lǐng)域,特別是涉及一種分布式包交換芯片模型驗證系統(tǒng)及驗證方法。
背景技術(shù):
隨著全球通信技術(shù)的IP (Internet Protocol,網(wǎng)際協(xié)議)化進(jìn)程不斷深入,包交換芯片的應(yīng)用需求日益增多,包交換相關(guān)的協(xié)議也隨之增多,從而使得此類芯片的開發(fā)日趨復(fù)雜。實際的芯片開發(fā)過程中,常見的芯片驗證流程如下:(I)系統(tǒng)功能模型驗證階段:系統(tǒng)采用高級語言(例如C語言)進(jìn)行系統(tǒng)功能的建模,即利用程序建模的方法先將芯片的包處理功能模擬出來,測試完成后再以此為基準(zhǔn)進(jìn)行硬件描述語言級別的實現(xiàn),這一過程可簡稱為C模型測試;(2)電路仿真驗證階段:采用硬件描述語言針對已經(jīng)測試通過的C模型功能,完成RTL (Register Transport Level寄存器傳輸級)模塊設(shè)計,并搭建仿真測試平臺進(jìn)行仿真測試;(3)軟硬協(xié)同仿真驗證(Co-simulation)階段:將已經(jīng)通過仿真測試的RTL代碼和芯片驅(qū)動軟件的代碼整合在一起進(jìn)行仿真測試;(4)原型驗證階段:將上述通過驗證的RTL綜合成為實際的真實電路,采用特定的FPGA (Field — Programmable Gate Array,現(xiàn)場可編程門陣列)得到物理實現(xiàn),并在原型驗證板和網(wǎng)絡(luò)測試儀表構(gòu)成原型驗證環(huán)境中進(jìn)行測試,通常芯片開發(fā)在此階段才將SDK(System Development Kit,系統(tǒng)開發(fā)工具包)和硬件系統(tǒng)一同進(jìn)行系統(tǒng)級別的測試。由于上述4個階段采用的方法不同,一般需要為每個階段單獨設(shè)計一套硬件或軟件來分別實現(xiàn),測試用例無法復(fù)用,導(dǎo)致整個過程異常復(fù)雜。每個包交換芯片需要支持?jǐn)?shù)以千計的各類網(wǎng)絡(luò)協(xié)議,因此需要在不同級別上分別做大量的測試才能最終完成驗證,整個收斂過程會出現(xiàn)大量的反復(fù),待測芯片的功能驗證在不同級別的驗證收斂時間冗長,導(dǎo)致開發(fā)進(jìn)度滯后。
發(fā)明內(nèi)容
本發(fā)明提供了一種分布式包交換芯片模型驗證系統(tǒng)及驗證方法,采用分布式的系統(tǒng)架構(gòu)對不同抽象級別的驗證過程進(jìn)行了歸一化處理,能夠大幅縮短待測芯片在不同級別的驗證收斂時間,提高開發(fā)效率,降低調(diào)試成本。本發(fā)明提供的分布式包交換芯片模型驗證系統(tǒng),包括核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊,其中,核心控制模塊屬于服務(wù)端程序模塊,命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊屬于客戶端程序模塊,該驗證系統(tǒng)屬于客戶端-服務(wù)端-客戶端C/S/C結(jié)構(gòu)的分布式系統(tǒng),同時支持3種應(yīng)用場景:系統(tǒng)功能模型驗證、軟硬協(xié)同仿真驗證、原型驗證,不同的應(yīng)用場景下所需模塊不同;核心控制模塊,用于:管理與之相連的命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊之間傳遞的消息,完成全局配置文件和程序模塊間專有消息的轉(zhuǎn)發(fā)、復(fù)制、廣播、分類、保存、統(tǒng)計,同時維護(hù)消息通道的連接;命令行接口模塊,用于:讀取由用戶定制的全局配置文件,根據(jù)讀取的應(yīng)用場景配置參數(shù)啟動當(dāng)前應(yīng)用場景所需的程序模塊,待C/S/C的連接初始化后,為芯片開發(fā)人員提供命令行接口,完成測試用例的定制和編輯;SDK代理接口模塊,用于:接收核心控制模塊發(fā)來的待測包交換芯片配置,根據(jù)待測包交換芯片配置調(diào)用SDK軟件,驅(qū)動待測包交換芯片的模型/原型正常運行;虛擬網(wǎng)絡(luò)測試儀表模塊,用于:模擬真實的網(wǎng)絡(luò)測試儀表,根據(jù)核心控制模塊轉(zhuǎn)發(fā)的待測包交換芯片測試激勵配置消息和響應(yīng)檢查配置消息,完成數(shù)據(jù)包的發(fā)送、接收、校驗和統(tǒng)計;虛擬芯片配置模塊,僅用在系統(tǒng)功能模型驗證應(yīng)用場景下,用于保存、更新、查詢待測包交換芯片的寄存器配置和包處理協(xié)議表項;C模型封裝模塊,用于:讀取虛擬芯片配置模塊中的待測包交換芯片配置,接收測試模塊發(fā)來的測試激勵,將待測包交換芯片配置和測試激勵送給封裝在其內(nèi)部的包交換芯片模型處理,將該包交換芯片模型處理后的結(jié)果發(fā)送到測試模塊;C模型封裝模塊僅在系統(tǒng)功能模型驗證應(yīng)用場景下啟用,使包交換芯片模型連接到本分布式系統(tǒng)中。在上述技術(shù)方案的基礎(chǔ)上,所述全局配置文件包括應(yīng)用場景、模型類型、服務(wù)端進(jìn)程配置信息和若干客戶端進(jìn)程配置信息,應(yīng)用場景設(shè)置為系統(tǒng)功能模型驗證、軟硬協(xié)同仿真驗證、原型驗證中的一種,用于控制不同的應(yīng)用場景中所需程序模塊的使能及運行方式;模型類型根據(jù)待測芯片的不同模塊的模型被設(shè)置成不同標(biāo)識,僅用在系統(tǒng)功能模型驗證應(yīng)用場景下,C模型封裝模塊根據(jù)模型標(biāo)識動態(tài)鏈接對應(yīng)的C模型的目標(biāo)文件;服務(wù)端進(jìn)程配置信息包括IP地址、端口號、進(jìn)程類型和設(shè)備號,客戶端進(jìn)程配置信息包括進(jìn)程類型和設(shè)備號,IP地址和端口號用于創(chuàng)建服務(wù)器端程序模塊和客戶端程序模塊之間的網(wǎng)絡(luò)套接字連接,構(gòu)建程序模塊間的消息通道;進(jìn)程類型被設(shè)置成不同的進(jìn)程標(biāo)識,用于區(qū)分不同的模塊類型;在非組網(wǎng)測試中,核心控制模塊將按照進(jìn)程類型來進(jìn)行對應(yīng)的操作;設(shè)備號用于區(qū)分程序模塊測試的待測芯片,在組網(wǎng)測試中,每個待測芯片都存在唯一的設(shè)備號,在組網(wǎng)測試中,核心控制模塊將按照設(shè)備號、進(jìn)程類型來進(jìn)行對應(yīng)的操作,在非組網(wǎng)測試中,設(shè)備號被系統(tǒng)忽略。在上述技術(shù)方案的基礎(chǔ)上,所述程序模塊間專有消息包括6個消息域:設(shè)備號、來源進(jìn)程類型、目標(biāo)進(jìn)程類型、命令狀態(tài)、消息號、消息內(nèi)容,其中,設(shè)備號用于區(qū)分程序模塊測試的待測芯片,在組網(wǎng)測試中,每個待測芯片都存在唯一的設(shè)備號,在組網(wǎng)測試中,核心控制模塊將按照設(shè)備號、進(jìn)程類型來進(jìn)行對應(yīng)的操作,在非組網(wǎng)測試中,設(shè)備號被系統(tǒng)忽略;來源進(jìn)程類型和目標(biāo)進(jìn)程類型用于表示一個消息的來源和目標(biāo),便于核心控制模塊將按照進(jìn)程類型進(jìn)行轉(zhuǎn)發(fā),同時用于和消息號一同計算得出全局消息號;命令狀態(tài)用于表示一個消息的基本返回狀態(tài);消息號用于區(qū)分同一類程序模塊內(nèi)不同的消息,核心控制模塊根據(jù)全局消息號進(jìn)行操作;消息內(nèi)容是各個消息號對應(yīng)的具體消息內(nèi)容。在上述技術(shù)方案的基礎(chǔ)上,所述命令狀態(tài)包括正確返回、命令錯誤和命令超時3種狀態(tài)。在上述技術(shù)方案的基礎(chǔ)上,所述具體消息內(nèi)容包括子消息、字符串信息和協(xié)議報文。在上述技術(shù)方案的基礎(chǔ)上,每一類程序模塊內(nèi)部的消息號是獨立編號的,對于整個分布式系統(tǒng)而言,全局消息號=目標(biāo)進(jìn)程類型的全局起始消息編號+消息號。在上述技術(shù)方案的基礎(chǔ)上,所述測試用例支持的命令包括待測芯片配置命令、虛擬網(wǎng)絡(luò)測試儀表的激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令和本分布式系統(tǒng)的調(diào)試命令。在上述技術(shù)方案的基礎(chǔ)上,所述核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊分布在相同機(jī)器或不同機(jī)器上。在上述技術(shù)方案的基礎(chǔ)上,所述核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊分布在相同操作系統(tǒng)或不同操作系統(tǒng)中?;谏鲜龇植际桨粨Q芯片模型驗證系統(tǒng),本發(fā)明實施例還提供一種分布式包交換芯片模型驗證方法,包括以下步驟:S1、在系統(tǒng)功能模型驗證場景下:步驟101、系統(tǒng)初始化:設(shè)置全局配置的應(yīng)用場景為系統(tǒng)功能模型驗證,配置待測芯片的模型類型及設(shè)備號,配置核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊的進(jìn)程標(biāo)識和設(shè)備號,先啟動核心控制模塊,然后啟動客戶端程序模塊,客戶端程序模塊根據(jù)全局配置中的IP地址、端口號自動創(chuàng)建與核心控制模塊之間的消息通道,各模塊分布在一臺或多臺機(jī)器上;步驟102、測試命令或腳本錄入:用戶錄入命令行接口模塊所能識別的各種命令、腳本,命令行接口模塊將命令、腳本文件轉(zhuǎn)換成為命令消息發(fā)送到核心控制模塊,命令消息包括待測芯片配置命令、激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令;步驟103、測試命令轉(zhuǎn)發(fā):核心控制模塊根據(jù)收到的命令消息中的目的進(jìn)程類型和設(shè)備號,將待測芯片配置命令轉(zhuǎn)發(fā)到SDK代理接口模塊,將激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令轉(zhuǎn)發(fā)到虛擬網(wǎng)絡(luò)測試儀表模塊;步驟104、待測芯片配置命令處理:SDK代理接口模塊將收到的待測芯片配置命令轉(zhuǎn)換成具體的芯片配置,寫入/讀取虛擬芯片配置模塊中的寄存器和表項數(shù)據(jù),供C模型封裝模塊讀??;步驟105、激勵配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的激勵配置命令,產(chǎn)生對應(yīng)的各種協(xié)議包數(shù)據(jù),并發(fā)送給C模型封裝模塊,同時記錄這些生成的激勵包數(shù)據(jù),為后續(xù)的期望包數(shù)據(jù)生成做準(zhǔn)備;步驟106、響應(yīng)期望檢查規(guī)則配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的響應(yīng)期望檢查規(guī)則配置命令和步驟105中記錄的激勵包數(shù)據(jù),計算得到期望得到的響應(yīng)包數(shù)據(jù),并記錄下來,為后續(xù)的實際響應(yīng)包和期望的響應(yīng)包之間進(jìn)行自動比較做準(zhǔn)備;步驟107、C模型封裝模塊的包處理:C模型封裝器將收到的各種激勵包數(shù)據(jù)轉(zhuǎn)換成待測芯片模型所能識別的數(shù)據(jù)結(jié)構(gòu),調(diào)用待測芯片模型的功能,得到響應(yīng)包的數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)換成虛擬網(wǎng)絡(luò)測試儀表模塊需要的響應(yīng)包消息格式,發(fā)送給虛擬網(wǎng)絡(luò)測試儀表模塊;步驟108、比較實際響應(yīng)包與期望響應(yīng)包:虛擬網(wǎng)絡(luò)測試儀表模塊將收到的實際響應(yīng)包于之前記錄的期望響應(yīng)包進(jìn)行比較,得到最終的結(jié)果,并將結(jié)果以文件的方式保存下來,供測試人員查閱;S2、在軟硬協(xié)同仿真驗證場景下:步驟201、系統(tǒng)初始化:設(shè)置全局配置的應(yīng)用場景為軟硬協(xié)同仿真驗證,配置待測芯片的模型類型及設(shè)備號,配置核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊的進(jìn)程標(biāo)識和設(shè)備號,先啟動核心控制模塊,然后啟動客戶端程序模塊,客戶端程序模塊根據(jù)全局配置中的IP地址、端口號自動創(chuàng)建與核心控制模塊之間的消息通道,各模塊分布在一臺或多臺機(jī)器上;步驟202、測試命令或腳本錄入,與步驟102相同:用戶錄入命令行接口模塊所能識別的各種命令、腳本,命令行接口模塊將命令、腳本文件轉(zhuǎn)換成為命令消息發(fā)送到核心控制模塊,命令消息包括待測芯片配置命令、激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令;步驟203、測試命令轉(zhuǎn)發(fā),與步驟103相同:核心控制模塊根據(jù)收到的命令消息中的目的進(jìn)程類型和設(shè)備號,將待測芯片配置命令轉(zhuǎn)發(fā)到SDK代理接口模塊,將激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令轉(zhuǎn)發(fā)到虛擬網(wǎng)絡(luò)測試儀表模塊;步驟204、待測芯片配置命令處理:SDK代理接口模塊將收到的待測芯片配置命令轉(zhuǎn)換成具體的芯片配置,通過RTL仿真器提供的直接編程接口 DPI調(diào)用仿真測試平臺的寄存器及表項配置功能,完成對RTL中的寄存器及表項配置進(jìn)行讀寫操作;如果原RTL仿真測試平臺沒有開發(fā)對應(yīng)的寄存器及表項配置DPI,則添加寄存器及表項配置DPI來適配本系統(tǒng);步驟205、激勵配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的激勵配置命令,產(chǎn)生對應(yīng)的各種協(xié)議包數(shù)據(jù),通過DPI調(diào)用仿真測試平臺的激勵信號驅(qū)動功能,將激勵包數(shù)據(jù)驅(qū)動到待測RTL模塊的接口信號上,同時記錄這些生成的激勵包數(shù)據(jù),為后續(xù)的期望包數(shù)據(jù)生成做準(zhǔn)備;如果原RTL仿真測試平臺沒有開發(fā)對應(yīng)的激勵信號驅(qū)動DPI,則添加激勵信號驅(qū)動DPI來適配本系統(tǒng);步驟206、響應(yīng)期望檢查規(guī)則配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的響應(yīng)期望檢查規(guī)則配置命令和上一步處理中記錄的激勵包數(shù)據(jù),計算得到期望得到的響應(yīng)包數(shù)據(jù),通過DPI將期望的響應(yīng)包存入RTL的仿真測試平臺,為后續(xù)的實際響應(yīng)包和期望的響應(yīng)包之間進(jìn)行自動比較做準(zhǔn)備;如果原RTL仿真測試平臺沒有開發(fā)對應(yīng)的期望響應(yīng)包存儲DPI,則添加期望響應(yīng)包存儲DPI來適配本系統(tǒng);步驟207、RTL仿真:RTL的仿真測試平臺從其DPI接口得到激勵包數(shù)據(jù),驅(qū)動到RTL模塊的輸入接口信號上,待RTL模塊處理完成后,從RTL模塊的輸出接口信號上,得到實際的響應(yīng)包數(shù)據(jù);步驟208、比較實際響應(yīng)包與期望響應(yīng)包:RTL的仿真測試平臺內(nèi)部比較實際響應(yīng)包和期望響應(yīng)包的數(shù)據(jù),得到最終的結(jié)果,并將結(jié)果以文件的方式保存下來,供測試人員查閱;S3、在原型驗證場景下:步驟301、系統(tǒng)初始化:設(shè)置全局配置的應(yīng)用場景為原型驗證,配置待測芯片的模型類型及設(shè)備號,配置核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊的進(jìn)程標(biāo)識和設(shè)備號,先啟動核心控制模塊,然后啟動客戶端程序模塊,客戶端程序模塊根據(jù)全局配置中的IP地址、端口號自動創(chuàng)建與核心控制模塊之間的消息通道,SDK代理接口模塊配置在原型驗證板的嵌入式系統(tǒng)中啟動,其余各個模塊分布在一臺或多臺機(jī)器上;步驟302、測試命令或腳本錄入,與步驟202相同:用戶錄入命令行接口模塊所能識別的各種命令、腳本,命令行接口模塊將命令、腳本文件轉(zhuǎn)換成為命令消息發(fā)送到核心控制模塊,命令消息包括待測芯片配置命令、激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令;步驟303、測試命令轉(zhuǎn)發(fā),與步驟203相同:核心控制模塊根據(jù)收到的命令消息中的目的進(jìn)程類型和設(shè)備號,將待測芯片配置命令轉(zhuǎn)發(fā)到SDK代理接口模塊,將激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令轉(zhuǎn)發(fā)到虛擬網(wǎng)絡(luò)測試儀表模塊;步驟304、待測芯片配置命令處理:SDK代理接口模塊將收到的待測芯片配置命令轉(zhuǎn)換成具體的芯片配置,調(diào)用SDK的寄存器及表項配置功能,完成對待測FPGA中的寄存器和表項進(jìn)行讀寫操作;步驟305、激勵配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的激勵配置命令,產(chǎn)生對應(yīng)的各種協(xié)議包數(shù)據(jù),通過調(diào)用真實網(wǎng)絡(luò)測試儀表的數(shù)據(jù)包發(fā)送功能,將包直接送到待測原型驗證板的網(wǎng)口上面,同時記錄這些生成的激勵包數(shù)據(jù),為后續(xù)的期望包數(shù)據(jù)生成做準(zhǔn)備;步驟306、響應(yīng)期望檢查規(guī)則配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的響應(yīng)期望檢查規(guī)則配置命令和上一步處理中記錄的激勵包數(shù)據(jù),計算得到期望得到的響應(yīng)包數(shù)據(jù),并記錄下來,同時開啟真實網(wǎng)絡(luò)測試儀表的包抓取功能,為后續(xù)的實際響應(yīng)包和期望的響應(yīng)包之間進(jìn)行自動比較做準(zhǔn)備;步驟307、FPGA完成包處理:待測芯片的物理實現(xiàn)FPGA通過原型驗證板的網(wǎng)口得到激勵包數(shù)據(jù),處理完成后發(fā)送實際的響應(yīng)包數(shù)據(jù)到原型驗證板的網(wǎng)口,同時儀表接收到響應(yīng)包,將收到的包存入其內(nèi)部的緩存;步驟308、比較實際響應(yīng)包與期望響應(yīng)包,虛擬網(wǎng)絡(luò)測試儀表模塊發(fā)完所有的激勵包后,調(diào)用真實網(wǎng)絡(luò)測試儀表的包抓取緩存讀取功能,得到實際的響應(yīng)包數(shù)據(jù),與之前記錄的期望響應(yīng)包進(jìn)行比較,得到最終的結(jié)果,并將結(jié)果以文件的方式保存下來,供測試人員查閱。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點如下:(I)本發(fā)明適用于包交換芯片驗證的整個過程,尤其是前端驗證,效果非常顯著,初期系統(tǒng)模型驗證期間能夠?qū)⑺袦y試用例測試完成,后續(xù)的軟硬協(xié)同仿真階段和原型驗證階段仍然可以沿用之前的測試用例,在不修改原有測試用例的情況下,只需修改少量全局配置參數(shù),就能夠?qū)崿F(xiàn)無縫切換,全自動的完成所有測試,能夠大幅縮短待測芯片在不同級別的驗證收斂時間,提高開發(fā)效率。(2)本發(fā)明能夠利用多個分布在不同的機(jī)器上的程序模塊并行運行,使得整體的運行效率得到提聞。(3)本發(fā)明在芯片開發(fā)早期將SDK直接嵌入至分布式系統(tǒng)中,提前進(jìn)行驗證,這樣,通常需要等到原型驗證板完成后才能進(jìn)行的工作在芯片開發(fā)的初期就已經(jīng)與其他工作一起完成,而且在后期的原型驗證中再次使用SDK,此時的SDK是已經(jīng)通過驗證的,因而能夠提高原型驗證中系統(tǒng)測試的效率,降低調(diào)試成本。(4)包交換類的芯片測試中往往存在多芯片的組網(wǎng)測試,傳統(tǒng)的驗證系統(tǒng)及方法通常難以支持,本發(fā)明的分布式系統(tǒng)架構(gòu)能夠方便的支持多個待測芯片的組網(wǎng)測試。(5)本發(fā)明的分布式系統(tǒng)架構(gòu)定義了專有的通信消息機(jī)制,通過添加消息轉(zhuǎn)換程序,將本系統(tǒng)的消息內(nèi)容轉(zhuǎn)換成為其他各種軟件/硬件系統(tǒng)能夠接受的操作(例如硬件描述語言的仿真器,網(wǎng)絡(luò)測試儀表命令接口),消息轉(zhuǎn)換程序和核心控制模塊能夠進(jìn)行消息通信,從而完成互聯(lián)。因為通常第3方的系統(tǒng)都有自己的一套接口,因為本分布式系統(tǒng)定義了統(tǒng)一的通信消息格式,所以只用完成消息到第3方系統(tǒng)所能識別的指令接口即可完成互聯(lián),內(nèi)部的處理消息的方式仍然不變。如果不是分布式的系統(tǒng)架構(gòu),沒有這種消息機(jī)制,和其他系統(tǒng)的互聯(lián)將難以完成,只能用其他系統(tǒng)提供的軟件庫和本系統(tǒng)編譯在一起才能完成。
圖1是本發(fā)明實施例中分布式包交換芯片模型驗證系統(tǒng)的結(jié)構(gòu)示意圖。圖2為本發(fā)明實施例中系統(tǒng)全局配置的結(jié)構(gòu)示意圖。圖3為本發(fā)明實施例中進(jìn)程間消息的結(jié)構(gòu)示意圖。圖4為本發(fā)明實施例中系統(tǒng)功能模型驗證的流程圖。圖5為本發(fā)明實施例中軟硬協(xié)同仿真驗證的流程圖。圖6為本發(fā)明實施例中原型驗證的流程圖。
具體實施例方式下面結(jié)合附圖及具體實施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。參見圖1所示,本發(fā)明實施例提供一種分布式包交換芯片模型驗證系統(tǒng),包括核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊,其中,核心控制模塊屬于服務(wù)端程序模塊,命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊屬于客戶端程序模塊。該驗證系統(tǒng)屬于C/S/C (Client-Server-Client客戶端-服務(wù)端-客戶端)結(jié)構(gòu)的分布式系統(tǒng),同時支持3種應(yīng)用場景:系統(tǒng)功能模型驗證、軟硬協(xié)同仿真驗證、原型驗證,在不同的應(yīng)用場景下所需的程序模塊不同。核心控制模塊,屬于整個分布式系統(tǒng)的服務(wù)端程序,用于:管理與之相連的命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊之間傳遞的消息,完成本發(fā)明實施例的專有消息格式(后文將進(jìn)一步說明)的轉(zhuǎn)發(fā)、復(fù)制、廣播、分類、保存、統(tǒng)計,同時維護(hù)消息通道的連接。命令行接口模塊,用于:讀取由用戶定制的本發(fā)明實施例專有的全局配置文件(后文將進(jìn)一步說明),根據(jù)讀取的應(yīng)用場景配置參數(shù)啟動當(dāng)前應(yīng)用場景所需的程序模塊,待C/S/C的連接初始化后,為芯片開發(fā)人員提供命令行接口,完成測試用例的定制和編輯。測試用例支持的命令包含待測芯片配置命令,虛擬網(wǎng)絡(luò)測試儀表的激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令,以及本分布式系統(tǒng)的調(diào)試命令等。測試用例,可以在命令行上鍵入的方式送入命令行接口,也可以是一個預(yù)先寫好的腳本文件(包含多條命令的文本文件)送入命令接口,本模塊將所有命令轉(zhuǎn)化成為本發(fā)明實施例的專有消息格式發(fā)送給核心控制模塊,并從核心控制模塊接收命令運行結(jié)果消息,提取消息中運行結(jié)果顯示在命令行上。另外,本模塊的所有命令交互記錄都將記錄在日志文件中,方便調(diào)試和分析測試結(jié)果。SDK代理接口模塊,用于:接收核心控制模塊發(fā)來的待測包交換芯片配置,根據(jù)待測包交換芯片配置調(diào)用SDK軟件,驅(qū)動待測包交換芯片的模型/原型正常運行;其運行方式會根據(jù)全局配置中應(yīng)用場景配置參數(shù)的不同而發(fā)生變化。(后文會進(jìn)一步說明)。虛擬網(wǎng)絡(luò)測試儀表模塊,用于:模擬真實的網(wǎng)絡(luò)測試儀表,根據(jù)核心控制模塊轉(zhuǎn)發(fā)的待測包交換芯片測試激勵配置消息和響應(yīng)檢查配置消息,完成數(shù)據(jù)包的發(fā)送、接收、校驗和統(tǒng)計;其運行方式會根據(jù)全局配置中應(yīng)用場景配置參數(shù)的不同而發(fā)生變化。虛擬芯片配置模塊,用于:保存、更新、查詢待測包交換芯片的寄存器配置和包處理協(xié)議表項。虛擬芯片配置模塊僅在系統(tǒng)功能模型驗證應(yīng)用場景下啟用,對于軟硬協(xié)同仿真驗證和原型驗證這2種應(yīng)用場景,此模塊的功能分別在RTL模塊中及FPGA內(nèi)的實際電路完成。C模型封裝模塊,用于:讀取虛擬芯片配置模塊中的待測包交換芯片配置,接收測試模塊發(fā)來的測試激勵,將待測包交換芯片配置和測試激勵送給封裝在其內(nèi)部的包交換芯片模型處理,將該包交換芯片模型處理后的結(jié)果發(fā)送到測試模塊。在包交換芯片模型處理過程中,可能會修改虛擬芯片配置模塊中的待測包交換芯片配置。C模型封裝模塊僅在系統(tǒng)功能模型驗證應(yīng)用場景下啟用,使包交換芯片模型能夠連接到本分布式系統(tǒng)中,對于軟硬協(xié)同仿真驗證和原型驗證這2種應(yīng)用場景,待測包交換芯片的實現(xiàn)形式分別為RTL代碼及FPGA內(nèi)的實際電路。上述6個程序模塊都可以作為獨立的進(jìn)程運行于不同的機(jī)器,不同的操作系統(tǒng)上面,最終構(gòu)成整個分布式驗證系統(tǒng)。為了完成整個分布式驗證系統(tǒng)的互聯(lián)和互通控制,本發(fā)明實施例制定了專有的全局配置文件格式和程序模塊間專有消息格式。參見圖2所示,全局配置文件包括應(yīng)用場景、模型類型、服務(wù)端進(jìn)程配置信息和若干客戶端進(jìn)程配置信息,應(yīng)用場景設(shè)置為系統(tǒng)功能模型驗證、軟硬協(xié)同仿真驗證、原型驗證中的一種,用于控制不同的應(yīng)用場景中上述6個程序模塊中所需程序模塊的使能及運行方式;驗證過程是一步步的完成,一開始可能是一個個的待測模塊在本系統(tǒng)中得到驗證,然后再將待測模塊拼接成為完整的待測芯片,每個模塊/芯片在系統(tǒng)功能模型驗證中都對應(yīng)成為一個C模型,因此需要選擇是哪一個模型。模型類型根據(jù)待測芯片的不同模塊的模型被設(shè)置成不同標(biāo)識,僅用在系統(tǒng)功能模型驗證應(yīng)用場景下,C模型封裝模塊根據(jù)模型標(biāo)識動態(tài)鏈接對應(yīng)的C模型的目標(biāo)文件;服務(wù)端進(jìn)程配置信息包括IP地址、端口號、進(jìn)程類型和設(shè)備號,客戶端進(jìn)程配置信息包括進(jìn)程類型和設(shè)備號,IP地址和端口號用于創(chuàng)建服務(wù)器端程序模塊和客戶端程序模塊之間的網(wǎng)絡(luò)套接字(Socket)連接,構(gòu)建程序模塊間的消息通道;進(jìn)程類型被設(shè)置成不同的進(jìn)程標(biāo)識,用于區(qū)分上述6種不同的程序模塊類型,這里設(shè)置是對每個需要啟動的程序模塊設(shè)置標(biāo)識,這樣核心控制器才能分辨消息是來自哪個程序模塊,需要轉(zhuǎn)發(fā)到哪個程序模塊。在非組網(wǎng)測試中,核心控制模塊將按照進(jìn)程類型來進(jìn)行對應(yīng)的操作;設(shè)備號用于區(qū)分程序模塊測試的待測芯片,在組網(wǎng)測試中,每個待測芯片都存在唯一的設(shè)備號,在組網(wǎng)測試中,核心控制模塊將按照設(shè)備號、進(jìn)程類型來進(jìn)行對應(yīng)的操作,在非組網(wǎng)測試中,此設(shè)備號將被系統(tǒng)忽略。不同的應(yīng)用場景下,全局配置項根據(jù)需要啟動的程序模塊類型,逐個填入上述配置,不需要啟動的程序模塊其模塊類型相關(guān)的配置不應(yīng)填入(后文有進(jìn)一步說明)。參見圖3所示,程序模塊間專有消息包括6個消息域:設(shè)備號、來源進(jìn)程類型、目標(biāo)進(jìn)程類型、命令狀態(tài)、消息號、消息內(nèi)容,其中,設(shè)備號用于區(qū)分程序模塊測試的待測芯片,在組網(wǎng)測試中,每個待測芯片都存在唯一的設(shè)備號,在組網(wǎng)測試中,核心控制模塊將按照設(shè)備號、進(jìn)程類型來進(jìn)行對應(yīng)的操作,在非組網(wǎng)測試中,此設(shè)備號將被系統(tǒng)忽略;來源進(jìn)程類型和目標(biāo)進(jìn)程類型用于表示一個消息的來源和目標(biāo),便于核心控制模塊將按照進(jìn)程類型進(jìn)行轉(zhuǎn)發(fā),同時用于和消息號一同計算得出全局消息號;命令狀態(tài)用于表不一個消息的基本返回狀態(tài),包含正確返回、命令錯誤和命令超時3種狀態(tài);消息號用于區(qū)分同一類程序模塊內(nèi)不同的消息,每一類程序模塊內(nèi)部的消息號是獨立編號的,對于整個分布式系統(tǒng)而言,全局消息號=目標(biāo)進(jìn)程類型的全局起始消息編號+消息號,核心控制模塊根據(jù)全局消息號進(jìn)行操作;消息內(nèi)容是各個消息號對應(yīng)的具體消息內(nèi)容,理論上可以存放任意字節(jié)的數(shù)據(jù),具體消息內(nèi)容包括子消息(例如命令包括多個參數(shù))、字符串信息和協(xié)議報文(如各類包數(shù)據(jù))等,根據(jù)各模塊的功能需要和處理的多種不同消息,具體消息內(nèi)容和待測芯片的具體功能相關(guān),本發(fā)明實施例中的程序模塊間專有消息格式作為一種通用的消息格式,可以適用于各種待測的包交換類型芯片?;谏鲜龇植际桨粨Q芯片模型驗證系統(tǒng)(包括全局配置和程序模塊消息機(jī)制在內(nèi)),本發(fā)明實施例提供一種分布式包交換芯片模型驗證方法,能夠同時支持3種應(yīng)用場景:系統(tǒng)功能模型驗證、軟硬協(xié)同仿真驗證、原型驗證,下面進(jìn)行詳細(xì)說明。本發(fā)明實施例提供的分布式包交換芯片模型驗證方法,包括以下步驟:S1、參見圖4所示,在系統(tǒng)功能模型驗證場景下:步驟101、系統(tǒng)初始化:設(shè)置全局配置的應(yīng)用場景為系統(tǒng)功能模型驗證,配置待測芯片的模型類型及設(shè)備號,配置核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊的進(jìn)程標(biāo)識和設(shè)備號,先啟動服務(wù)端程序模塊,即核心控制模塊,然后啟動客戶端程序模塊,客戶端程序模塊根據(jù)全局配置中的IP地址、端口號自動創(chuàng)建與核心控制模塊之間的消息通道,各個模塊啟動所在的位置不限,可以在一臺機(jī)器上,也可分布在多臺機(jī)器上;步驟102、測試命令或腳本錄入:用戶錄入命令行接口模塊所能識別的各種命令、腳本,命令行接口模塊將命令、腳本文件轉(zhuǎn)換成為命令消息發(fā)送到核心控制模塊,命令消息包括待測芯片配置命令、激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令;步驟103、測試命令轉(zhuǎn)發(fā):核心控制模塊根據(jù)收到的命令消息中的目的進(jìn)程類型和設(shè)備號,將待測芯片配置命令轉(zhuǎn)發(fā)到SDK代理接口模塊,將激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令轉(zhuǎn)發(fā)到虛擬網(wǎng)絡(luò)測試儀表模塊;步驟104、待測芯片配置命令處理:SDK代理接口模塊將收到的待測芯片配置命令轉(zhuǎn)換成具體的芯片配置,寫入/讀取虛擬芯片配置模塊中的寄存器和表項數(shù)據(jù),供C模型封裝模塊讀取;步驟105、激勵配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的激勵配置命令,產(chǎn)生對應(yīng)的各種協(xié)議包數(shù)據(jù),并發(fā)送給C模型封裝模塊,同時記錄這些生成的激勵包數(shù)據(jù),為后續(xù)的期望包數(shù)據(jù)生成做準(zhǔn)備;步驟106、響應(yīng)期望檢查規(guī)則配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的響應(yīng)期望檢查規(guī)則配置命令和步驟105中記錄的激勵包數(shù)據(jù),計算得到期望得到的響應(yīng)包數(shù)據(jù),并記錄下來,為后續(xù)的實際響應(yīng)包和期望的響應(yīng)包之間進(jìn)行自動比較做準(zhǔn)備;步驟107、C模型封裝模塊的包處理:C模型封裝器將收到的各種激勵包數(shù)據(jù)轉(zhuǎn)換成待測芯片模型所能識別的數(shù)據(jù)結(jié)構(gòu),調(diào)用待測芯片模型的功能,得到響應(yīng)包的數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)換成虛擬網(wǎng)絡(luò)測試儀表模塊需要的響應(yīng)包消息格式,發(fā)送給虛擬網(wǎng)絡(luò)測試儀表模塊;步驟108、比較實際響應(yīng)包與期望響應(yīng)包:虛擬網(wǎng)絡(luò)測試儀表模塊將收到的實際響應(yīng)包于之前記錄的期望響應(yīng)包進(jìn)行比較,得到最終的結(jié)果,并將結(jié)果以文件的方式保存下來,供測試人員查閱。S2、參見圖5所示,在軟硬協(xié)同仿真驗證場景下:步驟201、系統(tǒng)初始化:設(shè)置全局配置的應(yīng)用場景為軟硬協(xié)同仿真驗證,配置待測芯片的模型類型及設(shè)備號,配置核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊的進(jìn)程標(biāo)識和設(shè)備號,先啟動服務(wù)端程序模塊,即核心控制模塊,然后啟動客戶端程序模塊,客戶端程序模塊根據(jù)全局配置中的IP地址、端口號自動創(chuàng)建與核心控制模塊之間的消息通道,各個模塊啟動所在的位置不限,可以在一臺機(jī)器上,也可分布在多臺機(jī)器上;軟硬協(xié)同仿真驗證場景下的全局配置與系統(tǒng)功能模型驗證場景下的全局配置對t匕,差異在于將應(yīng)用場景變更為軟硬協(xié)同仿真驗證,去除虛擬芯片配置模塊和C模型封裝模塊的進(jìn)程標(biāo)識和設(shè)備號,其余初始化操作和系統(tǒng)功能模型驗證場景下一致;步驟202、測試命令或腳本錄入,與步驟102相同:用戶錄入命令行接口模塊所能識別的各種命令、腳本,命令行接口模塊將命令、腳本文件轉(zhuǎn)換成為命令消息發(fā)送到核心控制模塊,命令消息包括待測芯片配置命令、激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令;步驟203、測試命令轉(zhuǎn)發(fā),與步驟103相同:核心控制模塊根據(jù)收到的命令消息中的目的進(jìn)程類型和設(shè)備號,將待測芯片配置命令轉(zhuǎn)發(fā)到SDK代理接口模塊,將激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令轉(zhuǎn)發(fā)到虛擬網(wǎng)絡(luò)測試儀表模塊;步驟204、待測芯片配置命令處理:SDK代理接口模塊將收到的待測芯片配置命令轉(zhuǎn)換成具體的芯片配置,通過RTL仿真器提供的DPI (Direct Programming Interface,直接編程接口)調(diào)用仿真測試平臺的寄存器及表項配置功能,完成對RTL中的寄存器及表項配置進(jìn)行讀寫操作;如果原RTL仿真測試平臺沒有開發(fā)對應(yīng)的寄存器及表項配置DPI,則必須要添加寄存器及表項配置DPI來適配本系統(tǒng);步驟205、激勵配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的激勵配置命令,產(chǎn)生對應(yīng)的各種協(xié)議包數(shù)據(jù),通過DPI調(diào)用仿真測試平臺的激勵信號驅(qū)動功能,將激勵包數(shù)據(jù)驅(qū)動到待測RTL模塊的接口信號上,同時記錄這些生成的激勵包數(shù)據(jù),為后續(xù)的期望包數(shù)據(jù)生成做準(zhǔn)備;如果原RTL仿真測試平臺沒有開發(fā)對應(yīng)的激勵信號驅(qū)動DPI,則必須要添加激勵信號驅(qū)動DPI來適配本系統(tǒng);步驟206、響應(yīng)期望檢查規(guī)則配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的響應(yīng)期望檢查規(guī)則配置命令和上一步處理中記錄的激勵包數(shù)據(jù),計算得到期望得到的響應(yīng)包數(shù)據(jù),通過DPI將期望的響應(yīng)包存入RTL的仿真測試平臺,為后續(xù)的實際響應(yīng)包和期望的響應(yīng)包之間進(jìn)行自動比較做準(zhǔn)備;如果原RTL仿真測試平臺沒有開發(fā)對應(yīng)的期望響應(yīng)包存儲DPI,則必須要添加期望響應(yīng)包存儲DPI來適配本系統(tǒng);步驟207、RTL仿真:RTL的仿真測試平臺從其DPI接口得到了激勵包數(shù)據(jù),驅(qū)動到RTL模塊的輸入接口信號上,待RTL模塊處理完成后,從RTL模塊的輸出接口信號上,得到實際的響應(yīng)包數(shù)據(jù);步驟208、比較實際響應(yīng)包與期望響應(yīng)包:RTL的仿真測試平臺內(nèi)部比較實際響應(yīng)包和期望響應(yīng)包的數(shù)據(jù),得到最終的結(jié)果,并將結(jié)果以文件的方式保存下來,供測試人員查閱。S3、參見圖6所示,在原型驗證場景下:步驟301、系統(tǒng)初始化:設(shè)置全局配置的應(yīng)用場景為原型驗證,配置待測芯片的模型類型及設(shè)備號,配置核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊的進(jìn)程標(biāo)識和設(shè)備號,先啟動服務(wù)端程序模塊,即核心控制模塊,然后啟動客戶端程序模塊,客戶端程序模塊根據(jù)全局配置中的IP地址、端口號自動創(chuàng)建與核心控制模塊之間的消息通道,SDK代理接口模塊配置在原型驗證板的嵌入式系統(tǒng)中啟動,其余各個模塊啟動所在的位置不限,可以在一臺機(jī)器上,也可分布在多臺機(jī)器上;原型驗證場景下的全局配置與軟硬協(xié)同仿真驗證場景下的全局配置基本一致,差異在于將應(yīng)用場景配置變更為原型驗證,同時SDK代理接口模塊必須要配置在原型驗證板的嵌入式系統(tǒng)中啟動,其余模塊的啟動位置不做限定;步驟302、測試命令或腳本錄入,與步驟202相同:用戶錄入命令行接口模塊所能識別的各種命令、腳本,命令行接口模塊將命令、腳本文件轉(zhuǎn)換成為命令消息發(fā)送到核心控制模塊,命令消息包括待測芯片配置命令、激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令;步驟303、測試命令轉(zhuǎn)發(fā),與步驟203相同:核心控制模塊根據(jù)收到的命令消息中的目的進(jìn)程類型和設(shè)備號,將待測芯片配置命令轉(zhuǎn)發(fā)到SDK代理接口模塊,將激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令轉(zhuǎn)發(fā)到虛擬網(wǎng)絡(luò)測試儀表模塊;步驟304、待測芯片配置命令處理:SDK代理接口模塊將收到的待測芯片配置命令轉(zhuǎn)換成具體的芯片配置,調(diào)用SDK的寄存器及表項配置功能,完成對待測FPGA中的寄存器和表項進(jìn)行讀寫操作;步驟305、激勵配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的激勵配置命令,產(chǎn)生對應(yīng)的各種協(xié)議包數(shù)據(jù),通過調(diào)用真實網(wǎng)絡(luò)測試儀表的數(shù)據(jù)包發(fā)送功能,將包直接送到待測原型驗證板的網(wǎng)口上面,同時記錄這些生成的激勵包數(shù)據(jù),為后續(xù)的期望包數(shù)據(jù)生成做準(zhǔn)備;步驟306、響應(yīng)期望檢查規(guī)則配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的響應(yīng)期望檢查規(guī)則配置命令和上一步處理中記錄的激勵包數(shù)據(jù),計算得到期望得到的響應(yīng)包數(shù)據(jù),并記錄下來,同時開啟真實網(wǎng)絡(luò)測試儀表的包抓取功能,為后續(xù)的實際響應(yīng)包和期望的響應(yīng)包之間進(jìn)行自動比較做準(zhǔn)備;步驟307、FPGA完成包處理:FPGA (待測芯片的物理實現(xiàn))通過原型驗證板的網(wǎng)口得到了激勵包數(shù)據(jù),處理完成后發(fā)送實際的響應(yīng)包數(shù)據(jù)到原型驗證板的網(wǎng)口,同時儀表接收到響應(yīng)包,其包抓取功能會將收到的包存入其內(nèi)部的緩存;
步驟308、比較實際響應(yīng)包與期望響應(yīng)包,虛擬網(wǎng)絡(luò)測試儀表模塊發(fā)完所有的激勵包后,調(diào)用真實網(wǎng)絡(luò)測試儀表的包抓取緩存讀取功能,從而得到實際的響應(yīng)包數(shù)據(jù),和之前記錄的期望響應(yīng)包進(jìn)行比較,得到最終的結(jié)果,并將結(jié)果以文件的方式保存下來,供測試人員查閱。本領(lǐng)域的技術(shù)人員可以對本發(fā)明實施例進(jìn)行各種修改和變型,倘若這些修改和變型屬在本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則這些修改和變型也在本發(fā)明的保護(hù)范圍之內(nèi)。說明書中未詳細(xì)描述的內(nèi)容為本領(lǐng)域技術(shù)人員公知的現(xiàn)有技術(shù)。
權(quán)利要求
1.一種分布式包交換芯片模型驗證系統(tǒng),其特征在于:包括核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊,其中,核心控制模塊屬于服務(wù)端程序模塊,命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊屬于客戶端程序模塊,該驗證系統(tǒng)屬于客戶端-服務(wù)端-客戶端C/S/C結(jié)構(gòu)的分布式系統(tǒng),同時支持3種應(yīng)用場景:系統(tǒng)功能模型驗證、軟硬協(xié)同仿真驗證、原型驗證,不同的應(yīng)用場景下所需模塊不同; 核心控制模塊,用于:管理與之相連的命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊之間傳遞的消息,完成全局配置文件和程序模塊間專有消息的轉(zhuǎn)發(fā)、復(fù)制、廣播、分類、保存、統(tǒng)計,同時維護(hù)消息通道的連接; 命令行接口模塊,用于:讀取由用戶定制的全局配置文件,根據(jù)讀取的應(yīng)用場景配置參數(shù)啟動當(dāng)前應(yīng)用場景所需的程序模塊,待C/S/C的連接初始化后,為芯片開發(fā)人員提供命令行接口,完成測試用例的定制和編輯; SDK代理接口模塊,用于:接收核心控制模塊發(fā)來的待測包交換芯片配置,根據(jù)待測包交換芯片配置調(diào)用SDK軟件,驅(qū)動待測包交換芯片的模型/原型正常運行; 虛擬網(wǎng)絡(luò)測試儀表模塊,用于:模擬真實的網(wǎng)絡(luò)測試儀表,根據(jù)核心控制模塊轉(zhuǎn)發(fā)的待測包交換芯片測試激勵配置消息和響應(yīng)檢查配置消息,完成數(shù)據(jù)包的發(fā)送、接收、校驗和統(tǒng)計; 虛擬芯片配置模塊,僅用在系統(tǒng)功能模型驗證應(yīng)用場景下,用于保存、更新、查詢待測包交換芯片的寄存器配置和包處理協(xié)議表項; C模型封裝模塊,用于:讀取虛擬芯片配置模塊中的待測包交換芯片配置,接收測試模塊發(fā)來的測試激勵,將待測包交換芯片配置和測試激勵送給封裝在其內(nèi)部的包交換芯片模型處理,將該包交換芯片模型處理后的結(jié)果發(fā)送到測試模塊;C模型封裝模塊僅在系統(tǒng)功能模型驗證應(yīng)用場景下啟用,使包交換芯片模型連接到本分布式系統(tǒng)中。
2.如權(quán)利要求1所述的分布式包交換芯片模型驗證系統(tǒng),其特征在于:所述全局配置文件包括應(yīng)用場景、模型類型、服務(wù)端進(jìn)程配置信息和若干客戶端進(jìn)程配置信息,應(yīng)用場景設(shè)置為系統(tǒng)功能模型驗證、軟硬協(xié)同仿真驗證、原型驗證中的一種,用于控制不同的應(yīng)用場景中所需程序模塊的使能及運行方式;模型類型根據(jù)待測芯片的不同模塊的模型被設(shè)置成不同標(biāo)識,僅用在系統(tǒng)功能模型驗證應(yīng)用場景下,C模型封裝模塊根據(jù)模型標(biāo)識動態(tài)鏈接對應(yīng)的C模型的目標(biāo)文件;服務(wù)端進(jìn)程配置信息包括IP地址、端口號、進(jìn)程類型和設(shè)備號,客戶端進(jìn)程配置信息包括進(jìn)程類型和設(shè)備號,IP地址和端口號用于創(chuàng)建服務(wù)器端程序模塊和客戶端程序模塊之間的網(wǎng)絡(luò)套接字連接,構(gòu)建程序模塊間的消息通道;進(jìn)程類型被設(shè)置成不同的進(jìn)程標(biāo)識,用于區(qū)分不同的模塊類型;在非組網(wǎng)測試中,核心控制模塊將按照進(jìn)程類型來進(jìn)行對應(yīng)的操作;設(shè)備號用于區(qū)分程序模塊測試的待測芯片,在組網(wǎng)測試中,每個待測芯片都存在唯一的設(shè)備號,在組網(wǎng)測試中,核心控制模塊將按照設(shè)備號、進(jìn)程類型來進(jìn)行對應(yīng)的操作,在非組網(wǎng)測試中,設(shè)備號被系統(tǒng)忽略。
3.如權(quán)利要求1所述的分布式包交換芯片模型驗證系統(tǒng),其特征在于:所述程序模塊間專有消息包括6個消息域:設(shè)備號、來源進(jìn)程類型、目標(biāo)進(jìn)程類型、命令狀態(tài)、消息號、消息內(nèi)容,其中,設(shè)備號用于區(qū)分程序模塊測試的待測芯片,在組網(wǎng)測試中,每個待測芯片都存在唯一的設(shè)備號,在組網(wǎng)測試中,核心控制模塊將按照設(shè)備號、進(jìn)程類型來進(jìn)行對應(yīng)的操作,在非組網(wǎng)測試中,設(shè)備號被系統(tǒng)忽略;來源進(jìn)程類型和目標(biāo)進(jìn)程類型用于表示一個消息的來源和目標(biāo),便于核心控制模塊將按照進(jìn)程類型進(jìn)行轉(zhuǎn)發(fā),同時用于和消息號一同計算得出全局消息號;命令狀態(tài)用于表示一個消息的基本返回狀態(tài);消息號用于區(qū)分同一類程序模塊內(nèi)不同的消息,核心控制模塊根據(jù)全局消息號進(jìn)行操作;消息內(nèi)容是各個消息號對應(yīng)的具體消息內(nèi)容。
4.如權(quán)利要求3所述的分布式包交換芯片模型驗證系統(tǒng),其特征在于:所述命令狀態(tài)包括正確返回、命令錯誤和命令超時3種狀態(tài)。
5.如權(quán)利要求3所述的分布式包交換芯片模型驗證系統(tǒng),其特征在于:所述具體消息內(nèi)容包括子消息、字符串信息和協(xié)議報文。
6.如權(quán)利要求3所述的分布式包交換芯片模型驗證系統(tǒng),其特征在于:每一類程序模塊內(nèi)部的消息號是獨立編號的,對于整個分布式系統(tǒng)而言,全局消息號=目標(biāo)進(jìn)程類型的全局起始消息編號+消息號。
7.如權(quán)利要求1至6中任一項所述的分布式包交換芯片模型驗證系統(tǒng),其特征在于:所述測試用例支持的命令包括待測芯片配置命令、虛擬網(wǎng)絡(luò)測試儀表的激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令和本分布式系統(tǒng)的調(diào)試命令。
8.如權(quán)利要求1至6中任一項所述的分布式包交換芯片模型驗證系統(tǒng),其特征在于:所述核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊分布在相同機(jī)器或不同機(jī)器上。
9.如權(quán)利要求1至6中任一項所述的分布式包交換芯片模型驗證系統(tǒng),其特征在于:所述核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊分布在相同操作系統(tǒng)或不同操作系統(tǒng)中。
10.一種基于權(quán)利要求1至9中任一項所述的分布式包交換芯片模型驗證系統(tǒng)的分布式包交換芯片模型驗證方 法,包括以下步驟: S1、在系統(tǒng)功能模型驗證場景下: 步驟101、系統(tǒng)初始化:設(shè)置全局配置的應(yīng)用場景為系統(tǒng)功能模型驗證,配置待測芯片的模型類型及設(shè)備號,配置核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊的進(jìn)程標(biāo)識和設(shè)備號,先啟動核心控制模塊,然后啟動客戶端程序模塊,客戶端程序模塊根據(jù)全局配置中的IP地址、端口號自動創(chuàng)建與核心控制模塊之間的消息通道,各模塊分布在一臺或多臺機(jī)器上; 步驟102、測試命令或腳本錄入:用戶錄入命令行接口模塊所能識別的各種命令、腳本,命令行接口模塊將命令、腳本文件轉(zhuǎn)換成為命令消息發(fā)送到核心控制模塊,命令消息包括待測芯片配置命令、激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令; 步驟103、測試命令轉(zhuǎn)發(fā):核心控制模塊根據(jù)收到的命令消息中的目的進(jìn)程類型和設(shè)備號,將待測芯片配置命令轉(zhuǎn)發(fā)到SDK代理接口模塊,將激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令轉(zhuǎn)發(fā)到虛擬網(wǎng)絡(luò)測試儀表模塊; 步驟104、待測芯片配置命令處理:SDK代理接口模塊將收到的待測芯片配置命令轉(zhuǎn)換成具體的芯片配置,寫入/讀取虛擬芯片配置模塊中的寄存器和表項數(shù)據(jù),供C模型封裝模塊讀??; 步驟105、激勵配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的激勵配置命令,產(chǎn)生對應(yīng)的各種協(xié)議包數(shù)據(jù),并發(fā)送給C模型封裝模塊,同時記錄這些生成的激勵包數(shù)據(jù),為后續(xù)的期望包數(shù)據(jù)生成做準(zhǔn)備; 步驟106、響應(yīng)期望檢查規(guī)則配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的響應(yīng)期望檢查規(guī)則配置命令和步驟105中記錄的激勵包數(shù)據(jù),計算得到期望得到的響應(yīng)包數(shù)據(jù),并記錄下來,為后續(xù)的實際響應(yīng)包和期望的響應(yīng)包之間進(jìn)行自動比較做準(zhǔn)備; 步驟107、C模型封裝模塊的包處理:C模型封裝器將收到的各種激勵包數(shù)據(jù)轉(zhuǎn)換成待測芯片模型所能識別的數(shù)據(jù)結(jié)構(gòu),調(diào)用待測芯片模型的功能,得到響應(yīng)包的數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)換成虛擬網(wǎng)絡(luò)測試儀表模塊需要的響應(yīng)包消息格式,發(fā)送給虛擬網(wǎng)絡(luò)測試儀表模塊; 步驟108、比較實際響應(yīng)包與期望響應(yīng)包:虛擬網(wǎng)絡(luò)測試儀表模塊將收到的實際響應(yīng)包于之前記錄的期望響應(yīng)包進(jìn)行比較,得到最終的結(jié)果,并將結(jié)果以文件的方式保存下來,供測試人員查閱; S2、在軟硬協(xié)同仿真驗證場景下: 步驟201、系統(tǒng)初始化:設(shè)置全局配置的應(yīng)用場景為軟硬協(xié)同仿真驗證,配置待測芯片的模型類型及設(shè)備號,配置核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊的進(jìn)程標(biāo)識和設(shè)備號,先啟動核心控制模塊,然后啟動客戶端程序模塊,客戶端程序模塊根據(jù)全局配置中的IP地址、端口號自動創(chuàng)建與核心控制模塊之間的消息通道,各模塊分布在一臺或多臺機(jī)器上; 步驟202、測試命令或腳本錄入,與步驟102相同:用戶錄入命令行接口模塊所能識別的各種命令、腳本 ,命令行接口模塊將命令、腳本文件轉(zhuǎn)換成為命令消息發(fā)送到核心控制模塊,命令消息包括待測芯片配置命令、激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令; 步驟203、測試命令轉(zhuǎn)發(fā),與步驟103相同:核心控制模塊根據(jù)收到的命令消息中的目的進(jìn)程類型和設(shè)備號,將待測芯片配置命令轉(zhuǎn)發(fā)到SDK代理接口模塊,將激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令轉(zhuǎn)發(fā)到虛擬網(wǎng)絡(luò)測試儀表模塊; 步驟204、待測芯片配置命令處理:SDK代理接口模塊將收到的待測芯片配置命令轉(zhuǎn)換成具體的芯片配置,通過RTL仿真器提供的直接編程接口 DPI調(diào)用仿真測試平臺的寄存器及表項配置功能,完成對RTL中的寄存器及表項配置進(jìn)行讀寫操作;如果原RTL仿真測試平臺沒有開發(fā)對應(yīng)的寄存器及表項配置DPI,則添加寄存器及表項配置DPI來適配本系統(tǒng);步驟205、激勵配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的激勵配置命令,產(chǎn)生對應(yīng)的各種協(xié)議包數(shù)據(jù),通過DPI調(diào)用仿真測試平臺的激勵信號驅(qū)動功能,將激勵包數(shù)據(jù)驅(qū)動到待測RTL模塊的接口信號上,同時記錄這些生成的激勵包數(shù)據(jù),為后續(xù)的期望包數(shù)據(jù)生成做準(zhǔn)備;如果原RTL仿真測試平臺沒有開發(fā)對應(yīng)的激勵信號驅(qū)動DPI,則添加激勵信號驅(qū)動DPI來適配本系統(tǒng); 步驟206、響應(yīng)期望檢查規(guī)則配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的響應(yīng)期望檢查規(guī)則配置命令和上一步處理中記錄的激勵包數(shù)據(jù),計算得到期望得到的響應(yīng)包數(shù)據(jù),通過DPI將期望的響應(yīng)包存入RTL的仿真測試平臺,為后續(xù)的實際響應(yīng)包和期望的響應(yīng)包之間進(jìn)行自動比較做準(zhǔn)備;如果原RTL仿真測試平臺沒有開發(fā)對應(yīng)的期望響應(yīng)包存儲DPI,則添加期望響應(yīng)包存儲DPI來適配本系統(tǒng); 步驟207、RTL仿真:RTL的仿真測試平臺從其DPI接口得到激勵包數(shù)據(jù),驅(qū)動到RTL模塊的輸入接口信號上,待RTL模塊處理完成后,從RTL模塊的輸出接口信號上,得到實際的響應(yīng)包數(shù)據(jù); 步驟208、比較實際響應(yīng)包與期望響應(yīng)包:RTL的仿真測試平臺內(nèi)部比較實際響應(yīng)包和期望響應(yīng)包的數(shù)據(jù),得到最終的結(jié)果,并將結(jié)果以文件的方式保存下來,供測試人員查閱; S3、在原型驗證場景下: 步驟301、系統(tǒng)初始化:設(shè)置全局配置的應(yīng)用場景為原型驗證,配置待測芯片的模型類型及設(shè)備號,配置核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊的進(jìn)程標(biāo)識和設(shè)備號,先啟動核心控制模塊,然后啟動客戶端程序模塊,客戶端程序模塊根據(jù)全局配置中的IP地址、端口號自動創(chuàng)建與核心控制模塊之間的消息通道,SDK代理接口模塊配置在原型驗證板的嵌入式系統(tǒng)中啟動,其余各個模塊分布在一臺或多臺機(jī)器上;步驟302、測試命令或腳本錄入,與步驟202相同:用戶錄入命令行接口模塊所能識別的各種命令、腳本,命令行接口模塊將命令、腳本文件轉(zhuǎn)換成為命令消息發(fā)送到核心控制模塊,命令消息包括待測芯片配置命令、激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令; 步驟303、測試命令轉(zhuǎn)發(fā),與步驟203相同:核心控制模塊根據(jù)收到的命令消息中的目的進(jìn)程類型和設(shè)備號,將待測芯片配置命令轉(zhuǎn)發(fā)到SDK代理接口模塊,將激勵配置命令、響應(yīng)期望檢查規(guī)則配置命令轉(zhuǎn)發(fā)到虛擬網(wǎng)絡(luò)測試儀表模塊; 步驟304、待測芯片配置命令處理:SDK代理接口模塊將收到的待測芯片配置命令轉(zhuǎn)換成具體的芯片配置,調(diào)用SDK的寄存器及表項配置功能,完成對待測FPGA中的寄存器和表項進(jìn)行讀寫操作; 步驟305、激勵配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的激勵配置命令,產(chǎn)生對應(yīng)的各種協(xié)議包數(shù)據(jù),通過調(diào)用真實網(wǎng)絡(luò)測試儀表的數(shù)據(jù)包發(fā)送功能,將包直接送到待測原型驗證板的網(wǎng)口上面, 同時記錄這些生成的激勵包數(shù)據(jù),為后續(xù)的期望包數(shù)據(jù)生成做準(zhǔn)備; 步驟306、響應(yīng)期望檢查規(guī)則配置命令處理:虛擬網(wǎng)絡(luò)測試儀表模塊根據(jù)收到的響應(yīng)期望檢查規(guī)則配置命令和上一步處理中記錄的激勵包數(shù)據(jù),計算得到期望得到的響應(yīng)包數(shù)據(jù),并記錄下來,同時開啟真實網(wǎng)絡(luò)測試儀表的包抓取功能,為后續(xù)的實際響應(yīng)包和期望的響應(yīng)包之間進(jìn)行自動比較做準(zhǔn)備; 步驟307、FPGA完成包處理:待測芯片的物理實現(xiàn)FPGA通過原型驗證板的網(wǎng)口得到激勵包數(shù)據(jù),處理完成后發(fā)送實際的響應(yīng)包數(shù)據(jù)到原型驗證板的網(wǎng)口,同時儀表接收到響應(yīng)包,將收到的包存入其內(nèi)部的緩存; 步驟308、比較實際響應(yīng)包與期望響應(yīng)包,虛擬網(wǎng)絡(luò)測試儀表模塊發(fā)完所有的激勵包后,調(diào)用真實網(wǎng)絡(luò)測試儀表的包抓取緩存讀取功能,得到實際的響應(yīng)包數(shù)據(jù),與之前記錄的期望響應(yīng)包進(jìn)行比較,得到最終的結(jié)果,并將結(jié)果以文件的方式保存下來,供測試人員查閱。
全文摘要
本發(fā)明公開了一種分布式包交換芯片模型驗證系統(tǒng)及驗證方法,涉及包處理芯片設(shè)計領(lǐng)域,該分布式包交換芯片模型驗證系統(tǒng)包括核心控制模塊、命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊,核心控制模塊為服務(wù)端程序模塊,命令行接口模塊、SDK代理接口模塊、虛擬網(wǎng)絡(luò)測試儀表模塊、虛擬芯片配置模塊和C模型封裝模塊為客戶端程序模塊,該驗證系統(tǒng)屬于C/S/C結(jié)構(gòu)的分布式系統(tǒng),同時支持3種應(yīng)用場景系統(tǒng)功能模型驗證、軟硬協(xié)同仿真驗證、原型驗證,不同的應(yīng)用場景下所需模塊不同。本發(fā)明能大幅縮短系統(tǒng)功能在不同級別的驗證收斂時間,提高開發(fā)效率,降低調(diào)試成本。
文檔編號H04L12/26GK103178996SQ20131008380
公開日2013年6月26日 申請日期2013年3月15日 優(yōu)先權(quán)日2013年3月15日
發(fā)明者袁博滸 申請人:烽火通信科技股份有限公司