專利名稱:一種基于網(wǎng)絡(luò)傳輸?shù)奶幚砥鲄f(xié)同驗證平臺的制作方法
技術(shù)領(lǐng)域:
本實用新型涉及一種基于網(wǎng)絡(luò)傳輸?shù)奶幚砥鲄f(xié)同驗證平臺,屬于處理器的功能驗證和評測技術(shù)領(lǐng)域。
背景技術(shù):
在處理器的設(shè)計流程中,驗證是一項很重要而且耗時耗力的工作。處理器的驗證包括兩個過程功能驗證和時序驗證,功能驗證有模擬驗證、形式化驗證和FPGA原型驗證等幾種方法,其中模擬驗證是最基本的方法,驗證過程使用最廣泛,在處理器系統(tǒng)驗證階段起著非常重要的作用。在硬件RTL代碼編寫過程中,就需要對設(shè)計的邏輯性的正確性及各項性能指標進行驗證,硬件設(shè)計完成后需要系統(tǒng)的進行功能驗證以檢驗設(shè)計的正確性及其性能指標。處理器硬件設(shè)計的邏輯功能和性能指標主要依賴于硬件設(shè)計人員利用硬件描述語言編寫的代碼質(zhì)量。伴隨處理器復(fù)雜度的不斷上升,處理器驗證工作的復(fù)雜度和工作量呈現(xiàn)指數(shù)上升,對驗證的依賴與要求也越來越高。作為設(shè)計過程的一部分,驗證起著越來越關(guān)鍵的作用,驗證的工作量也是相對比較大,占據(jù)到整個工作設(shè)計工作量的70%左右,驗證的效率和可靠性往往決定了項目的成敗。傳統(tǒng)的功能驗證方法是利用已有的軟件模擬器模擬硬件設(shè)計(見圖1),驗證RTL 代碼的正確性,即分別將同一個測試激勵分別在軟件仿真器和硬件(RTL級)設(shè)計模型中運行,然后比較兩者的運行結(jié)果,并由測試人員人工對運算結(jié)果進行比較分析,查找RTL代碼中的錯誤并進行修改,修改后再重新進行模擬測試。軟件仿真的思想是,在處理器設(shè)計驗證時應(yīng)用或開發(fā)軟件仿真器,模擬硬件方面的功能設(shè)計,對硬件設(shè)計進行驗證和測試。應(yīng)用或開發(fā)軟件仿真器,測試人員不需要關(guān)心底層的電路設(shè)計,只需要關(guān)心硬件設(shè)計本身邏輯層面的正確性和性能,適宜于硬件設(shè)計功能驗證的自動化。利用傳統(tǒng)的功能驗證方法,驗證人員需要面對的問題有(1)測試激勵由人工編寫,而每次人工編寫的測試激勵其功能覆蓋率都不高,難以滿足功能驗證的需要,如要遍歷所有激勵輸入及其可能的組合情況,達到完全的驗證覆蓋率,工作量非常大,也難以實現(xiàn); (2)驗證流程是利用軟件仿真器運行結(jié)果檢驗RTL代碼模型運行結(jié)果,由測試人員從運行結(jié)果中比較和分析,但RTL代碼模型運行過程和軟件仿真過程漫長,需要等待很長的時間才能看到結(jié)果并進行分析,RTL代碼量以及運行結(jié)果的波形文件都比較大,依據(jù)人工分析、 檢查顯然不能滿足驗證的需求;C3)隨著測試的深入,一般比較常見的設(shè)計錯誤已經(jīng)排查,但仍然會有很多人們不易察覺的錯誤未能檢測出,這需要反復(fù)、大量的測試以遍歷到所有的情況,以確保硬件設(shè)計對任何可能的激勵輸入及其組合都產(chǎn)生合理的輸出,,驗證周期非常長;(4)驗證依賴于軟件模擬器,在軟件模擬不是自行開發(fā)或源碼不開放時,不能提取或跟蹤軟件模擬器的執(zhí)行信息,難以確保軟件行為的準確性及正確性,從而難以確保驗證本身的正確性及其有效性。另外,還需要驗證人員對RTL代碼和軟件仿真都非常的熟悉,才能分析出錯誤具體的原因,因而,傳統(tǒng)方法費時費力且效率不高,這些都需要人們應(yīng)用效率更高的驗證方法。發(fā)明內(nèi)容本實用新型所要解決的技術(shù)問題是提供一種能夠?qū)崿F(xiàn)自動化驗證,提高測試可靠性和準確性以及測試效率高、覆蓋范圍廣的基于網(wǎng)絡(luò)傳輸?shù)奶幚砥鲄f(xié)同驗證平臺及其測試方法。其技術(shù)方案是一種基于網(wǎng)絡(luò)傳輸?shù)奶幚砥鲄f(xié)同驗證平臺,其特征在于由硬件實現(xiàn)程序、軟件實現(xiàn)程序和硬件實現(xiàn)程序與軟件實現(xiàn)程序之間的網(wǎng)絡(luò)通信三個部分組成;硬件實現(xiàn)程序包括測試激勵、硬件設(shè)計模型、硬件模擬模型和一臺安裝Linux操作系統(tǒng)的工作站,測試激勵用于產(chǎn)生測試激勵,硬件設(shè)計模型用于在寄存器傳輸級Register Transfer Level,RTL進行建模,硬件模擬模型用于對硬件設(shè)計進行初級驗證,硬件設(shè)計模型和硬件模擬模型硬件遵照相同的設(shè)計方案,對相同激勵能夠具有相同的響應(yīng);軟件實現(xiàn)程序包括軟件仿真器和一臺安裝Linux操作系統(tǒng)的工作站,軟件仿真器用于仿真硬件設(shè)計功能,產(chǎn)生仿真結(jié)果并對硬件設(shè)計進行進一步的驗證;硬件實現(xiàn)程序與軟件實現(xiàn)程序之間的網(wǎng)絡(luò)通信,采用基于 TCP/IP協(xié)議實現(xiàn)測試的同步性控制和文件傳輸,用于在上述兩臺工作站進行協(xié)同測試。所述基于TCP/IP協(xié)議實現(xiàn)測試的同步性控制和文件傳輸,是以UDP報文實現(xiàn)測試的同步控制,以TCP方式實現(xiàn)測試文件的自動傳輸和讀取,其具體實現(xiàn)方式為第一步測試開始,軟件實現(xiàn)程序執(zhí)行程序利用UDP報文發(fā)起測試請求,硬件部分收到UDP報文后,返回確認信號后啟動測試(Reql/Ackl);第二步測試啟動后,硬件部分以隨機方式產(chǎn)生測試激勵,并進一步生成對應(yīng)的內(nèi)存映像文件(.imgl),以UDP報文與軟件實現(xiàn)程序建立鏈接(Req2/Ack2),通過TCP方式將測試激勵文件及內(nèi)存映像文件傳輸?shù)杰浖崿F(xiàn)程序,并存放于程序指定的路徑下;第三步軟件實現(xiàn)程序讀取硬件實現(xiàn)程序生成的測試激勵文件及內(nèi)存映像文件, 進行匯編、編譯和鏈接處理,生成軟件仿真器需要的可加載文件(.out)及硬件需要的內(nèi)存映像文件(.img2),并與硬件實現(xiàn)程序生成的內(nèi)存映像文件比較,以檢查硬件設(shè)計/模擬模型及軟件仿真是否加載相同的測試激勵;第四步硬件實現(xiàn)程序以TCP方式加載第三步比較一致后的內(nèi)存映像文件 (.img2),分別生成硬件設(shè)計(RTL代碼)結(jié)果和硬件模擬結(jié)果;第五步硬件設(shè)計模型和硬件模擬模型結(jié)果生成后,硬件程序通過UDP報文與軟件實現(xiàn)程序來進行第三次鏈接(Req3/Ack3),將結(jié)果文件以TCP方式傳輸給軟件實現(xiàn)程序, 并存放于程序指定的路徑下;第六步協(xié)同驗證平臺將軟、硬件結(jié)果比較結(jié)束后,在軟件實現(xiàn)程序和硬件程序之間產(chǎn)生一對UDP結(jié)束請求、應(yīng)答信號(Req4/Ack4),并結(jié)束本輪測試,啟動下輪測試。其技術(shù)效果本實用新型的協(xié)同驗證平臺及其測試方法,充分運用于自行研制的 DSP芯片BWDSP100功能驗證工作,驗證結(jié)果顯示在功能驗證結(jié)果正確的情況下覆蓋率能達到99. 75%,完全能夠滿足處理器功能驗證的需要。在驗證過程中,完全不需要人工監(jiān)控和干預(yù),減少了大量驗證時間和驗證工作量,有效提高了驗證工作效率。1、本實用新型測試激勵由程序生成,測試激勵依據(jù)約束規(guī)則隨機組合,測試工作即可由統(tǒng)一的協(xié)同驗證平臺自動完成,大大減少了驗證人員工作量,提高了工作效率,經(jīng)過批量測試后可盡可能接近設(shè)定的功能覆蓋率。2、本實用新型準確性高,本實用新型通過硬件模擬模型和軟件仿真分別在硬件級和軟件級兩個層次對硬件設(shè)計進行驗證,能夠全面準確的檢測出硬件設(shè)計RTL代碼的錯誤。3、本實用新型驗證覆蓋范圍廣,本協(xié)同驗證平臺及其測試方法的測試激勵采用隨機方式產(chǎn)生,支持批量測試,能夠完成數(shù)據(jù)量非常大的測試,能夠遍歷到硬件設(shè)計中指令組合的各種方式,可系統(tǒng)全面的實現(xiàn)功能驗證。4、本實用新型驗證效率更高,協(xié)同的驗證平臺是一個完整的軟件程序,程序運行后自動進行功能驗證,驗證人員只需要檢查驗證程序生成結(jié)果,依據(jù)結(jié)果修改硬件設(shè)計的錯誤,不需要關(guān)心硬件設(shè)計/模擬模型和軟件仿真器的內(nèi)部執(zhí)行信息,不需要查看硬件運行波形文件及軟件模擬器的執(zhí)行信息,減少了驗證時間和驗證人員的工作量。5、適用范圍廣,本實用新型不僅可適用用于不同需求的處理器功能驗證,也適用于后端仿真驗證,并支持軟件仿真器運算結(jié)果的正確性檢測等。
圖1是傳統(tǒng)的功能驗證方法流程圖。圖2是本實用新型的驗證平臺的結(jié)構(gòu)圖。圖3是本實用新型的測試流程圖。圖4是通信流程圖。圖5測試結(jié)果文件的比較、分析示意圖。
具體實施方式
如圖2所示,一種基于網(wǎng)絡(luò)傳輸?shù)奶幚砥鲄f(xié)同驗證平臺,由硬件實現(xiàn)程序、軟件實現(xiàn)程序和硬件實現(xiàn)程序與軟件實現(xiàn)程序之間的網(wǎng)絡(luò)通信三個部分組成。硬件實現(xiàn)程序包括測試激勵、硬件設(shè)計模型、硬件模擬模型和一臺安裝Linux操作系統(tǒng)的工作站。測試激勵由匯編指令按照一定的約束規(guī)則進行隨機組合形成,處理器的匯編指令預(yù)先編輯在指令函數(shù)庫中,約束規(guī)則利用硬件描述語言將其編輯成通用約束函數(shù)庫,不同的硬件模塊其約束也不相同。例如,移位器和乘法器的驗證指令形式及組合方式即不相同。產(chǎn)生激勵的方法是,每次測試啟動后,硬件實現(xiàn)程序從函數(shù)庫中隨機抽取指令和約束,并以隨機方式產(chǎn)生測試激勵,作為硬件設(shè)計/模擬模型和軟件仿真器的測試激勵, 每個測試激勵里面包含的匯編指令及其組合形式因隨機性都不盡相同。硬件設(shè)計模型用 Verilog硬件描述語言生成,在寄存器傳輸級(Register Transfer Level,RTL)進行建模, Verilog是一種硬件描述語言和C語言語法相似,可以將硬件設(shè)計在非常抽象的層次上加以描述,該描述可以轉(zhuǎn)換為任何制造工藝下的電路,例如,設(shè)計人員可以在不考慮具體制造工藝的情況下,對設(shè)計做寄存器傳輸級(RTL)的描述;寄存器傳輸級是利用Verilog語言描述硬件物理電路的一種抽象層次。硬件模擬模型用C++語言模擬硬件設(shè)計進行建模。兩個模型遵照相同的設(shè)計方案,對相同激勵能夠具有相同的響應(yīng),若響應(yīng)不同,則必有一者出錯,以此對硬件設(shè)計RTL代碼的正確性進行初級驗證。匯編測試激勵生成后,同時生成相應(yīng)的二進制形式的內(nèi)存映像文件(.imgl),以網(wǎng)絡(luò)形式傳輸給軟件執(zhí)行程序。硬件設(shè)計和模擬模型加載內(nèi)存映像文件后分別生成相應(yīng)的結(jié)果文件,由軟件實現(xiàn)程序?qū)煞N模型的結(jié)果文件進行第一次比較,在硬件級驗證硬件設(shè)計的正確性。軟件實現(xiàn)程序包括軟件仿真器和一臺安裝Linux操作系統(tǒng)的工作站。軟件實現(xiàn)程序依據(jù)輸入的參數(shù)配置測試環(huán)境,是利用軟件仿真器對硬件進行模擬,以在軟件級對硬件設(shè)計進行進一步的驗證。軟件模擬器被打包成.so庫文件后植入?yún)f(xié)同驗證平臺軟件實現(xiàn)程序以被調(diào)用,軟件仿真器內(nèi)部實現(xiàn)了所有處理器指令功能,可自行開發(fā)或利用已有的軟件模擬器。匯編測試激勵生成后,軟件實現(xiàn)程序編譯調(diào)用編譯工具對匯編測試激勵進行編譯和鏈接,分別編譯生成軟件可加載文件(.out)和硬件模型可加載內(nèi)存映像文件(.img2), 并同硬件實現(xiàn)程序的內(nèi)存映像文件進行比較,以檢測測試中的測試激勵是否相同。軟/硬件模型加載內(nèi)存映像文件后分別生成各自結(jié)果文件后,由軟件實現(xiàn)程序自動完成硬件設(shè)計模型結(jié)果文件與硬件模擬模型及軟件仿真器比較和分析,并將分析結(jié)果寫入日記文件。硬件實現(xiàn)程序與軟件實現(xiàn)程序之間的網(wǎng)絡(luò)通信,即軟件仿真器與硬件設(shè)計/模擬模型之間的文件傳輸與數(shù)據(jù)通信,采用基于TCP/IP協(xié)議的網(wǎng)絡(luò)傳輸方式,用于在上述兩臺工作站進行協(xié)同測試,通信基于TCP/IP協(xié)議實現(xiàn)測試的同步性控制和文件傳輸,以UDP報文實現(xiàn)測試的同步控制,以TCP方式實現(xiàn)測試文件的自動傳輸和讀取,每輪測試包含四次以UDP報文實現(xiàn)的同步控制信號,及三次以TCP方式實現(xiàn)的文件傳輸回合。上述基于TCP/IP協(xié)議實現(xiàn)測試的同步性控制和文件傳輸,以UDP報文實現(xiàn)測試的同步控制,以TCP方式實現(xiàn)測試文件的自動傳輸和讀取,其具體實現(xiàn)方式(見圖4)為第一步測試開始,軟件實現(xiàn)程序執(zhí)行程序利用UDP報文發(fā)起測試請求,硬件部分收到UDP報文后,返回確認信號后啟動測試(Reql/Ackl);第二步測試啟動后,硬件部分以隨機方式產(chǎn)生測試激勵,并進一步生成對應(yīng)的內(nèi)存映像文件(.imgl),以UDP報文與軟件實現(xiàn)程序建立鏈接(Req2/Ack2),通過TCP方式將測試激勵文件及內(nèi)存映像文件傳輸?shù)杰浖崿F(xiàn)程序,并存放于程序指定的路徑下;第三步軟件實現(xiàn)程序讀取硬件實現(xiàn)程序生成的測試激勵文件及內(nèi)存映像文件, 進行匯編、編譯和鏈接處理,生成軟件仿真器需要的可加載文件(.out)及硬件需要的內(nèi)存映像文件(.img2),并與硬件實現(xiàn)程序生成的內(nèi)存映像文件比較,以檢查硬件設(shè)計/模擬模型及軟件仿真是否加載相同的測試激勵;第四步硬件實現(xiàn)程序以TCP方式加載第三步比較一致后的內(nèi)存映像文件 (.img2),分別生成硬件設(shè)計(RTL代碼)結(jié)果和硬件模擬結(jié)果;第五步硬件設(shè)計模型和硬件模擬模型結(jié)果生成后,硬件程序通過UDP報文與軟件實現(xiàn)程序來進行第三次鏈接(Req3/Ack;3),將結(jié)果文件以TCP方式傳輸給軟件實現(xiàn)程序, 并存放于程序指定的路徑下;第六步協(xié)同驗證平臺將軟、硬件結(jié)果比較結(jié)束后,在軟件實現(xiàn)程序和硬件程序之間產(chǎn)生一對UDP結(jié)束請求、應(yīng)答信號(Req4/Ack4),并結(jié)束本輪測試,啟動下輪測試。如圖3所示,基于網(wǎng)絡(luò)傳輸?shù)奶幚砥鲄f(xié)同驗證平臺測試方法,在Linux操作系統(tǒng)工作站的測試環(huán)境下,其測試步驟是第一步測試開始,執(zhí)行軟件實現(xiàn)程序依據(jù)提示分別輸入兩個參數(shù)參數(shù)1設(shè)置每次測試過程驗證平臺自動完成的測試輪數(shù),參數(shù)2設(shè)置通信雙方的端口號;并依據(jù)參數(shù)設(shè)置測試環(huán)境,自行建立三個級別文件存放目錄以保存所有測試文件信息。其中,‘…/test’為測試一級目錄,存放所有測試文件子目錄,在測試開始創(chuàng)建一次,并不重復(fù)創(chuàng)建,‘···/ test/time/'以系統(tǒng)當(dāng)前時間命名,存放一次測試產(chǎn)生的子目錄及文件,在測試開始時創(chuàng)建,^"/tesVtimeA/'用于存放第i輪測試產(chǎn)生的所有文件,每一輪測試創(chuàng)建一次,‘···/’ 表示協(xié)同驗證平臺程序所在的當(dāng)前目錄;第二步執(zhí)行硬件實現(xiàn)程序,產(chǎn)生測試激勵,并生成對應(yīng)的內(nèi)存映像文件 (.imgl)。測試激勵由匯編指令按照一定的約束隨機形成,匯編指令的及約束由程序從指令函數(shù)庫即約束函數(shù)庫中以隨機方式抽取,測試激勵的指令組合形式由指令按照約束規(guī)則隨機組合,并生成對應(yīng)的二進制內(nèi)存映像文件(.imgl);第三步軟件實現(xiàn)程序以TCP方式讀取測試激勵,編譯生成軟件仿真器可加載的激勵文件(.out),并進一步生成硬件設(shè)計/模擬模型需要的內(nèi)存映像文件(.img2)并與硬件實現(xiàn)程序生成的內(nèi)存映像文件進行比較,以確保每輪測試中硬件設(shè)計/模擬和軟件仿真加載的是同一個測試激勵;第四步比較硬件實現(xiàn)程序和軟件實現(xiàn)程序分別生成的內(nèi)存映像文件,以確保每一輪驗證都是硬件設(shè)計/模擬和軟件仿真加載相同的測試激勵。內(nèi)存映像文件比較不一致時,比較結(jié)果寫入日記文件,結(jié)束本輪測試,比較結(jié)果一致時,運行軟件仿真器,產(chǎn)生仿真結(jié)果;第五步硬件設(shè)計/模擬模型通過以TCP方式讀取/加載內(nèi)存映像文件(.img2), 分別生成硬件設(shè)計模型結(jié)果和硬件模擬模型結(jié)果,保存在第一步描述的當(dāng)前測試目錄‘···/ test/time/i/'下;第六步比較分析硬件設(shè)計模型結(jié)果和硬件模擬模型結(jié)果,并將分析結(jié)果寫入日記文件("'/tesVtimeZiTlog. txt),本次比較實現(xiàn)硬件設(shè)計模型結(jié)果和硬件模擬模型進行相互驗證,以驗證RTL代碼的正確性;第七步輸出比較分析硬件設(shè)計模型運行結(jié)果和軟件仿真結(jié)果(見圖5),并將分析結(jié)果寫入日記文件("'/tesVtimWlog. txt),本次比較實現(xiàn)軟件級驗證RTL代碼的正確性;第八步軟件實現(xiàn)程序查詢每一輪測試差異結(jié)果文件,以文本形式(…/test/ time/dirlog. txt)記錄存在差異的測試文件所在目錄,刪除結(jié)果正確的目錄及文件,統(tǒng)計覆蓋率,在每一次結(jié)束后將功能驗證覆蓋率寫入日記文件,并開始下一次測試。
權(quán)利要求1. 一種基于網(wǎng)絡(luò)傳輸?shù)奶幚砥鲄f(xié)同驗證平臺,其特征在于由硬件實現(xiàn)程序、軟件實現(xiàn)程序和硬件實現(xiàn)程序與軟件實現(xiàn)程序之間的網(wǎng)絡(luò)通信三個部分組成;硬件實現(xiàn)程序包括測試激勵、硬件設(shè)計模型、硬件模擬模型和一臺安裝Linux操作系統(tǒng)的工作站,測試激勵用于產(chǎn)生測試激勵,硬件設(shè)計模型用于在寄存器傳輸級Register TransferLevel,RTL進行建模,硬件模擬模型用于對硬件設(shè)計進行初級驗證,硬件設(shè)計模型和硬件模擬模型硬件遵照相同的設(shè)計方案,對相同激勵能夠具有相同的響應(yīng);軟件實現(xiàn)程序包括軟件仿真器和一臺安裝Linux操作系統(tǒng)的工作站,軟件仿真器用于仿真硬件設(shè)計功能,產(chǎn)生仿真結(jié)果并對硬件設(shè)計進行進一步的驗證;硬件實現(xiàn)程序與軟件實現(xiàn)程序之間的網(wǎng)絡(luò)通信,采用基于TCP/IP協(xié)議實現(xiàn)測試的同步性控制和文件傳輸,用于在上述兩臺工作站進行協(xié)同測試。
專利摘要本實用新型公開了一種基于網(wǎng)絡(luò)傳輸?shù)奶幚砥鲄f(xié)同驗證平臺,基于網(wǎng)絡(luò)傳輸?shù)奶幚砥鲄f(xié)同驗證平臺由硬件實現(xiàn)程序、軟件實現(xiàn)程序和硬件實現(xiàn)程序與軟件實現(xiàn)程序之間的網(wǎng)絡(luò)通信三個部分組成;硬件實現(xiàn)程序包括測試激勵、硬件設(shè)計模型、硬件模擬模型和一臺安裝Linux操作系統(tǒng)的工作站;軟件實現(xiàn)程序包括軟件仿真器和一臺安裝Linux操作系統(tǒng)的工作站,利用軟件仿真器對硬件進行模擬,在軟件級對硬件設(shè)計進行進一步的驗證;硬件實現(xiàn)程序與軟件實現(xiàn)程序之間的網(wǎng)絡(luò)通信,采用基于TCP/IP協(xié)議實現(xiàn)測試的同步性控制和文件傳輸,用于在上述兩臺工作站進行協(xié)同測試。能夠詳細/準確的定位錯誤和差異,驗證準確率高;驗證通過網(wǎng)絡(luò)方式進行,便捷易行。
文檔編號G06F11/26GK202110531SQ20112012003
公開日2012年1月11日 申請日期2011年4月22日 優(yōu)先權(quán)日2011年4月22日
發(fā)明者歐明雙, 洪一, 耿銳, 郭二輝, 鮑華 申請人:中國電子科技集團公司第三十八研究所