專利名稱:基于增強(qiáng)型的參數(shù)化引用定值鏈的可觀測(cè)性覆蓋評(píng)估方法
技術(shù)領(lǐng)域:
本發(fā)明涉及超大規(guī)模集成電路的設(shè)計(jì)驗(yàn)證技術(shù)領(lǐng)域,特別是一種基于增強(qiáng)型的參數(shù)化引用定值(FUD)鏈(對(duì)FUD鏈的解釋見(jiàn)附錄)的可觀測(cè)性覆蓋評(píng)估方法。
背景技術(shù):
所謂設(shè)計(jì)驗(yàn)證,就是檢驗(yàn)設(shè)計(jì)方案是否滿足規(guī)范中提出的要求。隨著半導(dǎo)體工藝突飛猛進(jìn)的發(fā)展,集成電路設(shè)計(jì)的復(fù)雜度也呈指數(shù)級(jí)增長(zhǎng)。這使得設(shè)計(jì)驗(yàn)證面臨著越來(lái)越嚴(yán)峻的挑戰(zhàn)。
傳統(tǒng)的設(shè)計(jì)驗(yàn)證技術(shù)可以分為兩大類——模擬驗(yàn)證技術(shù)和形式驗(yàn)證技術(shù)。
形式驗(yàn)證是使用嚴(yán)格的數(shù)學(xué)推理來(lái)證明一個(gè)設(shè)計(jì)方案滿足全部的或者部分的規(guī)范。這就要求設(shè)計(jì)方案的規(guī)范和設(shè)計(jì)本身都能夠用形式化的方法來(lái)描述。而對(duì)于實(shí)際的設(shè)計(jì)方案而言,此項(xiàng)要求并不是總能得到滿足。目前,形式驗(yàn)證方法在集成電路設(shè)計(jì)中的應(yīng)用通常局限于較低的抽象層面(例如,門級(jí)網(wǎng)表)。
實(shí)際工程應(yīng)用中,模擬驗(yàn)證方法長(zhǎng)久以來(lái)占據(jù)著主導(dǎo)地位。一般性的模擬驗(yàn)證流程如圖1所示。根據(jù)設(shè)計(jì)或者規(guī)范來(lái)產(chǎn)生激勵(lì),然后將激勵(lì)施加在設(shè)計(jì)方案的輸入上,通過(guò)在模擬器上運(yùn)行,來(lái)觀察設(shè)計(jì)方案的響應(yīng)是否正確(如果將集成電路設(shè)計(jì)看作用硬件描述語(yǔ)言編寫的軟件的話,模擬驗(yàn)證就可以視為針對(duì)該類軟件的調(diào)試或者說(shuō)測(cè)試)。模擬驗(yàn)證具有一個(gè)先天的弱點(diǎn),即不完備性。對(duì)于小規(guī)模的設(shè)計(jì)而言,可以采用窮舉的方法來(lái)模擬輸入信號(hào)的每個(gè)組合,就可保證該設(shè)計(jì)被充分驗(yàn)證了(例如,對(duì)一個(gè)兩輸入的設(shè)計(jì),需要模擬22,即4種輸入組合)。但是對(duì)于目前常見(jiàn)的設(shè)計(jì)規(guī)模而言,其IO管腳一般在幾百個(gè)以上,窮舉法顯然是不現(xiàn)實(shí)的。所以,模擬驗(yàn)證常常與覆蓋評(píng)估技術(shù)結(jié)合使用。
覆蓋評(píng)估技術(shù)是量化度量模擬驗(yàn)證完備性的手段。同時(shí),覆蓋評(píng)估技術(shù)能夠診斷出,對(duì)于當(dāng)前的激勵(lì)集合而言,哪部分設(shè)計(jì)尚未被充分驗(yàn)證,這對(duì)于后續(xù)激勵(lì)的生成具有指導(dǎo)意義。根據(jù)評(píng)估對(duì)象的不同,覆蓋評(píng)估準(zhǔn)則可以分為幾類功能覆蓋準(zhǔn)則、代碼覆蓋準(zhǔn)則、電路結(jié)構(gòu)覆蓋準(zhǔn)則、有限狀態(tài)機(jī)覆蓋準(zhǔn)則、錯(cuò)誤模型覆蓋準(zhǔn)則,等等。不同的覆蓋評(píng)估技術(shù),其原理是類似的——為每個(gè)待評(píng)估的對(duì)象設(shè)置一個(gè)計(jì)數(shù)器,模擬器“執(zhí)行到”該對(duì)象處,相應(yīng)的計(jì)數(shù)器累加1,當(dāng)模擬完畢時(shí),計(jì)數(shù)器取值大于某個(gè)閾值的評(píng)估對(duì)象的個(gè)數(shù),與總的待評(píng)估對(duì)象的個(gè)數(shù)相除,該比值就是相應(yīng)的覆蓋率。例如,所謂語(yǔ)句覆蓋準(zhǔn)則,就是統(tǒng)計(jì)在模擬過(guò)程中執(zhí)行過(guò)的語(yǔ)句數(shù)目,該數(shù)與總的語(yǔ)句數(shù)目的比值就是向量集的語(yǔ)句覆蓋率。
在現(xiàn)有的覆蓋評(píng)估準(zhǔn)則中,最突出的問(wèn)題是要么評(píng)估意義過(guò)于簡(jiǎn)單,要么計(jì)算過(guò)于復(fù)雜。在工業(yè)界得到普遍應(yīng)用的一些準(zhǔn)則,例如語(yǔ)句覆蓋準(zhǔn)則,僅僅評(píng)估設(shè)計(jì)方案中的每條語(yǔ)句是否被執(zhí)行過(guò)(即,評(píng)估激勵(lì)向量集對(duì)語(yǔ)句的控制能力如何),而沒(méi)有考慮被激活的潛在設(shè)計(jì)錯(cuò)誤是否被驗(yàn)證工程師觀察到(即,忽略了激勵(lì)向量集的可觀測(cè)性),這對(duì)于集成電路的設(shè)計(jì)驗(yàn)證來(lái)講是不夠的。而已有的可觀測(cè)性覆蓋評(píng)估的方法,其計(jì)算效率不高,使得評(píng)估可觀測(cè)性的開(kāi)銷太大。本發(fā)明則提出了一種新的可觀測(cè)性信息表征方法,以及基于此表征的可觀測(cè)性覆蓋評(píng)估方法。
可觀測(cè)性覆蓋評(píng)估的概念起源于集成電路測(cè)試領(lǐng)域。在該領(lǐng)域中,可觀測(cè)性是指電路中的故障能否通過(guò)其原始輸出(即,管腳級(jí)的輸出)信號(hào)體現(xiàn)出來(lái)。與測(cè)試領(lǐng)域不同,集成電路設(shè)計(jì)驗(yàn)證中的可觀測(cè)性是一種“軟”的概念。在模擬驗(yàn)證中,硬件的設(shè)計(jì)方案在模擬器上運(yùn)行,借助于模擬器的調(diào)試功能,設(shè)計(jì)方案中每個(gè)內(nèi)部變量的值都是可以知道的。然而隨著設(shè)計(jì)規(guī)模的擴(kuò)大,要求驗(yàn)證工程師對(duì)所有變量的含義都了如指掌,在模擬過(guò)程中監(jiān)測(cè)所有變量的取值是否正確,這是不現(xiàn)實(shí)的。所以,可觀測(cè)性覆蓋評(píng)估應(yīng)該從兩個(gè)角度來(lái)考慮一是驗(yàn)證工程師對(duì)設(shè)計(jì)方案的理解,二是設(shè)計(jì)本身的內(nèi)部變量之間的數(shù)據(jù)依賴關(guān)系。可觀測(cè)性的概念可以定義如下1)被驗(yàn)證工程師選來(lái)觀察程序(即,設(shè)計(jì)方案)行為的變量,稱為觀測(cè)點(diǎn)。其余的變量稱為非觀測(cè)點(diǎn)。
2)顯然,觀測(cè)點(diǎn)是可以被觀測(cè)的。在非觀測(cè)點(diǎn)中,其取值可以傳播到,或者說(shuō)可以影響到觀測(cè)點(diǎn)的那些內(nèi)部變量,也是可以被觀測(cè)的。對(duì)于內(nèi)部變量來(lái)講,如果它本身不是觀測(cè)點(diǎn),而且它的值不能夠傳播到觀測(cè)點(diǎn),那么無(wú)論這樣的變量被執(zhí)行了多少次,驗(yàn)證工程師也不會(huì)了解到該變量的行為,更談不上發(fā)現(xiàn)其中的錯(cuò)誤。這樣的內(nèi)部變量,稱為不可觀測(cè)點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋評(píng)估方法。其基本策略如下1)使用增強(qiáng)型的FUD鏈表征可觀測(cè)性信息。
FUD鏈?zhǔn)蔷幾g理論中的一種數(shù)據(jù)流分析技術(shù),是“引用-定值”鏈(即UD鏈)的一種參數(shù)化表示形式。它具有兩個(gè)重要屬性一是每個(gè)變量引用都只對(duì)應(yīng)唯一的定值;二是對(duì)控制流圖中的每個(gè)匯聚結(jié)點(diǎn)而言,如果有多個(gè)定值到達(dá)該匯聚結(jié)點(diǎn),則在該結(jié)點(diǎn)處添加特殊的匯聚操作符——φ-terms(φ為希臘字母,音PHI)。所謂φ-terms,是一種偽賦值(可以理解為,將到達(dá)該匯聚結(jié)點(diǎn)的某個(gè)變量的多個(gè)定值統(tǒng)一賦值給一個(gè)φ-term,而在該匯聚結(jié)點(diǎn)之后,若需要引用該變量在匯聚結(jié)點(diǎn)處的某個(gè)定值,則統(tǒng)一引用所添加的φ-term),它將到達(dá)匯聚結(jié)點(diǎn)的多個(gè)定值實(shí)現(xiàn)參數(shù)化,以保證匯聚結(jié)點(diǎn)之后的變量引用滿足第一條屬性。例1給出了一段代碼,并解釋了相應(yīng)的UD鏈和FUD鏈。
本發(fā)明在控制流的匯聚結(jié)點(diǎn)處對(duì)添加一個(gè)“動(dòng)態(tài)分支”域,以此來(lái)記錄程序動(dòng)態(tài)執(zhí)行時(shí)的軌跡。當(dāng)程序執(zhí)行到一個(gè)匯聚結(jié)點(diǎn)時(shí),其“動(dòng)態(tài)分支”域更新為最新的分支信息,即記錄程序是沿著第幾個(gè)分支到達(dá)當(dāng)前結(jié)點(diǎn)的。這樣,我們?cè)诜治隹捎^測(cè)性的時(shí)候,就能夠?yàn)檫@個(gè)控制流匯聚結(jié)點(diǎn)的參數(shù)選擇正確的值。換句話講,既然匯聚結(jié)點(diǎn)的φ-terms記錄了所有可能到達(dá)的定值(即,沿著它的每個(gè)前驅(qū)所到達(dá)的定值),那么我們選擇與“動(dòng)態(tài)分支”域取值相一致的定值,也就是選擇了這個(gè)時(shí)刻匯聚結(jié)點(diǎn)處的正確的定值。
例1UD鏈和FUD鏈舉例。
(1) K=0(1) K1=0 (1) K1=0 (1) K1=0(2) ifT>Kthen (2) ifT2>K3then (2) ifT2>K3→1then (2) ifT2>K3→1then(3) K=K+1 (3) K5=K4+1 (3) K5=K4→1+1 (3) K5=K4→1+1(4) M=K*2 (4) M7=K6*2 (4) M7=K6→5*2 (4) M7=K6→5*2(5) else(5) else (5) else (5) else(6) M=K/2 (6) M9=K8/2 (6) M9=K8→1/2 (6) M9=K8→1/2(7) endif (7) endif(7) endif (7) endif(8) K2=K+2 (8) K211=K10+2(8) K211=K10→1,5+2 φ(K)17→5,1(9) K3=K+3 (9) K313=K12+3(9) K313=K12→1,5+3 φ(M)18→7,9(10)K4=K+M (10)K416=K14+M15(10)K416=K14→1,5+M15→7,9(8) K211=K10→17+2(9) K313=K12→17+3(10)K416=K14→17+M15→18(a) (b) (c)(d)例1中的(a)是原始代碼段。為了便于表述,(b)中為每個(gè)定值和引用都添加了下標(biāo)。(c)是該段代碼對(duì)應(yīng)的UD鏈,(d)則是其對(duì)應(yīng)的FUD鏈。
2)事件驅(qū)動(dòng)分析本發(fā)明提出的可觀測(cè)性覆蓋評(píng)估方法是事件驅(qū)動(dòng)的。此項(xiàng)策略包括兩個(gè)方面·當(dāng)程序執(zhí)行到控制流的匯聚結(jié)點(diǎn),更新該結(jié)點(diǎn)處的“動(dòng)態(tài)分支”域的值。
·當(dāng)某個(gè)觀測(cè)點(diǎn)的值更新之后,沿著這個(gè)變量的FUD鏈反向追蹤,分析設(shè)計(jì)方案的可觀測(cè)性覆蓋情況。即,某個(gè)觀測(cè)點(diǎn)p的值更新了,意味著此觀測(cè)點(diǎn)被觀察了,那么與此變量引用u0(觀測(cè)點(diǎn)p對(duì)應(yīng)某個(gè)變量的引用u0)相關(guān)的定值d0就被觀測(cè)到了。而d0又是被某些引用u1來(lái)定義的,這樣u1的效果也體現(xiàn)出來(lái)了,即u1也被觀測(cè)到了。而u1也對(duì)應(yīng)著自己的定值,也可以用分析u0一樣的方法來(lái)分析。此逆向分析過(guò)程可以一直迭代,直到某個(gè)變量引用un的FUD鏈為空(即un是程序的輸入,或者是常量)時(shí)終止。在此分析過(guò)程中,如果遇到了φ-term,則根據(jù)相應(yīng)匯聚結(jié)點(diǎn)的“動(dòng)態(tài)分支”域的值來(lái)選擇一個(gè)前驅(qū)所對(duì)應(yīng)的定值,繼續(xù)分析。
3)可觀測(cè)性覆蓋率的計(jì)算方法模擬開(kāi)始時(shí),為每個(gè)變量的每次引用和定值都設(shè)置一個(gè)計(jì)數(shù)器,其初值設(shè)置為0。模擬過(guò)程中,如果某個(gè)定值或者引用被觀測(cè)到了,則將其計(jì)數(shù)器的值累加1。模擬結(jié)束時(shí),定值和引用的可觀測(cè)性信息便體現(xiàn)在其對(duì)應(yīng)的計(jì)數(shù)器中。利用這些可觀測(cè)性信息,就可以計(jì)算可觀測(cè)性覆蓋率。
需要強(qiáng)調(diào)的是,不考慮可控制性而僅僅評(píng)估可觀測(cè)性,這是沒(méi)有意義的。可觀測(cè)性覆蓋率是對(duì)模擬向量集的驗(yàn)證力度的度量,它不可能脫離該向量集所導(dǎo)致的控制流而獨(dú)立存在。所以,可觀測(cè)性覆蓋率應(yīng)該與可控制性信息結(jié)合起來(lái)計(jì)算。目前,可控制性覆蓋評(píng)估準(zhǔn)則有許多種,例如前面提到的各種代碼覆蓋準(zhǔn)則,電路結(jié)構(gòu)覆蓋準(zhǔn)則等等。將可控制性覆蓋準(zhǔn)則與本發(fā)明中提出的可觀測(cè)性覆蓋準(zhǔn)則結(jié)合,其關(guān)鍵在于如何建立起可控制性覆蓋準(zhǔn)則的評(píng)估對(duì)象與程序中變量定值和引用之間的關(guān)聯(lián)關(guān)系。
這里,我們解釋如何計(jì)算可觀測(cè)性語(yǔ)句覆蓋率,其它的可觀測(cè)性覆蓋率的計(jì)算與此類似對(duì)于用硬件描述語(yǔ)言所寫的代碼中的語(yǔ)句而言,如果某條語(yǔ)句中所有的引用已經(jīng)被觀測(cè)到了,我們就說(shuō)該語(yǔ)句被觀測(cè)到了(可以定義為所有引用的計(jì)數(shù)器值大于0,則該語(yǔ)句被觀測(cè)到,也可以設(shè)置閾值,要求所有引用的計(jì)數(shù)器的值達(dá)到閾值以上,才認(rèn)為該語(yǔ)句被觀測(cè)到)。同時(shí),我們定義分支語(yǔ)句的可觀測(cè)性為,如果某個(gè)分支中的語(yǔ)句被觀測(cè)到了,那么該分支語(yǔ)句的效果就得到體現(xiàn),即該分支語(yǔ)句被觀測(cè)到了(例如,在例1中,如果第(3)句被觀測(cè)到了,那么我們說(shuō)分支語(yǔ)句(2)被觀測(cè)到了)。那么,在模擬結(jié)束時(shí),分別統(tǒng)計(jì)被觀測(cè)到的語(yǔ)句的數(shù)目和總的語(yǔ)句數(shù)目。二者的比值就是可觀測(cè)性語(yǔ)句覆蓋率。例2解釋了可觀測(cè)性語(yǔ)句覆蓋準(zhǔn)則的評(píng)估過(guò)程(例2中沒(méi)有設(shè)置閾值)。
本發(fā)明中所提出的方法是以變量的引用和定值作為評(píng)估對(duì)象的,對(duì)程序行為的刻畫力度很強(qiáng),這使得它可以與現(xiàn)有的多種僅考慮可控制性的覆蓋準(zhǔn)則(尤其是代碼覆蓋準(zhǔn)則)相結(jié)合,來(lái)增強(qiáng)原有覆蓋準(zhǔn)則的評(píng)估能力。除了上面提到的可觀測(cè)性語(yǔ)句覆蓋準(zhǔn)則之外,我們還可以很容易的衍生出可觀測(cè)性分支覆蓋準(zhǔn)則,以及可觀測(cè)性表達(dá)式覆蓋準(zhǔn)則。分別解釋如下·可觀測(cè)的語(yǔ)句覆蓋準(zhǔn)則——要求每條語(yǔ)句被執(zhí)行過(guò),且每條語(yǔ)句中所有的變量引用都被觀測(cè)到。
·可觀測(cè)的分支覆蓋準(zhǔn)則——要求每個(gè)分支語(yǔ)句的條件變量取到所有的可能值,并且每個(gè)取值(即變量的引用)的效果被觀測(cè)到。
·可觀測(cè)的表達(dá)式覆蓋準(zhǔn)則——要求每個(gè)表達(dá)式中的各個(gè)變量取到各種組合,并且每個(gè)組合(即變量引用的組合)的效果被觀測(cè)到。
結(jié)合以上所闡述的三方面的策略,本發(fā)明所提出的可觀測(cè)性覆蓋評(píng)估方法的流程可以總結(jié)如下1)構(gòu)造被評(píng)估代碼的控制流圖。
2)在控制流圖的基礎(chǔ)上構(gòu)造被評(píng)估代碼的數(shù)據(jù)流圖,并且以增強(qiáng)型FUD鏈的形式來(lái)表示。
3)指定被觀測(cè)變量作為觀測(cè)點(diǎn)。
4)在被評(píng)估代碼(或者編譯后的中間代碼)中為觀測(cè)點(diǎn)插入觸發(fā)事件(trigger)。
5)在被評(píng)估代碼(或者編譯后的中間代碼)中為控制流的匯聚點(diǎn)插入觸發(fā)事件。
6)在模擬器上運(yùn)行被評(píng)估代碼。當(dāng)與匯聚點(diǎn)相關(guān)的觸發(fā)事件發(fā)生時(shí),跳轉(zhuǎn)到7);當(dāng)與觀測(cè)點(diǎn)相關(guān)的觸發(fā)事件發(fā)生時(shí),跳轉(zhuǎn)到8);若模擬結(jié)束,跳轉(zhuǎn)到9)。
7)記錄當(dāng)前的分支路徑號(hào),跳轉(zhuǎn)到6)。
8)沿著當(dāng)前觀測(cè)點(diǎn)的FUD鏈反向追蹤,每追蹤到一個(gè)變量,將其計(jì)數(shù)器的值累加1。若遇到匯聚結(jié)點(diǎn),則選擇與其“動(dòng)態(tài)分支”域相應(yīng)的分支處的定值,繼續(xù)分析。直到某個(gè)變量引用的FUD鏈為空,則分析完畢。跳轉(zhuǎn)到6)。
9)統(tǒng)計(jì)評(píng)估對(duì)象的總數(shù),以及其中被觀測(cè)到的對(duì)象的個(gè)數(shù),計(jì)算基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋率。
為了更清晰的闡述本發(fā)明中所提出的方法,舉例如下。
例2基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋評(píng)估方法應(yīng)用舉例。
<pre listing-type="program-listing">module b01(clock,reset,linel,line2,outp,overflw);input clock;input reset;input line1;input line2;output outp;output overflw;wire clock;wire reset;wire line1;wire line2;reg outp;reg overflw;parameter a=0,b=1,c=2,e=3,f=4,g=5,wf0=6,wf1=7;reg[2∶0]stato;1 always@(posedge clock)2 begin3 if(reset)4 begin5 stato=a;6 outp<=0;7 overflw<=0;8 end9 else10 case(stato)11 abegin12 if(line1&amp;&amp;line2)13 stato=f;14 else15 stato=b;16 outp<=line1^line2;17overflw<=0;18 end...19endcase20 endendmodule</pre>例2是用硬件描述語(yǔ)言Verilog所寫的代碼。為了簡(jiǎn)潔起見(jiàn),這里只列出了部分代碼。圖2給出了此段代碼對(duì)應(yīng)的控制流-數(shù)據(jù)流圖,以及相應(yīng)的FUD鏈。
表1.可觀測(cè)性語(yǔ)句覆蓋評(píng)估過(guò)程時(shí)鐘周期 Cycle1 Cycle2輸入信號(hào)取值 line1=0,line2=0,reset=1line1=1,line2=1,reset=0Trigger#1結(jié)點(diǎn)6 結(jié)點(diǎn)12′觸發(fā)的動(dòng)作 分析變量reset的FUD鏈3 將“動(dòng)態(tài)分支”域的值更新為0(第一個(gè)分支)覆蓋率信息 觀測(cè)到語(yǔ)句6,3 NullTrigger#2結(jié)點(diǎn)7 結(jié)點(diǎn)16觸發(fā)的動(dòng)作 分析變量reset的FUD鏈3 分析變量stato的FUD鏈10→1→3′→5分析變量reset的FUD鏈3覆蓋率信息 觀測(cè)到語(yǔ)句7,3 觀測(cè)到語(yǔ)句16,10,5,3Trigger#3結(jié)點(diǎn)3′ 結(jié)點(diǎn)17觸發(fā)的動(dòng)作 將“動(dòng)態(tài)分支”域的值更新為0(第 分析變量stato的FUD鏈10→1→3′→5一個(gè)分支) 分析變量reset的FUD鏈3覆蓋率信息 Null觀測(cè)到語(yǔ)句17,10,5,3Trigger#4結(jié)點(diǎn)19觸發(fā)的動(dòng)作 將“動(dòng)態(tài)分支”域的值更新為0(第一個(gè)分支)覆蓋率信息 NullTrigger#5結(jié)點(diǎn)3′觸發(fā)的動(dòng)作 將“動(dòng)態(tài)分支”域的值更新為1(第二個(gè)分支)覆蓋率信息 Null被執(zhí)行到的語(yǔ)句 語(yǔ)句3,5,6,7 語(yǔ)句3,10,12,15,16,17被觀測(cè)到的語(yǔ)句 語(yǔ)句3,6,7 語(yǔ)句3,5,10,16,17表1給出了可觀測(cè)性語(yǔ)句覆蓋評(píng)估的詳細(xì)過(guò)程。在第1個(gè)時(shí)鐘周期中,有3個(gè)事件被觸發(fā),語(yǔ)句3、6和7被觀測(cè)到。在第2個(gè)時(shí)鐘周期中,有5個(gè)事件被觸發(fā),語(yǔ)句3、5、10、16、17被觀測(cè)到。
下面解釋本說(shuō)明書的各個(gè)附圖的含義。
圖1為模擬驗(yàn)證的一般流程圖;圖2為例2中代碼所對(duì)應(yīng)的控制流-數(shù)據(jù)流圖,以及相應(yīng)的FUD鏈。
圖2中,包含兩種結(jié)點(diǎn)和兩種邊。其中,方形結(jié)點(diǎn)代表控制流的入口和出口,圓形結(jié)點(diǎn)代表計(jì)算結(jié)點(diǎn)。除了結(jié)點(diǎn)12′和3′之外,每個(gè)圓形結(jié)點(diǎn)對(duì)應(yīng)例2中的一條語(yǔ)句。結(jié)點(diǎn)12′代表分支結(jié)點(diǎn)12對(duì)應(yīng)的匯聚結(jié)點(diǎn),結(jié)點(diǎn)3′代表分支結(jié)點(diǎn)3對(duì)應(yīng)的匯聚結(jié)點(diǎn)。圖2中的實(shí)線邊代表控制流,虛線邊代表FUD鏈。由于“always”語(yǔ)句意味著一個(gè)循環(huán)結(jié)構(gòu),所以添加一條實(shí)線邊從結(jié)點(diǎn)3′指向結(jié)點(diǎn)1,同時(shí)添加一個(gè)偽FUD鏈,以表示相應(yīng)的數(shù)據(jù)流。
具體實(shí)施例方式
本發(fā)明中提出的基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋評(píng)估方法,可以與多種可控制性覆蓋評(píng)估準(zhǔn)則相結(jié)合。其具體實(shí)施方案可以按照以下步驟進(jìn)行1)選擇一種可控制性覆蓋評(píng)估準(zhǔn)則,建立起該準(zhǔn)則的評(píng)估對(duì)象與程序中變量的定值和引用之間的關(guān)聯(lián)關(guān)系;2)選擇一種控制流分析算法(可以參考編譯理論中成熟的控制流分析算法),并實(shí)現(xiàn)該算法;3)選擇一種數(shù)據(jù)流分析算法(可以參考編譯理論中成熟的數(shù)據(jù)流分析算法),并實(shí)現(xiàn)該算法,同時(shí)擴(kuò)充其FUD鏈,在匯聚結(jié)點(diǎn)處增加“動(dòng)態(tài)分支”域;4)為程序中每個(gè)變量定值和引用設(shè)置計(jì)數(shù)器,并實(shí)現(xiàn)代碼,其功能是在模擬開(kāi)始的時(shí)刻將計(jì)數(shù)器清0;5)選擇一種事件觸發(fā)方法(可以采用編程語(yǔ)言提供的接口機(jī)制,如Verilog語(yǔ)言的PLI,也可以與編譯器整合,即直接在編譯器的中間代碼中插入專用的語(yǔ)句,或者采用其它方法);6)實(shí)現(xiàn)第一類事件的響應(yīng)代碼,即,當(dāng)程序執(zhí)行到控制流的匯聚結(jié)點(diǎn),更新該結(jié)點(diǎn)處的“動(dòng)態(tài)分支”域的值,以記錄最新的程序執(zhí)行軌跡;7)實(shí)現(xiàn)第二類事件的響應(yīng)代碼,即,當(dāng)某個(gè)觀測(cè)點(diǎn)的值更新之后,沿著該處的FUD鏈反向追蹤,分析設(shè)計(jì)方案的可觀測(cè)性覆蓋情況,并更新相應(yīng)的計(jì)數(shù)器;若遇到匯聚結(jié)點(diǎn),則選擇與其“動(dòng)態(tài)分支”域相應(yīng)的分支處的定值,繼續(xù)分析。直到某個(gè)變量引用的FUD鏈為空,則分析完畢;8)依據(jù)1)中的關(guān)聯(lián)關(guān)系,通過(guò)變量引用和定值的可觀測(cè)性信息來(lái)統(tǒng)計(jì)待評(píng)估對(duì)象的可觀測(cè)性信息,并實(shí)現(xiàn)計(jì)算可觀測(cè)性覆蓋率的代碼。該代碼在模擬完畢的時(shí)刻被調(diào)用。
基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋評(píng)估方法,步驟1)中的選擇一種可控制性覆蓋評(píng)估準(zhǔn)則;可以選擇語(yǔ)句覆蓋準(zhǔn)則,所建立的關(guān)聯(lián)關(guān)系為,如果某條語(yǔ)句中所有的變量引用都被觀測(cè)到,則該語(yǔ)句被觀測(cè)到了。
另外,步驟1)中的選擇一種可控制性覆蓋評(píng)估準(zhǔn)則;可以選擇分支覆蓋準(zhǔn)則,所建立的關(guān)聯(lián)關(guān)系為,對(duì)于某個(gè)分支語(yǔ)句中條件變量的某個(gè)取值,或者,當(dāng)該分支語(yǔ)句含有多個(gè)條件變量時(shí),則是對(duì)于這些變量的某個(gè)取值組合;如果該取值,或取值組合,中所有的變量引用都被觀測(cè)到,則該取值,或取值組合,對(duì)應(yīng)的分支被觀測(cè)到了。
再就是,步驟1)中的選擇一種可控制性覆蓋評(píng)估準(zhǔn)則;可以選擇表達(dá)式覆蓋準(zhǔn)則,所建立的關(guān)聯(lián)關(guān)系為,對(duì)于某個(gè)表達(dá)式中的變量的取值組合,如果該取值組合中所有的變量引用都被觀測(cè)到,則該表達(dá)式的這個(gè)取值組合被觀測(cè)到了。
本發(fā)明的基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋評(píng)估方法,該方法通過(guò)添加“動(dòng)態(tài)分支”域擴(kuò)充了FUD鏈的功能,使之能夠記錄程序動(dòng)態(tài)執(zhí)行軌跡,并利用此增強(qiáng)型FUD鏈表征硬件設(shè)計(jì)方案的可觀測(cè)性信息,進(jìn)而評(píng)估模擬驗(yàn)證的可觀測(cè)性覆蓋率。該方法的基本策略包括三方面(1)使用增強(qiáng)型FUD鏈表征可觀測(cè)性信息;(2)事件驅(qū)動(dòng)分析;(3)與可控制性覆蓋準(zhǔn)則結(jié)合的可觀測(cè)性覆蓋率計(jì)算方法。本發(fā)明所提出的方法可以與現(xiàn)有多種可控制性覆蓋準(zhǔn)則相結(jié)合,使得可控制性與可觀測(cè)性的覆蓋情況可以聯(lián)合評(píng)估,從而提高覆蓋準(zhǔn)則的評(píng)估能力。
附錄FUD鏈及相關(guān)定義定義1控制流圖控制流圖(Control Flow Graph)可以用三元組<V,E,Entry>表示,其中·<V,E>是一個(gè)有向圖(directed graph);·Entry∈V是一個(gè)唯一的源點(diǎn);·所有結(jié)點(diǎn)都是從源點(diǎn)Entry可達(dá)的,即(ν∈V)[Entry→ν]。
程序可以被劃分成基本塊的集合,其中每個(gè)基本塊都是一個(gè)不包含分支的語(yǔ)句序列。在控制流圖中,每個(gè)結(jié)點(diǎn)代表一個(gè)基本塊,而邊則代表基本塊之間的潛在的控制流。每個(gè)條件分支語(yǔ)句所對(duì)應(yīng)的結(jié)點(diǎn)總會(huì)有兩個(gè)或更多后繼結(jié)點(diǎn)。
定義2引用-定值鏈(Use-Def chains)變量x的定值(definition)是一個(gè)語(yǔ)句,它賦值或可能賦值給x。定值包括二義的和無(wú)二義的兩類。最常使用的x的二義定值形式有把x作為參數(shù)的過(guò)程調(diào)用(值參數(shù)除外);所調(diào)用的過(guò)程可以訪問(wèn)x;通過(guò)引用x的指針對(duì)x賦值。
在控制流圖上,如果從變量x的定值d到它的某處引用(use)u之間存在一條通路,并且該通路上不包含x的其它定值(無(wú)二義定值),那么定值d到達(dá)了引用u。
可以把到達(dá)-定值信息存儲(chǔ)為引用-定值鏈(或者叫UD鏈)。
定義3參數(shù)化的引用-定值鏈(Factored Use-Def chains,or FUDchains)FUD鏈有兩個(gè)重要屬性1)對(duì)于變量的每個(gè)引用u,僅有唯一的定值d到達(dá)u;2)當(dāng)原始程序中有多個(gè)定值到達(dá)控制流的匯聚點(diǎn)時(shí),被稱作φ-term的專用的匯聚運(yùn)算符被插入到該匯聚點(diǎn)中。通過(guò)必要的“偽賦值語(yǔ)句”實(shí)現(xiàn)所到達(dá)的多個(gè)定值的參數(shù)化,并使得匯聚點(diǎn)之后的變量滿足第一條屬性。
在匯聚點(diǎn)之后,該點(diǎn)的φ-term便作為相關(guān)引用的定值來(lái)使用。
可以說(shuō),F(xiàn)UD鏈?zhǔn)荱D鏈的一種更優(yōu)化的表述形式。下面舉例說(shuō)明二者的區(qū)別原始代碼是一段帶有分支語(yǔ)句的代碼,如下所示。其中,賦值符號(hào)(=)“使用”右側(cè)變量為左側(cè)變量“定義”一個(gè)值,所以,賦值號(hào)右側(cè)是變量的引用,而左側(cè)是變量的定值。
(1)K=0(2)ifT>Kthen(3) K=K+1(4) M=K*2(5)else(6) M=K/2
(7) endif(8) K2=K+2(9) K3=K+3(10) K4=K+M為了便于區(qū)分,將每個(gè)變量的定值和引用都添加了下標(biāo),如下所示(1) K1=0(2) ifT2>K3 then(3)K5=K4+1(4)M7=K6*2(5) else(6)M9=K8/2(7) endif(8) K211=K10+2(9) K313=K12+3(10) K416=K14+M15在添加了下標(biāo)的代碼段中,將每個(gè)變量的引用通過(guò)指針指向其定值,就構(gòu)成了相應(yīng)的UD鏈,如下所示。程序執(zhí)行到第8行之前,控制流可能執(zhí)行if語(yǔ)句中條件為真的分支,也可能執(zhí)行條件為假的分支,所以K10的UD鏈表示為K10→1,5,指向K10的兩個(gè)可能的定值K1和K5。
(1) K1=0(2) ifT2>K3→1then(3) K5=K4→1+1(4)M7=K6→5*2(5) else(6)M9=K8→1/2(7) endif(8) K211=K10→1,5+2(9) K313=K12→1,5+3(10) K416=K14→1,5+M15→7,9UD鏈面臨著一個(gè)問(wèn)題,即無(wú)法有效的利用空間。另外,在編譯理論中,UD鏈面臨著又一個(gè)問(wèn)題,即所表示的信息不夠準(zhǔn)確。從程序結(jié)構(gòu)的角度來(lái)看,UD鏈中包含了所有可能到達(dá)的定值,但是,若編譯器可以判斷出分支語(yǔ)句中的條件為常數(shù)值,那么UD鏈中的部分信息就成為冗余的了。由此,F(xiàn)UD鏈應(yīng)運(yùn)而生。以下是這段對(duì)應(yīng)的FUD鏈。
(1) K1=0(2) ifT2>K3→1then(3)K5=K4→1+1(4)M7=K6→5*2(5) else(6)M9=K8→1/2(7) endifφ(K)17→5,1φ(M)18→7,9(8) K211=K10→17+2(9) K313=K12→17+3(10)K416=K14→17+M15→18在第(7)行的匯聚結(jié)點(diǎn)endif之后,為K添加了φ-term,即φ(K)17→5,1,所以在K10只需要指向φ(K)17即可,而不必向UD鏈那樣需要保持兩個(gè)指針。
權(quán)利要求
1.一種基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋評(píng)估方法,包括如下步驟1)選擇一種可控制性覆蓋評(píng)估準(zhǔn)則,建立起該準(zhǔn)則的評(píng)估對(duì)象與程序中變量的定值和引用之間的關(guān)聯(lián)關(guān)系;2)選擇一種控制流分析算法,并實(shí)現(xiàn)該算法;3)選擇一種數(shù)據(jù)流分析算法,并實(shí)現(xiàn)該算法,同時(shí)擴(kuò)充其FUD鏈,在匯聚結(jié)點(diǎn)處增加“動(dòng)態(tài)分支”域;4)為程序中每個(gè)變量定值和引用設(shè)置計(jì)數(shù)器,并實(shí)現(xiàn)代碼,其功能是在模擬開(kāi)始的時(shí)刻將計(jì)數(shù)器清0;5)選擇一種事件觸發(fā)方法;6)實(shí)現(xiàn)第一類事件的響應(yīng)代碼,即,當(dāng)程序執(zhí)行到控制流的匯聚結(jié)點(diǎn),更新該結(jié)點(diǎn)處的“動(dòng)態(tài)分支”域的值,以記錄最新的程序執(zhí)行軌跡;7)實(shí)現(xiàn)第二類事件的響應(yīng)代碼,即,當(dāng)某個(gè)觀測(cè)點(diǎn)的值更新之后,沿著該處的FUD鏈反向追蹤,分析設(shè)計(jì)方案的可觀測(cè)性覆蓋情況,并更新相應(yīng)的計(jì)數(shù)器;若遇到匯聚結(jié)點(diǎn),則選擇與其“動(dòng)態(tài)分支”域相應(yīng)的分支處的定值,繼續(xù)分析,直到某個(gè)變量引用的FUD鏈為空,則分析完畢;8)依據(jù)1)中的關(guān)聯(lián)關(guān)系,通過(guò)變量引用和定值的可觀測(cè)性信息來(lái)統(tǒng)計(jì)待評(píng)估對(duì)象的可觀測(cè)性信息,并實(shí)現(xiàn)計(jì)算可觀測(cè)性覆蓋率的代碼,該代碼在模擬完畢的時(shí)刻被調(diào)用。
2.根據(jù)權(quán)利要求1的基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋評(píng)估方法,其特征在于,步驟5)中的選擇一種事件觸發(fā)方法;可以采用編程語(yǔ)言提供的接口機(jī)制,如Verilog語(yǔ)言的PLI,也可以與編譯器整合,即直接在編譯器的中間代碼中插入專用的語(yǔ)句。
3.根據(jù)權(quán)利要求1的基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋評(píng)估方法,其特征在于,步驟1)中的選擇一種可控制性覆蓋評(píng)估準(zhǔn)則;可以選擇語(yǔ)句覆蓋準(zhǔn)則,所建立的關(guān)聯(lián)關(guān)系為,如果某條語(yǔ)句中所有的變量引用都被觀測(cè)到,則該語(yǔ)句被觀測(cè)到了。
4.根據(jù)權(quán)利要求1的基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋評(píng)估方法,其特征在于,步驟1)中的選擇一種可控制性覆蓋評(píng)估準(zhǔn)則;可以選擇分支覆蓋準(zhǔn)則,所建立的關(guān)聯(lián)關(guān)系為,對(duì)于某個(gè)分支語(yǔ)句中條件變量的某個(gè)取值,或者,當(dāng)該分支語(yǔ)句含有多個(gè)條件變量時(shí),則是對(duì)于這些變量的某個(gè)取值組合;如果該取值,或取值組合,中所有的變量引用都被觀測(cè)到,則該取值,或取值組合,對(duì)應(yīng)的分支被觀測(cè)到了。
5.根據(jù)權(quán)利要求1的基于增強(qiáng)性FUD鏈的可觀測(cè)性覆蓋評(píng)估方法,其特征在于,步驟1)中的選擇一種可控制性覆蓋評(píng)估準(zhǔn)則;可以選擇表達(dá)式覆蓋準(zhǔn)則,所建立的關(guān)聯(lián)關(guān)系為,對(duì)于某個(gè)表達(dá)式中的變量的取值組合,如果該取值組合中所有的變量引用都被觀測(cè)到,則該表達(dá)式的這個(gè)取值組合被觀測(cè)到了。
全文摘要
本發(fā)明涉及超大規(guī)模集成電路的設(shè)計(jì)驗(yàn)證技術(shù)領(lǐng)域,特別是一種基于增強(qiáng)型FUD鏈的可觀測(cè)性覆蓋評(píng)估方法,該方法通過(guò)添加“動(dòng)態(tài)分支”域擴(kuò)充了FUD鏈的功能,使之能夠記錄程序動(dòng)態(tài)執(zhí)行軌跡,并利用此增強(qiáng)型FUD鏈表征硬件設(shè)計(jì)方案的可觀測(cè)性信息,進(jìn)而評(píng)估模擬驗(yàn)證的可觀測(cè)性覆蓋率。該方法的基本策略包括三方面(1)使用增強(qiáng)型FUD鏈表征可觀測(cè)性信息;(2)事件驅(qū)動(dòng)分析;(3)與可控制性覆蓋準(zhǔn)則結(jié)合的可觀測(cè)性覆蓋率計(jì)算方法。本發(fā)明所提出的方法可以與現(xiàn)有多種可控制性覆蓋準(zhǔn)則相結(jié)合,使得可控制性與可觀測(cè)性的覆蓋情況可以聯(lián)合評(píng)估,從而提高覆蓋準(zhǔn)則的評(píng)估能力。
文檔編號(hào)H01L21/66GK1494122SQ03147260
公開(kāi)日2004年5月5日 申請(qǐng)日期2003年7月11日 優(yōu)先權(quán)日2003年7月11日
發(fā)明者呂濤, 李曉維, 樊建平, 呂 濤 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所