一種針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證系統(tǒng)及測(cè)試驗(yàn)證方法
【專利摘要】一種針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證系統(tǒng),其特征在于包括:MicroBlaze仿真平臺(tái)模塊、軟核執(zhí)行流監(jiān)視記錄模塊、目標(biāo)碼分析模塊和覆蓋率統(tǒng)計(jì)分析模塊。本發(fā)明實(shí)現(xiàn)了FPGA邏輯代碼、MicroBlaze軟核以及軟核程序的集成運(yùn)行,并且可以獲得軟核程序運(yùn)行的覆蓋率信息,滿足了軟核程序測(cè)試驗(yàn)證充分性的要求。
【專利說(shuō)明】-種針對(duì)M icroBI aze軟核程序的測(cè)試驗(yàn)證系統(tǒng)及測(cè)試驗(yàn) 證方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證系統(tǒng)及測(cè)試驗(yàn)證方法,主 要應(yīng)用于航天器軟件測(cè)試與FPGA驗(yàn)證過(guò)程中,屬于軟件測(cè)試【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002] 在航天器星上電子產(chǎn)品中,為了滿足小型化、低功耗等要求,部分電子產(chǎn)品采用了 基于FPGA的MicroBlaze軟核處理器設(shè)計(jì)技術(shù),通過(guò)FPGA硬件邏輯以及軟核處理器中的軟 件代碼,共同實(shí)現(xiàn)所需的功能。由于這種軟硬件緊密結(jié)合的特點(diǎn),對(duì)其進(jìn)行測(cè)試和驗(yàn)證的方 法,既不同于傳統(tǒng)的軟件也不同于普通的FPGA驗(yàn)證。特別是針對(duì)基于FPGA軟核運(yùn)行的程 序,傳統(tǒng)的測(cè)試方法中,往往采用在真實(shí)目標(biāo)設(shè)備上進(jìn)行動(dòng)態(tài)測(cè)試的方式,采用這種方式主 要存在以下不足:(1)動(dòng)態(tài)運(yùn)行時(shí)無(wú)法收集軟核程序執(zhí)行的覆蓋率信息,沒(méi)有辦法通過(guò)覆 蓋率分析,保證動(dòng)態(tài)測(cè)試的充分性;(2)因目標(biāo)平臺(tái)的限制,動(dòng)態(tài)測(cè)試時(shí)一些激勵(lì)條件無(wú)法 產(chǎn)生,難以對(duì)故障情況、邊界情況、小概率事件等情況進(jìn)行模擬和動(dòng)態(tài)測(cè)試,測(cè)試充分性無(wú) 法保證。
[0003] 隨著星上電子產(chǎn)品復(fù)雜程度的提高,軟件程序和硬件邏輯也變得更加復(fù)雜,對(duì)軟 件測(cè)試的充分性也提出了更高的要求,部分型號(hào)已經(jīng)提出針對(duì)重要軟件的動(dòng)態(tài)測(cè)試,必須 給出目標(biāo)碼覆蓋率的要求。傳統(tǒng)MicroBlaze軟件程序測(cè)試方法已經(jīng)無(wú)法滿足航天產(chǎn)品研 制的可靠性要求。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明解決的技術(shù)問(wèn)題是:克服現(xiàn)有技術(shù)的不足,提出了一種針對(duì)MicroBlaze軟 核程序的測(cè)試驗(yàn)證系統(tǒng)及測(cè)試驗(yàn)證方法,實(shí)現(xiàn)了 FPGA邏輯代碼、MicroBlaze軟核以及軟核 程序的集成運(yùn)行,并且可以獲得軟核程序運(yùn)行的覆蓋率信息,滿足了軟核程序測(cè)試驗(yàn)證充 分性的要求。
[0005] 本發(fā)明的技術(shù)解決方案是:一種針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證系統(tǒng),如圖 1所示,其特征在于包括:MicroBlaze仿真平臺(tái)模塊、軟核執(zhí)行流監(jiān)視記錄模塊、目標(biāo)碼分 析模塊和覆蓋率統(tǒng)計(jì)分析模塊等模塊。其中:
[0006] MicroBlaze仿真平臺(tái)模塊,實(shí)現(xiàn)MicroBlaze軟核處理器在EDA環(huán)境下的仿真運(yùn) 行;該模塊通過(guò)加載軟核目標(biāo)程序的機(jī)器碼,實(shí)現(xiàn)軟核程序的仿真運(yùn)行,并將運(yùn)行結(jié)果與外 圍其他邏輯進(jìn)行交互,實(shí)現(xiàn)FPGA邏輯代碼、MicroBlaze軟核以及軟核程序的集成運(yùn)行;同 時(shí)該模塊還包含外圍其他邏輯的仿真模型和測(cè)試用例模塊,實(shí)現(xiàn)整個(gè)被測(cè)軟件運(yùn)行的模擬 平臺(tái),并向軟核執(zhí)行流監(jiān)視記錄模塊輸出執(zhí)行信息,供軟核執(zhí)行流監(jiān)視記錄模塊實(shí)現(xiàn)執(zhí)行 流的監(jiān)視、分析和記錄;
[0007] 軟核執(zhí)行流監(jiān)視記錄模塊,根據(jù)MicroBlaze仿真平臺(tái)模塊輸出執(zhí)行信息,對(duì) 軟核程序執(zhí)行情況進(jìn)行分析,實(shí)現(xiàn)真正指令執(zhí)行序列的監(jiān)視和記錄;該模塊接收來(lái)自 MicroBlaze仿真平臺(tái)模塊的執(zhí)行信息,所述執(zhí)行信息包括軟核工作時(shí)鐘、PC指針、指令有 效標(biāo)志和跳轉(zhuǎn)標(biāo)志;根據(jù)指令有效標(biāo)志和跳轉(zhuǎn)標(biāo)志,識(shí)別出當(dāng)前執(zhí)行的指令地址和分支跳 轉(zhuǎn)情況,實(shí)現(xiàn)執(zhí)行流的監(jiān)視、分析和記錄。仿真測(cè)試時(shí)重復(fù)執(zhí)行上述過(guò)程直至用例執(zhí)行結(jié) 束,生成覆蓋率文件。;
[0008]目標(biāo)碼分析模塊,通過(guò)對(duì)軟核目標(biāo)程序進(jìn)行分析,實(shí)現(xiàn)覆蓋率信息的反標(biāo);該模塊 加載軟核目標(biāo)程序文件以及軟核執(zhí)行流監(jiān)視記錄模塊輸出的覆蓋率文件,通過(guò)對(duì)目標(biāo)程序 進(jìn)行格式分析,識(shí)別出各條指令以及各分支指令,并將覆蓋率文件中的覆蓋率信息在目標(biāo) 程序上進(jìn)行反標(biāo);在進(jìn)行覆蓋率反標(biāo)時(shí),還可以將多個(gè)測(cè)試用例執(zhí)行后輸出的覆蓋率文件 進(jìn)行合并,將合并后的總覆蓋率信息,全部反標(biāo)到對(duì)應(yīng)目標(biāo)程序上,實(shí)現(xiàn)多個(gè)測(cè)試用例對(duì)應(yīng) 覆蓋率結(jié)果的統(tǒng)一分析;反標(biāo)覆蓋率后的數(shù)據(jù),將輸出給覆蓋率分析模塊進(jìn)行后續(xù)的覆蓋 率分析;
[0009] 覆蓋率分析模塊,實(shí)現(xiàn)覆蓋率指標(biāo)的分析,統(tǒng)計(jì)軟核程序執(zhí)行的語(yǔ)句覆蓋率、分支 覆蓋率指標(biāo);該模塊接收目標(biāo)碼分析模塊輸出的數(shù)據(jù),通過(guò)統(tǒng)計(jì)其中的語(yǔ)句總數(shù)和分支總 數(shù),并根據(jù)反標(biāo)后的覆蓋率信息,分析執(zhí)行過(guò)的語(yǔ)句數(shù)以及真假分支執(zhí)行情況,最終向用戶 輸出語(yǔ)句覆蓋率和分支覆蓋率指標(biāo),其中語(yǔ)句覆蓋率指標(biāo)和分支覆蓋率指標(biāo)的計(jì)算公式如 下:
[0010] 語(yǔ)句覆蓋率=已執(zhí)行語(yǔ)句數(shù)/可執(zhí)行語(yǔ)句總數(shù)*100%
[0011] 分支覆蓋率=(已執(zhí)行真分支數(shù)+已執(zhí)行假分支數(shù)V(真分支總數(shù)+假分支總 數(shù))*100%。
[0012] 所述MicroBlaze仿真平臺(tái)模塊的具體實(shí)現(xiàn)步驟如下:
[0013] (1)首先需要編譯MicroBlaze處理器的仿真模型,根據(jù)所用的EDA仿真軟件,編譯 MicroBlaze處理器的仿真模型,以及MicroBlaze軟核處理器所用到的外圍接口模塊;
[0014] (2)完成MicroBlaze處理器的仿真模型構(gòu)建后,還需要編譯將被測(cè)試的軟核程 序,得到軟核程序的目標(biāo)程序,導(dǎo)出目標(biāo)程序中的指令機(jī)器碼數(shù)據(jù),并將指令機(jī)器碼數(shù)據(jù)轉(zhuǎn) 換為MicroBlaze處理器仿真模型所需的內(nèi)存初始化文件形式;編譯軟核程序時(shí),將調(diào)試選 項(xiàng)打開,以增強(qiáng)用戶后續(xù)進(jìn)行覆蓋率分析的可讀性;
[0015] (3)最后編寫外圍其他邏輯的仿真模型和測(cè)試用例模塊,構(gòu)建整個(gè)MicroBlaze仿 真平臺(tái)模塊,提供工作時(shí)鐘信號(hào),實(shí)現(xiàn)MicroBlaze仿真模塊平臺(tái)的運(yùn)行。仿真運(yùn)行過(guò)程中, 向軟核執(zhí)行流監(jiān)視記錄模塊輸出軟核程序的執(zhí)行信息。
[0016] 所述軟核執(zhí)行流監(jiān)視記錄模塊具體實(shí)現(xiàn)步驟如下:
[0017] (1)接收MicroBlaze仿真平臺(tái)模塊輸出執(zhí)行信息,;
[0018] (2)當(dāng)執(zhí)行信息中的指令有效信號(hào)為有效時(shí),記錄執(zhí)行信息中的當(dāng)前PC指針,并 將對(duì)應(yīng)的地址標(biāo)記為已經(jīng)執(zhí)行過(guò);
[0019] (3)對(duì)于分支跳轉(zhuǎn)情況的處理,通過(guò)識(shí)別執(zhí)行信息中的跳轉(zhuǎn)發(fā)生信號(hào),當(dāng)跳轉(zhuǎn)發(fā)生 信號(hào)有效時(shí),標(biāo)記為真分支已經(jīng)執(zhí)行過(guò),否則標(biāo)記為假分支已經(jīng)執(zhí)行過(guò);
[0020] (4)重復(fù)執(zhí)行上述步驟(2)和步驟(3),直至當(dāng)前測(cè)試用例執(zhí)行結(jié)束;
[0021] (5)將上述標(biāo)記的指令執(zhí)行情況和分支執(zhí)行情況作為覆蓋率文件輸出,輸出覆蓋 率文件時(shí),記錄軟核程序的名稱和版本,用于后續(xù)合并時(shí)的比對(duì)。
[0022] 本發(fā)明針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證方法,實(shí)現(xiàn)步驟如下:
[0023] (1)利用EDA平臺(tái)上的仿真軟件,編譯MicroBlaze仿真模型,并編譯MicroBlaze 軟核上運(yùn)行的目標(biāo)程序,生成仿真文件以及程序加載文件,之后進(jìn)入步驟(2);
[0024] (2)在仿真軟件中,構(gòu)建MicroBlaze軟核的外圍其他邏輯的仿真模型,提供時(shí)鐘 激勵(lì)以及各種接口的模擬,使得整個(gè)軟硬件系統(tǒng)可以協(xié)同運(yùn)行,之后進(jìn)入步驟(3);
[0025] (3)設(shè)計(jì)測(cè)試用例,實(shí)現(xiàn)整個(gè)MicroBlaze仿真平臺(tái)模塊,,利用EDA仿真軟件進(jìn)行 動(dòng)態(tài)仿真運(yùn)行;
[0026] (4)在仿真運(yùn)行的過(guò)程中,監(jiān)視MicroBlaze仿真平臺(tái)模塊輸出執(zhí)行流信息,進(jìn)行 軟核執(zhí)行流的分析,并記錄指令執(zhí)行情況和分支執(zhí)行情況;
[0027] (5)仿真運(yùn)行中反復(fù)執(zhí)行步驟(4),直至測(cè)試用例結(jié)束后,進(jìn)入步驟(6);
[0028] (6)測(cè)試用例執(zhí)行結(jié)束后,輸出該測(cè)試用例的覆蓋率文件。反復(fù)運(yùn)行多個(gè)測(cè)試用 例,將各測(cè)試用例輸出的覆蓋率文件合并,得到總覆蓋率文件,并進(jìn)入步驟(7);
[0029] (7)分析軟核目標(biāo)程序,并將總覆蓋文件中的指令執(zhí)行情況和指令跳轉(zhuǎn)執(zhí)行情況 反標(biāo)到目標(biāo)碼文件中,得到覆蓋率反標(biāo)結(jié)果,并進(jìn)入到步驟(8);
[0030] (8)根據(jù)覆蓋率反標(biāo)結(jié)果,進(jìn)行目標(biāo)碼的覆蓋率分析,分析語(yǔ)句覆蓋率、分支覆蓋 率指標(biāo),判斷是否滿足要求,如果滿足要求則結(jié)束測(cè)試,否則返回步驟(3),補(bǔ)充設(shè)計(jì)新的測(cè) 試用例;其中語(yǔ)句覆蓋率指標(biāo)和分支覆蓋率指標(biāo)的計(jì)算公式如下:
[0031] 語(yǔ)句覆蓋率=已執(zhí)行語(yǔ)句數(shù)/可執(zhí)行語(yǔ)句總數(shù)*100%
[0032] 分支覆蓋率=(已執(zhí)行真分支數(shù)+已執(zhí)行假分支數(shù)V(真分支總數(shù)+假分支總 數(shù))*100%。
[0033] 本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:
[0034] (1)本發(fā)明解決了傳統(tǒng)基于目標(biāo)設(shè)備進(jìn)行軟核動(dòng)態(tài)測(cè)試中,無(wú)法獲取軟核目標(biāo)程 序執(zhí)行的覆蓋率信息的問(wèn)題,通過(guò)構(gòu)建的仿真運(yùn)行環(huán)境,監(jiān)測(cè)MicorBlaze仿真模型的執(zhí)行 信息,識(shí)別出有效指令,剔出預(yù)取隊(duì)列中的無(wú)效指令,識(shí)別并記錄指令執(zhí)行跳轉(zhuǎn)的信息,得 到軟件運(yùn)行的真實(shí)信息,并以此進(jìn)行目標(biāo)碼覆蓋率分析。通過(guò)覆蓋率指標(biāo),對(duì)測(cè)試用例設(shè)計(jì) 的充分性進(jìn)行檢查,對(duì)于沒(méi)有動(dòng)態(tài)執(zhí)行到的語(yǔ)句和跳轉(zhuǎn)分支,通過(guò)增加測(cè)試用例進(jìn)行補(bǔ)充 測(cè)試,從而確保動(dòng)態(tài)測(cè)試過(guò)程的充分性。
[0035] (2)本發(fā)明采用了基于EDA仿真軟件,構(gòu)建MicroBlaze程序的動(dòng)態(tài)運(yùn)行環(huán)境,各種 錯(cuò)誤情況、邊界情況、小概率事件等都可以在仿真軟件中進(jìn)行模擬,解決了傳統(tǒng)的基于目標(biāo) 設(shè)備的測(cè)試中,激勵(lì)手段受限制,部分故障情況、邊界條件難于生成的問(wèn)題,為測(cè)試軟件各 種運(yùn)行情況下的處理,提供了技術(shù)條件。
[0036] (3)本發(fā)明同時(shí)解決傳統(tǒng)的FPGA設(shè)計(jì)仿真驗(yàn)證中,如果被測(cè)設(shè)計(jì)采用了 MicorBlaze軟核,仿真中往往將軟核部分忽略,或者通過(guò)軟核程序與外圍邏輯的接口界面, 模擬軟核操作進(jìn)行邏輯仿真的不足。本發(fā)明通過(guò)EDA平臺(tái),實(shí)現(xiàn)外圍邏輯代碼、MicroBlaze 軟核模型以及軟核程序的集成運(yùn)行,構(gòu)建出包含邏輯代碼和軟核程序的軟硬件協(xié)同運(yùn)行環(huán) 境,可以更加真實(shí)地實(shí)現(xiàn)對(duì)整個(gè)邏輯代碼和軟核程序的驗(yàn)證和測(cè)試。
[0037] (4)與傳統(tǒng)軟件測(cè)試中的指令集模擬技術(shù)相比,本發(fā)明采用基于EDA環(huán)境的仿真 技術(shù),借助于仿真模型,實(shí)現(xiàn)軟硬件協(xié)同運(yùn)行環(huán)境的構(gòu)建。既解決了傳統(tǒng)的軟件指令集模擬 器無(wú)法對(duì)軟核外圍邏輯電路進(jìn)行測(cè)試的問(wèn)題,又可以以更準(zhǔn)確、更高效的方式實(shí)現(xiàn)程序軟 件與硬件邏輯代碼的協(xié)調(diào)運(yùn)行。并可以進(jìn)一步推廣應(yīng)用于Altera公司的NI0S軟核程序, 以及基于LEON、OpenRISC等各類開源處理器的程序中。
【專利附圖】
【附圖說(shuō)明】
[0038] 圖1為本發(fā)明測(cè)試驗(yàn)證系統(tǒng)的組成框圖;
[0039] 圖2為本發(fā)明測(cè)試驗(yàn)證方法實(shí)現(xiàn)流程圖;
[0040] 圖3為本發(fā)明中的軟核執(zhí)行流監(jiān)視記錄模塊進(jìn)行執(zhí)行流監(jiān)視記錄的流程圖。
【具體實(shí)施方式】
[0041] 下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】進(jìn)行進(jìn)一步的詳細(xì)描述。
[0042] 如圖1說(shuō)明了針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證系統(tǒng)的結(jié)構(gòu)原理圖,其中主要 包括仿真環(huán)境和覆蓋率分析工具兩大部分,兩部分通過(guò)覆蓋率文件進(jìn)行銜接。仿真環(huán)境主 要包括:MicroBlaze仿真平臺(tái)模塊軟核執(zhí)行流監(jiān)視記錄模塊,其中MicroBlaze仿真平臺(tái)模 塊又包含MicroBlaze仿真模型、外圍其他邏輯和測(cè)試用例等幾個(gè)部分,覆蓋率分析工具主 要包括目標(biāo)碼分析模塊和覆蓋率統(tǒng)計(jì)分析模塊。其中:
[0043] MicroBlaze仿真模型,主要實(shí)現(xiàn)MicroBlaze軟處理器核在EDA環(huán)境下的仿真運(yùn) 行。該模塊通過(guò)加載軟核目標(biāo)程序的機(jī)器碼,并接收仿真環(huán)境的工作時(shí)鐘等信號(hào),實(shí)現(xiàn)軟核 程序的仿真運(yùn)行。在MicroBalze仿真平臺(tái)模塊中,通過(guò)將MicroBlaze仿真模型的運(yùn)行結(jié) 果與外圍其他邏輯進(jìn)行交互,實(shí)現(xiàn)外圍邏輯代碼、MicroBlaze軟核模型以及軟核目標(biāo)程序 程序的集成運(yùn)行。同時(shí)MicroBlaze仿真平臺(tái)模塊還向軟核執(zhí)行流監(jiān)視記錄模塊輸出執(zhí)行 信息,供軟核執(zhí)行流監(jiān)視記錄模塊實(shí)現(xiàn)執(zhí)行流的分析、監(jiān)視和記錄;
[0044] 軟核執(zhí)行流監(jiān)視記錄模塊,該模塊主要根據(jù)MicroBlaze仿真平臺(tái)模塊輸出的執(zhí) 行信息,對(duì)軟核程序執(zhí)行情況進(jìn)行分析,實(shí)現(xiàn)真正指令執(zhí)行序列的監(jiān)視和記錄。該模塊主要 接收來(lái)自MicroBlaze仿真平臺(tái)模塊的執(zhí)行信息,所述執(zhí)行信息除軟核工作時(shí)鐘外,還包括 當(dāng)前PC指針、指令有效標(biāo)志和跳轉(zhuǎn)標(biāo)志等。根據(jù)指令有效標(biāo)志和跳轉(zhuǎn)標(biāo)志,識(shí)別出執(zhí)行指 令流和跳轉(zhuǎn)情況,實(shí)現(xiàn)執(zhí)行流的分析、監(jiān)視和記錄。并輸出覆蓋率文件給目標(biāo)碼分析模塊, 供目標(biāo)碼分析模塊實(shí)現(xiàn)覆蓋率反標(biāo)。仿真測(cè)試時(shí)重復(fù)執(zhí)行上述過(guò)程直至用例執(zhí)行結(jié)束,生 成覆蓋率文件;
[0045] 目標(biāo)碼分析模塊,主要通過(guò)對(duì)軟核目標(biāo)程序進(jìn)行分析,實(shí)現(xiàn)覆蓋率文件的反標(biāo)。該 模塊加載軟核程序的目標(biāo)程序以及軟核執(zhí)行流監(jiān)視記錄模塊輸出的覆蓋率文件,通過(guò)對(duì)目 標(biāo)程序的格式分析,實(shí)現(xiàn)將覆蓋率信息在目標(biāo)程序上的反標(biāo),并將反標(biāo)覆蓋率后的數(shù)據(jù),輸 出給覆蓋率分析模塊;
[0046] 在進(jìn)行覆蓋率反標(biāo)時(shí),還可以將多個(gè)測(cè)試用例執(zhí)行后輸出的覆蓋率文件進(jìn)行合 并,將合并后的總覆蓋率信息,全部反標(biāo)到對(duì)應(yīng)目標(biāo)程序上,實(shí)現(xiàn)多個(gè)測(cè)試用例對(duì)應(yīng)覆蓋 率結(jié)果的統(tǒng)一分析;反標(biāo)覆蓋率后的數(shù)據(jù),將輸出給覆蓋率分析模塊進(jìn)行后續(xù)的覆蓋率分 析;
[0047] 覆蓋率分析模塊,主要實(shí)現(xiàn)覆蓋率指標(biāo)的分析,統(tǒng)計(jì)軟核程序執(zhí)行的語(yǔ)句覆蓋率、 分支覆蓋率等指標(biāo)。該模塊接收目標(biāo)碼分析模塊輸出的數(shù)據(jù),通過(guò)統(tǒng)計(jì)其中的語(yǔ)句總數(shù)和 分支總數(shù),并通過(guò)反標(biāo)后的覆蓋率信息,分析已執(zhí)行過(guò)的語(yǔ)句數(shù)以及真假分支執(zhí)行情況,最 終向用戶輸出語(yǔ)句覆蓋率和分支覆蓋率等指標(biāo),其中語(yǔ)句覆蓋率指標(biāo)和分支覆蓋率指標(biāo)的 計(jì)算公式如下:
[0048] 語(yǔ)句覆蓋率=已執(zhí)行語(yǔ)句數(shù)/可執(zhí)行語(yǔ)句總數(shù)*100%
[0049] 分支覆蓋率=(已執(zhí)行真分支數(shù)+已執(zhí)行假分支數(shù)V(真分支總數(shù)+假分支總 數(shù))*100%。
[0050] 針對(duì)其中的MicroBlaze仿真模型模塊,【具體實(shí)施方式】為:
[0051] (1)根據(jù)所用的EDA仿真軟件,編譯MicroBlaze仿真模型,以及MicroBlaze軟核 所用到的外圍接口模塊;
[0052] (2)編譯將被測(cè)試的軟核程序,得到軟核程序的目標(biāo)程序。導(dǎo)出目標(biāo)程序中的指令 機(jī)器碼數(shù)據(jù),并將數(shù)據(jù)轉(zhuǎn)換為MicroBlaze仿真模型所需的內(nèi)存初始化文件形式。編譯軟核 程序時(shí),可以將調(diào)試選項(xiàng)打開,以增強(qiáng)用戶后續(xù)進(jìn)行覆蓋率分析的可讀性;
[0053] (3)編寫外圍其他邏輯的仿真模型,和測(cè)試用例模塊,實(shí)現(xiàn)整個(gè)MicroBlaze仿真 平臺(tái)模塊,提供工作時(shí)鐘等信號(hào),實(shí)現(xiàn)MicroBlaze仿真平臺(tái)模塊的運(yùn)行;
[0054] 針對(duì)其中的軟核執(zhí)行流監(jiān)視記錄模塊,【具體實(shí)施方式】為:
[0055] (1)接收MicroBlaze仿真平臺(tái)模塊輸出的執(zhí)行信息,執(zhí)行信息中具體包括工作時(shí) 鐘、當(dāng)前的PC指針、指令有效信號(hào)和跳轉(zhuǎn)發(fā)生信號(hào);
[0056] (2)當(dāng)指令有效信號(hào)為有效時(shí),記錄當(dāng)前的PC指針,并在對(duì)應(yīng)的地址標(biāo)記為已經(jīng) 執(zhí)行過(guò);
[0057] (3)對(duì)于分支指令,當(dāng)跳轉(zhuǎn)發(fā)生信號(hào)有效時(shí),標(biāo)記為真分支已經(jīng)執(zhí)行過(guò),否則標(biāo)記 為假分支已經(jīng)執(zhí)行過(guò);
[0058] (4)重復(fù)執(zhí)行上述步驟(2)和步驟(3),直至當(dāng)前用例執(zhí)行結(jié)束;
[0059] (5)將上述標(biāo)記的指令執(zhí)行情況和分支執(zhí)行情況作為覆蓋率文件輸出,輸出覆蓋 率文件時(shí),記錄軟核目標(biāo)程序的名稱和版本,用于后續(xù)合并時(shí)的比對(duì);
[0060] 針對(duì)其中的目標(biāo)碼分析模塊,【具體實(shí)施方式】為:
[0061] (1)加載軟核程序的目標(biāo)程序,按照目標(biāo)程序的格式,對(duì)所有的程序指令進(jìn)行解 析;
[0062] (2)加載覆蓋率文件,當(dāng)選擇多個(gè)覆蓋率文件時(shí),檢查多個(gè)覆蓋率文件的軟核目標(biāo) 程序名稱和版本是否一致,如有不一致則提示用戶。將軟核目標(biāo)程序名稱和版本一致的多 個(gè)覆蓋率文件數(shù)據(jù)按地址進(jìn)行合并。并根據(jù)地址,將指令執(zhí)行信息和分支執(zhí)行信息進(jìn)行反 標(biāo);
[0063] (3)將反標(biāo)覆蓋率后的數(shù)據(jù),輸出給覆蓋率分析模塊進(jìn)行覆蓋率計(jì)算和分析;
[0064] 針對(duì)其中的覆蓋率分析模塊,【具體實(shí)施方式】為:
[0065] (1)根據(jù)目標(biāo)碼分析模塊的輸出結(jié)果,統(tǒng)計(jì)被測(cè)軟核程序的語(yǔ)句總數(shù);
[0066] (2)根據(jù)反標(biāo)后的覆蓋率結(jié)果,統(tǒng)計(jì)已執(zhí)行的語(yǔ)句數(shù),計(jì)算語(yǔ)句覆蓋率指標(biāo)=已執(zhí) 行語(yǔ)句數(shù)/可執(zhí)行語(yǔ)句總數(shù)*100% ;
[0067] (3)根據(jù)目標(biāo)碼分析模塊的輸出結(jié)果,統(tǒng)計(jì)被測(cè)軟核程序的真分支總數(shù)和假分支 總數(shù);
[0068] (4)根據(jù)反標(biāo)后的覆蓋率結(jié)果,統(tǒng)計(jì)已執(zhí)行的真分支數(shù)和假分指數(shù),計(jì)算分支覆蓋 率指標(biāo)=(已執(zhí)行真分支數(shù)+已執(zhí)行假分支數(shù)V (真分支總數(shù)+假分支總數(shù))*100% ;
[0069] (5)將反標(biāo)到每個(gè)語(yǔ)句和每個(gè)分支上的覆蓋率信息,結(jié)合語(yǔ)句代碼,以友好的形式 顯示給用戶,供用戶進(jìn)行分析。
[0070] 針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證方法,如圖2所示,其實(shí)施步驟如下:
[0071] (1)利用EDA平臺(tái)上的仿真軟件,編譯MicroBlaze仿真模型,并編譯MicroBlaze 軟核上運(yùn)行的目標(biāo)程序,生成仿真文件以及程序加載文件,之后進(jìn)入步驟(2);
[0072] (2)在仿真軟件中,構(gòu)建MicroBlaze軟核的外圍其他邏輯的仿真模型,,提供時(shí)鐘 激勵(lì)以及各種接口的模擬,使得整個(gè)軟硬件系統(tǒng)可以協(xié)同運(yùn)行,之后進(jìn)入步驟(3);
[0073] (3)設(shè)計(jì)測(cè)試用例,實(shí)現(xiàn)整個(gè)MicroBlaze仿真平臺(tái)模塊,利用EDA仿真軟件進(jìn)行動(dòng) 態(tài)仿真運(yùn)行;
[0074] (4)在仿真運(yùn)行的過(guò)程中,監(jiān)視MicroBlaze仿真平臺(tái)模塊輸出的執(zhí)行信息,進(jìn)行 軟核執(zhí)行流的分析,并記錄指令執(zhí)行情況和分支執(zhí)行情況;
[0075] (5)仿真運(yùn)行中反復(fù)執(zhí)行步驟(4),直至測(cè)試用例結(jié)束后,進(jìn)入步驟(6);
[0076] (6)測(cè)試用例執(zhí)行結(jié)束后,輸出該測(cè)試用例的覆蓋率文件。反復(fù)運(yùn)行多個(gè)測(cè)試用 例,將各測(cè)試用例輸出的覆蓋率文件合并,得到總覆蓋率文件,并進(jìn)入步驟(7);
[0077] (7)分析軟核程序的目標(biāo)程序,并將總覆蓋文件中的指令執(zhí)行信息和指令跳轉(zhuǎn)執(zhí) 行情況反標(biāo)到目標(biāo)程序中,并進(jìn)入到步驟(8);
[0078] (8)根據(jù)覆蓋率反標(biāo)結(jié)果,進(jìn)行目標(biāo)碼的覆蓋率分析,分析語(yǔ)句覆蓋率、分支覆蓋 率等指標(biāo),判斷是否滿足要求,如果滿足要求則可以結(jié)束測(cè)試,否則返回步驟(3),補(bǔ)充設(shè)計(jì) 新的測(cè)試用例。
[0079] 圖3說(shuō)明了進(jìn)行軟核執(zhí)行流監(jiān)視記錄的流程圖,仿真開始后,軟核執(zhí)行流監(jiān)視記 錄模塊監(jiān)視MicroBlaze仿真平臺(tái)模塊輸出的執(zhí)行信息,在軟核系統(tǒng)時(shí)鐘的下降沿采集當(dāng) 前PC指針、指令有效標(biāo)志和跳轉(zhuǎn)標(biāo)志。當(dāng)指令有效標(biāo)志為有效時(shí),表示當(dāng)前PC指針對(duì)應(yīng)為 有效指令,軟核執(zhí)行流監(jiān)視記錄模塊記錄PC指針對(duì)應(yīng)的地址為已執(zhí)行,若指令有效標(biāo)志為 無(wú)效,表示當(dāng)前PC指針對(duì)應(yīng)的指令被丟棄,軟核執(zhí)行流監(jiān)視記錄模塊記錄無(wú)需進(jìn)行記錄。 對(duì)于有效指令,軟核執(zhí)行流監(jiān)視記錄模塊檢測(cè)跳轉(zhuǎn)標(biāo)志為有效時(shí),軟核執(zhí)行流監(jiān)視記錄模 塊記錄指令的真分支執(zhí)行,否則記錄假分支執(zhí)行。重復(fù)上述處理,直至測(cè)試用例執(zhí)行結(jié)束, 即可輸出當(dāng)前測(cè)試用例對(duì)應(yīng)的覆蓋率文件。
[0080] 目前已在部分在研型號(hào)衛(wèi)星上使用該測(cè)試驗(yàn)證系統(tǒng),經(jīng)過(guò)測(cè)試表明,采用該方法, 可以解決軟核程序動(dòng)態(tài)測(cè)試無(wú)法獲取覆蓋率信息的問(wèn)題,有效地保障了軟核程序測(cè)試驗(yàn)證 的充分性。
[0081] 本發(fā)明說(shuō)明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員的公知技術(shù)。
【權(quán)利要求】
1. 一種針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證系統(tǒng),其特征在于包括:MicroBlaze仿真 平臺(tái)模塊、軟核執(zhí)行流監(jiān)視記錄模塊、目標(biāo)碼分析模塊和覆蓋率統(tǒng)計(jì)分析模塊,其中: MicroBlaze仿真平臺(tái)模塊,實(shí)現(xiàn)MicroBlaze軟核處理器在EDA環(huán)境下的仿真運(yùn)行; 該模塊通過(guò)加載軟核目標(biāo)程序的機(jī)器碼,實(shí)現(xiàn)軟核程序的仿真運(yùn)行,并將運(yùn)行結(jié)果與外圍 其他邏輯進(jìn)行交互,實(shí)現(xiàn)FPGA邏輯代碼、MicroBlaze軟核以及軟核程序的集成運(yùn)行;同時(shí) 該模塊還包含外圍其他邏輯的仿真模型和測(cè)試用例模塊,實(shí)現(xiàn)整個(gè)被測(cè)軟件運(yùn)行的模擬平 臺(tái),并向軟核執(zhí)行流監(jiān)視記錄模塊輸出執(zhí)行信息,供軟核執(zhí)行流監(jiān)視記錄模塊實(shí)現(xiàn)執(zhí)行流 的監(jiān)視、分析和記錄; 軟核執(zhí)行流監(jiān)視記錄模塊,根據(jù)MicroBlaze仿真平臺(tái)模塊輸出執(zhí)行信息,對(duì)軟核程序 執(zhí)行情況進(jìn)行分析,實(shí)現(xiàn)真正指令執(zhí)行序列的監(jiān)視和記錄;該模塊接收來(lái)自MicroBlaze仿 真平臺(tái)模塊的執(zhí)行信息,所述執(zhí)行信息包括軟核工作時(shí)鐘、PC指針、指令有效標(biāo)志和跳轉(zhuǎn)標(biāo) 志;根據(jù)指令有效標(biāo)志和跳轉(zhuǎn)標(biāo)志,識(shí)別出當(dāng)前執(zhí)行的指令地址和分支跳轉(zhuǎn)情況,實(shí)現(xiàn)執(zhí)行 流的監(jiān)視、分析和記錄。仿真測(cè)試時(shí)重復(fù)執(zhí)行上述過(guò)程直至用例執(zhí)行結(jié)束,生成覆蓋率文 件; 目標(biāo)碼分析模塊,通過(guò)對(duì)軟核目標(biāo)程序進(jìn)行分析,實(shí)現(xiàn)覆蓋率信息的反標(biāo);該模塊加載 軟核目標(biāo)程序文件以及軟核執(zhí)行流監(jiān)視記錄模塊輸出的覆蓋率文件,通過(guò)對(duì)目標(biāo)程序進(jìn)行 格式分析,識(shí)別出各條指令以及各分支指令,并將覆蓋率文件中的覆蓋率信息在目標(biāo)程序 上進(jìn)行反標(biāo);在進(jìn)行覆蓋率反標(biāo)時(shí),還可以將多個(gè)測(cè)試用例執(zhí)行后輸出的覆蓋率文件進(jìn)行 合并,將合并后的總覆蓋率信息,全部反標(biāo)到對(duì)應(yīng)目標(biāo)程序上,實(shí)現(xiàn)多個(gè)測(cè)試用例對(duì)應(yīng)覆蓋 率結(jié)果的統(tǒng)一分析;反標(biāo)覆蓋率后的數(shù)據(jù),將輸出給覆蓋率分析模塊進(jìn)行后續(xù)的覆蓋率分 析; 覆蓋率分析模塊,實(shí)現(xiàn)覆蓋率指標(biāo)的分析,統(tǒng)計(jì)軟核程序執(zhí)行的語(yǔ)句覆蓋率、分支覆蓋 率指標(biāo);該模塊接收目標(biāo)碼分析模塊輸出的數(shù)據(jù),通過(guò)統(tǒng)計(jì)其中的語(yǔ)句總數(shù)和分支總數(shù),并 根據(jù)反標(biāo)后的覆蓋率信息,分析執(zhí)行過(guò)的語(yǔ)句數(shù)以及真假分支執(zhí)行情況,最終向用戶輸出 語(yǔ)句覆蓋率和分支覆蓋率指標(biāo),其中語(yǔ)句覆蓋率指標(biāo)和分支覆蓋率指標(biāo)的計(jì)算公式如下: 語(yǔ)句覆蓋率=已執(zhí)行語(yǔ)句數(shù)/可執(zhí)行語(yǔ)句總數(shù)*100% 分支覆蓋率=(已執(zhí)行真分支數(shù)+已執(zhí)行假分支數(shù)V(真分支總數(shù)+假分支總 數(shù))*100%。
2. 根據(jù)權(quán)利要求1所述的針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證系統(tǒng),其特征在于:所 述MicroBlaze仿真平臺(tái)模塊的具體實(shí)現(xiàn)步驟如下: (1) 首先需要編譯MicroBlaze處理器的仿真模型,根據(jù)所用的EDA仿真軟件,編譯 MicroBlaze處理器的仿真模型,以及MicroBlaze軟核處理器所用到的外圍接口模塊; (2) 完成MicroBlaze處理器的仿真模型構(gòu)建后,還需要編譯將被測(cè)試的軟核程序,得 到軟核程序的目標(biāo)程序,導(dǎo)出目標(biāo)程序中的指令機(jī)器碼數(shù)據(jù),并將指令機(jī)器碼數(shù)據(jù)轉(zhuǎn)換為 MicroBlaze處理器仿真模型所需的內(nèi)存初始化文件形式;編譯軟核程序時(shí),將調(diào)試選項(xiàng)打 開,以增強(qiáng)用戶后續(xù)進(jìn)行覆蓋率分析的可讀性; (3) 最后編寫外圍其他邏輯的仿真模型和測(cè)試用例模塊,構(gòu)建整個(gè)MicroBlaze仿真平 臺(tái)模塊,提供工作時(shí)鐘信號(hào),實(shí)現(xiàn)MicroBlaze仿真模塊平臺(tái)的運(yùn)行。仿真運(yùn)行過(guò)程中,向軟 核執(zhí)行流監(jiān)視記錄模塊輸出軟核程序的執(zhí)行信息。
3. 根據(jù)權(quán)利要求1所述的針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證系統(tǒng),其特征在于:所 述軟核執(zhí)行流監(jiān)視記錄模塊具體實(shí)現(xiàn)步驟如下: (1) 接收MicroBlaze仿真平臺(tái)模塊輸出執(zhí)行信息,; (2) 當(dāng)執(zhí)行信息中的指令有效信號(hào)為有效時(shí),記錄執(zhí)行信息中的當(dāng)前PC指針,并將對(duì) 應(yīng)的地址標(biāo)記為已經(jīng)執(zhí)行過(guò); (3) 對(duì)于分支跳轉(zhuǎn)情況的處理,通過(guò)識(shí)別執(zhí)行信息中的跳轉(zhuǎn)發(fā)生信號(hào),當(dāng)跳轉(zhuǎn)發(fā)生信號(hào) 有效時(shí),標(biāo)記為真分支已經(jīng)執(zhí)行過(guò),否則標(biāo)記為假分支已經(jīng)執(zhí)行過(guò); (4) 重復(fù)執(zhí)行上述步驟(2)和步驟(3),直至當(dāng)前測(cè)試用例執(zhí)行結(jié)束; (5) 將上述標(biāo)記的指令執(zhí)行情況和分支執(zhí)行情況作為覆蓋率文件輸出,輸出覆蓋率文 件時(shí),記錄軟核程序的名稱和版本,用于后續(xù)合并時(shí)的比對(duì)。
4. 一種針對(duì)MicroBlaze軟核程序的測(cè)試驗(yàn)證方法,實(shí)現(xiàn)步驟如下: (1) 利用EDA平臺(tái)上的仿真軟件,編譯MicroBlaze仿真模型,并編譯MicroBlaze軟核 上運(yùn)行的目標(biāo)程序,生成仿真文件以及程序加載文件,之后進(jìn)入步驟(2); (2) 在仿真軟件中,構(gòu)建MicroBlaze軟核的外圍其他邏輯的仿真模型,提供時(shí)鐘激勵(lì) 以及各種接口的模擬,使得整個(gè)軟硬件系統(tǒng)可以協(xié)同運(yùn)行,之后進(jìn)入步驟(3); (3) 設(shè)計(jì)測(cè)試用例,實(shí)現(xiàn)整個(gè)MicroBlaze仿真平臺(tái)模塊,,利用EDA仿真軟件進(jìn)行動(dòng)態(tài) 仿真運(yùn)行; (4) 在仿真運(yùn)行的過(guò)程中,監(jiān)視MicroBlaze仿真平臺(tái)模塊輸出執(zhí)行流信息,進(jìn)行軟核 執(zhí)行流的分析,并記錄指令執(zhí)行情況和分支執(zhí)行情況; (5) 仿真運(yùn)行中反復(fù)執(zhí)行步驟(4),直至測(cè)試用例結(jié)束后,進(jìn)入步驟(6); (6) 測(cè)試用例執(zhí)行結(jié)束后,輸出該測(cè)試用例的覆蓋率文件。反復(fù)運(yùn)行多個(gè)測(cè)試用例,將 各測(cè)試用例輸出的覆蓋率文件合并,得到總覆蓋率文件,并進(jìn)入步驟(7); (7) 分析軟核目標(biāo)程序,并將總覆蓋文件中的指令執(zhí)行情況和指令跳轉(zhuǎn)執(zhí)行情況反標(biāo) 到目標(biāo)碼文件中,得到覆蓋率反標(biāo)結(jié)果,并進(jìn)入到步驟(8); (8) 根據(jù)覆蓋率反標(biāo)結(jié)果,進(jìn)行目標(biāo)碼的覆蓋率分析,分析語(yǔ)句覆蓋率、分支覆蓋率指 標(biāo),判斷是否滿足要求,如果滿足要求則結(jié)束測(cè)試,否則返回步驟(3),補(bǔ)充設(shè)計(jì)新的測(cè)試用 例;其中語(yǔ)句覆蓋率指標(biāo)和分支覆蓋率指標(biāo)的計(jì)算公式如下: 語(yǔ)句覆蓋率=已執(zhí)行語(yǔ)句數(shù)/可執(zhí)行語(yǔ)句總數(shù)*100% 分支覆蓋率=(已執(zhí)行真分支數(shù)+已執(zhí)行假分支數(shù)V(真分支總數(shù)+假分支總 數(shù))*100%。
【文檔編號(hào)】G06F11/36GK104063321SQ201410302903
【公開日】2014年9月24日 申請(qǐng)日期:2014年6月27日 優(yōu)先權(quán)日:2014年6月27日
【發(fā)明者】于志杰, 田甜, 趙雷, 朱倩, 趙歡, 陳睿 申請(qǐng)人:北京控制工程研究所