雙精度simd部件晶片級驗證測試激勵自動生成方法
2023-07-30 19:20:51 2
專利名稱:雙精度simd部件晶片級驗證測試激勵自動生成方法
技術領域:
本發明涉及處理器設計過程中的晶片級驗證,尤其指面向雙精度SIMD(單指令多 數據)部件進行晶片級驗證過程中測試激勵的自動生成方法。
背景技術:
處理器晶片的集成度越來越大,在處理器中設計實現支持雙精度浮點計算的SIMD 部件來支持大規模科學和工程計算是一個重要的發展趨勢。但是和在處理器中實現支持流 媒體計算的SIMD擴展相比,雙精度SIMD部件需要設計實現更長字長的短向量寄存器(通 常為256位共4個雙精度數據)以及相應的支持雙精度計算的SIMD指令集。因此雙精度 SIMD部件使用的寄存器和傳統面向流媒體計算的SIMD擴展使用的寄存器不同,數據通路 不同,指令集也完全不同,這給驗證工作提出了很大的挑戰。處理器的晶片級驗證是指在全晶片模擬驗證環境中運行測試激勵來驗證晶片設 計的正確性。每個測試激勵是一個完整的彙編語言程序,測試激勵具有自比較的功能,能自 動比較程序的運行結果和預期結果,並根據比較結果進入不同的自陷。傳統SIMD部件的晶片級驗證都是由設計和驗證人員用彙編語言手工編寫晶片級 測試激勵。這種方法需要大量的人力來開發測試激勵,耗費人力物力多,晶片級驗證時間 長;並且不同處理器實現的SIMD擴展不同,支持雙精度浮點計算的SIMD擴展差別就更大, 無法重用已有的SIMD部件晶片級驗證的測試激勵。因此迫切需要雙精度SIMD部件晶片級 驗證測試激勵生成的自動化方法。目前還沒有公開發表的面向雙精度SIMD部件晶片級驗 證自動生成測試激勵的方法。
發明內容
本發明要解決的技術問題是提出一種自動生成雙精度SIMD部件晶片級驗證測試 激勵的方法。本發明的技術方案如下第一步,根據所要驗證的雙精度數據運算類型(如加、減、乘、除等),以及數組長 度(記為scale),構造進行雙精度數組操作的標準C語言程序foo. C。foo. c 一方面為即將構造的使用雙精度SIMD彙編指令的測試激勵建立一個正確 的模型,該正確的模型是指經過驗證正確可信,可以作為正確性對比的參照),一方面為構 造測試激勵準備原始數據,原始數據包括輸入雙精度數組以及作為正確結果的雙精度數 組。構造foo. c的方法是1. 1生成一個空的C語言源程序文件foo. c ;1. 2向foo. c文件中寫入標準C語言程序文本,包括如下內容1.2. 1包含標準頭文件的語句;1. 2. 2全局數組聲明語句,包括聲明用作輸入數據的兩個一維雙精度數組srcl和src2的語句、聲明用作保存正確結果的一維雙精度數組golderuresult的語句,以及聲 明用作保存計算結果的一維雙精度數組result的語句,數組的長度都為scale ;srcl和 src2聲明中的數組初值由雙精度數據隨機生成程序生成;golderuresult數組聲明中的初 始數據根據所要驗證的運算類型對兩個源數組進行運算得到;1.2.3 C程序主函數代碼包括對兩個輸入數組元素進行運算並將結果寫入 result數組的語句;對golderuresult數組元素和result數組元素進行比較並當結果不 同時報出警告信息的程序語句。第二步,基於foo. c以及所要驗證的運算,構造作為測試激勵的彙編語言源程序 simd. s,方法是2. 1用面向目標處理器的編譯器編譯foo. c程序,用「-S」編譯選項控制編譯器將 foo. C編譯為彙編語言程序文本foo. S,如gcc-s foo. C-O foo. S。2. 2 創建 simd. s 文件。2. 3向simd. s文件中寫入如下內容2. 3. 1包含測試激勵公共頭文件的代碼(如#include "hboot. s」);2. 3. 2彙編語言程序文本段聲明語句;2. 3. 3將4個數組srcl,src2, golden_result和result的基地址寫入寄存器的 彙編語句;2. 3. 4根據數組長度設置循環控制寄存器初始值的語句;2. 3. 5根據所要驗證的運算,寫入用SIMD指令進行數組讀取和操作的語句;2. 3. 6結果比較語句以及根據比較結果跳轉到相應自陷語句的彙編語句;2. 3. 7自陷語句;2.3.8數據段聲明語句,數據對齊方式為「.align 32」;2. 3. 9 foo. s 文件中讀取的 srcl、src2、golden_result、result 數組數據段的內容。採用本發明可以達到以下技術效果採用本發明可以自動生成一個使用雙精度SIMD彙編指令的彙編語言測試激勵 simd. S。將simd. s加載到晶片模擬環境中運行,可以利用雙精度SIMD指令對多種數據長 度的雙精度數組進行操作,根據激勵運行結果來對處理器的設計進行晶片級驗證。本發明可以編程實現,程序的輸入是要驗證的運算以及數組長度,輸出是可以作 為測試激勵的彙編語言源程序simd. S。多次運行該程序,輸入不同的運算類型和數組長度, 可以自動生成多種測試激勵,可以極大地減少開發面向雙精度SIMD部件進行晶片級驗證 所需的測試激勵的時間。
圖1是本發明總體流程圖;圖2是自動生成的標準C語言程序結構圖;圖3是自動生成的彙編語言測試激勵程序結構圖。
具體實施例方式圖1是本發明總體流程圖,本發明的總體過程為1. 1根據所要驗證的雙精度SIMD運算類型,以及數組長度,構造一個標準C語言程序foo. c ;1. 2用面向目標處理器的編譯器將foo. c程序編譯為彙編語言程序foo. s ;1.3根據所要驗證的雙精度SIMD運算類型,構造可以用作測試激勵的彙編語言 程序simd. s, simd. s彙編程序中的數據段內容根據foo. s的數據段內容構造。圖2是自動生成的標準C語言程序結構圖,構造該程序的具體步驟為2. 1生成一個空的C語言源程序文件foo. c ;2. 2向foo. c文件中寫入標準C語言的程序文本,包括如下內容2. 2. 1所需的標準頭文件;2.2.2全局數組聲明語句,包括用作輸入數據的兩個一維雙精度數組(srcl, src2),用作保存GOLDEN結果的一維雙精度數組(golder^result),以及用作保存計算結果 的一維雙精度數組(result)。srcl和src2聲明中的數組初值由雙精度數據隨機生成程序 生成;golderuresult數組聲明中的初始數據,根據所要驗證的運算類型對兩個源數組進 行相應運算得到;2. 2. 3主函數代碼,在主函數中對兩個輸入數組進行所要驗證的運算並將賦值給 寫入result數組;對golderuresult數組和result數組進行比較並當結果不同時報出警
告fn息。圖3是自動生成的測試激勵程序結構圖,構造該程序的具體步驟為3. 1創建一個空的彙編語言程序文本文件simd. s ;3. 2向simd. s中寫入如下內容3. 2. 1包含測試激勵公共頭文件的代碼(如 include "hboot. s」);3. 2. 2文本段聲明語句;3.2.3準備數組基地址寄存器內容的彙編語句,包括4個數組srcl,src2, golden_result 禾口 result ;3. 2. 4根據數組長度設置循環控制寄存器初始值的語句;3. 2. 5根據所要驗證的運算,寫入用SIMD指令進行數組讀取和操作的語句;3. 2. 6結果比較語句以及根據比較結果跳轉到相應自陷語句的彙編語句;3. 2. 7自陷語句;3.2.8數據段聲明語句,數據對齊方式為「.align 32」;3. 2. 9從foo. s文件中讀取的各個數組數據段的內容。
權利要求
1. 一種雙精度SIMD部件晶片級驗證測試激勵自動生成方法,其特徵在於包括以下步驟第一步,根據所要驗證的雙精度數據運算類型以及數組長度scale,構造進行雙精度數 組操作的標準C語言程序foo. c,方法是`1. 1生成一個空的C語言源程序文件foo. c ;`1. 2向foo. c文件中寫入標準C語言程序文本,包括如下內容`1. 2. 1包含標準頭文件的語句;`1. 2. 2全局數組聲明語句,包括聲明用作輸入數據的一維雙精度數組srcl和src2的 語句、聲明用作保存正確結果的一維雙精度數組golderuresult的語句,以及聲明用作保 存計算結果的一維雙精度數組result的語句,數組的長度都為scale ;srcl和src2聲明中 的數組初值由雙精度數據隨機生成程序生成;golderuresult數組聲明中的初始數據根據 所要驗證的運算類型對srcl和src2數組進行運算得到;`1.2. 3 C程序主函數代碼包括對兩個輸入數組元素進行運算並將結果寫入result數 組的語句;對golderuresult數組元素和result數組元素進行比較並當結果不同時報出警 告信息的程序語句;第二步,基於foo. c以及所要驗證的運算,構造作為測試激勵的彙編語言源程序simd. s,方法是`2.1用面向目標處理器的編譯器編譯foo.c程序,用「-S」編譯選項控制編譯器將foo. C編譯為彙編語言程序文本foo. S ;`2. 2創建simd. s文件; 2.3向simd. s文件中寫入如下內容 2. 3. 1包含測試激勵公共頭文件的代碼; 2. 3. 2彙編語言程序文本段聲明語句;`2. 3. 3將4個數組srcl,src2,golden_result和result的基地址寫入寄存器的彙編 語句;`2. 3. 4根據數組長度設置循環控制寄存器初始值的語句; 2. 3. 5根據所要驗證的運算,寫入用SIMD指令進行數組讀取和操作的語句; 2. 3. 6結果比較語句以及根據比較結果跳轉到相應自陷語句的彙編語句; 2. 3.7自陷語句;`2.3.8數據段聲明語句,數據對齊方式為「.align 32」;`2. 3. 9 foo. s文件中讀取的srcl、src2、golden_result、result數組數據段的內容。
全文摘要
本發明公開了一種雙精度SIMD部件晶片級驗證測試激勵自動生成方法,目的是提出一種自動生成雙精度SIMD部件晶片級驗證測試激勵的方法。技術方案為先根據所要驗證的雙精度數據運算類型以及數組長度scale,構造進行雙精度數組操作的標準C語言程序foo.c,然後基於foo.c以及所要驗證的運算,構造作為測試激勵的彙編語言源程序simd.s。採用本發明可以自動生成一個彙編語言測試激勵simd.s,將simd.s加載到晶片模擬環境中運行,可以執行雙精度SIMD指令對處理器的設計進行晶片級驗證。本發明可以編程實現,多次運行該程序,輸入不同的運算類型和數組長度,即可自動生成多種測試激勵,可以極大地減少開發面向雙精度SIMD部件進行晶片級驗證所需的測試激勵的時間。
文檔編號G06F11/36GK102129407SQ20111005661
公開日2011年7月20日 申請日期2011年3月9日 優先權日2011年3月9日
發明者彭林, 易會戰, 李春江, 杜雲飛, 楊燦群, 王 鋒, 趙克佳, 陳娟, 黃春 申請人:中國人民解放軍國防科學技術大學