專利名稱:一種寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路設(shè)計(jì)驗(yàn)證領(lǐng)域,特別是一種寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,是在模擬驗(yàn)證中更確切地評(píng)估以及提高驗(yàn)證力度的方法。
背景技術(shù):
可觀測(cè)性的概念起源于生產(chǎn)測(cè)試,它用來表征電路內(nèi)部邏輯信號(hào)的錯(cuò)誤是否可以反映到電路的輸出。在模擬驗(yàn)證中,硬件設(shè)計(jì)是在軟件模擬器上運(yùn)行的,在各時(shí)刻的變量取值實(shí)際上是可知的。但是隨著設(shè)計(jì)規(guī)模的擴(kuò)大,了解設(shè)計(jì)中所有變量的正確行為,其數(shù)據(jù)量之大,對(duì)于驗(yàn)證工程師來說幾乎是不現(xiàn)實(shí)的。另外,硬件設(shè)計(jì)在模擬過程中,其變量的狀態(tài)通常是一串0、1序列,可讀性差。所以,在模擬驗(yàn)證中考慮設(shè)計(jì)的可觀測(cè)性就非常必要了。
鑒于此,可觀測(cè)性覆蓋評(píng)估準(zhǔn)則被提了出來,它是一種從行為角度對(duì)模擬激勵(lì)進(jìn)行評(píng)估的準(zhǔn)則,是對(duì)傳統(tǒng)覆蓋準(zhǔn)則的增強(qiáng)。傳統(tǒng)的覆蓋準(zhǔn)則只考慮代碼的可控制性,忽略其可觀測(cè)性,即這些準(zhǔn)則保證了代碼會(huì)執(zhí)行,但其執(zhí)行錯(cuò)誤并不一定可以反映到驗(yàn)證者所選定的觀測(cè)點(diǎn)上。這可能導(dǎo)致表面上很高的覆蓋率數(shù)據(jù)所蘊(yùn)含的可信度不高。以語句覆蓋準(zhǔn)則為例,采用該準(zhǔn)則,通常很容易達(dá)到很高的覆蓋率,甚至100%;而可觀測(cè)性語句覆蓋率并不像前者那樣過于樂觀,它不僅評(píng)估每條語句是否被執(zhí)行,而且檢驗(yàn)被激勵(lì)激活的那些潛在錯(cuò)誤的影響是否可以傳播到觀測(cè)點(diǎn),該準(zhǔn)則可以更確切地評(píng)估驗(yàn)證的力度。
然而,目前已經(jīng)提出的可觀測(cè)性覆蓋分析方法,通常存在計(jì)算復(fù)雜度高,時(shí)間開銷大的問題。同時(shí),在激勵(lì)生成過程中,通常不考慮可觀測(cè)性,這樣所產(chǎn)生的模擬激勵(lì)的驗(yàn)證力度不夠。存在這些問題的原因,一方面是缺乏簡(jiǎn)潔合理的可觀測(cè)性信息分析模型,另一方面是由于可觀測(cè)性分析方法復(fù)雜,這導(dǎo)致其很難應(yīng)用于實(shí)際的設(shè)計(jì)驗(yàn)證流程。
寄存器傳輸級(jí)(RTL)描述是介于邏輯級(jí)與算法級(jí)之間的一種描述級(jí)別。相比較而言,RTL描述較邏輯級(jí)描述更簡(jiǎn)單明了,縮小了電路描述規(guī)模;而較算法級(jí)描述能更好地表征電路特性(如時(shí)鐘信息),并且易于綜合,因此RTL描述成為目前應(yīng)用最廣泛的電路設(shè)計(jì)描述形式。中國科學(xué)院的尹志剛博士等人采用進(jìn)程控制樹(PCT)、數(shù)據(jù)流向圖(DDG)以及定義行為圖(DBG)來抽象RTL描述。其中進(jìn)程控制樹反映了進(jìn)程的控制結(jié)構(gòu),數(shù)據(jù)流向圖反映了數(shù)據(jù)之間的流動(dòng)關(guān)系,定義行為圖則體現(xiàn)了控制流與數(shù)據(jù)流的結(jié)合。其具體方法可參考下列文獻(xiàn)“A Novel RTL Behavioral Description Based ATPG Method”,by YINZhiGang,MIN YingHua,LI XiaoWei and LI HuaWei,Published in Journal ofComputer Science and Technology,May 2003,Vol.18,No.3,pp.308-317.
發(fā)明內(nèi)容
本發(fā)明針對(duì)目前可觀測(cè)性覆蓋評(píng)估算法復(fù)雜度過高,時(shí)間開銷過大,在實(shí)際設(shè)計(jì)驗(yàn)證流程中難以應(yīng)用的問題,提出解決方案。
本發(fā)明目的之一是提供一種簡(jiǎn)潔合理的表征方式來刻畫電路RTL設(shè)計(jì)的可觀測(cè)性信息。
本發(fā)明目的之二是提供一種高效的可觀測(cè)性信息分析方法。
本發(fā)明目的之三是提供一種高效的可觀測(cè)性語句覆蓋評(píng)估算法。
本發(fā)明目的之四是為模擬激勵(lì)的生成提供可觀測(cè)性信息,作為啟發(fā)式度量標(biāo)準(zhǔn),來指導(dǎo)激勵(lì)生成,提高驗(yàn)證的力度。
為實(shí)現(xiàn)上述目的,本發(fā)明包含以下內(nèi)容(1)本發(fā)明提出一種可觀測(cè)性信息表征方式。本發(fā)明對(duì)傳統(tǒng)的進(jìn)程控制樹(PCT)結(jié)構(gòu)進(jìn)行擴(kuò)充,提出了增強(qiáng)型進(jìn)程控制樹(EPCT)結(jié)構(gòu)。該結(jié)構(gòu)可以在刻畫進(jìn)程的控制關(guān)系的同時(shí),記錄在任一時(shí)間幀語句的執(zhí)行情況,以及電路在若干時(shí)間幀執(zhí)行以后,每一條語句的可觀測(cè)性信息。同時(shí)本發(fā)明提出了控制-觀測(cè)鏈(COC)結(jié)構(gòu)用于分析電路在每一時(shí)間幀動(dòng)態(tài)執(zhí)行過程中的可觀測(cè)性信息。
(2)本發(fā)明提出一種可觀測(cè)性信息分析方法。該方法可以劃分為兩個(gè)階段,第一個(gè)階段是模擬階段,這是一個(gè)從輸入到輸出的“正向”過程,其主要目的在于確定每一個(gè)觀測(cè)點(diǎn)的控制-觀測(cè)鏈;第二個(gè)階段是可觀測(cè)性分析階段,這是一個(gè)從觀測(cè)點(diǎn)出發(fā),“反向”分析控制-觀測(cè)鏈,進(jìn)而判斷變量與語句可觀測(cè)性的過程。
(3)本發(fā)明將可觀測(cè)性分析方法與語句覆蓋準(zhǔn)則相結(jié)合,提出可觀測(cè)性語句覆蓋率的計(jì)算方法。
(4)本發(fā)明將可觀測(cè)性覆蓋分析所得到的信息,應(yīng)用于模擬激勵(lì)生成,提高了激勵(lì)的質(zhì)量與驗(yàn)證的力度。
技術(shù)方案寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,通過增強(qiáng)型進(jìn)程控制樹、控制-觀測(cè)鏈等數(shù)據(jù)模型表征可觀測(cè)性信息,在此基礎(chǔ)上,通過對(duì)設(shè)計(jì)電路動(dòng)態(tài)執(zhí)行過程中,每個(gè)觀測(cè)點(diǎn)的控制-觀測(cè)鏈的確定與回退,分析語句與變量的可觀測(cè)性,得到可觀測(cè)性語句覆蓋率,并且利用得到的可觀測(cè)性信息指導(dǎo)激勵(lì)生成。
寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,采用控制-觀測(cè)鏈來記錄在具體每一時(shí)間幀擴(kuò)展過程中,變量以及語句的可觀測(cè)性信息,具體來說,一個(gè)變量v,在某一時(shí)間幀t的控制-觀測(cè)鏈就是由所有在時(shí)間幀t,對(duì)v的取值產(chǎn)生影響的賦值關(guān)系所形成的集合。
寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,采用變量的賦值和引用作為可觀測(cè)性分析的基礎(chǔ),可以很容易地與其它考慮可控制性的覆蓋準(zhǔn)則相結(jié)合,其與語句覆蓋評(píng)估準(zhǔn)則相結(jié)合,得到可觀測(cè)性語句覆蓋率,其具體方法是當(dāng)一組向量模擬結(jié)束時(shí),統(tǒng)計(jì)在增強(qiáng)型進(jìn)程控制樹中,obv域的取值為1的節(jié)點(diǎn)數(shù)目,其與總的賦值語句數(shù)目的比值就是可觀測(cè)性語句覆蓋率。
寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,以可觀測(cè)性語句的覆蓋分布情況為啟發(fā)式信息的激勵(lì)生成算法,這是一種基于模擬的算法,在模擬的開始階段,不指定模擬激勵(lì)的值,當(dāng)執(zhí)行到設(shè)計(jì)的一條語句時(shí),對(duì)其類型進(jìn)行判斷如果遇到賦值語句,則執(zhí)行賦值操作;如果遇到條件分支語句,則比較不同分支下的可觀測(cè)性語句覆蓋分布情況,進(jìn)而決定該算法下一步執(zhí)行方向,在該過程中會(huì)指定全部或者部分輸入位的值,最后對(duì)于經(jīng)過以上操作,沒有被賦值的輸入位,指派一個(gè)隨機(jī)值,這樣得到一個(gè)模擬激勵(lì)。
本發(fā)明首先對(duì)進(jìn)程控制樹(PCT)進(jìn)行擴(kuò)充,提出增強(qiáng)型進(jìn)程控制樹(EPCT)。簡(jiǎn)單而言,對(duì)PCT的擴(kuò)充方法是在PCT的每一個(gè)節(jié)點(diǎn)(對(duì)應(yīng)一條HDL語句)中加入兩個(gè)域obv域可觀測(cè)性語句標(biāo)識(shí)域。該域只針對(duì)于賦值語句,用來標(biāo)識(shí)該語句的執(zhí)行錯(cuò)誤是否可以被驗(yàn)證者觀測(cè)到。其取值為0,表示該賦值語句是沒有被觀測(cè)到的;其取值為1,表示該賦值語句是可觀測(cè)的。
active域語句動(dòng)態(tài)執(zhí)行標(biāo)識(shí)域。該域只針對(duì)于賦值語句,由于編譯階段無法得到程序動(dòng)態(tài)執(zhí)行的信息,我們采用該域紀(jì)錄在程序的每一時(shí)間幀的具體執(zhí)行過程中,哪些語句是被執(zhí)行的。在某一時(shí)間幀t,其取值為1,表示該語句在時(shí)間幀t是被執(zhí)行的;其取值為0,表示該語句在時(shí)間幀t沒有執(zhí)行。該域的取值在每一時(shí)間幀都要?jiǎng)討B(tài)刷新。
增強(qiáng)型進(jìn)程控制樹(EPCT)的遞歸表示形式為EPCT=<C,EPCTthen,EPCTelse,EPCTnext,Attrs>。其中C表示當(dāng)前語句,EPCTthen,EPCTelse,EPCTnext表示不同分支下的子樹。當(dāng)C為賦值語句時(shí),EPCTthen與EPCTelse為空,EPCTnext表示以語句C的后繼為根節(jié)點(diǎn)的增強(qiáng)型進(jìn)程控制樹。當(dāng)C為條件賦值語句時(shí),EPCTthen與EPCTelse分別表示then分支與else分支語句組的增強(qiáng)型進(jìn)程控制樹,同時(shí)EPCTnext表示以條件分支的后繼語句為根節(jié)點(diǎn)的增強(qiáng)型進(jìn)程控制樹。Attrs表示所添加的obv域以及active域。需要注意的是,針對(duì)RTL代碼中的case語句,在編譯階段,已經(jīng)轉(zhuǎn)化成if-else語句,同時(shí)循環(huán)語句也已經(jīng)展開。所以,可以采用上述方式,刻畫RTL描述。
一段VHDL代碼與其對(duì)應(yīng)的增強(qiáng)型進(jìn)程控制樹(EPCT)與數(shù)據(jù)流向圖(DDG)如圖1所示,其中的虛線表示EPCT與DDG的對(duì)應(yīng)關(guān)系。一條VHDL語句對(duì)應(yīng)于EPCT中的一個(gè)節(jié)點(diǎn),同時(shí)在DDG中有其對(duì)應(yīng)的數(shù)據(jù)傳輸邊。
EPCT結(jié)構(gòu)中的obv域可以記錄電路在若干時(shí)間幀執(zhí)行以后,每一條語句的可觀測(cè)性信息,但無法記錄在具體每一時(shí)間幀擴(kuò)展過程中,變量以及語句的可觀測(cè)性信息。為了清晰地表征在程序動(dòng)態(tài)執(zhí)行過程中,數(shù)據(jù)的依賴關(guān)系并分析可觀測(cè)性,我們引入以下定義定義1在DDG中,每一個(gè)節(jié)點(diǎn)p代表HDL中一個(gè)變量或表達(dá)式,針對(duì)某段代碼C,其所有變量或表達(dá)式在DDG中對(duì)應(yīng)節(jié)點(diǎn)的集合,我們稱之為代碼C所對(duì)應(yīng)DDG的節(jié)點(diǎn)集,并用P(C)來表示。即P(C)={p|p為代碼C所對(duì)應(yīng)DDG中的節(jié)點(diǎn)}。
定義2在代碼C中對(duì)變量(包括輸出)的一次賦值,叫做一次數(shù)據(jù)遷移,每個(gè)數(shù)據(jù)遷移在DDG中都有其對(duì)應(yīng)的邊;一個(gè)數(shù)據(jù)遷移tf可以表示為tf=<s,e>,其中s與e分別表示tf的源點(diǎn)與終點(diǎn);代碼C中所有數(shù)據(jù)遷移的集合,表示成TF(C)。即TF(C)={<s,e>|<s,e>為代碼C所對(duì)應(yīng)DDG中的數(shù)據(jù)遷移}。
定義3在時(shí)間幀t,代碼C所對(duì)應(yīng)的某些數(shù)據(jù)遷移是被執(zhí)行的,某些數(shù)據(jù)遷移是沒有被執(zhí)行的,我們將被執(zhí)行的數(shù)據(jù)遷移稱為活動(dòng)的數(shù)據(jù)遷移;沒有被執(zhí)行的數(shù)據(jù)遷移,稱為非活動(dòng)的數(shù)據(jù)遷移;所有活動(dòng)的數(shù)據(jù)遷移構(gòu)成的集合表示為ATF(C,t)。即ATF(C,t)={<s,e>|(<s,e>∈TF(C))∧(<s,e>在時(shí)間幀t被執(zhí)行)}。
定義4在時(shí)間幀t,針對(duì)代碼C中的某一變量v,所有對(duì)其產(chǎn)生影響的賦值關(guān)系所形成的活動(dòng)的數(shù)據(jù)遷移的集合,稱為變量v在時(shí)間幀t的控制-觀測(cè)鏈,表示為COC(C,v,t),其形式化定義如下COC(C,v,t)={<s,e,attr>|(∃(w1,...wn)∈P(C))]]>[<s,e,attr>,<e,w1,attr>,...,<wn,vattr>∈ATF(C,t)]}]]> 根據(jù)上述定義,在圖2中,DDG的節(jié)點(diǎn)集合P(C)={rst,clk,in1,in2,0,1,buf1,buf2,+,buf3,buf4,up event,=,condition,o1,o2}。在時(shí)間幀t,假設(shè)(rst?。?),則{tf2,tf3}為非活動(dòng)的數(shù)據(jù)遷移(即在該時(shí)間幀,語句2、3未執(zhí)行),{tf5,tf6,tf7_l,tf7_r,tf7,tf8,tf9,tf10}為活動(dòng)的數(shù)據(jù)遷移(即在該時(shí)間幀,語句5-10被執(zhí)行),則根據(jù)定義4,變量buf3在該時(shí)間幀的控制-觀測(cè)鏈為COC(C,buf3,t)={tf5,tf6,tf7_l,tf7_r,tf7。需要注意的是針對(duì)RTL代碼中的非阻塞性賦值,其取值涉及前一幀,如圖2中的語句8,要為buf4賦t-1幀中buf3的值,所以其控制-觀測(cè)鏈也要涉及前一幀的取值。如果一條賦值語句存在錯(cuò)誤,則其錯(cuò)誤的取值,將決定該錯(cuò)誤是否可以傳播到賦值目標(biāo)。假設(shè)存在一條賦值語句f=a>(b+c),在執(zhí)行過程中,其正確的取值應(yīng)該為<a=4,b=2,c=1>。這時(shí)如果a的取值發(fā)生錯(cuò)誤,當(dāng)a取大于4的值時(shí),該錯(cuò)誤無法傳播到賦值目標(biāo)f;當(dāng)a取小于4的值時(shí),該錯(cuò)誤可以傳播到賦值目標(biāo)f。
本發(fā)明假設(shè)所有賦值語句的錯(cuò)誤,其取值都可以傳播到賦值目標(biāo)。
基于上述數(shù)據(jù)模型以及假設(shè),我們對(duì)變量以及賦值語句的可觀測(cè)性給出如下定義定義5某段代碼C中的可觀測(cè)點(diǎn)(Observable Points,記做OP)的集合OPS(C)定義為
(1)針對(duì)代碼C,被驗(yàn)證者選來觀察程序行為的變量v,是觀測(cè)點(diǎn)(Observed Point,記做OdP)。OdP的集合記做OdPS(C),顯然OdPS(C)OPS(C)。
(2) 滿足以下性質(zhì)的變量w,在時(shí)間幀t是可以被觀測(cè)的,OPS(C,t)={w|(∃v∈OdPS(C),∃p∈P(C))[(w,p)∈COC(C,v,t)]},]]>并且我們將對(duì)可觀測(cè)點(diǎn)賦值的語句稱為可觀測(cè)性賦值語句(ObservableStatements,記做OS);顯然OPS(C,t)OPS(C)。
從一定意義上講,可觀測(cè)性就是內(nèi)部變量和觀測(cè)點(diǎn)之間的數(shù)據(jù)依賴關(guān)系的體現(xiàn)。基于以上提出的數(shù)據(jù)模型及相關(guān)定義,下面給出一種可觀測(cè)性分析方法。
在進(jìn)行可觀測(cè)性分析前,首先要對(duì)RTL代碼進(jìn)行編譯,得到PCT與DDG結(jié)構(gòu),并對(duì)PCT進(jìn)行擴(kuò)充,增加obv與active域,然后初始化這兩個(gè)域的值。針對(duì)賦值語句,這兩個(gè)域初始化都取0值,并且其取值會(huì)在可觀測(cè)性分析過程中,不斷刷新。針對(duì)條件分支語句,這兩個(gè)域的值為空。通過上述操作,我們就得到了增強(qiáng)型進(jìn)程控制樹(EPCT)。
上述初始化工作完成后,進(jìn)行可觀測(cè)性分析,該分析過程可以劃分為兩個(gè)階段,第一個(gè)階段是模擬階段,這是一個(gè)從輸入到輸出的“正向”過程,該階段的主要工作是刷新EPCT中active域的值,判斷在當(dāng)前時(shí)間幀DDG中每一個(gè)數(shù)據(jù)遷移是否活動(dòng),進(jìn)而確定在該時(shí)間幀,每一個(gè)觀測(cè)點(diǎn)的控制-觀測(cè)鏈;第二個(gè)階段是可觀測(cè)性分析階段,這是一個(gè)從觀測(cè)點(diǎn)出發(fā),“反向”分析控制-觀測(cè)鏈,判斷代碼可觀測(cè)性的過程。其算法過程如下所示Analyze(C,vector,t)//代碼C,在時(shí)間幀t,模擬向量vector,分析可觀測(cè)性;{//階段1向量模擬階段;模擬向量vector;
將該時(shí)間幀具體被執(zhí)行的語句所對(duì)應(yīng)的EPCT中active域的取值置為1;通過EPCT與DDG的對(duì)應(yīng)關(guān)系,判斷DDG中哪些數(shù)據(jù)傳輸是活動(dòng)的;進(jìn)而確定每一個(gè)觀測(cè)點(diǎn)的控制-觀測(cè)鏈;//階段2可觀測(cè)性分析階段;for all v∈OdPS(C)for all a_t∈COC(C,v,t)將a_t所對(duì)應(yīng)的EPCT中相應(yīng)節(jié)點(diǎn)的obv域取值刷新為1;}采用上述算法,當(dāng)一組向量模擬結(jié)束時(shí),語句的可觀測(cè)性信息就已經(jīng)得到了。這時(shí)統(tǒng)計(jì)EPCT中obv域的取值為1的節(jié)點(diǎn)數(shù)目,其與總的賦值語句數(shù)目的比值就是可觀測(cè)性語句覆蓋率。
本發(fā)明所提出的可觀測(cè)性評(píng)估方法采用變量的賦值和引用作為可觀測(cè)性分析的基礎(chǔ),可以很容易地與其它考慮可控制性的覆蓋準(zhǔn)則相結(jié)合。同時(shí)采用本發(fā)明所得到的可觀測(cè)性覆蓋信息,可以作為重要的啟發(fā)式信息指導(dǎo)RTL激勵(lì)生成。
本發(fā)明提出一種基于模擬的,以可觀測(cè)性語句覆蓋分布為啟發(fā)式信息的激勵(lì)生成算法。在模擬的開始階段,不指定模擬激勵(lì)的值,其輸入的所有位均置為不確定位。
當(dāng)模擬執(zhí)行到RTL設(shè)計(jì)的一條語句時(shí),對(duì)其類型進(jìn)行判斷。如果遇到賦值語句,則執(zhí)行賦值操作。如果遇到條件分支語句,則判斷不同分支下未觀測(cè)語句的分布情況,進(jìn)而決定該算法下一步執(zhí)行方向。其具體算法如下Engine(EPCT) /*EPCT=<C,EPCTthen,EPCTelse,EPCTnext,Attrs>;*/{步驟1.如果EPCT為空,算法結(jié)束;
步驟2.如果當(dāng)前語句C為賦值語句,則執(zhí)行該賦值語句,然后算法轉(zhuǎn)至步驟5;否則該語句一定是條件分支語句,轉(zhuǎn)至步驟3;步驟3.如果then分支下,未觀測(cè)到的語句多,我們認(rèn)為算法沿該分支執(zhí)行,會(huì)更有利于觀測(cè)到目前尚未觀測(cè)到的語句,這時(shí)算法提出沿該分支執(zhí)行的請(qǐng)求。如果請(qǐng)求沒有沖突,則算法沿then分支遞歸執(zhí)行Engine(EPCTthen),如果存在沖突,則沿else分支遞歸執(zhí)行Engine(EPCTelse)。算法轉(zhuǎn)至步驟5。
步驟4.如果else分支下,未觀測(cè)到的語句多,與步驟3的處理過程類似,提出沿else分支執(zhí)行的請(qǐng)求,如果滿足,則遞歸執(zhí)行Engine(EPCTelse),反之遞歸執(zhí)行Engine(EPCTthen)。算法轉(zhuǎn)至步驟5。
步驟5.遞歸執(zhí)行Engine(EPCTnext);}在上述算法執(zhí)行過程中,通過對(duì)某些變量值的請(qǐng)求,將指定輸入激勵(lì)全部或者部分位的取值。對(duì)于經(jīng)過以上操作,沒有被賦值的輸入位,指派一個(gè)隨機(jī)值。這樣,在每一時(shí)間幀,將產(chǎn)生一個(gè)模擬激勵(lì)。采用該方式得到的模擬激勵(lì)可以使設(shè)計(jì)錯(cuò)誤盡可能地展現(xiàn)在設(shè)計(jì)驗(yàn)證者所選定的觀測(cè)點(diǎn)上,提高設(shè)計(jì)驗(yàn)證的力度。
本發(fā)明解決了目前已有的可觀測(cè)性覆蓋評(píng)估方法復(fù)雜度高以及在激勵(lì)生成過程中不考慮可觀測(cè)性的問題。本發(fā)明首先針對(duì)可觀測(cè)性信息提出一種表征方式,并在此基礎(chǔ)上提出可觀測(cè)性覆蓋分析方法。提出的表征方式與分析方法簡(jiǎn)潔合理,易于實(shí)現(xiàn)。本發(fā)明將該分析方法與語句覆蓋評(píng)估準(zhǔn)則相結(jié)合,提出計(jì)算可觀測(cè)性語句覆蓋率的方法,并將所得到的可觀測(cè)性覆蓋信息用于指導(dǎo)寄存器傳輸級(jí)激勵(lì)生成。本發(fā)明可用于在模擬過程中計(jì)算代碼的可觀測(cè)性語句覆蓋率,進(jìn)而更確切地評(píng)估驗(yàn)證的力度,也可以用于在激勵(lì)生成過程中以可觀測(cè)性覆蓋信息為指導(dǎo),提高激勵(lì)的質(zhì)量。
圖1是VHDL代碼與其對(duì)應(yīng)的EPCT與DDG示意圖。
圖2是可觀測(cè)性分析示意圖。
圖3是寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法流程圖。
具體實(shí)施例方式
圖1是一段VHDL代碼與其對(duì)應(yīng)的EPCT與DDG示意圖,電路RTL設(shè)計(jì)的每一條語句在EPCT中都有其對(duì)應(yīng)的節(jié)點(diǎn),同時(shí)在DDG中都有其對(duì)應(yīng)的數(shù)據(jù)傳輸邊,EPCT與DDG之間的虛線,表示同一條語句所對(duì)應(yīng)的EPCT與DDG的對(duì)應(yīng)關(guān)系。通過該圖可以清晰看出,本發(fā)明在PCT中加入obv域與active域來表征截止到當(dāng)前時(shí)間幀對(duì)應(yīng)語句是否可觀測(cè),以及在當(dāng)前時(shí)間幀對(duì)應(yīng)語句是否被執(zhí)行到。圖1中的第一條語句是條件判斷語句,所以obv域與active域都為空;第二、三條語句obv域與active域取值為0,表示截止到目前時(shí)間幀,這兩條語句還不可觀測(cè),同時(shí)在當(dāng)前時(shí)間幀這兩條語句沒有被執(zhí)行。
圖2中,左邊部分顯示了一段VHDL代碼,中間部分是這段代碼所對(duì)應(yīng)的EPCT結(jié)構(gòu),右邊部分是這段代碼所對(duì)應(yīng)的DDG。
圖3的寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,其具體步驟如下步驟S1,對(duì)電路設(shè)計(jì)的寄存器傳輸級(jí)代碼進(jìn)行抽象,得到抽象結(jié)構(gòu)進(jìn)程控制樹(PCT)與數(shù)據(jù)流向圖(DDG);步驟S2,對(duì)進(jìn)程控制樹(PCT)進(jìn)行擴(kuò)充,加入可觀測(cè)性語句標(biāo)識(shí)域(obv)與語句動(dòng)態(tài)執(zhí)行標(biāo)識(shí)域(active),得到增強(qiáng)型進(jìn)程控制樹(EPCT),并建立控制-觀測(cè)鏈(COC)結(jié)構(gòu)用于分析電路在每一時(shí)間幀動(dòng)態(tài)執(zhí)行過程中的可觀測(cè)性信息;步驟S3,以目前可觀測(cè)性語句的覆蓋分布情況作為啟發(fā)式信息,產(chǎn)生模擬激勵(lì)T;(1)這是一種基于模擬的方法,在模擬的開始階段,不指定模擬激勵(lì)的值,其輸入的所有位均置為X。
(2)當(dāng)執(zhí)行到設(shè)計(jì)的一條語句時(shí),對(duì)其類型進(jìn)行判斷。如果遇到賦產(chǎn)值語句,則執(zhí)行賦值操作。如果遇到條件分支語句,則判斷不同分支下未觀測(cè)語句的分布情況,進(jìn)而決定該算法下一步執(zhí)行方向。假設(shè)EPCTthen分支下未觀測(cè)到的語句的數(shù)目大于EPCTelse分支下未觀測(cè)到的語句的數(shù)目,我們認(rèn)為算法沿EPCTthen分支執(zhí)行,可能會(huì)覆蓋到更多的未觀測(cè)語句。反之,我們認(rèn)為沿EPCTelse分支執(zhí)行,可能會(huì)覆蓋到更多的未觀測(cè)語句。這時(shí),我們提出沿相應(yīng)分支執(zhí)行的請(qǐng)求,進(jìn)行請(qǐng)求響應(yīng)處理。在該過程中,通過對(duì)某些變量值的請(qǐng)求,將指定輸入激勵(lì)全部或者部分位的取值。
(3)對(duì)于經(jīng)過以上操作,沒有被賦值的輸入位,指派一個(gè)隨機(jī)值。這樣,在每一時(shí)間幀,將產(chǎn)生一個(gè)模擬激勵(lì)。
步驟S4,以步驟S3所得到的激勵(lì)T作為輸入對(duì)電路進(jìn)行模擬,得到可觀測(cè)性語句的覆蓋率以及相應(yīng)的分布信息;(1)以激勵(lì)T作為輸入對(duì)電路進(jìn)行模擬,將該時(shí)間幀具體被執(zhí)行的語句所對(duì)應(yīng)的EPCT中節(jié)點(diǎn)的active域的取值置為1;通過EPCT與DDG的對(duì)應(yīng)關(guān)系,判斷DDG中哪些數(shù)據(jù)傳輸是活動(dòng)的;進(jìn)而確定每一個(gè)觀測(cè)點(diǎn)的控制-觀測(cè)鏈;(2)從每一個(gè)觀測(cè)點(diǎn)出發(fā),分析其控制-觀測(cè)鏈,判斷語句的可觀測(cè)性,進(jìn)而刷新其對(duì)應(yīng)的EPCT中節(jié)點(diǎn)的obv域的取值;步驟S5,如果目前所得到的可觀測(cè)性語句的覆蓋率已經(jīng)達(dá)到設(shè)計(jì)驗(yàn)證者的目標(biāo),或者算法運(yùn)行超時(shí),則算法結(jié)束;反之,轉(zhuǎn)至步驟S3。
權(quán)利要求
1.一種寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,其特征在于,通過增強(qiáng)型進(jìn)程控制樹、控制-觀測(cè)鏈等數(shù)據(jù)模型表征可觀測(cè)性信息,在此基礎(chǔ)上,通過對(duì)設(shè)計(jì)電路動(dòng)態(tài)執(zhí)行過程中,每個(gè)觀測(cè)點(diǎn)的控制-觀測(cè)鏈的確定與回退,分析語句與變量的可觀測(cè)性,得到可觀測(cè)性語句覆蓋率,并且利用得到的可觀測(cè)性信息指導(dǎo)激勵(lì)生成。
2.根據(jù)權(quán)利要求1所述的寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,其特征在于,對(duì)進(jìn)程控制樹進(jìn)行擴(kuò)充,來表征每一時(shí)間幀語句的執(zhí)行情況,以及截止到該時(shí)間幀,語句的可觀測(cè)性情況,其具體做法是在進(jìn)程控制樹中加入以下兩個(gè)域(1)obv域可觀測(cè)性語句標(biāo)識(shí)域;該域只針對(duì)于賦值語句,用來標(biāo)識(shí)該語句的執(zhí)行錯(cuò)誤是否可以被驗(yàn)證者觀測(cè)到;(2)active域語句動(dòng)態(tài)執(zhí)行標(biāo)識(shí)域;該域只針對(duì)于賦值語句,采用該域記錄設(shè)計(jì)電路在某一時(shí)間幀中,哪些語句是被執(zhí)行的,該域的值在每一時(shí)間幀都動(dòng)態(tài)刷新。
3.根據(jù)權(quán)利要求1所述的寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,其特征在于,采用控制-觀測(cè)鏈來記錄在具體每一時(shí)間幀擴(kuò)展過程中,變量以及語句的可觀測(cè)性信息,具體來說,一個(gè)變量v,在某一時(shí)間幀t的控制-觀測(cè)鏈就是由所有在時(shí)間幀t,對(duì)v的取值產(chǎn)生影響的賦值關(guān)系所形成的集合。
4.根據(jù)權(quán)利要求1所述的寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,其特征在于,可觀測(cè)性信息分析方法由以下具體步驟組成步驟1向量模擬,這是一個(gè)從輸入到輸出的“正向”過程,該階段的主要工作是刷新增強(qiáng)型進(jìn)程控制樹中active域的值,并判斷在具體某一時(shí)間幀的執(zhí)行當(dāng)中,哪些數(shù)據(jù)遷移是具體執(zhí)行的,進(jìn)而確定在該時(shí)間幀,每一個(gè)觀測(cè)點(diǎn)的控制-觀測(cè)鏈;步驟2可觀測(cè)性分析,這是一個(gè)從觀測(cè)點(diǎn)出發(fā),“反向”分析控制-觀測(cè)鏈,進(jìn)而判斷變量以及語句可觀測(cè)性的過程。
5.根據(jù)權(quán)利要求1所述的寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,其特征在于,采用變量的賦值和引用作為可觀測(cè)性分析的基礎(chǔ),可以很容易地與其它考慮可控制性的覆蓋準(zhǔn)則相結(jié)合,其與語句覆蓋評(píng)估準(zhǔn)則相結(jié)合,得到可觀測(cè)性語句覆蓋率,其具體方法是當(dāng)一組向量模擬結(jié)束時(shí),統(tǒng)計(jì)在增強(qiáng)型進(jìn)程控制樹中,obv域的取值為1的節(jié)點(diǎn)數(shù)目,其與總的賦值語句數(shù)目的比值就是可觀測(cè)性語句覆蓋率。
6.根據(jù)權(quán)利要求1所述的寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,其特征在于,以可觀測(cè)性語句的覆蓋分布情況為啟發(fā)式信息的激勵(lì)生成算法,這是一種基于模擬的算法,在模擬的開始階段,不指定模擬激勵(lì)的值,當(dāng)執(zhí)行到設(shè)計(jì)的一條語句時(shí),對(duì)其類型進(jìn)行判斷如果遇到賦值語句,則執(zhí)行賦值操作;如果遇到條件分支語句,則比較不同分支下的可觀測(cè)性語句覆蓋分布情況,進(jìn)而決定該算法下一步執(zhí)行方向,在該過程中會(huì)指定全部或者部分輸入位的值,最后對(duì)于經(jīng)過以上操作,沒有被賦值的輸入位,指派一個(gè)隨機(jī)值,這樣得到一個(gè)模擬激勵(lì)。
7.根據(jù)權(quán)利要求1所述的寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法,其具體步驟如下步驟S1,抽象電路設(shè)計(jì)的寄存器傳輸級(jí)代碼,得到抽象結(jié)構(gòu)進(jìn)程控制樹與數(shù)據(jù)流向圖;步驟S2,對(duì)進(jìn)程控制樹結(jié)構(gòu)進(jìn)行擴(kuò)充,加入可觀測(cè)性語句標(biāo)識(shí)域與語句動(dòng)態(tài)執(zhí)行標(biāo)識(shí)域,得到增強(qiáng)型進(jìn)程控制樹,并建立控制-觀測(cè)鏈結(jié)構(gòu)用于分析電路在每一時(shí)間幀動(dòng)態(tài)執(zhí)行過程中的可觀測(cè)性信息;步驟S3,以目前可觀測(cè)性語句的覆蓋分布情況作為啟發(fā)式信息產(chǎn)生模擬激勵(lì)T;步驟S4,以步驟S3所得到的激勵(lì)T作為輸入,對(duì)電路進(jìn)行模擬,得到可觀測(cè)性語句覆蓋率以及相應(yīng)的分布信息;步驟S5,如果目前所得到的可觀測(cè)性語句的覆蓋率已經(jīng)達(dá)到設(shè)計(jì)驗(yàn)證者的目標(biāo),或者算法運(yùn)行超時(shí),則算法結(jié)束;反之,轉(zhuǎn)至步驟S3。
全文摘要
本發(fā)明涉及集成電路設(shè)計(jì)驗(yàn)證領(lǐng)域,特別是一種寄存器傳輸級(jí)可觀測(cè)性覆蓋分析與激勵(lì)生成方法。通過增強(qiáng)型進(jìn)程控制樹、控制-觀測(cè)鏈等數(shù)據(jù)模型表征可觀測(cè)性信息,在此基礎(chǔ)上,通過對(duì)設(shè)計(jì)電路動(dòng)態(tài)執(zhí)行過程中,每個(gè)觀測(cè)點(diǎn)的控制-觀測(cè)鏈的確定與回退,分析語句與變量的可觀測(cè)性,得到可觀測(cè)性語句覆蓋率,并且利用得到的可觀測(cè)性信息指導(dǎo)激勵(lì)生成。本發(fā)明解決了目前已有的可觀測(cè)性覆蓋評(píng)估方法復(fù)雜度高以及在激勵(lì)生成過程中不考慮可觀測(cè)性的問題。生成。本發(fā)明可用于在模擬過程中計(jì)算代碼的可觀測(cè)性語句覆蓋率,進(jìn)而更確切地評(píng)估驗(yàn)證的力度,也可以用于在激勵(lì)生成過程中以可觀測(cè)性覆蓋信息為指導(dǎo),提高激勵(lì)的質(zhì)量。
文檔編號(hào)H01L21/82GK1688022SQ20051005634
公開日2005年10月26日 申請(qǐng)日期2005年3月18日 優(yōu)先權(quán)日2005年3月18日
發(fā)明者魯巍, 李曉維 申請(qǐng)人:中國科學(xué)院計(jì)算技術(shù)研究所