[發明專利]一種全覆蓋的微處理器測試用例包自動生成方法有效
| 申請號: | 200910044525.4 | 申請日: | 2009-10-13 |
| 公開(公告)號: | CN101673236A | 公開(公告)日: | 2010-03-17 |
| 發明(設計)人: | 王鋒;楊燦群;易會戰;陳娟;黃春;趙克佳;杜云飛 | 申請(專利權)人: | 中國人民解放軍國防科學技術大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F11/26 |
| 代理公司: | 國防科技大學專利服務中心 | 代理人: | 郭 敏 |
| 地址: | 410073湖*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 覆蓋 微處理器 測試 用例包 自動 生成 方法 | ||
1.一種全覆蓋的微處理器測試用例包自動生成方法,其特征在于包括以下步驟:
第一步、構建初始化函數Init,Init是測試用例的一部分,負責對指令組合在測試過程中所涉及的測試用例計數器、內存、運算部件和各類寄存器進行初始化,且將Init組織為單獨的函數,在指令組合執行之前進行調用,Init的流程是:
1.1設置測試用例計數器,用于標識已運行過的測試用例和定位出錯的測試用例,在運行環境構建開始時將測試用例計數器初值設為零;
1.2分配數據內存,包括源操作數和目的操作數使用的內存,根據數據類型分配不同的內存大小,類型包括:單字定點、單字浮點、雙字定點和雙字浮點;
1.3對于運算部件,通過連續執行空轉指令NOP排空流水線;
1.4對于寄存器,依照狀態寄存器、源寄存器和目的寄存器分別進行處理:狀態寄存器是指表示系統運行狀態的寄存器;源寄存器是指在指令組合中用來裝載源操作數的寄存器;目的寄存器是指在指令組合中用來放置結果的寄存器,對以上三種寄存器的初始化過程如下:
1.4.1對狀態寄存器中會被指令執行影響到的位清零;
1.4.2對源寄存器賦初值,初值的選擇要使指令能正常執行;
1.4.3對目的寄存器清零;
第二步、構建狀態輸出函數Output,Output是測試用例的一部分,負責輸出每條指令組合執行時的狀態寄存器、目的寄存器和訪存指令涉及的內存值;且將Output組織為單獨的函數,在指令組合執行之后進行調用;
第三步、建立包含M條指令模板的指令模板庫,M是微處理器指令集中指令的條數,測試用例中的每條指令都源自于該指令模板庫;每條指令模板由指令ID、指令的匯編名稱、源操作數類型和目的操作數類型構成,指令ID為枚舉類型常量,指令的匯編名稱為字符串常量,對應指令的匯編語法,源操作數和目的操作數類型為常用數據結構;
第四步、根據指令模板庫構造大小為MN的指令模板組合集合X,N為用戶需測試的指令數,構造方法是:從指令模板庫中任取N條指令模板構成一條指令模板組合,共形成MN條指令模板組合,所有指令組合構成大小為MN的指令模板組合集合X;
第五步、判斷集合X是否為空,若為空,執行第九步,若不為空,執行第六步;
第六步、從集合X中任選一個待實例化的指令模板組合x,X=X-{x};
第七步、順序對指令模板組合x中的每一條指令模板i進行實例化,方法是采用靜態寄存器映射的方式實現i的源操作數類型和目的操作數類型的實例化,得到實例化后的指令為i’,相應得到x實例化后的指令組合x’,具體過程是:?
7.1如果指令模板i為CALL指令,執行步驟7.6;如果指令模板i為跳轉指令,執行步驟7.7;否則,執行步驟7.2;
7.2根據源或目的操作數類型將所有寄存器劃分成若干子集;
7.3設指令模板i的目的操作數類型對應的寄存器子集為J,x’中位于i’之前的所有指令的目的操作數所分配的全部寄存器集合為L,J=J-L;
7.4為指令模板i的每個源操作數根據其類型分配對應寄存器集合中的一個寄存器,為指令模板i的每個目的操作數根據其類型分配J集合中的一個寄存器;
7.5如果指令i’中i’的前一條指令之間存在依賴關系,則在它們之間插入空指令,轉第九步;
7.6對CALL指令進行實例化,方法是:
7.6.1創建葉子函數,葉子函數除空指令和返回語句外不包含任何其他指令,其地址作為CALL指令的操作數,并在葉子函數入口地址處設置標號_cvt_lp,使函數返回時可繼續執行CALL指令的下一條指令;
7.6.2將CALL指令模板中的源操作數實例化為空,目的操作數實例化為7.6.1中定義的標號_cvt_lp,生成帶目標地址_cvt_lp的調用函數指令,形式為“call_cvt_lp”;
7.6.3轉第八步;
7.7對跳轉指令進行實例化,方法是:
7.7.1如果跳轉指令為指令組合中的第一條跳轉指令,建立該指令組合的跳轉表,初始化跳轉表,建立第一條表項內容;如果不是第一條跳轉指令,則在跳轉表中增加一條表項內容;跳轉表是記錄指令組合中跳轉指令信息的表,每一項代表一條跳轉指令信息,包括標號、指令和目標地址,標號代表該表項的入口地址,為每條跳轉指令跳轉的目標地址;指令代表跳轉指令;目標地址代表跳轉指令結束跳轉時返回指令組合下一條指令的地址;填寫跳轉表表項內容的方法是:標號部分填寫表項的入口地址;指令部分填寫無條件跳轉指令;目標地址部分填寫指令組合中跳轉指令的下一條指令地址;
7.7.2實例化跳轉指令模板,跳轉指令模板的源操作數類型實例化為空,目的操作數類型實例化為跳轉表表項的標號;?
第八步、將第一步獲得的初始化函數Init、第七步獲得的指令組合以及第二步獲得的狀態輸出函數Output順序連接成一條測試用例,返回第五步;
第九步、將全部測試用例打包構成測試用例包,輸出該測試用例包。
2.如權利要求1所述的一種全覆蓋的微處理器測試用例包自動生成方法,其特征在于在指令個數過多,寄存器無法劃分成足夠的子集時,采用經典的寄存器分配算法為指令模板i的源操作數和目的操作數進行動態映射分配。?
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科學技術大學,未經中國人民解放軍國防科學技術大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910044525.4/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:配合檢測裝置、連接器及其連接器組件
- 下一篇:觸點





