專利名稱:時(shí)序電路等價(jià)驗(yàn)證的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于超大規(guī)模集成電路技術(shù)領(lǐng)域,具體涉及一種超大規(guī)模集成電路中時(shí)序電路的等價(jià)驗(yàn)證方法。
背景技術(shù):
超大規(guī)模集成電路發(fā)展到現(xiàn)在,單個(gè)芯片上已經(jīng)能集成幾百萬(wàn)門甚至千萬(wàn)門的電路。設(shè)計(jì)這樣的電路是個(gè)十分復(fù)雜的問(wèn)題,要驗(yàn)證其正確性更是個(gè)十分困難的問(wèn)題。大家知道做一次芯片試制要花費(fèi)幾萬(wàn)至幾十萬(wàn)美元。如果不能驗(yàn)證其100%的正確,只要有一、二個(gè)錯(cuò)誤的芯片,就去進(jìn)行試制,不僅造成經(jīng)濟(jì)上的巨大損失,也帶來(lái)上市時(shí)間的損失。所以完成設(shè)計(jì)后的大規(guī)模集成電路芯片必須驗(yàn)證其正確性,只有做到100%正確,才能進(jìn)行試制性投片。目前驗(yàn)證所需要的時(shí)間大約是設(shè)計(jì)時(shí)間的二倍,其難度可想而知。這里所說(shuō)的驗(yàn)證是功能驗(yàn)證,學(xué)術(shù)上稱之為形式驗(yàn)證。即檢查設(shè)計(jì)的電路功能是否就是原來(lái)設(shè)想要實(shí)現(xiàn)的功能。
時(shí)序電路等價(jià)驗(yàn)證是形式驗(yàn)證領(lǐng)域的瓶頸問(wèn)題之一。電路的等價(jià)驗(yàn)證主要分組合電路的等價(jià)驗(yàn)證和時(shí)序電路的等價(jià)驗(yàn)證。組合電路的等價(jià)驗(yàn)證雖然從理論上也是屬于NP完全問(wèn)題,但是由于在實(shí)際應(yīng)用中,待比較電路存在相似性,組合電路等價(jià)驗(yàn)證的復(fù)雜性可以大大降低。然而時(shí)序電路等價(jià)驗(yàn)證不同,所涉及的難點(diǎn)也比較多。除了待驗(yàn)證電路同步問(wèn)題,多時(shí)鐘問(wèn)題之外,最主要困難在于時(shí)序電路的狀態(tài)問(wèn)題。從理論上說(shuō),時(shí)序電路的狀態(tài)數(shù)目隨著電路的寄存器(存儲(chǔ)單元)數(shù)目增長(zhǎng)而呈指數(shù)增長(zhǎng)。往往狀態(tài)數(shù)目比電路本身的元件數(shù)目要大很多。因此到目前為止,受到可處理狀態(tài)數(shù)目的限制,時(shí)序電路的可驗(yàn)證規(guī)模(指電路的元件數(shù)目)遠(yuǎn)小于組合電路的可驗(yàn)證規(guī)模。近年來(lái),由于驗(yàn)證引擎的快速發(fā)展,如可滿足性問(wèn)題算法的發(fā)展,改變了原先傳統(tǒng)時(shí)序電路的驗(yàn)證方法,使時(shí)序電路的可驗(yàn)證規(guī)模得到了進(jìn)一步的提高。
時(shí)序電路的等價(jià)定義可以有很多種,本發(fā)明所涉及的時(shí)序電路的等價(jià)定義是建立在有限狀態(tài)機(jī)上的所謂等價(jià)初始狀態(tài)對(duì)定義。一個(gè)時(shí)序電路的有限狀態(tài)機(jī)通常用一個(gè)六元組表示M=(I,O,S,s0,δ,λ),其中I和O分別代表輸入和輸出變量集,S是狀態(tài)集合,s0為初始狀態(tài)集,δ和λ則代表狀態(tài)轉(zhuǎn)移關(guān)系和輸出函數(shù)。所謂初始狀態(tài)對(duì)等價(jià),是指對(duì)于待驗(yàn)證的兩個(gè)電路的初始狀態(tài)對(duì)s10和s20,在任意輸入序列π下,輸出始終相等λ1(s1,π)≡λ2(s2,π)。其等價(jià)的推論是,對(duì)于待驗(yàn)證電路的所有初始狀態(tài)可達(dá)的狀態(tài),輸出在任意輸入下始終相等。目前國(guó)際上對(duì)于求解時(shí)序電路等價(jià)驗(yàn)證的算法大致可以分成兩種類型,一是基于狀態(tài)遍歷的算法,另一類是基于狀態(tài)搜索的算法?;跔顟B(tài)遍歷的算法屬于傳統(tǒng)的時(shí)序電路等價(jià)驗(yàn)證算法。其基本原理是利用有限狀態(tài)機(jī)的傳輸函數(shù)不斷計(jì)算從初始狀態(tài)出發(fā)的所有可達(dá)狀態(tài)集合。并將集合用布爾函數(shù)形式加以保存。然后根據(jù)計(jì)算得到的可達(dá)狀態(tài)集合,驗(yàn)證輸出是否相等。然而該算法下,傳輸函數(shù)的建立、下一狀態(tài)集合計(jì)算、狀態(tài)集合的保存等三個(gè)重要步驟上,都會(huì)遇到內(nèi)存爆炸問(wèn)題。這是因?yàn)閭鹘y(tǒng)的三個(gè)步驟所使用的引擎是二分決策圖(BDD,Binary Decision Diagram)。隨著算法的發(fā)展,前兩個(gè)步驟都逐步的使用其他引擎加以代替,但是狀態(tài)集合的保存始終是一個(gè)瓶頸問(wèn)題。而最近由于可滿足性算法引擎的發(fā)展,基于狀態(tài)搜索的算法逐步成為時(shí)序電路等價(jià)驗(yàn)證的主流算法。其基本思想在于,對(duì)于所有使輸出不想等的狀態(tài),時(shí)序地搜索它們是否是初始狀態(tài)可達(dá)的。在算法過(guò)程中,一般不用保留狀態(tài)集合,與基于狀態(tài)遍歷的算法相比,大大降低了算法的空間復(fù)雜性。使用可滿足性算法引擎的基于狀態(tài)搜索的算法首先在模型檢查中提出,用于等價(jià)驗(yàn)證的研究不是很多。考慮到邏輯層等價(jià)驗(yàn)證的特殊性,如何利用邏輯層等價(jià)驗(yàn)證時(shí)電路的相似性降低算法的時(shí)間復(fù)雜性,便能進(jìn)一步的提高時(shí)序電路可驗(yàn)證的規(guī)模。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種可以處理規(guī)模較大的時(shí)序電路等價(jià)驗(yàn)證的方法。
本發(fā)明提出的時(shí)序電路等價(jià)驗(yàn)證方法,是利用可滿足性算法作為引擎問(wèn)題,以時(shí)間幀展開(kāi)的驗(yàn)證算法為框架,結(jié)合了數(shù)學(xué)歸納法、不可滿足子集提取和結(jié)構(gòu)不動(dòng)點(diǎn)這三個(gè)驗(yàn)證技術(shù)。
其步驟如下(1)生成初始結(jié)構(gòu)不動(dòng)點(diǎn)集合。通過(guò)時(shí)序電路的模擬過(guò)程生成,其步驟為(a)將待驗(yàn)證的兩個(gè)電路的輸入對(duì)應(yīng)相連,構(gòu)成所謂的乘積電路(見(jiàn)附圖1(a));(b)在對(duì)應(yīng)輸入上加入隨機(jī)產(chǎn)生的向量;(c)根據(jù)輸入向量,計(jì)算電路各個(gè)內(nèi)部節(jié)點(diǎn)的邏輯值。根據(jù)節(jié)點(diǎn)邏輯值的變化,將具有相同變化的節(jié)點(diǎn)分在一個(gè)組,并刪去只有一個(gè)節(jié)點(diǎn)的組,就構(gòu)成了初始結(jié)構(gòu)不動(dòng)點(diǎn)集合。
(2)幀展開(kāi),將電路的組合部分按寄存器節(jié)點(diǎn)的輸入輸出進(jìn)行時(shí)間幀展開(kāi),其步驟為(a)將電路組合部分向前展開(kāi)一幀,即新展開(kāi)的一幀為第一幀,以前展開(kāi)的第一幀就為第二幀,依次類推。將該幀對(duì)應(yīng)的組合邏輯轉(zhuǎn)換成合取范式加入到可滿足問(wèn)題算法引擎中;(b)將初始狀態(tài)對(duì)應(yīng)的合取范式從原來(lái)的第一幀加到這個(gè)新產(chǎn)生的第一幀中;
(c)將結(jié)構(gòu)不動(dòng)點(diǎn)構(gòu)成的合取范式也同電路組合邏輯一樣復(fù)制一份加入到可滿足問(wèn)題算法引擎中;(d)利用狀態(tài)約束生成算法,生成新的狀態(tài)約束加入到可滿足算法引擎中;(e)在可滿足問(wèn)題算法引擎中,撤銷最后一幀中的結(jié)構(gòu)不動(dòng)點(diǎn)構(gòu)成的合取范式。
(3)結(jié)構(gòu)不動(dòng)點(diǎn)驗(yàn)證,其步驟為(a)將幀展開(kāi)后所形成的合取范式分組,(b)將結(jié)構(gòu)不動(dòng)點(diǎn)中取出一對(duì)需要驗(yàn)證的等價(jià)點(diǎn),構(gòu)成合取范式,并賦予臨時(shí)的組別,加入到可滿足問(wèn)題算法引擎中;(c)調(diào)用可滿足問(wèn)題算法引擎;(d)根據(jù)可滿足問(wèn)題算法引擎的結(jié)果,區(qū)分驗(yàn)證的節(jié)點(diǎn)是否需要從結(jié)構(gòu)不動(dòng)點(diǎn)中刪除;(e)穿插在上述過(guò)程中的初始狀態(tài)無(wú)關(guān)節(jié)點(diǎn)對(duì)的分離。
本發(fā)明所采用的數(shù)學(xué)歸納法、不可滿足子集提取和結(jié)構(gòu)不動(dòng)點(diǎn)技術(shù),都體現(xiàn)在對(duì)每個(gè)結(jié)構(gòu)不動(dòng)點(diǎn)中的節(jié)點(diǎn)驗(yàn)證的過(guò)程中。當(dāng)所有的節(jié)點(diǎn)都符合初始狀態(tài)無(wú)關(guān)的條件后,時(shí)序電路的驗(yàn)證結(jié)果也就產(chǎn)生了。即當(dāng)所有的輸出配對(duì)點(diǎn)都在結(jié)構(gòu)不動(dòng)點(diǎn)中時(shí),驗(yàn)證表明電路是等價(jià)的。如果有輸出配對(duì)點(diǎn)不在結(jié)構(gòu)不動(dòng)點(diǎn)中,則表明電路是不等價(jià)的。同時(shí)可以根據(jù)可滿足的結(jié)果,給出不等價(jià)的一組賦值,這表明的使電路不等價(jià)的輸入輸出及和寄存器的關(guān)系。
圖1為時(shí)間幀展開(kāi)示意圖。其中圖1(a)為待驗(yàn)電路構(gòu)成的乘積電路示意圖,圖1(b)為乘積電路組合部分按時(shí)間幀展開(kāi)圖示。
圖2為兩種方法隨幀展開(kāi)長(zhǎng)度的運(yùn)行時(shí)間比較。
具體實(shí)施例方式
下面進(jìn)一步描述本發(fā)明的實(shí)施方式本發(fā)明主要包含有如下一些過(guò)程1、初始結(jié)構(gòu)不動(dòng)點(diǎn)生成過(guò)程要驗(yàn)證電路輸出是否時(shí)序等價(jià),必須利用電路內(nèi)部的相似性。就是所謂的結(jié)構(gòu)不動(dòng)點(diǎn),也稱為電路內(nèi)部的等價(jià)點(diǎn)。所以驗(yàn)證一開(kāi)始,必須先生成結(jié)構(gòu)不動(dòng)點(diǎn)的初始集合,以便在后面的驗(yàn)證過(guò)程中逐步刪除不等價(jià)的節(jié)點(diǎn),直至最后驗(yàn)證成功。這個(gè)初始集合主要是通過(guò)時(shí)序電路的模擬過(guò)程獲得。又可以分成以下幾個(gè)步驟(a)將待驗(yàn)證的兩個(gè)電路的輸入對(duì)應(yīng)相連,構(gòu)成所謂的乘積電路(見(jiàn)附圖1(a));(b)在對(duì)應(yīng)輸入上加入隨機(jī)產(chǎn)生的向量;
(c)根據(jù)輸入向量,計(jì)算電路各個(gè)內(nèi)部節(jié)點(diǎn)的邏輯值。根據(jù)節(jié)點(diǎn)邏輯值的變化,將具有相同變化的節(jié)點(diǎn)分在一個(gè)組,并刪去只有一個(gè)節(jié)點(diǎn)的組,就構(gòu)成了初始結(jié)構(gòu)不動(dòng)點(diǎn)集合。
2、幀展開(kāi)過(guò)程在驗(yàn)證過(guò)程中,電路的組合部分根據(jù)需要,必須按寄存器節(jié)點(diǎn)的輸入輸出進(jìn)行時(shí)間幀的展開(kāi)。電路展開(kāi)的示意圖可見(jiàn)附圖1(b)。這中間包含的步驟有(a)將電路組合部分向前展開(kāi)一幀,即新展開(kāi)的一幀為第一幀,以前展開(kāi)的第一幀就為第二幀,依次類推。將該幀對(duì)應(yīng)的組合邏輯轉(zhuǎn)換成合取范式加入到可滿足問(wèn)題算法引擎中;(b)將初始狀態(tài)對(duì)應(yīng)的合取范式從原來(lái)的第一幀加到這個(gè)新產(chǎn)生的第一幀中;(c)將結(jié)構(gòu)不動(dòng)點(diǎn)構(gòu)成的合取范式也同電路組合邏輯一樣復(fù)制一份加入到可滿足問(wèn)題算法引擎中;(d)利用準(zhǔn)狀態(tài)約束生成算法,生成新的狀態(tài)約束加入到可滿足算法引擎中;(e)在可滿足問(wèn)題算法引擎中,撤銷最后一幀中的結(jié)構(gòu)不動(dòng)點(diǎn)構(gòu)成的合取范式。
3、結(jié)構(gòu)不動(dòng)點(diǎn)驗(yàn)證過(guò)程幀展開(kāi)完畢后,就需要對(duì)結(jié)構(gòu)不動(dòng)點(diǎn)中的節(jié)點(diǎn)進(jìn)行新一輪的驗(yàn)證。該過(guò)程是本方法中的重點(diǎn),它主要步驟為(a)將幀展開(kāi)后所形成的合取范式分組。具體可作如下分組由每個(gè)幀的組合邏輯轉(zhuǎn)換形成的可滿足性問(wèn)題子句分別對(duì)應(yīng)成組;每個(gè)幀中(除了新展開(kāi)的幀)的等價(jià)點(diǎn)對(duì)轉(zhuǎn)換形成的子句分別對(duì)應(yīng)成組;初始狀態(tài)轉(zhuǎn)換形成的子句對(duì)應(yīng)成組;獨(dú)立狀態(tài)約束轉(zhuǎn)換形成的子句對(duì)應(yīng)成組,并且這個(gè)組不參加不可滿足子集的提取;(b)將結(jié)構(gòu)不動(dòng)點(diǎn)中取出一對(duì)需要驗(yàn)證的等價(jià)點(diǎn),構(gòu)成合取范式,并賦于臨時(shí)的組別,加入到可滿足問(wèn)題算法引擎中;(c)調(diào)用可滿足問(wèn)題算法引擎。本發(fā)明可采用對(duì)原可滿足問(wèn)題算法的修改算法,該算法的修改之處在于簡(jiǎn)化它的提取不可滿足子集的功能。即①修改了其中的變量的決策順序,將變量決策順序按其在電路中的幀數(shù)來(lái)定。幀數(shù)高的變量?jī)?yōu)先選擇,同幀數(shù)的變量按原來(lái)引擎的策略定。②并根據(jù)子句組別記錄學(xué)習(xí)子句的依賴關(guān)系。這樣,引擎計(jì)算得到的不可滿足子集是以組別形式給出的。
(d)根據(jù)可滿足性問(wèn)題算法引擎的結(jié)果,區(qū)分驗(yàn)證的節(jié)點(diǎn)是否需要從結(jié)構(gòu)不動(dòng)點(diǎn)中刪除。驗(yàn)證的節(jié)點(diǎn)對(duì)可以分成三類①結(jié)果是可滿足的。這表示驗(yàn)證的節(jié)點(diǎn)對(duì)是不等價(jià)的,必須將他們從結(jié)構(gòu)不動(dòng)點(diǎn)中分離;②結(jié)果是不可滿足的,但不可滿足子集包含初始狀態(tài)子句組。稱之為初始狀態(tài)相關(guān)節(jié)點(diǎn)對(duì)。它表示在當(dāng)前展開(kāi)的幀數(shù)下,節(jié)點(diǎn)對(duì)是等價(jià)的;③結(jié)果是不可滿足的,且不可滿足子集不包含初始狀態(tài)子句組。稱之為初始狀態(tài)無(wú)關(guān)節(jié)點(diǎn)對(duì)。它表示在當(dāng)前結(jié)構(gòu)不動(dòng)點(diǎn)約束下,節(jié)點(diǎn)對(duì)是時(shí)序等價(jià)的。
(e)最后一個(gè)是穿插在上述過(guò)程中的初始狀態(tài)無(wú)關(guān)節(jié)點(diǎn)對(duì)的分離過(guò)程。具體來(lái)說(shuō)就是將初始狀態(tài)無(wú)關(guān)節(jié)點(diǎn)對(duì)從驗(yàn)證節(jié)點(diǎn)對(duì)中分離開(kāi)來(lái),在以后幀展開(kāi)過(guò)程中先暫時(shí)不驗(yàn)證這些節(jié)點(diǎn)對(duì),直到結(jié)構(gòu)不動(dòng)點(diǎn)中所有節(jié)點(diǎn)對(duì)都是初始狀態(tài)無(wú)關(guān)節(jié)點(diǎn)對(duì)。然后對(duì)這些節(jié)點(diǎn)對(duì)再進(jìn)行驗(yàn)證。
4、準(zhǔn)動(dòng)態(tài)約束生成過(guò)程上述過(guò)程2中提到動(dòng)態(tài)約束生成算法,在本發(fā)明中可采用準(zhǔn)動(dòng)態(tài)約束生成算法,以進(jìn)一步提高驗(yàn)證速度,具體來(lái)說(shuō)就是根據(jù)寄存器節(jié)點(diǎn)的配對(duì)情形逐步加入約束子句。即對(duì)于暫時(shí)認(rèn)為等價(jià)的寄存器,只選擇其中的一個(gè)寄存器的節(jié)點(diǎn)加入到唯一狀態(tài)約束中來(lái)。比如((latch1,latch2,latch3)∈Q),表示這三個(gè)寄存器是暫時(shí)認(rèn)為等價(jià)的。那么只需要選擇其中一個(gè)寄存器的節(jié)點(diǎn)(如latch1)加入到唯一狀態(tài)約束中就能滿足要求。隨著在驗(yàn)證過(guò)程中結(jié)構(gòu)不動(dòng)點(diǎn)的逐漸細(xì)化,如果有寄存器節(jié)點(diǎn)從結(jié)構(gòu)不動(dòng)點(diǎn)中分出(如(latch1,latch3) Q),這時(shí)再將相關(guān)的寄存器節(jié)點(diǎn)(latch3)增加到唯一狀態(tài)的約束中來(lái)。
獨(dú)立狀態(tài)約束是幀展開(kāi)算法中不可少的約束。但是由該約束所形成的可滿足性問(wèn)題的子句數(shù)目隨著展開(kāi)幀數(shù)的增加而平方增長(zhǎng)。其增長(zhǎng)的速度和所形成子句的規(guī)模都影響了可滿足性算法引擎的驗(yàn)證速度。采取準(zhǔn)動(dòng)態(tài)約束策略后,雖然約束本身還是平方增長(zhǎng)的,但是由于節(jié)點(diǎn)數(shù)目的降低,也可以大大減少所形成的子句數(shù)目。對(duì)于一般的驗(yàn)證環(huán)境,如果寄存器配對(duì)確實(shí)存在,則所形成的子句規(guī)模比不采用該策略時(shí)要小一倍以上。
根據(jù)上述描述,本發(fā)明方法的算法偽代碼如下,我們將算法用C編程語(yǔ)言實(shí)現(xiàn),并結(jié)合在時(shí)序電路驗(yàn)證工具VIS上。
算法改進(jìn)的基于時(shí)間幀展開(kāi)的時(shí)序電路等價(jià)驗(yàn)證算法輸入待比較電路C1,C2;Sat_solver輸出電路是否時(shí)序等價(jià);{/*嚴(yán)利用模擬得到初始的匹配點(diǎn)集合*/1 Q0=SequentialSimulation(C1,C2);Qfix=φ;2 將初始狀態(tài)加入SAT;3 k=1;4 while(true)(5將電路擴(kuò)展到k幀加入SAT;6將CNF(Qk)和CNF(Qfix)放入各幀中;
7 根據(jù)措施二以及Qk和Qfix選擇寄存器節(jié)點(diǎn),產(chǎn)生唯一狀態(tài)約束并加入SAT;8 foreach(x1,x2)∈Qk(9Qtmp=φ;10 DumpToSAT(Sat_Solver,CNF(x1≠x2),2*k+2);11 SAT_SOLVE(Sat_Solver);12 if初始狀態(tài)無(wú)關(guān){/*措施三,初始狀態(tài)無(wú)關(guān)匹配點(diǎn)分離*/13 Qtmp=Qtmp∪{(x1,x2)};}14 else if可滿足{15Qk=Qk-{(x1,x2)};}}16 if Qk有變化continue;17 Qfix=Qfix∪Qtmp;18 Qk+1=Qk-Qfix;19----if((oc1k,oc2k)∉Qk]]>或(oc1k,oc2k)∉Qfix)return DIFF;]]>20 if Qk+1=φbreak;21 k++;}22----if((oc1k,oc2k)∉Qfix)return DIFF;]]>23return EQUAL;}對(duì)于評(píng)價(jià)算法的效果,除了選擇國(guó)際上通用的測(cè)試實(shí)例集合(ISCAS89)外,還需要區(qū)別待驗(yàn)證電路之間的關(guān)系。一般是將原電路做一定的優(yōu)化,將所得到的優(yōu)化后電路與原電路進(jìn)行等價(jià)驗(yàn)證以顯示算法效果。然而優(yōu)化有很多種類。為了體現(xiàn)時(shí)序電路的優(yōu)化特點(diǎn),我們使用綜合優(yōu)化工具SIS中的兩個(gè)命令對(duì)電路進(jìn)行時(shí)序優(yōu)化。這樣優(yōu)化,即使將兩個(gè)電路的寄存器按命名對(duì)應(yīng)連接,也不能使用組合等價(jià)驗(yàn)證工具進(jìn)行驗(yàn)證。本發(fā)明提出的方法記做FESD和FESDI。由于沒(méi)有可共對(duì)比的公開(kāi)程序,我們根據(jù)數(shù)學(xué)歸納法思想同樣實(shí)現(xiàn)了等價(jià)驗(yàn)證算法共對(duì)比。運(yùn)用的典型算例和運(yùn)行結(jié)果見(jiàn)下表。
附圖2是對(duì)于其中一個(gè)例子進(jìn)行驗(yàn)證時(shí)隨著幀展開(kāi)的數(shù)目,運(yùn)行時(shí)間的變化。由此本發(fā)明的算法運(yùn)行時(shí)間增長(zhǎng)比基于數(shù)學(xué)歸納法的算法要緩和得多。
因此,使用本發(fā)明方法,在驗(yàn)證邏輯層的時(shí)序電路等價(jià)問(wèn)題時(shí)效率大大提高了。
權(quán)利要求
1.一種時(shí)序電路等價(jià)驗(yàn)證的方法,其特征在于具體步驟如下(1)生成初始結(jié)構(gòu)不動(dòng)點(diǎn)集合,通過(guò)時(shí)序電路的模擬過(guò)程生成,其步驟為(a)將待驗(yàn)證的兩個(gè)電路的輸入對(duì)應(yīng)相連,構(gòu)成所謂的乘積電路;(b)在對(duì)應(yīng)輸入上加入隨機(jī)產(chǎn)生的向量;(c)根據(jù)輸入向量,計(jì)算電路各個(gè)內(nèi)部節(jié)點(diǎn)的邏輯值,根據(jù)節(jié)點(diǎn)邏輯值的變化,將具有相同變化的節(jié)點(diǎn)分在一個(gè)組,并刪去只有一個(gè)節(jié)點(diǎn)的組,就構(gòu)成了初始結(jié)構(gòu)不動(dòng)點(diǎn)集合。(2)幀展開(kāi),將電路的組合部分按寄存器節(jié)點(diǎn)的輸入輸出進(jìn)行時(shí)間幀展開(kāi),其步驟為(a)將電路組合部分向前展開(kāi)一幀,即新展開(kāi)的一幀為第一幀,以前展開(kāi)的第一幀就為第二幀,依次類推;將該幀對(duì)應(yīng)的組合邏輯轉(zhuǎn)換成合取范式加入到可滿足問(wèn)題算法引擎中;(b)將初始狀態(tài)對(duì)應(yīng)的合取范式從原來(lái)的第一幀加到這個(gè)新產(chǎn)生的第一幀中;(c)將結(jié)構(gòu)不動(dòng)點(diǎn)構(gòu)成的合取范式也同電路組合邏輯一樣復(fù)制一份加入到可滿足問(wèn)題算法引擎中;(d)利用狀態(tài)約束生成算法,生成新的狀態(tài)約束加入到可滿足算法引擎中;(e)在可滿足問(wèn)題算法引擎中,撤銷最后一幀中的結(jié)構(gòu)不動(dòng)點(diǎn)構(gòu)成的合取范式;(3)結(jié)構(gòu)不動(dòng)點(diǎn)驗(yàn)證,其步驟為(a)將幀展開(kāi)后所形成的合取范式分組,(b)將結(jié)構(gòu)不動(dòng)點(diǎn)中取出一對(duì)需要驗(yàn)證的等價(jià)點(diǎn),構(gòu)成合取范式,并賦予臨時(shí)的組別,加入到可滿足問(wèn)題算法引擎中;(c)調(diào)用可滿足問(wèn)題算法引擎;(d)根據(jù)可滿足問(wèn)題算法引擎的結(jié)果,區(qū)分驗(yàn)證的節(jié)點(diǎn)是否需要從結(jié)構(gòu)不動(dòng)點(diǎn)中刪除;(e)穿插在上述過(guò)程中的初始狀態(tài)無(wú)關(guān)節(jié)點(diǎn)對(duì)的分離。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述可滿足問(wèn)題算法引擎采用原可滿足問(wèn)題算法的改進(jìn)算法(1)將變量決策順序按其在電路中的幀數(shù)來(lái)定,幀數(shù)高的變量?jī)?yōu)先選擇,同幀數(shù)的變量按原來(lái)引擎的策略定;(2)根據(jù)子句組別記錄學(xué)習(xí)子句的依賴關(guān)系。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于在結(jié)構(gòu)不動(dòng)點(diǎn)驗(yàn)證過(guò)程中,對(duì)驗(yàn)證的節(jié)點(diǎn)對(duì)分為3類①結(jié)果是可滿足的,這表示驗(yàn)證的節(jié)點(diǎn)對(duì)是不等價(jià)的,必須將他們從結(jié)構(gòu)不動(dòng)點(diǎn)中分離;②結(jié)果是不可滿足的,但不可滿足子集包含初始狀態(tài)子句組,稱之為初始狀態(tài)相關(guān)節(jié)點(diǎn)對(duì),它表示在當(dāng)前展開(kāi)的幀數(shù)下,節(jié)點(diǎn)對(duì)是等價(jià)的;③結(jié)果是不可滿足的,且不可滿足子集不包含初始狀態(tài)子句組,稱之為初始狀態(tài)無(wú)關(guān)節(jié)點(diǎn)對(duì),它表示在當(dāng)前結(jié)構(gòu)不動(dòng)點(diǎn)約束下,節(jié)點(diǎn)對(duì)是時(shí)序等價(jià)的。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于所述的幀展開(kāi)過(guò)程中的動(dòng)態(tài)約束生成算法采用準(zhǔn)動(dòng)態(tài)約束生成算法根據(jù)寄存器節(jié)點(diǎn)的配對(duì)情形逐步加入約束子句,即對(duì)于暫時(shí)認(rèn)為是等價(jià)的寄存器,只選擇其中一個(gè)寄存器的節(jié)點(diǎn)加入到唯一狀態(tài)約束中來(lái);隨著驗(yàn)證過(guò)程中結(jié)構(gòu)不動(dòng)點(diǎn)的逐漸細(xì)化,如果有寄存器節(jié)點(diǎn)從結(jié)構(gòu)不動(dòng)點(diǎn)中分離出,這時(shí)再將相關(guān)的寄存器節(jié)點(diǎn)增加到唯一狀態(tài)的約束中來(lái)。
全文摘要
本發(fā)明屬于超大規(guī)模集成電路技術(shù)領(lǐng)域,具體為一種時(shí)序電路等價(jià)驗(yàn)證的方法。本發(fā)明利用可滿足問(wèn)題算法作為引擎,以時(shí)間幀展開(kāi)的驗(yàn)證算法為框架,結(jié)合了數(shù)學(xué)歸納法、不可滿足子集提取和結(jié)構(gòu)不動(dòng)點(diǎn)等驗(yàn)證技術(shù)。步驟包括生成初始結(jié)構(gòu)不動(dòng)點(diǎn)集合、對(duì)電路組合部分按時(shí)間幀展開(kāi)、對(duì)結(jié)構(gòu)不動(dòng)點(diǎn)的驗(yàn)證等。其中,幀展開(kāi)過(guò)程中采用了準(zhǔn)動(dòng)態(tài)約束生成算法,驗(yàn)證過(guò)程中采用了改進(jìn)的可滿足問(wèn)題算法,大大提高了時(shí)序電路等價(jià)驗(yàn)證的效率。
文檔編號(hào)G06F17/50GK1710567SQ20051002760
公開(kāi)日2005年12月21日 申請(qǐng)日期2005年7月7日 優(yōu)先權(quán)日2005年7月7日
發(fā)明者丁敏, 唐璞山 申請(qǐng)人:復(fù)旦大學(xué)