TWI430123B - 用於記憶體抽象化及驗證的方法和設備 - Google Patents
用於記憶體抽象化及驗證的方法和設備 Download PDFInfo
- Publication number
- TWI430123B TWI430123B TW098129297A TW98129297A TWI430123B TW I430123 B TWI430123 B TW I430123B TW 098129297 A TW098129297 A TW 098129297A TW 98129297 A TW98129297 A TW 98129297A TW I430123 B TWI430123 B TW I430123B
- Authority
- TW
- Taiwan
- Prior art keywords
- node
- network connection
- memory
- connection table
- slot
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Description
本發明關於積體電路設計,尤其關於電子設計自動化工具以及對包括記憶體的複雜設計進行驗證與分析的工具。
在硬體驗證中,利用在比個體導線和基本閘的等級高的等級上獲取的設計資訊來進行字級設計的分析是一個新領域。在字級上,相對於一組不具有特殊語義的位元級信號,資料路徑單元和資料封包本身被視為實體。
目前的模型檢查技術針對檢查控制定向的屬性運作良好。然而,目前的模型檢查技術針對具有寬資料路徑和大型記憶體的設計運作並不良好。以前的方法通過讀取設計者註釋或遞增地計算設計的精確抽象化來設法加速處理。然而,註釋對於設計者來說是非常耗時的,而抽象化的計算可能與解決原始問題一樣困難。
最近圍繞例如SMT求解器(S. Ranise和C. Tinelli. Satisfiability modulo theories. Trends and Controversies-IEEE Intelligent Systems Magazine,2006年12月)的字級公式判別程序,以及像是UCLID(在2002年的Computer Aided Verification會議紀錄中,R.Bryant,S.Lahiri,和S.Seshia的. Modeling and verifying systems using a logic of counter arithmetic with lambda expressions and uninterpreted functions.)和BAT(在2007年的Computer Aided Verification會議紀錄中,P.Manolios,S.Srinivasan和D.Vroon. BAT:The bit-level analysis tool.)的以簡化法為基礎的程序已經有了許多研究。然而,隨著此研究方向預期的興起,使用這些程序來進行模型檢查在本質上將受到限制,因為這些程序對公式進行分析而不是對時序系統進行分析。這有兩種結果:第一,時序屬性僅能依靠諸如利用邊界檢查推斷無邊界正確性的歸納和內插之類的方法,以利用這些程序進行檢查。第二,這些程序不適用於進行時序系統驗證的基於變換的方法(在2006年的CAD會議中的Formal Methods的會議記錄,J. Baumgartner,T.Gloekler,D.Shanmugam,R.Seigler,G.V.Huben,H.Mony,P.Roessler,和B.Ramanandray的Enabling large-scale pervasive logic verification through multi-algorithmic formal reasoning.),其中時序驗證問題由後端模型檢查器的大型集合中的任何一個來叠代地簡化並處理。
傳統模型檢查的最大障礙之一是混合了複雜控制邏輯的大型記憶體的存在。此經常導致了非常困難或難於控制的模型檢查問題。因此,對包括大型記憶體的硬體設計的有邊界及無邊界屬性的實際字級模型檢查需要有效地實作。
本發明提供了一種網路連線表簡化方法,其中用於包括記憶體的電路設計的網路連線表被抽象化為一個能夠用標準驗證工具和操作網路連線表的其他工具進行分析的更小的網路連線表。這些系統的正確性可以僅需要使用比原始電路設計中更少數量的記憶體項目進行推理。通過將這樣的記憶體抽象化為更少的項目,驗證問題的計算複雜度大大地減小。
在將電路設計表示為一個資料結構的方法中,電腦實作的電路設計表示能夠被簡化,這個資料結構定義一個包括多個節點的網路連線表,例如以有向非循環圖DAG形式。例如,用高級描述語言表示的電路設計能夠在處理後產生這種類型的輸入資料結構。輸入資料結構處理後產生一種具有更小複雜度且在實作時需要較少之記憶體槽的已更新的網路連線表,其試圖保持利用網路連線表表示的電路設計的預先指定屬性。
輸入網路連線表的處理包括:識別電路設計中的記憶體,以及在識別出的記憶體中識別單個槽的位址或者多個槽的位址。對於該記憶體而言,相應的單個槽或者相應的多個槽需要滿足所關注的指定屬性。利用實作單個槽或者多個槽的替代節點來替換如此表示之記憶體的網路連線表中的節點。實作驗證條件,該驗證條件支援使用替代節點對指定屬性的檢查。應用在此所描述的處理,更新的網路連線表中表示的記憶體的尺寸通過消除表示無需滿足指定屬性的槽的節點來簡化。
網路連線表中已識別記憶體的單個槽或多個槽用替代節點來替換,針對每一個已表示的槽,該替代節點包括包含已表示的槽的資料的當前狀態替代節點(在下面示例中命名為「cont」)、下一狀態替代節點、以及用其位址識別已表示的槽的節點(在下面的示例中命名為「sel」)和相應的下一狀態節點。代表向已表示的槽的寫入的節點利用多工器實作,如果寫入位址與識別槽的節點的內容相匹配,則多工器用寫入資料更新該槽的下一狀態替代節點的內容,否則用當前狀態替代節點的內容更新已表示的槽的下一狀態替代節點的內容。對於網路連線表中代表從已表示的槽的讀取的節點,替代節點包括多工器,如果讀取位址與識別槽的節點的內容相匹配,則這個多工器回傳已表示的槽的當前狀態替代節點的內容,否則回傳從環境讀取的非決定資料。
識別輸入網路連線表中記憶體的處理程序包括:識別可重建模(remodellable)記憶體(包括記憶體陣列的部分或全部),可重建模記憶體的特徵在於,定址於記憶體的當前狀態和下一狀態節點的所有讀和寫節點讀取和寫入相同寬度的資料,並且使用相同寬度的位址節點,以及記憶體中單個槽或多個槽以通用方式初始化為決定值。
通過識別抽象對來選擇已更新網路連線表中的所要表示的槽,該抽象對包含描述必須被表示的記憶體的相應槽和描述在必須被表示的周期內已更新網路連線表中為符合例如電路設計的安全性定義一類的屬性的各個節點。因而,抽象對與在已更新網路連線表中已表示的槽相對應,並包括識別已表示槽的節點和表明讀取已表示槽以符合屬性的周期的延遲參數。
在組合輸出的型式中,驗證功能係為重寫以便當抽象對指定的節點已經擁有適當在前的多個周期時間內相應槽的對應值時檢查輸出。在實作已更新網路連線表時,使用與一個所關注的特殊屬性相關的抽象對,以在已更新網路連線表中建立一個節點集合,其為每一個抽象對在已表明周期中指定一個已表示槽,將已抽象化的節點與在抽象對的延遲參數表明的周期中識別已表示槽的節點相比較。如果針對相關的抽象對表明匹配,則檢查所關注屬性的輸出。
在此描述的一種實作中利用一種反例引導精細化處理來識別抽象對。例如,通過開始於一個如沒有抽象對的實作的初始的已更新網路連線表,在已更新網路連線表上叠代地執行一種模型檢查處理,可識別出抽象對。如果模型檢查在一個特殊狀態失敗,將擷取引起失敗的跡線,然後基於特殊狀態跡線所決定的輸入和初始狀態變數賦值的集合,利用該原始輸入網路連線表執行一種模擬。如果原始網路連線表的模擬沒有表明失敗,則已更新網路連線表被處理以找到造成失敗的錯誤讀取。選擇抽象對以解決錯誤讀取,並且將所選擇的抽象對加入到已更新網路連線表中。叠代返回到模型檢查步驟,並重複處理,直至已更新網路連線表通過模型檢查,直至在模擬步驟探測到真正的缺陷,或者直至已更新網路連線表變得比目標尺寸更大。
在利用上面提及的使用有向非循環圖資料結構的實作中,圖中頂部節點包括表示電路輸出的字級節點和下一狀態變數,圖中底部節點包括表示輸入的字級節點、狀態變數和二進位常向量,圖中內部節點包括記憶體和表示運算符的字級節點。
本案提出的技術處理字級網路連線表以識別可重建模記憶體,所述可重建模記憶體僅用專用的讀和寫節點與它們的環境進行互動,以統一方式初始化並統一存取。當通過推理相比於一個標準位元級模型檢查需要數量顯著更少的記憶體槽和時間實例得到證明時,能夠以允許屬性證據的形式抽象化可重建模記憶體。
在此描述的技術可作為一種在資料處理機上執行的處理,可作為適於執行所描述程序的一種資料處理機,也可作為資料處理機的一種電腦可執行程式並儲存在電腦可讀取資料儲存媒體上。另外,這裡的技術是製造積體電路的處理的一部分,積體電路製造包括定義例如在積體電路製造中用於光刻處理的掩模或掩模集合的佈局資料一類的模式的資料開發。
在此描述的處理程序的特點包括實作能夠在標準安全性屬性驗證問題上操作,能夠無需抽象化提示完全自動化,能夠作為後端判定程序在典型位元級模型檢查器中可用,還能夠無瑕疵地適合一種標準變換驗證範例。
本發明的其他態樣和優點可在下面的附圖、實施方式和請求項中看到。
圖1是一種示例性積體電路設計流程的簡化表示。利用在此所有的流程圖可以理解到,圖1中的許多步驟可以組合、並行執行或以不影響完成功能的不同順序執行。在某些情況下,只有也做出某些其他改變的情況下,步驟的重新排列才可能實作相同的結果,而在其他情況下,只有滿足某些條件的情況下,步驟的重新排列才能實作相同的結果。這樣的重新排列可能性對讀者而言是明顯的。
在高等級處,圖1的程序開始於產生構思(方塊100)並在EDA(電子設計自動化)軟體設計程序中實作(方塊110)。當所述設計最終定稿時,發生製造處理(方塊150)及封裝和組裝處理(方塊160),最終導致完成積體電路晶片(結果170)。
EDA軟體設計處理(方塊110)事實上由多個步驟112-130組成,但是為了簡化以線性形式表示出。在實際的積體電路設計處理中,特殊設計可能不得不返回執行這些步驟直至某些測試通過。類似地,在任何一種實際的設計處理中,這些步驟可能以不同的順序或組合發生。因此,在此描述採用上下文和一般性解釋提出,而不是作為特殊積體電路的一種具體的或推薦的設計流程。
現在提出EDA軟體設計處理(方塊110)的組成步驟的簡要描述。
系統設計(方塊112):設計者描述想要實作的功能性,他們執行假設規劃去精細化功能性,檢查成本等等。硬體-軟體體系結構可在這個階段發生。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括Model Architect,Saber,System Studio和DesignWare產品。
邏輯設計和功能驗證(方塊114):在這個階段,用於系統中模組的,例如VHDL或Verilog代碼的高級描述語言(HDL)代碼被編寫並且針對功能準確性檢查所述設計。更具體而言,檢查所述設計以確保其回應於特定輸入刺激而產生正確的輸出。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括VCS,VERA,DesignWare,Magellan,Formality,ESP和LEDA產品。利用下面更具體描述的記憶體抽象化的字級網路連線表簡化技術可實作為例如Magellan產品的一個部分或一個附加工具。
合成和可測性設計(方塊116):在此,VHDL/Verilog轉譯為網路連線表。可為目標技術最佳化網路連線表。另外,發生用於准許對已完成晶片進行檢查的測試的設計和實作。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括Design Compiler,Physical Compiler,Test Compiler,Power Compiler,FPGA Compiler,TetraMAX和DesignWare產品。
網路連線表驗證(方塊118):在這個步驟,針對服從定時限制和與VHDL/Verilog源代碼一致來檢查網路連線表。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括Formality,PrimeTime和VCS產品。
設計規劃(方塊120):在此,針對定時和頂層佈線來構造並分析晶片的整體平面佈置圖。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括Astro和IC Compiler產品。
物理實作(方塊122):在這個步驟發生佈置(電路元件的定位)和佈線(電路元件的連接)。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括AstroRail,Primetime和Star RC/XT產品。
分析和提取(方塊124):這個步驟中,在電晶體級驗證電路功能,繼而允許假定精細化。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括AstroRail,PrimeRail,Primetime和Star RC/XT產品。
物理驗證(方塊126):在這個階段執行各種功檢查能以確保製造、電力問題、光刻問題和線路的正確性。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括Hercules產品。
下線(方塊127):這個階段提供「下線」資料,用於為產生成品晶片而產生之供光刻使用的掩模。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括CATS(R)系列產品。
解析度增強(方塊128):這個階段關於佈局的幾何操作,以改善設計的可製造性。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括Proteus/Progen,ProteusAF和PSMGen產品。
掩模製備(方塊130):這個階段包括掩模資料製備和掩模自身的刻寫。在此步驟中,可使用的來自Synopsys公司的示例性EDA軟體包括CATS(R)系列產品。
在此描述的網路連線表簡化技術的實施例,可在上述階段的一或多個中應用。例如,本發明的實施例可在邏輯設計和功能驗證(圖1的方塊114)中應用。在這個階段,用於編寫系統中模組的VHDL或Verilog代碼,並且針對功能準確性檢查所述設計。更具體而言,檢查所述設計以確保回應於特定輸入刺激來產生正確輸出。
圖2是適於與這種技術實施例一起使用的電腦系統210的簡化結構圖。一般而言,電腦系統210包括通過匯流排子系統212與許多外設通訊的至少一個處理器214。這些外部設備可以包括具有記憶體子系統226和文件儲存子系統228的儲存子系統224、用戶介面輸入設備222、用戶介面輸出設備220和網路介面子系統216。輸入和輸出設備允許用戶與電腦系統210互動。網路介面子系統216提供介面(包括去往通訊網路218的介面)給外部網路,並且通過通訊網路218耦合至其他電腦系統中的相應周邊設備。通訊網路218可以包括許多互連電腦系統和通訊鏈結。這些通訊鏈結可能是有線鏈路、光纖鏈路、無線鏈路或任何用於資訊通訊的其他機制。在一個實施例中,通訊網路218是網際網路,在其他實施例中,通訊網路218可以是任何合適的電腦網路。
用戶介面輸入設備222可包括鍵盤、滑鼠一類的指示設備、軌跡球、觸控板或圖形寫字板、掃描器、併入顯示器的觸控螢幕、語音識別系統一類的音頻輸入設備、麥克風以及其他類型的輸入設備。一般而言,使用術語「輸入設備」意在包括用於將資訊輸入到電腦系統210或輸入通訊網路218上的所有可能的設備類型和方式。
用戶介面輸出設備220可包括顯示子系統、印表機、傳真機或如音頻輸出設備一類的非視覺顯示。顯示子系統可包括陰極射線管(CRT)、液晶顯示器(LCD)一類的平板設備、投影設備或者用於建立可視圖像的某一其他機制。顯示子系統也可以諸如經音頻輸出設備提供非可視顯示。一般而言,使用術語「輸出設備」意在包括用於將資訊從電腦系統210輸出到用戶或另一個機器或電腦系統的所有可能的設備類型和方式。
儲存子系統224儲存基本程式編寫和資料構造,其提供在此描述的某一個或所有EDA工具的功能,包括網路連線表簡化技術和應用於分析已簡化網路連線表的驗證工具。這些軟體模組通常由處理器214執行。
一般而言,記憶體子系統226包括許多記憶體,其中包括一個用於在程式執行期間儲存指令和資料的主要隨機存取記憶體(RAM)230和一個儲存固定指令的唯讀記憶體(ROM)232。文件儲存子系統228為程式和資料檔案提供永久性儲存,並可包括硬碟、與相關可移動媒體一起的軟碟驅動器、CD-ROM驅動器、光碟機或可移動媒體磁帶盤。實作某些實施例功能性的資料庫和模組可儲存在文件儲存子系統228中。
匯流排子系統212提供一種讓電腦系統210的各種組成部分和子系統相互之間,按期望進行通訊的機制。儘管匯流排子系統212簡化圖示為單條匯流排,但是匯流排子系統的可選實施例可採用多條匯流排。
電腦可讀取媒體240可以是一種與文件儲存子系統228及/或網路介面子系統216相關聯的媒體。電腦可讀取媒體可以是硬碟、軟碟、CD-ROM、光學媒體、可移動媒體磁帶盤或電磁波。電腦可讀取媒體240被表示為儲存有電路設計280,包括例如電路設計的HDL描述和利用所描述技術建立的簡化的網路連線表。另外還表示出利用所描述技術建立的電路290。
電腦系統210本身可以包括各種類型,這些類型包括個人電腦、攜帶型電腦、工作站、電腦終端、網路電腦、電視、大型機或任何一種其他資料處理系統或用戶設備。由於電腦和網路不斷變化的性質,圖2所示的電腦系統210的描述意在僅僅是用於示出優選實施例的具體示例。電腦系統210的許多其他配置可能比圖2所示電腦系統擁有更多或更少的組成部分。
圖3是針對包含操作簡化的網路連線表的電路設計而執行驗證步驟的處理的一個基本流程圖。在圖3的處理中,包括多個節點的字級網路連線表從電路設計的高級描述語言描述編譯而來,優選地採用節點的有向無循環圖形式(方塊300)。記憶體抽象化技術的實施例在字級節點上操作。然而,備選系統可應用到位元級實作。標準前端流程採取例如硬體描述語言(HDL)表達的暫存器傳送級(RTL)描述,補充以用戶限制、屬性和其他資訊的定義;以及產生下面具體描述的隱含時控DAG表示。所用的標準前端流程是通過將具有屬性和限制的硬體設計處理成代表一組無限制輸入I、狀態變數S和常數上的組合邏輯的多個節點,將電路設計編譯成網路連線表。作為結果的多個節點的頂部包含下一狀態變數S’和單位元輸出O。可以使用這種技術驗證的屬性包括其失敗由某個假定值為「false」的輸出來發信號的所有安全性屬性。安全性屬性是電路設計屬性的子類,其具有某個輸出總是具有的形式(也就是說,其失敗可總是由有限跡(finite trace)來表明)。另外,在一些實施例中,每個狀態變數可以假定為具有未知的初始狀態。
在以這種方式編譯的圖中的內部節點包括如下:
node1=not(node2)
node1=and(node2,node3)
node1=arithOp(node2,node3),arithOp是{+,-,...}的成員
node1=compOp(node2,node3),compOp是{<、≦、=、≠、、>}的成員
node1=mux(selector,node2,node3)
node1=extract(x,node2)
node1=concat(node2,node3,...)
node1=read(op1,addrj)
node1=write(opk,addri,dataj)
在結果的位元i是通過將布耳運算符應用到輸入節點的位元i這種意義上,「not(非)」和「and(與)」運算符是逐位元運算符。如果selector(選擇信號)為真,則「mux」節點返回node2,否則返回node3。「extract」節點通過從其運算元的位置(x)到(x+k-1)取出k位元,而構造一個更小的位元向量。最終,「concat」節點通過串接其運算元形成更大的位元向量,而形成更大的信號。供連接的引數列表中在前的運算符變成更高階位元,所以concat(01,00)變成0100。
mux節點的選擇信號和比較運算符節點的輸出限制為具有一位元的寬度。這樣的信號就是所謂的位元級信號。不是位元級信號的信號稱為字級信號。術語「segment(段)」指的是一組連續的位元,並且可以表示整個字或字的部分。
讀節點和寫節點用於建模記憶體。讀節點的語義指示:針對寬度為w的讀節點,所述節點回傳結果,所述結果是在它的引數裡,從位元向量op中取出位置addr*w...(addr+1)*(w-1)的多個位元。對具有寬度為w的資料運算元的寫節點,寫節點回傳用其引數中的資料重寫其引數中位元向量op的區域addr*w...(addr+1)*(w-1)得到的結果位元向量。讀節點和寫節點的位址空間無需限制為任何一種特定形式。越界讀取係針對不存在的位元回傳非決定值。越界寫入不做任何事。專用「(記憶體)」暫存器節點或對讀節點和寫節點可以應用於信號的限制,但其不是必需的。因而,RTL記憶體設計就像任何其他節點一樣,可建模為位元向量暫存器。通過控制邏輯的合理使用並配合多個讀節點和寫節點,在本例中的DAG支援具有大量讀埠和寫埠的任意複合記憶體介面。此外,通過巢狀讀、寫和其他節點,複合策略可在作為同周期讀和寫結果的更新命令和讀命令上實作。
返回至圖3,遍歷輸入網路連線表以識別可重建模記憶體和這些記憶體的讀節點和寫節點(方塊301)。可重建模記憶體是一種可用這種技術提取的記憶體。基本上,一種實際實作中的可重建模記憶體可以限於其中的所有槽以統一方式定址的那些,其僅以另一個實作能夠容易替換的方式與設計的其餘部分通訊,並且具有特定簡單結構的下一狀態函數。更正式地說,在一個提供暫存器變數mem的實作中,對mem標記為「純記憶體節點」的記憶體節點的集合可以遞迴地定義如下:
1) 節點mem是mem的純記憶體節點;
2) 因opk是mem的純記憶體節點,所以write(opk
,addrj
,dataj
)是純記憶體節點;
3) 如果optruek
和opfalsek
是mem的純記憶體節點,則mux(sell
,optruek
,opfalsek
)是純記憶體節點。
狀態變數mem的純讀節點集合由所有網路連線表讀節點read(opi
,addrj
)組成,其中opi
是mem的純記憶體節點。此外,對mem的寫節點集合由所有write(opk
,addrj
,dataj)組成,其中opk
是mem的純記憶體節點。
給定此專有名詞,可重建記憶體可定義為滿足以下要求的暫存器狀態變數mem:
1) 支援mem的所有讀節點和寫節點用相同寬度a的位址節點讀和寫相同寬度w的資料。此外,mem的位元寬是w的整數m倍,並且使得所有記憶體存取發生在記憶體內部。
2) mem初始化為布林常數0000...0,1111...1,或者另一個決定的初始化值。
3) mem的下一狀態函數是mem的純記憶體節點,並且沒有其他下一狀態函數是mem的純記憶體節點。
4) 來自mem的每一個扇出路徑包括終結於(1)mem的下一狀態節點或(2)純讀節點的純記憶體節點的序列。
第一要求確保記憶體被視為以統一方式讀和寫的槽的位元向量。第二要求確保所有槽具有相同的初始狀態,其保證為在已更新網路連線表中表示而選擇的槽都具有相同的初始狀態。剩下的要求確保記憶體暫存器僅在其他狀態暫存器的扇入和通過讀節點輸出處發生,並且記憶體的下一狀態函數是在更新記憶體的不同寫節點之間選擇的簡單多工器樹。
在此描述中所運用的可重建模記憶體的定義,在能夠覆蓋大多數感興趣的記憶體實作與足夠簡單以提供相對直接的記憶體抽象化演算法之間提供了一種平衡。其他類型記憶體也能用適當的處理得以重建模,以考慮例外情況。
針對編碼為字級DAG的網路連線表,一種直接線性遍歷演算法可用於提取可重建模記憶體的集合,並且計算它們相關的讀節點和寫節點的集合。
再次回到圖3,一旦可重建模記憶體已經隨其讀節點和寫節點的集合一起被識別,記憶體便可被重建模以將所表示的記憶體槽的數量簡化為滿足所感興趣的指定屬性(諸如安全性屬性或安全性屬性的集合)所需的那些槽,如下面(方塊302)所具體描述的。
然後,簡化的網路連線表被處理以決定電路設計是滿足指定屬性,還是可以執行更嚴格的模型檢查(方塊303)。如下所述,在特定的已簡化網路連線表上的模型檢查在代表性實施例中實作為抽象精細化循環的一部分。此外,已簡化網路連線表可用非常多樣的工具處理,包括在用於時序電路驗證的基於變換的方法中進行操作的工具。
圖4是以一種包括含有記憶體的電路設計的DAG形式實作的一個示例性網路連線表。在DAG的底部,網路連線表包括mem16384
(即具有16384位元寬的記憶體的當前狀態節點400)、寬度為9的讀位址節點raddr9
401、寬度為9的寫位址節點waddr9
402、寬度為32的資料節點data32
403和寬度為32的常數節點032
404。DAG的頂部包括寬度為1的輸出節點safe1
418和記憶體的下一狀態節點mem’16384
419。讀節點405通過用節點401的位址讀取記憶體節點400產生輸出。比較器節點406比較讀節點405的輸出和儲存在節點407中的常數10032
。
「>」運算符節點408比較資料節點403的內容與節點409中的常數20032
的內容。節點408運算符的結果作為多工器410的selector輸入。當節點408的輸出為真時,多工器410選擇資料節點403的內容,當節點408的輸出為假時,從節點404中選擇常數032
。利用多工器節點410的輸出所提供的資料,在寫位址節點402所提供的位址處,寫節點411為記憶體節點400寫下一狀態暫存器406。
因此,在每一個時脈周期,系統從mem讀取位址raddr處的槽的內容。如果資料大於200,則系統還將輸入資料寫入位址waddr處的槽,否則向其寫入0。所實作的屬性是安全性屬性,要求從mem讀取的值絕不等於100。顯然,這對於在此簡單系統中任何執行跡線都為真。並且,這個敘述可通過推理記憶體中單個槽的隨著時間的內容(即,最後一個槽讀取)來得到證明。
圖4中建模的電路可概念性地劃分為兩個部分。第一部分(由虛線415所包圍的)包含大型記憶體mem,並且通過兩個輸入和兩個輸出與設計的其餘部分通訊,這兩個輸入和輸出是:節點402和411之間的9位元寬度的寫位址埠wa,節點410和411之間的32位元寬度的寫資料埠wd,節點401和405之間的9位元寬度的讀位址埠ra,節點405和406之間的32位元寬度的讀數據埠rd。圖4電路的第二部分是電路的平衡。
圖4所示記憶體可抽象化為圖5所示用兩個暫存器的當前狀態和下一狀態版本來替換16384位元寬的當前狀態和下一狀態記憶體節點,其中暫存器的當前狀態和下一狀態版本是:如通過包含槽位址來識別已表示的記憶體槽的9位元寬的sel節點500和sel’節點501,以及作為已表示槽內容的容器的32位元寬度的cont節點502和cont’節點503。以這種方式表示的槽在電路初始化期間被選擇,並在後續系統執行期間保持不變。在這個實作中節點sel具有無限制初始狀態和只將當前狀態值傳給下一狀態節點501的下一狀態函數。暫存器cont 502、503初始化為記憶體槽的指定初始值,如全為0。
從圖4實作得到的寫節點由多工器504替換,如果sel節點500的內容等於比較器505的輸出所指示寫位址埠wa9
的位址,則多工器504用寫資料埠wd32
的資料更新cont的下一狀態值,否則其將cont的當前狀態節點502傳給下一狀態節點503。從圖4實作得到的讀節點由多工器506替換,如果sel節點500的內容等於讀位址埠ra9
的位址(如比較器507的輸出所指示的),則多工器504將cont的當前狀態節點502的內容提供給讀埠rd32,否則其提供來自非決定讀節點508的非決定資料。
另外,在圖6所繪示之示例中,更新網路連線表以改變正確性的定義,以便僅在從當前時脈周期讀取的位址是sel節點500指示的已表示槽的位址時,才檢查感興趣的屬性。因此,節點408的輸出安全由隱含運算符601的輸出提供。如果像節點600的輸出所表明的,提供讀位址埠ra的節點401與sel節點500的內容相匹配,則隱含運算符601僅檢查原始安全定義電路safedef1
602的輸出。這種實作可防止因發生(1)最終周期中raddr的值不同於sel所選擇的初始值和(2)ndtrd 508的內容是100的情況下,由記憶體抽象化引入的干擾性反例。在這個反例中,由sel初始化選來用於表示的槽與反例中讀取的位址不是同步的。這將可能導致錯誤地觸發安全定義的假輸出的錯誤讀取。通過重新實作圖6所示的驗證條件,產生錯誤的假顯示的可能性得以消除。
在根據圖4-圖6描述的示例中,記憶體在raddr節點401識別的槽的當前值上進行抽象化,這在那個示例上運作良好。然而對於許多系統,從多個在前的時間實例和周期中進行記憶體存取不得不正確的執行來保證在當前周期中能夠檢查系統的正確性。例如,為了檢查完全的多部分資訊總是正確地傳送,安全性定義可能需要隨著時間正確地讀取序列的執行。為了處理這些類型的系統,在抽象對(v i
,d i
)的集合上的此方法程序中,抽象化可重建模記憶體,其中vi
是例如raddr節點401的信號,包含所要表示的槽的讀位址,di
是表明在當前周期之前的多個周期的整數時間延遲。節點vi
和所有抽象對必須具有記憶體上操作的讀和寫的位址節點同樣的寬度。在圖4-圖6所描述的示例中,記憶體在單個的抽象對{(raddr9,0)}上被抽象化。
在已簡化網路連線表的特殊實作中,利用的抽象對集合由下面描述的程序來識別。假定抽象對已經被識別,圖7和圖8提供了一種流程圖來引入已表示的槽,重新實作讀節點以及改變驗證條件來產生已更新網路連線表。
所述處理關於遍歷輸入網路連線表來識別一個可重建模記憶體(方塊700,方塊701)。對於每個可重建模記憶體引入抽象對的數量「n」(方塊702)。每個抽象對(v i
,d i
)按照方塊703所示去處理,這是通過用一個未初始化的初始狀態函數和一個將前一狀態值傳給下一狀態變數sel’i
(方塊704)的下一狀態函數為(v i ,d i
)引入當前狀態變數seli
。seli
暫存器將包含系統執行期間此抽象對所表示的槽的具體數量。另外,為已表示的槽引入容器暫存器conti
和它的下一狀態暫存器cont’i
。容器暫存器以對應原始mem節點的初始化的方式進行初始化。驅動下一狀態暫存器cont’的函數在已更新網路連線表中作為已識別記憶體的下一狀態函數的節點。這是可能的,因為本例中可重建模記憶體的定義保證了mem的下一狀態函數是mem的純記憶體節點。
接下來,已識別的可重建模記憶體mem的網路連線表中純記憶體節點由替代節點所替換。如方塊705所示,如果節點是已識別的記憶體,則容器暫存器(conti
)和對應於當前抽象對的初始化向量用作記憶體的替代節點(方塊706)。如果節點是一個write(opk
,addrl
,datam
)形式的寫節點(方塊707),將用邏輯mux(sell
=addrl
,datam
,s0)來替換它,其中s0表示圖5(方塊708)中如容器暫存器cont一類已更新網路連線表中對應opk
的節點。
進入圖8,如果節點是mux(selector,optrue,opfalse)形式的一個多工器(方塊709),將用邏輯mux(seli
=addrl
,s0,s1)來替換它,其中s0和s1是在已更新網路連線表中分別表示optrue和opfalse的節點(方塊710)。
接下來,替代節點連接到相應槽的下一狀態容器暫存器cont’i
,如圖5中節點504連接到cont’503(方塊711)。這個處理以這種方式遍歷抽象對,直至它們都在已更新網路連線表中重新實作(方塊712,方塊713)。
接下來重新實作讀節點。如果節點具有read(opk
,addr1
)的形式,其中opk
由用於抽象對的記憶體中的已表示槽來替換,然後改變讀節點多工器樹以包含這個已表示槽(方塊714)。將參照圖10在下面描述讀節點的多工器樹的實作。
在處理對應已識別記憶體的節點之後,改變驗證條件(方塊715)以便於僅當抽象化節點識別的信號vi
已經具有在之前時間實例di
處選擇的合適的值的時候檢查屬性。實作驗證條件的一種技術是定義一個臨時公式prevdi
(s),如果其在系統精確執行的時間點t處,值為真,和組合信號s在時間點t-d估為真。假定對信號s有n個抽象對(v i
,d i
),新的安全輸出可由為臨時公式合成一個檢查器來產生:
其中safedef當作提供舊的安全輸出的組合節點。在圖4描述的示例中,safedef將是當讀數據埠rd的資料不等於100時為真的節點406。所述檢查器可用延遲某些網路連線表節點比較的在前值的多個暫存器鏈的簡單形式來實作。參照圖10在下面描述這個示例。需注意的是,已識別記憶體mem是可重建模記憶體。因此,其只能通過讀節點在其他狀態變數扇入處出現。已更新網路連線表為滿足安全性條件重新實作所有必要的讀節點。因此,網路連線表的簡化可以通過移除原始記憶體mem和所有以上述方式依賴於它的邏輯得到。
方塊716-718圖示處理的某些實施例重新實作網路連線表所關於的附加步驟。在流程圖中插入這些節點來反映它們是所使用處理實例的一部分,而不是表明處理執行的一種順序。首先,如上所述,在一種方法中為所有讀節點引入暫存器ndtrd。備選實作可應用雙軌編碼,在信號通道中將暫存器增加額外位元以作為表明內容是否非決定的標誌。網路連線表可被評估以決定哪種方法對給定電路設計實作和所選擇技術更加有效(方塊716)。這可以通過一次用雙軌編碼執行重新實作循環(如節點702-715)、一次用非決定資料節點執行重新實作循環並比較結果來完成。此外,為各種節點設立初始化函數,包括不是全0或全1記憶體的容器節點,放寬可重建模記憶體的定義以允許非統一初始化(方塊717)。最終,可重建模記憶體的定義可放寬到允許無限制位址寬度,在這些情況下已更新網路連線表可通過增加檢查讀和寫節點的越界位址進一步更新(方塊718)。
一旦產生已更新網路連線表,所述處理進行到執行一種反例指導抽象精細化處理來決定是否需要增加附加抽象對(方塊719)。參照圖11描述一種代表性的反例指導抽象精細化處理的細節。
參照上面方塊714所提及的,用圖9所示多工器樹的形式在已更新網路連線表中表示純讀節點。圖9所示多工器樹回傳其位址與讀位址埠ra的位址相匹配的第一個所選槽的內容。如果位址與任何一個所選槽不匹配,則從輸入節點ndtrd901的環境讀取一個非決定值。這個多工器樹包括多工器905-0到905-n,並且接收識別已表示槽sel0到seln的節點作為輸入,其在比較器節點902-0到902-n處與讀位址埠的位址相比較。比較器節點902-0到902-n的輸出用作相應多工器905-0到905-n上的selector輸入。此外,多工器樹接收用於已表示的槽cont0到contn的替代節點以作為輸入。如果比較器節點902-0的輸出為真,多工器905-0選擇cont0的內容,否則選擇多工器905-1(未示出)的輸出。如果比較器節點902-n的輸出為真,樹中最後一個多工器905-n選擇contn的內容,否則選擇ndtrd節點901中的值。
圖10表示上面提及的參照方塊713的驗證條件的重新實作。在這個示例中,「safe」輸出920由隱含運算符921驅動。當AND節點922的輸出為真時,隱含運算符僅僅操作去檢查安全性定義safedef1
的輸出。AND節點922由一個其輸出由被在抽象對中所表明的合適延遲時間進行延遲的抽象對上的比較器集合驅動。因此,來自抽象對(v 0
,d 0
)910-0的值v0
與識別抽象對所表示槽的se10節點相比較。因為延遲值d0
是0,表明抽象對應於在當前周期中的槽讀取,所以比較器911-0的輸出無延遲地應用到AND節點922。來自抽象對(v 1
,d 1
)910-1的值v1
與識別抽象對所表示槽的sell節點相比較。因為延遲值d1
是1,表明抽象對對應於在先於當前周期1個周期的周期中的槽讀取,所以比較器911-1的輸出通過暫存器912以一個1周期延遲應用到AND節點922。來自抽象對(v 2
,d 2
)910-2的值v2
與識別抽象對所表示槽的se12節點相比較。因為延遲值d2
是2,代表抽象對對應於在先於當前周期2個周期的周期中之讀數,所以比較器911-2的輸出通過暫存器913和914以一個2周期延遲應用到AND節點922。在圖10中延遲暫存器被簡化以避免圖式過於擁擠。在一個代表性的系統中,延遲912通過建立一個具有下一狀態節點d1’的節點d1來實作。比較器911-1在當前周期中提供節點d1’。將暫存器d1的內容作為輸入提供至AND節點922。同樣地,延遲913和914通過建立暫存器d1和d2來實作,其中下一狀態節點暫存器d1’由比較器911-2的輸出來驅動,當前狀態暫存器d1驅動下一狀態節點暫存器d2’,並且將d2作為輸入提供至AND節點922。
圖11圖示一個針對個別設計問題找到抽象對的程序。一種可選擇方法是將依賴於用戶提供一種抽象對集合的識別,作為到所述程序的輸入。然而,圖11所示的自動方法是優選的。因此,對於圖11的程序,在設計中維護每一個可重建模記憶體的抽象對的當前集合。每一個可重建模記憶體的抽象對集合在圖11所示的叠代程序中單調地增長,這種程序提供了一種具有0個抽象對的初始抽象化,其中沒有表示可重建模記憶體的記憶體槽(方塊950)。在這種初始抽象化中,表示一個系統,其中記憶體的每個讀數回傳一個非決定結果。給定初始抽象化,計算已抽象化的系統來提供使用了圖7和圖8示例上述方法程序的一個已更新網路連線表(方塊951)。將已更新網路連線表應用到一個位元級模型檢查路徑,如典型的用於現有技術去檢查設計的正確性(方塊952)。如果所檢查屬性在已更新網路連線表上維持,則抽象化程序進行至在原始系統上的有界檢查(方塊953)。在這個步驟中,使用一種標準的基於SAT的有界檢查程式以檢查原始系統的有界正確性,其由對應於已更新網路連線表中抽象對集合的最大延遲值的多個周期所界定的。如果此檢查通過,則宣告系統正確(方塊960)。如果原始系統的有界檢查失敗,則原始系統是有故障的並報告錯誤(方塊955)。
如果方塊952的模型檢查在更新的網路連線表表示的已抽象化系統上探測到一個反例,則本方法程序試圖精細抽象化。已抽象化系統的輸入是原始系統輸入的超集合。所以在原始系統上用從表明已更新網路連線表失敗的跡線中決定的輸入和狀態變數進行的模擬可以重現這個反例(方塊954)。如果在模擬中探測到缺陷,則將錯誤報告給用戶(方塊955)。如果在模擬中沒有發生缺陷,就有必要精細抽象化集合以移除錯誤跡線。
因為在原始系統與可能引入干擾性反例的抽象化系統之間的唯一區別在於記憶體編碼,在某個時間實例處的某個已抽象化讀節點必須回傳一個未表示槽的內容。通過檢查在原始系統上執行的模擬和比較在抽象化前讀節點和在抽象化後讀節點,隨著時間的錯誤讀數在抽象化系統的執行中得以識別(方塊956)。
不是所有的錯誤讀數都會對已檢查屬性造成影響。通過在抽象化系統模擬中,最初對所有錯誤讀數強行校正數值,以及叠代地以貪婪方式縮減已校正的集合直至決定依然移除錯誤的強置讀數的局部最小值,這個方法程序決定讀數的最小集合以及相關的時間點。
給定要校正的一個錯誤讀數的集合和其中發生錯誤讀取的錯誤周期的時間距離,必須為每一個時間點識別抽象化信號。抽象化信號可用如下的啟發性方法進行選擇:如果記憶體讀節點的片段相對於記憶體槽數量比某個選擇的如20%一類的經驗值小,則用在其離最終周期的相應時間距離處失敗讀取的位址信號來建立新的抽象對。然而,如果記憶體讀節點的片段相對於記憶體槽數量大於所選擇值,則這個程序檢索一種暫存器,這種暫存器(1)與記憶體的位址寬度相同,(2)在記憶體的影響錐中,和(3)包含在執行讀取的時間實例處錯誤讀節點讀取的位址值。經找到滿足這些標準的暫存器後,已識別的暫存器節點用於建立一個新的抽象對。在具有大量讀節點的電路設計中,為了成功抽象化記憶體,包含已識別槽的暫存器入口應當出現在設計的其他地方。這種假設對於處理某些類型的記憶體是關鍵的,如其中每個周期讀取記憶體的每一個條目,但在給定的時間事件只有少量讀取的內容可編址記憶體。
例如,對一個具有32個槽和兩個讀節點的單個可重建模記憶體設計的抽象化版本假定一個長度為15個周期的反例。如果形式為read(mem,raddri
)的讀節點需要在失敗周期之前的一個時間步驟周期13具有一個正確值,則為了移除缺陷跡線而將當前抽象化集合增加一個抽象對(raddri
,1)。然而,如果記憶體有28個讀節點,則這個程序將檢索在周期13包含讀取失敗的具體位址的暫存器reg,並且找到的暫存器將形成一個新抽象化集合(reg,1)的基礎。如果沒有這樣的暫存器存在,則這個方法程序回復到原始的未抽象化的記憶體建模。
在方塊957已經選擇出抽象對的新集合後,所述程序執行評估處理是否完成的步驟(方塊959)。當然這個步驟隨同圖11所示處理的其他步驟可以任何合適的順序發生。例如,例如方塊951之後決定的已抽象化尺寸大於原始網路連線表尺寸的75%,則這個方法程序可分支到使用原始網路連線表(方塊958)。在一種可選情況下,在方塊959系統檢查以決定處理是否超過一個時間限制或超過一個表明是否實作改進的預先指定數量的循環。
在任何事件中,抽象化系統增加抽象對的新集合並且完成適應這個抽象對的新集合所需要的改變(方塊951)。這個方法程序如圖11所示叠代的循環直至模型檢查成功(方塊960)、報告錯誤(方塊955)或作出判定使用原始網路連線表(方塊958)。
引入一種使用字級網路連線表資訊識別可重建模記憶體的技術。這些僅用專用讀和寫節點與環境互動的記憶體,用一種指定方式初始化並統一存取。應用包含這樣記憶體的網路連線表的一種抽象化,以准許證明某些類型的屬性,其中通過推理一個比標準位元級模型檢查所需記憶體槽和時間實例更小的數量來完成證明。為了避免不得不依賴來自用戶的抽象化資訊,使用一種反例驅動抽象精細化框架來分析干擾性反例,以遞增地精細抽象化。
技術特點包括(1)適用於一種標準基於變換的安全性屬性驗證的驗證系統,(2)演算法是全自動的,(3)不需用戶輸入抽象化,和(4)任一位元級模型檢查器可在我們的抽象精細化框架內用作判定程序。
當根據較佳實施例和上面描述的示例說明本發明時,可以理解這些示例意在解釋而不是限定範圍。可以預期的是,對於現有的本領域技藝人士不難完成變形和組合,這些變形和組合均在本發明的精神和下面請求項的範圍之內。
100-170...流程步驟
210...電腦系統
212...匯流排子系統
214...處理器
216...網路介面
218...通訊網路
220...用戶介面輸出設備
222...用戶介面輸入設備
224...儲存子系統
226...記憶體子系統
228...文件儲存子系統
230...RAM
232...ROM
240...電腦可讀取媒體
280...電路設計
290...電路
300-303...流程步驟
400-419...節點
500-508...節點
600-602...節點
700-719...流程步驟
901-922...節點
950-959...流程步驟
圖1是示例性積體電路設計流程的簡化表示。
圖2是適用於與這種技術的實施例以及這種技術的電路設計和電路實施方式一起使用的電腦系統的簡化結構圖。
圖3是用於簡化表示包括記憶體的電路設計的資料結構尺寸並用簡化後的資料結構執行驗證程序的程序簡化流程圖。
圖4是實作包括記憶體和多個節點的網路連線表的有向無循環圖的代表性示例。
圖5是圖4所示電路設計的抽象化。
圖6是與圖5中抽象化一起使用的安全性屬性的實作。
圖7和圖8是通過抽象化記憶體來簡化代表電路設計的資料結構的程序的更詳細流程圖。
圖9是讀節點的多工器樹的實作。
圖10是用於與包括多個抽象對的已更新網路連線表一起使用的安全性屬性的實作。
圖11是電腦實作的反例指導的抽象精細化循環的方塊圖。
300-303...流程步驟
Claims (20)
- 一種用於對一電路設計的一電腦實作表示進行處理的方法,包括下列步驟:將一機器可讀取媒體中的該電路設計表示為一資料結構,該資料結構定義一網路連線表為多個節點;識別在該資料結構中表示一記憶體的節點,並且處理該網路連線表以產生一已更新的網路連線表,包括:識別該記憶體中的一個槽或多個槽,以便表示在該已更新的網路連線表中;利用實作該識別的一個槽或多個槽的替代節點,替換該網路連線表中表示該記憶體的節點;以及實作該電路設計的一驗證條件,該驗證條件支援使用該替代節點對該電路設計的一預先指定屬性的檢查。
- 根據請求項1的方法,其中該替代利用替代節點的一集合來替換該記憶體,包括下列步驟:針對每個已表示的槽,當前狀態和下一狀態替代節點及當前狀態和下一狀態節點識別該已表示的槽,以及針對表示向實作一多工器的一相應槽進行寫入的節點,如果該寫入位址與識別該已表示的槽的該當前狀態節點的輸出相匹配,則用寫入資料更新該槽的一下一狀態替代節點的內容,否則利用該槽的一當前狀態替代節點的內容,更新該槽的一下一狀態替代節點的內容,以及 針對該網路連線表中表示對實作多工器的相應槽進行讀取的節點,如果該讀取位址與識別該已表示的槽的該當前狀態節點的一輸出相匹配,則回傳槽的當前狀態替代節點的內容,否則回傳非決定資料。
- 根據請求項1的方法,其中該網路連線表包含排列在一有向非循環圖中的節點,其包括表示邏輯運算符和算術運算符的字級節點、表示多工器運算符的字級節點、表示串接運算符的字級節點、表示提取運算符的字級節點、表示讀取的字級節點、表示寫入的字級節點、表示狀態變數的字級節點和表示二進位常數的字級節點。
- 根據請求項1的方法,其中該識別表示一記憶體的節點包括下列步驟:為該記憶體和該記憶體的下一狀態函數決定所有定址於該記憶體的讀和寫節點、相同寬度的讀取和寫入資料以及使用相同寬度的位址節點。
- 根據請求項1的方法,包括下列步驟:通過識別抽象對來實作該驗證條件,該抽象對包括該已更新網路連線表中對應於該已更新網路連線表中的一當前狀態替代節點的一已抽象化節點,以及表明使用該已抽象化節點的一輸出來讀取該當前狀態替代節點的一周期的一延遲參數,並且在該已更新網路連線表中建立一節點集合,其 將該已抽象化節點與識別已表明該周期中對應當前狀態替代節點的該已表示的槽的該節點相比較,並且如果針對已識別的抽象對指示匹配,則檢查一預先指定的屬性。
- 根據請求項5的方法,包括下列步驟:執行反例指導的精細化處理以識別該抽象對。
- 根據請求項5的方法,包括下列步驟提供一初始已更新網路連線表;在該初始已更新網路連線表上執行一模型檢查處理,並且如果該模型檢查在一特定狀態失敗,則使用輸入網路連線表,基於從該特定狀態決定的初始狀態變數賦值和輸入的一集合來執行一模擬;如果該模擬通過,則檢視導致該已更新網路連線表中檢測到的失敗的錯誤讀取,選擇抽象對來解決該錯誤讀取,並將該選擇的抽象對添加到該已更新網路連線表中。
- 根據請求項1的方法,其中該預先指定的屬性是一安全性定義。
- 根據請求項1的方法,其中該已更新資料結構包括一網路連線表。
- 根據請求項1的方法,包括下列步驟: 使用該電路設計製造一積體電路。
- 一種適用於對一電路設計的電腦實作的表示進行處理的資料處理系統,包括:一資料處理器和耦合至該資料處理器的一記憶體,該記憶體儲存由該資料處理器執行的、將該記憶體中的該電路設計表示為資料結構的指令,該資料結構定義一網路連線表為多個節點;包括指令用於:識別在該資料結構中表示一記憶體的節點,並用於處理該網路連線表以產生一已更新網路連線表,包括:識別該記憶體中的一個槽或多個槽以便表示在該已更新網路連線表中;利用實作該識別的一個槽或多個槽的替代節點,替代在該網路連線表中表示記憶體的節點;以及實作該電路設計的一驗證條件,該驗證條件支援使用該替代節點對一指定的安全性定義的檢查。
- 根據請求項11的資料處理系統,其中該替代使用每個已表示的槽的一替代節點集合來替換該記憶體,該集合包括識別已表示的槽的當前狀態和下一狀態節點以及當前狀態和下一狀態替換節點,並且針對表示對實作多工器的相應槽進行寫入的節點,如果寫入位址與識別該已表示的槽的該當前狀態節點的輸出相匹配,則利用寫入資料更新該槽的一下一狀態替代節點的內容,否則用該槽的一當前狀態替代節 點的內容,更新該槽的一下一狀態替代節點的內容,並且針對該網路連線表中表示對實作多工器的相應槽進行讀取的節點,如果該讀取位址與識別該已表示的槽的該當前狀態節點的一輸出相匹配,則回傳槽的當前狀態替代節點的內容,否則回傳非決定資料。
- 根據請求項11的資料處理系統,其中該網路連線表包括排列在一有向非循環圖中的節點,其包括表示邏輯運算符和算術運算符的字級節點、表示多工器運算符的字級節點、表示串接運算符的字級節點、表示提取運算符的字級節點、表示讀取的字級節點、表示寫入的字級節點、表示狀態變數的字級節點和表示二進位常數的字級節點。
- 根據請求項11的資料處理系統,其中該用於識別表示一記憶體的節點的指令包括:用於為記憶體和該記憶體的下一狀態函數決定所有定址於該記憶體的讀和寫節點、相同寬度的讀取和寫入資料以及使用相同寬度的位址節點的指令。
- 根據請求項11的資料處理系統,該用於通過識別抽象對來實作該驗證條件的指令,該抽象對包括該已更新網路連線表中的對應於該已更新網路連線表中的一當前狀態替代節點的一已抽象化節點,以及表明使用該已抽象化節點的一輸出來讀取該當前狀態替代節點的一周期的一延遲參 數,並且在該已更新網路連線表中建立一節點集合,其將該已抽象化節點與識別已表明該周期中對應當前狀態替代節點的該已表示的槽的該節點相比較,如果針對已識別的抽象對指示匹配,則檢查一預先指定的屬性。
- 根據請求項15的資料處理系統,包括用於執行反例指導精細化處理來識別該抽象對的指令。
- 根據請求項15的資料處理系統,包括指令,用於:提供一初始已更新網路連線表;以及在該初始已更新網路連線表上執行一模型檢查處理,並且如果該模型檢查在一特定狀態失敗,則使用輸入網路連線表,基於該特定狀態決定的初始狀態變數賦值和輸入的一集合來執行一模擬;如果該模擬通過,則檢視導致該已更新網路連線表中檢測到的失敗的錯誤讀取,選擇抽象對以解決該錯誤讀取,並將該選擇的抽象對添加到該已更新網路連線表。
- 根據請求項15的資料處理系統,其中該預先指定的屬性是一安全性定義。
- 根據請求項11的資料處理系統,其中該已更新資料結構包含一網路連線表。
- 一種提供適用於對一電路設計的一電腦實作的表示進行處理的產品,包括:可由一資料處理器讀取的一記憶體,該記憶體儲存可由該資料處理器執行的、將該記憶體中的該電路設計表示為資料結構的指令,該資料結構將定義一網路連線表為多個節點;並且包括指令,用於:識別在該資料結構中表示一記憶體的節點,並處理該網路連線表以產生一已更新網路連線表,包括:識別該記憶體的一個槽或多個槽以便表示在該已更新網路連線表中;利用實作該識別的一個槽或多個槽的替代節點,替換在該網路連線表中表示記憶體的節點;以及實作該電路設計的一驗證條件,該驗證條件支援使用該替代節點對該電路設計的一預先指定的安全性定義的檢查。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/258,724 US8001498B2 (en) | 2008-10-27 | 2008-10-27 | Method and apparatus for memory abstraction and verification using same |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201022978A TW201022978A (en) | 2010-06-16 |
TWI430123B true TWI430123B (zh) | 2014-03-11 |
Family
ID=42118745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098129297A TWI430123B (zh) | 2008-10-27 | 2009-08-31 | 用於記憶體抽象化及驗證的方法和設備 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8001498B2 (zh) |
CN (1) | CN101842789B (zh) |
TW (1) | TWI430123B (zh) |
WO (1) | WO2010062429A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8146034B2 (en) | 2010-04-30 | 2012-03-27 | International Business Machines Corporation | Efficient Redundancy Identification, Redundancy Removal, and Sequential Equivalence Checking within Designs Including Memory Arrays. |
US8478574B2 (en) | 2010-04-30 | 2013-07-02 | International Business Machines Corporation | Tracking array data contents across three-valued read and write operations |
US8566764B2 (en) | 2010-04-30 | 2013-10-22 | International Business Machines Corporation | Enhanced analysis of array-based netlists via phase abstraction |
US8181131B2 (en) * | 2010-04-30 | 2012-05-15 | International Business Machines Corporation | Enhanced analysis of array-based netlists via reparameterization |
US8307313B2 (en) | 2010-05-07 | 2012-11-06 | International Business Machines Corporation | Minimizing memory array representations for enhanced synthesis and verification |
US8336016B2 (en) | 2010-05-07 | 2012-12-18 | International Business Machines Corporation | Eliminating, coalescing, or bypassing ports in memory array representations |
US8291359B2 (en) | 2010-05-07 | 2012-10-16 | International Business Machines Corporation | Array concatenation in an integrated circuit design |
US8473883B2 (en) | 2011-08-03 | 2013-06-25 | International Business Machines Corporation | Abstraction for arrays in integrated circuit models |
CN103093016B (zh) * | 2011-11-04 | 2016-06-08 | 上海华虹宏力半导体制造有限公司 | 简化存储器后仿网表来实现大容量存储器仿真的方法 |
US8589837B1 (en) | 2012-04-25 | 2013-11-19 | International Business Machines Corporation | Constructing inductive counterexamples in a multi-algorithm verification framework |
US8578311B1 (en) | 2012-05-09 | 2013-11-05 | International Business Machines Corporation | Method and system for optimal diameter bounding of designs with complex feed-forward components |
US9092573B2 (en) * | 2012-07-06 | 2015-07-28 | Nvidia Corporation | System, method, and computer program product for testing device parameters |
US8627260B1 (en) | 2012-10-31 | 2014-01-07 | Synopsys, Inc. | Bit-level simplification of word-level models |
US8739085B1 (en) | 2012-12-10 | 2014-05-27 | International Business Machines Corporation | Vectorization of bit-level netlists |
US20140195209A1 (en) * | 2013-01-09 | 2014-07-10 | GM Global Technology Operations LLC | Counter-Example Guided Abstraction Refinement Based Test Case Generation From Simulink/Stateflow Models |
US8914758B1 (en) | 2013-05-28 | 2014-12-16 | Synopsys, Inc. | Equivalence checking using structural analysis on data flow graphs |
US9268889B2 (en) * | 2013-12-05 | 2016-02-23 | International Business Machines Corporation | Verification of asynchronous clock domain crossings |
US9507680B2 (en) * | 2014-03-24 | 2016-11-29 | Freescale Semiconductor, Inc. | Verification system and method for automated verification of register information for an electronic system |
US9501597B2 (en) | 2014-07-11 | 2016-11-22 | Synopsys, Inc. | Elimination of illegal states within equivalence checking |
US9465898B2 (en) * | 2015-01-29 | 2016-10-11 | Mentor Graphics Corporation | Loop handling in a word-level netlist |
US10558775B2 (en) * | 2017-12-20 | 2020-02-11 | International Business Machines Corporation | Memory element graph-based placement in integrated circuit design |
US10769331B2 (en) * | 2018-07-12 | 2020-09-08 | International Business Machines Corporation | Verification algorithm engine selection |
US11030367B2 (en) | 2019-09-11 | 2021-06-08 | International Business Machines Corporation | Out-of-context feedback hierarchical large block synthesis (HLBS) optimization |
US11416662B1 (en) * | 2020-01-08 | 2022-08-16 | Cadence Design Systems, Inc. | Estimating diagnostic coverage in IC design based on static COI analysis of gate-level netlist and RTL fault simulation |
US11507719B1 (en) * | 2020-02-06 | 2022-11-22 | Synopsys, Inc. | Accelerating formal property verification across design versions using sequential equivalence checking |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044211A (en) * | 1994-03-14 | 2000-03-28 | C.A.E. Plus, Inc. | Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description |
WO1995034036A2 (en) * | 1994-06-03 | 1995-12-14 | Synopsys, Inc. | Method and apparatus for estimating the power dissipated by a digital circuit |
US6163876A (en) * | 1998-11-06 | 2000-12-19 | Nec Usa, Inc. | Method for verification of RTL generated from scheduled behavior in a high-level synthesis flow |
US6415420B1 (en) * | 1999-04-30 | 2002-07-02 | Incentia Design Systems, Inc. | Synthesizing sequential devices from hardware description languages (HDLS) |
US6691078B1 (en) * | 1999-07-29 | 2004-02-10 | International Business Machines Corporation | Target design model behavior explorer |
US6574787B1 (en) | 1999-08-16 | 2003-06-03 | Sequence Design, Inc. | Method and apparatus for logic synthesis (word oriented netlist) |
US6625797B1 (en) * | 2000-02-10 | 2003-09-23 | Xilinx, Inc. | Means and method for compiling high level software languages into algorithmically equivalent hardware representations |
US6651228B1 (en) * | 2000-05-08 | 2003-11-18 | Real Intent, Inc. | Intent-driven functional verification of digital designs |
US6823486B2 (en) * | 2000-06-05 | 2004-11-23 | Fujitsu Limited | Automatic test pattern generation for functional register transfer level circuits using assignment decision diagrams |
US6728939B2 (en) * | 2001-01-08 | 2004-04-27 | Siemens Aktiengesellschaft | Method of circuit verification in digital design |
US20030105617A1 (en) * | 2001-12-05 | 2003-06-05 | Nec Usa, Inc. | Hardware acceleration system for logic simulation |
US7020856B2 (en) | 2002-05-03 | 2006-03-28 | Jasper Design Automation, Inc. | Method for verifying properties of a circuit model |
US7742907B2 (en) * | 2003-04-15 | 2010-06-22 | Nec Laboratories America, Inc. | Iterative abstraction using SAT-based BMC with proof analysis |
US7062727B2 (en) | 2003-08-25 | 2006-06-13 | Hewlett-Packard Development Company, L.P. | Computer aided design systems and methods with reduced memory utilization |
US7386818B2 (en) * | 2004-01-22 | 2008-06-10 | Nec Laboratories America, Inc. | Efficient modeling of embedded memories in bounded memory checking |
US7149987B2 (en) * | 2004-03-08 | 2006-12-12 | Synopsys, Inc. | Method and apparatus for performing generator-based verification |
US7143373B2 (en) * | 2004-10-14 | 2006-11-28 | Synopsys, Inc. | Method and apparatus for evaluating and debugging assertions |
US7373618B1 (en) * | 2004-11-12 | 2008-05-13 | Cadence Design Systems, Inc. | Method and system for selection and replacement of subcircuits in equivalence checking |
US7322017B2 (en) * | 2004-12-14 | 2008-01-22 | International Business Machines Corporation | Method for verification using reachability overapproximation |
US7284218B1 (en) * | 2005-03-18 | 2007-10-16 | Calypto Design Systems, Inc. | Method and system for inplace symbolic simulation over multiple cycles of a multi-clock domain design |
US7752588B2 (en) * | 2005-06-29 | 2010-07-06 | Subhasis Bose | Timing driven force directed placement flow |
AU2006278225A1 (en) * | 2005-08-09 | 2007-02-15 | Compography, Inc. | Methods and apparatuses to assemble, extract and deploy content from electronic documents |
JP4470181B2 (ja) | 2006-07-26 | 2010-06-02 | エルピーダメモリ株式会社 | レイアウト検証方法及びレイアウト検証装置 |
US8306802B2 (en) * | 2006-11-02 | 2012-11-06 | Synopsys, Inc. | Method for modeling an HDL design using symbolic simulation |
US20090007038A1 (en) * | 2007-04-05 | 2009-01-01 | Nec Laboratories America, Inc. | Hybrid counterexample guided abstraction refinement |
US9489477B2 (en) * | 2008-09-24 | 2016-11-08 | Synopsys, Inc. | Method and apparatus for word-level netlist reduction and verification using same |
-
2008
- 2008-10-27 US US12/258,724 patent/US8001498B2/en active Active
-
2009
- 2009-08-31 TW TW098129297A patent/TWI430123B/zh active
- 2009-08-31 CN CN2009800001675A patent/CN101842789B/zh active Active
- 2009-08-31 WO PCT/US2009/055530 patent/WO2010062429A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US8001498B2 (en) | 2011-08-16 |
TW201022978A (en) | 2010-06-16 |
WO2010062429A1 (en) | 2010-06-03 |
US20100107131A1 (en) | 2010-04-29 |
CN101842789A (zh) | 2010-09-22 |
CN101842789B (zh) | 2013-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI430123B (zh) | 用於記憶體抽象化及驗證的方法和設備 | |
TWI424327B (zh) | 用於處理電路設計之電腦實作表示的方法、設備、資料處理系統及提供相應軟體的產品 | |
US6975976B1 (en) | Property specific testbench generation framework for circuit design validation by guided simulation | |
US7958470B1 (en) | Method and system for false path analysis | |
US7890901B2 (en) | Method and system for verifying the equivalence of digital circuits | |
US9489477B2 (en) | Method and apparatus for word-level netlist reduction and verification using same | |
US6148436A (en) | System and method for automatic generation of gate-level descriptions from table-based descriptions for electronic design automation | |
US20040148150A1 (en) | Verification of scheduling in the presence of loops using uninterpreted symbolic simulation | |
US8650513B2 (en) | Reducing x-pessimism in gate-level simulation and verification | |
US7149987B2 (en) | Method and apparatus for performing generator-based verification | |
US8271914B2 (en) | Method and apparatus for simulating behavioral constructs using indeterminate values | |
US20020128809A1 (en) | Randomized simulation model instrumentation | |
Fujita et al. | Verification techniques for system-level design | |
Morin-Allory et al. | Efficient and correct by construction assertion-based synthesis | |
Mailhot | Technology mapping for vlsi circuits exploiting boolean properties and operations | |
Becker et al. | FudgeFactor: Syntax-guided synthesis for accurate RTL error localization and correction | |
US8448109B1 (en) | Vector evaluation of assertions | |
Kapp | Boolector Interface with LGraph | |
Golshan | Design Verification | |
Terem et al. | Pattern search in hierarchical high-level designs | |
Marakkalage et al. | Scalable Sequential Optimization Under Observability Don't Cares | |
CN117149202A (zh) | 针对硬件描述语言的编译方法、装置、设备、介质及产品 | |
Grandhi et al. | An EDA framework for reliability estimation and optimization of combinational circuits | |
da Silva Almeida et al. | Improvement in Logisim to Digital Systems Simulation in Higher Levels of Abstraction and Synthesis | |
Veneris et al. | FudgeFactor: Syntax-Guided Synthesis for Accurate RTL Error Localization and Correction |