晶片仿真系統及方法
2023-07-24 23:52:31
專利名稱:晶片仿真系統及方法
技術領域:
本發明涉及大規模邏輯電路的晶片仿真領域,特別涉及一種晶片仿真系統及方法。
背景技術:
隨著半導體晶片工藝水平的不斷發展,晶片電路越來越複雜,經常達到百萬門以 上的規模;同時,對晶片質量和上市時間的要求也越來越高。這樣,晶片的功能仿真就顯得 更加重要。在FPGA/ASIC等大規模邏輯電路的晶片功能仿真驗證過程當中,仿真花費的時間 以及仿真平臺搭建的效率是一個關鍵問題。硬體系統邏輯電路模型通常需要與參考模型 (RM,Reference Model)或者其它晶片模型進行數據交換和通信,整個仿真系統瓶頸通常限 制在仿真時間、驗證向量的構建執行上。目前,在大規模邏輯電路功能仿真當中,主要有兩種方法一種是直接基於寄存器 傳輸級(RTL,Register Transfer Level)進行測試環境的搭建,測試環境的構建基於硬體 描述語 目(HDL, Hardware Description Language)進行;例如,總線功能模型(BFM,Bus Function Model)、RM、激勵器和被測試設計功能體 (DUT,Design Under Test) 一樣基於HDL語言進行開發,相互通信比較簡單,基於HDL中的
接口直接通信。另一種方法抽象級別比較高,使用高級語言進行建模,與DUT的通信直接使用可 程式語言接口(PLI,Programming Language Interface)或者直接編程接口(DPI,Direct Programming Interface)進行通信;例如,冊、激勵器使用高級語言進行開發;BFM基於HDL,冊、激勵器與BFM的接口 通過PLI或者DPI進行。但是在實現本發明的過程中,發明人發現現有技術的缺陷在於第一種方法中,測 試向量構造複雜,RM編寫複雜;並且,由於完全基於RTL級別仿真,仿真速度慢,且自動化測 試困難。而第二種方法中,在軟硬體的聯合仿真中解耦性差,由於基於集中式仿真,在大規 模的晶片仿真當中,速度越來越慢,不足以支持不斷增長的測試向量;另外,由於通信問題, 難以支持多晶片聯合仿真,仿真效率很低。
發明內容
本發明實施例提供一種晶片仿真系統及方法,目的在於實現軟硬體的解耦,提高 仿真速度。為達到上述目的,本發明實施例提供一種晶片仿真系統,所述系統包括客戶端,包括被測試設計功能體;客戶端向伺服器端發送請求;在接收到伺服器 端發送的測試向量後,被測試設計功能體根據測試向量完成業務仿真;
伺服器端,包括測試向量庫;伺服器端根據客戶端的請求從測試向量庫中選擇對 應的測試向量,並向客戶端發送。本發明實施例還提供一種晶片仿真方法,所述方法包括客戶端向伺服器端發送 請求;伺服器端根據請求在測試向量庫中選擇對應的測試向量,並向客戶端發送;客戶端 在接收到伺服器端發送的測試向量後,被測試設計功能體根據所述測試向量完成業務仿
直
ο本發明實施例的有益效果在於,通過將被測試設計功能體和測試向量庫分布在客 戶端和伺服器端,可以實現軟硬體系統的解耦,提高仿真速度和仿真效率;並且,測試向量 和參考模型構造簡單,可以很好地支持自動化測試和多晶片仿真。
此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,並不 構成對本發明的限定。在附圖中圖1是本發明實施例的晶片仿真系統的構成示意圖;圖2是本發明實施例的客戶端的構成示意圖;圖3是本發明實施例的客戶端為多個的結構實例圖;圖4是本發明實施例的晶片仿真方法的流程圖。
具體實施例方式為使本發明的目的、技術方案和優點更加清楚明白,下面結合附圖對本發明實施 例作進一步詳細說明。在此,本發明的示意性實施例及其說明用於解釋本發明,但並不作為 對本發明的限定。本發明實施例提供一種晶片仿真系統,如圖1所示,所述系統包括客戶端101和 伺服器端102 ;其中,客戶端101包括被測試設計功能體;客戶端101向伺服器端102發送請求;在接收 到伺服器端102發送的測試向量後,被測試設計功能體根據測試向量完成業務仿真;伺服器端102包括測試向量庫;伺服器端102根據客戶端101的請求從測試向量 庫中選擇對應的測試向量,並向客戶端101發送。例如,客戶端101的請求中可以包括被測試設計功能體的類型,該類型對應一組 測試向量;伺服器端102可根據該類型在測試向量庫中查找到該組測試向量後,發送給客 戶端。但不限於此,客戶端101的請求中還可包括組合查詢條件,伺服器端根據該組合查詢 條件選擇對應的測試向量。以上僅為示意性說明,可根據實際情況確定具體的實施方式。進一步地,伺服器端102還可包括參考模型。並且,在被測試設計功能體根據測試 向量完成業務仿真之後,客戶端101向伺服器端102發送業務仿真的結果;伺服器端102接 收到該結果後,將該結果與參考模型進行比對,實現功能驗證。在本實施例中,測試向量庫中的測試向量是相互關聯的,可以按照配置要求隨機 組合,可以非常方便的進行功能覆蓋率的收集以及完善。而傳統的測試方法中,每個測試向 量是相對獨立的,主要內容是晶片測試功能點的激勵數據,各個測試向量覆蓋的功能點可 能存在重複;因此,影響測試效率以及功能覆蓋率的收集。
由上述實施例可知,通過將被測試設計功能體和測試向量庫分布在客戶端和服務 器端,可以實現軟硬體系統的解耦,提高仿真速度和仿真效率。並且,客戶端和伺服器端是 相互獨立的,可以分別由軟體人員和硬體人員進行獨立開發。具體地,如圖2所示,客戶端101還包括總線功能模型202、適配層203和激勵器 204 ;其中,適配層203根據被測試設計功能體201的請求,通過激勵器204向伺服器端101 發送請求;激勵器204在接收到伺服器端102發送的測試向量後,通過適配層203下發給總 線功能模型202 ;總線功能模型202接收到適配層203下發的測試向量後,將測試向量轉換成晶片 接口時序並下發給被測試設計功能體201 ;被測試設計功能體201根據晶片接口時序進行 業務仿真;以及總線功能模型202接收被測試設計功能體201輸出的結果後,將結果通過適配層 203和激勵器204向伺服器端102發送。在本實施例中,客戶端101可以為多個,每個客戶端101中可以有多個總線功能模 型202和/或適配層203,圖3為本發明實施例中客戶端為多個的結構實例圖。如圖3所示, 伺服器端可包括測試向量庫和參考模型,可採用高級語言、通過軟體系統實現;客戶端可包 括被測試設計功能體、總線功能模型、適配層、激勵器和檢測數據區,可通過硬體系統實現。在本實施例中,進一步地,每個客戶端中的被測試設計功能體為晶片中的一個模 塊。伺服器端統一調度多個客戶端的請求,實現晶片的各模塊單元測試。例如,整個晶片硬體系統可以分成多個子模塊,每個子模塊充當一個客戶端。這 樣,多個客戶端可以分別和伺服器端進行通信,由伺服器端分析各個客戶端的請求,統一進 行調度,再與其它客戶端進行交互。其中,可以使用公平輪詢或者帶優先級權重的調度方 式。而每個客戶端可以屬於網絡上的任何一臺主機或者伺服器。這樣,系統就可以快 速的支持大規格晶片的各模塊的單元測試,快速檢測各個模塊處理是否正確。在本實施例中,進一步地,每個客戶端中的被測試設計功能體為一個晶片;伺服器 端統一調度多個客戶端的請求,實現多晶片的聯合仿真。例如,被測試設計功能體為一個晶片,各個晶片系統可以布局在不同的網絡資源 上(例如,不同主機或者伺服器),通過與伺服器端進行通信,由伺服器端進行統一調度管 理,實現晶片之間的仿真通信。這樣,可以在板級驗證多個晶片的處理方式是否一致,從而 達到單板級別的仿真需求。由此,解決了多晶片仿真系統之間通信繁瑣、多晶片聯合仿真困難的問題,提高了 晶片投片成功的機會。並且,各個晶片系統可以布局在不同的網絡資源上,從而可以利用各 個網絡資源來加快仿真速度,克服了單一網絡資源慢的問題。在本實施例中,進一步地,伺服器端102可以根據網絡的資源分配情況進行監控 和調度,優化網絡的整體運行。具體地,伺服器端實現各個客戶端的通信調度。由於各個客戶端與伺服器端、以及 其它各個客戶端可能需要通信,這樣,伺服器端需要進行調度。可以根據整個網絡的資源分 配情況,進行監控和調度,從而使整個網絡整體運行最優,具體算法可採用帶優先級權重輪詢調度算法。優選地,客戶端101進行一次初始化和配置操作,無須重複進行硬體系統初始化 以及相同表項的配置。在本實施例中,測試用例存在於測試向量庫,與客戶端101的硬體系統是相互獨 立,每次運行通過參數配置從測試向量庫中對測試用例進行選擇執行。由於測試向量和被 測試設計功能體是獨立的,在仿真過程當中,各個客戶端的硬體系統可以一直運行,可以不 隨某一個測試用例執行完畢而停止。這樣,客戶端101中硬體系統的初始化、各種配置操作可以只進行一次,每個測試 用例都可以在當前系統上執行,不用每次執行一個測試用例都需要重新下發配置和初始 化。由此,一旦仿真系統啟動之後,客戶端的硬體系統可以不用停止,只需操作伺服器 端的測試向量庫,即可不斷進行測試。因此,解決了通常仿真過程當中,不同測試向量切換 需要重新啟動仿真環境的問題,從而減少了硬體系統初始化、配置初始化等仿真時間,可以 大量節省仿真時間,提高了仿真效率。特別是在大量測試用例回歸的應用當中,節省大量的 回歸時間,可以提高仿真效率達到2倍以上。在本實施例中,進一步地,總線功能模型202可以通過可程式語言接口或者直接 編程接口擴展系統函數。例如,測試過程當中需要實時進行一些數學運算,可以通過在軟體系統中快速實 現。當仿真環境循環調用此系統函數的時候,作為客戶端可不斷向伺服器端發起運算請求, 伺服器端通過調用軟體實現的運算函數來回應。這樣,可以做到隨仿真時間的進行而實時 響應硬體系統的運算需求。在本實施例中,可以使用C/S或者B/S結構,但不限於此,還可以根據實際情況採 用其他結構。以C/S結構為例,伺服器端可以使用tcl,peal,python,c++/c或者system c等腳 本與建模語言實現,適用於測試向量的構建與軟體建模。客戶端適配層可以使用C++/C實 現。客戶端和伺服器端之間通過socket套接字實現通信,既考慮到解耦性,也考慮到軟體 聯合仿真的實際需求。由上述實施例可知,通過將被測試設計功能體和測試向量庫分布在客戶端和服務 器端,可以實現軟硬體系統的解耦,提高仿真速度和仿真效率;並且,測試向量和參考模型 構造簡單,可以很好地支持自動化測試和多晶片仿真。本發明實施例還提供一種晶片仿真方法,如圖4所示,所述方法包括步驟401,客戶端向伺服器端發送請求;步驟402,伺服器端根據請求在測試向量庫中選擇對應的測試向量,並向客戶端發 送;步驟403,客戶端在接收到伺服器端發送的測試向量後,被測試設計功能體根據測 試向量完成業務仿真。進一步地,如圖4所示,該方法還可包括步驟404,客戶端向伺服器端發送業務仿真的結果;步驟405,在接收到客戶端發送的結果後,伺服器端將結果與參考模型進行比對,實現功能驗證。通過上述方法,可以實現軟硬體系統的解耦,提高仿真速度和仿真效率。並且,客 戶端和伺服器端是相互獨立的,可以分別由軟體人員和硬體人員進行獨立開發。在本實施例中,在步驟401實施時,具體可以包括客戶端的適配層根據被測試設 計功能體的請求,通過激勵器向伺服器端發送請求;在步驟403實施時,具體可以包括客戶端的激勵器在接收到伺服器端發送的測 試向量後,通過適配層下發給所述總線功能模型;總線功能模型將測試向量轉換成晶片接口時序並下發給被測試設計功能體;被測 試設計功能體根據晶片接口時序進行業務仿真。進一步地,總線功能模型可以不斷的監聽是否有指令從適配層下發,如果有,則把 測試向量指令翻譯成晶片接口時序關係,激發晶片的接口時序;如果沒有,則繼續監聽。在步驟404實施時,具體可以包括總線功能模型接收被測試設計功能體輸出的 結果,將結果通過適配層和激勵器向伺服器端發送。在本實施例中,進一步地,客戶端為多個,每個客戶端中的被測試設計功能體為芯 片中的一個模塊;伺服器端統一調度多個客戶端的請求,實現晶片的各模塊單元測試。在本實施例中,進一步地,客戶端為多個,每個客戶端中的被測試設計功能體為一 個晶片;伺服器端統一調度多個客戶端的請求,實現多晶片的聯合仿真。在本實施例中,進一步地,伺服器端根據網絡的資源分配情況進行監控和調度,優 化網絡的整體運行。在本實施例中,進一步地,客戶端進行一次初始化和配置操作。在本實施例中,進一步地,總線功能模型通過可程式語言接口或者直接編程接口 擴展系統函數。由上述實施例可知,通過將被測試設計功能體和測試向量庫分布在客戶端和服務 器端,可以實現軟硬體系統的解耦,提高仿真速度和仿真效率;並且,測試向量和參考模型 構造簡單,可以很好地支持自動化測試和多晶片仿真。本領域普通技術人員還可以進一步意識到,結合本文中所公開的實施例描述的各 示例的單元及算法步驟,能夠以電子硬體、計算機軟體或者二者的結合來實現,為了清楚地 說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及 步驟。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束 條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這 種實現不應認為超出本發明的範圍。結合本文中所公開的實施例描述的方法或算法的步驟可以用硬體、處理器執行的 軟體模塊,或者二者的結合來實施。軟體模塊可以置於隨機存儲器(RAM)、內存、只讀存儲器 (ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬碟、可移動磁碟、CD-ROM、或技術領域 內所公知的任意其它形式的存儲介質中。以上所述的具體實施方式
,對本發明的目的、技術方案和有益效果進行了進一步 詳細說明,所應理解的是,以上所述僅為本發明的具體實施方式
而已,並不用於限定本發明 的保護範圍,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含 在本發明的保護範圍之內。
權利要求
1.一種晶片仿真系統,其特徵在於,所述系統包括客戶端,包括被測試設計功能體;所述客戶端向伺服器端發送請求;在接收到所述服 務器端發送的測試向量後,所述被測試設計功能體根據所述測試向量完成業務仿真;伺服器端,包括測試向量庫;所述伺服器端根據所述客戶端的請求從所述測試向量庫 中選擇對應的測試向量,並向所述客戶端發送。
2.根據權利要求1所述的系統,其特徵在於,所述伺服器端還包括參考模型; 所述客戶端向所述伺服器端發送業務仿真的結果;所述伺服器端接收到所述結果後,將所述結果與所述參考模型進行比對,實現功能驗證。
3.根據權利要求2所述的系統,其特徵在於,所述客戶端具體還包括總線功能模型、 適配層和激勵器;所述適配層根據所述被測試設計功能體的請求,通過所述激勵器向所述伺服器端發送 請求;所述激勵器在接收到所述伺服器端發送的測試向量後,通過所述適配層下發給所述 總線功能模型;所述總線功能模型接收到所述適配層下發的測試向量後,將所述測試向量轉換成晶片 接口時序並下發給所述被測試設計功能體;所述被測試設計功能體根據所述晶片接口時序 進行業務仿真;以及所述總線功能模型接收所述被測試設計功能體輸出的結果後,將所述結果通過所述適 配層和激勵器向所述伺服器端發送。
4.根據權利要求2或3所述的系統,其特徵在於,所述客戶端為多個,每個客戶端中的 所述被測試設計功能體為晶片中的一個模塊;所述伺服器端統一調度所述多個客戶端的請求,實現晶片的各模塊單元測試。
5.根據權利要求2或3所述的系統,其特徵在於,所述客戶端為多個,每個客戶端中的 所述被測試設計功能體為一個晶片;所述伺服器端統一調度所述多個客戶端的請求,實現多晶片的聯合仿真。
6.一種晶片仿真方法,其特徵在於,所述方法包括 客戶端向伺服器端發送請求;所述伺服器端根據所述請求在測試向量庫中選擇對應的測試向量,並向所述客戶端發送;所述客戶端在接收到所述伺服器端發送的測試向量後,被測試設計功能體根據所述測 試向量完成業務仿真。
7.根據權利要求6所述的方法,其特徵在於,在被測試設計功能體根據所述測試向量 完成業務仿真之後,所述方法還包括所述客戶端向所述伺服器端發送業務仿真的結果;在接收到所述客戶端發送的結果後,所述伺服器端將所述結果與參考模型進行比對, 實現功能驗證。
8.根據權利要求7所述的方法,其特徵在於,所述客戶端向伺服器端發送請求,具體包 括所述客戶端的適配層根據所述被測試設計功能體的請求,通過激勵器向所述伺服器端 發送請求;所述客戶端在接收到所述伺服器端發送的測試向量後,被測試設計功能體根據所述測 試向量完成業務仿真,具體包括所述客戶端的激勵器在接收到所述伺服器端發送的測試 向量後,通過所述適配層下發給所述總線功能模型;所述總線功能模型將所述測試向量轉 換成晶片接口時序並下發給所述被測試設計功能體;所述被測試設計功能體根據所述晶片 接口時序進行業務仿真;所述客戶端向所述伺服器端發送業務仿真的結果,具體包括所述總線功能模型接收 所述被測試設計功能體輸出的結果,將所述結果通過所述適配層和激勵器向所述伺服器端 發送。
9.根據權利要求7所述的方法,其特徵在於,所述客戶端為多個,每個客戶端中的所 述被測試設計功能體為晶片中的一個模塊;則所述伺服器端統一調度所述多個客戶端的請 求,實現晶片的各模塊單元測試;或者每個客戶端中的所述被測試設計功能體為一個晶片;則所述伺服器端統一調度所 述多個客戶端的請求,實現多晶片的聯合仿真。
10.根據權利要求8所述的方法,其特徵在於,所述總線功能模型通過可程式語言接口 或者直接編程接口擴展系統函數。
全文摘要
本發明實施例提供一種晶片仿真系統及方法,該系統包括客戶端,包括被測試設計功能體;客戶端向伺服器端發送請求;在接收到伺服器端發送的測試向量後,被測試設計功能體根據測試向量完成業務仿真;伺服器端,包括測試向量庫;伺服器端根據客戶端的請求從測試向量庫中選擇對應的測試向量,並向客戶端發送。通過本發明實施例,可以實現軟硬體系統的解耦,提高仿真速度和仿真效率;並且,測試向量和參考模型構造簡單,可以很好地支持自動化測試和多晶片仿真。
文檔編號G06F11/26GK102141951SQ201010560259
公開日2011年8月3日 申請日期2010年11月25日 優先權日2010年11月25日
發明者李廣 申請人:華為技術有限公司