專利名稱:一種fpga仿真裝置及其方法
技術領域:
本發(fā)明涉及數(shù)據(jù)通信,具體涉及FPGA仿真技術。
背景技術:
隨著數(shù)據(jù)通信技術的發(fā)展,特別是高帶寬高速度的數(shù)據(jù)通信技術的出現(xiàn),在數(shù)據(jù)通信芯片設計上,大規(guī)模,高速度,高復雜度的FPGA設計層出不窮,對于FPGA邏輯設計的正確性驗證提出了很大的考驗,特別是大規(guī)模的FPGA設計,其完成的邏輯功能既多又復雜,這樣一樣就得設計出相應的復雜FPGA驗證裝置來對FPGA進行仿真驗證。
現(xiàn)在,用于FPGA仿真的仿真器包括①中國發(fā)明專利申請“一種軟硬件協(xié)同仿真/驗證系統(tǒng)及矢量模式仿真/驗證方法”,申請?zhí)?00610020631.5,它是軟硬件協(xié)同仿真的方法,并且須在FPGA內(nèi)部做一個為了仿真而定制的適配器模塊,這個模塊本身的正確性與否還需要另外仿真的。又如②PCT專利申請“METHOD AND APPARATUS FOR CO-VERIFICATION OFDIGITAL DESIGNS”,國際公開號WO2005048062,它是一個把處理器邏輯放在FPGA中的設計,是專門為這樣的FPGA設計的仿真器設計方法。但是,目前還沒有基于特征字的FPGA仿真器或還沒有基于特征字的FPGA仿真器被公開。
另,本發(fā)明申請中用到的專業(yè)術語及一些重要縮寫FPGAField Programmable Gate Array現(xiàn)場可編程門陣列,一種可編程的芯片。
PLIProgramming language interface它是verilog-HDL硬件描述語言定義的一個C語言與verilog-HDL語言的程序接口。
DUTDesign Under Test待測設計。
signature特征字簽名。
BFMBus Function Module總線功能模型,一個模仿總線行為的模塊。
ASCII碼American standard code for information interchange美國標準交換信息字符集。
發(fā)明內(nèi)容
本發(fā)明需要解決的技術問題是提供一種FPGA仿真裝置及其方法,能夠基于特征字進行仿真。
本發(fā)明的上述第一個技術問題這樣解決,提供一種FPGA仿真方法,利用FPGA仿真裝置,包括1.1)預先配置報文參數(shù)并保存至文件中,所述報文參數(shù)包括對應單個報文中特征字的個數(shù)及每個特征字具體位置、長度和內(nèi)容;1.2)讀取所述文件獲取所述報文參數(shù)自動生成一個或多個激勵報文并在每個激勵報文中按所述報文參數(shù)要求插入對應特征字;1.3)通過各自對應接口模塊輸出所述激勵報文至待測FPGA邏輯模塊或接收其響應報文;1.4)基于特征字對所述激勵報文及其經(jīng)由待測FPGA邏輯模塊的對應響應報文進行比較并輸出結果。。
按照本發(fā)明提供的仿真方法,所述報文參數(shù)還包括包長、時間間隔和報文分隔符。
按照本發(fā)明提供的仿真方法,所述激勵報文包括包長、間隔、私有協(xié)議封裝、協(xié)議封裝、帶有特征字的報文內(nèi)容和報文校驗多個單元。
按照本發(fā)明提供的仿真方法,所述步驟1.2)包括向所述激勵報文中填充對應包長,間隔及配置好的協(xié)議信息。
按照本發(fā)明提供的仿真方法,所述步驟1.2)包括特征字格式變換并向所述激勵報文中填充對應16進制ASCII碼格式特征字。
按照本發(fā)明提供的仿真方法,所述步驟1.2)還包括判斷所述報文參數(shù)的合法性,對不符合FPGA邏輯模塊要求的不生成對應激勵報文。
按照本發(fā)明提供的仿真方法,所述步驟1.4)具體包括7.1)把所述激勵報文及其經(jīng)由待測FPGA邏輯模塊輸出的響應報文都讀入緩存;7.2)判斷所述激勵報文與響應報文的長度是否相等,是,進入下一步,否則進入步驟7.5);7.3)讀出響應報文中報文頭內(nèi)的私有協(xié)議,得出待征字相關的信息;7.4)逐一判斷輸入報文中的待檢測各特征字是否沒被找到,是,輸出錯誤信息;否則進一步判斷被找到的特征字在響應報文中的位置是否與激勵報文中的位置不一樣,是,輸出錯誤信息;若無任何錯誤信息輸出直接跳過步驟7.5)和7.6)輸出仿真測試成功,否則進入下一步;7.5)匯總錯誤信息并將各個信息要點編號保存;7.6)根據(jù)所述錯誤信息和編號輸出具體仿真測試失敗報表。
本發(fā)明的上述另一個技術問題這樣解決,提供一種FPGA仿真裝置,包括總線接口,測試連接待測FPGA邏輯模塊,用于提供報文輸入/出接口;激勵報文生成模塊,輸出連接總線接口,用于生成激勵報文;報文比較模塊,輸入連接總線接口和激勵報文生成模塊,用于比較激勵報文及其經(jīng)由待測FPGA邏輯模塊輸出的響應報文;特征字生成模塊,輸出連接激勵報文生成模塊,用于給激勵報文生成模塊提供16進制ASCII碼特征字并最終由激勵報文生成模塊生成含特征字的激勵報文。。
按照本發(fā)明提供的仿真裝置,該裝置還包括與所述特征字生成模塊輸入端依次電連接的配置讀取模塊和配置輸入模塊。
按照本發(fā)明提供的仿真裝置,該裝置還包括與所述報文比較模塊輸出端依次電連接的驗證結果分析模塊和驗證結果輸出模塊。
按照本發(fā)明提供的仿真裝置,所述總線接口包括
總線接口輸入模塊總線接口輸入模塊是FPGA邏輯的接口,它是BFM模塊,通過PLI接口將保存好的文本形式的報文讀取出來,再模仿FPGA的總線動作將報文輸入到FPGA邏輯DUT中去;總線接口輸出模塊從總線接口輸入模塊輸出的信號由本模塊接收,轉(zhuǎn)換成報文的格式并保存成文本文件。
本發(fā)明提供的FPGA仿真裝置及其方法,引入了特征字生成和處理并且設計了自動結果比較輸出、使FPGA的驗證能夠精確定位且方便快捷,可以做許多上板之前的調(diào)試工作,減小上板調(diào)試的難度;另一方面可以制造出可以在完全系統(tǒng)上的測試用的報文,節(jié)省了時間,降低了后期系統(tǒng)開發(fā)的難度和提高了系統(tǒng)的可靠性,與現(xiàn)有技術相比,取得了基于特征字的FPGA設計仿真對于效率上進步,可以按照各個測試用例直接仿真求得結果,節(jié)省了仿真時間,解決了FPGA驗證困難的問題,減少了系統(tǒng)的軟硬件設計難度,提高了系統(tǒng)整體設計效率等等。
下面結合附圖和具體實施例進一步對本發(fā)明進行詳細說明。
圖1是本發(fā)明的基于特征字的FPGA仿真器結構圖;圖2是本發(fā)明的配置輸入文檔結構圖;圖3是本發(fā)明的激勵報文結構圖;圖4是本發(fā)明的激勵報文生成模塊流程圖;圖5是本發(fā)明的出入報文比較模塊流程圖;圖6是本發(fā)明的驗證結果分析模塊流程圖。
具體實施例方式
如圖1所示,本發(fā)明基于特征字的FPGA仿真器1包括配置輸入模塊11它是各項報文配置的參數(shù)輸入器,人工輸入這些參數(shù)之后本模塊把它保存為一個整理好的文本文件以待后期查詢之用。
配置讀取模塊12它把配置輸入模塊11產(chǎn)生文本文件存儲的各項參數(shù)讀取出來,傳送給特征字生成模塊13。
特征字生成模塊13它把配置讀取模塊12傳送來的特征字簽名按照設計需求分割處理等等,然后把處理完畢后的特征字簽名轉(zhuǎn)化為16進制的ASCII碼發(fā)給激勵報文生成模塊14。
激勵報文生成模塊14特征字生成模塊13中的特征字簽名傳送過來之后,首先本模塊檢查各項參數(shù)是否符合設計配置的參數(shù)要求,如不符合給出錯誤信息,讓重新輸入。然后根據(jù)各項參數(shù)填充報文的包長,間隔,協(xié)議,及包內(nèi)容填充,特征字也按照配置的特征字位置和長度填充。最后加上包的校驗字,保存成文本以供后面模塊使用。
總線接口輸入模塊15總線接口輸入模塊15是FPGA邏輯的接口,它是BFM模塊,通過PLI接口將保存好的文本形式的報文讀取出來,再模仿FPGA的總線動作將報文輸入到FPGA邏輯DUT中去。
總線接口輸出模塊16從總線接口輸入模塊15輸出的信號由本模塊接收,轉(zhuǎn)換成報文的格式并保存成文本文件。
報文比較模塊17本模塊把激勵報文生成模塊14和總線接口輸出模塊16保存下來的文本文件讀取來做比較,分析輸入出輸出二種報文的異同給驗證結果分析模塊18;驗證結果分析模塊18本模塊接收報文比較模塊17的得來的輸入輸出的報文的比較結果后,分析可能是總線接口輸出模塊16中哪一部分出現(xiàn)錯誤。
驗證結果輸出模塊19本模塊在驗證結果分析模塊18得出結果之后把各報文的配置參數(shù),相同點不同點,分析結果打印出來并輸出文件,將此文件也輸入配置文件,輸入報文,輸出報文,按測試用例編號分門別類保存,以待后用。
如圖2所示,本發(fā)明的報文參數(shù)配置文件,由配置輸入模塊11產(chǎn)生然后歸類保存的。下面介紹一下各控制字包長為本報文的長度。
間隔為本報文與上個報文發(fā)送完畢的時間間隔,用以控制發(fā)包速度,既是控制流量。
特征字的個數(shù)意思是本個報文中的待查特征字的個數(shù)。
特征字N的位置意思是特征字N在報文中的起始位置。
特征字N的長度特征字N的長度。
特征字N就是這個是特征字的字符串,比如“HELLO”特征字的ID號就是這個特征字的序號星號分隔符這里是報文之間的分隔符,用其它的符號也可以的。
如圖3所示,本發(fā)明的報文結構,其中的協(xié)議封裝和私有協(xié)議封裝可以按照需求來定制。如私有協(xié)議中可以帶有本報文中是否檢測到待檢測的特征字,特征字串是什么,其長度是多少,其在報文中的位置在哪,以及一些統(tǒng)計信息等等。
如圖4所示,本發(fā)明的激勵報文生成模塊14生成激勵報文流程具體包括以下步驟401)接收了特征字生成模塊13送來的包長間隔等配置信息;402)判斷這些信息是否符合FPGA邏輯模塊的要求,例如包長范圍,間隔范圍,特征字數(shù)量,特征字長度等等,如果符合則進入下一步,如不符合則轉(zhuǎn)步驟4030)輸出錯誤信息,結束仿真重新輸入配置。
403)用符合仿真要求的配置信息和定義好的格式向激勵報文中填充包長,間隔以及配置好的協(xié)議信息等等。
404)填充報文,報文內(nèi)容隨機設計。
405)判斷報文是否已經(jīng)填充到該寫入特征字的位置,如果是的話呢轉(zhuǎn)到步驟406)填充特征字,否的話繼續(xù)填充報文。
406)按順序填充特征字N。
407)判斷所有的特征字是否填充完畢,如果是的話轉(zhuǎn)到步驟408)填充報文到報文尾;否則轉(zhuǎn)步驟405)判斷是否是下一個特征字的位置。
408)填充報文到報文尾。
409)填充校驗字。
410)把生成的報文存成文本文件以供后用。
411)打印出錯信息,然后結束仿真。
如圖5所示,本發(fā)明的報文比較模塊17把激勵報文生成模塊14和總線接口輸出模塊16保存下來的文本文件讀取來做比較,分析輸入出輸出二種報文的異同給驗證結果分析模塊18,具體包括以下步驟501)把輸入激勵的報文,和經(jīng)由FPGA邏輯輸出的報文都讀入緩存。
502)判斷輸入的報文長度與輸出的報文長度是否相等;(否,輸出出錯信息)503)讀出輸出報文中的報文頭中的私有協(xié)議,得出待征字相關的信息。
504)判斷輸入報文中的待檢測特征字是否被找到;(否,輸出出錯信息)505)判斷被找到的特征字在輸出報文中的位置是否與輸入報文中的位置是一樣的;(否輸出出錯信息)506)將本模塊輸出的出錯信息匯總并將各個信息要點編號保存起來。
如圖6所示,本發(fā)明的驗證結果分析模塊19接收驗證結果分析模塊18的得來的輸入輸出的報文的比較結果后,分析可能是總線接口輸出模塊16中哪一部分出現(xiàn)錯誤,具體包括以下步驟601)讀出上一模塊1 8輸出的出錯信息報告。
602)讀取FPGA所有狀態(tài)寄存器的狀態(tài)值。
603)錯誤報告的第N項是否有錯。這個地方是設置一個循環(huán),來用遍歷出錯報告的編號項。
604)如果第N項有錯的話則查本項對應的FPGA寄存器的值。
605)判斷這個FPGA寄存器的值是否正確,是進入步驟607);否則進入下一步;606)結合出錯信息報告及FPGA狀態(tài)寄存器的值是否正確查對應的表得出FPGA邏輯中哪個模塊可能出錯了并輸出;
607)輸出報表608)N加1609)判斷是否遍歷完畢,是結束;否則轉(zhuǎn)入步驟603)。
權利要求
1.一種FPGA仿真方法,其特征在于,利用FPGA仿真裝置(1),包括1.1)預先配置報文參數(shù)并保存至文件中,所述報文參數(shù)包括對應單個報文中特征字的個數(shù)及每個特征字具體位置、長度和內(nèi)容;1.2)讀取所述文件獲取所述報文參數(shù)自動生成一個或多個激勵報文并在每個激勵報文中按所述報文參數(shù)要求插入對應特征字;1.3)通過各自對應接口模塊輸出所述激勵報文至待測FPGA邏輯模塊(2)或接收其響應報文;1.4)基于特征字對所述激勵報文及其經(jīng)由待測FPGA邏輯模塊(2)的對應響應報文進行比較并輸出結果。
2.根據(jù)權利要求1所述仿真方法,其特征在于,所述報文參數(shù)還包括包長、時間間隔和報文分隔符。
3.根據(jù)權利要求1所述仿真方法,其特征在于,所述激勵報文包括包長、間隔、私有協(xié)議封裝、協(xié)議封裝、帶有特征字的報文內(nèi)容和報文校驗多個單元。
4.根據(jù)權利要求3所述仿真方法,其特征在于,所述步驟1.2)包括向所述激勵報文中填充對應包長,間隔及配置好的協(xié)議信息。
5.根據(jù)權利要求3所述仿真方法,其特征在于,所述步驟1.2)包括特征字格式變換并向所述激勵報文中填充對應16進制ASCII碼格式特征字。
6.根據(jù)權利要求4或5所述仿真方法,其特征在于,所述步驟1.2)還包括判斷所述報文參數(shù)的合法性,對不符合FPGA邏輯模塊要求的不生成對應激勵報文。
7.根據(jù)權利要求1或3所述仿真方法,其特征在于,所述步驟1.4)具體包括a)把所述激勵報文及其經(jīng)由待測FPGA邏輯模塊輸出的響應報文都讀入緩存;b)判斷所述激勵報文與響應報文的長度是否相等,是,進入下一步,否則進入步驟7.5);c)讀出響應報文中報文頭內(nèi)的私有協(xié)議,得出待征字相關的信息;d)逐一判斷輸入報文中的待檢測各特征字是否沒被找到,是,輸出錯誤信息;否則進一步判斷被找到的特征字在響應報文中的位置是否與激勵報文中的位置不一樣,是,輸出錯誤信息;若無任何錯誤信息輸出直接跳過步驟7.5)和7.6)輸出仿真測試成功,否則進入下一步;e)匯總錯誤信息并將各個信息要點編號保存;f)根據(jù)所述錯誤信息和編號輸出具體仿真測試失敗報表。
8.一種FPGA仿真裝置(1),包括總線接口,測試連接待測FPGA邏輯模塊(2),用于提供報文輸入/出接口;激勵報文生成模塊(14),輸出連接總線接口,用于生成激勵報文;報文比較模塊(17),輸入連接總線接口和激勵報文生成模塊,用于比較激勵報文及其經(jīng)由待測FPGA邏輯模塊輸出的響應報文;其特征在于,還包括特征字生成模塊(13),輸出連接激勵報文生成模塊,用于給激勵報文生成模塊提供16進制ASCII碼特征字并最終由激勵報文生成模塊生成含特征字的激勵報文。
9.根據(jù)權利要求8所述仿真裝置,其特征在于,該裝置還包括與所述特征字生成模塊輸入端依次電連接的配置讀取模塊(11)和配置輸入模塊(12)。
10.根據(jù)權利要求8所述仿真裝置,其特征在于,該裝置還包括與所述報文比較模塊輸出端依次電連接的驗證結果分析模塊(18)和驗證結果輸出模塊(19)。
全文摘要
本發(fā)明涉及一種FPGA仿真裝置及其方法,其中裝置在目前裝置基礎上在激勵報文生成模塊(14)輸入端新增特征字生成模塊(13);其中方法包括預先配置含特征字的報文參數(shù)并保存至文件中;讀取文件獲取報文參數(shù)自動生成插入對應特征字的激勵報文;通過接口模塊輸出激勵報文或接收經(jīng)由待測FPGA邏輯模塊(2)與激勵報文對應的響應報文;基于特征字進行報文比較并輸出結果。這種裝置與現(xiàn)有技術相比,取得了基于特征字的FPGA設計仿真對于效率上進步,可以按照各個測試用例直接仿真求得結果,節(jié)省了仿真時間,解決了FPGA驗證困難的問題,減少了系統(tǒng)的軟硬件設計難度,提高了系統(tǒng)整體設計效率等等。
文檔編號G06F17/50GK101093521SQ20071012970
公開日2007年12月26日 申請日期2007年7月24日 優(yōu)先權日2007年7月24日
發(fā)明者李新雙 申請人:中興通訊股份有限公司