專利名稱:一種片上系統(tǒng)芯片驗證的方法和裝置的制作方法
技術領域:
本發(fā)明涉及片上系統(tǒng)(System on a Chip: SoC )芯片領域,特別涉及一種 SoC芯片驗證的方法和裝置。
背景技術:
.
隨著SoC芯片設計日趨復雜,驗證成為SoC芯片設計過程中關鍵的環(huán)節(jié)。 一個設計被綜合前,首先要進行邏輯功能驗證,以確保模塊或芯片的功能正確 性。通常的功能驗證主要采用自底向上的驗證策略,可分為模塊級驗證和系統(tǒng) 級驗證兩個階段。
傳統(tǒng)驗證方法大多是在信號級的接口上直接與待驗證SoC芯片進行通信, 即用激勵直接驅(qū)動SoC芯片的引腳,通過檢查接口信號的值和變化來達到驗證 設計功能的目的。這種方法的抽象層次較低,驗證平臺的開發(fā)與SoC芯片的接 口協(xié)議緊密相關,使得驗證平臺的重用性較差。
參考-險i正方法(Reference Verification Methodology, RVM) A險i正方法手冊 (Verification Methodology Manual, VMM )的出現(xiàn)提高了 SoC芯片驗證平臺 的重用性。
RVM/VMM將SoC芯片驗證平臺的抽象層次提高到事務級,而且構建層 次化的結構,層與層之間具有一定的獨立性,改變底層并不會影響上層,從而 做到一個驗證平臺可以驗證多個不同的SoC芯片。
所謂事務(Transaction)是指設計對象與事務處理器(Transactor)之間通過接 口所做的一次數(shù)據(jù)傳輸。從硬件的角度來看,事務可看成作用在一個特定接口 上的一組信號的集合單元。事務具有3個要素起始時間、終止時間,以及所 有與這個事務相關的信息。RVM/VMM能夠讓用戶除了可以在信號/引腳級上進行驗證,還可以在事 務級上進行驗證,從而提高了設計生產(chǎn)率。
RVM/VMM能把驗證的步驟分層進行,將驗證工作提高到更高的抽象層 次,即事務層。層次化的-險證方法使得用戶只需關心SoC芯片的輸入/輸出接 口,而不必關心SoC芯片內(nèi)部的具體實現(xiàn)。用戶可以l^建出具有隨機測試、自 動檢錯核對、功能覆蓋等功能的層次化驗證平臺。這類驗證平臺包含很多參考 模塊,每個模型可完成不同的功能。
如圖1所示,現(xiàn)有技術SoC芯片驗證系統(tǒng)的結構示意圖中,基于 RVM/VMM的驗證平臺分成5層,每層完成獨立的功能,層與層通過接口互相 連接。
信號層提供驗證平臺與SoC芯片的信號級連接。驗證平臺通過信號層將上 層產(chǎn)生的激勵驅(qū)動到SoC芯片中。具體實現(xiàn)時,需要定義驗證平臺與SoC芯 片連接的虛端口,當SoC芯片的接口改變時,只需要修改驗證平臺虛端口中的 信號,上層模塊不需要修改,方便整個驗證平臺的重用。
命令層將信號層的信號抽象為事務,給高層提供SoC芯片的接口與事務的 轉換。命令層主要包括驅(qū)動器和監(jiān)視器,與上層模塊通過事務級通道連接,與 下層模塊通過虛端口連接。驅(qū)動器完成對SoC芯片激勵的驅(qū)動。監(jiān)視器檢測 SoC芯片的輸出,將輸出反饋給上層模塊。
功能層模擬SoC芯片的基本行為,將SoC芯片的行為抽象為更高一級的 事務。功能層中包括兩個事務處理器和自動比較模塊。其中一個事務處理器根 據(jù)SoC芯片所遵循的協(xié)議將上層產(chǎn)生的事務進行處理,經(jīng)過事務處理器處理的 事務通過事務級通道傳給下層。另一個事務處理器將SoC芯片處理之后的數(shù)據(jù) 傳輸給自動比較模塊。自動比較模塊用于對比事務經(jīng)過SoC芯片處理之后是否 符合協(xié)議的要求,通常用于檢查SoC芯片傳輸數(shù)據(jù)的正確性。
激勵產(chǎn)生層用于產(chǎn)生對SoC芯片的激勵事務。這一層包括產(chǎn)生器,用于產(chǎn) 生一系列的事務對象,通過事務級通道傳輸給下層。RVM/VMM支持兩種產(chǎn)生器原子(Atomic)產(chǎn)生器,用于產(chǎn)生一組相似的事務對象;情景(Scenario ) 產(chǎn)生器,用于產(chǎn)生順序可控制的事務對象。
測試層用于對SoC芯片的邏輯功能進行驗證。這一層主要是用戶為了驗證 SoC芯片的邏輯功能而編寫的不同測試例,在測試例中可以對各個模塊的限制 條件進行修改。通過對不同測試例運行結果的統(tǒng)計,可以查看SoC芯片的功能 覆蓋率,只有功能覆蓋率達到一定要求,才能夠認為該SoC芯片通過驗證。
由于目前的SoC芯片內(nèi)部十分復雜,并且可以完成多種功能,所以在進行 檢測時,只能選擇一部分功能進行驗證。驗證結束后,選擇另一部分功能進行 驗證。
由于進行驗證時,將整個驗證系統(tǒng)進行整體編寫,如果想要對該SoC芯片 的其他功能進行驗證,必須根據(jù)需要驗證的功能重新編寫測試例,并對驗證系 統(tǒng)內(nèi)每一層的模塊進行重新編譯,而每次編譯都需要花費大量時間。
綜上所述,現(xiàn)有技術中對同一個SoC芯片不同功能進行一驗證時,測試系統(tǒng)
構建復雜,需要較長時間,重用性較差,維護困難,并且每次驗證都需要重新編 譯,增加了驗證的難度。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種SoC芯片驗證的方法和裝置,用以解決現(xiàn)有技術中 存在的對同一個SoC芯片不同功能進行驗證時,每次驗證都需要重新編譯,增 加了隨機向量產(chǎn)生和控制的難度的問題。
本發(fā)明實施例提供一種SoC芯片驗證的方法和裝置,還進一步解決了測試 系統(tǒng)構建復雜,構建時間長,重用性較差,維護困難的問題。
本發(fā)明實施例提供的一種片上系統(tǒng)SoC芯片驗證的方法,設定SoC芯片 的配置文件,所述配置文件包括SoC芯片的基本信息和SoC芯片中模塊的約 束條件,該方法包括
根據(jù)收到的指令,確定需要驗證的所述SoC芯片的功能所涉及的模塊;根據(jù)所述基本信息、確定的所述模塊的所述約束條件以及所述指令中的模
塊功能數(shù)據(jù),生成隨機測試向量;
才艮據(jù)所述隨機測試向量,對所述SoC芯片進行-險證。
本發(fā)明實施例提供的一種SoC芯片驗證的裝置包括
配置模塊,用于保存SoC芯片的配置文件,所述配置文件包括SoC芯片 的基本信息和SoC芯片中模塊的約束條件;
配置調(diào)度模塊,用于根據(jù)收到的指令,確定需要驗證的所述SoC芯片的功 能所涉及的模塊,將所述配置模塊保存的所述基本信息以及確定的模塊的約束 條件發(fā)送給隨機激勵產(chǎn)生模塊;
隨機激勵產(chǎn)生模塊,用于根據(jù)所述基本信息、所述約束條件以及所述指令 中的模塊功能數(shù)據(jù),生成隨機測試向量;
驗證模塊,用于根據(jù)所述隨機測試向量,對所述SoC芯片進行驗證。
本發(fā)明實施例設定SoC芯片的配置文件,所述配置文件包括SoC芯片的 基本信息和SoC芯片中模塊的約束條件;根據(jù)收到的指令,確定需要驗證的所 述SoC芯片的功能所涉及的模塊;根據(jù)所述基本信息、確定的所述模塊的所述 約束條件以及所述指令中的模塊功能數(shù)據(jù),生成隨機測試向量;根據(jù)所述隨機 測試向量,對所述SoC芯片進行驗證,從而減少構建驗證系統(tǒng)的復雜度和維護 難度,增強驗證部件的重用性,降低驗證難度,節(jié)省時間。
圖1為現(xiàn)有技術SoC芯片驗證系統(tǒng)的結構示意圖2為本發(fā)明實施例SoC芯片驗證的方法流程示意圖3A為本發(fā)明實施例SoC芯片驗證的第一種裝置結構示意圖3B為本發(fā)明實施例SoC芯片驗證的第二種裝置結構示意圖4為本發(fā)明實施例隨機激勵產(chǎn)生模塊的功能流程示意圖5A為本發(fā)明實施例對多個芯片進行驗證時的第一比較模塊的結構示意圖;圖5B為本發(fā)明實施例對單個芯片進行驗證時的第一比較模塊的結構示意圖;圖6A為本發(fā)明實施例SoC芯片驗證的第三種裝置結構示意圖; 圖6B為本發(fā)明實施例SoC芯片驗證的第四種裝置結構示意圖; 圖7為本發(fā)明實施例串行外部設備接口 ( serial peripheral interface: SPI) 芯片驗證的結構示意圖。
具體實施方式
本發(fā)明實施例將待驗證的SoC芯片按照模塊進行劃分,設定SoC芯片的 配置文件,所述配置文件包括SoC芯片的基本信息和SoC芯片中模塊的約束 條件,在指令中加入需要驗證的SoC芯片的功能所涉及的模塊的模塊功能數(shù) 據(jù),根據(jù)基本信息、約束條件以及模塊功能數(shù)據(jù),生成隨機測試向量,對SoC 芯片進行驗證,在下一次測試該芯片的其他功能時,只需要在指令中加入需要 驗證的SoC芯片的功能所涉及的模塊的模塊功能數(shù)據(jù)即可,不需要對整個測試 系統(tǒng)進行重新編譯,從而減小驗證SoC芯片的復雜度和驗證的難度,節(jié)省了驗 證SoC芯片的時間。其中,SoC芯片的基本信息包括但不限于下列信息中的一種或幾種 地址空間分配,模塊名稱,寄存器數(shù)量及讀寫特性等等。 模塊的約束條件是對模塊隨機化過程提供約束,使得隨機產(chǎn)生的結果在合 法且感興趣的范圍內(nèi)。對于有多個模式的SoC芯片來說,子模式之間互相約束, 它們的組合必須合法,約束條件把模式組合約束在合法的范圍內(nèi),這樣可以使 用簡單指令來產(chǎn)生復雜但合法的模式組合。比如模塊1有100種組合subl—0, subl—1, subl—2, subl—3,…subl—99; 模塊2有50種組合sub2—0, sub2—1, sub2—2, sub2—3,…sub2—49;ii這樣一共有100 x 50=5000種可能的組合,但并不是所有組合都是有效的. 約束條件當模塊2處于sub2一l模式時,模塊1只能處于subl—2或 sub1—3。這種約束是固定的,每次隨機化時都需要滿足約束條件,因為設定了約束 條件,所以編寫的指令中可以不必考慮這種約束,使得編寫過程得到簡化。下面結合說明書附圖對本發(fā)明實施例作進一步詳細描述。如圖2所示,本發(fā)明實施例SoC芯片-險證的方法包括下列步驟 步驟200、設定SoC芯片的配置文件。其中,該配置文件包括SoC芯片的基本信息和SoC芯片中模塊的約束條件。在具體實施過程中,可以設定SoC芯片中每個模塊的約束條件,也可以根 據(jù)需要設定部分模塊的約束條件。步驟201、根據(jù)收到的指令,確定需要驗證的該SoC芯片的功能所涉及的 模塊。其中,如果收到的指令為自定義類匯編語言或類C語言指令文件,比如 命令(command, CMD )文件,則步驟201之前還可以進一步包括步驟a201、讀取收到的指令文件,并將讀取的數(shù)據(jù)進行轉換,形成二進制 指令文件。由于指令文件可以通過多種編程語言編寫,所以需要對指令文件進行轉 換,將不同的編程語言轉換成統(tǒng)一的格式。其中,步驟a201之后,步驟201之前還可以進一步包括讀取所述二進制指令文件,對讀取的指令進行譯碼。進一步的,如果在處理過程中有中斷信號產(chǎn)生,則記錄程序指針,停止處 理二進制指令文件,并跳轉到中斷服務程序進行處理,在處理結束后,返回記 錄的程序指針處繼續(xù)對所述二進制指令文件進行處理。如果譯碼后的數(shù)據(jù)包括內(nèi)部處理指令,則根據(jù)內(nèi)部處理指令進行處理,并在處理結束后,繼續(xù)讀取二進制指令文件。
內(nèi)部處理指令包括但不限于下列指令中的 一種或幾種
空閑指令、記錄指令、計算指令、跳轉指令、I/O操作指令,延時控制等
如果譯碼后的數(shù)據(jù)包括驗證指令(即隨機配置指令和隨機傳輸指令),則 執(zhí)行步驟202。
步驟202、根據(jù)設定的SoC芯片的基本信息、確定的模塊對應的約束條件 以及指令中的模塊功能數(shù)據(jù),生成隨機測試向量。
步驟203、根據(jù)生成的隨機測試向量,對該SoC芯片進行驗證。
其中,如果需要驗證的SoC芯片的功能涉及的數(shù)據(jù)需要根據(jù)算法進行運算 轉換,則步驟203還可以進一步包括
模擬需要驗證的SoC芯片的功能所涉及的模塊,根據(jù)生成的隨機測試向 量,得到預估數(shù)據(jù)。
將生成的隨機測試向量發(fā)送給SoC芯片,得到實際數(shù)據(jù)。
將預估數(shù)據(jù)和實際數(shù)據(jù)轉換成設定格式的數(shù)據(jù),進行比較,如果比較結果 相同,則-驗"i正通過;否則, -瞼i正失敗。
進一步的,配置文件還包括SoC芯片中的模塊的寄存器映像數(shù)據(jù),則根據(jù) 該寄存器映像數(shù)據(jù),模擬對應的模塊。
由于需要根據(jù)實際的SoC芯片中的模塊的寄存器映像數(shù)據(jù)模擬對應的模 塊,現(xiàn)有技術中需要直接從SoC芯片中獲得模塊的寄存器映像數(shù)據(jù),也就是說 每次模擬時,都需要與SoC芯片進行交互。而與SoC芯片是通過系統(tǒng)總線進 行傳輸,這樣無疑就增加了系統(tǒng)總線的壓力,所以在配置文件中加入模塊的寄 存器映像數(shù)據(jù),可以減小與SoC芯片交互的次數(shù),減輕系統(tǒng)總線的壓力。
其中,如果需要驗證的SoC芯片的功能涉及的數(shù)據(jù)不需要根據(jù)算法進行運 算轉換,則步驟203還可以進一步包括
將隨機測試向量發(fā)送給SoC芯片;
13將該隨機測試向量和該SoC芯片輸出的數(shù)據(jù)轉換成特定格式的數(shù)據(jù),進行 比較,如果比較結果相同,則驗證通過;否則,驗證失敗。
本實施例還可以對多個SoC芯片進行順序驗證,驗證的方法與單個SoC 芯片驗證的方法類似,不再贅述。
如圖3A所示,本發(fā)明實施例SoC芯片驗證的第一種裝置包括配置模塊 10、配置調(diào)度模塊20、隨機激勵產(chǎn)生模塊30和驗證模塊40。
配置模塊IO,與配置調(diào)度模塊20連接,用于保存SoC芯片的配置文件。
其中,該配置文件包括SoC芯片的基本信息和SoC芯片中模塊的約束條 件。
' 配置調(diào)度模塊20,與配置模塊10和隨機激勵產(chǎn)生模塊30連接,用于根據(jù) 收到的指令,確定需要驗證的SoC芯片的功能所涉及的模塊,將配置模塊10 保存的基本信息以及確定的模塊的約束條件發(fā)送給隨機激勵產(chǎn)生模塊30 。
隨機激勵產(chǎn)生模塊30,與配置調(diào)度模塊20和驗證模塊40連接,用于根據(jù) 指令中的模塊功能數(shù)據(jù)、來自配置調(diào)度模塊20的基本信息以及約束條件,生 成隨機測試向量。
其中,隨機激勵產(chǎn)生模塊30還可以進一步包括接收模塊300和生成模 塊310。
接收模塊300,用于接收配置調(diào)度模塊20發(fā)送的基本信息和約束條件。
生成模塊310,用于根據(jù)指令中的模塊功能數(shù)據(jù)、接收模塊300收到來自 配置調(diào)度模塊20的基本信息以及約束條件,生成隨機測試向量。
驗證模塊40,與隨機激勵產(chǎn)生模塊30連接,用于根據(jù)隨機激勵產(chǎn)生模塊 30生成的隨機測試向量,對SoC芯片進行驗證。
其中,如果收到的指令為自定義類匯編語言或類C語言指令文件,則本發(fā) 明實施例SoC芯片驗證的第一種裝置還可以進一步包括指令解釋模塊50。
指令解釋模塊50,用于讀取收到的指令文件,并將讀取的數(shù)據(jù)進行轉換, 形成二進制指令文件。在具體實現(xiàn)過程中,如果有其他內(nèi)容需要添加,可以編寫出另一個指令文
件發(fā)送給指令解釋模塊50,也可以在上一個指令文件的最后進行添加,而指令 解釋模塊50可以實時的讀取指令文件,或周期讀取指令文件,或給指令解孝奪 模塊50—個中斷信號,提示讀取指令文件。
由于指令文件可以通過多種編程語言編寫,所以需要對指令文件進行轉 換,將不同的編程語言轉換成統(tǒng)一的格式。
則隨機激勵產(chǎn)生模塊30還可以進一步包括第一處理模塊320。 第一處理模塊320,用于讀取指令解釋模塊50生成的二進制指令文件, 對讀取的二進制指令文件進行譯碼。
在具體實施過程中,配置調(diào)度模塊20可以從隨機激勵產(chǎn)生模塊30獲取譯 碼后的二進制指令文件,也可以從指令解釋模塊50中獲得二進制指令文件, 并進行譯碼。
具體的,如果配置調(diào)度模塊20從隨機激勵產(chǎn)生模塊30獲取譯碼后的二進 制指令文件,則隨機激勵產(chǎn)生模塊30還可以進一步包括第一發(fā)送模塊330。
第一發(fā)送模塊330,用于將第一處理模塊320譯碼后的指令發(fā)送給配置調(diào) 度模塊20。
則配置調(diào)度模塊20還可以進一步包括確定模塊200和第 一發(fā)送模塊210。 第一確定模塊200,用于根據(jù)譯碼后的二進制指令文件,確定需要驗證的
SoC芯片的功能所涉及的模塊。
第二發(fā)送模塊210,用于將配置模塊10保存的第一確定模塊200確定的模
塊的配置數(shù)據(jù),發(fā)送給隨機激勵產(chǎn)生模塊30。
如果配置調(diào)度模塊20從指令解釋模塊50中獲得二進制指令文件,并進行
譯碼,則具體參見圖3B。
其中,隨機激勵產(chǎn)生模塊30還可以進一步包括中斷模塊340。
中斷模塊340,用于如果在第一處理模塊320處理過程中有中斷信號產(chǎn)生,
則通知第 一處理模塊320停止處理二進制指令文件,并跳轉到中斷服務程序進
1行處理,在處理結束后,通知第一處理沖莫塊320繼續(xù)處理二進制指令文件。
則第一處理模塊320還可以進一步包括第一指針模塊3200和第二指針 模塊3210。
第一指針模塊3200,用于在收到來自中斷模塊340的停止處理二進制指令 文件的通知后,記錄當前的程序指針,停止處理二進制指令文件。
第二指針模塊3210,用于在收到來自中斷模塊340的繼續(xù)處理二進制指令 文件的通知后,返回第一指針模塊3200記錄的程序指針處繼續(xù)對二進制指令 文件進行處理。
在具體實施過程中,隨機激勵產(chǎn)生模塊30根據(jù)譯碼后的數(shù)據(jù)包括驗證指 令'(即隨機配置指令和隨機傳輸指令),生成生成隨機測試向量,根據(jù)需要還 可以先發(fā)送內(nèi)部處理指令,則隨機激勵產(chǎn)生模塊30還包括第二處理模塊350。
第二處理模塊350,用于如果第一處理模塊320譯碼后的數(shù)據(jù)包括內(nèi)部處 理指令,則根據(jù)內(nèi)部處理指令進行處理,并在處理結束后,通知第一處理模塊 320繼續(xù)讀取二進制指令文件。
內(nèi)部處理指令包括但不限于下列指令中的一種或幾種
空閑指令、記錄指令、計算指令、跳轉指令、I/O操作指令,延時控制等等。
其中,如果需要驗證的SoC芯片的功能涉及的數(shù)據(jù)需要根據(jù)算法進行運算 轉換,則驗證模塊40還可以進一步包括第一參考模塊400、第一總線驅(qū)動模 塊410、第一監(jiān)視模塊420和第一比較模塊430。
第一參考模塊400,用于模擬需要驗證的SoC芯片的功能所涉及的模塊, 根據(jù)隨機激勵產(chǎn)生模塊30生成的隨機測試向量,得到預估數(shù)據(jù),將該預估數(shù) 據(jù)轉換成設定格式的數(shù)據(jù),發(fā)送給第一比較模塊430。
第一總線驅(qū)動模塊410,用于根據(jù)SoC芯片遵循的協(xié)議,將隨機激勵產(chǎn)生 模塊30生成的隨機測試向量進行轉換后發(fā)送給SoC芯片。
第一監(jiān)視模塊420,用于抓取SoC芯片生成的實際數(shù)據(jù),將實際數(shù)據(jù)轉換成設定格式的數(shù)據(jù),發(fā)送給第一比較模塊。
在本實施例中,如果待驗證的SoC芯片的數(shù)據(jù)只能從系統(tǒng)總線(比如AHB ) 接口輸出,則第一監(jiān)視模塊420為總線監(jiān)視模塊,通過系統(tǒng)總線與SoC芯片連 接,具體功能與第一監(jiān)視模塊420相同,不再贅述。
如果驗證一個SoC芯片, 一般會有一個第一監(jiān)視模塊420, —個總線監(jiān)視 模塊。
第一比較模塊430,用于對轉換后的預估數(shù)據(jù)和實際數(shù)據(jù)進行比較,如果 比較結果相同,則驗證通過;否則,驗證失敗。'
比如從第一參考模塊400來的數(shù)據(jù)id=0, op=READ, data=0xl2345678;
從第一監(jiān)視模塊420來的數(shù)據(jù)id=0, op=READ, data=0xl2345679;由于 兩個數(shù)據(jù)不同,從而判斷驗證的SoC芯片異常。
進一步的,配置文件還包括SoC芯片中的模塊的寄存器映像數(shù)據(jù),則第一 參考模塊400還可以進一步包括第一模塊4000和第二模塊4010。
第一模塊4000,用于從配置模塊10中查找需要模擬的模塊對應的寄存器 映像數(shù)據(jù)。
第二模塊4010,用于根據(jù)第一模塊4000查找到的寄存器映像數(shù)據(jù),模擬 對應的纟莫塊。
由于需要根據(jù)實際的SoC芯片中的模塊的寄存器映像數(shù)據(jù)模擬對應的模 塊,現(xiàn)有技術中需要參考模塊400直接從SoC芯片中獲得模塊的寄存器映像數(shù) 據(jù),也就是說每次模擬時,參考模塊400都需要與SoC芯片進行交互。而參考 模塊400與SoC芯片是通過系統(tǒng)總線進行傳輸,這樣無疑就增加了系統(tǒng)總線的 壓力。
保存寄存器映像數(shù)據(jù),使得參考模塊400可以不必再通過系統(tǒng)總線進行讀 取.可以減小參考模塊400與SoC芯片交互的次數(shù),減輕系統(tǒng)總線的壓力,在 寄存器的數(shù)據(jù)發(fā)生變化時還可以發(fā)出告知信息,以便參考模塊400作出相應修 改。
17其中,如果需要驗證的SoC芯片的功能涉及的數(shù)據(jù)不需要根據(jù)算法進行運 算轉換,則驗證模塊40還可以進一步包括第二參考模塊440、第二總線驅(qū)動 模塊450、第二監(jiān)視模塊460和第二比較模塊470。
第二參考模塊440,用于將隨機激勵產(chǎn)生模塊30產(chǎn)生的隨機測試向量轉換 成特定格式的數(shù)據(jù),發(fā)送給第二比較;漠塊470。
第二總線驅(qū)動模塊450,用于根據(jù)SoC芯片所遵循的協(xié)議,將隨機測試向 量轉進行轉換后發(fā)送給該SoC芯片。
第二監(jiān)視模塊460,用于抓取SoC芯片生成的實際數(shù)據(jù),將實際數(shù)據(jù)轉換 成設定格式的數(shù)據(jù),發(fā)送給第二比較模塊460。
■在本實施例中,如果待驗證的SoC芯片的數(shù)據(jù)只能從系統(tǒng)總線接口輸出, 則第二監(jiān)視模塊460為總線監(jiān)視模塊,通過系統(tǒng)總線與SoC芯片連接,具體功 能與第二監(jiān)^L模塊460相同,不再贅述。
如果驗證一個SoC芯片, 一般會有一個第二監(jiān)視模塊460, —個總線監(jiān)視 模塊。
第二比較模塊470,用于對第二參考模塊440和第二監(jiān)視模塊460發(fā)送的 轉換后的數(shù)據(jù),進行比較,如果比較結果相同,則驗證通過;否則,驗證失敗。
本實施例還可以對多個SoC芯片進行順序驗證,驗證的方法與單個SoC 芯片驗證的方法類似,不再贅述。
圖3B與圖3A的區(qū)別在于配置調(diào)度模塊20不是從隨機激勵產(chǎn)生模塊30 獲取譯碼后的二進制指令文件,而是從指令解釋模塊50中獲得二進制指令文 件進行譯碼,則配置調(diào)度模塊20還可以進一步包括譯碼模塊220、第二確定 模塊230和第三發(fā)送模塊240。
譯碼模塊220,用于讀取指令解釋模塊50形成的二進制指令文件,對讀取 的二進制指令文件進行譯碼。
第二確定模塊230,用于根據(jù)譯碼模塊220譯碼后的指令,確定需要驗證 的SoC芯片的功能所涉及的模塊。
18第三發(fā)送模塊240,用于將配置模塊10保存的第二確定模塊230確定的模
塊的配置數(shù)據(jù),發(fā)送給隨機激勵產(chǎn)生模塊30。
如圖4所示,本發(fā)明實施例隨機激勵產(chǎn)生模塊的功能流程示意圖包括 步驟400、隨機激勵產(chǎn)生模塊讀取指令解釋模塊轉換后的二進制指令文件。 步驟401、隨機激勵產(chǎn)生模塊對讀取的指令文件進行譯碼,查看譯碼后的
數(shù)據(jù)是否有結束指令,如果有,則結束數(shù)據(jù)處理,跳出本流程;否則,執(zhí)行步
驟402。
步驟402、隨機激勵產(chǎn)生模塊查看譯碼后的數(shù)據(jù)是否有內(nèi)部處理指令,如 果有,則執(zhí)行步驟403;否則執(zhí)行步驟404。
步驟403、隨機激勵產(chǎn)生模塊根據(jù)內(nèi)部處理指令進行處理,并在處理結束 后,返回步驟400。
步驟404、隨機激勵產(chǎn)生模塊將譯碼后的指令文件發(fā)送給配置調(diào)度模塊, 并接收來自配置調(diào)度模塊的基本信息以及約束條件。
步驟405、隨機激勵產(chǎn)生模塊根據(jù)譯碼后的模塊功能數(shù)據(jù)、來自配置調(diào)度 模塊的基本信息以及約束條件,生成隨機測試向量,將該隨機測試向量分別發(fā) 送給總線驅(qū)動模塊和參考模塊,并返回步驟400。
其中,如果步驟401 步驟404之間有中斷信號產(chǎn)生,則隨機激勵產(chǎn)生模 塊記錄程序指針,停止當前正在處理的數(shù)據(jù),并跳轉到中斷服務程序進行處理, 在處理結束后,返回記錄的程序指針處繼續(xù)處理對應的數(shù)據(jù)。
如圖5A所示,本發(fā)明實施例對多個芯片進行驗證時的第一比較模塊的結 構示意圖中,第一比較模塊有兩個輸入端口從參考模塊來的數(shù)據(jù)輸入給比較 模塊輸入1 (主設備)端口和從第一監(jiān)視模塊來的數(shù)據(jù)輸入給比較模塊輸入2 (從設備)端口 。
在具體實施過程中,也可以交換輸入的端口。
如果需要驗證多個SoC芯片,則第一比較模塊中分別為每一個SoC芯 片對應一個比較器。由于數(shù)據(jù)存放在不同的比較器,在SoC芯片存在錯誤的情況下,很容易進行定位,而呈現(xiàn)給外界的界面都是統(tǒng)一的,而且一個模塊的比
較器由于比較數(shù)據(jù)格式統(tǒng)一 ,只需要多次例化同 一個基類或者從對應的基類擴
展即可,只需要極少代碼。
這兩組輸入的數(shù)據(jù)通過查看地址或器件分配表確定對應的芯片比較器。 分配表根據(jù)保存的配置文件自動產(chǎn)生,使用時只需要把配置文件寫好并存
放入對應的比較器中即可。
較,
如圖5B所示,本發(fā)明實施例對單個芯片進行驗證時的第一比較模塊的結 構示意圖中,發(fā)送給第一比較模塊的數(shù)據(jù)可以分為三類前綴(包括地址,所 屬模塊名稱,數(shù)據(jù)序號,數(shù)據(jù)方向等),信息(包括比較方式,比較公差,數(shù)據(jù) 生成時間等),比較項(要比較的數(shù)據(jù))。當兩個數(shù)據(jù)類的前綴相同時認為兩個數(shù) 據(jù)類相匹配,將這兩個數(shù)據(jù)類按信息提供的比較方式進行比較。
如果第一比較模塊收到主設備發(fā)送的數(shù)據(jù),沒有收到從設備發(fā)送的數(shù)據(jù), 則主設備發(fā)送的數(shù)據(jù)要暫存到寫暫存隊列(master-device)中;當?shù)谝槐容^模 塊收到從設備發(fā)送的數(shù)據(jù)時,可以直接觸發(fā)一個比較任務,在寫暫存隊列中查 :找匹配的項進4亍比專交;
如果沒有找到匹配的項,則將從設備發(fā)送的數(shù)據(jù)暫存到寫未完成隊列 (device)中,每次收到主設備發(fā)送數(shù)據(jù)時都會從寫未完成隊列中查找一次;
如果找到匹配的項,根據(jù)比較結果增加成功/失敗計數(shù)器的值,同時將匹配 的數(shù)據(jù)從隊列中刪除。
如果第 一 比較模塊收到從設備發(fā)送的數(shù)據(jù),沒有收到主設備發(fā)送的數(shù)據(jù), 則將從設備發(fā)送的數(shù)據(jù)暫存到讀暫存隊列(device-master)中;當?shù)谝槐容^模 塊收到主設備發(fā)送的數(shù)據(jù)時,可以直接觸發(fā)一個比較任務,在讀暫存隊列中查 ^戈匹配的項進^亍比專交;
如果沒有找到匹配的項,則將主設備發(fā)送的數(shù)據(jù)暫存到讀未完成隊列(master)中,每次收到從設備發(fā)送的數(shù)據(jù)都會從讀未完成隊列中查找一次;
如果找到匹配的項,根據(jù)比較結果增加成功/失敗計數(shù)器的值,同時將匹配的數(shù)據(jù)從隊列中刪除。
當主設備或從設備存在故障時,未完成隊列中的數(shù)據(jù)將不能從暫存隊列中找到匹配項。通過監(jiān)視未完成隊列中的數(shù)據(jù)生存時間可以;險測到這種情況,從而可以采取對應的操作,如發(fā)出錯誤警告,停止模擬等等。
在具體實現(xiàn)過程中,第一參考模塊400和第二參考模塊440可以組合成一個參考模塊;第一總線驅(qū)動模塊410和第二總線驅(qū)動模塊450可以組合成一個總線驅(qū)動器;第一監(jiān)視模塊420和第二監(jiān)視模塊460可以合成一個芯片監(jiān)視器;第一比較模塊430和第二比較模塊470可以合成"個自動比較器。如圖6A所示,本發(fā)明實施例SoC芯片驗證的第三種裝置結構包括指令解釋器S1、隨機激勵產(chǎn)生器S2、配置調(diào)度器S3、配置模塊S4、總線驅(qū)動器S5、參考模塊S6、芯片監(jiān)視器S7、總線監(jiān)視器S8和自動比較器S9。
其中,指令解釋器Sl,用于讀取收到的指令文件,并將讀取的數(shù)據(jù)進行轉換,形成二進制指令文件。
隨機激勵產(chǎn)生器S2,用于將指令解釋器Sl生成的二進制指令文件進行譯碼,并發(fā)送給配置調(diào)度器S3,根據(jù)二進制指令文件中的模塊功能數(shù)據(jù)、來自配置調(diào)度器S3的基本信息以及約束條件,生成隨機測試向量,將該隨機測試向量分別發(fā)送給總線驅(qū)動器S5和參考模塊S6。
配置調(diào)度器S3,用于根據(jù)來自隨機激勵產(chǎn)生器S2的指令文件,確定需要驗證的SoC芯片的功能所涉及的模塊,將配置模塊10中保存的基本信息以及確定的模塊的約束條件發(fā)送給隨機激勵產(chǎn)生器S2。
在具體實施過程中,隨機激勵產(chǎn)生器S2還可以不將譯碼后二進制指令文件發(fā)送給配置調(diào)度器S3,由配置調(diào)度器S3從指令解釋器Sl中獲取二進制指令文件進行i斧碼。
配置模塊S4,用于保存SoC芯片的配置文件。
21其中,配置文件包括SoC芯片的基本信息和SoC芯片中模塊的約束條件, 以及SoC芯片中的模塊的寄存器映像數(shù)據(jù)。
總線驅(qū)動器S5,用于根據(jù)SoC芯片遵循的協(xié)議,將來自隨機激勵產(chǎn)生器 30的隨機測試向量進行轉換后,通過系統(tǒng)總線發(fā)送給SoC芯片。
參考模塊S6,用于根據(jù)配置模塊S4中的寄存器映像數(shù)據(jù),模擬需要驗證 的SoC芯片的功能所涉及的模塊,判斷模擬的模塊是否需要對涉及的數(shù)據(jù)根據(jù) 算法進行運算,如果是,則算法對來自隨機激勵產(chǎn)生器S2的隨機測試向量進 行運算,將運算后的數(shù)據(jù)轉換成設定格式的數(shù)據(jù)發(fā)送到自動比較器S9;否則, 直接將隨機測試向量轉換成設定格式的數(shù)據(jù)發(fā)送到自動比較器S9。
芯片監(jiān)視器S7,用于抓取SoC芯片生成的實際數(shù)據(jù),將實際數(shù)據(jù)轉換成 設定格式的數(shù)據(jù),發(fā)送給自動比較器S9。
總線監(jiān)視器S8,用于在芯片監(jiān)視器S7不能抓取SoC芯片生成的實際數(shù)據(jù) 時,通過系統(tǒng)總線抓取SoC芯片生成的實際數(shù)據(jù),將實際數(shù)據(jù)轉換成設定格式 的數(shù)據(jù),發(fā)送給自動比較器S9。
自動比較器S9,用于將收到的來自參考模塊S6的轉換后的數(shù)據(jù)和,收到 的來自芯片監(jiān)視器S7或總線監(jiān)視器S8的轉換后的數(shù)據(jù)進行比較,如果比較結 果相同,則-驗證通過;否則,— 險"i正失敗。
如果需要對多個SoC芯片進行順序驗證,則需要預先設定將每個SoC芯 片的配置文件。如圖6B所示,本發(fā)明實施例SoC芯片驗證的第四種裝置結構 示意圖中,
由于需要驗證多個SoC芯片,所以在配置模塊中需要分別存儲每個SoC 芯片的配置文件,并為每個配置文件分配標識,在指令文件中也有相應的標識, 配置調(diào)度器根據(jù)對應的標識確定當前需要驗證哪個SoC芯片;
隨機激勵產(chǎn)生器生成的隨機測試向量中包括指令文件中的標識; 總線驅(qū)動器根據(jù)標識,將隨機測試向量通過系統(tǒng)總線發(fā)送給對應的SoC芯片。下面以SPI芯片為例,對本發(fā)明進行^t明。
如圖7所示,本發(fā)明實施例SPI芯片-瞼證的結構示意圖中,整個測試環(huán)境 包括DUT (待驗證SoC芯片)和驗證平臺(testbench, TB )兩部分。
DUT包含有AHB bus的一部分,如arbiter, APB bridge。
環(huán)境中大部分部件都是可重用的,在加入新模塊時,僅需要從基類中擴展 并加入少量代碼,修改對應的配置文件,參考模塊和自動比較器。其他部分則 是TB的系統(tǒng)骨架,加入新模塊并不需要修改。
驗證平臺中每個模塊都有專用的配置文件,每個模塊根據(jù)自身的配置文件 就可以完成對應的功能。
在本實施例中,驗證平臺被封裝到一個結構體內(nèi),該結構體的頂層例化了 -驗i正環(huán)境的env。
具體的指令文件是支持少數(shù)高級語言特性的匯編文件,使用 一個簡單的編 譯器編譯成ASCII碼的指令文件。
配置模塊的文件是一個用systemverilog語言編寫的模塊配置類,包括了模 塊寄存映像,模塊配置約束,以及一些告知事件;
如果一個驗證的功能涉及一個模塊,則這個傳輸受這個模塊配置約束;
如果一個驗證的功能涉及多個模塊,則判斷一個驗證的功能屬于哪個模塊 有兩種方-法
通過命名事件,如果一個功能有名字,且名字與其中一個模塊的 device—name相同,則這個傳車俞屬于這個4莫塊;
通過地址范圍,如果一個功能的地址落在一個;f莫塊的地址范圍內(nèi)。則這個 傳輸屬于這個模塊。
隨機激勵產(chǎn)生器的文件是一個用systemverilog語言編寫的類,相當于一個 CPU的地址產(chǎn)生器,并具有部分指令解釋功能;
隨機激勵產(chǎn)生器通過調(diào)用sys—cfg::get_cmd (int function—id, int pc )取得 指令并執(zhí)行以下動作計算下一個pc值; 計算寄存器的值;
把寄存器值回寫到模塊寄存器; 驅(qū)動AHB driver等; 等待特定時間(由指令決定);
查詢是否有中斷發(fā)生,如果有中斷發(fā)生,則把當前的隨機激勵產(chǎn)生器的狀 態(tài)推入堆棧,然后進入中斷服務程序。直到中斷服務程序執(zhí)行完畢執(zhí)行出棧, 繼續(xù)原來的程序。
隨機激勵產(chǎn)生器有三個通道第一條通道out—chan連接到AHB driver (總 線驅(qū)動才莫塊)的input channel,用于驅(qū)動AHB bus;第二條通道in—chan則連 接到AHB driver的output channel,從中取回讀取的數(shù)據(jù);第三條通道則是可 選通道,用于把數(shù)據(jù)送到參考模塊。
配置調(diào)度器的文件是一個用systemverilog語言編寫的類,從文件中讀取指 令并進行初步解釋,在需要的情況下調(diào)度配置文件中受約束的隨機數(shù)據(jù)。指令 和數(shù)據(jù)送到隨機激勵產(chǎn)生器進行進一步解釋,根據(jù)情況還可以進行回寫。
從上述實施里中可以看出本發(fā)明實施例設定SoC芯片的配置文件,所述 配置文件包括SoC芯片的基本信息和SoC芯片中模塊的約束條件;根據(jù)收到 的指令,確定需要驗證的所述SoC芯片的功能所涉及的模塊;根據(jù)所述基本信 息、確定的所述模塊的所述約束條件以及所述指令中的模塊功能數(shù)據(jù),生成隨 機測試向量;根據(jù)所述隨機測試向量,對所述SoC芯片進行驗證,從而減少構 建驗證系統(tǒng)的復雜度和維護難度,增強驗證部件的重用性,降低-險證難度,節(jié) 省時間,并且減少了讀寫系統(tǒng)總線的次數(shù),提高了驗證SoC芯片系統(tǒng)的結構化 程度,利于系統(tǒng)開發(fā)和維護。
顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本 發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求 及其等同技術的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權利要求
1、一種片上系統(tǒng)SoC芯片驗證的方法,其特征在于,設定SoC芯片的配置文件,所述配置文件包括SoC芯片的基本信息和SoC芯片中模塊的約束條件,該方法包括根據(jù)收到的指令,確定需要驗證的所述SoC芯片的功能所涉及的模塊;根據(jù)所述基本信息、確定的所述模塊的所述約束條件以及所述指令中的模塊功能數(shù)據(jù),生成隨機測試向量;根據(jù)所述隨機測試向量,對所述SoC芯片進行驗證。
2、 如權利要求1所述的方法,其特征在于,所述指令為自定義類匯編語 言或類C語言指令文件,該方法還包括讀耳又收到的指令文件,并將讀耳又的數(shù)據(jù)進行轉換,形成二進制指令文件。
3、 如權利要求2所述的方法,其特征在于,所述形成二進制指令文件后, 該方法還包4舌讀取所述二進制指令文件,對讀取的指令進行譯碼。
4、 如權利要求3所述的方法,其特征在于,如果在處理過程中有中斷信 號產(chǎn)生,則記錄程序指針,停止處理二進制指令文件,并跳轉到中斷服務程序 進行處理,在處理結束后,返回記錄的程序指針處繼續(xù)對所述二進制指令文件 進4亍處理。
5、 如權利要求3或4所述的方法,其特征在于,如果i斧碼后的指令是內(nèi) 部處理指令,則根據(jù)內(nèi)部處理指令進行處理,并在處理結束后,繼續(xù)讀取二進 制指令文件。
6、 如權利要求l所述的方法,其特征在于,所述根據(jù)所述隨機測試向量, 對所述SoC芯片進行驗證包括模擬需要驗證的所述SoC芯片的功能所涉及的模塊,根據(jù)所述隨機測試向 量,得到預估數(shù)據(jù);將所述隨機測試向量發(fā)送給所述SoC芯片,得到實際數(shù)據(jù);將所述預估數(shù)據(jù)和所述實際數(shù)據(jù)轉換成設定格式的數(shù)據(jù),進行比較。
7、 如權利要求6所述的方法,其特征在于,所述配置文件還包括SoC芯 片中的模塊的寄存器映像數(shù)據(jù),所述模擬需要驗證的所述SoC芯片的功能所涉 及的模塊包括根據(jù)所述寄存器映像數(shù)據(jù),模擬對應的模塊。
8、 如權利要求l所述的方法,其特征在于,所述根據(jù)所述隨機測試向量, 對所述SoC芯片進行驗證包括將所述隨機測試向量發(fā)送給所述SoC芯片;將所述隨機測試向量和所述SoC芯片輸出的數(shù)據(jù)轉換成特定格式的數(shù)據(jù), 進行比較。
9、 一種SoC芯片驗證的裝置,其特征在于,該裝置包括配置模塊,用于保存SoC芯片的配置文件,所述配置文件包括SoC芯片 的基本信息和,SoC芯片中模塊的約束條件;配置調(diào)度模塊,用于根據(jù)收到的指令,確定需要驗證的所述SoC芯片的功 能所涉及的模塊,將所述配置模塊保存的所述基本信息以及確定的模塊的約束 條件發(fā)送給隨機激勵產(chǎn)生模塊;隨機激勵產(chǎn)生模塊,用于根據(jù)所述基本信息、所述約束條件以及所述指令 中的模塊功能數(shù)據(jù),生成隨機測試向量;驗證模塊,用于根據(jù)所述隨機測試向量,對所述SoC芯片進行驗證。
10、 如權利要求9所述的裝置,其特征在于,所述隨機激勵產(chǎn)生模塊包括 接收模塊,用于接收所述配置調(diào)度模塊發(fā)送的所述基本信息和所述約束條件;生成模塊,用于根據(jù)所述基本信息、所述約束條件以及所述指令中的模塊 功能數(shù)據(jù),生成隨機測試向量。
11、 如權利要求9所述的裝置,其特征在于,所述指令為自定義類匯編語 言或類C語言指令文件,所述裝置還包括指令解釋模塊,用于讀取收到的指令文件,并將讀取的數(shù)據(jù)進行轉換,形 成二進制指令文件。
12、如權利要求11所述的裝置,其特征在于,所述隨機激勵產(chǎn)生模塊包括第一處理模塊,用于讀取所述二進制指令文件,對讀取的所述二進制指 令文件進行譯碼。
13、如權利要求12所述的裝置,其特征在于,所述隨機激勵產(chǎn)生模塊包括第一發(fā)送模塊,用于將所述第一處理模塊譯碼后的指令發(fā)送給所述配置調(diào) 度模塊;則所述配置調(diào)度模塊包括第一確定模塊,用于根據(jù)收到的譯碼后的指令,確定需要驗證的所述SoC 芯片的功能所涉及的模塊;第二發(fā)送模塊,用于將所述配置模塊保存的所述第一確定模塊確定的模塊 的配置數(shù)據(jù),發(fā)送給所述隨機激勵產(chǎn)生模塊。
14、 如權利要求12所述的裝置,其特征在于,所述配置調(diào)度模塊包括 譯碼模塊,用于讀取所述指令解釋模塊形成的所述二進制指令文件,對讀取的所述二進制指令文件進行"^碼;第二確定模塊,用于根據(jù)所述譯碼模塊譯碼后的指令,確定需要驗證的所 述SoC芯片的功能所涉及的模塊;第三發(fā)送模塊,用于將所述配置模塊保存的所述第二確定模塊確定的模塊 的配置數(shù)據(jù),發(fā)送給所述隨機激勵產(chǎn)生模塊。
15、 如權利要求12所述的裝置,其特征在于,所述隨機激勵產(chǎn)生模塊還 包括中斷模塊,用于如果在所述第一處理模塊處理過程中有中斷信號產(chǎn)生,則 通知所述第一處理;漠塊停止處理所述二進制指令文件,并跳轉到中斷服務程序進行處理,在處理結束后,通知所述第一處理模塊繼續(xù)處理所述二進制指令文件;則所述第一處理模塊包括第一指針模塊,用于在收到停止處理所述二進制指令文件的通知后,記錄 程序指針,停止處理所述二進制指令文件;第二指針模塊,用于在收到繼續(xù)處理所述二進制指令文件的通知后,返回 記錄的程序指針處繼續(xù)對所述二進制指令文件進行處理。
16、 如權利要求12-15中任一權利要求所述的裝置,其特征在于,所述 隨機激勵產(chǎn)生模塊還包括第二處理模塊,用于如果所述第一處理模塊譯碼后的數(shù)據(jù)包括內(nèi)部處理指 令,則根據(jù)內(nèi)部處理指令進行處理,并在處理結束后,通知所述第一處理模塊 繼續(xù)讀取二進制指令文件。
17、 如權利要求9所述的裝置,其特征在于,所述驗證才莫塊包括 第一參考模塊,用于模擬需要驗證的所述SoC芯片的功能所涉及的模塊,根據(jù)所迷隨機測試向量,得到預估數(shù)據(jù),將所述預估數(shù)據(jù)轉換成特定格式的數(shù) 據(jù),發(fā)送給第一比4支模塊;第一總線驅(qū)動模塊,用于根據(jù)所述SoC芯片遵循的協(xié)議,將所述隨機測試 向量進行轉換后發(fā)送給所述SoC芯片;第一監(jiān)視模塊,用于抓取所述SoC芯片生成的實際數(shù)據(jù),將所述實際數(shù)據(jù) 轉換成設定格式的數(shù)據(jù),發(fā)送給第一比較模塊;第一比較模塊,用于對轉換后的預估數(shù)據(jù)和實際數(shù)據(jù)進行比較。
18、 如權利要求17所述的裝置,其特征在于,所述配置文件還包括SoC 芯片中的模塊的寄存器映像數(shù)據(jù),所述參考模塊包括第一模塊,用于從所述配置模塊中查找需要模擬的模塊對應的寄存器映像 數(shù)據(jù);第二模塊,用于根據(jù)所述第一模塊查找到的所述寄存器映像數(shù)據(jù),模擬對應的才莫塊。
19、如權利要求9所述的裝置,其特征在于,所述驗證模塊包括 第二參考模塊,用于將所述隨機測試向量轉換成特定格式的數(shù)據(jù),發(fā)送給 第二比較模塊;第二總線驅(qū)動模塊,用于根據(jù)所述SoC芯片所遵循的協(xié)議,將所述隨機測 試向量進行轉換后發(fā)送給所述SoC芯片;第二監(jiān)視模塊,用于抓取所述SoC芯片生成的實際數(shù)據(jù),將所述實際數(shù)據(jù) 轉換成設定格式的數(shù)據(jù),發(fā)送給第二比較模塊;第二比較模塊,用于對所述第二參考模塊和所述第二監(jiān)視模塊發(fā)送的轉換后的數(shù)據(jù),進行比較。
全文摘要
本發(fā)明涉及SoC芯片領域,特別涉及一種SoC芯片驗證的方法和裝置,用以解決現(xiàn)有技術中對同一個SoC芯片不同功能進行驗證時,每次驗證都需要重新編譯,增加了隨機向量產(chǎn)生和控制的難度的問題。本發(fā)明實施例的方法包括設定SoC芯片的配置文件,配置文件包括SoC芯片的基本信息和SoC芯片中模塊的約束條件;根據(jù)收到的指令,確定需要驗證的SoC芯片的功能所涉及的模塊;根據(jù)基本信息、確定的模塊的約束條件以及指令中的模塊功能數(shù)據(jù),生成隨機測試向量;根據(jù)隨機測試向量,對SoC芯片進行驗證。本發(fā)明實施例能夠減少構建驗證系統(tǒng)的復雜度和維護難度,增強驗證部件的重用性,降低驗證難度,節(jié)省時間。
文檔編號G06F17/50GK101515301SQ20081002650
公開日2009年8月26日 申請日期2008年2月23日 優(yōu)先權日2008年2月23日
發(fā)明者奇 張, 李新輝 申請人:炬力集成電路設計有限公司