国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種用于制造后處理器芯片驗證的隨機驗證方法及裝置的制作方法

      文檔序號:6597868閱讀:453來源:國知局

      專利名稱::一種用于制造后處理器芯片驗證的隨機驗證方法及裝置的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及超大規(guī)模集成電路(VLSI)設(shè)計驗證領(lǐng)域,并具體涉及一種用于制造后處理器芯片驗證的隨機驗證方法及裝置。
      背景技術(shù)
      :對大規(guī)模集成電路的設(shè)計和工藝進行驗證以保證其正確性是一項重要而又艱巨的工作。目前一款芯片在流片前,主要通過功能驗證來保證正確性,而芯片流片后則通過制造后芯片驗證來尋找存在的錯誤,進一步保證芯片正確性。隨著研究的進步,芯片制造前的功能驗證的手段越來越豐富和完善,給集成電路的驗證提供了強大的支持,但是芯片制造前的功能驗證并不是一個完全枚舉的過程,不能保證對每一個錯誤都能檢測到。隨著集成電路工藝的進步、新體系結(jié)構(gòu)的提出、電路規(guī)模的增大和設(shè)計的復雜化,僅僅通過制造前的功能驗證越來越難以保證在流片前一次性發(fā)現(xiàn)所有的錯誤。最近的數(shù)據(jù)顯示,仍然有許多錯誤在芯片流片后、甚至投入市場后被發(fā)現(xiàn),為了使這些錯誤在芯片推向市場前得到解決,這些流片后存在的問題,需要通過制造后芯片驗證手段來發(fā)現(xiàn)。制造后的芯片驗證受限于對設(shè)計內(nèi)部狀態(tài)的觀測不透明和真實環(huán)境的不確定性,發(fā)現(xiàn)錯誤和定位錯誤所需要的調(diào)試開銷非常大。根據(jù)最近幾年的統(tǒng)計,平均每款芯片需要35%的開發(fā)時間用于制造后的芯片驗證。為了解決制造后的芯片驗證調(diào)試效率低的問題,一個有益的想法是把芯片制造前的功能驗證的方法加以改造,使其能夠滿足制造后甚至封裝后芯片驗證的需要。目前集成電路芯片制造前的功能驗證方法主要分為模擬仿真方法和形式化方法兩大類。形式化方法的應用很大程度上受制于設(shè)計規(guī)模;而模擬仿真方法能處理大規(guī)模集成電路設(shè)計,特別是當代復雜高性能處理器,是目前處理器功能驗證的主要方法。模擬仿真方法運行的大量測試向量主要有三個來源手寫測試向量、實際應用程序改造和測試向量的隨機生成。隨機驗證技術(shù)是當今大規(guī)模集成電路仿真驗證流程中的重要支撐技術(shù)。在集成電路驗證領(lǐng)域,特別是處理器功能驗證領(lǐng)域,具有重要地位。人工書寫測試向量需要花費大量的時間和人力成本,并且局限于原始應用程序的規(guī)模。經(jīng)過改造后的應用程序測試向量仍會占用過多的仿真時間,無法很好地滿足各階段回歸測試的要求。這意味著大量的、覆蓋范圍廣泛的測試向量主要來源于隨機測試向量生成。隨機生成的測試向量有可能覆蓋到設(shè)計和驗證人員完全沒有想到的功能角落,且生成的測試向量的規(guī)模和長度靈活可控。指令級隨機驗證是通用處理器制造前驗證的常用方法。比如專利號為ZL200610078226.9的中國專利申請公開了一種在微處理器用戶態(tài)隨機驗證中實現(xiàn)核心態(tài)程序驗證的方法,參照圖1描述該方法,圖1是描述了制造前處理器指令級隨機驗證方法的框圖,如圖1所述,其通常包括7個部分,指令庫101、指令模板102、約束求解器103、隨機程序生成引擎104、指令級模擬器105、指令過濾器106、仿真環(huán)境107。指令庫101中包含處理器支持的所有有效指令;指令模版102是一系列配置文件,用于進行指令的配置和規(guī)范;約束求解器103對指令模板進行求解,指導隨機程序生成引擎104生成相應的指令;隨機程序生成引擎104可以有效支持配置文件約束下的指令生成;指令級模擬器105是待驗證的處理器的最簡單參考模型,支持指令級仿真,提供指令的正確執(zhí)行結(jié)果,同時更新指令級處理器模擬器狀態(tài);指令過濾器106根據(jù)指令級模擬器的執(zhí)行結(jié)果判斷是否是非法指令,決定是否要丟棄該指令,及時恢復該指令產(chǎn)生前處理器模擬器的狀態(tài);仿真環(huán)境107是包裹在待驗證處理器外層的一系列邏輯和操作,主要包括初始化、輸入/輸出和比較邏輯,可以執(zhí)行初始化、輸入/輸出和信號比較等一系列操作。進行指令級隨機驗證時,約束求解器103對指令模板102提供的約束進行求解,進而指導隨機程序生成引擎104從指令庫101中選取符合要求的操作碼,加入符合約束的操作數(shù),產(chǎn)生出一條符合約束的指令,提供給指令級處理器模擬器105,指令的模擬結(jié)果送入指令過濾器106,如果產(chǎn)生的指令是非法指令則直接拋棄并恢復該條指令產(chǎn)生前的指令級處理器模擬器狀態(tài),并重新產(chǎn)生下一條指令,否則提供指令的模擬結(jié)果給仿真環(huán)境中的比較邏輯,同時將產(chǎn)生的指令也提供給仿真環(huán)境,經(jīng)處理器執(zhí)行后,將結(jié)果也輸出到仿真環(huán)境中的比較邏輯,通過二者比較可以檢測處理器設(shè)計中的錯誤。隨機驗證方法在擴大芯片驗證的覆蓋率,提高設(shè)計錯誤的可調(diào)試性上具有明顯的優(yōu)勢,而這些優(yōu)勢也正是制造后的芯片驗證所急需的。然而,制造后的芯片驗證受限于對設(shè)計內(nèi)部狀態(tài)的觀測不透明和真實環(huán)境的不確定性,無法直接運用上述隨機驗證環(huán)境。在制造后的芯片驗證中支持隨機驗證,至少面臨以下兩方面的問題(1)在制造后的真實芯片環(huán)境中,不存在圖1中的仿真環(huán)境107,這就意味著無法象在制造前的隨機驗證中那樣初始化仿真環(huán)境并方便地完成指令序列和數(shù)據(jù)加載,無法象在仿真環(huán)境中那樣容易地直接探測芯片的內(nèi)部狀態(tài)并捕獲需要的各種信號,也無法在仿真環(huán)境中加入實時的比較邏輯及時比較和發(fā)現(xiàn)設(shè)計中的錯誤。(2)在制造前的隨機驗證中,仿真環(huán)境可控性很強,對隨機驗證的約束極小。通常情況下,對于用戶態(tài)的隨機程序來說,只要是設(shè)計規(guī)范規(guī)定的用戶態(tài)程序允許訪問的內(nèi)存空間它都可以隨意使用,只要是設(shè)計規(guī)范規(guī)定的用戶態(tài)程序允許使用的寄存器,,它也都可以使用,該寄存器通常包括通用寄存器、浮點寄存器等。而對于制造后的真實芯片來說,只能通過輸入輸出管腳信號來操縱芯片,芯片內(nèi)部狀態(tài)的可控制性和可操作性都很差。然而,經(jīng)過前期的功能驗證,芯片中大多數(shù)錯誤已經(jīng)被修正,通常制造后的真實芯片都能夠運行操作系統(tǒng)和一些應用軟件,因而制造后的隨機驗證通常需要這些軟件平臺的支持,特別是操作系統(tǒng)平臺的支持,此時必須考慮軟件平臺對隨機驗證的約束和限制,例如部分寄存器會被操作系統(tǒng)作為專用寄存器保留起來,一些內(nèi)存空間也會被操作系統(tǒng)保留作為專用地址空間,比如供動態(tài)鏈接庫等的使用,而生成的隨機程序的格式、裝載、調(diào)度運行的方式也需要相應的改進。在復雜處理器制造后的芯片驗證過程中,上述問題是非常常見的,而現(xiàn)有的制造后的芯片驗證技術(shù)中沒有針對制造后處理器芯片驗證的隨機驗證方法的具體解決方案,無法滿足這些需求。綜上所述,制造后的芯片驗證在大規(guī)模復雜處理器的驗證中占有的比重越來越大,希望能夠采用隨機驗證技術(shù)改進其調(diào)試性,同時增加驗證覆蓋率,而現(xiàn)有的用于芯片制造前的隨機驗證方法無法直接應用于制造后的芯片驗證,尚有一系列問題有待解決。由于現(xiàn)有技術(shù)的不足,人們希望有一種用于制造后處理器芯片驗證的隨機驗證方法,滿足復雜集成電路驗證的實踐需要。
      發(fā)明內(nèi)容本發(fā)明目的在于提供一種用于制造后處理器芯片驗證的隨機驗證方法及裝置,通過該方法及裝置,可以解決現(xiàn)有的芯片制造前的隨機驗證方法無法直接應用于制造后的芯片驗證問題,滿足采用隨機驗證技術(shù)改進制造后的芯片驗證、提高驗證效率的需要。為實現(xiàn)本發(fā)明的目的而提供一種用于制造后處理器芯片驗證的隨機驗證方法,通過以下技術(shù)方案來實現(xiàn)。一種用于制造后處理器芯片驗證的隨機驗證方法,包括用于制造后處理器芯片驗證的隨機指令生成方法和平臺裝載方法兩部分。用于制造后處理器芯片驗證的隨機指令生成方法,包括如下步驟步驟1在指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束,用于屏蔽保留寄存器和保留內(nèi)存地址不被生成的隨機驗證程序使用;步驟2增加寄存器初始化程序生成器、內(nèi)存初始化程序生成器和指令計數(shù)器;步驟3改造隨機程序生成引擎,去除原有的寄存器初始化文件生成機制和內(nèi)存初始化文件生成機制,并改變原有指令序列產(chǎn)生終止條件,在指令序列最末尾放置一條跳轉(zhuǎn)指令;步驟4:增加隨機生成程序記錄器、寄存器比較程序生成器和內(nèi)存比較程序生成器;用于制造后處理器芯片驗證的平臺裝載方法,包括如下步驟步驟5將運用所述用于制造后處理器芯片驗證的隨機指令生成方法后生成的文件轉(zhuǎn)化為軟件平臺可調(diào)度的文件格式;步驟6指定所述用于制造后處理器芯片驗證的隨機指令生成方法中寄存器初始化程序生成器、內(nèi)存初始化程序生成器、寄存器比較程序生成器以及內(nèi)存比較程序生成器所生成的程序代碼段以及隨機生成的指令序列在內(nèi)存中裝載的起始位置;步驟7將所述步驟5轉(zhuǎn)化為軟件平臺可調(diào)度的文件格式的程序代碼段以及隨機生成的指令序列分別按照所述步驟6中指定的起始位置裝載進相應的內(nèi)存地址中。在上述方案中,在所述步驟2中,指令計數(shù)器包含指令累加器和計數(shù)比較器兩部分,指令累加器用于累加并統(tǒng)計生成的隨機指令數(shù)目,計數(shù)比較器用于比較生成的隨機指令數(shù)目是否達到指令模板要求的指令數(shù)目。在上述方案中,在所述步驟4中,隨機生成程序記錄器記錄隨機生成的指令序列的匯編代碼段、二進制代碼段、序列中每條指令對應的指令計數(shù)器(ProgramCounter)的值以及每條指令對應的轉(zhuǎn)換后援存儲器(Translationlookasidebuffer,簡稱TLB)頁號。在上述方案中,在所述步驟4中,寄存器比較程序生成器生成一段寄存器比較程序代碼,比較運行隨機生成的指令序列后待驗證處理器中除所述步驟1中保留寄存器外的所有寄存器值和指令級處理器模擬器的模擬結(jié)果中對應寄存器的值,結(jié)果一致則繼續(xù)比較下一個寄存器,直到所有寄存器比較完畢,結(jié)果不一致則記錄出錯信息到日志文件中,同時在日志文件中記錄指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)及指令模板對應的配置文件名。在上述方案中,在所述步驟4中,內(nèi)存比較程序生成器生成一段內(nèi)存比較程序代碼,把待驗證處理器運行隨機生成的指令序列后全部緩存(Cache)的內(nèi)容刷新到內(nèi)存中,比較待驗證處理器運行隨機生成的指令序列后內(nèi)存中內(nèi)容發(fā)生過變化的地址對應的值與同樣運行隨機生成的指令序列后指令級處理器模擬器的模擬結(jié)果中相應內(nèi)存地址保存的內(nèi)容,結(jié)果全部一致則結(jié)束隨機驗證過程,結(jié)果不一致則記錄出錯信息到日志文件中,同時在日志文件中記錄指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)及指令模板對應的配置文件名。在上述方案中,在所述步驟6中,為了不干擾待裝載軟件平臺的正常運行,包括隨機生成的指令序列在內(nèi)的所有程序代碼段都應裝載在內(nèi)存中用戶態(tài)地址空間,即裝載的起始位置加對應程序代碼段實際長度應不超出用戶態(tài)地址空間,且裝載不同程序代碼段的地址空間沒有重疊。為實現(xiàn)本發(fā)明的目的還提供一種用于制造后處理器芯片驗證的隨機驗證裝置,包括隨機指令初始化模塊,用于在指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束,以及增加寄存器初始化程序生成器、內(nèi)存初始化程序生成器和指令計數(shù)器;所述指令計數(shù)器包含指令累加器和計數(shù)比較器兩部分,指令累加器用于累加并統(tǒng)計生成的隨機指令數(shù)目,計數(shù)比較器用于比較生成的隨機指令數(shù)目是否達到指令模板要求的指令數(shù)目;隨機指令生成模塊,用于改造隨機程序生成引擎,去除原有的寄存器初始化文件生成機制和內(nèi)存初始化文件生成機制,并改變原有指令序列產(chǎn)生終止條件,在指令序列最末尾放置一條跳轉(zhuǎn)指令;隨機指令記錄比較模塊,用于增加隨機生成程序記錄器、寄存器比較程序生成器和內(nèi)存比較程序生成器;所述隨機生成程序記錄器記錄隨機生成的指令序列的匯編代碼段、二進制代碼段、序列中每條指令對應的指令計數(shù)器的值以及每條指令對應的轉(zhuǎn)換后援存儲器頁號;所述寄存器比較程序生成器生成一段寄存器比較程序代碼,比較運行隨機生成的指令序列后待驗證處理器中除隨機指令初始化模塊中保留寄存器外的所有寄存器值和指令級處理器模擬器的模擬結(jié)果中對應寄存器的值,結(jié)果一致則繼續(xù)比較下一個寄存器,直到所有寄存器比較完畢,結(jié)果不一致則記錄出錯信息到日志文件中;所述內(nèi)存比較程序生成器生成一段內(nèi)存比較程序代碼,把待驗證處理器運行隨機生成的指令序列后全部緩存的內(nèi)容刷新到內(nèi)存中,比較待驗證處理器運行隨機生成的指令序列后內(nèi)存中內(nèi)容發(fā)生過變化的地址對應的值與同樣運行隨機生成的指令序列后指令級處理器模擬器的模擬結(jié)果中相應內(nèi)存地址保存的內(nèi)容,結(jié)果全部一致則結(jié)束隨機驗證過程,結(jié)果不一致則記錄出錯信息到日志文件中;平臺裝載模塊,用于轉(zhuǎn)化所述隨機指令生成模塊和所述隨機指令記錄比較模塊生成的文件為軟件平臺可調(diào)度的文件格式,指定所述寄存器初始化程序生成器、內(nèi)存初始化程序生成器、寄存器比較程序生成器以及內(nèi)存比較程序生成器所生成的程序代碼段以及隨機生成的指令序列在內(nèi)存中裝載的起始位置,并按照所述起始位置分別裝載被轉(zhuǎn)化后的以軟件平臺可調(diào)度的文件為格式的程序代碼段和指令文件;所述平臺裝載模塊,為了不干擾待裝載軟件平臺的正常運行,包括隨機生成的指令序列在內(nèi)的所有程序代碼段都裝載在內(nèi)存中用戶態(tài)地址空間,且裝載不同程序代碼段的地址空間沒有重疊。本發(fā)明的有益效果通過本發(fā)明的用于制造后處理器芯片驗證的隨機驗證方法,解決了現(xiàn)有的芯片制造前的隨機驗證方法無法直接應用于制造后的芯片驗證問題,滿足采用隨機驗證技術(shù)改進制造后的芯片驗證的覆蓋率、提高驗證效率的需要。圖1是現(xiàn)有技術(shù)的描述了制造前處理器指令級隨機驗證方法的框圖;圖2是依據(jù)本發(fā)明的一個具體實施例的用于制造后處理器芯片驗證方法的流程圖;圖3是依據(jù)本發(fā)明的一個具體實施例的隨機指令生成方法的示意圖;圖4是依據(jù)本發(fā)明的一個具體實施例的平臺裝載方法的示意具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明的用于制造后處理器芯片驗證的隨機驗證方法及裝置進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明而不是對本發(fā)明的限制。下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步詳細描述。依據(jù)本發(fā)明的一個具體實施例,提供一種用于制造后處理器芯片驗證的隨機驗證方法。該方法包括用于制造后處理器芯片驗證的隨機指令生成方法和平臺裝載方法兩部分。用于制造后處理器芯片驗證的隨機指令生成方法,包括如下步驟步驟Sl在指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束,用于屏蔽保留寄存器和保留內(nèi)存地址不被生成的隨機驗證程序使用;步驟S2增加寄存器初始化程序生成器、內(nèi)存初始化程序生成器和指令計數(shù)器;步驟S3改造隨機程序生成引擎,去除原有的寄存器初始化文件生成機制和內(nèi)存初始化文件生成機制,并改變原有指令序列產(chǎn)生終止條件,在指令序列最末尾放置一條跳轉(zhuǎn)指令;步驟S4增加增加隨機生成程序記錄器、寄存器比較程序生成器和內(nèi)存比較程序生成器;用于制造后處理器芯片驗證的平臺裝載方法,包括如下步驟步驟S5將運用所述用于制造后處理器芯片驗證的隨機指令生成方法后生成的文件轉(zhuǎn)化為軟件平臺可調(diào)度的文件格式;步驟S6指定所述用于制造后處理器芯片驗證的隨機指令生成方法中寄存器初始化程序生成器、內(nèi)存初始化程序生成器、寄存器比較程序生成器以及內(nèi)存比較程序生成器所生成的程序代碼段以及隨機生成的指令序列在內(nèi)存中裝載的起始位置;步驟S7將所述步驟5轉(zhuǎn)化為軟件平臺可調(diào)度的文件格式的程序代碼段以及隨機生成的指令序列分別按照所述步驟6中指定的起始位置裝載進相應的內(nèi)存地址中。在步驟Sl中,在指令模版中添加保留寄存器相關(guān)的約束,基本格式為{寄存器號,0}。在步驟Sl中,在指令模版中添加保留內(nèi)存地址相關(guān)的約束,基本格式為{起始地址末尾地址,0}。在步驟S2中,寄存器初始化程序生成器生成一段寄存器初始化程序代碼,初始化待驗證處理器中除步驟Sl中保留寄存器外的所有寄存器。在步驟S2中,內(nèi)存初始化程序生成器生成一段內(nèi)存初始化程序代碼,初始化步驟5中記錄的隨機生成的指令序列使用到的內(nèi)存地址。在步驟S2中,內(nèi)存初始化通常以頁為單位,即初始化所有的隨機生成的指令序列使用的內(nèi)存地址所在的頁。在步驟S2中,指令計數(shù)器包含指令累加器和計數(shù)比較器兩部分,指令累加器用于累加并統(tǒng)計生成的隨機指令數(shù)目,計數(shù)比較器用于比較生成的隨機指令數(shù)目是否達到指令模板要求的指令數(shù)目。在步驟S3中,重新設(shè)計的隨機程序生成引擎,不再包含寄存器初始化文件生成機制,即隨機程序生成引擎不再生成寄存器初始化文件。在步驟S3中,重新設(shè)計的隨機程序生成引擎,不再包含內(nèi)存初始化文件生成機制,即隨機程序生成引擎不再生成內(nèi)存初始化文件。在步驟S3中,重新設(shè)計的隨機程序生成引擎遵循步驟Sl中添加的保留寄存器和保留內(nèi)存地址相關(guān)的約束,即隨機程序生成引擎不使用保留的寄存器和保留的內(nèi)存地址。在步驟S3中,改變原有指令序列產(chǎn)生終止條件包括總體指令產(chǎn)生數(shù)目減1,在指令序列最末尾放置一條跳轉(zhuǎn)指令。在步驟S4中,隨機生成程序記錄器記錄隨機生成的指令序列的匯編代碼段和二進制代碼段,分別生成兩個文件,即匯編代碼段文件和二進制代碼段文件。在步驟S4中,隨機生成程序記錄器還要記錄隨機生成的指令序列中每條指令對應的指令計數(shù)器(ProgramCounter)的值以及每條指令對應的轉(zhuǎn)換后援存儲器(Translationlookasidebuffer,簡稱TLB)頁號,分別生成兩個文件。在步驟S4中,寄存器比較程序生成器生成一段寄存器比較程序代碼,比較運行全部隨機生成程序記錄器記錄的隨機生成的指令序列后,待驗證處理器中所有的寄存器值和指令級處理器模擬器的模擬結(jié)果中寄存器的值。在步驟S4中,寄存器比較程序生成器生成的程序代碼段順序比較所有的寄存器結(jié)果值,結(jié)果一致則繼續(xù)比較下一個寄存器,直到所有寄存器比較完畢,結(jié)果不一致則記錄出錯信息到日志文件中,同時在日志文件中記錄指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)及指令模板對應的配置文件名。在步驟S4中,如果步驟S2中寄存器初始化程序生成器初始化寄存器時保留了23個通用寄存器沒有初始化,則寄存器比較程序生成器生成的程序代碼段順序比較寄存器結(jié)果值時跳過沒有初始化的幾個寄存器。在步驟S4中,內(nèi)存比較程序生成器生成一段內(nèi)存比較程序代碼,把待驗證處理器運行全部隨機生成程序記錄器記錄的隨機生成的指令序列后全部緩存(Cache)的內(nèi)容刷新到內(nèi)存中,比較待驗證處理器運行全部隨機生成程序記錄器記錄的隨機生成的指令序列后內(nèi)存中內(nèi)容發(fā)生過變化的地址對應的值與同樣運行全部隨機生成程序記錄器記錄的隨機生成的指令序列后指令級處理器模擬器的模擬結(jié)果中相應內(nèi)存地址保存的內(nèi)容,結(jié)果全部一致則結(jié)束隨機驗證過程,結(jié)果不一致則記錄出錯信息到日志文件中,同時在日志文件中記錄指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)及指令模板對應的配置文件名。在步驟S6中,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存中寄存器初始化程序生成器生成的程序代碼段應裝載在用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。在步驟S6中,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存初始化程序生成器生成的程序代碼段應裝載在內(nèi)存中用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。在步驟S6中,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存中隨機生成的指令序列應裝載在用戶態(tài)地址空間,即裝載的起始位置加指令序列程序代碼段實際長度應不超出用戶態(tài)地址空間。在步驟S6中,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存中寄存器比較程序生成器生成的程序代碼段應裝載在用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。在步驟S6中,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存比較程序生成器生成的程序代碼段應裝載在內(nèi)存中用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。在步驟S6中,指定的起始位置加對應的代碼段長度應滿足遞增關(guān)系,即指定的內(nèi)存中寄存器初始化程序生成器生成的程序代碼段裝載的起始位置<寄存器初始化程序生成器生成的程序代碼段結(jié)束位置<指定的內(nèi)存初始化程序生成器生成的程序代碼段在內(nèi)存中裝載的起始位置<內(nèi)存初始化程序生成器生成的程序代碼段結(jié)束位置<指定的隨機生成的指令序列在內(nèi)存中裝載的起始位置<隨機生成的指令序列結(jié)束位置<指定的內(nèi)存中寄存器比較程序生成器生成的程序代碼段裝載的起始位置<寄存器比較程序生成器生成的程序代碼段結(jié)束位置<指定的內(nèi)存比較程序生成器生成的程序代碼段在內(nèi)存中裝載的起始位置<內(nèi)存比較程序生成器生成的程序代碼段結(jié)束位置。依據(jù)本發(fā)明的一個具體實施例,參照圖2描述一種用于制造后處理器芯片驗證的隨機驗證方法。圖2是用于制造后處理器芯片驗證方法的流程圖,如圖2所示,該用于制造后處理器芯片驗證的隨機驗證方法包括用于制造后處理器芯片驗證的隨機指令生成方法和平臺裝載方法兩部分。該制造后處理器芯片驗證的隨機指令生成方法包括如下步驟步驟S201,在指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束;步驟S202,增加寄存器初始化程序生成器;步驟S203,增加內(nèi)存初始化程序生成器;步驟S204,增加指令計數(shù)器;步驟S205,改造隨機程序生成引擎,去除原有的寄存器初始化文件生成機制和內(nèi)存初始化文件生成機制;步驟S206,改造隨機程序生成引擎,改變原有指令序列產(chǎn)生終止條件,保證在指令序列最末尾的指令為跳轉(zhuǎn)指令;步驟S207,增加隨機生成程序記錄器;步驟S208,增加寄存器比較程序生成器;步驟S209,增加內(nèi)存比較程序生成器。在步驟S201中,在指令模版中添加保留寄存器相關(guān)的約束,基本格式為{寄存器號,0}。在步驟S201中,在指令模版中添加保留內(nèi)存地址相關(guān)的約束,基本格式為{起始地址末尾地址,0}。用于制造后處理器芯片驗證的隨機驗證方法受到裝載軟件平臺的限制,裝載軟件平臺包括操作系統(tǒng)和一些應用軟件,這些裝載軟件平臺(特別是操作系統(tǒng)平臺)會要求部分寄存器作為專用寄存器保留起來,一些內(nèi)存空間也會被操作系統(tǒng)保留作為專用地址空間,僅供裝載軟件平臺使用,步驟S201中添加的約束用于確保制造后處理器芯片驗證的隨機指令生成方法生成的指令序列不包含這些裝載軟件平臺需要保留的專用寄存器或?qū)S玫刂房臻g。例如MIPSproN32操作系統(tǒng)中,通用寄存器$26、$27對應匯編程序中的寄存器ktO、ktl,是操作系統(tǒng)核心態(tài)保留寄存器,通用寄存器$28對應匯編程序中的全局指針寄存器$gp,通用寄存器$29對應匯編程序中的堆棧指針寄存器$sp,通用寄存器$31對應匯編程序中的保存返回地址的寄存器ra,這些都是不允許在隨機指令生成的程序中使用的寄存器。按照步驟S201,在指令模版中添加保留寄存器相關(guān)的約束如下{$260}{$270}{$280}{$290}{$310}下面在舉一個內(nèi)存地址相關(guān)的約束的例子。在MIPSproN32操作系統(tǒng)中,地址空間0x2aaa80000x2b000000為動態(tài)鏈接庫占用的專用地址空間,不允許在隨機指令生成的程序中使用這部分地址空間,按照步驟S201,在指令模版中添加保留內(nèi)存地址相關(guān)的約束如下{0x2aaa80000x2b000000,0}不同的裝載軟件平臺包含不同的操作系統(tǒng)和應用軟件,需要保留的寄存器和內(nèi)存地址可能不相同,都可以采取步驟S201的格式在指令模版中添加相關(guān)的約束。在步驟S202中,寄存器初始化程序生成器生成一段寄存器初始化程序代碼,初始化待驗證處理器中除步驟S201中保留寄存器外的所有寄存器。步驟S202中寄存器初始化程序生成器生成的程序代碼段在初始化寄存器時,保留步驟S201中需要保留的通用寄存器不初始化。以前述MIPSproN32為例,針對MIPSR4000系統(tǒng)包含的32個通用寄存器,保留通用寄存器$26、$27、$28、$29、$31不初始化,只需初始化除這些外剩余的寄存器。此處保留的寄存器可以根據(jù)不同的裝載軟件需要任意選取。此處給出一個在MIPS兼容處理器結(jié)構(gòu)中初始化一些通用寄存器的例子,其它更多的寄存器都可以用此種方式初始化從某個初始地址開始分配一片連續(xù)的地址空間,初始地址存入相應的寄存器(此處假設(shè)為寄存器$25),將寄存器初始化數(shù)據(jù)文件放入分配的連續(xù)地址空間中,再使用下面的指令序列把內(nèi)容讀入對應的寄存器,初始化這些寄存器。{lw$0,0($25)lw$l,8($25)lw$2,16($25)lw$3,24($25)lw$4,32($25)lw$5,40($25)lw$6,48($25)lw$7,56($25)lw$8,64($25)lw$9,72($25)lw$10,80($25)......}在步驟S203中,內(nèi)存初始化程序生成器生成一段內(nèi)存初始化程序代碼,初始化隨機生成的指令序列使用的內(nèi)存地址,內(nèi)存初始化通常以頁為單位,即初始化所有的隨機生成的指令序列使用的內(nèi)存地址所在的頁。在步驟S203中,針對隨機生成的指令序列使用到的所有內(nèi)存地址,內(nèi)存初始化程序生成器生成一段內(nèi)存初始化程序代碼,以頁為單位初始化內(nèi)存,內(nèi)存初始化程序生成器生成的程序代碼通常包括如下操作步驟S20步驟S203a標記指令序列使用的所有內(nèi)存地址,轉(zhuǎn)換并記錄地址所在的頁號,以MIPSR4000系統(tǒng)為例,內(nèi)存地址的[39:13]位對應TLB值(即頁號),據(jù)此可以轉(zhuǎn)換并記錄地址所在的頁號;步驟S203b以頁為單位,分配地址空間;步驟S203c以頁為單位,初始化所有分配的地址空間;在步驟S204中,指令計數(shù)器包含指令累加器和計數(shù)比較器兩部分,指令累加器用于累加并統(tǒng)計生成的隨機指令數(shù)目,計數(shù)比較器用于比較生成的隨機指令數(shù)目是否達到指令模板要求的指令數(shù)目。當隨機程序生成引擎生成了一條隨機指令時,指令計數(shù)器執(zhí)行如下操作步驟S20步驟S204a指令累加器加1,結(jié)果仍放在指令累加器中,指令累加器的值標志著生成的隨機指令數(shù)目;步驟S204b將指令累加器的值送入計數(shù)比較器,與指令模板要求的指令數(shù)目相比較,如果指令累加器的值小于指令模板要求的指令數(shù)目,執(zhí)行步驟S204c,否則執(zhí)行步驟S204d;步驟S204c隨機程序生成引擎繼續(xù)執(zhí)行,生成一條新的隨機指令;步驟S204d隨機程序生成引擎不再生成新的隨機指令,轉(zhuǎn)向初始化文件生成器和比較程序生成器,準備結(jié)束指令生成過程。在步驟S205中,重新設(shè)計的隨機程序生成引擎,不再包含寄存器初始化文件生成機制,即隨機程序生成引擎不再生成寄存器初始化文件。在步驟S205中,重新設(shè)計的隨機程序生成引擎,不再包含內(nèi)存初始化文件生成機制,即隨機程序生成引擎不再生成內(nèi)存初始化文件。重新設(shè)計的隨機程序生成引擎,不再包含寄存器和內(nèi)存初始化文件生成機制,依賴步驟S202中寄存器初始化程序生成器生成的程序代碼段完成寄存器初始化功能,依賴步驟S203中內(nèi)存初始化程序生成器生成的程序代碼段完成內(nèi)存初始化功能。在步驟S205中,重新設(shè)計的隨機程序生成引擎遵循步驟S201中添加的保留寄存器和保留內(nèi)存地址相關(guān)的約束,即隨機程序生成引擎不使用保留的寄存器和保留的內(nèi)存地址。在前述步驟S201中,以MIPSproN32為例,添加了保留寄存器$26、$27、$28、$29、$31和保留內(nèi)存地址0x2aaa80000x2b000000的約束,則步驟S205中重新設(shè)計的隨機程序生成引擎不使用保留的寄存器$26、$27、$28、$29、$31和保留的內(nèi)存地址空間0x2aaa80000x2b000000。在步驟S206中,改變原有指令序列產(chǎn)生終止條件包括總體指令產(chǎn)生數(shù)目減1,在指令序列最末尾放置一條跳轉(zhuǎn)指令。用于制造后處理器芯片驗證的隨機驗證方法生成的指令序列需要裝載到軟件平臺(包括操作系統(tǒng)和一些應用軟件)上運行,改變原有指令序列產(chǎn)生終止條件,總體指令產(chǎn)生數(shù)目減1,在指令序列最末尾放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)指令目的地址按照裝載的軟件平臺需求指定,目的是保證隨機生成的指令序列不會影響軟件平臺本身的運行,即保證運行完裝載的隨機生成的指令序列后,軟件平臺仍然可以保持正常運行。在步驟S207中,隨機生成程序記錄器記錄隨機的匯編代碼段和二進制代碼段,分別生成兩個文件,即匯編代碼段文件和二進制代碼段文件。在步驟S207中,隨機生成程序記錄器還要記錄隨機生成的指令序列中每條指令對應的指令計數(shù)器(ProgramCounter,簡稱PC)的值以及每條指令對應的轉(zhuǎn)換后援存儲器(Translationlookasidebuffer,簡稱TLB)頁號,分別生成兩個文件。用于制造后處理器芯片驗證的隨機驗證方法生成的指令序列需要裝載到軟件平臺上運行,裝載軟件平臺包括操作系統(tǒng)和一些應用軟件,這些裝載軟件平臺要求指令序列以匯編代碼段文件或二進制代碼段文件格式裝載,例如操作系統(tǒng)平臺通常要求二進制代碼段文件以便調(diào)度和運行。指令序列中每條指令對應的PC值表示指令的虛地址,每條指令對應的TLB值表示指令所在的頁號,對于確定的指令,指令所在的頁號可由指令計數(shù)器的值推出。以MIPSR4000系統(tǒng)為例,PC的[39:13]位對應TLB值。記錄隨機生成的指令序列中每條指令對應的PC值和TLB值并分別生成兩個文件,根據(jù)這兩個文件,在生成指令序列裝載到軟件平臺時,可以確定裝載到哪個頁的哪個位置,其中裝載到哪個頁由TLB值文件確定,而哪個位置則由PC值文件來確定。在步驟S208中,寄存器比較程序生成器生成一段寄存器比較程序代碼,比較運行全部步驟S207中記錄的隨機生成的指令序列后,待驗證處理器中所有的寄存器值和指令級處理器模擬器的模擬結(jié)果中寄存器的值。在步驟S208中,寄存器比較程序生成器生成的程序代碼段順序比較所有的寄存器結(jié)果值,結(jié)果一致則繼續(xù)比較下一個寄存器,直到所有寄存器比較完畢,結(jié)果不一致則記錄出錯信息到日志文件中,同時在日志文件中記錄指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)及指令模板對應的配置文件名。在步驟S208中,如果步驟S202中寄存器初始化程序生成器初始化寄存器時保留了23個通用寄存器沒有初始化,則寄存器比較程序生成器生成的程序代碼段順序比較寄存器結(jié)果值時跳過沒有初始化的幾個寄存器。仍以前述步驟S201中MIPSproN32為例,由于添加了保留寄存器$26、$27、$28、$29、$31,寄存器比較程序生成器生成的程序代碼段順序比較除保留寄存器$26、$27、$28、$29、$31外所有的寄存器結(jié)果值。具體實現(xiàn)方法的一個例子是可以指定一個地址0x7c204000,以該地址作為起始地址順序存放指令級處理器模擬器的模擬結(jié)果中需要比較的寄存器的值,再另外指定一個地址0X7c208000,以該地址作為起始地址順序存放隨機生成的指令序列實際運行結(jié)果中需要比較的寄存器的值,最后依次比較這兩塊內(nèi)存空間中存放的值,結(jié)果一致則繼續(xù)比較下一個值,直到內(nèi)存空間中存放的所有數(shù)值比較完畢,結(jié)果不一致則記錄出錯信息到日志文件中,同時在日志文件中記錄指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)及指令模板對應的配置文件名。一個記錄出錯信息的日志文件的具體例子如下文件名error,log文件內(nèi)容指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)(例如355)指令模板對應的配置文件名(例如fixpointjonfig)出錯的寄存器號(例如$5)出錯的寄存器模擬結(jié)果(例如0xffffffff98355000)出錯的寄存器實際結(jié)果(例如0x0000000098355000)在步驟S209中,內(nèi)存比較程序生成器生成一段內(nèi)存比較程序代碼,把待驗證處理器運行全部步驟S207中記錄的隨機生成的指令序列后全部緩存(Cache)的內(nèi)容刷新到內(nèi)存中,比較待驗證處理器運行全部步驟S207中記錄的隨機生成的指令序列后內(nèi)存中內(nèi)容發(fā)生過變化的地址對應的值與同樣運行全部步驟S207中記錄的隨機生成的指令序列后指令級處理器模擬器的模擬結(jié)果中相應內(nèi)存地址保存的內(nèi)容,結(jié)果全部一致則結(jié)束隨機驗證過程,結(jié)果不一致則記錄出錯信息到日志文件中,同時在日志文件中記錄指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)及指令模板對應的配置文件名。步驟S209可以與步驟S208使用同一個記錄出錯信息的日志文件,一個記錄出錯信息的日志文件的具體例子如下文件名error,log文件內(nèi)容指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)(例如355)指令模板對應的配置文件名(例如fixpointjonfig)出錯的寄存器號(例如$5)出錯的寄存器模擬結(jié)果(例如0xffffffff8355000)出錯的寄存器實際結(jié)果(例如0x0000000098355000)出錯的內(nèi)存地址(例如0x00000fff86630750)出錯的內(nèi)存地址存放的模擬結(jié)果(例如0xffffffff46786358)出錯的內(nèi)存地址存放的實際結(jié)果(例如0xefffffff46786358)下面結(jié)合圖3進一步詳細說明圖2示出的用于制造后處理器芯片驗證的隨機指令生成方法部分,圖3是依據(jù)本發(fā)明的一個具體實施例的隨機指令生成方法的示意圖,如圖3所示其包括指令庫S301、指令模板S302、約束求解器S303、寄存器初始化程序生成器S304、內(nèi)存初始化程序生成器S305、指令計數(shù)器S306、隨機程序生成引擎S307、指令級模擬器S308、指令過濾器S309、隨機生成程序記錄器S310、寄存器比較程序生成器S311、內(nèi)存比較程序生成器S312,各部分的功能描述如下指令庫S301中包含處理器支持的所有有效指令;指令模板S302是一系列配置文件,用于進行指令的配置和規(guī)范;約束求解器S303對指令模板S302進行求解,求解結(jié)果被分為四部分,分別為寄存器約束、內(nèi)存地址約束、允許生成的指令數(shù)目約束、其它指令相關(guān)約束;寄存器約束用于指導寄存器初始化程序生成器S304在約束范圍內(nèi)生成寄存器初始化程序,程序中寄存器初始化的數(shù)值應該與生成的指令序列中內(nèi)存初始化的值相同;內(nèi)存地址約束用于指導內(nèi)存初始化程序生成器S305在約束范圍內(nèi)生成內(nèi)存初始化程序,初始化相應的內(nèi)存頁,程序中內(nèi)存頁初始化的數(shù)值應該與生成的指令序列中內(nèi)存初始化的值相同;允許生成的指令數(shù)目約束送入指令計數(shù)器S306,作為允許生成的指令數(shù)目的上限,指令計數(shù)器S306會記錄和累加每一次生成的指令數(shù)目,判斷累加結(jié)果是否達到允許生成的指令數(shù)目的上限;約束求解器S303對指令模板S302求解后的結(jié)果中其它指令相關(guān)約束部分指導隨機程序生成引擎S307生成相應的指令;隨機程序生成引擎S307可以有效支持配置文件約束下的指令生成;指令級模擬器S308是待驗證的處理器的最簡單參考模型,支持指令級仿真,提供指令的正確執(zhí)行結(jié)果一一即模擬結(jié)果,同時更新指令級處理器模擬器狀態(tài);指令過濾器S309根據(jù)指令級模擬器的執(zhí)行結(jié)果判斷是否是非法指令,決定是否要丟棄該指令,及時恢復該指令產(chǎn)生前處理器模擬器的狀態(tài);隨機生成程序記錄器S310記錄所有順利通過指令過濾器S309的指令,隨機生成程序記錄器S310會在四個文件中分別順序記錄這些指令及其模擬結(jié)果的匯編代碼和二進制代碼、指令對應的指令計數(shù)器(ProgramCoimter)的值、指令對應的TLB頁號;寄存器比較程序生成器S311生成一段寄存器比較程序,把實際執(zhí)行生成的指令序列后所有寄存器的值與指令級模擬器S307模擬這個指令序列后給出的相應寄存器的值進行對比,結(jié)果不一致時記錄出錯信息到日志文件;內(nèi)存比較程序生成器S312生成一段內(nèi)存比較程序,包括刷新內(nèi)存程序段和內(nèi)存比較程序段兩部分,刷新內(nèi)存程序段把待驗證處理器運行全部記錄的隨機生成的指令序列后全部緩存(Cache)的內(nèi)容刷新到內(nèi)存中,內(nèi)存比較程序段比較待驗證處理器運行全部記錄的隨機生成的指令序列后內(nèi)存中內(nèi)容發(fā)生過變化的地址對應的值與同樣運行全部記錄的隨機生成的指令序列后指令級處理器模擬器的模擬結(jié)果中相應內(nèi)存地址保存的內(nèi)容,結(jié)果不一致時記錄出錯信息到日志文件,結(jié)果全部一致則結(jié)束隨機驗證過程;內(nèi)存比較程序生成器S312完成程序生成,則本次隨機指令生成結(jié)束,準備進行平臺裝載S313?;氐綀D2,再次進一步說明用于制造后處理器芯片驗證的平臺裝載方法部分。平臺裝載方法包括如下步驟步驟S210,將前面用于制造后處理器芯片驗證的隨機指令生成方法后生成的文件轉(zhuǎn)化為軟件平臺可調(diào)度的文件格式;步驟S211,指定內(nèi)存中寄存器初始化程序生成器生成的程序代碼段裝載的起始位置;步驟S212,指定內(nèi)存初始化程序生成器生成的程序代碼段在內(nèi)存中裝載的起始位置;步驟S213,指定步驟S207中記錄的隨機生成的指令序列在內(nèi)存中裝載的起始位置;步驟S214,指定內(nèi)存中寄存器比較程序生成器生成的程序代碼段裝載的起始位置;步驟S215,指定內(nèi)存比較程序生成器生成的程序代碼段在內(nèi)存中裝載的起始位置;步驟S216,按照步驟S211、步驟S212、步驟S213、步驟S214、步驟S215指定的起始位置(即地址入口)分別裝載對應的經(jīng)過步驟S210轉(zhuǎn)化后的寄存器初始化程序生成器生成的程序代碼段、內(nèi)存初始化程序生成器生成的程序代碼段、隨機生成的指令序列、寄存器比較程序生成器生成的程序代碼段、內(nèi)存比較程序生成器生成的程序代碼段的二進制文件。在步驟S210中,軟件平臺可調(diào)度的文件格式包括匯編代碼、十六進制或二進制代碼段文件格式。平臺裝載方法用于將制造后處理器芯片驗證的隨機驗證方法生成的指令序列裝載到軟件平臺上運行,用于裝載隨機生成的指令序列的軟件平臺包括操作系統(tǒng)和一些應用軟件,這些軟件平臺要求指令序列以匯編代碼文件、十六進制或二進制代碼文件格式裝載,例如操作系統(tǒng)平臺通常要求二進制代碼文件以便調(diào)度和運行,步驟S210用于完成將制造后處理器芯片驗證的隨機指令生成方法后生成的文件轉(zhuǎn)化為具體軟件平臺可調(diào)度的文件格式。以MIPS64指令系統(tǒng)為例,下面給出一個隨機生成的指令序列片斷的匯編代碼文件和對應的以小尾端表示的十六進制代碼文件格式<table>tableseeoriginaldocumentpage17</column></row><table>在步驟S211中,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存中寄存器初始化程序生成器生成的程序代碼段應裝載在用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。在步驟S212中,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存初始化程序生成器生成的程序代碼段應裝載在內(nèi)存中用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。在步驟S213中,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存中隨機生成的指令序列應裝載在用戶態(tài)地址空間,即裝載的起始位置加指令序列程序代碼段實際長度應不超出用戶態(tài)地址空間。在步驟S214中,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存中寄存器比較程序生成器生成的程序代碼段應裝載在用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。在步驟S215中,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存比較程序生成器生成的程序代碼段應裝載在內(nèi)存中用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。步驟52115212、5213、5214、5215中用戶態(tài)地址空間由具體使用的指令集系統(tǒng)和裝載平臺確定,以MIPS32系統(tǒng)為例,用戶態(tài)地址空間為0x000000000x7FFFFFFF。在步驟S216中,裝載代碼段時,步驟S211、步驟S212、步驟S213、步驟S214、步驟S215指定的起始位置加對應的代碼段長度應滿足遞增關(guān)系,即步驟S211指定的起始位置<寄存器初始化程序生成器生成的程序代碼段結(jié)束位置<步驟S212指定的起始位置<內(nèi)存初始化程序生成器生成的程序代碼段結(jié)束位置<步驟S213指定的起始位置<隨機生成的指令序列結(jié)束位置<步驟S214指定的起始位置<寄存器比較程序生成器生成的程序代碼段結(jié)束位置<步驟S215指定的起始位置<內(nèi)存比較程序生成器生成的程序代碼段結(jié)束位置。下面結(jié)合圖4進一步詳細說明圖2中示出的平臺裝載方法部分。圖4是依據(jù)本發(fā)明的一個具體實施例的平臺裝載方法的示意圖。如圖4所示,寄存器初始化程序生成器生成的程序代碼段S402裝載的起始位置為寄存器初始化程序入口地址S401,內(nèi)存初始化程序生成器生成的程序代碼段S404裝載的起始位置為內(nèi)存初始化程序入口地址S403,隨機生成的指令序列S406裝載的起始位置為隨機生成的指令序列入口地址S405,寄存器比較程序生成器生成的程序代碼段S408裝載的起始位置為寄存器比較程序入口地址S407,內(nèi)存比較程序生成器生成的程序代碼段S410裝載的起始位置為內(nèi)存變化載入寄存器程序入口地址S409,同時滿足步驟S216的裝載規(guī)則,即S211指定的起始位置<寄存器初始化程序生成器生成的程序代碼段結(jié)束位置<步驟S212指定的起始位置<內(nèi)存初始化程序生成器生成的程序代碼段結(jié)束位置<步驟S213指定的起始位置<隨機生成的指令序列結(jié)束位置<步驟S214指定的起始位置<寄存器比較程序生成器生成的程序代碼段結(jié)束位置<步驟S215指定的起始位置<內(nèi)存比較程序生成器生成的程序代碼段結(jié)束位置。實際運行時,裝載軟件平臺上的進程S411會跳轉(zhuǎn)到寄存器初始化程序入口地址,依次執(zhí)行寄存器初始化程序生成器生成的程序代碼段、內(nèi)存初始化程序生成器生成的程序代碼段、隨機生成的指令序列、寄存器比較程序生成器生成的程序代碼段、內(nèi)存比較程序生成器生成的程序代碼段,然后跳回裝載軟件平臺上的進程繼續(xù)執(zhí)行。依據(jù)本發(fā)明的另一具體實施例,提供一種用于制造后處理器芯片驗證的隨機驗證裝置,包括隨機指令初始化模塊,用于在指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束,以及增加寄存器初始化程序生成器、內(nèi)存初始化程序生成器和指令計數(shù)器;所述指令計數(shù)器包含指令累加器和計數(shù)比較器兩部分,指令累加器用于累加并統(tǒng)計生成的隨機指令數(shù)目,計數(shù)比較器用于比較生成的隨機指令數(shù)目是否達到指令模板要求的指令數(shù)目;隨機指令生成模塊,用于改造隨機程序生成引擎,去除原有的寄存器初始化文件生成機制和內(nèi)存初始化文件生成機制,并改變原有指令序列產(chǎn)生終止條件,在指令序列最末尾放置一條跳轉(zhuǎn)指令;隨機指令記錄比較模塊,用于增加隨機生成程序記錄器、寄存器比較程序生成器和內(nèi)存比較程序生成器;所述隨機生成程序記錄器記錄隨機生成的指令序列的匯編代碼段、二進制代碼段、序列中每條指令對應的指令計數(shù)器的值以及每條指令對應的轉(zhuǎn)換后援存儲器頁號;所述寄存器比較程序生成器生成一段寄存器比較程序代碼,比較運行隨機生成的指令序列后待驗證處理器中除隨機指令初始化模塊中保留寄存器外的所有寄存器值和指令級處理器模擬器的模擬結(jié)果中對應寄存器的值,結(jié)果一致則繼續(xù)比較下一個寄存器,直到所有寄存器比較完畢,結(jié)果不一致則記錄出錯信息到日志文件中;所述內(nèi)存比較程序生成器生成一段內(nèi)存比較程序代碼,把待驗證處理器運行隨機生成的指令序列后全部緩存的內(nèi)容刷新到內(nèi)存中,比較待驗證處理器運行隨機生成的指令序列后內(nèi)存中內(nèi)容發(fā)生過變化的地址對應的值與同樣運行隨機生成的指令序列后指令級處理器模擬器的模擬結(jié)果中相應內(nèi)存地址保存的內(nèi)容,結(jié)果全部一致則結(jié)束隨機驗證過程,結(jié)果不一致則記錄出錯信息到日志文件中;平臺裝載模塊,用于轉(zhuǎn)化所述隨機指令生成模塊和所述隨機指令記錄比較模塊生成的文件為軟件平臺可調(diào)度的文件格式,指定所述寄存器初始化程序生成器、內(nèi)存初始化程序生成器、寄存器比較程序生成器以及內(nèi)存比較程序生成器所生成的程序代碼段以及隨機生成的指令序列在內(nèi)存中裝載的起始位置,并按照所述起始位置分別裝載被轉(zhuǎn)化后的以軟件平臺可調(diào)度的文件為格式的程序代碼段和指令文件;所述平臺裝載模塊,為了不干擾待裝載軟件平臺的正常運行,包括隨機生成的指令序列在內(nèi)的所有程序代碼段都裝載在內(nèi)存中用戶態(tài)地址空間,且裝載不同程序代碼段的地址空間沒有重疊。其中,在隨機指令初始化模塊中,指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束,指令模版中添加保留寄存器相關(guān)的約束基本格式為{寄存器號,0},指令模版中添加保留內(nèi)存地址相關(guān)的約束,基本格式為{起始地址末尾地址,0}。其中,在隨機指令初始化模塊中,增加寄存器初始化程序生成器,寄存器初始化程序生成器生成一段寄存器初始化程序代碼,初始化待驗證處理器中除在指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束中保留寄存器外的所有寄存器。其中,在隨機指令初始化模塊中,增加內(nèi)存初始化程序生成器,內(nèi)存初始化程序生成器生成一段內(nèi)存初始化程序代碼,初始化改造隨機程序生成引擎中記錄的隨機生成的指令序列使用到的內(nèi)存地址。內(nèi)存初始化通常以頁為單位,即初始化所有的隨機生成的指令序列使用的內(nèi)存地址所在的頁。其中,在隨機指令初始化模塊中,增加指令計數(shù)器,指令計數(shù)器包含指令累加器和計數(shù)比較器兩部分,指令累加器用于累加并統(tǒng)計生成的隨機指令數(shù)目,計數(shù)比較器用于比較生成的隨機指令數(shù)目是否達到指令模板要求的指令數(shù)目。其中,在隨機指令生成模塊中,改造隨機程序生成引擎,去除原有的寄存器初始化文件生成機制和內(nèi)存初始化文件生成機制,重新設(shè)計的隨機程序生成引擎,不再包含寄存器初始化文件生成機制,即隨機程序生成引擎不再生成寄存器初始化文件;重新設(shè)計的隨機程序生成引擎,不再包含內(nèi)存初始化文件生成機制,即隨機程序生成引擎不再生成內(nèi)存初始化文件;重新設(shè)計的隨機程序生成引擎遵循在指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束中添加的保留寄存器和保留內(nèi)存地址相關(guān)的約束,即隨機程序生成引擎不使用保留的寄存器和保留的內(nèi)存地址。其中,在隨機指令生成模塊中,改造隨機程序生成引擎,改變原有指令序列產(chǎn)生終止條件,保證在指令序列最末尾的指令為跳轉(zhuǎn)指令,改變原有指令序列產(chǎn)生終止條件包括總體指令產(chǎn)生數(shù)目減1,在指令序列最末尾放置一條跳轉(zhuǎn)指令。其中,在隨機指令記錄比較模塊中,增加隨機生成程序記錄器,隨機生成程序記錄器記錄隨機生成的指令序列的匯編代碼段和二進制代碼段,分別生成兩個文件,即匯編代碼段文件和二進制代碼段文件。隨機生成程序記錄器還要記錄隨機生成的指令序列中每條指令對應的指令計數(shù)器(ProgramCounter)的值以及每條指令對應的轉(zhuǎn)換后援存儲器(Translationlookasidebuffer,簡稱TLB)頁號,分別生成兩個文件。其中,在隨機指令記錄比較模塊中,增加寄存器比較程序生成器,寄存器比較程序生成器生成一段寄存器比較程序代碼,比較運行增加隨機生成程序記錄器中記錄的隨機生成的指令序列后,待驗證處理器中所有的寄存器值和指令級處理器模擬器的模擬結(jié)果中寄存器的值;寄存器比較程序生成器生成的程序代碼段順序比較所有的寄存器結(jié)果值,結(jié)果一致則繼續(xù)比較下一個寄存器,直到所有寄存器比較完畢,結(jié)果不一致則記錄出錯信息到日志文件中,同時在日志文件中記錄指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)及指令模板對應的配置文件名。其中,在隨機指令記錄比較模塊中,增加寄存器比較程序生成器,如果增加寄存器初始化程序生成器中寄存器初始化程序生成器初始化寄存器時保留了23個通用寄存器沒有初始化,則寄存器比較程序生成器生成的程序代碼段順序比較寄存器結(jié)果值時跳過沒有初始化的幾個寄存器。其中,在隨機指令記錄比較模塊中,增加內(nèi)存比較程序生成器,內(nèi)存比較程序生成器生成一段內(nèi)存比較程序代碼,把待驗證處理器運行全部增加隨機生成程序記錄器中記錄的隨機生成的指令序列后全部緩存(Cache)的內(nèi)容刷新到內(nèi)存中,比較待驗證處理器運行全部增加隨機生成程序記錄器中記錄的隨機生成的指令序列后內(nèi)存中內(nèi)容發(fā)生過變化的地址對應的值與同樣運行全部增加隨機生成程序記錄器中記錄的隨機生成的指令序列后指令級處理器模擬器的模擬結(jié)果中相應內(nèi)存地址保存的內(nèi)容,結(jié)果全部一致則結(jié)束隨機驗證過程,結(jié)果不一致則記錄出錯信息到日志文件中,同時在日志文件中記錄指令模板中隨機生成這個發(fā)生錯誤的指令序列的隨機種子數(shù)及指令模板對應的配置文件名。其中,在平臺裝載模塊中,指定內(nèi)存中寄存器初始化程序生成器生成的程序代碼段裝載的起始位置,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存中寄存器初始化程序生成器生成的程序代碼段裝載在用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。其中,在平臺裝載模塊中,指定內(nèi)存初始化程序生成器生成的程序代碼段在內(nèi)存中裝載的起始位置,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存初始化程序生成器生成的程序代碼段裝載在內(nèi)存中用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。其中,在平臺裝載模塊中,指定增加隨機生成程序記錄器中記錄的隨機生成的指令序列在內(nèi)存中裝載的起始位置,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存中隨機生成的指令序列裝載在用戶態(tài)地址空間,即裝載的起始位置加指令序列程序代碼段實際長度應不超出用戶態(tài)地址空間。其中,在平臺裝載模塊中,指定內(nèi)存中寄存器比較程序生成器生成的程序代碼段裝載的起始位置,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存中寄存器比較程序生成器生成的程序代碼段裝載在用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。其中,在平臺裝載模塊中,指定內(nèi)存比較程序生成器生成的程序代碼段在內(nèi)存中裝載的起始位置,為了不干擾待裝載軟件平臺的正常運行,內(nèi)存比較程序生成器生成的程序代碼段裝載在內(nèi)存中用戶態(tài)地址空間,即裝載的起始位置加程序代碼段實際長度應不超出用戶態(tài)地址空間。其中,在平臺裝載模塊中,指定的全部起始位置加對應的代碼段長度滿足遞增關(guān)系,即指定內(nèi)存中寄存器初始化程序生成器生成的程序代碼段裝載的起始位置<寄存器初始化程序生成器生成的程序代碼段結(jié)束位置<指定內(nèi)存初始化程序生成器生成的程序代碼段在內(nèi)存中裝載的起始位置<內(nèi)存初始化程序生成器生成的程序代碼段結(jié)束位置<指定隨機生成的指令序列在內(nèi)存中裝載的起始位置<隨機生成的指令序列結(jié)束位置<指定內(nèi)存中寄存器比較程序生成器生成的程序代碼段裝載的起始位置<寄存器比較程序生成器生成的程序代碼段結(jié)束位置<指定內(nèi)存比較程序生成器生成的程序代碼段在內(nèi)存中裝載的起始位置<內(nèi)存比較程序生成器生成的程序代碼段結(jié)束位置。盡管參照優(yōu)選實施例已經(jīng)描述了本發(fā)明,本領(lǐng)域熟練技術(shù)人員將認識到,可以進行形式和細節(jié)上的改變,只要不脫離本發(fā)明的精神和范圍。本發(fā)明試圖不局限于被公開的具體實施例,如預期用于實施本發(fā)明的最佳模式,相反,本發(fā)明將包括落入附加權(quán)利要求的范圍的全部實施例。權(quán)利要求一種用于制造后處理器芯片驗證的隨機驗證方法,其特征在于,所述方法包括下面的步驟S1在指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束,用于屏蔽保留寄存器和保留內(nèi)存地址不被生成的隨機驗證程序使用;S2增加寄存器初始化程序生成器、內(nèi)存初始化程序生成器和指令計數(shù)器;S3改造隨機程序生成引擎,去除原有的寄存器初始化文件生成機制和內(nèi)存初始化文件生成機制,并改變原有指令序列產(chǎn)生終止條件;S4增加隨機生成程序記錄器、寄存器比較程序生成器和內(nèi)存比較程序生成器;S5將運用所述步驟S1到步驟S4的用于制造后處理器芯片驗證的隨機指令生成方法后生成的文件轉(zhuǎn)化為軟件平臺可調(diào)度的文件格式;S6指定所述步驟S1到步驟S4的用于制造后處理器芯片驗證的隨機指令生成方法中寄存器初始化程序生成器、內(nèi)存初始化程序生成器、寄存器比較程序生成器以及內(nèi)存比較程序生成器所生成的程序代碼段以及隨機生成的指令序列在內(nèi)存中裝載的起始位置;S7將所述步驟S5轉(zhuǎn)化為軟件平臺可調(diào)度的文件格式的程序代碼段以及隨機生成的指令序列分別按照所述步驟S6中指定的起始位置裝載進相應的內(nèi)存地址中。2.如權(quán)利要求1所述的方法,其特征在于,所述步驟S2中,指令計數(shù)器包含指令累加器和計數(shù)比較器兩部分,指令累加器用于累加并統(tǒng)計生成的隨機指令數(shù)目,計數(shù)比較器用于比較生成的隨機指令數(shù)目是否達到指令模板要求的指令數(shù)目。3.如權(quán)利要求1所述的方法,其特征在于,所述步驟S4中,隨機生成程序記錄器記錄隨機生成的指令序列的匯編代碼段、二進制代碼段、序列中每條指令對應的指令計數(shù)器的值以及每條指令對應的轉(zhuǎn)換后援存儲器頁號。4.如權(quán)利要求1所述的方法,其特征在于,所述步驟S4中,寄存器比較程序生成器生成寄存器比較程序代碼,比較運行隨機生成的指令序列后待驗證處理器中除所述步驟1中保留寄存器外的所有寄存器值和指令級處理器模擬器的模擬結(jié)果中對應寄存器的值,結(jié)果一致則繼續(xù)比較下一個寄存器,直到所有寄存器比較完畢,結(jié)果不一致則記錄出錯信息。5.如權(quán)利要求1所述的方法,其特征在于,所述步驟S4中,內(nèi)存比較程序生成器生成內(nèi)存比較程序代碼,把待驗證處理器運行隨機生成的指令序列后全部緩存的內(nèi)容刷新到內(nèi)存中,比較待驗證處理器運行隨機生成的指令序列后內(nèi)存中內(nèi)容發(fā)生過變化的地址對應的值與同樣運行隨機生成的指令序列后指令級處理器模擬器的模擬結(jié)果中相應內(nèi)存地址保存的內(nèi)容,結(jié)果全部一致則結(jié)束隨機驗證過程,結(jié)果不一致則記錄出錯信息。6.如權(quán)利要求1所述的方法,其特征在于,所述步驟S6中,包括隨機生成的指令序列在內(nèi)的所有程序代碼段都應裝載在內(nèi)存中用戶態(tài)地址空間,且裝載不同程序代碼段的地址空間沒有重疊。7.一種用于制造后處理器芯片驗證的隨機驗證裝置,其特征在于,所述裝置包括隨機指令初始化模塊,用于在指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束,以及增加寄存器初始化程序生成器、內(nèi)存初始化程序生成器和指令計數(shù)器;隨機指令生成模塊,用于改造隨機程序生成引擎,去除原有的寄存器初始化文件生成機制和內(nèi)存初始化文件生成機制,并改變原有指令序列產(chǎn)生終止條件;隨機指令記錄比較模塊,用于增加隨機生成程序記錄器、寄存器比較程序生成器和內(nèi)存比較程序生成器;平臺裝載模塊,用于轉(zhuǎn)化所述隨機指令生成模塊和所述隨機指令記錄比較模塊生成的文件為軟件平臺可調(diào)度的文件格式,指定所述寄存器初始化程序生成器、內(nèi)存初始化程序生成器、寄存器比較程序生成器以及內(nèi)存比較程序生成器所生成的程序代碼段以及隨機生成的指令序列在內(nèi)存中裝載的起始位置,并按照所述起始位置分別裝載被轉(zhuǎn)化后的以軟件平臺可調(diào)度的文件為格式的程序代碼段和指令文件。8.如權(quán)利要求7所述的裝置,其特征在于,所述指令計數(shù)器包含指令累加器和計數(shù)比較器兩部分,指令累加器用于累加并統(tǒng)計生成的隨機指令數(shù)目,計數(shù)比較器用于比較生成的隨機指令數(shù)目是否達到指令模板要求的指令數(shù)目。9.如權(quán)利要求7所述的裝置,其特征在于,所述隨機生成程序記錄器記錄隨機生成的指令序列的匯編代碼段、二進制代碼段、序列中每條指令對應的指令計數(shù)器的值以及每條指令對應的轉(zhuǎn)換后援存儲器頁號。10.如權(quán)利要求7所述的裝置,其特征在于,所述寄存器比較程序生成器生成寄存器比較程序代碼,比較運行隨機生成的指令序列后待驗證處理器中除隨機指令初始化模塊中保留寄存器外的所有寄存器值和指令級處理器模擬器的模擬結(jié)果中對應寄存器的值,結(jié)果一致則繼續(xù)比較下一個寄存器,直到所有寄存器比較完畢,結(jié)果不一致則記錄出錯信息。11.如權(quán)利要求7所述的裝置,其特征在于,所述內(nèi)存比較程序生成器生成內(nèi)存比較程序代碼,把待驗證處理器運行隨機生成的指令序列后全部緩存的內(nèi)容刷新到內(nèi)存中,比較待驗證處理器運行隨機生成的指令序列后內(nèi)存中內(nèi)容發(fā)生過變化的地址對應的值與同樣運行隨機生成的指令序列后指令級處理器模擬器的模擬結(jié)果中相應內(nèi)存地址保存的內(nèi)容,結(jié)果全部一致則結(jié)束隨機驗證過程,結(jié)果不一致則記錄出錯信息。12.如權(quán)利要求7所述的裝置,其特征在于,所述平臺裝載模塊,包括隨機生成的指令序列在內(nèi)的所有程序代碼段都裝載在內(nèi)存中用戶態(tài)地址空間,且裝載不同程序代碼段的地址空間沒有重疊。全文摘要本發(fā)明公開了一種用于制造后處理器芯片驗證的隨機驗證方法及裝置。方法包括如下步驟在指令模版中添加保留寄存器和保留內(nèi)存地址相關(guān)的約束;增加寄存器初始化程序生成器、內(nèi)存初始化程序生成器和指令計數(shù)器;改造隨機程序生成引擎,去除原有的寄存器初始化文件生成機制和內(nèi)存初始化文件生成機制,并改變原有指令序列產(chǎn)生終止條件;增加隨機生成程序記錄器、寄存器比較程序生成器和內(nèi)存比較程序生成器;將運用前述用于制造后處理器芯片驗證的隨機指令生成方法后生成的文件轉(zhuǎn)化為軟件平臺可調(diào)度的文件格式;指定不同程序代碼段在內(nèi)存中裝載的起始位置;將轉(zhuǎn)化為軟件平臺可調(diào)度的文件格式的程序代碼段按照指定的起始位置裝載進相應的內(nèi)存地址中。文檔編號G06F11/36GK101826050SQ20101010463公開日2010年9月8日申請日期2010年2月3日優(yōu)先權(quán)日2010年2月3日發(fā)明者沈海華,王朋宇,黃靜申請人:北京龍芯中科技術(shù)服務(wù)中心有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1