TW202411872A - 驗證系統、驗證方法、電子設備以及儲存媒體 - Google Patents
驗證系統、驗證方法、電子設備以及儲存媒體 Download PDFInfo
- Publication number
- TW202411872A TW202411872A TW112123008A TW112123008A TW202411872A TW 202411872 A TW202411872 A TW 202411872A TW 112123008 A TW112123008 A TW 112123008A TW 112123008 A TW112123008 A TW 112123008A TW 202411872 A TW202411872 A TW 202411872A
- Authority
- TW
- Taiwan
- Prior art keywords
- module
- verification
- function
- tested
- storage unit
- Prior art date
Links
- 238000012795 verification Methods 0.000 title claims abstract description 209
- 238000000034 method Methods 0.000 title claims abstract description 71
- 230000006870 function Effects 0.000 claims abstract description 138
- 238000012360 testing method Methods 0.000 claims abstract description 114
- 238000004088 simulation Methods 0.000 claims abstract description 67
- 230000015654 memory Effects 0.000 claims abstract description 22
- 230000004044 response Effects 0.000 claims abstract description 19
- KDLHZDBZIXYQEI-UHFFFAOYSA-N Palladium Chemical compound [Pd] KDLHZDBZIXYQEI-UHFFFAOYSA-N 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 14
- 229910052763 palladium Inorganic materials 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 11
- 230000003542 behavioural effect Effects 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 5
- 230000006399 behavior Effects 0.000 claims description 4
- 238000013461 design Methods 0.000 abstract description 14
- 230000008569 process Effects 0.000 description 29
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 11
- 230000001133 acceleration Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 101001121408 Homo sapiens L-amino-acid oxidase Proteins 0.000 description 7
- 102100026388 L-amino-acid oxidase Human genes 0.000 description 7
- 238000011161 development Methods 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 101100233916 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) KAR5 gene Proteins 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 2
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 2
- 101100012902 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) FIG2 gene Proteins 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 241000283699 Bos indicus Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000011990 functional testing Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000013101 initial test Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000007794 visualization technique Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公開提供一種驗證系統、驗證方法、電子設備以及儲存媒體。驗證系統包括模擬驗證設備、第一部分和第二部分。第一部分包括第一主模組和第二從模組。第二從模組包括與待測模組外圍的存取介面連接的儲存單元。第二部分包括第一、第二直接程式化介面、函數庫模組和用於提供測試用例的測試用例模組。第一直接程式化介面與第一主模組通信且配置為:響應於運行測試用例,調用函數庫模組的第一函數以實現待測模組的暫存器的前門訪問。第二直接程式化介面與儲存單元通信且配置為:響應於運行測試用例,調用函數庫模組的第二函數以實現儲存單元的後門訪問。該驗證系統實現軟體側與硬體側的同步,方便待測模組的功能驗證,模擬消耗時間少,實現晶片可重用驗證。
Description
本公開的實施例涉及一種驗證系統、驗證方法、電子設備以及儲存媒體。
目前,隨著電子資訊產業的急速發展,片上系統晶片(System On Chip,SoC)規模越來越大,平均占整個晶片開發工作量接近70%的晶片驗證工作也越來越複雜,對晶片風險控制的要求也越來越高。
超大規模(Very Large Scale Integration,VLSI)積體電路晶片伴生的積體電路硬體模型隨之變得非常複雜,與之對應的設計與驗證計算量也大大增加。因此,對於複雜度較高的功能測試場景,電子設計自動化(Electronic Design Automation,EDA)模擬的速度、容量與效率已經很難滿足SoC驗證的需要,硬體加速驗證技術便應運而成。
硬體加速驗證技術通過硬體模擬器來對晶片設計進行驗證,它將待測設計(Design Under Test,DUT)映射到處理器陣列或現場可程式化邏輯閘陣列(Field Programmable Gate Array,FPGA)上,然後對映射的等效系統進行驗證。
硬體加速驗證手段的速度相比軟體模擬有著質的提升。軟體模擬速率平均為例如1KHz,而硬體加速模擬驗證方法則平均能達到例如2MHz,大大提高驗證效率。
本公開至少一實施例提供了一種驗證系統,包括模擬驗證設備以及分別創建在所述模擬驗證設備上的第一部分和第二部分,其中,所述第一部分包括分別與待測對象連接的第一主模組和至少一個第二從模組;所述待測對象包括待測模組和連接在所述待測模組的外圍的多個對象介面,所述多個對象介面包括存取介面,所述第二從模組包括儲存單元,所述儲存單元與所述存取介面連接;所述第二部分包括第一直接程式化介面、第二直接程式化介面、函數庫模組和測試用例模組,所述測試用例模組配置為提供至少一個測試用例;所述第一直接程式化介面與所述第一主模組通信,且所述第一直接程式化介面配置為:響應於運行所述測試用例,調用所述函數庫模組中的至少一個第一函數,以實現所述待測模組的暫存器的前門訪問;所述第二直接程式化介面與所述第一部分的所述儲存單元通信,且所述第二直接程式化介面配置為:響應於運行所述測試用例,調用所述函數庫模組中的至少一個第二函數,以實現所述儲存單元的後門訪問。
本公開至少一實施例還提供一種基於如上文所述的驗證系統的驗證方法,包括:基於所述待測模組進行暫存器傳輸級代碼編譯;基於所述第一部分、所述待測對象、所述待測模組、所述第一主模組和所述第二從模組進行綜合編譯,獲取已編譯的所述第一部分;選擇所述模擬驗證設備的使用模式,根據所述使用模式,將已編譯的所述第一部分加入至少一個編譯選項,並調用第一彙編工具對所述驗證系統進行解構,生成用於所述模擬驗證設備的硬體資訊庫,以實現加速器編譯;對所述第二部分進行行為建模語言的代碼編譯;運行已編譯的所述第一部分和所述第二部分,獲取驗證結果。
本公開至少一實施例提供了一種電子設備,包括:處理模組和儲存器,其中,所述儲存器上儲存有計算機程式,所述計算機程式被所述處理模組執行時,實現如上文任一項所述的驗證方法。
本公開至少一實施例提供了一種計算機可讀儲存媒體,其中,所述儲存媒體記憶體儲存有計算機程式,所述計算機程式被處理模組執行時,實現如上述任一示例中所述的驗證方法。
為了更清楚地說明本公開實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本公開的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
下面將結合本公開實施例中的附圖,對本公開實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本公開一部分實施例,而不是全部的實施例。基於本公開中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本公開保護的範圍。
除非另有定義,本公開實施例使用的所有術語(包括技術和科學術語)具有與本公開所屬領域的普通技術人員共同理解的相同含義。還應當理解,諸如在通常字典裡定義的那些術語應當被解釋為具有與它們在相關技術的上下文中的含義相一致的含義,而不應用理想化或極度形式化的意義來解釋,除非本公開實施例明確地這樣定義。
本公開實施例中使用的“第一”、“第二”以及類似的詞語並不表示任何順序、數量或者重要性,而只是用來區分不同的組成部分。“一個”、“一”或者“該”等類似詞語也不表示數量限制,而是表示存在至少一個。同樣,“包括”或者“包含”等類似的詞語意指出現該詞前面的元件或者物件涵蓋出現在該詞後面列舉的元件或者物件及其等同,而不排除其他元件或者物件。“連接”或者“相連”等類似的詞語並非限定於物理的或者機械的連接,而是可以包括電性的連接,不管是直接的還是間接的,而且“連接”或者“相連”等類似的詞語也包括通信連接。
本公開實施例中使用了流程圖用來說明根據本公開實施例的方法的步驟。應當理解的是,前面或後面的步驟不一定按照順序來精確的進行。相反,可以按照倒序或同時處理各種步驟。同時,也可以將其他操作添加到這些過程中,或從這些過程移除某一步或數步。
本公開的研究發現,硬體模擬加速驗證平臺,包括基於FPGA的驗證平臺,基於FPGA的驗證平臺包括HAPS或ZEBU等。但是基於FPGA的驗證平臺由於容量限制、綜合耗時長、調試困難、需要手動劃分大系統以及需要修改時脈樹等特性的限制,使得基於FPGA的驗證平臺不適合做替代EDA模擬的功能模擬加速。
本公開的研究還發現,目前一些模擬加速的方案具有以下的缺點:
第一,基於通用驗證方法學(Universal Verification Methodology,UVM)的模擬加速,雖然在做模擬加速時能複用原本的UVM環境和測試用例,但是UVM相關方法學的外殼解析起來較為複雜,加速性能偏低,而且UVM遷移到可綜合的模擬加速驗證平臺上需要做大量優化工作,耗時耗力。
第二,基於嵌入式介面的模擬加速雖然速度較快,但需要將測試平臺寫成可綜合的形式並綜合到模擬加速器中,重用性很低,不同的測試平臺與模擬加速器結合時都需重新改寫、解析和調試,工作量較大。
本公開至少一實施例提供了一種驗證系統,包括模擬驗證設備以及分別創建在模擬驗證設備上的第一部分和第二部分;第一部分包括分別與待測對象連接的第一主模組和至少一個第二從模組;待測對象包括待測模組和連接在待測模組的外圍的多個對象介面,多個對象介面包括存取介面,第二從模組包括儲存單元,儲存單元與存取介面連接;第二部分包括第一直接程式化介面、第二直接程式化介面、函數庫模組和測試用例模組,測試用例模組配置為提供至少一個測試用例;第一直接程式化介面與第一主模組通信,且第一直接程式化介面配置為:響應於運行測試用例,調用函數庫模組中的至少一個第一函數,以實現待測模組的暫存器的前門訪問;第二直接程式化介面與第一部分的儲存單元通信,且第二直接程式化介面配置為:響應於運行測試用例,調用函數庫模組中的至少一個第二函數,以實現儲存單元的後門訪問。
本公開上述實施例的驗證系統通過提供第一直接程式化介面和第二直接程式化介面,可以實現驗證系統的軟體側與硬體側的同步,方便在待測模組的功能驗證中實現暫存器讀寫、儲存單元存取等操作,模擬消耗時間少,晶片驗證效率提升,能夠實現晶片的系統級和/或模組級的可重用的驗證,應用前景廣泛。
圖1為本公開一些實施例提供的一種驗證系統的框圖示意圖。圖2為本公開一些實施例提供的驗證系統的軟體側的框圖示意圖。
例如,如圖1所示,驗證系統1000包括模擬驗證設備100以及分別創建在模擬驗證設備100上的第一部分200和第二部分300。例如,第一部分200為硬體側,該硬體側配置為基於硬體描述(HDL)語言創建。第二部分300為軟體側,該軟體側配置為基於行為建模語言創建。例如,硬體描述語言包括Verilog、SystemVerilog等,行為建模語言包括C語言或CPP語言(也可稱之為C++語言)等。
例如,如圖1所示,第一部分200包括分別與待測對象230連接的第一主模組210和至少一個第二從模組220。待測對象230包括待測模組231和連接在待測模組231的外圍的多個對象介面。多個對象介面包括至少一個存取介面232。第二從模組220包括儲存單元221,儲存單元221與存取介面232連接。
例如,待測模組231即為待測設計(Design Under Test,DUT),例如,DUT通過RTL(Register Transfer Level,暫存器傳輸級)設計代碼實現。
例如,如圖1所示,第二部分300包括第一直接程式化介面310、第二直接程式化介面320、函數庫模組330和測試用例模組340。測試用例模組340配置為提供至少一個測試用例。
例如,第一直接程式化介面310和/第二直接程式化介面320均為直接程式化語言介面DPI(Direct Programming Interface),其是用於在硬體描述語言(例如SystemVerilog)和用於軟體的程式化語言(例如C/C++)之間相互調用的介面。
例如,函數庫模組330配置為基於多個函數製作形成的函數庫,以供其他程式使用,例如,函數庫模組330可以選用靜態庫。函數庫模組330的內部包括至少一個第一函數和至少一個第二函數,其中,第一函數在被調用使用時可實現暫存器的配置,第二函數在被調用使用時可實現儲存單元的存取。
例如,如圖1所示,第一直接程式化介面310與第一主模組210通信,且第一直接程式化介面310配置為:響應於運行源於測試用例模組340的測試用例,調用函數庫模組330中的至少一個第一函數,以實現待測模組231的暫存器的前門訪問。例如,前門訪問包括前門讀數據操作和/或前門寫數據操作,對應地,第一函數包括關於暫存器讀和/或寫的函數。
例如,如圖1所示,第二直接程式化介面320與第一部分200的儲存單元221通信,且第二直接程式化介面320配置為:響應於運行源於測試用例模組340的測試用例,調用函數庫模組330中的至少一個第二函數,以實現儲存單元221的後門訪問。例如,後門訪問包括後門數據加載操作和/或後門數據導出操作,對應地,第二函數包括儲存單元加載和/或導出函數。
在一些示例中,本公開的實施例的“前門訪問”是指通過暫存器配置匯流排(例如AMBA協議)模擬CPU(中央處理器,Central Processing Unit)在匯流排上發出讀寫指令,遵循匯流排時序對DUT的暫存器實際值進行讀寫訪問。前門訪問涉及真實的RTL傳輸且前門訪問依賴於匯流排時序協議進行傳輸,因此,前門訪問會消耗模擬時間。例如,前門訪問不可按域讀寫。
在一些示例中,本公開的實施例的“後門訪問”是指直接讀取儲存單元的二維數組的訪問方式。後門訪問不消耗模擬時間。例如,後門訪問可按域讀寫。
本公開上述實施例的驗證系統通過提供第一直接程式化介面和第二直接程式化介面,可以實現驗證系統的軟體側與硬體側的同步,方便在待測模組的功能驗證中實現暫存器讀寫、儲存單元訪問等,模擬消耗時間少,晶片功能的驗證效率提升,能夠實現晶片的系統級和模組級的可重用的驗證,應用前景廣泛。
在一些示例中,第一部分200的待測對象230是驗證系統100的硬體側的頂層,例如,待測對象230的待測模組231包括SoC晶片的IP(Intellectual Property)模組。例如,待測模組231可以是驗證系統100待進行驗證的SOC中的一個獨立IP。例如,該SOC可以基於X86、ARM、RISC-V等指令集的微架構,本公開的實施例對此不作限制。待測模組231具有普適性,適用於晶片中的關鍵IP,例如待測模組23包含但不限於GPGPU(通用圖形處理器),本公開的實施例在此不做限制和贅述。本公開上述實施例的驗證系統可適用於SoC中IP級別模組的模擬驗證加速和軟體bare metal開發,模擬驗證所需的時間大大減少。
還需要說明的是,本公開的實施例的待測模組231在一些場景下可以屬於IP模組級別,還可以在其他一些場景下屬於子系統級別,本公開的實施例對此不作限制,並且這也並不影響本公開的保護範圍。
需要說明的是,本公開的實施例的第一主模組和第二從模組分別是相對於待測對象而言而被稱之為是主模組或從模組,此僅僅為是一種命名方式,便於本公開的描述的清楚與簡潔,本公開的實施例不限於此,本公開的實施例的保護範圍也不受此限制。
在一些示例中,模擬驗證設備100包括第一處理器且第一處理器包括並行連接的多個第二處理器,即第二處理器相對於第一處理器為子處理器。
例如,模擬驗證設備包括Cadence的Palladium設備,Palladium設備的底層架構為CPU處理器和專用積體電路。Palladium設備的處理器是大量的處理器並行連接的,從而可以通過並行通路進行模擬驗證加速。
本公開的實施例基於例如Palladium設備的模擬驗證設備進行硬體模擬加速驗證,能夠使得晶片RTL保持兼容,改動較少;調試性能優異,信號可見性高;平臺兼容性高,可支持SystemVerilog或System C或System CPP;而且無需手動劃分SoC設計,不需太多額外人力投入等,從而可以很好地滿足晶片項目對驗證時間的要求和晶片交付質量。
需要說明的是,本公開的實施例的驗證系統採用的模擬驗證設備不僅限於Palladium設備,還可以是其他基於處理器構建的模擬驗證設備,本公開的實施例不作限制和贅述。
在一些示例中,第二部分300配置為基於C語言或CPP語言創建,例如,第二部分300為運行在Cadence的例如編譯軟體Xcelium上的軟體側。這樣本公開的實施例的驗證系統可以方便地在將C語言或CPP語言代碼編譯之後實現相關指令的執行,應用廣泛,方便研發人員的開發工作。
在一些示例中,第一主模組210用於生成讀和/或寫指令並配置待測模組231的暫存器以及產生複位,例如全域複位。例如,如圖1和圖2所示,第二部分200還包括驅動模組350,用於驅動第一部分200的第一主模組210,使得第一主模組210配置待測模組231的暫存器並進行全域複位。
在一些示例中,第一主模組210和第二從模組220是在驗證單元組件(Verification IP,VIP)的基礎上且針對模擬驗證設備100設計的AVIP(Accelerated Verification IP)。
例如,如圖2所示,第一主模組210包括高級微處理器匯流排架構式的主模組,也可稱之為AMBA MASTER,即第一主模組210支持AMBA標準匯流排協議。對應地,驅動模組350也可稱之為AMBA MASTER Driver。例如,第二從模組220包括高級微處理器匯流排架構式的從模組,也可稱之為AMBA SLAVE,即第二從模組220支持AMBA標準匯流排協議。
本公開上述實施例的驗證系統通過採用可支持多種標準匯流排協議的AVIP使得能夠實現模組級和子系統級更廣泛的匯流排協議驗證。
例如,如圖1所示,第一部分200還包括時脈驅動源模組240,時脈驅動源模組240用於提供硬體側的系統時脈信號,以供DUT等使用。例如,時脈信號的時脈頻率可以為1GHZ。此僅僅為示例性的,並不為本公開的限制。
例如,如圖1所示,待測對象230的多個對象介面還包括第一介面233a、第二介面233b、第三介面233c、第四介面233d中的至少一個。
例如,如圖1所示,第一介面233a與時脈驅動源模組240連接,以接收時脈信號。本公開的驗證系統可以由一個全域時脈驅動,這有利於同步數位系統的功能、性能和穩定性。
例如,如圖1所示,第二介面233b配置為接收中斷請求信號。例如,中斷請求信號用於停止相關硬體當前的工作狀態而切換到對中斷請求信號對應的操作任務,並且在該操作任務處理完成之後再切換回來,從而可以避免引起信號衝突。
例如,如圖1所示,第一主模組210與第三介面233c連接,以用於配置待測模組231的暫存器。例如,如圖1所示,第一主模組210與第四介面233d連接,以用於複位第一部分200。
例如,在圖1的示例中,存取介面232的數目為兩個,第二從模組220的數目為兩個,每個第二從模組220均包括一個儲存單元221。如此,儲存單元221與存取介面232一一對應,這樣可以形成每個儲存單元221與待測模組231之間的數據傳輸通路,從而可以實現暫存器前門訪問。此僅僅為示例性的,並不為本公開的限制。
例如,如圖1所示,第二從模組220的儲存單元221用於儲存暫存器數據,即第二從模組220在驗證系統100中的主要作用是作為驗證系統的儲存器。例如,對於實現前門寫操作,本公開的實施例通過存取介面232,可實現將通過前門寫操作而寫入的數據儲存到儲存單元221中。
例如,如圖1所示,如果需要,第一部分200還可以包括速率匹配橋250,速率匹配橋250配置為分別與第二從模組220以及存取介面232連接。本公開的實施例通過速率匹配橋250可以進行讀寫速率的轉換與處理,從而可以避免待測模組231與儲存單元221之間的跨時脈域的數據傳輸的亞穩態以及時脈信號不匹配等問題。
在一些示例中,第二從模組220的儲存單元221中的數據的來源包括兩種。第一種是通過前門寫操作將數據寫進待測模組231的暫存器並且經由速率匹配橋250跨時脈域傳入第二從模組220的儲存單元221。第二種是通過後門的數據加載操作將數據導入儲存單元221。
在一些示例中,第二從模組220的儲存單元221具有虛擬的儲存空間。例如,本公開可以通過Palladium設備來劃分一部分儲存空間給到儲存單元221。此僅僅為示例性的,並不為對本公開實施例的限制。
例如,如圖2所示,第一直接程式化介面310包括基於C語言或CPP語言的直接程式化介面(C/C++ DPI),第二直接程式化介面320包括基於C語言或CPP語言的一次性訪問型的直接程式化介面(MARG DPI)。例如,MARG DPI為一種類型的介面,相對更適用於一次性的儲存和讀取。
本公開的實施例通過DPI介面連接驗證系統的軟體側和硬體側,這樣不僅可以通過DPI的CPP介面函數使得第一主模組210能夠完成例如AMBA匯流排的暫存器的前門訪問(例如前門讀寫操作),而且還能基於設置的MARG DPI,使得第二從模組220的儲存單元221通過調用MARG DPI對應的CPP介面函數,可以直接實現儲存單元221的後門訪問,從而可實現儲存單元的數據加載和數據導出。
本公開的實施例採用的CPP介面函數(例如上文所述的第一函數或第二函數,例如第一函數可以包括關於暫存器讀和/或寫的函數,第二函數包括儲存單元加載和/或導出函數等)經CPP語言的編寫、包裝,方便調用,可以實現函數更複雜的功能,功能更貼合晶片需求的測試用例,並且實現了軟體側與硬體側的同步,模擬加速的效率大大提高。
圖3本公開一些實施例提供的驗證系統的第一主模組的框圖示意圖。
例如,如圖3所示,第一主模組210包括主核211和第三從模組212。例如,第三從模組212嵌入至第一主模組210中,第三從模組212為嵌入式高級外圍匯流排從模組,即嵌入式APB模組。需要說明的是,本公開的實施例的第三從模組212是相對於主核211而言被稱之為一種從模組,此僅僅為是一種命名方式,本公開的實施例不限於此,本公開的實施例的保護範圍也不受此限制。
在一些示例中,第一主模組210的主核211為AVIP核,第一主模組210的主核211包括可綜合的RTL代碼。
例如,如圖3所示,主核211分別與第一直接程式化介面310和第三介面233c連接,使得主核211獲取對應於測試用例的第一函數的暫存器存取指令(即用於對待測模組231的暫存器進行讀操作或寫操作的指令),以用於配置待測模組231的暫存器。
例如,在用戶運行測試用例並調用第一函數時,第一主模組210的主核211會獲取暫存器存取指令,以用於配置待測模組231的暫存器。
在一些示例中,主核211還會獲取與暫存器存取指令相關的控制數據。控制數據包括對暫存器進行讀操作或寫操作時所需的基礎數據,例如記憶體的基地址和記憶體的基礎寬度等。此僅僅為示例性的,並不為本公開的限制。
例如,如圖3所示,第一主模組210的第三從模組212分別連接主核211和第四介面233d,這樣可將主核211產生的複位信號傳輸至第四介面233d,以用於複位第一部分200。例如,在每個測試用例開始運行進行模擬之前需要進行複位,以使得硬體側內部所有的核的狀態和所有記憶體的狀態都是最初始的狀態。
在一些示例中,第二從模組220為AMBA模組時,可以例化成多個不同類型的AMBA模組,例如可以是APB模組或AXI模組或ACE模組。此僅僅為示例性的,並不為本公開的限制。
在一些示例中,在例化第二從模組220時,需要聲明的AMBA參數包括以下的至少一種:記憶體大小、記憶體基地址以及可以支持的當前正在進行的(Outstanding)操作的深度。此僅僅為示例性的,並不為本公開的限制。
在一些示例中,第一主模組210、第二從模組220和第三從模組212分別被配置獨立的儲存空間。例如,在驗證系統1000完成初步搭建後,需要向例如第一主模組210、第二從模組220和第三從模組212等各個模組分配儲存空間。
圖4為本公開一些實施例提供的第一主模組和第二從模組的地址空間的示意圖。
在一些示例中,第一主模組210的地址偏移為0x0000_0000,第三從模組212的地址偏移為0x0010_0000(1M Byte)。例如,如圖4所示,第一主模組210的地址範圍包括0x0000_0000~0x000F_FFFF且大小為1MB以及0x0010_0000~0x001F_FFFF且大小為1MB。例如,如圖4所示,兩個第二從模組220中的一個第二從模組220的地址範圍是0x4000_0000~0x7FFF_FFFF且大小為1GB,另外一個第二從模組220的地址範圍是0x8000_0000~0xFFFF_FFFF且大小為2GB。此僅僅為示例性的,並不為本公開的限制。
在一些示例中,第二部分300還包括配置文件。測試用例配置為基於配置文件的至少一個第一函數進行用例配置,以進行前門訪問,或者,測試用例配置為基於配置文件的至少一個第二函數進行用例配置,以進行後門訪問。
在一些示例中,函數庫模組330包括基於測試用例和配置文件並通過行為建模語言編譯生成的靜態庫。
例如,在圖2的示例中,測試用例模組340提供的測試用例包括test0~test3,不同測試用例會調用不同的函數以驗證符合需求的功能。例如,如圖2所示,對於測試用例模組340,其可以通過使用test_entry()來調用配置文件以提供相關測試用例。test_entry()是用戶編輯待測的測試用例的入口,test_entry()中會調用配置文件(例如.cfg文件)以完成相關測試用例的配置。驗證系統1000可以為用戶提供API用來配置暫存器的前門訪問和後門存取,例如,配置文件經C/CPP編譯生成靜態庫user lib,由API介面進一步解析,完成例如對暫存器的讀寫。
本公開上述實施例的模擬加速驗證使用基於C/CPP代碼構建的測試用例,使得環境相對比較簡單,沒有複雜方法學,可以快速地搭建好模擬環境,並且運行速度非常快。
在一些示例中,第一函數包括:暫存器讀函數reg_read、暫存器寫函數reg_write、暫存器讀後檢查函數reg_read_check、暫存器寫後讀並檢查函數reg_write_check、暫存器輪詢喚醒讀函數poll_reg_equal中的至少一個。
例如,函數reg_write用於直接實現在特定暫存器地址寫入32bit數據,函數reg_read用於直接實現讀出特定暫存器地址的32bit數據。
例如,函數reg_read_check用於檢查特定地址暫存器寫入的數據是否與預期相同,例如特定地址暫存器寫入的數據可以是通過函數reg_write寫入的數據。
例如,函數reg_read_check先從特定地址暫存器讀取數據,然後將讀取出的數據與預期數據相比較,如果比較結果為相同,則檢查通過,若比較結果為不相同,則會停止當前操作並報錯。本公開的實施例通過函數reg_read_check可將數據寫入特定地址的暫存器,並自動將讀數結果與預期結果相比較,這樣自動化程度比較高,能提高驗證人員的工作效率。
函數reg_write_check的作用和方法也可參照函數reg_read_check,區別在於函數reg_write_check還包括在特定地址暫存器寫入數據,此處不再贅述。
例如,函數poll_reg_equal用於對特定地址暫存器進行連續多次輪詢和讀取數值,直到從特定地址暫存器讀取到的數值與預期數值相等;若不相等則繼續讀取,直到讀取次數超出用戶所設置的最大輪詢次數(例如為10000),報錯並結束輪詢;若從同一地址暫存器讀取多次數值但依然與預期數值不等,則報錯,結束讀數循環。
例如,函數poll_reg_equal可以在第二函數對第二從模組的儲存單元進行後門訪問之前,部分暫存器需要進行輪詢操作以喚醒暫存器的情況下,對相關的暫存器進行輪詢喚醒並依次核對暫存器數據的讀寫結果。
在一些示例中,第二函數包括:儲存單元輪詢喚醒讀函數poll_mem_equal、儲存單元初始化函數mem_init、儲存單元數據加載函數mem_load、儲存單元數據導出函數中的至少一個。
在一些示例中,儲存單元數據導出函數包括儲存單元多字節讀函數或儲存單元數據抓取函數mem_dump,其中,函數mem_dump和儲存單元多字節讀函數讀出的數據段長度不同,函數mem_dump讀出的數據段長度大於儲存單元多字節讀函數讀出的數據段長度。
例如,儲存單元多字節讀函數包括函數mem_read32或函數mem_read64。函數mem_read32用於直接實現讀出特定儲存單元地址的32bit數據,函數mem_read64用於直接實現讀出特定儲存單元地址的64bit數據。
例如,函數mem_dump可從儲存單元中抓取數據,將儲存單元中的數據以十六進位格式抓取到自命名的十六進位格式文件(hex文件)中。
例如,函數mem_load將格式為十六進位格式的可讀文件加載進驗證系統中。此十六進位格式文件是一個二維數組,前為地址,後為數據,函數mem_load函數依據每個數據的地址,將其加載進對應的儲存空間。
例如,函數poll_mem_equal用於對指定地址的儲存單元進行連續多次輪詢和讀取數值,直到從特定地址的儲存單元讀取到的數值與預期數值相等;若比較結果為不相等,則繼續讀取,直到讀取次數超出用戶所設置的最大輪詢次數(例如為10000),報錯並結束輪詢;若從同一地址的儲存單元讀取多次數值但依然與預期數值不等,則報錯,結束讀數循環。
例如,函數mem_init用於對使用到的地址範圍內的儲存單元進行初始化,防止上一次運行測試用例後,儲存單元殘留的數據影響下一次測試用例的運行和結果比對。函數mem_init對已設定地址範圍的儲存單元進行初始化,主要有五種模式:
模式0:儲存單元的數值全部初始化為0x0000_0000;
模式1:儲存單元的數值全部初始化為0xFFFF_FFFF;
模式2:儲存單元的數值初始化為每個儲存單元地址的數值;
模式3:儲存單元的數值初始化為從0x0開始每次遞增0x4的數值;
模式4:儲存單元的數值初始化為從0開始每次遞增1的數值。
上述模式以及對應的功能僅僅為示例性的,並不為對本公開的實施例的限制。
在一些示例中,函數庫模組330還可包括文件比對函數file_cmp和/或複位函數glb_rst。
例如,函數file_cmp可以對兩個hex文件進行比對,用以獲取對比結果。在本公開的實施例的測試用例中,用戶可以在file_cmp函數定義中,自行指定需要進行比對操作的兩個hex文件的名稱。
例如,函數glb_rst可以複位第一部分200,重置第一部分200中的模組狀態。
在一些示例中,測試用例模組340提供的多個測試用例中的每個測試用例可以不完全相同,各個測試用例對應的函數可以是一個或多個,例如各個測試用例可以是上文描述的任一函數或多個函數的任意組合,本公開的實施例對此不作限制,其可以根據實際驗證需要進行自由的調整,此處不再贅述。
需要說明的是,本公開的實施例的函數庫模組330包括的函數不僅限於上述示例,還可以是其他的用於滿足驗證需求的對應函數,這裡不再窮舉和贅述。
本公開至少一實施例還提供了一種驗證方法,該驗證方法可以基於上述任一實施例所述的驗證系統實現。關於基於驗證系統的驗證方法的具體實施方式和技術效果可以參考本公開上述實施例中提供的驗證系統。
圖5為本公開一些實施例提供的一種驗證方法的流程圖。
例如,如圖5所示,本公開至少一實施例提供的一種驗證方法包括步驟S1至步驟S5。
步驟S1、基於待測模組231進行RTL代碼編譯。
步驟S2、基於第一部分200、待測對象230、待測模組231、第一主模組210、第二從模組220進行綜合編譯,獲取已編譯的第一部分200。
步驟S3、選擇模擬驗證設備100的使用模式,根據使用模式將已編譯的第一部分200加入至少一個編譯選項,並調用第一彙編工具對驗證系統1000進行解構,生成用於模擬驗證設備100的硬體資訊庫,以實現加速器編譯。
步驟S4、對第二部分300進行行為建模語言的代碼編譯。
步驟S5、運行已編譯的第一部分200和第二部分300,獲取驗證結果。
在一些示例中,本公開的驗證方法還包括以下過程或步驟:根據驗證結果進行調試,以使得驗證通過。
在一些示例中,本公開的驗證方法還包括以下過程或步驟:將驗證結果配置為在模擬驗證設備100上可視化,可視化方式包括但不限於圖表、文本、波形圖等。這樣可以及時、方便且準確地反映驗證結果,有利於驗證工作的管理和執行。
例如,在步驟S1中,基於待測模組231進行RTL代碼編譯,包括以下過程或步驟:使用第二編譯工具編譯待測模組231的RTL文件列表及對應RTL文件,生成包含待測對象230的設定格式的DUT網表,例如生成包含待測對象230的vg格式的DUT網表。該生成的DUT網表配置為在模擬驗證設備100上運行。需要說明的是,本公開的實施例的DUT網表的設定格式不僅限於vg格式,還可以是其他類型的格式,例如edif格式等,本公開的實施例對此不作限制。
例如,在步驟S1中,第二編譯工具包括Cadence的編譯工具vavlog或編譯工具vaelab。當然,此僅僅為示例性的,並不為本公開的限制。
例如,在步驟S2中,基於第一部分200、待測對象230、待測模組231、第一主模組210和第二從模組220進行綜合編譯,獲取已編譯的第一部分200,包括以下過程或步驟:基於模擬驗證設備100的第三編譯工具對第一部分200、待測對象230、待測模組231、第一主模組210、第二從模組220(例如圖1中的兩個第二從模組220)和時脈驅動源模組240進行綜合編譯,獲取已編譯的硬體側。
例如,第三編譯工具包括Cadence基於Palladium的vlan工具。當然,此僅僅為示例性的,並不為本公開的限制。
例如,在步驟S2中,本公開的實施例的綜合編譯的對象不僅包括第一部分200、對待測對象230、待測模組231、第一主模組210和第二從模組220,還包括例如編譯必需的Cadence AVIP文件以及其他所需外圍測試資源進行綜合編譯,由於此不為本公開的實施例需要描述的重點,這裡不再窮舉和贅述。因此,通過該步的綜合編譯可以生成已編譯的硬體側。
例如,在步驟S3中,選擇模擬驗證設備100的使用模式,根據使用模式將已編譯的第一部分200加入至少一個編譯選項進行加速器編譯,並調用第一彙編工具對驗證系統進行解構,生成用於模擬驗證設備的硬體資訊庫,包括以下過程或步驟:選擇Palladium設備的IXCOM模式,根據IXCOM模式,將已編譯的第一部分200加入至少一個編譯選項,並調用第一彙編工具對驗證系統1000進行解構,生成硬體資訊庫(hardware lib)。例如,硬體資訊庫包含RTL、模擬環境、編譯環境等資訊的lib庫。此僅僅為示例性的,並不為本公開的限制。
本公開的實施例選用Palladium的IXCOM模式,這樣使得對設計中不可綜合的部分兼容性更高,支持將部分設計放到模擬驗證設備中,同時兼容其他模式,可以減少驗證的工作量,減少成本,提高驗證效率。
例如,在步驟S3中,通過基於Cadence的IXCOM編譯工具,將綜合編譯生成的已編譯的第一部分200,加入例如-z1、-ua+1xua、-dpi、-timescale等編譯選項進行編譯,並且還可調用Cadence的vxe等第一彙編工具,對驗證系統1000整體進行解構(例如將自然語言程式化彙編為機器語言)等處理,生成可直接用於模擬驗證設備100的硬體資訊庫,從而完成加速器編譯。此僅僅為示例性的,並不為本公開的限制。
例如,在步驟S4中,行為建模語言可以是CPP語言,即步驟S4用於對第二部分300進行CPP代碼編譯。
例如,步驟S4中主要編譯用戶設置的測試用例的CPP代碼,例如可包括:設置具體調用的第一函數和/或第二函數的類型、調用的第一函數和/或第二函數如何搭配、第一函數和/或第二函數的具體設置(例如暫存器讀寫地址和具體寫入的數據)和用於進行比對的第一參考文件(具體可見下文)等。由此,驗證系統在最終運行時調用由該步驟S4生成的靜態庫的文件,從而使得用戶設置的測試用例能在模擬加速驗證過程中生效並完成測試功能。
在一些示例中,本公開的驗證方法還包括以下過程或步驟:檢驗上述的配置待測模組的暫存器是否符合待測模組231的目標需求。
例如,對於不同的待測模組231,本公開的實施例的測試用例模組340提供的測試用例均有所不同,並且同一待測模組231也可基於多個不同的驗證需求可開發出多個不同的測試用例,不同的測試用例會對應不同的函數設置、暫存器設置、預期數據結果等,由此會對針對AMBA匯流排的暫存器會進行不同的數據寫入。
在一些示例中,對於本公開的實施例中的創建在模擬驗證設備100上的第一部分200和第二部分300,其表示基於模擬驗證設備100進行搭建的驗證環境,驗證環境分為硬體側和軟體側,且硬體側和軟體側可以彼此交互。例如,其可以是第一部分200移植在例如Palladium設備的模擬驗證設備100上,且第一部分位於能夠實現與硬體側連接通訊的其他例如伺服器的設備上。當然,其也可以是第一部分200和第二部分300共同運行在例如Palladium設備上,本公開的實施例對此不作限制。
圖6是圖5中的驗證方法的步驟S5的一種執行過程的流程圖。例如,如圖6所示,步驟S5的一個示例至少包括步驟S51~步驟S53。
步驟S51、響應於待測模組231為第一模組,通過後門訪問讀取儲存單元221的第一數據,以獲取第一參考文件。
步驟S52、響應於待測模組231為第二模組,通過後門訪問讀取儲存單元222的第二數據,以獲取第二文件。
步驟S53、將第二文件與第一參考文件進行對比,獲取驗證結果。
例如,在步驟S51中,通過後門訪問讀取儲存單元221的第一數據,以獲取第一參考文件,包括以下過程或步驟:響應於測試用例運行結束(例如測試用例初次運行結束之後),通過後門訪問讀取儲存單元221的第一數據,得到自命名的第一目標十六進位格式文件;以及基於第一目標十六進位格式文件生成標準版本的第二目標十六進位格式文件,獲取第一參考文件。
例如,第一目標十六進位格式文件即為第一hex文件,第二目標十六進位格式文件即為golden版本的第二hex文件。此僅僅為示例性的,並不為本公開的限制。
例如,在步驟S52中,第二模組配置為基於第一模組進行更新的模組。第二模組是在隨著晶片開發的過程中,基於第一模組不斷進行疊代更新的待測模組。因此,在待測模組231每次發生RTL代碼的變化進行疊代更新時,需要重新運行測試用例,用以測試RTL功能是否變化並使用第一參考文件來校準RTL。
例如,在步驟S52中,通過後門訪問讀取儲存單元221的第二數據,以獲取第二文件,包括以下過程或步驟:再次運行測試用例,通過後門訪問讀取儲存單元221的第二數據,獲取第二文件。例如,該步驟S52中的測試用例理論上期望是與上述步驟S51中初次運行的測試用例相同,從而可以判斷驗證是否通過。
例如,在步驟S53中,將第二文件與第一參考文件進行對比,獲取驗證結果包括以下過程或步驟:若第二文件與第一參考文件的比對結果為相同,則驗證通過,可以打印例如“testcase pass”字符或圖案至圖形界面,流程結束;若第二文件與第一參考文件的比對結果為不同,則驗證未通過,可以打印例如“testcase fail”字符或圖案至圖形界面,並對測試用例進行調試,還可核對待測模組231的RTL代碼。由此,修改調試後再重新運行,重複比對的過程,直至得到比對結果為相同,則驗證通過,流程結束。
由此,在驗證未通過的情況下,步驟S52中的通過後門訪問讀取儲存單元221的第二數據,以獲取第二文件,還包括以下過程或步驟:對測試用例進行調試,運行調試之後的測試用例,通過後門訪問讀取儲存單元221的第二數據,獲取第二文件。例如,步驟S52中調試之後的測試用例相對於步驟S51中初次運行的測試用例來說,它們是進行相同用例配置的測試用例,這樣可以避免因為實際過程中測試用例的錯誤而導致驗證失敗的問題,從而使得模擬驗證流程的順利進行。
在一些示例中,對於步驟S52,在再次運行測試用例之前,也可以對測試用例進行調試,本公開的實施例對此不作限制。
在一些示例中,在運行已編譯的第一部分200和第二部分300時,可以通過執行Makefile中已經包裝好的指令Make emu_run,直接啟動Palladium設備的圖形界面,如此,測試用例的運行結果及對應的必要日誌資訊會打印到圖形界面上,以供使用者進行進一步的調試和結果記錄。
本公開的實施例的驗證文件和基礎驗證流程具有通用性,有利於減少驗證的工作量。在隨著驗證工作的深入,驗證用例的數量越來越多、驗證用例的複雜度也在不斷增加以及設計的不停疊代,通過自動化回歸測試的工作,有助於確保項目質量,減少繁瑣任務的工作量。
圖7為本公開另一些實施例提供的驗證方法的流程圖。
例如,如圖7所示,本公開一些實施例提供的驗證方法包括步驟T1至步驟T8。
步驟T1、測試用例初次運行。
步驟T2、通過後門訪問讀取儲存單元的第一數據,獲取第一參考文件。
步驟T3、再次運行測試用例。
步驟T4、通過後門訪問讀取儲存單元的第二數據,獲取第二文件。
步驟T5、將第二文件的數據與第一參考文件的數據進行對比。
步驟T6、判斷第二文件的數據與第一參考文件的數據是否相同:若是,則轉至步驟T8;若否,則驗證失敗,並執行步驟T7中的測試用例的調試和待測模組的RTL核對,循環執行步驟T3至步驟T6,直至判斷結果為相同,轉至步驟T8。
步驟T8、驗證通過,結束驗證流程。
例如,步驟T2中的第一參考文件為golden版本的第二hex文件。
例如,步驟T3中的測試用例可以是在驗證未通過的情況下而被調試之後的測試用例,也可以是在開始步驟T3之前對測試用例進行調試而獲得的測試用例,本公開的實施例對此不作限制。
本公開的實施例基於上述的測試用例驗證流程,可以實現具有一定普適性的自動化流程,從而實現簡潔高效、複用性強的硬體加速測試方法和流程,大幅節約了晶片驗證工程的時間,極大提升了晶片驗證效率。
圖8為本公開至少一實施例提供的一種電子設備的結構示意圖,該電子設備400包括處理模組410和儲存器420,其中,儲存器420上儲存有計算機程式,計算機程式被處理模組410執行時,實現本公開至少一些實施例的驗證方法。
本公開實施例中的電子設備可以包括但不限於諸如筆記型電腦、平板電腦等的移動終端以及諸如臺式計算機、常規伺服器、雲伺服器等的固定終端。圖8示出的電子設備僅僅是一個示例,不應對本公開實施例的功能和使用範圍帶來任何限制。
例如,根據本公開的實施例,上文參考流程圖描述的過程可以被實現為計算機軟體程式。例如,本公開的實施例包括一種計算機程式產品,其包括承載在非暫態計算機可讀媒體上的計算機程式,該計算機程式包含用於執行流程圖所示的方法的程式代碼。在該計算機程式被處處理模組執行時,執行本公開實施例的驗證方法。
需要說明的是,本公開上述的計算機可讀媒體可以是計算機可讀信號媒體或者計算機可讀儲存媒體或者是上述兩者的任意組合。計算機可讀儲存媒體例如可以是但不限於電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合。計算機可讀儲存媒體的更具體的例子可以包括但不限於:具有一個或多個導線的電連接、便攜式計算機磁碟、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可擦式可程式化唯讀記憶體(EPROM或閃存)、光纖、便攜式緊湊磁碟唯讀記憶體(CD-ROM)、光儲存器件、磁儲存器件、或者上述的任意合適的組合。在本公開的實施例中,計算機可讀儲存媒體可以是任何包含或儲存程式的有形媒體,該程式可以被指令執行系統、裝置或者器件使用或者與其結合使用。而在本公開的實施例中,計算機可讀信號媒體可以包括在基帶中或者作為載波一部分傳播的數據信號,其中承載了計算機可讀的程式代碼。這種傳播的數據信號可以採用多種形式,包括但不限於電磁信號、光信號或上述的任意合適的組合。計算機可讀信號媒體還可以是計算機可讀儲存媒體以外的任何計算機可讀媒體,該計算機可讀信號媒體可以發送、傳播或者傳輸用於由指令執行系統、裝置或者器件使用或者與其結合使用的程式。計算機可讀媒體上包含的程式代碼可以用任何適當的媒體傳輸,包括但不限於:電線、光纜、RF(射頻)等等,或者上述的任意合適的組合。
上述計算機可讀媒體可以是上述電子設備中所包含的;也可以是單獨存在,而未裝配入該電子設備中。
需要說明的是,本公開的實施例中,電子設備400的具體功能和技術效果可以參考上文中關於驗證方法的描述,此處不再贅述。
有以下幾點需要說明:
(1)本公開實施例附圖只涉及到本公開實施例涉及到的結構,其他結構可參考通常設計。
(2)在不衝突的情況下,本公開的實施例及實施例中的特徵可以相互組合以得到新的實施例。
以上所述,僅為本公開的具體實施方式,但本公開的保護範圍並不局限於此,本公開的保護範圍應以所述權利要求的保護範圍為准。
100:模擬驗證設備
200:第一部分
210:第一主模組
220:第二從模組
221:儲存單元
230:待測對象
231:待測模組
232:存取介面
233a:第一介面
233b:第二介面
233c:第三介面
233d:第四介面
240:時脈驅動源模組
250:速率匹配橋
300:第二部分
310:第一直接程式化介面
320:第二直接程式化介面
330:函數庫模組
340:測試用例模組
350:驅動模組
1000:驗證系統
S1:基於待測模組進行RTL代碼編譯
S2:基於第一部分、待測對象、待測模組、第一主模組、第二從模組進行綜合編譯,獲取已編譯的第一部分
S3:選擇模擬驗證設備的使用模式,根據使用模式將已編譯的第一部分加入至少一個編譯選項,並調用第一彙編工具對驗證系統進行解構,生成用於模擬驗證設備的硬體資訊庫,以實現加速器編譯
S4:對第二部分進行行為建模語言的代碼編譯
S5:運行已編譯的第一部分和第二部分,獲取驗證結果
S51:響應於待測模組為第一模組,通過後門訪問讀取儲存單元的第一數據,以獲取第一參考文件
S52:響應於待測模組為第二模組,通過後門訪問讀取儲存單元的第二數據,以獲取第二文件
S53:將第二文件與第一參考文件進行對比,獲取驗證結果
T1:測試用例初次運行
T2:通過後門訪問讀取儲存單元的第一數據,獲取第一參考文件
T3:再次運行測試用例
T4:通過後門訪問讀取儲存單元的第二數據,獲取第二文件
T5:將第二文件的數據與第一參考文件的數據進行對比
T6:判斷第二文件的數據與第一參考文件的數據是否相同
T7:測試用例的調試和待測模組的RTL核對
T8:驗證通過,結束驗證流程
400:電子設備
410:處理模組
420:儲存器
圖1為本公開一些實施例提供的一種驗證系統的框圖示意圖。
圖2為本公開一些實施例提供的驗證系統的軟體側的框圖示意圖。
圖3本公開一些實施例提供的驗證系統的第一主模組的框圖示意圖。
圖4為本公開一些實施例提供的第一主模組和第二從模組的地址空間的示意圖。
圖5為本公開一些實施例提供的一種驗證方法的流程圖。
圖6是圖5中的驗證方法的步驟S5的一種執行過程的流程圖。
圖7為本公開另一些實施例提供的一種驗證方法的流程圖。
圖8為本公開一些實施例提供的一種電子設備的框圖。
100:模擬驗證設備
200:第一部分
210:第一主模組
220:第二從模組
221:儲存單元
230:待測對象
231:待測模組
232:存取介面
233a:第一介面
233b:第二介面
233c:第三介面
233d:第四介面
240:時脈驅動源模組
250:速率匹配橋
300:第二部分
310:第一直接程式化介面
320:第二直接程式化介面
330:函數庫模組
340:測試用例模組
350:驅動模組
1000:驗證系統
Claims (20)
- 一種驗證系統,包括模擬驗證設備以及分別創建在所述模擬驗證設備上的第一部分和第二部分,其中, 所述第一部分包括分別與待測對象連接的第一主模組和至少一個第二從模組; 所述待測對象包括待測模組和連接在所述待測模組的外圍的多個對象介面,所述多個對象介面包括存取介面,所述第二從模組包括儲存單元,所述儲存單元與所述存取介面連接; 所述第二部分包括第一直接程式化介面、第二直接程式化介面、函數庫模組和測試用例模組,所述測試用例模組配置為提供至少一個測試用例; 所述第一直接程式化介面與所述第一主模組通信,且所述第一直接程式化介面配置為:響應於運行所述測試用例,調用所述函數庫模組中的至少一個第一函數,以實現所述待測模組的暫存器的前門訪問; 所述第二直接程式化介面與所述第一部分的所述儲存單元通信,且所述第二直接程式化介面配置為:響應於運行所述測試用例,調用所述函數庫模組中的至少一個第二函數,以實現所述儲存單元的後門訪問。
- 如請求項1所述的驗證系統,其中, 所述第一部分為硬體側,所述硬體側配置為基於硬體描述語言創建; 所述第二部分為軟體側,所述軟體側配置為基於行為建模語言創建。
- 如請求項1所述的驗證系統,其中, 所述模擬驗證設備包括第一處理器,所述第一處理器包括並行連接的多個第二處理器。
- 如請求項3所述的驗證系統,其中, 所述模擬驗證設備包括Palladium設備,所述第一直接程式化介面包括基於C語言或CPP語言的直接程式化介面,所述第二直接程式化介面包括基於C語言或CPP語言的一次性訪問型的直接程式化介面。
- 如請求項1所述的驗證系統,其中,所述第一部分還包括用於提供時脈信號的時脈驅動源模組,所述多個對象介面還包括第一介面、第二介面、第三介面、第四介面中的至少一個; 所述第一介面與所述時脈驅動源模組連接,以接收所述時脈信號; 所述第二介面配置為接收中斷請求信號; 所述第一主模組與所述第三介面連接,以用於配置所述待測模組的暫存器; 所述第一主模組與所述第四介面連接,以用於複位所述第一部分。
- 如請求項5所述的驗證系統,其中, 所述第一主模組包括高級微處理器匯流排架構式的主模組,所述第二從模組包括高級微處理器匯流排架構式的從模組; 所述第一主模組包括主核和第三從模組,所述主核分別與所述第一直接程式化介面和所述第三介面連接,使得所述主核獲取對應於所述測試用例的所述第一函數的暫存器存取指令,以用於配置所述待測模組的暫存器; 所述第三從模組分別連接所述主核和所述第四介面,將所述主核產生的複位信號傳輸至所述第四介面,以用於複位所述第一部分。
- 如請求項1所述的驗證系統,其中, 所述第一部分還包括速率匹配橋,所述速率匹配橋分別與所述第二從模組以及所述存取介面連接。
- 如請求項2所述的驗證系統,其中,所述第二部分還包括配置文件, 所述測試用例配置為基於所述配置文件的所述至少一個第一函數進行用例配置,以進行所述前門訪問,或者,所述測試用例配置為基於所述配置文件的所述至少一個第二函數進行用例配置,以進行所述後門訪問; 所述函數庫模組包括基於所述測試用例和所述配置文件並通過所述行為建模語言編譯生成的靜態庫。
- 如請求項1或8所述的驗證系統,其中, 所述至少一個第一函數包括:暫存器讀函數、暫存器寫函數、暫存器讀後檢查函數、暫存器寫後讀並檢查函數、暫存器輪詢喚醒讀函數的至少一個; 所述至少一個第二函數包括:儲存單元輪詢喚醒讀函數、儲存單元初始化函數、儲存單元數據加載函數、儲存單元數據導出函數中的至少一個。
- 如請求項6所述的驗證系統,其中, 所述第一主模組、所述第二從模組和所述第三從模組分別被配置獨立的儲存空間。
- 一種基於如請求項1~10任一項所述的驗證系統的驗證方法,包括: 基於所述待測模組進行暫存器傳輸級代碼編譯; 基於所述第一部分、所述待測對象、所述待測模組、所述第一主模組和所述第二從模組進行綜合編譯,獲取已編譯的所述第一部分; 選擇所述模擬驗證設備的使用模式,根據所述使用模式,將已編譯的所述第一部分加入至少一個編譯選項,並調用第一彙編工具對所述驗證系統進行解構,生成用於所述模擬驗證設備的硬體資訊庫,以實現加速器編譯; 對所述第二部分進行行為建模語言的代碼編譯; 運行已編譯的所述第一部分和所述第二部分,獲取驗證結果。
- 如請求項11所述的驗證方法,其中, 所述模擬驗證設備包括Palladium設備; 所述第一部分為硬體側,所述硬體側配置為基於硬體描述語言創建,所述第二部分為軟體側,所述軟體側配置為基於行為建模語言創建。
- 如請求項11所述的驗證方法,其中,基於所述待測模組進行暫存器傳輸級代碼編譯,包括: 使用第二編譯工具編譯所述待測模組的暫存器傳輸級文件列表及對應暫存器傳輸級文件,生成包含所述待測對象的設定格式的待測模組網表,其中,生成的所述待測模組網表配置為在所述模擬驗證設備上運行。
- 如請求項12所述的驗證方法,其中,響應於所述第一部分還包括用於提供時脈信號的時脈驅動源模組,基於所述第一部分、所述待測對象、所述待測模組、所述第一主模組和所述第二從模組進行綜合編譯,獲取已編譯的所述第一部分,包括: 基於所述模擬驗證設備的第三編譯工具對所述第一部分、所述待測對象、所述待測模組、所述第一主模組、所述第二從模組和所述時脈驅動源模組進行綜合編譯,獲取已編譯的所述硬體側。
- 如請求項12所述的驗證方法,其中,選擇所述模擬驗證設備的使用模式,根據所述使用模式,將已編譯的所述第一部分加入至少一個編譯選項,並調用第一彙編工具對所述驗證系統進行解構,生成用於所述模擬驗證設備的硬體資訊庫,包括: 選擇所述Palladium設備的IXCOM模式,根據所述IXCOM模式,將已編譯的所述第一部分加入至少一個編譯選項,並調用所述第一彙編工具對所述驗證系統進行解構,生成所述硬體資訊庫。
- 如請求項11所述的驗證方法,其中,運行已編譯的所述第一部分和所述第二部分,獲取驗證結果,包括: 響應於所述待測模組為第一模組,通過所述後門訪問讀取所述儲存單元的第一數據,以獲取第一參考文件; 響應於所述待測模組為第二模組,通過所述後門訪問讀取所述儲存單元的第二數據,以獲取第二文件,其中,所述第二模組配置為基於所述第一模組進行更新的模組; 將所述第二文件與所述第一參考文件進行對比,獲取所述驗證結果。
- 如請求項16所述的驗證方法,其中,通過所述後門訪問讀取所述儲存單元的第一數據,以獲取第一參考文件,包括: 響應於所述測試用例運行結束,通過所述後門訪問讀取所述儲存單元的所述第一數據,得到自命名的第一目標十六進位格式文件; 基於所述第一目標十六進位格式文件生成標準版本的第二目標十六進位格式文件,獲取所述第一參考文件。
- 如請求項16所述的驗證方法,其中,通過所述後門訪問讀取所述儲存單元的第二數據,以獲取第二文件,包括: 對所述測試用例進行調試,運行調試之後的測試用例,通過所述後門訪問讀取儲存單元的所述第二數據,獲取所述第二文件。
- 一種電子設備,包括: 處理模組和儲存器, 其中,所述儲存器上儲存有計算機程式,所述計算機程式被所述處理模組執行時,實現請求項11至18中任一項所述的驗證方法。
- 一種計算機可讀儲存媒體,其中,所述儲存媒體記憶體儲存有計算機程式,所述計算機程式被處理模組執行時,實現請求項11至18中任一項所述的驗證方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211062729.2A CN117667655A (zh) | 2022-08-31 | 2022-08-31 | 验证系统、验证方法、电子设备以及存储介质 |
CN2022110627292 | 2022-08-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202411872A true TW202411872A (zh) | 2024-03-16 |
TWI837026B TWI837026B (zh) | 2024-03-21 |
Family
ID=90064958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112123008A TWI837026B (zh) | 2022-08-31 | 2023-06-19 | 驗證系統、驗證方法、電子設備以及儲存媒體 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN117667655A (zh) |
TW (1) | TWI837026B (zh) |
WO (1) | WO2024046362A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117892561A (zh) * | 2024-03-14 | 2024-04-16 | 深圳市邦正精密机械有限公司 | 一种用于psa机的贴合压力实时监测评估方法 |
CN117933153B (zh) * | 2024-03-21 | 2024-06-04 | 成都电科星拓科技有限公司 | I3c总线验证系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503855B2 (en) * | 2017-01-23 | 2019-12-10 | Concertal Systems, Inc. | Methods and systems for system design automation (SDA) of mixed signal electronic circuitry including embedded software designs |
US10922462B1 (en) * | 2019-11-22 | 2021-02-16 | SiFive, Inc. | Intellectual property block validation and design integration for integrated circuits |
JP2022049470A (ja) * | 2020-09-16 | 2022-03-29 | キオクシア株式会社 | 論理シミュレーション検証システム、論理シミュレーション検証方法、およびプログラム |
CN112131147B (zh) * | 2020-09-21 | 2022-07-08 | 成都海光微电子技术有限公司 | 一种控制器验证方法、装置、系统、电子设备及存储介质 |
CN113408240B (zh) * | 2021-06-25 | 2023-12-22 | 上海阵量智能科技有限公司 | 芯片验证方法及装置、存储介质 |
CN113505066A (zh) * | 2021-07-09 | 2021-10-15 | 合肥肇观电子科技有限公司 | 用于验证被测试模块的方法以及验证系统 |
CN113688046B (zh) * | 2021-08-26 | 2023-08-25 | 中国科学院上海高等研究院 | 用于处理器仿真验证的大规模用例生成方法 |
CN114139475A (zh) * | 2021-12-07 | 2022-03-04 | 上海西井信息科技有限公司 | 芯片验证方法、系统、设备及存储介质 |
-
2022
- 2022-08-31 CN CN202211062729.2A patent/CN117667655A/zh active Pending
-
2023
- 2023-06-19 TW TW112123008A patent/TWI837026B/zh active
- 2023-08-30 WO PCT/CN2023/115777 patent/WO2024046362A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
TWI837026B (zh) | 2024-03-21 |
WO2024046362A1 (zh) | 2024-03-07 |
CN117667655A (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112580295B (zh) | 多核SoC芯片的自动化验证方法、系统及装置 | |
TWI837026B (zh) | 驗證系統、驗證方法、電子設備以及儲存媒體 | |
US6993469B1 (en) | Method and apparatus for unified simulation | |
US20220292248A1 (en) | Method, system and verifying platform for system on chip verification | |
CN112949233B (zh) | Fpga芯片的自动化开发方法及装置、电子设备 | |
US11675945B2 (en) | Reset crossing and clock crossing interface for integrated circuit generation | |
JP5004566B2 (ja) | 設計を検証するシステム | |
CN115146568A (zh) | 一种基于uvm的芯片验证系统及验证方法 | |
US7212961B2 (en) | Interface for rapid prototyping system | |
US11675959B2 (en) | Point-to-point module connection interface for integrated circuit generation | |
CN113343629A (zh) | 集成电路验证方法、代码生成方法、系统、设备和介质 | |
US10929584B1 (en) | Environmental modification testing for design correctness with formal verification | |
Gao et al. | Software and hardware co-verification technology based on virtual prototyping of RF SOC | |
US10902171B1 (en) | Clock crossing interface for integrated circuit generation | |
US20100153053A1 (en) | Stream Based Stimulus Definition and Delivery via Interworking | |
JP2013020425A (ja) | オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法 | |
US20230289500A1 (en) | Method and system for building hardware images from heterogeneous designs for eletronic systems | |
JP2004021907A (ja) | 性能評価用シミュレーションシステム | |
Kim et al. | Developing a Portable Block Testbench and Reusable SOC Verification Scenarios Using IP-XACT Based Automation. | |
Wronka et al. | Embedded software debug in simulation and emulation environments for interface IP | |
Koivula | Virtual prototype based SoC Co-verification | |
Wicaksana | Lotus-G: The PVT TLM Virtual Platform for Early RUMPS401 Software Development | |
Querol De Porras | Extension and improvement of a PCIe-based FPGA environment for testing HPC architectures | |
CN118052196A (zh) | 基于uvm的芯片验证测试方法、装置及电子设备 | |
Warke | Verification of SD/MMC Controller IP Using UVM |