專利名稱:用于分析具有瞬時(shí)邏輯的邏輯設(shè)計(jì)的技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及集成電路邏輯設(shè)計(jì)分析,更具體地說,涉及用于分析具有瞬時(shí)邏輯的集成電路邏輯設(shè)計(jì)的技術(shù)。
背景技術(shù):
通常,形式驗(yàn)證涉及嚴(yán)謹(jǐn)?shù)刈C明集成電路(IC)邏輯設(shè)計(jì)(設(shè)計(jì))滿足相關(guān)聯(lián)的規(guī)范。典型地,驗(yàn)證問題的規(guī)范包括設(shè)計(jì)的網(wǎng)表表示和所述網(wǎng)表的指定網(wǎng)的一組預(yù)期值?!熬W(wǎng)表”包含具有各種功能的門(其評估隨時(shí)間推移的布爾值)和邊(其表示所述門之間的互連)?!佰E線”可以是門隨時(shí)間推移的二進(jìn)制(即,“0”或“1”)值的序列或門隨時(shí)間推移的三進(jìn)位值(即,“0”、“1”或“X”,其中值“X”指未知值)的序列。例如,門可屬于四個(gè)廣義功能種類之一恒定門、隨機(jī)門、組合門以及狀態(tài)元件 (例如,寄存器和順序門(sequential gate),諸如鎖存器和觸發(fā)器)。恒定門產(chǎn)生不隨時(shí)間推移而變化的邏輯電平。隨機(jī)門(亦稱為主輸入)可以在任何時(shí)步中采用獨(dú)立于所有其他門的任何邏輯電平。組合門是諸如“與”門、“或”門、“與非”門、“或非”門之類的邏輯元件。順序門具有關(guān)聯(lián)的初始值函數(shù)和下一狀態(tài)函數(shù)。順序門在時(shí)間“0”(t0)處的值為初始值函數(shù)的值。順序門在時(shí)間“i+1”處的值為順序門的下一狀態(tài)函數(shù)在時(shí)間“i”處的值。作為一個(gè)實(shí)例,驗(yàn)證問題可包括判定是否存在其中斷言特定信號的狀態(tài),其中該特定信號的斷言指示錯(cuò)誤。使用形式驗(yàn)證,試圖找到導(dǎo)致特定信號的斷言的包括隨時(shí)間 (狀態(tài))推移的網(wǎng)值序列的反例跡線(counter-example trace),或試圖證明不存在導(dǎo)致特定信號的斷言的反例跡線。形式驗(yàn)證經(jīng)常使用狀態(tài)空間搜索算法來執(zhí)行,所述狀態(tài)空間搜索算法包括無界和有界窮舉搜索算法。有界窮舉搜索算法(Bounded exhaustive search algorithms)試圖找到在從設(shè)計(jì)的初始狀態(tài)開始的“N”個(gè)時(shí)步(time-steps)內(nèi)發(fā)生的特定信號的斷言。無界窮舉搜索算法增大“N”直至不遇到對于“N”的較小值尚未遇到的狀態(tài)為止(稱為“固定點(diǎn)”的條件)。如果在達(dá)到固定點(diǎn)之前并沒有從初始狀態(tài)至違規(guī)狀態(tài)(即, 其中斷言特定信號的狀態(tài))的路徑,則可推斷設(shè)計(jì)的正確性。執(zhí)行窮舉狀態(tài)空間搜索所需的驗(yàn)證循環(huán)的數(shù)目隨狀態(tài)元件(例如,寄存器、鎖存器、觸發(fā)器等)的數(shù)目以指數(shù)方式增大。此指數(shù)關(guān)系使得形式驗(yàn)證對于含有大量狀態(tài)元件 (例如,一百或更多狀態(tài)元件)的設(shè)計(jì)而言并不實(shí)用。因此,使用半形式驗(yàn)證作為大型設(shè)計(jì)的驗(yàn)證技術(shù)。半形式驗(yàn)證通過以資源定界方式將形式算法應(yīng)用于大型設(shè)計(jì)而利用形式算法。雖然需要較少計(jì)算時(shí)間(與形式驗(yàn)證相比),但是半形式驗(yàn)證可能僅實(shí)現(xiàn)部分驗(yàn)證覆
至
ΓΤΠ ο
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,一種用于執(zhí)行對邏輯設(shè)計(jì)的分析的技術(shù)包括檢測體現(xiàn)于網(wǎng)表內(nèi)的邏輯設(shè)計(jì)中的初始瞬時(shí)行為。確定所述初始瞬時(shí)行為的持續(xù)時(shí)間?;谒龀跏妓矔r(shí)行為收集關(guān)于所述邏輯設(shè)計(jì)的約簡信息。然后基于所述約簡信息修改所述網(wǎng)表。
通過實(shí)例的方式例示了本發(fā)明并且本發(fā)明并非旨在受附圖限制,在附圖中,相同標(biāo)號指示相同元件。為了簡潔和清晰而在圖中例示各元件并且所述元件的繪制不必成比例,這些附圖是圖1是示出邏輯設(shè)計(jì)中的三個(gè)寄存器的狀態(tài)的信號圖;圖2是可用于執(zhí)行根據(jù)本發(fā)明配置的工具的實(shí)例計(jì)算機(jī)系統(tǒng)的圖;圖3是根據(jù)本發(fā)明的又一實(shí)施例的用于分析設(shè)計(jì)的實(shí)例過程的流程圖。
具體實(shí)施例方式所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。 因此,本發(fā)明可以具體實(shí)現(xiàn)為以下形式,即可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明還可以實(shí)現(xiàn)為在計(jì)算機(jī)可用存儲介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可用存儲介質(zhì)中包含計(jì)算機(jī)可用程序代碼??梢允褂靡粋€(gè)或多個(gè)計(jì)算機(jī)可用或計(jì)算機(jī)可讀存儲介質(zhì)的任意組合。所述計(jì)算機(jī)可用或計(jì)算機(jī)可讀存儲介質(zhì)例如可以是(但不限于)電子、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置或設(shè)備。計(jì)算機(jī)可讀存儲介質(zhì)的更具體的實(shí)例(非窮舉的列表)將包括以下項(xiàng)便攜式計(jì)算機(jī)軟盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦寫可編程只讀存儲器(EPROM)或閃存、便攜式光盤只讀存儲器(CD-ROM)、光存儲設(shè)備或磁存儲設(shè)備。注意,所述計(jì)算機(jī)可用或計(jì)算機(jī)可讀存儲介質(zhì)甚至可以是程序被打印在其上的紙張或其他適合的介質(zhì),因?yàn)樗龀绦蚩梢酝ㄟ^例如光掃描所述紙張或其他介質(zhì)被電子地捕獲,然后被編譯、 解釋或另外以適合的方式被處理(如果必要),然后被存儲在計(jì)算機(jī)存儲器中。在本發(fā)明的上下文中,計(jì)算機(jī)可用或計(jì)算機(jī)可讀存儲介質(zhì)可以是任何能夠包含或存儲由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與指令執(zhí)行系統(tǒng)、裝置或設(shè)備有關(guān)的程序的介質(zhì)。所述計(jì)算機(jī)可用介質(zhì)可以包括其中包含計(jì)算機(jī)可用程序代碼(在基帶中或作為載波的一部分)的傳播數(shù)據(jù)信號??梢允褂萌魏芜m當(dāng)?shù)慕橘|(zhì)(包括但不限于無線、有線、光纜、射頻(RF)等)來傳輸計(jì)算機(jī)可用程序代碼。用于執(zhí)行本發(fā)明的操作的計(jì)算機(jī)程序代碼可以以面向?qū)ο蟮木幊陶Z言(如Java、 Smalltalk或C++)來編寫。但是,用于執(zhí)行本發(fā)明的操作的所述計(jì)算機(jī)程序代碼也可以以傳統(tǒng)的過程編程語言(如“C”編程語言或類似編程語言)來編寫。參考根據(jù)本發(fā)明的實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的方塊圖和/ 或流程圖在下面描述了本發(fā)明。將理解,所述方塊圖和/或流程圖的每個(gè)方塊以及所述方塊圖和/或流程圖中的方塊的組合可以由計(jì)算機(jī)程序指令來實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以被提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生一種機(jī)器,以便通過所述計(jì)算機(jī)和/或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的所述指令將創(chuàng)建用于實(shí)現(xiàn)所述方塊圖和/或流程圖方塊(多個(gè))中指定的功能/操作的裝置。這些計(jì)算機(jī)程序指令也可以被存儲在能夠以特定方式引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置執(zhí)行功能的計(jì)算機(jī)可讀存儲器中,以便存儲在所述計(jì)算機(jī)可讀存儲器中的所述指令將產(chǎn)生一件包括實(shí)現(xiàn)在所述方塊圖和/或流程圖方塊(多個(gè))中指定的功能/操作的指令的制品。所述計(jì)算機(jī)程序指令還可以被加載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置上以導(dǎo)致在所述計(jì)算機(jī)或其他可編程裝置上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,以便在所述計(jì)算機(jī)或其他可編程裝置上執(zhí)行的所述指令將實(shí)現(xiàn)在所述方塊圖和/或流程圖方塊(多個(gè))中指定的功能/操作。如本文中使用的,術(shù)語“耦合”包括塊或組件之間的直接電連接以及塊或組件之間使用一個(gè)或多個(gè)中間塊或組件而實(shí)現(xiàn)的間接電連接。瞬時(shí)信號是在接通電源(或分析的開始)之后的固定數(shù)目個(gè)時(shí)步期間采用任意邏輯值的信號。在固定數(shù)目個(gè)時(shí)步之后,瞬時(shí)信號穩(wěn)定并采用較具限制性的行為(例如,最初雙態(tài)觸發(fā)的門對于所有未來時(shí)間點(diǎn)穩(wěn)定于恒定值,以不同方式初始化的兩個(gè)門在時(shí)間點(diǎn)之后變得相等,或時(shí)鐘分布樹中的門可在最初若干時(shí)步不規(guī)律地行動且此后開始周期性地雙態(tài)觸發(fā))。參看圖1,信號圖100例示邏輯設(shè)計(jì)中的三個(gè)寄存器的狀態(tài)。在圖1中,對于指定時(shí)間處的所有可能輸入值而言,寄存器在其邏輯賦值始終等于“0”時(shí)被指派“0”或在其邏輯賦值始終等于“1”時(shí)被指派“1”。如果三元仿真(ternary simulation)無法確定寄存器的值,則該寄存器被指派值“X”。在圖1中,寄存器“C”在時(shí)間“2”處采用值“0”,且貫穿所例示的時(shí)步保持為“0”。當(dāng)寄存器針對大于特定時(shí)間的所有時(shí)步采用恒定值時(shí),該寄存器被稱為“瞬時(shí)邏輯”。瞬時(shí)持續(xù)時(shí)間對應(yīng)于在瞬時(shí)信號穩(wěn)定于恒定值之前的時(shí)步的數(shù)目。 如圖1中例示的,寄存器“C”的瞬時(shí)持續(xù)時(shí)間為“2”。邏輯設(shè)計(jì)的瞬時(shí)行為可歸因于各種原因。例如,邏輯設(shè)計(jì)的瞬時(shí)行為可以是手動邏輯設(shè)計(jì)的結(jié)果,因?yàn)楸J氐暮笃谥卦O(shè)初始狀態(tài)可造成此后無法被觀測的特定量的瞬時(shí)設(shè)計(jì)行為。作為另一實(shí)例,邏輯設(shè)計(jì)的瞬時(shí)行為可由不允許寄存器具有固定初始狀態(tài)(而替代地要求許多寄存器初始被解釋為具有非確定性狀態(tài))的設(shè)計(jì)式樣引起。在此情形下,如果設(shè)計(jì)中使用的重設(shè)機(jī)制無法保證某些寄存器的固定初始狀態(tài),則可將這些寄存器的初始狀態(tài)解釋為在時(shí)間“0”處具有任意的隨機(jī)值。因?yàn)椴糠种卦O(shè)機(jī)制的實(shí)施通常導(dǎo)致減小的電路大小(與重設(shè)所有寄存器的架構(gòu)相比),所以部分重設(shè)機(jī)制經(jīng)常是所期望的。為了使邏輯設(shè)計(jì)(其實(shí)施部分重設(shè)機(jī)制)正確地起作用,經(jīng)由初始化序列(其為邏輯設(shè)計(jì)所采取的一系列操作,在這些操作之后所有寄存器值變?yōu)榇_定性值)使得所述設(shè)計(jì)的大多數(shù)寄存器在特定數(shù)目個(gè)時(shí)間幀內(nèi)為確定性狀態(tài)。在初始化序列完成之前,寄存器采用非確定性的隨機(jī)值。在初始化(啟動)階段期間所見的賦值可不同于可在初始化序列終止之后觀測到的賦值。作為又一實(shí)例,邏輯設(shè)計(jì)的瞬時(shí)行為可以是在分析期間限制邏輯設(shè)計(jì)的行為的常見做法的結(jié)果。例如,邏輯設(shè)計(jì)經(jīng)常具備定義設(shè)計(jì)的操作模式的配置輸入(通常稱為“緊急按鈕(chicken switch)”)。在初始化以后,設(shè)計(jì)處理這些配置輸入且接著穩(wěn)定成指定操作模式。在期望操作模式中所見的寄存器賦值可不同于在初始化階段中所見的賦值。此初始瞬時(shí)行為傾向于出于若干原因而致使對相應(yīng)設(shè)計(jì)的分析并非最佳。例如,在形式驗(yàn)證中,初始瞬時(shí)寄存器賦值使表征一組可達(dá)到的狀態(tài)的努力復(fù)雜化。另外,邏輯設(shè)計(jì)中的許多門可能僅在初始化階段中需要,且如果可移除初始化階段,則可使得邏輯設(shè)計(jì)較小。在仿真和硬件加速架構(gòu)中,冗余門使建立模型(以及對該模型的后續(xù)分析)的過程顯著變慢。在邏輯合成和設(shè)計(jì)中,可利用瞬時(shí)行為和冗余門信息來優(yōu)化邏輯設(shè)計(jì)且增強(qiáng)所制造的相關(guān)半導(dǎo)體器件的特性(例如,減小硅面積,減小功率消耗,以及增大時(shí)鐘速度)。多種邏輯設(shè)計(jì)包括僅在初始時(shí)間幀期間具有相關(guān)性的瞬時(shí)邏輯。通常,瞬時(shí)邏輯可由以下項(xiàng)表示在某一數(shù)目的時(shí)間幀之后穩(wěn)定于確定性恒量的信號;以及用于列舉復(fù)雜初始狀態(tài)的初始化輸入,其在初始狀態(tài)之后變得無關(guān)。大部分邏輯設(shè)計(jì)(工業(yè)邏輯設(shè)計(jì)和基準(zhǔn)邏輯設(shè)計(jì)兩者)包括在分析期間產(chǎn)生開銷的瞬時(shí)邏輯。根據(jù)本發(fā)明的各方面,實(shí)施自動技術(shù)以檢測并消除瞬時(shí)邏輯。自動技術(shù)在較大的邏輯約簡、較深的有界模型檢查(BMC) 及使用(例如)歸納和內(nèi)插的增強(qiáng)的證明能力方面促進(jìn)了驗(yàn)證效率。順序硬件設(shè)計(jì)的自動驗(yàn)證是PSPACE (S卩,可由圖靈機(jī)(Turing vmachine)使用一定量的多項(xiàng)式空間求解的所有決策問題的集合)問題,該問題經(jīng)常是在計(jì)算上具有挑戰(zhàn)性的任務(wù)。取決于處于驗(yàn)證下的邏輯設(shè)計(jì)的大小,自動解決方案可以是難處理的。許多邏輯 (硬件)設(shè)計(jì)包括外來人為因素,雖然這些外來人為因素很大程度上與驗(yàn)證無關(guān),但其產(chǎn)生驗(yàn)證過程中的瓶頸。如上所述,兩種特定類型的人為因素是瞬時(shí)信號(其在特定數(shù)目個(gè)時(shí)步之后穩(wěn)定于固定的恒定值)和初始化輸入(其用于編碼在特定數(shù)目個(gè)時(shí)步之后變得無關(guān)的復(fù)雜初始狀態(tài))。根據(jù)本發(fā)明的各方面,可使用各種技術(shù)來使瞬時(shí)信號和初始化輸入的識別和消除自動化以增強(qiáng)分析。再次參看圖1,因?yàn)榧拇嫫鳌癈”在時(shí)間“2”處開始采用值 “0”并在所有時(shí)間都保持該值,所以寄存器“C”是瞬時(shí)寄存器。相比之下,因?yàn)榧拇嫫鳌癆” 及“B”兩者的值保持未定且不穩(wěn)定于固定的恒定值,所以寄存器“A”及“B”不是瞬時(shí)寄存
ο如先前所指出,瞬時(shí)邏輯可歸因于實(shí)施初始化序列的初始化邏輯。例如,常見設(shè)計(jì)式樣允許邏輯設(shè)計(jì)在非確定性狀態(tài)下接通電源,一系列狀態(tài)轉(zhuǎn)變使設(shè)計(jì)從所述非確定性狀態(tài)變?yōu)樵O(shè)計(jì)以一致方式行動的“重設(shè)狀態(tài)”。通常,專用初始化邏輯用于強(qiáng)制邏輯設(shè)計(jì)經(jīng)過初始化階段,且在此情形下,驗(yàn)證假設(shè)/檢查器通常被定制為僅僅致力于完成初始化階段。 因?yàn)樵诔跏蓟^程完成之后初始化邏輯的大部分穩(wěn)定于固定的恒定值,所以在分析期間可消除初始化邏輯。已提出至少一種常規(guī)方法以通過使用初始化階段的三值仿真(應(yīng)用“X”值來反映非確定性)來保守地確定邏輯設(shè)計(jì)在后初始化中可駐留的一組狀態(tài)而減小驗(yàn)證開銷。然而,該常規(guī)方法需要專用手動工作來分解總體驗(yàn)證過程。通常,因?yàn)槌R?guī)方法將非確定性信號保守地處理為非恒定,所以這些方法最終對該組后初始化狀態(tài)過度近似,從而損失了可在后初始化狀態(tài)上存在的較細(xì)微約束。過度近似又會提示邏輯設(shè)計(jì)師以手動方式添加初始化邏輯,以避免可能導(dǎo)致非最佳的所制造半導(dǎo)體器件的假性故障(spurious failure) 0驗(yàn)證約束(約束)是可在設(shè)計(jì)驗(yàn)證應(yīng)用中使用的構(gòu)造。可將約束實(shí)施為設(shè)計(jì)的網(wǎng)表中的被特殊標(biāo)記的門(即,約束門)。通常,約束表示對驗(yàn)證工具探查設(shè)計(jì)的狀態(tài)空間的自由度的限制。例如,約束可防止驗(yàn)證應(yīng)用探查任何“j”時(shí)步跡線,在所述“j”時(shí)步跡線中, 一個(gè)或多個(gè)約束中的任一個(gè)在“j”個(gè)時(shí)步中的任一個(gè)期間評估為邏輯零。通常,約束定義設(shè)計(jì)的狀態(tài)空間的與驗(yàn)證目的無關(guān)的一部分,且因此將在驗(yàn)證該約束時(shí)不必要地消耗驗(yàn)證資源。作為約束的一個(gè)實(shí)例,設(shè)計(jì)可被約束為防止緩沖器已滿時(shí)的新的數(shù)據(jù)傳輸。通常,當(dāng)緩沖器已滿時(shí)約束設(shè)計(jì)的輸入以禁止數(shù)據(jù)傳輸意謂著驗(yàn)證工具不涵蓋表示設(shè)計(jì)在緩沖器已滿時(shí)接受新的數(shù)據(jù)傳輸?shù)臓顟B(tài)。在缺少約束的情況下,將典型驗(yàn)證問題陳述為(例如)找到展現(xiàn)對性質(zhì)的違反的
7“j”時(shí)步跡線或證明對于任一“j”而言不存在此類跡線。在具有約束的情況下,同一驗(yàn)證問題可表達(dá)為(例如)找到展現(xiàn)對性質(zhì)的違反且在“j”個(gè)時(shí)步中的任一個(gè)中對于任一約束不展現(xiàn)邏輯零值的“j”時(shí)步跡線,或證明對于任一“j”而言不存在此類跡線。因?yàn)榧s束更改了驗(yàn)證問題的語義,所以約束有可能使可通過設(shè)計(jì)達(dá)到的性質(zhì)變得不可達(dá)到。因此,需要周全地選擇約束。通常,約束不應(yīng)更改驗(yàn)證問題的語義。例如,不應(yīng)準(zhǔn)許會阻止驗(yàn)證工具發(fā)現(xiàn)信號的有效斷言的約束。因?yàn)榧s束禁止探查某些原本可達(dá)到的狀態(tài),所以冗余移除算法可利用約束來實(shí)現(xiàn)較大門合并。具體地說,冗余移除算法可合并在沿不違反任何約束的路徑可達(dá)到的所有狀態(tài)中等效的門,即使合并后的門在僅可在違反約束之后達(dá)到的一些狀態(tài)中不等效時(shí)也是如此。可通過以隨機(jī)門替代原始網(wǎng)表中的順序門而引入割點(diǎn)門(cutpoint gate)(引入至修改后的網(wǎng)表中)。隨機(jī)門的輸出驅(qū)動修改后的網(wǎng)表中的與在原始網(wǎng)表中驅(qū)動的關(guān)聯(lián)順序門相同的輸入。然而,與原始網(wǎng)表中的順序門的輸入不同,隨機(jī)門的輸入是隨機(jī)輸入,這些隨機(jī)輸入不連接至修改后的網(wǎng)表的任何其他元件。至隨機(jī)門的輸入可在任何門循環(huán)采用任何值,與施加于設(shè)計(jì)的其他刺激無關(guān)。這樣,將割點(diǎn)引入網(wǎng)表中的凈效應(yīng)可以是對設(shè)計(jì)的行為進(jìn)行過度近似,因?yàn)殡S機(jī)門可仿真順序門的行為,而順序門對隨機(jī)門的仿真未必真實(shí)。 作為原始網(wǎng)表的過度近似模型,修改后的網(wǎng)表可包括無法用于在原始網(wǎng)表中斷言目標(biāo)門的狀態(tài)。最近已建議最初開發(fā)為用于增強(qiáng)的合成的重定時(shí)技術(shù)來經(jīng)由鎖存器(觸發(fā)器)計(jì)數(shù)的減小而增強(qiáng)驗(yàn)證(即,減少驗(yàn)證時(shí)間)。一般而言,重定時(shí)指跨組合門移動鎖存器的過程。通常,許多現(xiàn)有技術(shù)重定時(shí)算法將處于驗(yàn)證下的設(shè)計(jì)中的每個(gè)門移位任意量,這可對在存在約束的情況下設(shè)定的驗(yàn)證中使用重定時(shí)造成挑戰(zhàn)。瞬時(shí)邏輯也可歸因于驗(yàn)證測試臺。通常,測試臺包括三個(gè)組件包括足夠輸入假設(shè)以提供有意義的輸入激勵(lì)的驅(qū)動器;處于驗(yàn)證下的邏輯設(shè)計(jì);及用于在給定輸入下驗(yàn)證該設(shè)計(jì)的正確性的檢查器。測試臺驅(qū)動器可被構(gòu)建為過度約束設(shè)計(jì)的輸入(例如,僅對照可能設(shè)計(jì)行為的子集來測試設(shè)計(jì)以促進(jìn)情況細(xì)分策略(case-splitting strategy))。在給定輸入的減小集合的情形下,本來不會正常地穩(wěn)定于恒定行為的各種信號可在特定數(shù)目個(gè)時(shí)步之后穩(wěn)定于恒定行為。由驗(yàn)證測試臺引起的瞬時(shí)邏輯的一個(gè)實(shí)例可見于浮點(diǎn)單元(FPU) 驗(yàn)證方法中,該浮點(diǎn)單元(FPU)驗(yàn)證方法檢查經(jīng)由空管線傳播的單個(gè)操作碼的正確性。例如,當(dāng)在處于評估下的單個(gè)操作碼之后驅(qū)動非操作(NOP)操作碼時(shí),F(xiàn)PU的內(nèi)部狀態(tài)穩(wěn)定于恒定的NOP行為。在此情形下,可將FPU中的所有信號視為瞬時(shí)邏輯。瞬時(shí)邏輯還可歸因于外來初始化輸入。如先前指出的,設(shè)計(jì)具有一組可能的初始狀態(tài)是很常見的。在此情形下,測試臺驅(qū)動器可通過引入初始化輸入(引入至主輸入)而以非確定性方式(自該組可能的初始狀態(tài))選擇單個(gè)初始狀態(tài)。然而,在第一個(gè)時(shí)間幀之后,初始化輸入的值是無關(guān)的。根據(jù)本發(fā)明的一個(gè)實(shí)施例,揭示一種技術(shù),該技術(shù)識別初始化輸入的可安全地被恒定值取代的子集,從而增強(qiáng)消除來自設(shè)計(jì)的瞬時(shí)的能力而不顯著增大設(shè)計(jì)的總大小。本文中所揭示的技術(shù)(其需要相對較小的運(yùn)行時(shí)間)通過將恒量注入至設(shè)計(jì)中而優(yōu)化邏輯設(shè)計(jì)。所揭示的技術(shù)使得能夠按比例調(diào)整至對于常規(guī)方法而言可能難處理的大型工業(yè)設(shè)計(jì)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,揭示一種技術(shù),該技術(shù)自動檢測邏輯設(shè)計(jì)中的瞬時(shí)初始行為的存在(以及瞬時(shí)初始行為的長度)并為設(shè)計(jì)提供約簡(優(yōu)化)信息。根據(jù)本發(fā)明的另一實(shí)施例,揭示一種用于將分析(例如,驗(yàn)證問題)分解成兩部分的技術(shù)設(shè)計(jì)在初始階段期間以一致方式行動的檢查(第一分解問題);及設(shè)計(jì)在初始階段之后以一致方式行動的檢查(第二分解問題)。通常,本文中所揭示的技術(shù)可應(yīng)用于形式驗(yàn)證、仿真、硬件加速和合成。根據(jù)又一實(shí)施例,揭示一種用于基于知曉設(shè)計(jì)未在初始階段中操作而最小化第二分解問題的大小的技術(shù)。通常,最小化第二分解問題的大小減小了設(shè)計(jì)復(fù)雜性且簡化了第二分解問題。對分解的資源定界減小了兩個(gè)所得到的分解問題的復(fù)雜性且促進(jìn)了技術(shù)對多種工業(yè)設(shè)計(jì)的適用性。通常,這些技術(shù)提供優(yōu)化信息,所述優(yōu)化信息可在合成/設(shè)計(jì)流程中使用以在減小的功耗、減小的面積等方面改進(jìn)所制造的半導(dǎo)體器件的效率。此外,所揭示的技術(shù)進(jìn)一步增強(qiáng)了合成中的后瞬時(shí)約簡的適用性,并且通過減小使用后瞬時(shí)約簡通常所必需的初始化結(jié)構(gòu)的大小而進(jìn)一步優(yōu)化驗(yàn)證分析。作為一個(gè)實(shí)例,識別瞬時(shí)信號的存在和持續(xù)時(shí)間的技術(shù)可使用三元仿真(其相對較快且可按比例調(diào)整)。根據(jù)本發(fā)明的另一實(shí)施例,可通過將無界驗(yàn)證問題分解為兩個(gè)驗(yàn)證子問題(即,在瞬時(shí)行為發(fā)生的初始時(shí)間幀內(nèi)的有界驗(yàn)證問題和在剩余時(shí)間幀內(nèi)的無界驗(yàn)證問題)而(自驗(yàn)證過程)消除瞬時(shí)邏輯。在此情形下,無界驗(yàn)證問題可安全地假設(shè)所有瞬態(tài)已穩(wěn)定于它們的后瞬時(shí)恒定值以簡化無界驗(yàn)證問題。根據(jù)本發(fā)明的各方面,用于識別可安全地以恒量替代的初始化輸入的可按比例調(diào)整技術(shù)使用與結(jié)構(gòu)分析組合的有界模型檢查(BMC)。通常,對于接通電源的非確定性的建模而言,消除存在于測試臺中的初始化輸入是有用的。因?yàn)橛糜谙矔r(shí)邏輯的所揭示技術(shù)可產(chǎn)生初始化輸入,所以可在從邏輯設(shè)計(jì)消除瞬時(shí)邏輯之后有利地實(shí)施消除初始化輸入的技術(shù)。通常,三元仿真有效地對邏輯設(shè)計(jì)中的一組可達(dá)到的狀態(tài)進(jìn)行過度近似。三元仿真的工作方式為保守地使用三元“X”值為主輸入建模并仿真一系列3值狀態(tài)直至狀態(tài)被重復(fù)為止。在收斂之后,該組觀測后的3值狀態(tài)構(gòu)成對該組可達(dá)到的狀態(tài)的過度近似。在時(shí)間“y”處的狀態(tài)在時(shí)間“χ+y”處被重復(fù)的實(shí)例三元仿真運(yùn)行中,可達(dá)到的狀態(tài)被過度近似。雖然對于性質(zhì)檢查而言與三元仿真關(guān)聯(lián)的過度近似時(shí)常過于粗略,但過度近似對于有效地識別特定設(shè)計(jì)特征是有用的。例如,特定的恒定和等效信號可為可檢測的(使用三元仿真),此情形促進(jìn)了設(shè)計(jì)簡化。作為另一實(shí)例,可通過使用三元仿真來檢測類似時(shí)鐘的振蕩信號而促進(jìn)時(shí)間相位抽象。除了瞬時(shí)持續(xù)時(shí)間(在該瞬時(shí)持續(xù)時(shí)間之后,瞬時(shí)信號穩(wěn)定于恒定行為)以外,三元仿真還可容易地被擴(kuò)充為有效地檢測瞬時(shí)信號的子集??山?jīng)由各種技術(shù)來實(shí)施使用三元仿真以找到瞬時(shí)信號的直接實(shí)現(xiàn)。在收斂之后, 可執(zhí)行對所有信號的掃描(swe印)以判定哪些信號在狀態(tài)重復(fù)循環(huán)(loop)內(nèi)保持恒定 (即,哪些信號為瞬時(shí)信號)。然后可將在狀態(tài)重復(fù)循環(huán)內(nèi)保持恒定的信號添加至瞬時(shí)列表 (連同信號所穩(wěn)定于的恒量)及信號被評估處于非恒定值的最后時(shí)間幀。通常,信號被評估處于非恒定值的最后時(shí)間幀表示信號的瞬時(shí)持續(xù)時(shí)間的上界(歸因于三元仿真的過度近似)。例如,瞬時(shí)信號的檢測可經(jīng)由如下函數(shù)來實(shí)施01:function detectTransients(design)
02//執(zhí)行三元仿真直至收斂為止
03:History := Φ ;
04:ternaryState = getTernarylnitialState (design)
05:for(time = 0 ; ;time++)do
06:if(ternaryState ^ History)then
07:cycleStartTime := calculateCycIeStartTime(History, ternaryState)
08:break
09:end if
10:History := History U ternaryState
11:ternaryState = getNextTernaryState(design, ternaryState)
12:end for
13
14//提取瞬時(shí)信號
15:transients := Φ ;
16:for all (signals s in design)do
17:for all (constants C in{0,1}) do
18:if ( V time > cycleStartTime,s = C) then
19duration := IatestToggle(s,History)// ^ cycleStartTime
20:transients := transients U(s,C,duration)
21:end if
22:end for
23:end for
24
25:return transients
26:end function
在以上detectl^ransients函數(shù)中,在一組瞬時(shí)信號內(nèi)的每一瞬時(shí)信號的最大瞬時(shí)持續(xù)時(shí)間之前,瞬時(shí)信號中的一個(gè)或多個(gè)可采用不同于所穩(wěn)定的恒定值的值。在此情形
下,可使用BMC以檢查任何性質(zhì)在初始時(shí)間幀內(nèi)的有效性。在最大瞬時(shí)持續(xù)時(shí)間之后,一組瞬時(shí)信號中的所有瞬時(shí)信號已穩(wěn)定于其對應(yīng)的恒定值。然后,可通過以瞬時(shí)信號的相應(yīng)恒定值替代這些瞬時(shí)信號而簡化邏輯設(shè)計(jì)(體現(xiàn)在網(wǎng)表中)??山又鴮?shí)施無界驗(yàn)證過程以檢查邏輯設(shè)計(jì)的簡化后的模型中的剩余時(shí)間幀。例如,可在基于變換的驗(yàn)證(TBV)架構(gòu)內(nèi)優(yōu)化無界驗(yàn)證。在TBV架構(gòu)中,在調(diào)用終端驗(yàn)證技術(shù)之前將一系列變換應(yīng)用于邏輯設(shè)計(jì)(體現(xiàn)在網(wǎng)表中),從而允許變換所提供的約簡產(chǎn)生針對終端驗(yàn)證技術(shù)的顯著加速。在此情形下,瞬時(shí)簡化例程可扮演網(wǎng)表變換的角色(而非針對現(xiàn)有驗(yàn)證技術(shù)的定制)以促進(jìn)與任何下游合成或驗(yàn)證技術(shù)的兼容性。通常,存在可用于檢測瞬時(shí)的眾多可能技術(shù)。典型地,需要使瞬時(shí)檢測技術(shù)窮舉地分析網(wǎng)表的行為以便確??雌饋碓诮o定時(shí)間幀之后終止的瞬時(shí)行為實(shí)際上在稍后時(shí)間幀處不會重新發(fā)生。根據(jù)本發(fā)明的一個(gè)實(shí)施例,使用三元仿真來過度近似網(wǎng)表的行為。作為另一實(shí)例,可根據(jù)以下提出的analyzeTernarySim函數(shù)(其類似于detectl^ransients函數(shù)且以偽代碼提供)來實(shí)施用于檢測瞬時(shí)的三元仿真function analyzeTernarySim(design){
01:currentState = initial state
02:inputValues =" XXXXXX. · ·“
03:stateHistory = empty array
05:transientSignals = empty array
06:settledValues := empty array
07transientDurations = empty array
09:for(timeStep :=0; ;timeStep := timeStep+1) {
10//執(zhí)行一個(gè)仿真步驟
11:currentState = ternarySimulate(currentState, inputValues)
12:X saturate
13://查找最近穩(wěn)定的瞬時(shí)信號
14:for all signals in design and not in transientSignals{
15:if (signal = = 0 in currentState or signal = = 1 in currentState) {
16:add signal to transientSignals
17:transientDurations[signal] = timeStep
18:settledValues[signal] := value of signal in currentState
19}
20}
22//檢查先前恒定的信號是否仍恒定
23:for all signals in transientSignals {
24:if (value of signal in currentState ! = settledValues[signal]) {
25:if(signal = = 0 in currentState or signal = = 1 in currentState){
26:transientDurations[signal] = timeStep
27settledValues[signal] := value of signal in currentState
28} else {
29:remove signal from transientSignals
30}
31}
32}
34//檢查收斂
35:if(stateHistory contains currentState) {
36:startLoopTime : = time at which first occurrence of currentState wasseen
37
38//舍棄穩(wěn)定不夠快的信號
39:for all signals in transientSignals {
40:if(transientDurations[signal] > startLoopTime)
41 -remove signal from transientSignals42 }43 hash value (modulo inversion) of all signals 氺not氺 in transientSignals44 create equivBuckets[signal] for each signal which matches > 1 hashed entry45 : r e tur η (t r an s i en t S i gna 1 s , settledValues, equivBuckets, transientDuration);46 }47 :add currentState to stateHistory48:}}參看以上所闡述的analyzeTernarySim函數(shù),在行1至行3中,假設(shè)設(shè)計(jì)處于設(shè)計(jì)師所指定的初始狀態(tài)下。如果未給定寄存器的初始狀態(tài),則該寄存器被指派值“X”,值“X” 指示該寄存器可為“0”或“1”。假設(shè)設(shè)計(jì)輸入可采取任何值(其由針對輸入的向量“Xs”來表示)。三元仿真維護(hù)所有可視狀態(tài)的列表(最初該列表為空)。在行5及行6中,假設(shè)不存在瞬時(shí)信號。這樣,settledValues及transientDurations數(shù)組為空。在行9至行12 中,通過遍歷所有時(shí)步來探查設(shè)計(jì)的時(shí)間行為。在每一時(shí)步中,使用三元仿真來形成邏輯設(shè)計(jì)的當(dāng)前狀態(tài)。應(yīng)了解,可使用“X飽和”技術(shù)來概括所述狀態(tài),這些“X飽和”技術(shù)促進(jìn)三元仿真例程的相對較快的收斂。在行13至行20中,在當(dāng)前時(shí)步中,信號可采用恒定的“0”或“1”賦值。如果一個(gè)信號對于所有未來時(shí)間點(diǎn)保持恒定,則該信號是瞬時(shí)的,且當(dāng)前時(shí)步表示瞬時(shí)持續(xù)時(shí)間。相應(yīng)地更新瞬時(shí)追蹤數(shù)據(jù)結(jié)構(gòu)。在行22至行32中,先前估計(jì)為瞬時(shí)的所有信號已在先前時(shí)步處采用“0”或“1”賦值。該函數(shù)接著檢查信號在當(dāng)前時(shí)步處于相同恒定值。如果信號在當(dāng)前時(shí)步不處于相同恒定值,則函數(shù)改進(jìn)對哪些信號是瞬時(shí)信號的估計(jì)。在行34至行44 中,如果當(dāng)前狀態(tài)等于在某一先前時(shí)步處所見的狀態(tài),則狀態(tài)的進(jìn)度已完成循環(huán),且所有未來時(shí)間處的所有未來狀態(tài)繼續(xù)遵循該循環(huán)。因此,函數(shù)斷定已遇到了每一可能狀態(tài),且函數(shù)返回已找到的瞬時(shí)信號的列表。參看行39至行42,在狀態(tài)的循環(huán)開始之前,瞬時(shí)信號應(yīng)已穩(wěn)定。如果此情形為真,則信號在循環(huán)上保持恒定,且因此對于所有未來時(shí)間點(diǎn)保持恒定。 如果信號穩(wěn)定得過晚,則從瞬時(shí)信號列表舍棄該信號。移至行43至行44,試圖識別在初始瞬時(shí)階段之后等效的信號。例如,可通過使用散列表記錄每一信號(除已被識別為恒量的那些信號外)在后瞬時(shí)階段期間所展現(xiàn)的值來識別等效信號。在瞬時(shí)階段之后等效的信號將具有相對于散列的后瞬時(shí)值相同的值??墒褂?例如)模逆運(yùn)算來進(jìn)行該比較,以將在后瞬時(shí)行為期間評估為相反值的兩個(gè)信號識別為冗余候選項(xiàng)。三元仿真技術(shù)是實(shí)用的,因?yàn)樵摷夹g(shù)相對較快、可按比例調(diào)整且連同簡單的后處理技術(shù)一起使能對穩(wěn)定于恒定值的信號的實(shí)時(shí)計(jì)算以識別穩(wěn)定于等效(或相反)后瞬時(shí)行為的信號。然而,三元仿真為過度近似,且因此是有損耗的。備選地,可使用一種更準(zhǔn)確(近似性較小)的方法。例如,可使用二元決策圖(BDD)來執(zhí)行可達(dá)性分析以識別從邏輯設(shè)計(jì)的初始狀態(tài)開始可達(dá)到的所有狀態(tài)。在該可達(dá)性分析期間,可維護(hù)表示在時(shí)間“0”(初始
狀態(tài))、時(shí)間“ 1 ”、時(shí)間“ 2 ”.....時(shí)間“ j,,處可達(dá)到的所有狀態(tài)的BDD,直至不再發(fā)現(xiàn)新的狀
態(tài)為止。接下來,可以以迭代方式分析每一寄存器(或者,設(shè)計(jì)中的每個(gè)門)在時(shí)間“j”處可達(dá)到的狀態(tài),從而評估哪些狀態(tài)恒定且哪些配對在于時(shí)間j處可達(dá)到的所有狀態(tài)中等效 /相反。恒定時(shí)間檢查通過線性(每個(gè)寄存器/門一次)探測所得到的時(shí)間“j”可達(dá)到狀態(tài)集合而直接進(jìn)行,從而評定該可達(dá)到狀態(tài)集合與對應(yīng)恒定條件的交集是否為空。等效/ 相反關(guān)系的判定通過對應(yīng)配對是等效/相反的若干二次(每對寄存器/門一次)交集檢查而直接進(jìn)行。該檢查產(chǎn)生具有瞬時(shí)持續(xù)時(shí)間“j”的冗余候選項(xiàng)的集合。備選地,可對時(shí)間 “i”. . . “j”的已達(dá)到狀態(tài)集合執(zhí)行分析,從而產(chǎn)生具有瞬時(shí)持續(xù)時(shí)間“i”的后瞬時(shí)冗余候選項(xiàng)的集合。作為另一備選實(shí)施例,在任何時(shí)間處可達(dá)到的狀態(tài)的集合可被過度近似,因?yàn)槿绱瞬僮骺蓽p小分析運(yùn)行時(shí)間。某些基于可滿足性的技術(shù)也產(chǎn)生過度近似的可達(dá)到狀態(tài)集合表示。例如,內(nèi)插使
用可滿足性分析以迭代方式近似在時(shí)間0、1.....“j”處可達(dá)到的狀態(tài)的集合,直至判定在
時(shí)間“j”處不再遇到額外狀態(tài)為止。經(jīng)常使用網(wǎng)表類型的表示來表示所得到的狀態(tài)集合。可直接將基于BDD的分析應(yīng)用于該狀態(tài)集合表示。備選地,可使用用于直接針對時(shí)間“j”(或備選地,按照基于BDD的技術(shù),時(shí)間“i”... “j”)的狀態(tài)集合表示識別網(wǎng)表電路中的冗余的技術(shù)來識別后瞬時(shí)冗余。為了使用通用驗(yàn)證技術(shù)檢查瞬時(shí)持續(xù)時(shí)間之后的性質(zhì),通常有必要對設(shè)計(jì)進(jìn)行時(shí)移。在此過程中,可調(diào)整設(shè)計(jì)的時(shí)間基線以使得原始設(shè)計(jì)中的最大瞬時(shí)持續(xù)時(shí)間 (maxTransientDuration)的時(shí)間對應(yīng)于時(shí)移后的設(shè)計(jì)中的時(shí)間“0”。在此情形下,修改設(shè)計(jì)的初始狀態(tài)以使得時(shí)移后的設(shè)計(jì)在maxTransientDuration時(shí)步中可達(dá)到的任何狀態(tài)下開始。例如,可通過展開轉(zhuǎn)變關(guān)系且使用展開后的結(jié)構(gòu)的輸出來驅(qū)動初始狀態(tài)而實(shí)現(xiàn)該變換。這類似于使用結(jié)構(gòu)的符號化仿真來計(jì)算新的初始值集合??山又褂貌捎靡唤M檢測后的瞬時(shí)信號的相對直接的程序以簡化設(shè)計(jì)。在此實(shí)施例中,可使用BMC來檢查最大瞬時(shí)持續(xù)時(shí)間之前的性質(zhì)。可接著對設(shè)計(jì)進(jìn)行時(shí)移,并且可通過將瞬時(shí)信號與相應(yīng)穩(wěn)定恒量合并來簡化網(wǎng)表。因?yàn)橥ǔ?裳杆俚孬@得大部分益處,所以可使運(yùn)行時(shí)間限于相對較低的時(shí)間“t”,例如,十秒鐘。例如,瞬時(shí)信號的簡化可經(jīng)由如下函數(shù)來實(shí)施01 :function simplifyTransients (design, transients)02 :maxTransientDuration = computeMaxTransientDuration (transients)03 :for(t = 0 ; (t < maxTransientDuration) ; t++) do04 Validate that properties are not falsifiable at time t with BMC05:06 ://時(shí)移1個(gè)時(shí)鐘周期07 :for all (registers r e design)do08 :initialValue(r) = nextState (r)09 : end for10:
11 ://逐漸簡化設(shè)計(jì)12 for all(g e transients)do13 if(transients[g]. settlingTime ^ t)then14:merge(design, g, transients[g]. s ettledConstant)15 :end if16 : end for17 end for18 :end function在以上simplify Transients函數(shù)中,以穩(wěn)定恒量來替代瞬時(shí)。以上 simplifyTransients函數(shù)的一種應(yīng)用是簡化驗(yàn)證(例如,形式驗(yàn)證、仿真或硬件加速)架構(gòu)。在如下decomposedVerification函數(shù)(以偽代碼呈現(xiàn))中例示在驗(yàn)證中利用后瞬時(shí)
冗余信息的另一方法
function decomposedVerification(design){
01:transientSignals = identify_posttransient_redundancies (design)
02:if(transientSignals is empty)
03:return" Cannot decompose verification"
04:maxDuration = maximum amount of time any transientSignals aretransient
06//分解驗(yàn)證的部分1 瞬時(shí)幀的有界驗(yàn)證
07:if(boundedVerification(design, maxDuration) = 〃 Counter-exampleFound")
08:return〃 Counter-example Found"
09//分解驗(yàn)證的部分2 簡化和時(shí)移后的設(shè)計(jì)的無界驗(yàn)證
10:design = timeShift(design, maxDuration)
11:design := simplifyDesign(design, transientSignals)
12:return unboundedVerification(design)
}
在以上所闡述的decomposedVerification函數(shù)的行1至行4中,可使用任意技術(shù)來識別在某-一初始瞬時(shí)時(shí)段之后展現(xiàn)冗余的門。通常,所述分析識別瞬時(shí)信號和瞬時(shí)信號
的持續(xù)時(shí)間兩者。如果未找到瞬時(shí)信號,則約簡機(jī)會不存在。然而,歸因于常見設(shè)計(jì)式樣及常見驗(yàn)證方法,實(shí)際中經(jīng)常找到瞬時(shí)信號。在此情形下,該函數(shù)計(jì)算所有瞬時(shí)的最大持續(xù)時(shí)間,且在若干時(shí)步之后,該函數(shù)斷定所有瞬時(shí)已穩(wěn)定于其恒定值。在行7至行8中,該函數(shù)檢查設(shè)計(jì)在接通電源之后的最初toaxDuration個(gè)時(shí)步正確地行動。例如,可使用BMC檢查正確設(shè)計(jì)行為。歸因于maxDuration通常相對較小的事實(shí),以此方式檢查正確設(shè)計(jì)行為可容易地按比例調(diào)整。 如果在最初時(shí)步中找到反例,則設(shè)計(jì)無法如預(yù)期地行動且出于調(diào)試目的而返回該反例。備選地,可在試圖找到反例中使用欠近似技術(shù)(如仿真或硬件加速)。參看行10及行11,該邏輯設(shè)計(jì)的時(shí)間基準(zhǔn)在時(shí)間上前進(jìn)至所有瞬時(shí)已穩(wěn)定于其恒定值的時(shí)刻。取決于驗(yàn)證設(shè)置,此操作可以以若干方式進(jìn)行。對于形式驗(yàn)證而言,可使用時(shí)移來確保精確的分析結(jié)果。對于仿真或加速而言,可確定在有界驗(yàn)證周期之后可達(dá)到的一組初始狀態(tài),且可將所得到的簡化后的設(shè)計(jì)初始化成這些狀態(tài)以實(shí)現(xiàn)增強(qiáng)的仿真或加速分析。應(yīng)注意,在所有這些架構(gòu)中,可通過以每個(gè)瞬時(shí)信號的相應(yīng)恒定值替代每個(gè)瞬時(shí)信號來簡化網(wǎng)表。參看行12, 接著使用無界驗(yàn)證技術(shù)(例如,歸納、內(nèi)插、顯式可達(dá)性等)來驗(yàn)證時(shí)移和簡化后的設(shè)計(jì)。典型地,無界驗(yàn)證極其困難。然而,設(shè)計(jì)簡化有助于減小驗(yàn)證過程的復(fù)雜性。對于一些設(shè)計(jì)式樣而言,不可能在沒有簡化的情況下在合理的時(shí)間限制內(nèi)完成驗(yàn)證。通常,因?yàn)椴徽_地行動的設(shè)計(jì)將具有可使用分解驗(yàn)證找到的有效反例,所以分解驗(yàn)證策略健全且完善。正確設(shè)計(jì)將不具有此類反例,并且每個(gè)分解驗(yàn)證問題將成功完成。 根據(jù)一個(gè)或多個(gè)實(shí)施例,在已檢測到瞬時(shí)信號且最多到最大瞬時(shí)持續(xù)時(shí)間的有界驗(yàn)證完成之后,邏輯的時(shí)間基準(zhǔn)被移位。在以下所闡述的偽代碼中例示實(shí)例timeShift函數(shù)(其關(guān)注于窮舉形式驗(yàn)證架構(gòu))function timeShift (design, timeSteps) {1 :unrolledDesign := concatenate #timeSteps transition relations3 :for each register in design4 :initialValue[register] = signal in unrolledDesign corresponding to register at time timeSteps6 :return design}參看該timeShift函數(shù)的行1,根據(jù)當(dāng)前狀態(tài)和邏輯設(shè)計(jì)輸入(稱為轉(zhuǎn)變關(guān)系)確定下一狀態(tài)。通過將轉(zhuǎn)變關(guān)系串接在一起而構(gòu)建針對最初針加必丨印s的設(shè)計(jì)行為的模型。 時(shí)間“0”轉(zhuǎn)變關(guān)系中的寄存器被其設(shè)計(jì)師所指定的初始值(展開后)取代。信號“X”的時(shí)間“K”實(shí)例是一個(gè)邏輯節(jié)點(diǎn),該邏輯節(jié)點(diǎn)可采用“X”可在原始邏輯設(shè)計(jì)中在“K”個(gè)時(shí)步之后采用的邏輯值中的任一個(gè)。參看行3至行4,每一寄存器的初始狀態(tài)被修改為來自展開后的設(shè)計(jì),從而確保在時(shí)間“0”處修改后的邏輯設(shè)計(jì)中的寄存器可采用原始邏輯設(shè)計(jì)中在時(shí)間#timeSt印s處可能的任一值。以此方式,修改后的設(shè)計(jì)被時(shí)移。以窮舉形式呈現(xiàn)timeShift和decomposedVerification函數(shù)以完成準(zhǔn)確形式驗(yàn)證(即,這些函數(shù)促進(jìn)對要向前移位以使能后瞬時(shí)約簡的時(shí)間幀的窮舉性分析),該準(zhǔn)確形式驗(yàn)證針對初始時(shí)間幀的“有界驗(yàn)證”和移位之后的“無界驗(yàn)證”兩者。在一些情形下(例如,當(dāng)使用不完善驗(yàn)證技術(shù),諸如,仿真或硬件加速),可能需要對分析進(jìn)行欠近似。在使用不完善驗(yàn)證技術(shù)的架構(gòu)中,有界驗(yàn)證(boundedVerification)是可選的。如果執(zhí)行有界驗(yàn)證,則有界驗(yàn)證還可以可選地使用仿真或硬件加速架構(gòu),以在初始瞬時(shí)時(shí)間幀期間直接欠近似地評估網(wǎng)表。類似地,timeShift函數(shù)可被欠近似以計(jì)算與所得到的展開后的設(shè)計(jì)兼容的狀態(tài)的任意子集(再次使用任意技術(shù)集合,例如,要用于無界驗(yàn)證的仿真或硬件加速方法),并且可相對于任意狀態(tài)子集執(zhí)行欠近似的無界驗(yàn)證。在所有瞬時(shí)信號的時(shí)移之后, 在所有時(shí)間內(nèi)將恒定值指派給這些瞬時(shí)信號??山又运矔r(shí)信號的相應(yīng)恒量來替代這些瞬時(shí)信號,并且可使用恒定傳播以簡化設(shè)計(jì)??墒褂萌我粩?shù)目的方法來最小化timeSiift函數(shù)所產(chǎn)生的展開后的邏輯的大小。 例如,可通過如下所闡述的reduceUnrolledTimeSiift函數(shù)來最小化展開后的邏輯function reduceUnrolledTimeShift(design){
1 :for(i = 0 ;NOT termination criterion ;i++)2 :registerList = registers whose next-state functions are sensitized to other registers with nonconstant initial values due to timeShift3 :perform boundedVerification at time" i "4 :create unrolIedDesign representing registerList valuationsfor time" i"5 -perform an arbitrary set of reduction steps on unrolledDesign6 :if any random gates no longer fanout to registerList, tie to an arbitrary cons tant}}在reduceUnrolIedTimeShift函數(shù)中,通過消除“隨機(jī)”門而最小化邏輯,這些 “隨機(jī)”門的值被確定為在特定數(shù)目個(gè)時(shí)間幀內(nèi)與網(wǎng)表的分析無關(guān)。例如,“終止準(zhǔn)則”可包括用于排除對未來時(shí)間幀的分析的任一任意停止準(zhǔn)則、用戶指定的參數(shù)、時(shí)間,或存儲器限制,等等。應(yīng)注意,在純粹合成架構(gòu)中(即,當(dāng)試圖使用該技術(shù)自動地優(yōu)化增強(qiáng)的半導(dǎo)體器件(需要較小面積、較少功耗等)的設(shè)計(jì)表示時(shí)),表示符號化的非恒定初始值的需要可排除使合成程序完全自動化的能力。具體地說,因?yàn)閮?yōu)化后的網(wǎng)表可能與原始網(wǎng)表的難以關(guān)聯(lián)的未來時(shí)間幀相關(guān),所以用于確認(rèn)合成未更改設(shè)計(jì)行為的自動等效性檢查可能變得困難。因此,可能需要將所得到的優(yōu)化可能性用作對設(shè)計(jì)師的反饋,如果所得到的優(yōu)化后的網(wǎng)表具有符號化的初始狀態(tài),則設(shè)計(jì)師可相應(yīng)地以手動方式優(yōu)化邏輯設(shè)計(jì)。然而,在許多情形下,本文中所揭示的時(shí)移優(yōu)化技術(shù)能夠消除大部分(如果不是全部)符號化初始值,使得該技術(shù)能夠在自動化合成流程中無縫地使用以實(shí)現(xiàn)減小的功率、面積等。展開寄存器的初始狀態(tài)可增大設(shè)計(jì)的大小,且即使稍后恒定傳播,此技術(shù)亦可能實(shí)際上增大總體設(shè)計(jì)大小。此情形可通過逐漸展開初始狀態(tài)且仔細(xì)地監(jiān)視設(shè)計(jì)的大小來克服。一旦設(shè)計(jì)大小增大超過預(yù)定閾值,則可停止展開。在此情形下,應(yīng)丟棄具有長于展開的量的持續(xù)時(shí)間的任何瞬時(shí)。在實(shí)際中,此過程促進(jìn)利用大部分已找到的瞬時(shí)信號,不會因不合理地增大設(shè)計(jì)大小而負(fù)面地影響驗(yàn)證。通常,某一量的大小增大是可接受的??烧J(rèn)為邏輯設(shè)計(jì)為兩部分計(jì)算寄存器的初始值且僅在時(shí)間“0”處使用的邏輯以及在所有大于零的時(shí)間使用的邏輯。本文中所揭示的技術(shù)可增大初始值邏輯,同時(shí)減小其他邏輯。許多形式驗(yàn)證技術(shù)(例如,歸納)只是最低程度地利用初始化邏輯,并且從這些技術(shù)的角度,初始化邏輯的增大是無意義的。在仿真或硬件加速中,因?yàn)橛?jì)算并重用時(shí)移后的初始值的子集,所以邏輯膨脹(logic bloat)可以是不相關(guān)的。時(shí)移意謂著修改后的設(shè)計(jì)從預(yù)定數(shù)目個(gè)時(shí)步后將不仿真任何行為。為了使形式驗(yàn)證健全,通常應(yīng)單獨(dú)地驗(yàn)證早期時(shí)步。例如,可通過BMC來驗(yàn)證早期時(shí)步(其數(shù)目等于最大瞬時(shí)持續(xù)時(shí)間)。如果時(shí)步的數(shù)目較大,則在合理時(shí)間限制內(nèi)完成BMC可能不切實(shí)際。此情形可通過逐漸地使BMC個(gè)別地檢查每個(gè)時(shí)步來克服。如果在任何檢查期間超過了計(jì)算資源,則無法完成整個(gè)BMC問題。在此情形下,至少已檢查了初始時(shí)步的一個(gè)子集??蓙G棄持續(xù)時(shí)間超過所檢查的持續(xù)時(shí)間的瞬時(shí)信號,且可進(jìn)行使用剩余瞬時(shí)信號的驗(yàn)證分解。
如果設(shè)計(jì)未如預(yù)期地行動,則可能在驗(yàn)證時(shí)移后的模型時(shí)找到反例。在此情形下, 反例也被時(shí)移。應(yīng)務(wù)必不使反例時(shí)移,以便根據(jù)原始設(shè)計(jì)而不是時(shí)移后的中間表示將該反例報(bào)告給用戶。具體地說,假設(shè)將網(wǎng)表時(shí)移“k”個(gè)時(shí)步,則來自網(wǎng)表的順序部分的反例值應(yīng)向前時(shí)移“k”個(gè)時(shí)間幀以抵銷對整體驗(yàn)證的轉(zhuǎn)變的影響。另外,可使用用于表示展開后的初始時(shí)間幀的邏輯值來填充順序網(wǎng)表賦值的向前移位在這“k”個(gè)時(shí)間幀期間所遺留下的間隙。時(shí)常,驗(yàn)證工程師使用約束,這些約束指示驗(yàn)證環(huán)境應(yīng)僅在保持指定條件時(shí)探查設(shè)計(jì)的狀態(tài)。在使設(shè)計(jì)時(shí)移之后,應(yīng)務(wù)必確保在已移位掉的時(shí)步中遵守(honor)這些約束。這可通過在時(shí)移后的設(shè)計(jì)中將這些約束變換為針對展開后的初始值的復(fù)雜限制來實(shí)現(xiàn)。具體地說,不僅通過保留時(shí)移后的約束,而且還通過使用上述展開程序來針對每個(gè)時(shí)間幀0. . . k-1 (假設(shè)總時(shí)移為“k”個(gè)時(shí)步)添加約束,從而表示該約束在時(shí)間“0” (即,針對直接饋入該約束的寄存器的初始值)、時(shí)間“1” (針對饋入在時(shí)間“0”處相關(guān)的寄存器的寄存器)、...處將具有的值。如前所述,一些測試臺包括初始化輸入以為復(fù)雜初始值建模。初始化輸入也可由于在時(shí)移網(wǎng)表中使用符號化仿真以實(shí)現(xiàn)瞬時(shí)信號的簡化而出現(xiàn)。初始值的類似復(fù)雜性以外圍重定時(shí)的副產(chǎn)品的形式存在。由于時(shí)移后的初始值引起的大小的增大是不期望的,因?yàn)槠淇墒褂伤矔r(shí)信號的合并而引起的大小的減小偏移至恒量。雖然特定技術(shù)(例如,歸納) 可不受初始值復(fù)雜性增大的影響,但在TBV設(shè)置中,一些技術(shù)會受增大的復(fù)雜性的影響。如前所述,初始化輸入是值僅在時(shí)間“0”處影響邏輯設(shè)計(jì)的輸入,且經(jīng)常用于編碼復(fù)雜的初始狀態(tài)。通常,時(shí)移固有地引入大量初始化輸入。然而,并非所有引入的初始化輸入皆可與設(shè)計(jì)行為相關(guān)。因此,通常可通過移除引入的初始化輸入的至少一個(gè)子集來優(yōu)化時(shí)移后的設(shè)計(jì)。例如,在可在四個(gè)可能初始狀態(tài)下開始的設(shè)計(jì)中,可使用兩個(gè)初始化輸入來為該組初始狀態(tài)建模。在狀態(tài)轉(zhuǎn)變圖(STG)中的所有路徑在兩個(gè)時(shí)步之后皆通過單個(gè)支配狀態(tài)的情形下,有可能在不影響設(shè)計(jì)的行為的情況下減小可能初始狀態(tài)的數(shù)目。因?yàn)樵诰W(wǎng)表中使用額外初始化輸入來表示該組初始值,所以可通過使用恒量來替代初始化輸入來執(zhí)行簡化。此類型的簡化是基于不關(guān)心可觀察性(observability don' t care, 0DC)的簡化的形式,因?yàn)樵谟邢迶?shù)目個(gè)時(shí)步之后不再可觀察到個(gè)別初始狀態(tài)??蓡为?dú)使用結(jié)構(gòu)分析來檢測與設(shè)計(jì)的行為無關(guān)的初始化輸入的子集。例如,可使用影響錐(COI)分析來識別在固定數(shù)目個(gè)時(shí)步“t”之后對網(wǎng)表沒有影響的輸入的子集。一旦識別了無關(guān)初始化輸入,則可在時(shí)間“t”之后在不影響設(shè)計(jì)的行為的情況下以任意值來替代該無關(guān)初始化輸入。在此情形下,通常保證修改后的設(shè)計(jì)在時(shí)間“t”之后與原始設(shè)計(jì)等效,但在時(shí)間“t”之前,修改后的設(shè)計(jì)僅可訪問原始設(shè)計(jì)的狀態(tài)的一個(gè)子集。為了確保在簡化期間不遺漏有效反例,通常有必要在簡化之前確認(rèn)性質(zhì)直至?xí)r間“t”的正確性。例如,可通過以下所闡述的simplifyhputs函數(shù)來消除無關(guān)輸入。01 :function simplifylnputs (design, maxTime)02 :unrolIedModel = Φ ;03 for all (registers r e design)do04 instance of r in unroIledModel := initialValue(design, r)
05 :end for06 :for(t = 0 ;t < maxTime ;t++) do07 Validate that properties are not falsifiable at time t08:09 ://逐漸展開模型10 :Append one transition relation to unroIledModel11 :unrolIedModel := resynthesize(unro1IedMode1)12:13 ://計(jì)算展開后的COI14 :C = Φ ;15 :for all gates g e (next-state functions U properties)do16 :C = C U COI (unroIledMode 1, last temporal instance of g)17 end for18 19 //移除不必要的輸入20 :for all(primary input s e 2 design)do21:if (I ^ C) then22 :merge (design, i,0)23 :end if24 :end for25 :end for26 :end function該simplifyhputs函數(shù)逐步地增大時(shí)間“t”直至超過計(jì)算資源為止。對于每個(gè) “t”而言,執(zhí)行驗(yàn)證以確保性質(zhì)在該時(shí)間幀處無法被竄改。接下來,逐漸展開設(shè)計(jì)并檢驗(yàn)其 C0L·為了減小COI的大小且增強(qiáng)技術(shù)的約簡潛力,可針對展開后的設(shè)計(jì)使用合成技術(shù)(布爾可滿足性(SAT)掃描、重寫,等等)。在此情形下,不屬于下一狀態(tài)函數(shù)和性質(zhì)的COI的輸入通過將這些輸入與恒量“0”合并而被從設(shè)計(jì)移除。與大部分基于ODC的簡化例程不同, 以上函數(shù)所識別的所有簡化固有地兼容。這些簡化可在不彼此干擾的情況下被同時(shí)利用, 從而導(dǎo)致較大的效率。另外,因?yàn)樵摷夹g(shù)依賴于電路結(jié)構(gòu),所以其可按比例調(diào)整性很高。然而,因?yàn)樵摷夹g(shù)是不完善的,所以可能無法識別一些無關(guān)的初始化輸入??赏ㄟ^傳統(tǒng)的基于 ODC的簡化的后處理來補(bǔ)充該技術(shù)。通常,無關(guān)輸入消除技術(shù)減小了計(jì)算在瞬時(shí)簡化中所產(chǎn)生的時(shí)移后的網(wǎng)表的初始值所必要的符號化仿真的開銷。通常,初始化輸入簡化在減輕由瞬時(shí)簡化所引起的邏輯膨脹方面是有效的。如以上所指出,用于消除無關(guān)輸入的所揭示技術(shù)使用BMC和結(jié)構(gòu)分析來移除初始化輸入。通常,該技術(shù)相對較快,但無法識別所有不必要的初始化輸入,且因此,可通過在以上技術(shù)之后運(yùn)行更徹底的初始化輸入簡化例程來識別額外不必要的初始化輸入。以上技術(shù)與傳統(tǒng)基于ODC的優(yōu)化技術(shù)的類似之處在于,其針對每個(gè)候選簡化產(chǎn)生設(shè)計(jì)的邏輯窗口的副復(fù)本(side copy),從而評定特定簡化是否可被視為相對于該窗口更改設(shè)計(jì)行為。此特定技術(shù)限于相對于可配置的順序深度的邏輯窗口來評定合并初始化輸入的有效性。通常,瞬時(shí)簡化主要利用三元仿真和BMC,并且初始化簡化利用結(jié)構(gòu)方法和BMC。 這些技術(shù)是有效且可按比例調(diào)整的,且可逐漸地執(zhí)行大部分分析。這些簡化技術(shù)皆可被實(shí)施為隨時(shí)間幀逐漸地簡化設(shè)計(jì),直至耗盡預(yù)定計(jì)算限制為止。本文中所描述的技術(shù)可實(shí)施于根據(jù)TBV架構(gòu)構(gòu)建的驗(yàn)證工具中,在TBV架構(gòu)中,在利用終端驗(yàn)證引擎來試圖解決簡化后的問題之前,各種引擎逐漸地簡化復(fù)雜性質(zhì)。在魯棒的驗(yàn)證設(shè)置中,可能需要在以上簡化之前和之后調(diào)用內(nèi)插以最大化獲得確鑿結(jié)果的機(jī)會。在順序上等效的信號(有時(shí)稱為信號對應(yīng))的檢測和簡化是減小順序邏輯設(shè)計(jì)的大小的有效方式。時(shí)常,這些約簡證明了安全性性質(zhì),或在針對另一下游驗(yàn)證引擎而簡化問題方面是有效的。本文中所揭示的技術(shù)涉及重定時(shí),因?yàn)閮煞N方法皆使設(shè)計(jì)時(shí)移且作為副產(chǎn)品而遺留下復(fù)雜的初始值。在各種情形下,時(shí)移并簡化瞬時(shí)信號對于通過歸納完成證明而言可以是至關(guān)重要的,且因此,所揭示的技術(shù)可形成各種驗(yàn)證方法的總體可按比例調(diào)整性的關(guān)鍵部分。具體地說,在順序等效檢查(SEC)中,非常需要成對等效的內(nèi)部點(diǎn)的識別來確保輸入/輸出等效的歸納證明的成功完成。內(nèi)部點(diǎn)的這些配對中的許多配對初始地由于接通電源不確定性而不等效,且輸入-輸出等效的歸納證明因?yàn)椴辉俦3謨?nèi)部等效而失敗。通常,在SEC流程的特定方面,瞬時(shí)消除比重定時(shí)更為需要,因?yàn)镾EC的可按比例調(diào)整性在一定程度上依賴于跨越正進(jìn)行等效檢查的設(shè)計(jì)的寄存器的基于名稱和基于結(jié)構(gòu)的相關(guān)性。然而,重定時(shí)可任意地更改寄存器布置,從而減小了 SEC試探的可用性。通常,本發(fā)明涉及存在于RT級設(shè)計(jì)中的兩種類型的冗余信息瞬時(shí)信號和初始化輸入。本文中已提出了用于識別并移除兩種現(xiàn)象的技術(shù)。已在工業(yè)驗(yàn)證環(huán)境中將所建議的技術(shù)實(shí)施為在重量型形式驗(yàn)證技術(shù)的調(diào)用之前的輕量型設(shè)計(jì)簡化步驟。設(shè)計(jì)中的許多安全性性質(zhì)不可通過內(nèi)插證明。在簡化之后,額外安全性性質(zhì)通常可通過內(nèi)插證明。在信號對應(yīng)之前應(yīng)用簡化提供了 “與”門和寄存器的改進(jìn)的約簡。本文中所揭示的技術(shù)在于最小寄存器重定時(shí)之后簡化設(shè)計(jì)、減小“與”門、寄存器及輸入方面是有效的。將所揭示的簡化技術(shù)應(yīng)用為預(yù)處理步驟傾向于改進(jìn)大型工業(yè)設(shè)計(jì)上的輸入/輸出等效的歸納證明的完成。參看圖2,例示了一個(gè)實(shí)例計(jì)算機(jī)系統(tǒng)200,其可配置為執(zhí)行根據(jù)本發(fā)明的各種實(shí)施例而配置的工具(該工具配置為分析集成電路邏輯設(shè)計(jì)(設(shè)計(jì)))。計(jì)算機(jī)系統(tǒng)200包括耦合至存儲子系統(tǒng)204的處理器202、顯示器206、輸入設(shè)備208,以及大容量存儲設(shè)備210。 存儲子系統(tǒng)204包括適合應(yīng)用的量的易失性存儲器(例如,動態(tài)隨機(jī)存取存儲器(DRAM)) 和非易失性存儲器(例如,只讀存儲器(ROM))。例如,顯示器206可以是陰極射線管(CRT) 或液晶顯示器(LCD)。例如,輸入設(shè)備208可以是鼠標(biāo)和鍵盤。大容量存儲設(shè)備210(例如, 其可包括光盤只讀存儲器(CD-ROM)驅(qū)動器及/或硬盤驅(qū)動器(HDD))配置為接收或包括存儲適當(dāng)程序代碼(例如,操作系統(tǒng)(OS)、分析工具、驗(yàn)證工具等)的盤。參看圖3,例示了用于執(zhí)行邏輯設(shè)計(jì)(其體現(xiàn)于網(wǎng)表中)的分析的過程300(其可通過一個(gè)或多個(gè)處理器來實(shí)施),過程300在塊302中開始,在此點(diǎn)處控制轉(zhuǎn)移至塊304。在塊304中,過程300檢測邏輯設(shè)計(jì)中的初始瞬時(shí)行為。接下來,在塊306中,確定初始瞬時(shí)行為的持續(xù)時(shí)間。接著,在塊308中,基于初始瞬時(shí)行為來收集關(guān)于邏輯設(shè)計(jì)的約簡信息。 接下來,在塊310中,接著基于約簡信息來修改網(wǎng)表。在塊310之后,控制轉(zhuǎn)移至塊312,在塊312處,控制返回到調(diào)用例程。因此,本文中已揭示總體上減小集成電路邏輯設(shè)計(jì)的分析(例如,驗(yàn)證)時(shí)間的若干技術(shù)。附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。本文中所用的術(shù)語,僅僅是為了描述特定的實(shí)施例,而不意圖限定本發(fā)明。本文中所用的單數(shù)形式的“一”、“一個(gè)”和“該”,旨在也包括復(fù)數(shù)形式,除非上下文中明確地另行指出。還要知道,“包含”和/或“包括”一詞在本說明書中使用時(shí),說明存在所指出的特征、整體、步驟、操作、單元和/或組件,但是并不排除存在或增加一個(gè)或多個(gè)其它特征、整體、步驟、操作、單元和/或組件,以及/或者它們的組合。以下的權(quán)利要求中的對應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置或步驟的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它單元相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。所給出的對本發(fā)明的描述其目的在于示意和描述,并非是窮盡性的,也并非是要把本發(fā)明限定到所表述的形式。對于所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不偏離本發(fā)明范圍和精神的情況下,顯然可以作出許多修改和變型。對實(shí)施例的選擇和說明,是為了最好地解釋本發(fā)明的原理和實(shí)際應(yīng)用,使所屬技術(shù)領(lǐng)域的普通技術(shù)人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實(shí)施方式。已如此詳細(xì)并參考本發(fā)明的優(yōu)選實(shí)施例描述本發(fā)明,顯然,在不脫離所附權(quán)利要求中限定的本發(fā)明的范圍的情況下,修改及變型是可能的。
權(quán)利要求
1.一種用于執(zhí)行對邏輯設(shè)計(jì)的分析的方法,所述方法包括使用數(shù)據(jù)處理系統(tǒng)的一個(gè)或多個(gè)處理器來檢測(304)體現(xiàn)在網(wǎng)表內(nèi)的邏輯設(shè)計(jì)中的初始瞬時(shí)行為;使用所述一個(gè)或多個(gè)處理器中的至少一個(gè)處理器來確定(306)所述初始瞬時(shí)行為的持續(xù)時(shí)間;使用所述一個(gè)或多個(gè)處理器中的至少一個(gè)處理器來基于所述初始瞬時(shí)行為收集(308) 關(guān)于所述邏輯設(shè)計(jì)的約簡信息;以及使用所述一個(gè)或多個(gè)處理器中的至少一個(gè)處理器來基于所述約簡信息修改(310)所述網(wǎng)表。
2.如權(quán)利要求1的方法,其中所述初始瞬時(shí)行為與一個(gè)或多個(gè)瞬時(shí)信號關(guān)聯(lián)。
3.如權(quán)利要求1的方法,其中所述初始瞬時(shí)行為與一個(gè)或多個(gè)初始化輸入關(guān)聯(lián)。
4.如權(quán)利要求1的方法,其中使用三元仿真來檢測所述邏輯設(shè)計(jì)中的所述初始瞬時(shí)行為。
5.如權(quán)利要求1的方法,其中修改所述網(wǎng)表包括從所述邏輯設(shè)計(jì)消除瞬時(shí)邏輯。
6.如權(quán)利要求5的方法,其中消除瞬時(shí)邏輯包括將無界驗(yàn)證問題分解為在所述初始瞬時(shí)行為所發(fā)生的初始時(shí)間幀內(nèi)的有界驗(yàn)證問題和在所述初始時(shí)間幀之后的后瞬時(shí)時(shí)間幀內(nèi)的無界驗(yàn)證問題。
7.如權(quán)利要求6的方法,還包括通過將所有瞬時(shí)視為已穩(wěn)定于后瞬時(shí)恒定值而簡化在所述后瞬時(shí)時(shí)間幀內(nèi)的所述無界驗(yàn)證問題。
8.如權(quán)利要求5的方法,還包括結(jié)合結(jié)構(gòu)分析而使用有界模型檢查以在消除所述瞬時(shí)邏輯之后識別初始化輸入。
9.如權(quán)利要求1的方法,還包括使用所述數(shù)據(jù)處理系統(tǒng)將所述邏輯設(shè)計(jì)的驗(yàn)證問題分解為第一階段和第二階段,其中所述第一階段對應(yīng)于啟動階段,并且所述第二階段對應(yīng)于在所述啟動階段之后發(fā)生的階段;以及使用所述一個(gè)或多個(gè)處理器中的至少一個(gè)處理器基于知曉所述邏輯設(shè)計(jì)未在所述第二階段中展現(xiàn)瞬時(shí)初始行為而最小化所述驗(yàn)證問題的所述第二階段。
10.如權(quán)利要求1的方法,其中使用對所述網(wǎng)表的行為進(jìn)行過度近似的三元仿真來檢測所述瞬時(shí)初始行為。
11.如權(quán)利要求1的方法,還包括使用所述一個(gè)或多個(gè)處理器中的至少一個(gè)處理器將所述網(wǎng)表時(shí)移最大瞬時(shí)持續(xù)時(shí)間, 以促進(jìn)在所述瞬時(shí)初始行為之后檢查所述邏輯設(shè)計(jì)。
12.如權(quán)利要求1的方法,其中所述分析對應(yīng)于形式驗(yàn)證、仿真、硬件加速或合成中的一個(gè)。
13.—種體現(xiàn)在計(jì)算機(jī)可讀存儲介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括代碼,當(dāng)被執(zhí)行時(shí),所述代碼配置為使數(shù)據(jù)處理系統(tǒng)執(zhí)行以下操作經(jīng)由三元仿真檢測體現(xiàn)在網(wǎng)表內(nèi)的邏輯設(shè)計(jì)中的初始瞬時(shí)行為; 確定所述初始瞬時(shí)行為的持續(xù)時(shí)間;基于所述初始瞬時(shí)行為收集關(guān)于所述邏輯設(shè)計(jì)的約簡信息;以及基于所述約簡信息修改所述網(wǎng)表。
14.如權(quán)利要求13的計(jì)算機(jī)程序產(chǎn)品,其中所述初始瞬時(shí)行為與一個(gè)或多個(gè)瞬時(shí)信號和一個(gè)或多個(gè)初始化輸入關(guān)聯(lián)。
15.如權(quán)利要求13的計(jì)算機(jī)程序產(chǎn)品,其中所述代碼被配置為通過從所述邏輯設(shè)計(jì)消除瞬時(shí)邏輯來修改所述網(wǎng)表。
16.如權(quán)利要求15的計(jì)算機(jī)程序產(chǎn)品,其中所述代碼被配置為將無界驗(yàn)證問題分解為在所述初始瞬時(shí)行為所發(fā)生的初始時(shí)間幀內(nèi)的有界驗(yàn)證問題和在所述初始時(shí)間幀之后的后瞬時(shí)時(shí)間幀內(nèi)的無界驗(yàn)證問題。
17.如權(quán)利要求16的計(jì)算機(jī)程序產(chǎn)品,其中所述代碼還被配置為通過將所有瞬時(shí)視為已穩(wěn)定于后瞬時(shí)恒定值而簡化在所述后瞬時(shí)時(shí)間幀內(nèi)的所述無界驗(yàn)證問題。
18.如權(quán)利要求15的計(jì)算機(jī)程序產(chǎn)品,其中所述代碼還被配置為結(jié)合結(jié)構(gòu)分析而使用有界模型檢查以在消除所述瞬時(shí)邏輯之后識別初始化輸入。
19.如權(quán)利要求15的計(jì)算機(jī)程序產(chǎn)品,其中所述代碼還被配置為將所述邏輯設(shè)計(jì)的驗(yàn)證問題分解為第一階段和第二階段,其中所述第一階段對應(yīng)于啟動階段,并且所述第二階段對應(yīng)于在所述啟動階段之后發(fā)生的階段;以及基于知曉所述邏輯設(shè)計(jì)未在所述第二階段中展現(xiàn)瞬時(shí)初始行為而最小化所述驗(yàn)證問題的所述第二階段。
20.一種用于執(zhí)行對邏輯設(shè)計(jì)的分析的系統(tǒng),所述系統(tǒng)包括存儲子系統(tǒng);以及與所述存儲子系統(tǒng)耦合的一個(gè)或多個(gè)處理器,其中所述一個(gè)或多個(gè)處理器配置為檢測體現(xiàn)在網(wǎng)表內(nèi)的邏輯設(shè)計(jì)中的初始瞬時(shí)行為;確定所述初始瞬時(shí)行為的持續(xù)時(shí)間;基于所述初始瞬時(shí)行為收集關(guān)于所述邏輯設(shè)計(jì)的約簡信息;以及基于所述約簡信息修改所述網(wǎng)表,其中修改所述網(wǎng)表以消除瞬時(shí)邏輯和初始化輸入。
全文摘要
一種用于執(zhí)行對邏輯設(shè)計(jì)的分析的技術(shù),包括檢測體現(xiàn)于網(wǎng)表內(nèi)的邏輯設(shè)計(jì)中的初始瞬時(shí)行為。還確定所述初始瞬時(shí)行為的持續(xù)時(shí)間。基于所述初始瞬時(shí)行為收集關(guān)于所述邏輯設(shè)計(jì)的約簡信息。然后基于所述約簡信息修改所述網(wǎng)表。
文檔編號G06F17/50GK102598001SQ201080046143
公開日2012年7月18日 申請日期2010年10月5日 優(yōu)先權(quán)日2009年10月16日
發(fā)明者H·莫尼, J·R·鮑姆加特納, M·L·卡斯, R·L·坎茨爾曼 申請人:國際商業(yè)機(jī)器公司