專利名稱:一種由流程圖自動產(chǎn)生覆蓋率代碼的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種由流程圖自動產(chǎn)生覆蓋率代碼的方法及裝置,屬于集成電路功能 驗證的技術(shù)領(lǐng)域。
背景技術(shù):
隨著客戶需求的提高,芯片的集成度和規(guī)模也逐漸提升。在大規(guī)模復(fù)雜集成電路 的開發(fā)流程中,功能驗證消耗的資源已經(jīng)占據(jù)了絕大部分,一般在70%以上。如何全面而高 效的完成功能驗證流程,已經(jīng)成為集成電路產(chǎn)業(yè)界急需解決的問題之一。為解決這一個問題,學(xué)術(shù)界和產(chǎn)業(yè)界提出了包括基于斷言、基于約束隨機激勵、 基于覆蓋率驅(qū)動等方法。其中基于覆蓋率驅(qū)動的驗證在加速驗證收斂方面的效果最好,也 同時是驗證完整性的衡量標(biāo)準之一。覆蓋率包括代碼覆蓋率和功能覆蓋率等內(nèi)容,其中代碼覆蓋率可以由EDA工具直 接統(tǒng)計,而功能覆蓋率的收集需要驗證工程師編寫相關(guān)程序,再由EDA工具輔助完成統(tǒng)計。 覆蓋率驅(qū)動的驗證方法難點在于功能覆蓋點提取的全面性?,F(xiàn)有對功能覆蓋點的提取還處 于工程師協(xié)同審查的人為提取過程,缺點是提取和確認過程耗時時間長,如有遺漏較難發(fā) 現(xiàn)。本專利將通過流程圖自動提取覆蓋點,完成覆蓋率代碼的生成。覆蓋率相關(guān)專利CN200710032674. X《確定代碼覆蓋率的方法、測試裝置》描述了一種通過在各代碼 行內(nèi)設(shè)置中斷,獲取被測試程序的代碼覆蓋率的方法。CN00809255. 9《形式驗證中的屬性覆蓋率》描述了一種通過模型檢測驗證的屬性 覆蓋的狀態(tài)空間得到屬性覆蓋率的方法。CN200610153890. 5《一種功能覆蓋率測試度量系統(tǒng)和方法》描述了一種能夠在EDA 工具中實現(xiàn)的根據(jù)度量要素參數(shù)的功能覆蓋得分得到功能覆蓋率的方法。CN200510036782. 5《一種基于功能覆蓋率的隨機激勵的自動產(chǎn)生方法》描述了一 種基于功能覆蓋率自動產(chǎn)生隨機激勵的方法。CN200510035490. X《一種邏輯測試的功能覆蓋率分析方法》描述了一種使用探針
獲取功能覆蓋率信息的方法。CN200810066597. 4《一種實現(xiàn)覆蓋率測試的系統(tǒng)和方法》描述了一種應(yīng)用于多種 操作系統(tǒng)通過插入代碼打點程序?qū)崿F(xiàn)覆蓋率統(tǒng)計的方法。CN200310104038. 5《一種驗證代碼覆蓋率分析的簡單方法》描述了一種使用分支 加標(biāo)記的方法完成代碼覆蓋率的分析。CN200410079030. 2《一種自動調(diào)度邏輯仿真與代碼覆蓋率分析的方法與系統(tǒng)》描 述了一種對被測邏輯進行預(yù)編譯后根據(jù)仿真用例索引目錄順序執(zhí)行仿真用例并保存代碼
覆蓋率結(jié)果的方法。CN200810133180. 5《功能覆蓋率的收集方法及裝置》描述了一種在參考模型中設(shè)置可驗證性標(biāo)識來統(tǒng)計參考模型的功能覆蓋率的方法。CN200910078326. 5《覆蓋率驅(qū)動隨機驗證集成電路的方法及系統(tǒng)》描述了一種使 用種群選擇交叉產(chǎn)生新個體完成自動優(yōu)化驗證程序的方法。CN201010270989.X《一種基于硬件的仿真覆蓋率統(tǒng)計方法和裝置》描述了一種在 原電路中添加存儲單元作為覆蓋率標(biāo)記來統(tǒng)計觸發(fā)次數(shù)和狀態(tài)信息的仿真覆蓋率統(tǒng)計方 法。CN201010170650. 2《獲得代碼覆蓋率的方法及裝置》描述了一種至少兩個測試對 象進行代碼覆蓋測試通過標(biāo)識滿足一定條件未標(biāo)識的代碼獲得測試對象代碼覆蓋率的方 法。流程圖相關(guān)專利CN200410046116. 5《流程圖的編輯、重組驗證、創(chuàng)建和轉(zhuǎn)換的方法和裝置》描述了 一種將流程圖轉(zhuǎn)換為等價樹狀圖的方法、將等價樹狀圖轉(zhuǎn)換為流程圖的方法、驗證重組流 程圖的合法性的方法、編輯流程圖的方法、創(chuàng)建流程圖的方法以及流程圖編輯器。CN200410021269. 4《工作流流程圖并發(fā)單元的合法性校驗方法》描述了一種通過 圖的先深搜索算法來檢查并發(fā)單元的非法出口、非法入口及各并發(fā)分支間的跳轉(zhuǎn)的方法。CN200810059628. 3《一種基于匯編程序構(gòu)造語義流程圖的方法》描述了一種由匯 編程序構(gòu)造語義流程圖的方法。CN200610066636. 1《一種將業(yè)務(wù)流程圖轉(zhuǎn)換為執(zhí)行語言的方法》描述了一種基于 令牌分析技術(shù)將流程圖分塊最終轉(zhuǎn)化為執(zhí)行語言中的對應(yīng)元素的方法。經(jīng)檢索,根據(jù)以上提供的相關(guān)專利內(nèi)容,未發(fā)現(xiàn)與本專利具有相同技術(shù)特點的專 利。相關(guān)論文《一種基于遺傳算法的無線傳感器網(wǎng)絡(luò)覆蓋模型》——《微型機與應(yīng)用》,2010年 15期,呂廣輝,崔遜學(xué),侯戰(zhàn)勝。文章描述了使用改進的遺傳算法,選用多重覆蓋度代替節(jié)點 利用率作為適應(yīng)度函數(shù)切實可行。不包含本專利的任何核心內(nèi)容?!兑环N嵌入式匯編軟件測試平臺的設(shè)計與實現(xiàn)》——謝瑞東,2006_電子科技大學(xué) 計算機應(yīng)用。文章中提到了對于8051系列CPU的匯編程序進行覆蓋率數(shù)據(jù)分析,著眼于代 碼角度。與本專利沒有實際的重疊部分?!蛾P(guān)于程序控制流程圖的路徑測試方法研究》——《電子科技》,2008年7期,余俊, 張菊平,趙莉。文章描述了面向軟件測試,將程序控制流程圖抽象出程序結(jié)構(gòu)的圖論模型, 再轉(zhuǎn)化為鄰接矩陣,利用一定的查找算法查找測試路徑。本專利面向集成電路功能驗證領(lǐng) 域,對流程圖處理框的模塊動作進行提取作為覆蓋點,對判斷框的具體分支條件進行分類 處理提取作為覆蓋點,組合覆蓋點由判斷框內(nèi)容決定,序列覆蓋點由模塊動作表征的序列 組成,不涉及算法和鄰接矩陣問題,即文章與本專利內(nèi)容沒有重疊部分?!痘?1系列的嵌入式軟件測試系統(tǒng)研究與實現(xiàn)》——劉利枚,2005,電子科技大 學(xué),計算機軟件與理論。文章中對于軟件測試中的覆蓋率問題,提及了使用插樁的方法得到 代碼覆蓋率。與本專利沒有實際的重疊部分?!痘诔绦蚩刂频穆窂綔y試技術(shù)研究》——《電子科技》,2008年12期,丁振國,郭 強。文章與《關(guān)于程序控制流程圖的路徑測試方法研究》雷同。
《基于軟件仿真的匯編語言嵌入式軟件測試平臺研究與實現(xiàn)》——王學(xué)東,2006, 電子科技大學(xué),計算機軟件與理論。文章提及從程序中提取流程圖,并使用插樁技術(shù)實現(xiàn)語 句和分支覆蓋率及在多個測試用例驅(qū)動下的綜合覆蓋率的計算和運行時間及內(nèi)存使用情 況的統(tǒng)計。《基于軟件內(nèi)建自測試的測試用例研究》——《計算機應(yīng)用與軟件》,2006年10期, 唐培,徐拾義。文章描述了在軟件測試中將流程圖轉(zhuǎn)換為二叉樹,然后通過二叉樹的遍歷, 完成測試。與本專利沒有實際的重疊部分。經(jīng)檢索,根據(jù)以上提供的相關(guān)文章內(nèi)容,未發(fā)現(xiàn)與本專利具有相同技術(shù)特點的專 利。
發(fā)明內(nèi)容
本發(fā)明要解決的主要技術(shù)問題是,提供一種由流程圖自動產(chǎn)生覆蓋率代碼的方法 及裝置。為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案如下流程圖元素包含起止框、輸入輸出框、判斷框、處理框、流程線、連接點、注釋框。 其中判斷框和處理框是流程圖中最常用的兩個元素。流程圖包括順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán) 結(jié)構(gòu),選擇結(jié)構(gòu)又可以分為二元選擇結(jié)構(gòu)和多元選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)又可以分為先執(zhí)行的 結(jié)構(gòu)和先判斷的結(jié)構(gòu)。流程圖的層次性表現(xiàn)在一個處理框可以更詳細的描述為另一張流程 圖。處理框表示的是在整個流程圖描述的事件程序中,系統(tǒng)中某一模塊做了某種動 作,即module_XXX. do_aCtion_XXX,該動作也表示該模塊在執(zhí)行其負責(zé)的某一功能,對各某 塊功能的收集是完成功能覆蓋率檢查的前提。對于被驗證的設(shè)計在受到激勵進入該處理 框表示的處理程序進行相應(yīng)的處理時,必然會有相應(yīng)的信號表征這一事件的發(fā)生。所以將 模塊的每個動作定義對應(yīng)的事件,即 module_XXX. do_action_XXX — event_modu 1 e_XXX_ do_action_XXX。相應(yīng)的表征信號標(biāo)志著發(fā)生了該事件,即event_module_XXX_do_action_ XXX — F(signal, time, value),其中 F(signal, time, value)表不某些信號 signal 在其 某一規(guī)定時刻time出現(xiàn)某一特定數(shù)值value。判斷框表示的是在整個流程圖描述的事件程序中,系統(tǒng)需要通過某些屬性或變量 值來判定接下來的處理流程將如何進行,即路徑的選擇。判定條件中對屬性和變量的定義, 以及他們的取值范圍和種類是覆蓋點提取重點關(guān)注的內(nèi)容。收集處理框覆蓋點并產(chǎn)生覆蓋率代碼的方法1.讀取流程圖中的所有元素。讀取過程從起始點出發(fā),到終止點結(jié)束,遍歷整張流 程圖的所有元素。2.收集每一個處理框中系統(tǒng)各模塊產(chǎn)生的動作。3.合并相同模塊中相同的動作。4.對每一個動作定義一個對應(yīng)的事件。5.收集每一個事件的信號表征描述。6.以系統(tǒng)各模塊的動作所表示的功能作為功能覆蓋點,以其被定義的對應(yīng)事件的 表征信號作為覆蓋條件,產(chǎn)生覆蓋率代碼。
收集判斷框覆蓋點并產(chǎn)生覆蓋率代碼的方法1.讀取流程圖中的所有元素。讀取過程從起始點出發(fā),到終止點結(jié)束,遍歷整張流 程圖的所有元素。2.收集每一個判斷框中的判斷條件。判斷條件包含系統(tǒng)中的參數(shù)或模塊動作處理 后的結(jié)果值,即判斷條件中的變量,以及其可能的取值范圍和類型。3.根據(jù)判定條件完成場景劃分。場景是系統(tǒng)在工作于不同處理步驟時對應(yīng)的系統(tǒng) 參數(shù)或處理結(jié)果的值或類型的安排。4.合并相同變量值或相同變量組合值對應(yīng)的場景。5.以每一個被劃分的場景所表示的功能作為功能覆蓋點,以其被定義的對應(yīng)的變 量值或變量的組合值作為覆蓋條件,產(chǎn)生覆蓋率代碼。收集組合覆蓋點并產(chǎn)生覆蓋率代碼的方法1.讀取流程圖中的所有元素。讀取過程從起始點出發(fā),到終止點結(jié)束,遍歷整張流 程圖的所有元素。2.收集每一個判斷框中的判斷條件。判斷條件包含系統(tǒng)中的參數(shù)或模塊動作處理 后的結(jié)果值,即判斷條件中的變量,以及其可能的取值范圍和類型。3.根據(jù)判定條件完成場景劃分。場景是系統(tǒng)在工作于不同處理步驟時對應(yīng)的系統(tǒng) 參數(shù)或處理結(jié)果的值或類型的安排。4.按照流程圖中每一條從起始點到終止點路徑上的判斷框出現(xiàn)的順序,依次將各 判斷框中根據(jù)判定條件劃分的場景交叉組合,形成組合場景表示的功能覆蓋點。路徑中如 果出現(xiàn)循環(huán),預(yù)定循環(huán)上限。5.以每一個組合場景所表示的功能作為功能覆蓋點,以其對應(yīng)的判定條件的組合 形式作為覆蓋條件,產(chǎn)生覆蓋率代碼。收集序列覆蓋點并產(chǎn)生覆蓋率代碼的方法1.讀取流程圖中的所有元素。讀取過程從起始點出發(fā),到終止點結(jié)束,遍歷整張流 程圖的所有元素。2.收集流程圖中每一條從起始點到終止點路徑上的處理框中的動作。路徑中如果 出現(xiàn)循環(huán),預(yù)定循環(huán)上限。3.對每一個動作定義一個對應(yīng)的事件。4.收集每一個事件的信號表征描述。5.為每一條路徑發(fā)生的有序動作序列所表示的功能作為功能覆蓋點,以其對應(yīng)的 有序事件序列的表征信號作為覆蓋條件,產(chǎn)生覆蓋率代碼。收集帶約束條件的序列覆蓋點并產(chǎn)生覆蓋率代碼的方法1.讀取流程圖中的所有元素。讀取過程從起始點出發(fā),到終止點結(jié)束,遍歷整張流 程圖的所有元素。2.收集流程圖中每一條從起始點到終止點路徑上的處理框中的動作。路徑中如果 出現(xiàn)循環(huán),預(yù)定循環(huán)上限。3.對每一個動作定義一個對應(yīng)的事件。4.收集每一個事件的信號表征描述。5.收集2步中每一條路徑上穿插在處理框序列中的判斷框。并收集每一個判斷框中的判斷條件。6.為每一條路徑發(fā)生的有序動作序列,以及動作序列中對應(yīng)位置的判斷條件所表 示的功能作為功能覆蓋點,以其對應(yīng)的有序事件序列的表征信號,以及穿插其中的判定條 件對應(yīng)的變量值或變量的組合值為覆蓋條件,產(chǎn)生覆蓋率代碼。在每條路徑中,每個判斷框 緊接其后的處理框所對應(yīng)的事件被執(zhí)行前,對判斷框中的判斷條件進行采樣,判斷是否穿 過該判斷框進入其后處理框,即將判斷框中的條件作為了序列中的一部分。以上生成覆蓋點的方法中如果流程圖為層次化流程圖,即其中有處理框可以展開 成另一張流程圖的,在收集覆蓋點并產(chǎn)生覆蓋率的代碼過程中,可以先做展開處理,再依次 按照上述步驟執(zhí)行,也可以選擇不展開作為一個單獨的處理框,按照上述步驟執(zhí)行。流程圖 中如果出現(xiàn)連接點,通過連接點將流程圖連接完整,再讀取。注釋框在其注釋的處理框和判 斷框產(chǎn)生覆蓋點代碼時,以代碼中注釋行的形式記錄到代碼中。流程圖中如果出現(xiàn)輸入輸 出框,在上述收集覆蓋點的方法中,輸入輸出框可以作為處理框來處理,以輸入輸出的內(nèi)容 分類作為覆蓋點,以相應(yīng)的信號表征作為采樣依據(jù),產(chǎn)生覆蓋率代碼。更進一步,上述方法中所述的根據(jù)判定條件完成場景劃分的具體規(guī)則如下1.對于判定條件中的關(guān)系運算符,8卩< (小于)、<=(小于等于)、> (大于)、 >=(大于等于)、= =(等于)、!=(不等于)。關(guān)系運算符左右兩邊的表達式通過左 右兩邊的等價移動轉(zhuǎn)換為一邊包含變量,另一邊只包含數(shù)值,再以該數(shù)值為界,將包含變量 一邊的變量關(guān)系劃分為三個倉來承載三種場景,完成場景的劃分,即A關(guān)系運算B,A中包換 變量,B中只包含數(shù)值,三個場景倉(bins)則為[$,B)(小于B的倉)、B (等于B的倉)、 (B, $](大于B的倉)。2.對于判定條件中的邏輯運算符即!(邏輯非)、&&(邏輯與)、11(邏輯 或)。邏輯與運算符作為雙目運算符,左右兩邊的表達式的值為邏輯真(true)或者邏輯假 (false),可以將其分為四個場景倉(左真右假,左假右真,左右同假,左右同真),根據(jù)最 終效果又可以合并為兩個場景倉(真?zhèn)},假倉),其中真?zhèn)}包括左右同真,假倉包括左真右 假,左假右真,左右同假;邏輯或運算符作為雙目運算符,左右兩邊的表達式的值為邏輯真 (true)或者邏輯假(false),可以將其分為四個場景倉(左真右假,左假右真,左右同假,左 右同真),根據(jù)最終效果又可以合并為兩個場景倉(真?zhèn)},假倉),其中真?zhèn)}包括左右同真, 左真右假,左假右真,假倉包括左右同假;邏輯非運算符作為單目運算符,其表達式的值為 邏輯真(true)或者邏輯假(false),根據(jù)最終效果分為兩個場景倉(真?zhèn)},假倉),其中真 倉為邏輯非運算符后的表達式邏輯值為假,假倉為邏輯非運算符后的表達式邏輯值為真。3.對于判定條件中的位邏輯運算符即~(按位異或運算符),1(按位或運算符), &(按位與運算符)。同邏輯運算符,先按照操作數(shù)的位數(shù)劃分場景倉,分別標(biāo)識各位值的真 假,再根據(jù)最終效果分為兩個場景倉(真?zhèn)},假倉),將以劃分好的按位值真假劃分的場景 倉歸入這兩個場景倉。4.對于判定條件中的運算符為上述三種情況和括號運算符的組合情況,根據(jù)運算 符的運算優(yōu)先級組合各運算符劃分的場景,產(chǎn)生組合場景。5.如果判定條件為不包含上述運算符的表達試,僅以最終效果分為兩個場景(真 倉,假倉),分別表示判定條件為真的場景和判定條件為假的場景。更進一步,上述方法中所述的根據(jù)判定條件完成場景劃分的具體規(guī)則還包括
1.多元選擇結(jié)構(gòu)中由于選擇條件的互斥性,可以拆分成多個二元選擇結(jié)構(gòu),再依 次按照上述步驟執(zhí)行。同時也可以選擇按照多元選擇結(jié)構(gòu)中可以選擇的路徑劃分場景倉, 將所有指定閾值外的情況默認歸入default倉中。2.循環(huán)結(jié)構(gòu),包括先執(zhí)行的結(jié)構(gòu)和先判斷的結(jié)構(gòu),都由判定框構(gòu)成,有向上的回路 存在,劃分場景時要根據(jù)循環(huán)次數(shù)建立場景倉,場景倉包括零次循環(huán)場景倉,一次循環(huán)場景 倉,多次循環(huán)場景倉。更進一步,如果經(jīng)過上述方法收集覆蓋點后仍然存在有描述數(shù)據(jù)結(jié)構(gòu)的變量沒有 被劃分場景的,則根據(jù)該變量可能的取值空間強行劃分場景倉,包括最小值場景倉、最大值 場景倉、中間值場景倉、全零場景倉、全一場景倉,跨出取值空間的不進行劃分。裝置讀入單元將流程圖讀入。從起點框開始到終點框結(jié)束,讀完流程圖中每一個元素 以及元素的內(nèi)容,讀取過程按照樹結(jié)構(gòu)的深度優(yōu)先或廣度優(yōu)先遍歷算法。層次展開單元讀入過程中如果某些處理框為另一幅流程圖,可以將另一幅流程 圖嵌入該流程圖內(nèi)再繼續(xù)讀取,即層次化的展開,如果不需要可以暫不展開,以單純的動作 表示該處理框。流程圖中如果出現(xiàn)連接點,通過連接點將流程圖連接完整。單元庫對讀入的各元素進行分類存儲,存放在單元庫中。包括起止框、處理框、判 定框、輸入輸出框、注釋框等。連接關(guān)系庫對讀入的各元素之間的連接關(guān)系進行存儲。處理框覆蓋率代碼產(chǎn)生單元根據(jù)單元庫中處理框的內(nèi)容,按照所述收集處理框 覆蓋點并產(chǎn)生覆蓋率代碼的方法產(chǎn)生覆蓋率代碼。判斷框覆蓋率代碼產(chǎn)生單元根據(jù)單元庫中判定框的內(nèi)容,按照所述收集判斷框 覆蓋點并產(chǎn)生覆蓋率代碼的方法產(chǎn)生覆蓋率代碼。組合覆蓋率代碼產(chǎn)生單元根據(jù)單元庫中判定框和單元連接關(guān)系的內(nèi)容,按照所 述收集組合覆蓋點并產(chǎn)生覆蓋率代碼的方法產(chǎn)生覆蓋率代碼。序列覆蓋率代碼產(chǎn)生單元根據(jù)單元庫中處理框、判斷框和單元連接關(guān)系的內(nèi)容, 選擇按照所述收集序列覆蓋點并產(chǎn)生覆蓋率代碼的方法產(chǎn)生覆蓋率代碼,或者按照帶約束 條件的序列覆蓋點并產(chǎn)生覆蓋率代碼的方法生覆蓋率代碼。其他覆蓋率代碼產(chǎn)生單元根據(jù)單元庫中輸入輸出框的內(nèi)容產(chǎn)生作為事務(wù)種類覆 蓋點的覆蓋率代碼,并補充序列覆蓋點中缺少的把輸入輸出框當(dāng)作處理框處理的部分。注 釋框的內(nèi)容產(chǎn)生代碼中的注釋信息。代碼合并單元將上述幾部分代碼合并在一起,增加語法結(jié)構(gòu)中必須的要素,使其 可以直接運行。本發(fā)明的有益效果是根據(jù)流程圖直接提取覆蓋點,自動轉(zhuǎn)化為覆蓋率代碼,節(jié)省時間,減少人為遺漏, 從功能角度出發(fā),彌補了單純代碼覆蓋率的不足。流程圖中描述的事物,為事務(wù)級事物, 與代碼級流程圖相比,提高了抽象性,更容易發(fā)現(xiàn)其中存在的問題,更符合人思考問題的特 點。以客觀的形式產(chǎn)生覆蓋率代碼,增加了覆蓋率統(tǒng)計的有效性、信心度和客觀性。
〔0095〕圖1為本發(fā)明所述五種流程圖結(jié)構(gòu)示意〔0096〕圖2為本發(fā)明所述流程圖元素結(jié)構(gòu)示意〔0097〕圖3為本發(fā)明所述流程圖產(chǎn)生覆蓋率代碼的裝置示意〔0098〕圖4為本發(fā)明所述收集處理框覆蓋點并產(chǎn)生覆蓋率代碼的一個實施例;
〔0099〕圖5為本發(fā)明所述收集判斷框覆蓋點并產(chǎn)生覆蓋率代碼的一個實施例;
〔0100〕圖6為本發(fā)明收集組合覆蓋點并產(chǎn)生覆蓋率代碼的一個實施例;
〔0101〕圖7為本發(fā)明收集序列覆蓋點并產(chǎn)生覆蓋率代碼的一個實施例;
〔0102〕圖8為本發(fā)明收集帶約束條件的序列覆蓋點并產(chǎn)生覆蓋率代碼的一個實施例;
具體實施例方式
〔0103〕 下面通過具體實施方式
結(jié)合附圖對本發(fā)明作進一步詳細說明 〔0104〕 如圖4所示,讀入流程圖,其中存在兩個處理框。處理框1表示經(jīng)過該處理框 時模塊11做一個寫的動作,寫動作的表征信號是接口 1『上的們'1仏311信號為一。處 理框2表示經(jīng)過該處理框時模塊12做一個讀動作,讀動作的表征信號是接口 上 的界1*11:6—611信號為零。產(chǎn)生代碼時對應(yīng)11的寫動作對11定義寫事件
界!'11:6,滿足11.虹116 ^--^ 6X6111^1111(103^11:6,該事件的觸發(fā)條件是在時鐘上升沿時
接口 上白勺界!'11:6—611 為―,( 呂一土亡.0100^ 土亡.界!'11:6—611 二 二 1〉,即 6乂6111^1111—
己0一界!'1七61 ^--^ (&0100^ 土亡.界!'11:6—611 ^ ^ 1〉,其中(&0100^
土亡.界!'116—611 二 二 1〉為5(81^181,1 11116; 乂&丄口一)白勺具體描述。覆蓋組爪^^己^—界^土七一—^邑受 到該事件的觸發(fā),收集覆蓋點同理對處理框2操作。
〔0105〕 如圖7所示,讀入流程圖,其中存在兩個處理框。分別定義處理框中對應(yīng)的事件, 同圖4。定義序列狀態(tài)的變量81^1:6^6(11161106,當(dāng)模塊11進行寫動作時,通過觸發(fā)11的寫 事件,給序列狀態(tài)變量81^1:6^6(11161106賦值零,當(dāng)模塊12進行讀動作時,通過觸發(fā)12的讀 事件,給序列狀態(tài)變量81^1:6^6(11161106賦值一。覆蓋組86(^1161106^^對序列狀態(tài)覆蓋點先 發(fā)生11寫事件再發(fā)生12讀事件這一場景進行收集,即序列狀態(tài)變量81^1:6^6(11161106從零 到一的跳變。
〔0106〕 如圖8所示,在圖7的基礎(chǔ)上,兩個處理框中間出現(xiàn)判斷框。在產(chǎn)生帶約束條件的 序列覆蓋點時,要考慮約束條件的情況。在緊隨判斷框之后的處理框?qū)?yīng)的事件剛被觸發(fā) 時105 1112.,對判斷框的判斷條件進行采樣,觀察條件是否
符合要求,符合要求,貝!]序列狀態(tài)變化,即丨〒^]!! 二二 0^ 81:81:6^86^1161106 二 1。
〔0107〕 如圖5所示,讀入流程圖,其中存在兩個判斷框和一個處理框。此時只關(guān)注判斷 框。判斷框1中的判定條件是⑶丨是否等于0,對0社的取值范圍分三類,即三個倉(最小 值到-1,0,1到最大值)。判斷框2中的判定條件是是否不等于0,對 的取值范圍分三類,即三個倉(最小值到-1,0,1到最大值
〔0108〕 如圖6所示,在圖5的基礎(chǔ)上產(chǎn)生組合覆蓋率,產(chǎn)生代碼01*088叩,116X權(quán)利要求
1.一種由流程圖自動產(chǎn)生覆蓋率代碼的方法,其特征在于包括 收集處理框中的覆蓋點并產(chǎn)生覆蓋率代碼的方法,以處理框中所描述的系統(tǒng)中各模塊在該處理框中執(zhí)行的動作為功能覆蓋點,以對應(yīng)該動作定義的事件的表征信號作為覆蓋條 件,產(chǎn)生覆蓋率代碼;收集判斷框中的覆蓋點并產(chǎn)生覆蓋率代碼的方法,以判斷框中所描述的判定條件中的 變量為依據(jù)劃分的場景作為功能覆蓋點,以判定條件中的變量所代表的系統(tǒng)中的參數(shù)或模 塊動作處理后的結(jié)果值作為覆蓋條件,產(chǎn)生覆蓋率代碼;收集組合覆蓋點并產(chǎn)生覆蓋率代碼的方法,以每一條從起始點到終止點路徑上出現(xiàn)的 所有判斷框中描述的判定條件交叉組合后對應(yīng)的場景作為功能覆蓋點,以判定條件中的變 量取值的交叉組合作為覆蓋條件,產(chǎn)生覆蓋率代碼;收集序列覆蓋點并產(chǎn)生覆蓋率代碼的方法,以每一條從起始點到終止點路徑上出現(xiàn)的 所有處理框代表的有序動作序列作為功能覆蓋點,以有序動作序列對應(yīng)的有序事件的表征 信號作為覆蓋條件,產(chǎn)生覆蓋率代碼;收集帶約束條件的序列覆蓋點并產(chǎn)生覆蓋率代碼的方法,以每一條從起始點到終止點 路徑上出現(xiàn)的所有處理框代表的有序動作序列和其中穿插的判斷框代表的判定條件作為 功能覆蓋點,以有序動作序列對應(yīng)的有序事件的表征信號以及判定條件中規(guī)定的變量取值 作為覆蓋條件,產(chǎn)生覆蓋率代碼。
2.如權(quán)利要求1所述的產(chǎn)生覆蓋率代碼的方法,其特征在于,所述收集處理框中的覆 蓋點并產(chǎn)生覆蓋率代碼的方法包括讀取流程圖中的所有元素。讀取過程從起始點出發(fā),到終止點結(jié)束,遍歷整張流程圖的 所有元素;收集每一個處理框中系統(tǒng)各模塊產(chǎn)生的動作; 合并相同模塊中相同的動作; 對每一個動作定義一個對應(yīng)的事件; 收集每一個事件的信號表征描述;以系統(tǒng)各模塊的動作所表示的功能作為功能覆蓋點,以其被定義的對應(yīng)事件的表征信 號作為覆蓋條件,產(chǎn)生覆蓋率代碼。
3.如權(quán)利要求1所述的產(chǎn)生覆蓋率代碼的方法,其特征在于,所述收集判斷框中的覆 蓋點并產(chǎn)生覆蓋率代碼的方法包括讀取流程圖中的所有元素,讀取過程從起始點出發(fā),到終止點結(jié)束,遍歷整張流程圖的 所有元素;收集每一個判斷框中的判斷條件,判斷條件包含系統(tǒng)中的參數(shù)或模塊動作處理后的結(jié) 果值,即判斷條件中的變量,以及其可能的取值范圍和類型信息;根據(jù)判定條件完成場景劃分,場景是系統(tǒng)在工作于不同處理步驟時對應(yīng)的系統(tǒng)參數(shù)或 處理結(jié)果的值或類型的安排;合并相同變量值或相同變量組合值對應(yīng)的場景;以每一個被劃分的場景所表示的功能作為功能覆蓋點,以對應(yīng)場景判斷條件中定義的 變量值或變量的組合值作為覆蓋條件,產(chǎn)生覆蓋率代碼。
4.如權(quán)利要求1所述的產(chǎn)生覆蓋率代碼的方法,其特征在于,所述收集組合覆蓋點并產(chǎn)生覆蓋率代碼的方法包括讀取流程圖中的所有元素,讀取過程從起始點出發(fā),到終止點結(jié)束,遍歷整張流程圖的 所有元素;收集每一個判斷框中的判斷條件,判斷條件包含系統(tǒng)中的參數(shù)或模塊動作處理后的結(jié) 果值,即判斷條件中的變量,以及其可能的取值范圍和類型信息;根據(jù)判定條件完成場景劃分,場景是系統(tǒng)在工作于不同處理步驟時對應(yīng)的系統(tǒng)參數(shù)或 處理結(jié)果的值或類型的安排;按照流程圖中每一條從起始點到終止點路徑上的判斷框出現(xiàn)的順序,依次將各判斷框 中根據(jù)判定條件劃分的場景交叉組合,形成組合場景表示的功能覆蓋點,路徑中如果出現(xiàn) 循環(huán),預(yù)定循環(huán)上限;以每一個組合場景所表示的功能作為功能覆蓋點,以對應(yīng)組合場景判斷條件中定義的 變量取值的組合形式作為覆蓋條件,產(chǎn)生覆蓋率代碼。
5.如權(quán)利要求1所述的產(chǎn)生覆蓋率代碼的方法,其特征在于,所述收集序列覆蓋點并 產(chǎn)生覆蓋率代碼的方法包括讀取流程圖中的所有元素,讀取過程從起始點出發(fā),到終止點結(jié)束,遍歷整張流程圖的 所有元素;收集流程圖中每一條從起始點到終止點路徑上的處理框中的動作,路徑中如果出現(xiàn)循 環(huán),預(yù)定循環(huán)上限;對每一個動作定義一個對應(yīng)的事件;收集每一個事件的信號表征描述;為每一條路徑發(fā)生的有序動作序列所表示的功能作為功能覆蓋點,以其對應(yīng)的有序事 件序列的表征信號作為覆蓋條件,產(chǎn)生覆蓋率代碼。
6.如權(quán)利要求1所述的產(chǎn)生覆蓋率代碼的方法,其特征在于,所述收集帶約束條件的 序列覆蓋點并產(chǎn)生覆蓋率代碼的方法包括讀取流程圖中的所有元素,讀取過程從起始點出發(fā),到終止點結(jié)束,遍歷整張流程圖的 所有元素;收集流程圖中每一條從起始點到終止點路徑上的處理框中的動作,路徑中如果出現(xiàn)循 環(huán),預(yù)定循環(huán)上限;對每一個動作定義一個對應(yīng)的事件;收集每一個事件的信號表征描述;收集每一條路徑上穿插在處理框序列中的判斷框,并收集每一個判斷框中的判斷條件;為每一條路徑發(fā)生的有序動作序列,以及動作序列中穿插在對應(yīng)位置的判斷條件所表 示的功能作為功能覆蓋點,以其對應(yīng)的有序事件序列的表征信號,以及穿插其中的判定條 件對應(yīng)的變量值或變量的組合值為覆蓋條件,產(chǎn)生覆蓋率代碼。
7.如權(quán)利要求1所述的產(chǎn)生覆蓋率代碼的方法,其特征在于,還包括如果流程圖為層 次化流程圖,即其中有處理框可以展開成另一張流程圖的,在收集覆蓋點并產(chǎn)生覆蓋率的 代碼過程中,可以選擇先做展開處理。流程圖中如果出現(xiàn)連接點,連接點將流程圖連接完 整,再讀取。注釋框在其注釋的處理框和判斷框產(chǎn)生覆蓋點代碼時,以代碼中注釋行的形式記錄到代碼中。流程圖中如果出現(xiàn)輸入輸出框,在所述收集覆蓋點的方法中,輸入輸出框可 以作為處理框來處理,輸入輸出的內(nèi)容可以被視為處理框中的模塊動作被收集為覆蓋點, 以對應(yīng)輸入輸出內(nèi)容的信號表征作為采樣依據(jù),產(chǎn)生覆蓋率代碼。
8.如權(quán)利要求1或3或4所述的根據(jù)判定條件完成場景劃分,其特征在于對于判定條件中的關(guān)系運算符,即< (小于)、<=(小于等于)、> (大于)、> = (大于等于)、==(等于)、!=(不等于)。關(guān)系運算符左右兩邊的表達式通過左右兩 邊的等價移動轉(zhuǎn)換為一邊包含變量,另一邊只包含數(shù)值,再以該數(shù)值為界,將包含變量一邊 的變量關(guān)系劃分為三個倉來承載三種場景,包括變量小于數(shù)值的倉,變量等于數(shù)值的倉,變 量大于數(shù)值的倉。
9.如權(quán)利要求1或3或4所述的根據(jù)判定條件完成場景劃分,其特征在于對于判定條件中的邏輯運算符即!(邏輯非)、&&(邏輯與)、II (邏輯或)。邏輯與 運算符或邏輯或運算符根據(jù)表達式兩邊的邏輯值劃分為左真右假,左假右真,左右同假,左 右同真四個場景倉,根據(jù)邏輯與運算或邏輯或運算的最終效果合并為真?zhèn)},假倉兩個場景 倉。邏輯非運算符根據(jù)表達式的邏輯值或最終效果劃分為真?zhèn)},假倉兩個場景倉。
10.如權(quán)利要求1或3或4所述的根據(jù)判定條件完成場景劃分,其特征在于對于判定條件中的位邏輯運算符即~ (按位異或運算符),I (按位或運算符),&(按 位與運算符)。先按照操作數(shù)的位數(shù)劃分場景倉,分別標(biāo)識各位值的真假,再根據(jù)最終效果 分為真?zhèn)},假倉兩個場景倉,將以劃分好的按位值真假劃分的場景倉歸入這兩個場景倉。
11.如權(quán)利要求1或3或4所述的根據(jù)判定條件完成場景劃分,其特征在于對于判定條件中同時包括關(guān)系運算符、邏輯運算符、位邏輯運算符、括號運算符的一種 或者多種,根據(jù)運算符的運算優(yōu)先級組合各運算符劃分的場景,產(chǎn)生組合場景。
12.如權(quán)利要求1或3或4所述的根據(jù)判定條件完成場景劃分,其特征在于如果判定條件為不包含關(guān)系運算符、邏輯運算符、位邏輯運算符、括號運算符的表達式,僅以最終效果分為真?zhèn)},假倉兩個場景倉,分別表示判定條件為真的場景和判定條件為 假的場景。
13.如權(quán)利要求1或3或4所述的根據(jù)判定條件完成場景劃分,其特征還在于多元選擇結(jié)構(gòu)可以按照多條選擇路徑直接劃分場景倉,建立default倉,將所有在分 支路徑要求取值范圍以外取值的情況默認歸入default倉中。多元選擇結(jié)構(gòu)也可以先拆分 成多個二元選擇結(jié)構(gòu),再根據(jù)二元選擇結(jié)構(gòu)中的判斷條件劃分場景。
14.如權(quán)利要求1或3或4所述的根據(jù)判定條件完成場景劃分,其特征還在于循環(huán)結(jié)構(gòu),包括先執(zhí)行的結(jié)構(gòu)和先判斷的結(jié)構(gòu),都由判斷框構(gòu)成,有向上的回路存在,劃分場景時要根據(jù)循環(huán)次數(shù)建立場景倉,場景倉包括零次循環(huán)場景倉,一次循環(huán)場景倉,多 次循環(huán)場景倉。
15.如權(quán)利要求1或3或4所述的根據(jù)判定條件完成場景劃分,其特征還在于 將未被劃分的變量根據(jù)該變量可能的取值空間強行劃分場景倉,包括最小值場景倉、最大值場景倉、中間值場景倉、全零場景倉、全一場景倉,這些場景倉中如有跨出該變量取 值空間的不進行劃分。
16.一種由流程圖自動產(chǎn)生覆蓋率代碼的裝置,其特征在于包括讀入單元將流程圖讀入。從起點框開始到終點框結(jié)束,讀完流程圖中每一個元素以及元素的內(nèi)容,讀取過程按照樹結(jié)構(gòu)的深度優(yōu)先或廣度優(yōu)先遍歷算法。層次展開單元如果讀入的某個處理框可以對應(yīng)另一幅流程圖,可以將另一幅流程圖 嵌入該處理框所在的流程圖,并替代該處理框,即層次化的展開。如果不需要展開可以暫不 展開,以單純的動作表示該處理框。流程圖中如果出現(xiàn)連接點,通過連接點將流程圖連接完 單元庫對讀入的各元素進行分類存儲,存放在單元庫中。包括起止框、處理框、判定 框、輸入輸出框、注釋框等。連接關(guān)系庫對讀入的各元素之間的連接關(guān)系進行存儲。處理框覆蓋率代碼產(chǎn)生單元根據(jù)單元庫中處理框的內(nèi)容,收集每一個處理框中不重 復(fù)的模塊的動作,建立對應(yīng)每一動作的功能覆蓋點,并產(chǎn)生覆蓋率代碼。判斷框覆蓋率代碼產(chǎn)生單元根據(jù)單元庫中判定框的內(nèi)容,收集每一個判斷框中作為 判斷條件的變量,以判斷條件中變量的取值范圍和導(dǎo)致判斷結(jié)果發(fā)生真假變化的臨界值為 分割點,劃分不同場景作為功能覆蓋點,產(chǎn)生覆蓋率代碼。組合覆蓋率代碼產(chǎn)生單元根據(jù)單元庫中起止框、判定框和單元連接關(guān)系的內(nèi)容,對每 一條從起始框到終止框的路徑,收集路徑上判斷框的判斷條件,按照完成該路徑所需判斷 條件中變量的取值組合對應(yīng)的功能覆蓋點,產(chǎn)生覆蓋率代碼。序列覆蓋率代碼產(chǎn)生單元根據(jù)單元庫中起止框、處理框、判斷框和單元連接關(guān)系的內(nèi) 容,對每一條從起始框到終止框的路徑,收集路徑上處理框和判斷框。使用每條路徑上有序 的處理框?qū)?yīng)的動作序列作為功能覆蓋點,產(chǎn)生覆蓋率代碼。或者使用每條路徑上有序的 處理框?qū)?yīng)的動作序列和穿插在處理框序列中的判斷框的判斷條件組合作為功能覆蓋點, 產(chǎn)生覆蓋率代碼。其他覆蓋率代碼產(chǎn)生單元根據(jù)單元庫中輸入輸出框的內(nèi)容,根據(jù)輸入輸出的內(nèi)容允 許出現(xiàn)的種類作為覆蓋點產(chǎn)生覆蓋率代碼,并補充到序列覆蓋率代碼產(chǎn)生單元中,把輸入 輸出框作為處理框處理,重新產(chǎn)生序列覆蓋率代碼。注釋框的內(nèi)容產(chǎn)生代碼中的注釋信息。代碼合并單元將上述幾部分代碼合并在一起,增加語法結(jié)構(gòu)中必須的要素,使其可以 直接運行。
全文摘要
本發(fā)明公開了一種由流程圖自動產(chǎn)生覆蓋率代碼的方法及裝置,包括收集處理框覆蓋點、判斷框覆蓋點、組合覆蓋點、序列覆蓋點、帶約束條件的序列覆蓋點等內(nèi)容,并產(chǎn)生其對應(yīng)的覆蓋率代碼。其裝置由讀入單元、層次展開單元、單元庫、連接關(guān)系庫、處理框覆蓋率代碼產(chǎn)生單元、判斷框覆蓋率代碼產(chǎn)生單元、組合覆蓋率代碼產(chǎn)生單元、序列覆蓋率代碼產(chǎn)生單元、其他覆蓋率代碼產(chǎn)生單元、代碼合并單元組成。本發(fā)明根據(jù)流程圖直接提取覆蓋點,自動轉(zhuǎn)化為覆蓋率代碼,節(jié)省時間,減少人為遺漏,從功能角度出發(fā),彌補了單純代碼覆蓋率的不足。以客觀的形式產(chǎn)生覆蓋率代碼,增加了覆蓋率統(tǒng)計的有效性、信心度和客觀性。
文檔編號G06F17/50GK102722610SQ20121017170
公開日2012年10月10日 申請日期2012年5月29日 優(yōu)先權(quán)日2012年5月29日
發(fā)明者伍國斌, 宋建龍, 李姮樂, 羅永貴, 謝崢 申請人:李姮樂