專利名稱::使用形式技術(shù)的設(shè)計(jì)驗(yàn)證的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及設(shè)計(jì)驗(yàn)證,更確切地說,涉及形式分析驗(yàn)證技術(shù)。
背景技術(shù):
:電路設(shè)計(jì)的驗(yàn)證,包括在物理實(shí)現(xiàn)該設(shè)計(jì)(如制成一個集成電路)之前對該電路設(shè)計(jì)進(jìn)行測試。通過這種方式,設(shè)計(jì)錯誤(即bugs)才可被識別出來,從而可讓設(shè)計(jì)者避免在制作時的損失。隨著電路設(shè)計(jì)的日趨復(fù)雜,要創(chuàng)制一個有效的驗(yàn)證工具也越來越困難。例如,傳統(tǒng)的芯片系統(tǒng)中包括相對較大、快速且復(fù)雜的集成存儲器、芯片內(nèi)的總線、以及復(fù)雜的仲裁器。而且,這些設(shè)計(jì)通常還包括一些可能相互依存的并行進(jìn)程。傳統(tǒng)上是用基于仿真的工具來驗(yàn)證設(shè)計(jì)。這些工具通常是通過對設(shè)計(jì)的某些一部分隨機(jī)地施加測試,以驗(yàn)證整個設(shè)計(jì)。然而,基于仿真的驗(yàn)證理論經(jīng)常不能發(fā)現(xiàn)那些死角(corner-case)錯誤。所述死角錯誤的一個例子中包括當(dāng)一些特定的情況同時出現(xiàn)時才會發(fā)生的錯誤,而這些情況的發(fā)生頻率相對較低。為驗(yàn)證電路設(shè)計(jì),目前已有多種可用的形式分析技術(shù)(形式技術(shù))。形式技術(shù)背后的概念就是要徹底地找出設(shè)計(jì)中的錯誤。例如,所述形式技術(shù)中可包括模型檢查、定理證明及符號模擬。形式技術(shù)的應(yīng)用,包括使用符號模型檢查器驗(yàn)證高速緩存相干協(xié)議,以及驗(yàn)證普遍使用的設(shè)計(jì)結(jié)構(gòu),例如運(yùn)算電路、流水線、總線仲裁器、以及Tomasulo算法等。最近,形式技術(shù)已被用于更廣的設(shè)計(jì)范圍。例如,B.Bentley的“驗(yàn)證英特爾奔騰4微處理器”(發(fā)表于2001年的設(shè)計(jì)自動化會議(DesignAutomationConference)第244-248頁)中,討論了使用形式技術(shù)在奔騰4微處理器中發(fā)現(xiàn)的100多個“高質(zhì)量”的邏輯錯誤。然而,大多的形式技術(shù)不能被有效用于相對較大的工業(yè)設(shè)計(jì)。某些技術(shù)被提出來解決這一問題,包括符號算法、SAT程序、以及抽象技術(shù),但是解決這些問題仍存在一個持續(xù)的要求。
發(fā)明內(nèi)容形式技術(shù)被用于驗(yàn)證電路設(shè)計(jì)等工業(yè)設(shè)計(jì)問題中。這些技術(shù)可包括作出驗(yàn)證決定,定義屬性以驗(yàn)證一個設(shè)計(jì),為所述設(shè)計(jì)創(chuàng)建一個抽象體和一個模型檢查。在一些實(shí)施方式中,所述驗(yàn)證還可延伸至性能分析和/或驗(yàn)證順序操作。在一些實(shí)施方式中,會生成一個設(shè)計(jì)的抽象體(即簡化模型),并將該抽象體應(yīng)用于模型檢查過程中。例如,基于典型的模型檢查,可利用歸納技術(shù)避免當(dāng)環(huán)境模型變得更復(fù)雜時而產(chǎn)生的狀態(tài)爆炸。因此,可以更加有效地執(zhí)行模型檢查。在一些實(shí)施方式中,會針對“高質(zhì)量”的錯誤提出一個定義,并基于該定義得出分析結(jié)果。這樣,就可將形式技術(shù)的結(jié)果與其它驗(yàn)證技術(shù)的結(jié)果進(jìn)行比較。在一些實(shí)施方式中,所述驗(yàn)證還涉及到識別性能界限。所述識別性能界限可包括修改屬性并將修改后的屬性應(yīng)用到提象體以識別時間界限。單獨(dú)地通過傳統(tǒng)形式技術(shù)或仿真方法,是不太可能實(shí)現(xiàn)的這種性能分析的。在一些實(shí)施方式中,所述驗(yàn)證還涉及分析順序操作的設(shè)計(jì)性能。這種分析包括識別在模型檢查過程中會使用的內(nèi)部寄存器的初始狀態(tài)及剩余狀態(tài)。在一些實(shí)施方式中,會用一個符號模型檢查器來驗(yàn)證集成電路(即“芯片”)中的電路。符號模型檢查器,例如一個CandenceSMV,可用來驗(yàn)證一個具有動態(tài)屬性及較大并行量的電路設(shè)計(jì),如千兆以太網(wǎng)芯片中的以太網(wǎng)開關(guān)邏輯塊。這里,可以對開關(guān)塊的某些部分進(jìn)行提象,以減小被驗(yàn)證模型的復(fù)雜度。另外,也可用這個方法來驗(yàn)證開關(guān)延遲等性能。與現(xiàn)有技術(shù)相比,本發(fā)明所述的驗(yàn)證技術(shù)可用來驗(yàn)證可能具有基本不同的驗(yàn)證問題的網(wǎng)絡(luò)芯片,如缺少準(zhǔn)確規(guī)格的網(wǎng)絡(luò)芯片。這樣,本發(fā)明所述的驗(yàn)證技術(shù)能提供傳統(tǒng)驗(yàn)證技術(shù)所得不到的驗(yàn)證結(jié)果。例如,本發(fā)明教導(dǎo)的方法可實(shí)施于一個初始決定,這個初始決定的首要目標(biāo)是檢索設(shè)計(jì)錯誤而不是完全地驗(yàn)證整個設(shè)計(jì)。通過這種方法,相對現(xiàn)有的驗(yàn)證技術(shù)而言,可以更快地識別出錯誤。而且,使用這些技術(shù)還可發(fā)現(xiàn)傳統(tǒng)技術(shù)所不能發(fā)現(xiàn)的一此錯誤。本發(fā)明一方面提供一種驗(yàn)證電路設(shè)計(jì)的方法,包括以下步驟為設(shè)計(jì)電路生成一個簡化模型;對所述簡化模型進(jìn)行模型檢查;以及對所述簡化模型進(jìn)行性能分析,以驗(yàn)證所述電路設(shè)計(jì)。優(yōu)選地,所進(jìn)行的性能分析中包括修改至少一個屬性的步驟。優(yōu)選地,所進(jìn)行的性能分析中包括將所述被修改的至少一個屬性應(yīng)用到所述簡化模型的步驟。優(yōu)選地,所進(jìn)行的性能分析中包括識別至少一個性能界限的步驟。優(yōu)選地,所進(jìn)行的性能分析中包括識別至少一個最壞案例情況的步驟。優(yōu)選地,本方法包括產(chǎn)生至少一個性能分析結(jié)果,并將所述至少一個性能分析結(jié)果應(yīng)用到電路設(shè)計(jì)中以驗(yàn)證電路設(shè)計(jì)的步驟。優(yōu)選地,本方法還包括識別至少一個與學(xué)習(xí)操作相關(guān)聯(lián)的界限的步驟。優(yōu)選地,本方法還包括識別至少一個與查找操作相關(guān)聯(lián)的界限的步驟。優(yōu)選地,本方法還包括識別至少一個與時效操作相關(guān)聯(lián)的界限的步驟。優(yōu)選地,所述生成一個簡化模型的步驟中包括對電路設(shè)計(jì)應(yīng)用歸納法的步驟。優(yōu)選地,所述生成一個簡化模型的步驟中包括縮減表格尺寸的步驟。優(yōu)選地,所述生成一個簡化模型的步驟中包括縮減地址長度的步驟。優(yōu)選地,所述生成一個簡化模型的步驟中包括縮減端口數(shù)量的步驟。優(yōu)選地,所述生成一個簡化模型的步驟中包括忽略順序操作的步驟。優(yōu)選地,所述模型檢查步驟中包括生成與設(shè)計(jì)電路相關(guān)的屬性的步驟。優(yōu)選地,每一個屬性用來驗(yàn)證一個獨(dú)立的RTL函數(shù)。另一方面,本發(fā)明還提供一種驗(yàn)證電路設(shè)計(jì)的方法,包括以下步驟生成一個電路設(shè)計(jì)的簡化模型;對所述簡化模型進(jìn)行模型檢查;以及為電路設(shè)計(jì)的一個順序操作產(chǎn)生至少一個模型;以及將所述至少一個模型應(yīng)用到所述簡化模型,以驗(yàn)證所述電路設(shè)計(jì)。優(yōu)選地,所述生成至少一個模型的步驟中包括定義一套內(nèi)部狀態(tài)的步驟其中包括初始狀態(tài)及剩余狀態(tài)。優(yōu)選地,所述生成至少一個模型的步驟中包括為所述內(nèi)部狀態(tài)定義一個子集的步驟。優(yōu)選地,所述生成至少一個模型的步驟中包括在內(nèi)部寄存器中定義所述子集的映射的步驟。優(yōu)選地,所述生成至少一個模型的步驟中包括將所述子集應(yīng)用到所述簡化模型的步驟。優(yōu)選地,所述順序操作包括一個請求。優(yōu)選地,所述生成一個簡化模型的步驟中包括將歸納法應(yīng)用于電路設(shè)計(jì)的步驟。優(yōu)選地,所述生成一個簡化模型的步驟中包括縮減表格尺寸的步驟。優(yōu)選地,所述生成一個簡化模型的步驟中包括縮減地址長度的步驟。優(yōu)選地,所述生成一個簡化模型的步驟中包括縮減端口數(shù)量的步驟。優(yōu)選地,所述生成一個簡化模型的步驟中包括忽略順序操作的步驟。優(yōu)選地,所述模型檢查步驟中包括生成與設(shè)計(jì)電路相關(guān)的屬性的步驟。優(yōu)選地,每一個屬性用來驗(yàn)證一個獨(dú)立的RTL函數(shù)。下面將結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步說明,附圖中圖1是本發(fā)明驗(yàn)證操作的一種實(shí)施方式的流程圖;圖2是本發(fā)明性能分析操作的一種實(shí)施方式的流程圖;圖3是本發(fā)明順序操作分析的一種實(shí)施方式的流程圖;圖4是一個電路結(jié)構(gòu)的簡化框圖;圖5是本發(fā)明中所激起的錯誤示意圖;圖6是本發(fā)明中的錯誤可見度示意圖;圖7是本發(fā)明性能分析的簡化示意圖。具體實(shí)施例方式下次參考示例性實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述。顯然,本發(fā)明的實(shí)施形式是多種多樣的,不能以所揭示的實(shí)施方式來限定本發(fā)明。因此,以下所描述的特定結(jié)構(gòu)和功能僅作參考,而不能用來限定本發(fā)明的范圍。圖1為本發(fā)明一個實(shí)施例中設(shè)計(jì)驗(yàn)證操作的流程圖。該圖1所示的實(shí)施例中,這些操作被實(shí)施于一個電路設(shè)計(jì)。例如,可用一個寄存器傳輸滯后(“RTL”)來定義一個電路設(shè)計(jì)。當(dāng)然,所述的操作也可用于其它類型的電路設(shè)計(jì)中。如圖1所示,在步驟102會為電路設(shè)計(jì)定義一個模型。其中可能包括識別設(shè)計(jì)的特性及識別會影響驗(yàn)證結(jié)論的問題。例如,一個給定設(shè)計(jì)中可能包括各種需將其特征化以驗(yàn)證該設(shè)計(jì)的寄存器、表格及邏輯操作。另外,會作出與環(huán)境模型有關(guān)的決定,以增加驗(yàn)證過程的效率。例如,可能會作出一個只驗(yàn)證并行操作而不驗(yàn)證順序操作的決定。在步驟104中,會定義各種屬性以驗(yàn)證設(shè)計(jì)。該過程中包括基于一個廣泛的設(shè)計(jì)知識,定義各種條件下的內(nèi)部寄存器狀態(tài)。例如,如果一個電路按需要運(yùn)行,該電路的設(shè)計(jì)應(yīng)可使得在執(zhí)行了一個給定操作后,寄存器中的值被限定到一個特定范圍。如果寄存器內(nèi)沒有所述期望數(shù)值,則會在模型檢查時產(chǎn)生一個錯誤條件(及一個相應(yīng)的“軌跡”)。在某些實(shí)施方式中,可以利用計(jì)算樹邏輯(“CTL”)規(guī)范語言來書寫設(shè)計(jì)規(guī)格,從而定義所述屬性。在某些實(shí)施方式中,會用每一個屬性來驗(yàn)證設(shè)計(jì)的一個不同屬性。例如,在一個以RTL定義的設(shè)計(jì)中,可用每一個屬性來驗(yàn)證不同的RTL函數(shù)。某些應(yīng)用中,要求將屬性定義到一個相對較高的等級。這樣,這些屬性不會完全基于設(shè)計(jì)而定義。因此,這些屬性中不會含有與設(shè)計(jì)相同的那些錯誤。在某些情況下,可能沒有一個完整的設(shè)計(jì)規(guī)格。這時,就要求定義盡可能多的屬性,以最大可能地驗(yàn)證所述設(shè)計(jì)。在步驟106中,會將提象技術(shù)應(yīng)用于模型,以減小模型的尺寸。例如,可以對表格使用歸納法,如果一個驗(yàn)證的屬性與表格的子集不符,則這個屬性必定與整個表格不符。這樣,由于模型檢查可在表格的子集中執(zhí)行而不是在整個表格上執(zhí)行,因此,在模型檢查階段所要求的操作次數(shù)會大大地減少。通過使用提象而可以減少的設(shè)計(jì)方面包括表格的大小,表格中的入口數(shù)量,地址的長度,端口數(shù)量。可以理解的是,本發(fā)明抽象技術(shù)不僅局限于上述例子,還可應(yīng)用于設(shè)計(jì)不同方面。這種簡化模型可以通過例如對RTL設(shè)計(jì)重新編碼來生成,可使用如ePERL或VPP這樣的工具來對RTL設(shè)計(jì)重新編碼。在步驟108中,對簡化模型執(zhí)行模型檢查。所述模型檢查中,可執(zhí)行一個狀態(tài)橫斷以驗(yàn)證該設(shè)計(jì)。通常,不同操作是在不同的時間運(yùn)行,并順序按不同的重復(fù)度運(yùn)行,以測試設(shè)計(jì)的不同方面。如果該設(shè)計(jì)不滿足某一屬性,則模型檢查器會生成一個跟蹤記錄。通過分析這個跟蹤記錄,可以確認(rèn)該設(shè)計(jì)為什么不滿足這個屬性。模型檢查器的一個例子是Cadence符號模型檢查器(“SMV”)。傳統(tǒng)的模型檢查器中可使用二進(jìn)制決策圖表(“BDD”)或/和可滿足性解算器(“SAT”)。與現(xiàn)有的驗(yàn)證方法相比,使用本發(fā)明的簡化模型可更快地發(fā)現(xiàn)錯誤。在某些情況下,最好在設(shè)計(jì)過程中就用本發(fā)明的驗(yàn)證技術(shù)快速地發(fā)現(xiàn)錯誤,而不是等到最后再完完整地驗(yàn)證整個設(shè)計(jì)。如步驟110所示,模型檢查的結(jié)果被應(yīng)用于設(shè)計(jì)電路。例如,一旦發(fā)現(xiàn)一個錯誤,就可修改設(shè)計(jì)中相應(yīng)的錯誤。然后再執(zhí)行該驗(yàn)證過程。為進(jìn)一步提高對設(shè)計(jì)的驗(yàn)證,還可執(zhí)行其他步驟。如步驟112所示,還可執(zhí)行性能分析操作,以確定設(shè)計(jì)的性能界限。如步驟114所示,還可驗(yàn)證順序操作。后面將結(jié)合附圖2和3對步驟112及步驟114作詳細(xì)的描述。圖2是本發(fā)明一個實(shí)施例中性能分析操作的流程圖。所述性能分析可包括為操作確定一個最壞案例情況。這樣,性能分析可以確定某一給定操作必須在其間完成的一個最大的時鐘周期。這樣的性能分析在設(shè)計(jì)中有關(guān)鍵性的作用,一個后續(xù)操作是否為正確操作取決于前一個操作在后一操作開始前是否完全結(jié)束。如步驟202所示,其中為性能分析定義一個或多個屬性。例如,可設(shè)計(jì)一個屬性以在給定的操作完成之前發(fā)生一個特定數(shù)量的周期。在下一步(即步驟204)中,將這些屬性施加于簡化模型。例如,利用一個模型檢查器來完成這一操作。如步驟206所示,該模型檢查器會產(chǎn)生一個結(jié)果,該結(jié)果會表明設(shè)計(jì)是否滿足所述屬性。例如,這個結(jié)果可以表明設(shè)計(jì)是否在設(shè)計(jì)范圍內(nèi)操作。步驟208,如果沒有達(dá)到設(shè)計(jì)范圍(如最壞案例情況),則會修改這些屬性,以進(jìn)一步測試設(shè)計(jì)范圍。例如,參考步驟202中所舉的例子,可增加操作能在其間能完成的時鐘周期數(shù)量。修改完這些屬性之后,再次回到步驟204,將其應(yīng)用到簡化模型中,以確定是否達(dá)到設(shè)計(jì)范圍。如果在步驟206確認(rèn)已達(dá)到了設(shè)計(jì)范圍,則模型檢查器會產(chǎn)生一個記錄,這個記錄會被分析以確定是否已到達(dá)設(shè)計(jì)范圍。所述信息可用來定義一個設(shè)計(jì)在一方面或多方面的性能界限。而且,所述記錄可用來確定能達(dá)到設(shè)計(jì)范圍的具體條件(如寄存器及變量的狀態(tài),被執(zhí)行的特別操作,等等)。在重新設(shè)計(jì)電路以提高其性能時,這些信息將會有用。如步驟210所示,可將這些結(jié)果應(yīng)用于設(shè)計(jì)中。例如,如果性能界限需要增加,則需要修改設(shè)計(jì)。綜上所述,當(dāng)性能分析被施加于簡化模型中時,該性能分析會更有效。如果所述簡化模型與本發(fā)明所討論的那樣正好是一個適當(dāng)?shù)倪x擇,則其獲得的結(jié)果可用于整個設(shè)計(jì)。圖3為本發(fā)明一個實(shí)施中的順序操作驗(yàn)證的流程圖。如前所述,在某些實(shí)施例中,可能會設(shè)計(jì)這樣一個模型,其中不會發(fā)生這種順序操作。圖3中所描述的操作可用來改進(jìn)由該模型所提供的驗(yàn)證。當(dāng)驗(yàn)證順序操作時可能會遇到一個問題,即該順序操作的初始狀態(tài)不容易確定。當(dāng)在先的操作沒有將過程中會使用的所有狀態(tài)設(shè)置到一個或多個預(yù)先定義的狀態(tài)時,這個問題就會發(fā)生。因此,要有效地測試這種順序操作,需要模擬出完成在先操作之后的結(jié)果中可能的剩余狀態(tài)。通過這種方法,順序操作中的操作可以被有效地驗(yàn)證。通過使用歸納法,設(shè)計(jì)的初始狀態(tài)的屬性可以被定義成初始狀態(tài)的一個超集。然后將所述超集以矩陣表示,以驗(yàn)證所需的屬性。因此,如步驟302所示,其中為一個順序操作定義了一套初始狀態(tài)(設(shè)計(jì)的內(nèi)部狀態(tài),例如寄存器及變量的值)。其中包括定義在一個在先操作之后可能會產(chǎn)生的初始狀態(tài)(如復(fù)位狀態(tài))和剩余狀態(tài)(如邏輯操作趨于“平靜”后的狀態(tài))。如步驟304所示,所述超集是由一系列的子集所定義的。在某些實(shí)施方式中,不會去費(fèi)力搜索具體的超集,而是針對所述子集在多套內(nèi)部狀態(tài)(如剩余狀態(tài))上的投射作出一個預(yù)測。所述的內(nèi)部狀態(tài)可能與寄存器的狀態(tài)有關(guān)。如步驟306所示,用于檢查順序操作的那些屬性被應(yīng)用于所述設(shè)計(jì)(如使用一個模型檢查器)??梢岳们笆霾襟E中確定的初始狀態(tài)的子集來驗(yàn)證這些屬性。在圖4至圖7中,描述了將前述技術(shù)應(yīng)用于驗(yàn)證千兆以太網(wǎng)開關(guān)的一個例子。本實(shí)施例中,在圖4示出了這個設(shè)計(jì)的功能性和微結(jié)構(gòu)。然后會識別影響驗(yàn)證決定的屬性特征及直覺觀測。然后會定義基本的抽象技術(shù)。如圖5和圖6所示,通過引用兩個規(guī)格來分析錯誤質(zhì)量,可歸納出實(shí)驗(yàn)性結(jié)果。圖7示出了如何提高包括性能分析的模型檢查功能。最后,基于以上描述,即可得出驗(yàn)證結(jié)論。圖4示出了一個千兆以太網(wǎng)開關(guān)400,其中包括一個獨(dú)立芯片,含有12個千兆以太網(wǎng)(GE)端口402,一個10千兆高速互連(“10G”)404,以及一個CPU界面406。開關(guān)400執(zhí)行開關(guān)功能,如以太網(wǎng)開關(guān)(第二層,或L2),IP開關(guān)(第三層,或L3),以在地址分辨邏輯(“ARL”)塊中的更高層的開關(guān),其中的一部分被劃分為圖4中的塊408。在結(jié)構(gòu)層中,每一個接收到數(shù)據(jù)包的端口(如與GE402或10G404相連的端口)會向ARL發(fā)送一個請求。ARL邏輯會返回一個基于L2或L3的目的地址的出口端口。L2及L3的功能均使用哈稀表,分別為L2表及L3表。下面舉例說明對L2表的驗(yàn)證。L2表將MAC地址映射至端口?;谒鼈兊哪繕?biāo)MAC地址,從千兆端口來的數(shù)據(jù)包被傳至合適的出口端口。以一個MAC地址的形式與一個端口映射的開關(guān)信息在硬件中被動態(tài)地訓(xùn)練及更新。10千兆端口是一個互連。CPU通過插入或刪除入口來修改表格,這此入口可從動態(tài)的更新中除去。基于長時間使用、或CPU的請求,可將入口動態(tài)地從表格中老化刪除(agedout)。對于每個數(shù)據(jù)包,ARL最多可執(zhí)行三個可能的動作源MAC地址檢查、目的MAC地址檢查、以及動態(tài)訓(xùn)練。如果芯片的運(yùn)行頻率為125MHz,則L2表邏輯應(yīng)在84個周期為每個千兆端口、或在8個周期內(nèi)為每個10千兆端口完成這些動作。L2表的結(jié)構(gòu)為一個如圖1中所描述的哈稀表(hashtable)410。使用哈稀函數(shù)將16K邏輯入口映射至2K存儲段,每個存儲段有8個入口。這些存儲段之間沒有先后順序。同樣,在每一個存儲段中的各個入口之間也沒有先后順序。在一個存儲段內(nèi)復(fù)制入口是嚴(yán)格禁止的。動態(tài)修改采用要求一致性的讀-改-寫(read-modify-write)操作。讀及寫被退耦。其中,時效的優(yōu)先權(quán)低于查找,因此證明該設(shè)計(jì)是饑餓案件(starvationcases).由于其動態(tài)特征,L2表邏輯通常比較難驗(yàn)證。首先,其中可能沒有高等級的訓(xùn)練規(guī)范。訓(xùn)練可能因多種原因而被取消。不知道周期精確級的邏輯狀態(tài),就不可能預(yù)知訓(xùn)練何時會發(fā)生。時效及CPU操作同樣有助于動態(tài)行為,結(jié)果是產(chǎn)生一些使用現(xiàn)有仿真技術(shù)很難進(jìn)行仿真的死角錯誤。第二,在仿真時很難識別性能問題。所述設(shè)計(jì)必須公平、有效地同時處理多個進(jìn)程,以滿足整體及潛在的考慮。與單個數(shù)據(jù)包關(guān)聯(lián)的多重操作可能在多個周期后被退耦。錯誤的行為會在其發(fā)生了數(shù)千個周期之后產(chǎn)生可觀察到的效果,或者沒有什么效果,這依賴于具體的測試或應(yīng)用。這些問題導(dǎo)致驗(yàn)證性能的仿真更加困難。第三,對這個塊寫入一個檢查器可能不太合適。由于其動態(tài)特征,檢查器可能與RTL一樣容易被寫入。然而,如果檢查器與RTL相似,則很難確保檢查器的正確性。因此,對于這樣一個設(shè)計(jì),本發(fā)明提供了比現(xiàn)有的仿真技術(shù)更有效的驗(yàn)證。為有效地發(fā)現(xiàn)設(shè)計(jì)錯誤,這里舉兩個驗(yàn)證決定的例子。第一,在沒有完整可得的規(guī)格的情況下,可能需定義盡可能多的屬性。在這個例子中,每個屬性能驗(yàn)證一個不同的RTL函數(shù)。如前所述,所述定義的屬性可驗(yàn)證設(shè)計(jì)的各個方面。例如,為測試L2表中的堆棧位操作,當(dāng)有效位=0且訓(xùn)練正在進(jìn)行時,會驗(yàn)證一個屬性,而不應(yīng)設(shè)置堆棧位。如果當(dāng)前CPU沒有運(yùn)行,則會驗(yàn)證另一個屬性,而不應(yīng)設(shè)置堆棧位。第二,可通過抽象來減小設(shè)計(jì)尺寸。在這個例子中,L2表邏輯包括大約3000個寄存器及一個16K入口(1Mbit)查找表。要用目前工藝水平的模型檢查器,去驗(yàn)證這樣一個具有復(fù)雜屬性的大型設(shè)計(jì)是不太現(xiàn)實(shí)的。因此,最好采用更強(qiáng)的抽象技術(shù),即使這會導(dǎo)致一些重要的屬性不能被驗(yàn)證。假設(shè)以Kripke結(jié)構(gòu)M=(S,I,R,L,h)來模擬L2表邏輯,其中,S表示狀態(tài)的集合,IS表示初始狀態(tài)的集合,RSXS表示轉(zhuǎn)換關(guān)系。L是表格在S上的集合,hN48→N11是映象函數(shù),其中Ni={1…2i}。換句話說,h是將MAC地址映射至L2表索引的哈稀函數(shù)。同樣,假設(shè)L不包括與哈稀函數(shù)相關(guān)的表。最后,設(shè)M↓t為模型M的簡化表示,其中函數(shù)t是無效的。例如,M↓aging表示簡化的L2表模型,其中aging是無效的。引理1設(shè)i及j為哈希表的兩個索引(index),也就是說,有兩個MAC地址a和b,其中,h(a)=i,h(b)=j(luò)。假設(shè)M’↓aging為修改后的L2表模型,這個L2表模型是通過分別交換i及j的兩個入口索引得到的。那么,M↓aging與M’↓aging相似。引理1表明,當(dāng)aging無效時,L2表中的存儲段是完全對稱的。這樣,只需模擬2個存儲段,而不是所有的2048個存儲段。此時,各個存儲段是相互獨(dú)立且完全相同的。因此,一個存儲段的操作與另一個存儲段的操作是相同的。當(dāng)aging有效時,因原始的L2表太大而不能有效地進(jìn)行驗(yàn)證,所以會使用簡化的L2表。因此,需修改aging行為使其與簡化表格相匹配。然而,這種方法會引入錯誤積極表現(xiàn)或錯誤消極表現(xiàn)。這些不需要的表現(xiàn)可通過對設(shè)計(jì)的正確分析及調(diào)試而得以避免。相似的對稱性也可存在于存儲段。例如,存儲段中的任意兩個入口可能是對稱的。所以,對于每個存儲段只需要模擬兩個入口,而不是模擬八個入口。除了減小表格的尺寸,還可應(yīng)用兩個抽象方法來對簡化模型的復(fù)雜性作進(jìn)一步的簡化。首先,由于簡化的L2表中只有四個入口,所以可以只用2個比特位來表示MAC地址,而不是用48個比特位來表示。這是形式驗(yàn)證的現(xiàn)有技術(shù)。其次,即使12千兆網(wǎng)端口不是對稱的,其端口的行為仍是相互獨(dú)立的。這種對稱性的缺陷可能是仲裁的一個結(jié)果,其中,一個端口的優(yōu)先權(quán)被分配得高于另一個端口。引理2用M↓porti表示L2表模型,它沒有從端口i發(fā)送請求,而p為M↓porti的一個ACCTL屬性,那么根據(jù)引理2,如果簡化模型M↓porti的一個普通屬性在是不正確的,則該屬性在原始模型M上會是一個錯誤。因此,簡化模型最多可以合并兩千兆網(wǎng)端口而不是12千兆網(wǎng)端口。此時,可準(zhǔn)確模擬10千兆網(wǎng)端口及CPU界面。通過采用這個抽象技術(shù),L2表的尺寸可減少到少于150個寄存器。如表1所示。表1除了抽象,環(huán)境模型同樣可被簡化。從千兆網(wǎng)端口到L2表的請求每84個周期到達(dá)一次。如果對每個端口準(zhǔn)確地模擬,則SMV很難完成一個定點(diǎn)運(yùn)算。在某些應(yīng)用中,多端口單請求比單端口多請求更能使設(shè)計(jì)驗(yàn)證的觀點(diǎn)被引起注意。因此,每個端口僅有一個單請求被模擬,從而可有效地減少驗(yàn)證時間??梢允褂胑Perl來重編碼RTL從而完成所述抽象。所述重寫的編碼可能是可配置的。例如,為驗(yàn)證帶有一個千兆網(wǎng)端口、一個10千兆網(wǎng)端口以及老化功能的邏輯,會用ePerl來生成所述模型,同時生成與之相關(guān)的屬性。如果SMV認(rèn)為某一屬性不正確,這個工具會舉出一個相應(yīng)例子來解釋該屬性為什么是錯誤的??偟膩碚f,驗(yàn)證設(shè)計(jì)所需定義的屬性數(shù)量由設(shè)計(jì)的復(fù)雜度所決定。在某些應(yīng)用中,可能有150-300個屬性。每個屬性的運(yùn)行時間通常為15秒至2小時。例如,要對35個不同配置的驗(yàn)證,并使所有的設(shè)計(jì)變化還原回這35種配置,則需要8個月的時間來完成這一形式驗(yàn)證過程。本發(fā)明所述的驗(yàn)證比現(xiàn)有的仿真技術(shù)更為有效。比如,可用一個仿真器在ARL塊的界面觀察信號。因此,不僅要仿真L2表邏輯的錯誤行為,還應(yīng)使這些行為在ARL界面上可被觀察到。這會降低仿真器的效率。要量化被發(fā)現(xiàn)的錯誤的質(zhì)量,需定義兩個規(guī)格錯誤激勵及錯誤可見度。第一個規(guī)格,錯誤激勵函數(shù)(“ES”),它是輸入錯誤激勵的可能性,用于發(fā)現(xiàn)在初始狀態(tài)時開始的錯誤。例如,假設(shè)一個有效的MAC地址A被存儲于L2表中的一個特定存儲段。MAC地址B的查找ES函數(shù)h(B)=h(A)為1/2048。ES值越低,通過隨機(jī)仿真而出現(xiàn)該種錯誤的機(jī)會越小。在計(jì)算ES時,僅需使用最有可能的已知情形來仿真相應(yīng)的錯誤。這樣會得到較保守的ES近似值。一個錯誤的錯誤可見度(“EV”)是時間及輸入激勵的函數(shù)。Evtime是將錯誤行為擴(kuò)展至測試工作臺所需的周期數(shù)。Evstim估量將錯誤由原因擴(kuò)展至外部可發(fā)現(xiàn)的征兆所需的輸入激勵的可能性。EV=Evstim/Evtime提供了一種比較錯誤的相對可發(fā)現(xiàn)度的方式。Evstim的計(jì)算與ES相似,都是基于一個保守的近似值。比如,假設(shè)將錯誤擴(kuò)展至ARL界面的周期的最小值為84個周期。同時假設(shè)所需的激勵包括兩個相鄰的10千兆網(wǎng)端口在存儲段i的查找請求,一個特定千兆網(wǎng)端口在存儲段i的查找請求,然后有Evstim=(1/13)2*1/2048*1/13*1/2048=2.5e-7及EV=Evstim/Evtime=3.0e-9這樣,由于Evtime為使用最短的記錄估算出來的,而Evstim為擴(kuò)展錯誤所需激勵的上界,就可以適當(dāng)?shù)毓浪愠鯡V值。在圖5和圖6中,描述了錯誤激勵ES和錯誤可見度EV的兩個例子。在圖5和圖6中,X軸表示錯誤的累計(jì)數(shù)量,而Y軸分別表示ES及EV。Y軸以對數(shù)為單位。比如,在圖6中,-6表示EV=10-6。在圖5和圖6中,Y軸的值越低,錯誤可被仿真器發(fā)現(xiàn)的可能性越小。在圖5中,第16個錯誤比第15個錯誤更難仿真。而對于仿真器來說,發(fā)現(xiàn)第15個錯誤相對容易些。相反地,如果沒有形式方法,要通過隨機(jī)仿真來發(fā)現(xiàn)第16個錯誤是相當(dāng)困難的。在圖6中,第4個及第5個錯誤的EV值由于沒有直接被擴(kuò)展至ARL界面,所以沒有計(jì)算出來。然而,這些錯誤會降低系統(tǒng)性能。累積的低效性最終會導(dǎo)致一個可發(fā)現(xiàn)的錯誤。要發(fā)現(xiàn)這種錯誤所需的仿真周期數(shù)量會大到不允許的范圍。因此,具有較低ES及EV的錯誤被定義為“高質(zhì)量”的錯誤。當(dāng)使用更積極的抽象時,某些重要的性能問題可能不會被強(qiáng)調(diào)。例如,在上面所述的例子中,所有的千兆網(wǎng)端口查找請求及訓(xùn)練應(yīng)該在84個周期范圍內(nèi)。相應(yīng)地,可建立一個初始分析,所述設(shè)計(jì)分別具有47%和21%的查找和訓(xùn)練界限。對于抽象模型,這些性能要求不會被完全驗(yàn)證。然而,在一個抽象結(jié)構(gòu)中,當(dāng)邏輯從老化模式轉(zhuǎn)換到正常開關(guān)模式時,SMV被用來決定使一個訓(xùn)練被服務(wù)得比預(yù)期晚很久。如果在這個轉(zhuǎn)換前正好有一個查找請求,則它的訓(xùn)練會發(fā)生得更晚些。通過對所有端口人工建構(gòu)一個相似的方案,可用性能分析來確定訓(xùn)練的性能要求僅滿足界限。比如,訓(xùn)練的實(shí)際界限可能是3%而不是21%(如圖7所示)。由于在RTL設(shè)計(jì)中的假定,可能會導(dǎo)致一些潛在的問題。由于要求按特定的順序及在特定的時間內(nèi)發(fā)生20個以上的行為,用仿真來探測記錄可能會存在困難。相反地,以一個SMV記錄開始,可利用性能分析來建構(gòu)一個非正式分析,以提供出獨(dú)立地通過仿真或形式驗(yàn)證不能得到的驗(yàn)證結(jié)果。如前所述,所述性能分析包括建構(gòu)一些屬性以測試設(shè)計(jì)范圍,執(zhí)行模型檢查及修改屬性以確定實(shí)際的設(shè)計(jì)范圍。比如,可能需要定義一些屬性以測試查找及訓(xùn)練操作。從SMV記錄開始,對界限的初始信息進(jìn)行分析。查找及訓(xùn)練會在請求周期內(nèi)被不斷推回(如通過修改屬性),直到SMV產(chǎn)生一個記錄。在前述的抽象模型中,僅考慮每個端口的一個請求。也就是不考慮順序請求。這們,相同端口的相鄰請求間的相互作用就不會被模擬或驗(yàn)證。理論上,如果一個請求已被滿足,則相關(guān)的狀態(tài)寄存器會返回復(fù)位值。實(shí)際上,由于前一個請求的剩余狀態(tài)可能未被清除,這個理論就有可能不成立。這種情況會對后來的請求產(chǎn)生一些不可預(yù)料的行為。在某些實(shí)施例中,通過使用初始狀態(tài)的集合Q來模擬結(jié)構(gòu)的請求以記錄所述問題,集合Q包含集合I,即IQ,Q-I建構(gòu)剩余狀態(tài)集合模型。L2表可能已經(jīng)被不精確地模擬。這樣,只需考慮L2表外部的寄存器的初始值。這個結(jié)果在下面的論點(diǎn)中。引理1設(shè)M↓req=(S,I,R↓req,L)為L2表模型,其中每個端口只有一個請求,P為M↓req的ACTL屬性。設(shè)IQ,QS,且M’↓req=(S,I,R↓req,L)為使用初始狀態(tài)集合Q修改后的KRIPKE結(jié)構(gòu),那么其中,理由描述由一個千兆網(wǎng)端口發(fā)出的每兩個請求之間,至少有84個周期。這個理論很容易通過每個端口的每一個84周期的歸納性推論而證明。延伸這個結(jié)論的關(guān)鍵是找到狀態(tài)Q的集合。這是個相對困難的任務(wù)。代替于搜索具體的集合Q,可以推算其在寄存器子集上的投射。假設(shè)V為寄存器于M↓req的子集。將V分成m個等級Vi,即V=∪miVi]]>且Vi∩Vj=Φ。設(shè)Qi為Q在Vi上的投射。那么,使用有以下請求的模型檢查器可推算出Q,如果不能推算出Qi,或Qi太大,那么使用I在Vi上的映射,表示為Ii。最后,Q’=Qilx…xQijxIklx…xIkp可被用作模型檢查的初始狀態(tài)集。用這個近似值,不會總能完全地驗(yàn)證M上的想要的屬性。然而,這個擴(kuò)展可增加驗(yàn)證的可信度。由上述可知,形式技術(shù)可用來驗(yàn)證如復(fù)雜的以太網(wǎng)開關(guān)表這樣的電路??傊?,這個處理過程包括,應(yīng)用積極抽象排除基本邏輯錯誤。這個技術(shù)的有效性可通過一些“高質(zhì)量”RTL錯誤證明。然后,基于典型的模型檢查,這個技術(shù)可正式或非正式地?cái)U(kuò)展以分析屬性。與adhoc屬性仿真相比,這種精確的分析可能超出仿真或形式技術(shù)的能力。下一步,當(dāng)環(huán)境模型更復(fù)雜時,可以使用一個新的歸納對典型的模型檢查進(jìn)行擴(kuò)展,以避免狀態(tài)爆炸。這些技術(shù)能以較小的困難應(yīng)用于許多表格控制的設(shè)計(jì)。本發(fā)明的不同實(shí)施方式可以用各種硬件及軟件處理單元來執(zhí)行。在本發(fā)明的某些實(shí)施方式中,如控制器、狀態(tài)機(jī)和/或邏輯電路等硬件可使用于本發(fā)明的系統(tǒng)架構(gòu)中。在本發(fā)明的某些實(shí)施方式中,可在一個或幾個處理設(shè)備上執(zhí)行的軟件或固件的編碼可用來完成一個或多個所述的操作。另外,本發(fā)明所述的技術(shù)可應(yīng)用在各種設(shè)計(jì)問題中,并不局限于本發(fā)明所述的實(shí)施方式中??傊景l(fā)明本涉及一種改進(jìn)的驗(yàn)證技術(shù)。雖然其中對某些示例性的實(shí)施方式進(jìn)行了詳細(xì)的描述,并畫出了相應(yīng)的附圖,但可以理解的是,這些實(shí)施例僅起到示例的作用,而不能作為對本發(fā)明范圍的限制。特別地,應(yīng)承認(rèn)本發(fā)明所教導(dǎo)的方法可應(yīng)用到更廣泛的系統(tǒng)及處理過程。因此,可對本發(fā)明所述的例子及其它實(shí)施方式進(jìn)行各種修改,而不會脫離本發(fā)明的范圍。根據(jù)上述的理解,本發(fā)明不僅限于所描述的實(shí)施方式,而可延伸至由權(quán)利要求所限定的精神及范圍內(nèi)的任何修改。權(quán)利要求1.一種驗(yàn)證電路設(shè)計(jì)的方法,其特征在于,包括以下步驟為設(shè)計(jì)電路生成一個簡化模型;對所述簡化模型進(jìn)行模型檢查;以及對所述簡化模型進(jìn)行性能分析,以驗(yàn)證所述電路設(shè)計(jì)。2.根據(jù)權(quán)利要求1所述的驗(yàn)證電路設(shè)計(jì)的方法,其特征在于,所進(jìn)行的性能分析中包括修改至少一個屬性的步驟。3.根據(jù)權(quán)利要求2所述的驗(yàn)證電路設(shè)計(jì)的方法,其特征在于,所進(jìn)行的性能分析中包括將所述被修改的至少一個屬性應(yīng)用到所述簡化模型的步驟。4.根據(jù)權(quán)利要求1所述的驗(yàn)證電路設(shè)計(jì)的方法,其特征在于,所進(jìn)行的性能分析中包括識別至少一個性能界限的步驟。5.根據(jù)權(quán)利要求1所述的驗(yàn)證電路設(shè)計(jì)的方法,其特征在于,所進(jìn)行的性能分析中包括識別至少一個最壞案例情況的步驟。6.根據(jù)權(quán)利要求1所述的驗(yàn)證電路設(shè)計(jì)的方法,其特征在于,還包括產(chǎn)生至少一個性能分析結(jié)果,并將所述至少一個性能分析結(jié)果應(yīng)用到所述電路設(shè)計(jì)以驗(yàn)證該電路設(shè)計(jì)的步驟。7.一種驗(yàn)證電路設(shè)計(jì)的方法,其特征在于,包括以下步驟生成一個電路設(shè)計(jì)的簡化模型;對所述簡化模型進(jìn)行模型檢查;以及為電路設(shè)計(jì)的一個順序操作產(chǎn)生至少一個模型;以及將所述至少一個模型應(yīng)用到所述簡化模型,以驗(yàn)證所述電路設(shè)計(jì)。8.根據(jù)權(quán)利要求7所述的驗(yàn)證電路設(shè)計(jì)的方法,其特征在于,所述產(chǎn)生至少一個模型步驟中,包括定義一套內(nèi)部狀態(tài)的步驟,所述內(nèi)部狀態(tài)包括初始狀態(tài)及剩余狀態(tài)。9.根據(jù)權(quán)利要求8所述的驗(yàn)證電路設(shè)計(jì)的方法,其特征在于,所述產(chǎn)生至少一個模型步驟中,包括定義所述內(nèi)部狀態(tài)的子集的步驟。10.根據(jù)權(quán)利要求9所述的驗(yàn)證電路設(shè)計(jì)的方法,其特征在于,所述產(chǎn)生至少一個模型步驟中,包括在內(nèi)部寄存器中定義所述子集的映射的步驟。全文摘要形式技術(shù)可應(yīng)用于工業(yè)設(shè)計(jì)問題中,例如用于驗(yàn)證一個電路設(shè)計(jì)。其初始決定包括定義一些屬性以驗(yàn)證設(shè)計(jì)的步驟。其中會生成一個設(shè)計(jì)的抽象,然后對該抽象進(jìn)行模型檢查。通過性能分析及對順序操作的驗(yàn)證,使用這些技術(shù)所得的結(jié)果可以得到擴(kuò)展。文檔編號G06F17/50GK1667622SQ200410097618公開日2005年9月14日申請日期2004年11月22日優(yōu)先權(quán)日2003年11月21日發(fā)明者盧遠(yuǎn)申請人:美國博通公司