本發(fā)明涉及集成電路技術領域,尤其涉及一種軟硬件協(xié)同設計的驗證方法和裝置。
背景技術:
硬件/軟件協(xié)同設計已成為當今超大規(guī)模集成電路(Very Large Scale Integration,VLSI)設計中極其重要的環(huán)節(jié)。由于集成電路(Integrated Circuit,IC)晶體管數(shù)量的增長勢不可擋,大多數(shù)的IC目前含微型處理器、存儲器、接口和專用的硬件加速器,但是提供單一的知識產(chǎn)權核(intellectual property core,IP核)不再足以應對不斷增長的片上系統(tǒng)(System on a Chip,SoC)設計和集成挑戰(zhàn),于是出現(xiàn)了可配置片上系統(tǒng)(Configurable System on a Chip,CSoC)。
目前,進行硬件/軟件協(xié)同設計存在的主要問題是很多基準套件,都只停留在軟件開發(fā)部分,即只是把可綜合部分和不可綜合部分用主函數(shù)連接起來用純軟件方式運行。純軟件運行會花費大量的時間進行數(shù)據(jù)處理和運算,限制中央處理器(Central Processing Unit,CPU)的運行效率,增加CPU的運行負擔。
技術實現(xiàn)要素:
本發(fā)明的目的在于提供一種軟硬件協(xié)同設計的驗證方法和裝置,旨在解決現(xiàn)有純軟件方式運行運行時間長,并且限制CPU運行效率,增加CPU運行負擔的問題。
本發(fā)明第一方面,提供一種軟硬件協(xié)同設計的驗證方法,包括:
讀取待測試數(shù)據(jù);
對所述待測試數(shù)據(jù)進行硬件運算,獲取運算結果;
將所述運算結果與預置結果進行對比,并輸出對比結果,所述對比結果用于驗證軟硬件協(xié)同設計的準確性。
本發(fā)明第二方面,提供一種軟硬件協(xié)同設計的驗證裝置,包括:
讀取模塊,用于讀取待測試數(shù)據(jù);
處理模塊,用于對所述待測試數(shù)據(jù)進行硬件運算,獲取運算結果;
對比輸出模塊,用于將所述運算結果與預置結果進行對比,并輸出對比結果,所述對比結果用于驗證軟硬件協(xié)同設計的準確性。
本發(fā)明與現(xiàn)有技術相比存在的有益效果是:本發(fā)明提供的技術方案通過將待測試數(shù)據(jù)發(fā)送到特殊硬件元件來進行硬件加速(Hardware acceleration),減少了運行時間,并使CPU可以有時間處理其他任務,提高了CPU的運行效率,減輕了CPU的負擔。
附圖說明
圖1是本發(fā)明實施例一提供的軟硬件協(xié)同設計的驗證方法的流程圖;
圖2是本發(fā)明實施例二提供的軟硬件協(xié)同設計的驗證方法的流程圖;
圖3是本發(fā)明實施例三提供的軟硬件協(xié)同設計的驗證方法的流程圖;
圖4是本發(fā)明實施例三提供的軟硬件協(xié)同設計的驗證方法中基準套件結構框架示意圖;
圖5是發(fā)明實施例三提供的軟硬件協(xié)同設計的驗證方法中Sobel濾波器的示意圖;
圖6是發(fā)明實施例三提供的軟硬件協(xié)同設計的驗證方法中對基準的各種不同IP核采用純軟件電路版本和本發(fā)明基準電路版本的運行時間對比圖;
圖7是本發(fā)明實施例四提供的軟硬件協(xié)同設計的驗證裝置的組成示意圖;
圖8是本發(fā)明實施例五提供的軟硬件協(xié)同設計的驗證裝置的組成示意圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
以下結合具體附圖對本發(fā)明的實現(xiàn)進行詳細的描述。
實施例一:
圖1示出了本發(fā)明實施例一提供的軟硬件協(xié)同設計的驗證方法的流程,具體包括步驟S101至S103,詳述如下:
S101、讀取待測試數(shù)據(jù)。
測試設備讀取待測試數(shù)據(jù),該待測試數(shù)據(jù)可以但不限于包括:文檔數(shù)據(jù)、圖片數(shù)據(jù)。通過運行待測試數(shù)據(jù),根據(jù)待測試數(shù)據(jù)的運行結果,可以對硬件加速運算的正確性進行測試。
S102、對待測試數(shù)據(jù)進行硬件運算,獲取運算結果。
硬件加速通常比軟件算法的效率要高,因此利用硬件模塊來代替軟件算法以充分利用硬件所固有的快速特性。
硬件模塊為將標準檢查程序(Benchmark)映射到CSoC的可重配置結構,將讀取到的待測試數(shù)據(jù)發(fā)送到硬件模塊進行運算,并獲取硬件模塊返回的運算結果。
S103、將運算結果與預置結果進行對比,并輸出對比結果,對比結果用于驗證軟硬件協(xié)同設計的準確性。
預置結果是待測試數(shù)據(jù)通過純軟件方式運行后的黃金輸出結果,黃金輸出結果是采用純軟件方式模擬出的硬件處于性能最佳狀態(tài)時運行待測試數(shù)據(jù)可以獲得的運行結果。
將步驟S102得到的運算結果與黃金輸出結果進行對比,判斷二者的誤差是否超過預置的誤差范圍,以判斷硬件運算后輸出的運算結果是否正確,從而驗證軟硬件協(xié)同設計的準確性。若步驟S102得到的運算結果與黃金輸出結果的 誤差不超過預置的誤差范圍,則可以判斷硬件運算后輸出的運算結果正確,軟硬件協(xié)同設計具有較高的準確性,符合預期;否則,判斷硬件運算后輸出的運算結果不正確,軟硬件協(xié)同設計的準確性不高,存在缺陷,需要修正。
本實施例中,通過將待測試數(shù)據(jù)發(fā)送到硬件模塊進行硬件加速,減少了運行時間,并使CPU可以有時間處理其他任務,提高了CPU的運行效率,減輕了CPU的負擔。
實施例二:
圖2示出了本發(fā)明實施例二提供的軟硬件協(xié)同設計的驗證方法的流程,具體包括步驟S201至S203,詳述如下:
S201、讀取待測試數(shù)據(jù)。
測試設備讀取待測試數(shù)據(jù),該待測試數(shù)據(jù)可以但不限于包括:文檔數(shù)據(jù)、圖片數(shù)據(jù)。通過運行待測試數(shù)據(jù),根據(jù)待測試數(shù)據(jù)的運行結果,可以對硬件加速運算的正確性進行測試。
S202、通過基準套件對待測試數(shù)據(jù)進行硬件運算,獲取運算結果。
基準套件是進行基準測試(Benchmark Test,BMT)的測試套件,通過設計科學的測試方法、測試工具和測試系統(tǒng),實現(xiàn)對一類測試對象的某項性能指標進行定量的和可對比的測試,并將服務于同一個測試目的或同一運行環(huán)境下的一系列測試用例有機的組合起來。
將基準套件直接映射到CSoC,完成對待測試數(shù)據(jù)的硬件運算,并獲取硬件運算的結果。
S203、將運算結果與預置結果進行對比,并輸出對比結果,對比結果用于驗證軟硬件協(xié)同設計的準確性。
預置結果是待測試數(shù)據(jù)通過純軟件方式運行后的黃金輸出結果,黃金輸出結果是采用純軟件方式模擬出的硬件處于性能最佳狀態(tài)時運行待測試數(shù)據(jù)可以獲得的運行結果。
將步驟S202得到的運算結果與黃金輸出結果進行對比,判斷二者的誤差 是否超過預置的誤差范圍,以判斷硬件運算后輸出的運算結果是否正確,從而驗證軟硬件協(xié)同設計的準確性。若步驟S202得到的運算結果與黃金輸出結果的誤差不超過預置的誤差范圍,則可以判斷硬件運算后輸出的運算結果正確,軟硬件協(xié)同設計具有較高的準確性,符合預期;否則,判斷硬件運算后輸出的運算結果不正確,軟硬件協(xié)同設計的準確性不高,存在缺陷,需要修正。
本實施例中,通過直接映射到CSoC的基準套件完成對待測試數(shù)據(jù)的硬件運算,實現(xiàn)硬件加速,減少了運行時間,并使CPU可以有時間處理其他任務,提高了CPU的運行效率,減輕了CPU的負擔。
實施例三:
圖3示出了本發(fā)明實施例三提供的軟硬件協(xié)同設計的驗證方法的流程,具體包括S301至S303,詳述如下:
S301、讀取待測試數(shù)據(jù)。
測試設備讀取待測試數(shù)據(jù),該待測試數(shù)據(jù)可以但不限于包括:文檔數(shù)據(jù)、圖片數(shù)據(jù)。通過運行待測試數(shù)據(jù),根據(jù)待測試數(shù)據(jù)的運行結果,可以對硬件加速運算的正確性進行測試。
S302、通過基準套件的不可綜合部分控制基準套件的可綜合部分,執(zhí)行對待測試數(shù)據(jù)的硬件運算,獲取運算結果。
基準套件包括不可綜合部分和可綜合部分。具體地,
不可綜合部分通常為測試程序(TestBench),TestBench是一種模擬實際環(huán)境的輸入激勵和輸出校驗的虛擬平臺,在這個平臺上可以對設計從軟件層面進行分析和校驗;
可綜合部分通常為被測試模塊(Unit Under Test,UUT),是可以使用電子設計自動化(Electronic Design Automation,EDA)軟件進行編譯、布局布線,并映射到芯片的部分,包括所有的邏輯運算和加減法運算、以及它們的有限次組合,這部分程序可以運行實現(xiàn)特殊的功能。
將基準套件不可綜合部分映射到CSoC的處理器,使用軟件運行,具體地, 可以使用cgywin或者putty直接在cmd window上運行;
將基準套件可綜合部分映射到CSoC的FPGA,使用硬件電路進行加速運算,具體地,可以采用如下兩種方式:
(1)用FPGA開發(fā)軟件quartus生成sof燒錄文件,下載到FPGA上;
(2)用makefile方式生成rbf文件,直接燒錄到FPGA上。
S303、通過基準套件的不可綜合部分執(zhí)行對運算結果與預置結果的對比,并輸出對比結果,對比結果用于驗證軟硬件協(xié)同設計的準確性。
預置結果是待測試數(shù)據(jù)通過純軟件方式運行后的黃金輸出結果,黃金輸出結果是采用純軟件方式模擬出的硬件處于性能最佳狀態(tài)時運行待測試數(shù)據(jù)可以獲得的運行結果。
通過基準套件的不可綜合部分執(zhí)行步驟S302得到的運算結果與黃金輸出結果的對比,判斷二者的誤差是否超過預置的誤差范圍,以判斷硬件運算后輸出的運算結果是否正確,從而驗證軟硬件協(xié)同設計的準確性。若步驟S302得到的運算結果與黃金輸出結果的誤差不超過預置的誤差范圍,則可以判斷硬件運算后輸出的運算結果正確,軟硬件協(xié)同設計具有較高的準確性,符合預期;否則,判斷硬件運算后輸出的運算結果不正確,軟硬件協(xié)同設計的準確性不高,存在缺陷,需要修正。
為清楚解釋本實施例,下面以基準套件的結構為例進行說明。
圖4示出了軟硬件協(xié)同設計的驗證方法中基準套件結構框架。
將基準套件的不可綜合部分映射到CSoC的ARM(Advanced RISC Machines)處理器,并通過軟件運行,將基準套件的可綜合部分映射到CSoC的FPGA上可重配置結構中,使用FPGA的硬件電路進行加速運算。具體處理過程包括a1至a5,詳述如下:
a1、ARM處理器從測試文件或者測試圖像inputs.txt/bmp中讀取輸入數(shù)據(jù);
a2、ARM上運行的主程序main()調用發(fā)送程序send(),通過雙向32位AXI(Advanced eXtensible Interface)總線將輸入數(shù)據(jù)發(fā)送到FPAG;
a3、FPGA將輸入數(shù)據(jù)通過IF(Interface)接口傳輸?shù)経UT完成硬件運算;
a4、ARM上運行的主程序main()調用接收程序receive(),通過AXI總線接收并讀取FPGA返回的硬件運算結果;
a5、ARM上運行的主程序main()調用對比比較程序compare_results(),對硬件運算結果和黃金輸出結果golden.txt/bmp進行對比比較,并輸出對比結果Results.txt。
進一步地,基準套件中可以包含各種不同的IP核。IP核即知識產(chǎn)權核(intellectual property core),是指形式為邏輯單元、芯片設計的可重用模塊,設計人員可以以IP核為基礎進行設計,縮短設計所需的周期。每個IP核都有特定的作用,例如Sobel是3乘3的邊緣檢測濾波器;Qsort是使用快速排序算法對十組數(shù)據(jù)進行升序排序;Snow3G是由使用128位的密鑰產(chǎn)生32位的塊的密鑰流流密碼。
下面以Sobel濾波器為例對本發(fā)明的技術方案進行說明。
圖5為一個Sobel濾波器的示意圖。Sobel濾波器是3乘3的邊緣檢測濾波器,輸入的是bmp(Bitmap)格式的圖像,獲得的運算結果是重建輸出一個高分辨率的bmp文件圖像邊緣。其中,基準套件中執(zhí)行濾波器運算功能的是可綜合部分,而運算所需要的數(shù)據(jù)即bmp格式的圖像,需要使用軟件進行提取,因此是由不可綜合的部分執(zhí)行。
采用本發(fā)明的技術方案對Sobel濾波器進行運算處理的過程包括b1至b4,詳述如下:
b1、ARM處理器從bmp圖像inputs.bmp中讀取圖像數(shù)據(jù);
b2、ARM上運行的主程序main()調用發(fā)送程序send(),通過AXI總線將輸入的圖像數(shù)據(jù)發(fā)送到已經(jīng)映射到FPGA的Sobel IP核進行硬件電路運算;
b3、硬件運算完成后,ARM上運行的主程序main()調用接收程序receive(),通過AXI總線接收FPGA返回的圖像邊緣結果;
b4、ARM上運行的主程序main()調用對比比較程序compare_results(),對 圖像邊緣結果和黃金輸出結果golden.bmp進行對比比較,并輸出對比結果Results.txt。
圖6示出了對基準套件中各種不同的IP核分別采用純軟件電路版本和本發(fā)明基準電路版本的運行時間比較結果。
具體地,如圖6所示,基準套件中各種不同的IP核可以但不限于包括:
1)Sobel:3乘3的邊緣檢測濾波器,輸入的是bmp格式的圖像,獲得的運算結果是重建另一個高分辨率的bmp文件圖像邊緣;
2)Fir:10拍的FIR濾波器;
3)Qsort:使用快速排序算法對十組數(shù)據(jù)進行升序排序;
4)Adpcm:自適應差分脈沖編碼調制編碼器,接受16位脈沖編碼調制樣本作為輸入,并將其轉換為4位的樣本;
5)Kasumi:在移動通信系統(tǒng)中使用的塊加密算法;
6)Snow3G:由使用128位的密鑰產(chǎn)生32位的塊的密鑰流流密碼;
7)ANN:人工神經(jīng)網(wǎng)絡;
8)IDCT:逆離散余弦變換,表示數(shù)據(jù)點中的不同頻率的余弦函數(shù)總和的一個有限序列;
9)Aes:高級加密標準,128位,包括加密和解密;
10)Md5C:消息摘要算法,用于加密來生成散列函數(shù)和檢查數(shù)據(jù)完整性;
11)Decim:5級抽取濾波器,有5級聯(lián)FIR濾波器,其中一個級的輸出被作為輸入供應給下一個過濾器,所有的過濾器的循環(huán)完全展開以最小化計算延遲;
12)Interpolation:4級內插濾波器,該濾波器執(zhí)行4FIR濾波級依次內插;
13)Disparity:估計立體圖像的視差,采用輸入高清立體圖像(左和右視圖),并返回64乘64差距矩陣。
相較于現(xiàn)有技術的純軟件電路版本將TestBench和IP核都映射到ARM處理器上,而沒有將IP核進行綜合并映射到芯片或者硬件電路上,本發(fā)明基準電 路版本則將IP核映射到到FPGA硬件電路上,將不可綜合的TestBench映射到ARM處理器上。
從圖6的對比數(shù)據(jù)可以得出,本發(fā)明基準電路版本對所有IP核的運行平均時間比純軟件電路版本對所有IP核的運行平均時間減少約10%。
本實施例中,通過可直接映射到CSoC的基準套件,將基準套件的可綜合部分映射到CSoC的FPGA,將基準套件的不可綜合部分映射到CSoC的ARM處理器,實現(xiàn)硬件加速,減少了運行時間,并使CPU可以有時間處理其他任務,提高了CPU的運行效率,減輕了CPU的負擔。
實施例四:
圖7示出了本發(fā)明實施例四提供的軟硬件協(xié)同設計的驗證裝置的組成結構,為了便于說明,僅示出了與本發(fā)明實施例相關的部分。圖7示例的軟硬件協(xié)同設計的驗證裝置可以是前述實施例一提供的軟硬件協(xié)同設計的驗證方法的執(zhí)行主體,其可以是測試設備或者測試設備中的一個功能模塊。圖7示例的軟硬件協(xié)同設計的驗證裝置主要包括:讀取模塊71、處理模塊72和對比輸出模塊73。各功能模塊詳細說明如下:
讀取模塊71,用于讀取待測試數(shù)據(jù);
處理模塊72,用于對所述待測試數(shù)據(jù)進行硬件運算,獲取運算結果;
對比輸出模塊73,用于將所述運算結果與預置結果進行對比,并輸出對比結果,所述對比結果用于驗證軟硬件協(xié)同設計的準確性。
從上述圖7示例的軟硬件協(xié)同設計的驗證裝置可知,本發(fā)明通過將待測試數(shù)據(jù)發(fā)送到硬件模塊進行硬件加速,減少了運行時間,并使CPU可以有時間處理其他任務,提高了CPU的運行效率,減輕了CPU的負擔。
實施例五:
圖8示出了本發(fā)明實施例五提供的軟硬件協(xié)同設計的驗證裝置的組成結構,為了便于說明,僅示出了與本發(fā)明實施例相關的部分。圖8示例的軟硬件協(xié)同設計的驗證裝置可以是前述實施例二和實施例三提供的軟硬件協(xié)同設計的 驗證方法的執(zhí)行主體,其可以是測試設備或者測試設備中的一個功能模塊。圖8示例的軟硬件協(xié)同設計的驗證裝置主要包括:讀取模塊81、處理模塊82和對比輸出模塊83。各功能模塊詳細說明如下:
讀取模塊81,用于讀取待測試數(shù)據(jù);
處理模塊82,用于對所述待測試數(shù)據(jù)進行硬件運算,獲取運算結果;
對比輸出模塊83,用于將所述運算結果與預置結果進行對比,并輸出對比結果,所述對比結果用于驗證軟硬件協(xié)同設計的準確性。
具體地,處理模塊82包括:
基準套件子模塊821,用于通過基準套件對所述待測試數(shù)據(jù)進行硬件運算。
進一步地,基準套件可以包括不可綜合部分和可綜合部分;
基準套件子模塊821還可以用于通過所述不可綜合部分控制所述可綜合部分執(zhí)行對所述待測試數(shù)據(jù)的硬件運算;
對比輸出模塊83還可以用于通過所述不可綜合部分執(zhí)行對所述運算結果與預置結果的對比。
進一步地,所述不可綜合部分被映射到可配置片上系統(tǒng)CSoC的處理器;所述可綜合部分被映射到CSoC的現(xiàn)場可編程門陣列FPGA。
從上述圖8示例的軟硬件協(xié)同設計的驗證裝置可知,本發(fā)明通過可直接映射到CSoC的基準套件,將基準套件的可綜合部分映射到CSoC的FPGA,將基準套件的不可綜合部分映射到CSoC的ARM處理器,實現(xiàn)硬件加速,減少了運行時間,并使CPU可以有時間處理其他任務,提高了CPU的運行效率,減輕了CPU的負擔。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每一個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同或者相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
值得注意的是,上述裝置實施例中,所包括的各個模塊和單元只是按照功 能邏輯進行劃分的,但并不局限于上述的劃分,只要能夠實現(xiàn)相應的功能即可;另外,各功能模塊和單元的具體名稱也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護范圍。
本領域普通技術人員可以理解,實現(xiàn)上述各實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,相應的程序可以存儲于一計算機可讀取存儲介質中,所述的存儲介質,如ROM/RAM、磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。