微處理器指令集驗證方法
2023-08-12 11:20:46 1
專利名稱:微處理器指令集驗證方法
技術領域:
本發明涉及一種微處理器指令集的驗證方法,具體用於微處理器設計各階段的功能驗證。
背景技術:
指令集驗證在微處理器設計中非常關鍵並貫穿於整個設計過程。指令集定義實現的功能越多,電路的集成複雜度的越高,指令集驗證工作的複雜度和工作量越大。設計一種自動化、可移植、驗證覆蓋率高的指令集驗證方法對設計正確性、可靠性和縮短晶片從設計到流片的時間非常重要。傳統的功能驗證方法是通過人工編寫大量的「指令序列」作為驗證激勵,施加到 微處理器設計上,通過EDA軟體查看波形,檢查指令執行的正確性。這種驗證方法具有很大的「隨意性」,通常是設計者考慮到某一方面的指令集功能,就設計相應的指令序列,由微處理器執行該段序列來驗證設計的正確性。這樣就很難完全覆蓋到微處理器指令集定義的全部功能。隨著微處理器設計規模的增大,需要編寫用於驗證的指令序列數量成指數量級增長,自動化程度不高。而且當指令集定義發生改變時,需要針對微處理器重新設計驗證指令序列,之前的驗證代碼很難被移植到新設計的驗證上。另一種方法是利用高級語言,如C語言,編寫複雜的驗證程序,經過編譯器編譯成二進位碼,在微處理器上運行該二進位代碼對微處理器設計進行驗證。這種方法的缺點是,編譯器採用優化策略對二進位代碼經過優化後,產生的驗證代碼不能夠完全覆蓋到微處理器的設計,在一些路徑上會缺少對應的驗證激勵。
發明內容
為了克服現有技術的不足,本發明提供一種自動化、可移植的微處理器指令集驗證方法,以提高驗證的覆蓋率。本發明解決其技術問題所採用的技術方案包括以下步驟步驟I、將監控程序加載到微處理器中,並啟動微處理器運行監控程序;步驟2、對微處理器支持的指令集分類,每一類指令由一組參數確定,針對每一類指令,設計一個指令驗證的代碼框架,將需要驗證的指令或指令序列嵌入到這個代碼框架中;步驟3、對每組參數按照取指範圍遍歷取值,根據每組參數值的組合,生成驗證的指令或指令序列,並將這個指令或指令序列嵌入到步驟2的驗證代碼框架中;步驟4、將驗證代碼框架加載到微處理器中,並發送協議字給微處理器上的監控程序,使微處理器轉入到驗證代碼框架的執行;步驟5、查詢微處理器驗證結束協議字,如果驗證代碼執行結束,將執行結果讀出;否則,繼續查詢;步驟6、將步驟5的執行結果和指令執行的期望結果比較,結果正確,將比較結果記錄到日誌文件中,轉步驟2,繼續遍歷驗證;否則,輸出錯誤信息,並記錄到日誌文件。所述的監控程序按以下步驟操作步驟1-1、查詢驗證代碼框架加載結束協議字,如果協議字有效,轉步驟1-2 ;否則繼續查詢;步驟1-2、跳轉至驗證代碼框架,執行指令驗證代碼;
步驟1-3、驗證代碼執行結束,置驗證結束協議字,並跳轉到步驟1-2,繼續下一次驗證的查詢。所述的指令驗證代碼框架按以下步驟設計步驟2-1、根據指令的分類,確定驗證該類指令所需要的參數,並根據參數,生成指令序列A,通過執行指令序列A準備好當前指令驗證的微處理器的狀態;步驟2-2、根據參數生成當前被驗證的指令B,將指令B添加到序列A之後,生成序列 A&B ;步驟2-3、在序列A&B之後添加一段保護指令B執行結果的指令序列C。本發明的有益效果是本發明提出了一套微處理器指令集自動驗證的方法。通過將當前驗證的指令的各欄位以參數化的形式進行配置,可以對參數進行遍歷組合,實現對微處理器設計中所有路徑的驗證覆蓋。驗證結果採用自動比對的形式,以文件記錄的形式輸出,避免了通過分析仿真波形才能判斷指令執行真確性的弊端,實現了自動、高效率的驗證。發明中提出的驗證方法可以移植到在微處理器設計各階段的驗證平臺上,如仿真驗證階段的TestBench、時序驗證階段的功能驗證TestBench、FPGA驗證平臺、微處理器的系統驗證平臺上。
圖I :本發明主流程圖;圖2 :監控程序流程圖;圖3 :驗證代碼框架設計流程圖;圖4 :本發明的具體實施實例框圖;圖5 :具體實施實例程序存儲不意圖。
具體實施例方式本發明包括以下步驟步驟I、將監控程序加載到微處理器中,並啟動微處理器運行監控程序;步驟2、對微處理器支持的指令集分類,每一類指令由一組參數確定。針對每一類指令,設計一個指令驗證的代碼框架,需要驗證的指令或指令序列嵌入到這個代碼框架中;步驟3、對每組參數按照取指範圍遍歷取值,根據每組參數值的組合,生成驗證的指令或指令序列,並將這個指令或指令序列嵌入到步驟2的驗證代碼框架中;步驟4、將驗證代碼框架加載到微處理器中,並發送協議字給微處理器上的監控程序,使微處理器轉入到驗證代碼框架的執行;
步驟5、查詢微處理器「驗證結束」協議字。如果驗證代碼執行結束,將執行結果讀出;否則,繼續查詢;步驟6、將步驟5的執行結果和指令執行的期望結果比較。結果正確,將比較結果記錄到日誌文件中,轉步驟2,繼續遍歷驗證;否則,輸出錯誤信息,並記錄到日誌文件。在上述方案中,步驟I所述的監控程序按以下步驟操作步驟1-4、查詢驗證代碼框架加載結束協議字。如果協議字有效,轉步驟1-2 ;否貝U,轉步驟1-1,繼續查詢;步驟1-5、跳轉至驗證代碼框架程序段,執行指令驗證代碼;步驟1-6、驗證代碼執行結束,置「驗證結束」協議字,並跳轉到步驟1-2,繼續下一次驗證的查詢。
在上述方案中,步驟2所述的指令驗證代碼框架按以下步驟設計步驟2-4、根據指令的分類,確定驗證該類指令所需要的參數,並根據參數,生成指令序列A.通過執行指令序列A準備好當前指令驗證的微處理器的狀態;步驟2-5、根據參數生成當前被驗證的指令B.將指令B添加到序列A之後;步驟2-6、為避免指令執行的結果被其他指令段「汙染」,在序列A&B之後添加一段指令序列C,用來保護指令B執行的結果。下面結合附圖和實施例對本發明進一步說明。微處理器的指令集按照完成的功能對指令進行分類寄存器賦值指令一立即數向寄存器賦值、寄存器-寄存器賦值、條件寄存器賦值;訪存指令——包括存儲器向寄存器加載指令和寄存器向存儲器加載指令;算術邏輯指令一包括算術運算指令和邏輯運算指令;跳轉控制指令一包括跳轉指令、子程序調用和子程序返回指令。如圖4,微處理器401實現了設計定義的指令集,是被驗證的對象。該微處理器採用RISC結構實現,指令執行分成四級流水,分別是「取指」一「解碼」一「執行」一「寫回」。微處理器401的實現包括寄存器組(包括通用寄存器、地址寄存器、索引寄存器和其它寄存器)、核內指令存儲器、數據存儲器和ALU數據通路。結合本實例,發明提出的驗證方法模型,由微處理器設計401、微處理器外部存儲單元402、主處理器接口 403、指令代碼生成框架單元404、數據比較406、結果文件輸出405,組成自動化的指令集驗證系統,如圖4所示。主處理器接口 403、指令代碼生成框架單元404、數據比較406、結果文件輸出405構成指令集驗證的主處理器模擬端。主處理器模擬端控制指令集驗證的流程,實現了驗證方法的主流程。按以下步驟實施SO:通過處理器接口向微處理器加載協議字監控程序,啟動監控程序的運行;SI:隨機生成指令驗證的參數,包括測試比較數據、操作類型OpType、源操作數Rsrc (包括操作數類型,操作數寄存器索引)、目的操作數Rdst (包括操作數類型,操作數寄存器索引)、條件位cond等指令參數。根據指令分類,每種指令分別由一組參數確定;S2:根據SI的參數,生成指令驗證代碼的框架;S3:根據處理器指令集的定義,將指令驗證代碼的框架翻譯成二進位碼;
S4:通過處理器接口將驗證代碼加載到微處理器的指令存儲器中;S5:發出啟動指令驗證協議字,控制微處理器跳轉到指令驗證代碼的執行;S6:查詢微處理器指令驗證結束協議字,並讀回執行結果;S7:正確性檢查。結果正確,結果以日誌記錄,轉SI,繼續下一條指令的驗證;否貝IJ,錯誤信息記錄到日誌文件,轉SI。以「算術邏輯指令」為實例,說明指令驗證代碼的框架的操作方法「算術邏輯指令」驗證需要的參數有(OpType, Rsrc, Rdst, Opl, 0p2, Nif)
其中,OpType :算術邏輯指令操作類型。取值範圍為指令集定義的10種算術邏輯操作;Rsrc :源操作數I寄存器索引值。取值範圍為微處理器設計中8個通用寄存器;Rdst :源操作數2和目的寄存器索引值。取值範圍為微處理器設計中8個通用寄存器;Opl :源操作數I數據。取值範圍根據微處理器的設計為32位無符號或有符號數據,在數據表示範圍內隨機取值;0p2 :源操作數2數據。取值範圍根據微處理器的設計為32位無符號或有符號數據,在數據表示範圍內隨機取值;Nif :定浮點操作類型參數。根據以上參數設計的指令驗證代碼的框架見表I。表I
序列段指令序列說明
AORsrc-eOpl將數據Opl加載到源寄存器
"AlRdst^Op2將數據Op2加載到目的寄存器
BRdst<-Rsrc OpTypeNif Rdst 被驗證的算術邏輯指令C Mem令Rdst將目的寄存器內的執行結果保護到存儲器中驗證時,首先由主處理器通過處理器接口 403加載協議字監控程序到微處理器的監控程序段501,並啟動微處理器的運行。此時,監控程序檢查主處理器模擬端是否將指令驗證代碼加載到指令存儲區的指令驗證代碼段502中。如果監控程序接收到啟動協議字503 (位於數據存儲器內),監控程序跳轉到指令驗證框架代碼段502執行。執行完成後,寫結束協議字到協議約定的數據存儲區內504,並跳轉到監控程序中,繼續等待啟動下一條指令的驗證,如圖5所示。指令驗證代碼完成對處理器指令集各項功能的驗證,根據驗證項的不同,指令驗證代碼可以完成簡單指令逐條驗證、指令相關等功能項的驗證工作。本實例實現自動化的驗證方式,每一類指令通過一組參數惟一確定,在驗證協議中,根據這組參數生成指令驗證的代碼框架。參數的範圍由微處理器的硬體結構決定。上述的四類指令可以通過四組參數來確定,在驗證流程中分成四個驗證分支來實現。
對於當前驗證的指令,需要將所有的源操作數在指令執行前,存放到指令指定的寄存器中。在本發明的驗證方法中,通過增加輔助指令序列,用來設置當前指令驗證的環境,主要是設置當前微處理器的寄存器組的狀態。同時,指令驗證採用在線自動化的驗證方式,為避免指令執行結束後,指令的執行結果被「汙染」,在指令驗證代碼框架中增加了將指令執行結果及時保護的指令序列。
為實現對指令所有執行路徑的完全覆蓋,可以將所有的參數採用遍歷的方法,以提高對設計的覆蓋率。考慮到設計過程中驗證效率,可以在驗證過程中,隨機選取一組或幾組參數值進行功能的正確性檢驗。
權利要求
1.一種微處理器指令集驗證方法,其特徵在於包括下述步驟 步驟I、將監控程序加載到微處理器中,並啟動微處理器運行監控程序; 步驟2、對微處理器支持的指令集分類,每一類指令由一組參數確定,針對每一類指令,設計一個指令驗證的代碼框架,將需要驗證的指令或指令序列嵌入到這個代碼框架中;步驟3、對每組參數按照取指範圍遍歷取值,根據每組參數值的組合,生成驗證的指令或指令序列,並將這個指令或指令序列嵌入到步驟2的驗證代碼框架中; 步驟4、將驗證代碼框架加載到微處理器中,並發送協議字給微處理器上的監控程序,使微處理器轉入到驗證代碼框架的執行; 步驟5、查詢微處理器驗證結束協議字,如果驗證代碼執行結束,將執行結果讀出;否貝U,繼續查詢; 步驟6、將步驟5的執行結果和指令執行的期望結果比較,結果正確,將比較結果記錄到日誌文件中,轉步驟2,繼續遍歷驗證;否則,輸出錯誤信息,並記錄到日誌文件。
2.根據權利要求I所述的微處理器指令集驗證方法,其特徵在於所述的監控程序按以下步驟操作 步驟1-1、查詢驗證代碼框架加載結束協議字,如果協議字有效,轉步驟1-2 ;否則繼續查詢; 步驟1-2、跳轉至驗證代碼框架,執行指令驗證代碼; 步驟1-3、驗證代碼執行結束,置驗證結束協議字,並跳轉到步驟1-2,繼續下一次驗證的查詢。
3.根據權利要求I所述的微處理器指令集驗證方法,其特徵在於所述的指令驗證代碼框架按以下步驟設計 步驟2-1、根據指令的分類,確定驗證該類指令所需要的參數,並根據參數,生成指令序列A,通過執行指令序列A準備好當前指令驗證的微處理器的狀態; 步驟2-2、根據參數生成當前被驗證的指令B,將指令B添加到序列A之後,生成序列A&B ; 步驟2-3、在序列A&B之後添加一段保護指令B執行結果的指令序列C。
全文摘要
本發明提供了一種微處理器指令集驗證方法,將監控程序加載到微處理器中;對微處理器支持的指令集分類,將需要驗證的指令嵌入到代碼框架中;遍歷每組參數按生成驗證的指令,嵌入到驗證代碼框架中;將驗證代碼框架加載到微處理器中,查詢微處理器驗證結束協議字,將執行結果和指令執行的期望結果比較,結果正確,將比較結果記錄到日誌文件中,否則,輸出錯誤信息,並記錄到日誌文件。本發明避免了通過分析仿真波形才能判斷指令執行真確性的弊端,實現了自動、高效率的驗證。
文檔編號G06F9/46GK102902906SQ20121036223
公開日2013年1月30日 申請日期2012年9月26日 優先權日2012年9月26日
發明者曹輝, 楊靚, 盧強, 何衛強 申請人:中國航天科技集團公司第九研究院第七七一研究所