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