两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于構(gòu)造規(guī)范表示的方法和裝置的制作方法

文檔序號:6582881閱讀:242來源:國知局
專利名稱:用于構(gòu)造規(guī)范表示的方法和裝置的制作方法
技術領域
本公開內(nèi)容主要地涉及電子設計自動化。具體而言,本公開內(nèi)容涉及用于構(gòu)造例
如二元判決圖的規(guī)范表示的方法和裝置。
背景技術
設計和驗證工具的發(fā)展已經(jīng)使計算設備的迅速發(fā)展成為可能。實際上,沒有這樣 的工具將幾乎不可能設計和驗證在如今的計算設備中普遍存在的復雜集成電路。
受約束的隨機仿真方法作為一種基于定向測試的仿真的替代方式已經(jīng)越來越普 遍地用于對復雜設計的功能驗證。在受約束的隨機仿真方法中,生成隨機矢量以滿足設計 的某些操作約束。通常將這些約束指定為測試臺程序的部分。測試臺自動化工具(TBA)使 用測試臺程序以針對隨機變量集合生成隨機解,從而滿足對隨機變量集合的約束集合。這 些隨機解然后可以用來為待驗證的設計(DUV)生成有效隨機剌激。使用仿真工具對這一剌 激進行仿真,并且通常在測試臺程序內(nèi)檢查仿真結(jié)果以監(jiān)視功能覆蓋范圍,由此提供關于 驗證質(zhì)量和完整性的置信度測量。 約束求解器通常用來生成滿足約束集合的隨機矢量。約束求解器的基本功能用來 求解以下約束滿足問題給定變量集合和約束集合,為變量集合找到滿足約束集合的值集 合。為求更佳軟件維護和質(zhì)量,約束求解器生成的這些解需要是可再現(xiàn)和確定的。另外,由 于用戶通常要求針對隨機仿真的良好覆蓋范圍,所以約束解也需要均勻分布。
遺憾的是,約束滿足問題是NP-complete(NP完全)問題。另一方面,邏輯仿真通 常隨著設計的規(guī)模而線性地縮放。作為結(jié)果,剌激生成速度通常遠遠滯后于在仿真中使用 剌激的速度。因此,希望提高約束求解器的性能,因為這可以明顯提高受約束的隨機剌激工 具的總體性能。

發(fā)明內(nèi)容
本發(fā)明的一些實施例提供用于有助于構(gòu)造可以作為邏輯函數(shù)集合的組合來表達 的邏輯函數(shù)的規(guī)范表示(CR)的系統(tǒng)和技術。 在操作期間,系統(tǒng)可以接收CR規(guī)模限制。接著,系統(tǒng)可以基于邏輯函數(shù)集合來構(gòu) 造CR集合,其中CR集合中的各CR表示邏輯函數(shù)集合中的邏輯函數(shù)。在構(gòu)造CR集合之時, 如果系統(tǒng)檢測到CR已經(jīng)超過CR規(guī)模限制,則系統(tǒng)可以將CR和/或與CR關聯(lián)的邏輯函數(shù) 報告給用戶。 —旦成功構(gòu)建至少一些CR,則系統(tǒng)可以嘗試組合CR。在一些實施例中,系統(tǒng)可以 用迭代方式組合CR。具體而言,系統(tǒng)可以對CR試探地進行排序以獲得CR函數(shù)排序(該排 序在根本上不同于變量排序),并且根據(jù)CR函數(shù)排序來迭代地組合CR。在組合CR之時,系 統(tǒng)可以確定在不操作CR規(guī)模限制的情況下一些CR是不能組合的。具體而言,系統(tǒng)可以成 功組合CR子集以獲得中間CR。然而,無論何時系統(tǒng)嘗試組合任何剩余CR與中間CR,系統(tǒng) 都可以確定違反CR規(guī)模限制。響應于確定在不操作CR規(guī)模限制的情況下一些CR不能進行組合,系統(tǒng)可以將CR報告給用戶。用戶可以使用這一信息快速識別約束中的錯誤。
在一些實施例中, 一旦系統(tǒng)確定在不操作CR規(guī)模限制的情況下一些CR不能進行 組合,系統(tǒng)可以自動增加CR規(guī)模限制并且嘗試對CR與增加的CR規(guī)模限制進行組合。


圖1圖示了根據(jù)本發(fā)明一個實施例的在集成電路的設計和制作中的各個階段。 圖2A圖示了根據(jù)本發(fā)明一個實施例的約束。 圖2B圖示了根據(jù)本發(fā)明一個實施例的BDD。 圖3圖示了根據(jù)本發(fā)明一個實施例的可以如何根據(jù)約束集合來構(gòu)造BDD。 圖4呈現(xiàn)了對根據(jù)本發(fā)明一個實施例的示出用于構(gòu)造BDD的過程的流程圖。 圖5呈現(xiàn)了對根據(jù)本發(fā)明一個實施例的示出用于構(gòu)造CR的過程的流程圖。 圖6呈現(xiàn)了對根據(jù)本發(fā)明一個實施例的示出用于構(gòu)造CR的過程的流程圖。 圖7圖示了根據(jù)本發(fā)明一個實施例的計算機系統(tǒng)。 圖8圖示了根據(jù)本發(fā)明一個實施例的裝置。
具體實施例方式
呈現(xiàn)以下描述以使本領域技術人員能夠?qū)崿F(xiàn)和利用本發(fā)明,并且在特定應用及其 要求的背景下提供該描述。本領域技術人員將容易清楚對公開的實施例的各種修改,并且 這里限定的一般原理可以適用于其他實施例和應用而不脫離本發(fā)明的精神實質(zhì)和范圍。因 此,本發(fā)明不限于所示實施例而是將被賦予以與這里公開的原理和特征一致的最廣范圍。
集成電路(IC)設計流程 圖1圖示了根據(jù)本發(fā)明一個實施例的在集成電路的設計和制作中的各個階段。
該過程可以從使用EDA處理(步驟110)設計的集成電路來實現(xiàn)的產(chǎn)品構(gòu)想(步 驟IOO)開始。在流片集成電路(事件140)之后,該設計可以經(jīng)過制作處理(步驟150)以 及封裝和組裝處理(步驟160)以產(chǎn)生成品芯片170。 EDA處理(步驟IIO)包括下文僅出于示例目的而描述的而且并非用來限制本發(fā)明 的步驟112-130。具體而言,可以在與下文描述的序列不同的序列中執(zhí)行這些步驟。
在系統(tǒng)設計(步驟112)期間,電路設計者可以描述他們想要實施的功能。他們也 可以進行如果-怎么樣(what-if)的規(guī)劃以精化功能、檢驗成本等。硬件-軟件架構(gòu)劃分 也可以出現(xiàn)在這一階段??梢栽谶@一步驟使用的來自Synopsys公司的示例EDA軟件產(chǎn)品
包括Model Architect、Saber 、 System studio禾口DesignWare⑧。
0025] 在邏輯設計和功能驗證(步驟114)期間,可以編寫用于系統(tǒng)中的模塊的VHDL 或者Verilog代碼,并且檢驗該設計的功能準確性,例如可以檢驗該設計以保證它產(chǎn)生正 確輸出??梢栽谶@一步驟使用的來自Synopsys公司的示例EDA軟件產(chǎn)品包括VCS⑧、
Vera 、DesignWare 、 Magel lanTM、Formality 、 esp和Leda⑥。 在合成和測試設計(步驟116)期間,VHDL/Ver i log可以被轉(zhuǎn)譯成網(wǎng)表。另 外,可以針對目標技術優(yōu)化網(wǎng)表,并且可以設計和實施測試以檢驗成品芯片。可以在 這 一 步驟使用的來自Synopsys公司的示例EDA軟件產(chǎn)品包括Design Compiler 、Physical Complier⑧、Test Compi 1 er、 Power Compi 1 erTM、 FPGA Compiler、
TetraMAX⑧和DesignWare⑧。 在網(wǎng)表驗證(步驟118)期間,可以檢驗網(wǎng)表與時序約束的相符性和與VHDL/ Verilog源碼的對應性??梢栽谶@一步驟使用的來自Synopsys公司的示例EDA軟件產(chǎn)品包
括F"ormality⑧、PrimeTime⑧和VCS⑧。 在設計規(guī)劃(步驟120)期間,可以構(gòu)造和分析用于芯片的整個布圖規(guī)劃(floor plan)以便進行定時和頂層布線。可以在這一步驟使用的來自Synopsys公司的示例EDA軟 件產(chǎn)品包括Astro 和ICCompiler產(chǎn)品。 在物理實施(步驟122)期間,可以在布局(布置)中對電路元件進行定位,并且 這些電路元件可以被電耦合(布線)??梢栽谶@一步驟使用的來自Synopsys公司的示例 EDA軟件產(chǎn)品包括Astro 和IC Compiler產(chǎn)品。 在分析和提取(步驟124)期間,可以在晶體管級驗證電路的功能并且可以提取寄 生效應(parasitica)。可以在這一步驟使用的來自Synopsys公司的示例EDA軟件產(chǎn)品包 括AstroRail 、 PrimeRail、PrimeTime⑧和Star-RCXT 。 在物理驗證(步驟126)期間,可以檢驗設計以保證制造、電力問題、平板印刷問題 和電路的正確性。Hercules 是可以在這一步驟使用的來自Synopsys公司的示例EDA軟 件產(chǎn)品。 在分辨率增強(步驟128)期間,可以對布局進行幾何形狀操控以提高設計的可 制造性。可以在這一步驟使用的來自Synopsys公司的示例EDA軟件產(chǎn)品包括Proteus/ Progen、 ProteusAF禾口 PSMGen。 在掩模數(shù)據(jù)預備(步驟130)期間,可以"流片"設計以產(chǎn)生在制作期間使用的掩 模??梢栽谶@一步驟使用的來自Synopsys公司的示例EDA軟件產(chǎn)品包括CATS⑧系列產(chǎn)
PI
PR o 可以在一個或者多個上述步驟期間使用一些實施例。具體而言,可以在功能驗證 期間使用一些實施例(步驟114)。
受鉤束的隨機仿真 對給定的DUV被假設在其中工作的環(huán)境正確地進行限定是一個對于有效設計驗 證而言的重要先決條件。傳統(tǒng)上,驗證工程師已經(jīng)使用測試臺對DUV的環(huán)境進行建模。可 以使用硬件描述語言來描述測試臺。注意,測試臺通常包括如下測試的集合,這些測試以適 當方式約束環(huán)境以便覆蓋DUV的目標表現(xiàn)集合。 —些硬件語言(諸如System Verilog)支持用于在測試臺中明確指定約束的若干 高級構(gòu)造。具體而言,明確約束可以用來以與DUV的協(xié)議一致的方式制約對測試臺的隨機 選擇。這樣的測試臺通常稱為受約束的隨機測試臺。 如上文提到的那樣,隨機剌激生成性能通常遠遠滯后于邏輯仿真性能。因此,提高 約束求解器的性能可以對測試臺的總體性能具有大量影響。因此,希望改進約束求解器的 性能。 BDD(二元判決圖) 在典型受約束的隨機仿真場合中,用戶編寫約束集合(例如使用System Verilog),并且在仿真期間,約束求解器將嘗試發(fā)現(xiàn)滿足由用戶指定的約束的隨機仿真剌激(隨機變量賦值集合)。約束求解器可以使用BDD、 ATPG、可滿足性或者其他類似方式以 發(fā)現(xiàn)可滿足的解(仿真剌激)。 具體而言,在基于BDD的約束求解器中,系統(tǒng)通常使用BDD來代表約束。將隨機變 量(用于仿真)作為BDD變量來對待,并且將(對這些變量的)約束的合取(conjunction) 構(gòu)造為由BDD表示的布爾函數(shù)。當且僅當使用賦予的值來對布爾函數(shù)求值得到"真(TRUE)" 值時,向這些變量的賦值才會滿足約束。
圖2A圖示了根據(jù)本發(fā)明一個實施例的約束。 圖2A中所示約束是"a"、"b"和"c"這三個隨機變量的布爾函數(shù)。隨機變量通常 用來對DUV進行建模,例如隨機變量"a"可以表示DUV中的輸入信號的邏輯狀態(tài)。注意,在 向隨機變量的所有可能值的賦值之中,僅一些值的賦值對應于DUV的有效狀態(tài)。由于受約 束的隨機仿真旨在關于有效狀態(tài)驗證DUV,所以需要一種用以制約隨機變量的值的技術。受 約束的隨機仿真通常使用約束集合以制約隨機變量的值。具體而言,在基于約束的仿真期 間,測試臺可以生成滿足約束集合的隨機輸入(例如用于隨機變量"a"、"b"和"c"的值的 賦值)。以這一方式,通過使用約束集合,仿真和驗證工具可以通過向DUV提供預計在正常 操作期間出現(xiàn)的剌激來驗證DUV。 —種用于生成隨機輸入的方式是使用BDD。具體而言,系統(tǒng)可以首先生成表示約束 集合的BDD。接著,系統(tǒng)可以使用BDD以生成隨機輸入。具體而言,BDD中與值"1"對應的 從根節(jié)點到端節(jié)點的各路徑可以與滿足約束集合的賦值關聯(lián)。
圖2B圖示了根據(jù)本發(fā)明一個實施例的BDD。 BDD 200可以表示圖2A中所示約束。BDD 200包括節(jié)點202、204、206、208、210、 212、214和216。節(jié)點202可以是可以用來表示整個約束的根節(jié)點。節(jié)點204可以與變量 "a"關聯(lián),節(jié)點206和208可以與變量"b"關聯(lián),而節(jié)點210和212可以與變量"c"關聯(lián)。 節(jié)點214可以表示用于布爾函數(shù)的布爾值"真"或者"1"。換而言之,節(jié)點214可以表示其 中已經(jīng)滿足約束的情形。對照而言,節(jié)點216可以表示布爾值"假"或者"0"。換而言之,節(jié) 點216可以表示其中尚未滿足約束的情形。 BDD 200中的有向邊可以表示向隨機變量的賦值。例如,在節(jié)點204與206之間的 有向邊可以與向隨機變量"a"賦予"O"值關聯(lián)。類似地,在節(jié)點208與212之間的有向邊 可以與向隨機變量"b "賦予"1"值關聯(lián)。 BDD中從根節(jié)點(例如節(jié)點202)到用于布爾值"真"的端節(jié)點(例如節(jié)點214)的
有向路徑可以對應于向隨機變量的如下賦值,該賦值滿足由BDD表示的約束集合,例如圖
2A中所示約束。例如,路徑218始于節(jié)點202而止于節(jié)點214。與路徑218關聯(lián)的賦值是
a = 0, b = 1和c = 1。顯然,這一賦值造成圖2A中所示布爾函數(shù)求值得到"真"。 —旦系統(tǒng)構(gòu)建BDD,它可以通過確定從根節(jié)點到與"真"值對應的端節(jié)點的所有相
異路徑,并且通過從所有相異路徑的集合中隨機選擇路徑,來生成受約束的隨機剌激。 圖3圖示了根據(jù)本發(fā)明一個實施例的如何可以根據(jù)約束集合構(gòu)造BDD。 假設受約束的隨機仿真需要生成滿足約束集合302的隨機輸入。約束求解器可以
構(gòu)建用于各約束的BDD,即一個BDD各自用于約束Q、 C2和C3。接著,求解器可以通過使用
通過組合個別BDD而構(gòu)造的BDD來表示約束集合的合取。 在一些實施例中,求解器可以用迭代方式組合BDD。例如在步驟304中,求解器可以從如下BDD開始,該BDD用于與約束Q相同的約束K1Q接著在步驟306中,求解器可以構(gòu) 造如下BDD,該BDD用于與約束Q和C2的合取相等的約束K2。注意,可以通過組合用于& 和C2的BDD來為約束K2構(gòu)造BDD。最后在步驟308中,求解器可以構(gòu)造用于約束K3的BDD, 該約束K3等于約束Q、G和C3的合取。注意,可以通過組合用于K2和C3的BDD來構(gòu)造用于 約束KJ勺BDD。另外注意,用于K3的BDD是用于約束集合302的BDD。用于Kj勺BDD可以 用來生成滿足約束集合302的隨機輸入??梢栽贘un Yuan等人于2006年1月在Springer 的Constraint-BasedVerification中找到關于如何構(gòu)建和組合BDD的更多細節(jié)。
注意,用戶有可能編寫很難使用基于BDD的約束求解器來求解的約束集合。具體 而言,當基于BDD的約束求解器嘗試為約束集合生成BDD時,BDD可能"擴張(blow up)", 例如BDD的規(guī)??赡茏兊萌绱酥?,以至于構(gòu)造BDD或者使用BDD以生成用于約束集合的 解變得不切實際。注意,擴張問題不限于基于BDD的方式。例如,如果約束求解器使用基于 ATPG(自動測試模式生成)的方式,則用戶可能感覺約束求解器始終在力圖生成解。
BDD擴張問題是基于約束的隨機剌激中的主要性能問題之一。換而言之,隨機剌激 生成滯后于邏輯仿真的原因之一在于BDD擴張問題。如果系統(tǒng)可以幫助用戶識別和修復其 中預計BDD擴張的情形,則系統(tǒng)可以明顯改善約束求解器的總體性能。具體而言,用戶將通 常想要知道約束為什么造成BDD擴張,并且更重要的是如何修復該問題或者如何解決該問 題。該擴張常常由若干約束造成。在一些情形中,約束就它本身而言可能造成BDD擴張,而 在其他情形中,由于多個約束之間的交互而出現(xiàn)BDD擴張。如果系統(tǒng)可以識別造成BDD擴 張的約束,則它可以幫助用戶識別約束中的錯誤,并且也幫助用戶確定如何重寫約束以修 復BDD擴張問題。 一旦用戶已經(jīng)重寫約束以避免擴張問題,則約束可由約束求解器用來生 成隨機輸入。 注意,受約束的隨機驗證僅為使用BDD的許多應用之一。因此,上述BDD擴張問題 不限于受約束的隨機驗證應用;BDD擴張問題可以出現(xiàn)于組合BDD以獲得組合式BDD的任 何應用中。繼而一種通過幫助解決BDD擴張問題來有助于構(gòu)造BDD的技術或者系統(tǒng)可以用 于組合BDD的任何應用中。 另外,擴張問題不限于BDD。具體而言,邏輯函數(shù)的任何規(guī)范表示都可能出現(xiàn)擴張 問題。具體而言,系統(tǒng)可以基于邏輯函數(shù)集合來構(gòu)造CR。當系統(tǒng)嘗試組合個別CR以獲得組 合式CR時可能出現(xiàn)擴張問題。 注意,邏輯函數(shù)的規(guī)范表示一般可以是滿足以下性質(zhì)的任何表示如果兩個邏 輯函數(shù)等效,只要在構(gòu)造規(guī)范表示的同時使用相同變量排序(或者等效特性),則它們的 規(guī)范表示將是相同的。規(guī)范表示的例子包括但不限于二元判決圖、二元矩量圖(binary momentdiagram)、零抑制二元判決圖、多值判決圖、多端二元判決圖、代數(shù)判決圖等。
以下章節(jié)描述如何可以根據(jù)約束集合來構(gòu)造BDD以及如何可以根據(jù)邏輯函數(shù)集 合來構(gòu)造CR。 根據(jù)約束集合來構(gòu)造BDD 本發(fā)明的一些實施例提供一種系統(tǒng),該系統(tǒng)可以幫助用戶識別約束集合為何造成 得到的BDD擴張。具體而言,系統(tǒng)可以針對約束求解器來設置對運行期和/或存儲器使用 (包括BDD規(guī)模)的任意限制L。在構(gòu)建BDD之時,如果求解器超過這一限制,則系統(tǒng)可以 推斷BDD已經(jīng)擴張。
如上文說明的那樣,在受約束的隨機仿真場合中,給定約束集合K = {Cl, c2,..., cJ,其中各 為約束。為了生成隨機輸入,約束求解器通常為各約束構(gòu)建BDD,然后組合BDD 以獲得表示個別BDD的合取的組合式BDD。造成合取結(jié)果求值為1或者"真"的BDD變量的 賦值將構(gòu)成對約束的解。在為各約束構(gòu)建BDD的過程期間,如果BDD擴張(超過BDD限制、 存儲器限制或者運行期限制),則系統(tǒng)可以推斷這一約束至少是BDD構(gòu)造過程持續(xù)如此之 久的原因之一。系統(tǒng)可以將這一約束報告給用戶,由此幫助用戶識別BDD擴張問題的根源 起因。 注意,BDD可能由于不良的變量排序而擴張(并且即使啟用動態(tài)變量排序,它仍然 可能由于不同約束中相沖突的排序要求而擴張)。 注意,變量排序在根本上不同于函數(shù)排序。變量排序是指變量用來形成BDD的順 序。另一方面,函數(shù)排序是指其中組合約束(或者邏輯函數(shù))的順序。注意,改變其中約束 (或者邏輯函數(shù))進行組合的順序并不改變變量排序。反言之,在構(gòu)造BDD時改變選擇變量 的順序并不改變對約束進行組合的順序。 為了幫助用戶識別特定變量排序是否造成擴張,一些實施例可以使用嘗試不同變 量排序的第二 BDD管理器,來為有問題的約束構(gòu)建BDD。如果即使在第二 BDD管理器嘗試不 同變量排序之后BDD構(gòu)造仍然擴張,則系統(tǒng)可以推斷問題在于約束(例如約束可能過于復 雜而無法使用BDD來表示)而不在于變量排序。因而,系統(tǒng)可以向用戶報告問題在于約束 本身而不在于特定變量排序。這可以讓用戶免于將時間浪費在嘗試通過改變變量排序來解 決BDD擴張問題。另一方面,如果改變變量排序修復擴張問題,則系統(tǒng)可以推斷BDD擴張問 題由相沖突的BDD變量排序要求造成。系統(tǒng)可以打印造成相沖突的BDD變量排序要求的約 束或者在打印它們之前進一步使得約束變小。 即使用于各約束的BDD沒有擴張,當在合取運算期間組合BDD時BDD仍然可以擴 張。如上文說明的那樣,一些實施例可以迭代地構(gòu)建{Cl, c2,. . . , cn}的合取,其中中間BDD
L、J2.....l構(gòu)造如下 J丄=Cl J2 = J! c2 . . ^ = ^— . . .Jn = Jn—! Cn 如果可以無擴張地構(gòu)造上述合取,則整個約束集合將已經(jīng)是可求解的。然而,當組 合兩個BDD時,所得到的BDD可能變得不切實際地大。注意,如果按不同順序進行約束{Cl,
c2, . . . , cn}的合取,則中間合取BDD J2.....Jn—工將是不同的,但是最終合取結(jié)果l將
是相同的。有可能的是按特定順序組合BDD造成中間BDD擴張,但是如果按不同順序組合 BDD,則中間BDD將不擴張。遺憾的是,確定不造成擴張的BDD函數(shù)排序是一個NP-Hard問
10題。 本發(fā)明的一些實施例檢測是否預計中間BDD擴張并且對BDD重新排序以嘗試避免 擴張問題。具體而言,一些實施例利用其中以增加BDD規(guī)模為序?qū)s束{Cl, c2, . . . , cn}進 行排序的貪婪試探法(greedy heuristic)。例如,系統(tǒng)可以基于對應BDD中的節(jié)點數(shù)目對 約束進行排序。本領域技術人員將清楚可以使用其他方式對約束進行排序。例如,系統(tǒng)可 以基于用于關聯(lián)的BDD的存儲器總數(shù)量對約束進行排序。另外,系統(tǒng)可以基于約束中的狀 態(tài)變量和/或常量數(shù)目對約束進行排序。 一旦系統(tǒng)按特定順序?qū)DD進行排序,則系統(tǒng)可 以迭代地進行如上所述的合取運算。 為了說明系統(tǒng)可以如何對約束重新排序,假設合取運算在系統(tǒng)嘗試計算二時擴 張。在這一點,系統(tǒng)可以將如下消息打印給用戶,該消息向用戶通知可以將約束{Cl,c2,..., Ci—卩全部一起求解、但是向其添加約束Ci造成得到的BDD Ji超過容量限制L。注意,向用 戶通知哪個約束確切造成組合運算擴張對于調(diào)試擴張問題而言已經(jīng)頗為有用。在一些實施 例中,系統(tǒng)可以在這一點終止BDD構(gòu)造過程。然而,其他實施例可以對約束重新排序并且嘗 試使用新的BDD函數(shù)排序來構(gòu)建BDD。 在一些實施例中,系統(tǒng)可以從{ci+1,ci+2,. . . ,cj選擇約束Cj并且嘗試進行J卜工與
Cj之間的合取。如果Cj也造成擴張,則系統(tǒng)可以從約束集合選擇尚未使用的另一約束。合
取過程可以用這一方式繼續(xù)直至已經(jīng)窮盡所有約束,從而各剩余約束如果與中間BDD組合 則將造成擴張。接著,系統(tǒng)可以報告成功"合取"的約束集合以及造成擴張的約束集合。例 如在上述場合中,如果約束{Ci, ci+1, ci+2, . . . , cn}中的各約束造成擴張,則系統(tǒng)可以向用戶 報告它能夠成功進行對約束{&, c2, . . . , Ci—J的合取運算并且剩余約束{Ci, ci+1, ci+2,..., cn}中的各約束造成擴張。這一信息可以幫助用戶識別約束中的一個或者多個錯誤。具體而 言,當用戶查看這兩個約束集合時,用戶可能能夠識別約束中造成擴張的變量或者表達式。
例如,假設電路中的16位乘法器造成BDD擴張。當用戶查看造成擴張的約束時, 用戶可以立即認識到擴張由16位乘法器造成。例如,用戶可以注意到造成擴張的所有約束 以某種方式與16位乘法器有關,因此用戶可以正確地推斷擴張由16位乘法器造成。注意, 電路將最可能包括大量模塊,并且除非系統(tǒng)確切報告哪些約束造成擴張,用戶才可以結(jié)束 將大量時間浪費在識別問題。 一旦用戶識別16位乘法器造成擴張,用戶具有用以克服問題 的許多選項。例如,用戶可以重寫與16位乘法器關聯(lián)的約束,或者用戶可以用更簡易的模 塊如8位乘法器取代16位乘法器。 作為另一示例性例子,假設電路包括浮點模塊和整數(shù)模塊,并且假設這些模塊均 沒有被假設為同時接通。當用戶回顧造成擴張的約束時,用戶可以認識到由于約束允許浮 點模塊和整數(shù)模塊均同時接通,所以約束被不正確地編寫。 一旦用戶認識到這一錯誤,用戶 可以重寫約束以修復錯誤。 基于以上描述,以下段落描述可以用來構(gòu)造BDD的系統(tǒng)和技術。注意,這些系統(tǒng)和 技術不限于受到約束隨機驗證并且它們不限于合?。凰鼈兛梢杂糜谏婕暗浇M合BDD的任何 應用中。 圖4呈現(xiàn)了對根據(jù)本發(fā)明一個實施例的示出用于構(gòu)造BDD的過程的流程圖。
該過程可以通過為集合中的各約束構(gòu)建BDD(步驟402)來開始。接著,系統(tǒng)可以 確定在被構(gòu)造之時是否有任何BDD擴張(步驟404)。如果BDD擴張,則系統(tǒng)可以將關聯(lián)約束報告給用戶(步驟406)。另一方面,如果沒有BDD擴張,則系統(tǒng)然后可以對集合中的約束 進行排序(步驟408)。 系統(tǒng)然后可以將集合中的第一約束移動到合取(步驟410)。接著,系統(tǒng)可以從集 合選擇另一約束(步驟412)。系統(tǒng)然后可以確定是否預計所得到的BDD在合取運算期間擴 張(步驟414)。 如果所得到的BDD擴張,則系統(tǒng)然后可以確定它是否已經(jīng)嘗試所有約束(步驟 418)。如果系統(tǒng)尚未嘗試所有約束,則系統(tǒng)可以回到步驟412并且選擇集合中的另一約 束。另一方面,如果系統(tǒng)已經(jīng)嘗試所有約束,則系統(tǒng)可以將集合中的約束報告給用戶(步驟 422)并且終止該過程。注意,報告給用戶的約束是造成合取過程擴張的約束。在一種變化 中,系統(tǒng)可以增加BDD規(guī)模限制并且嘗試通過使用新的BDD規(guī)模限制來組合BDD。系統(tǒng)可以 在它增加BDD規(guī)模限制時通知用戶。 另一方面,如果所得到的BDD沒有擴張,則系統(tǒng)可以更新合取結(jié)果并且從集合中 去除所選約束(步驟416)。系統(tǒng)然后可以確定是否已經(jīng)嘗試所有約束(步驟420)。如果 是這樣,則系統(tǒng)可以報告合取運算成功(步驟424)并且終止該過程。另一方面,如果尚未 嘗試所有約束,則系統(tǒng)可以回到步驟412并且選擇集合中的另一約束。
ffi娜車躺浦M離CR 注意,擴張問題不限于針對BDD集合進行合取運算。具體而言,擴張問題可能在組 合表示邏輯函數(shù)集合的CR集合的同時出現(xiàn)。 圖5呈現(xiàn)了對根據(jù)本發(fā)明一個實施例的示出用于構(gòu)造CR的過程的流程圖。
該過程可以通過接收希望為其構(gòu)造CR的邏輯函數(shù)集合(步驟502)來開始。
系統(tǒng)可以使用CR規(guī)模限制以確定CR合適已經(jīng)變得太大。CR規(guī)模限制一般可以基 于一個或者多個標準,這些標準表明是否預計構(gòu)造CR造成性能問題。 例如,經(jīng)驗證據(jù)可以表明,只要CR中的元素(例如節(jié)點或者邊)數(shù)目超過特定閾 值,CR構(gòu)造過程將需要不切實際的較長時間的可能性變高。在這樣的情形中,可以按照CR 的元素(例如節(jié)點或者邊)表達CR規(guī)模限制??梢杂脕肀磉_CR規(guī)模限制的其他標準包括 為了存儲CR而需要的存儲器數(shù)量以及為了構(gòu)造CR而需要的處理器周期數(shù)目。
在一些實施例中,系統(tǒng)可以按照多個參數(shù)或者標準來表達CR規(guī)模。例如,系統(tǒng)可 以使用兩個閾值來表達CR規(guī)模存儲器閾值和處理器周期閾值。在這一例子中,如果超過 存儲器閾值或者超過處理器周期閾值,則CR將超過CR規(guī)模。 繼續(xù)圖5中所示流程圖,系統(tǒng)然后可以基于邏輯函數(shù)集合來構(gòu)造CR集合,其中CR 集合中的各CR表示邏輯函數(shù)集合中的邏輯函數(shù)(步驟504)。系統(tǒng)可以在根據(jù)各約束創(chuàng)建 CR的同時監(jiān)視CR的規(guī)模。如果特定CR的規(guī)模超過CR規(guī)模限制,則系統(tǒng)可以將CR報告給 用戶。在一些實施例中,當系統(tǒng)確定CR的規(guī)模已經(jīng)超過CR規(guī)模限制時,系統(tǒng)可以終止該過 程。在其他實施例中,系統(tǒng)可以繼續(xù)為其他約束構(gòu)建CR。 接著,系統(tǒng)可以對CR集合進行排序以獲得CR函數(shù)排序(Cl, c2,. . . , cn),其中Ci是 CR函數(shù)排序中的第i個位置,而n是CR集合的基數(shù)(步驟506)。注意,變量排序從根本上 不同于函數(shù)排序。變量排序是指如下順序,按照該順序來選擇具體邏輯函數(shù)的變量以形成 CR(注意這適用于需要變量排序的CR)。另一方面,函數(shù)排序是指其中組合邏輯函數(shù)的順 序。
12
系統(tǒng)然后可以組合CR函數(shù)排序中的CR q至Cj—工以獲得中間CR,其中2〈 j〈n(步 驟508)。注意,組合CR獲得如下CR,該CR表示與CR關聯(lián)的邏輯函數(shù)的邏輯組合。因此, 中間CR表示與CR函數(shù)排序中的CR q至Cj—工相關聯(lián)的邏輯函數(shù)的邏輯組合。當邏輯運 算用來創(chuàng)建包括兩個邏輯函數(shù)的邏輯表達式時,認為邏輯上組合兩個邏輯函數(shù)。例如,假 設a、 b、 c和d是邏輯函數(shù)。然后,以下邏輯表達式表示邏輯函數(shù)a、 b、 c和d的邏輯組合 (a.6.c.fif) + (6U)。 接著,系統(tǒng)可以嘗試組合CR Cj與中間CR(步驟510)。系統(tǒng)然后可以確定是否超 過CR規(guī)模限制(步驟512)。 如果未超過CR規(guī)模限制,則系統(tǒng)可以使用下一迭代中的中間CR(步驟518)。另 一方面,響應于確定將CR Cj與中間CR進行組合而得到超過CR規(guī)模限制的CR,系統(tǒng)可以選 擇CR Ck,其中j+l《k《n(步驟514)。在一些實施例中,系統(tǒng)可以將CR Cj和/或與CR Cj關聯(lián)的邏輯函數(shù)報告給用戶。系統(tǒng)然后可以嘗試組合CR Ck與中間CR(步驟516)。另 外,在一些實施例中,系統(tǒng)可以響應于確定對組合CR集合的嘗試已經(jīng)由于在各嘗試期間超 過CR規(guī)模限制而失敗,來自動增加CR規(guī)模限制。 圖6呈現(xiàn)了對根據(jù)本發(fā)明一個實施例的示出用于構(gòu)造CR的過程的流程圖。
與前文一樣,該過程可以通過接收希望為其構(gòu)造CR的邏輯函數(shù)集合(步驟602) 來開始。接著,系統(tǒng)可以接收CR規(guī)模限制(步驟604)。系統(tǒng)然后可以基于邏輯函數(shù)集合來 構(gòu)造CR集合,其中CR集合中的各CR表示邏輯函數(shù)集合中的邏輯函數(shù)(步驟606)。
接著,系統(tǒng)可以組合CR集合的子集以獲得組合式CR(步驟608)。注意,系統(tǒng)可以 按任何順序組合CR。如上所述,在一些實施例中,系統(tǒng)可以基于CR的規(guī)模對CR進行排序并 且從最小到最大組合CR。無論怎樣對CR進行排序,系統(tǒng)通常將一次一個地組合CR。因此, 在組合過程期間的任何給定點,系統(tǒng)都將CR的一個子集組合。注意,組合CR得到如下CR, 該CR表示與CR關聯(lián)的邏輯函數(shù)的邏輯組合。 系統(tǒng)然后可以識別CR集合中的如下CR,預計該CR在與組合式CR組合時得到規(guī) 模超過CR規(guī)模限制的CR(步驟610)。系統(tǒng)然后可以將識別的CR報告給用戶(步驟612)。 具體而言,系統(tǒng)可以開始將CR和組合式CR進行組合以生成得到的CR。接著,系統(tǒng)可以在 CR與組合式CR組合時監(jiān)視得到的CR的規(guī)模。如果系統(tǒng)確定得到的CR的規(guī)模已經(jīng)超過CR 規(guī)模限制,則系統(tǒng)可以停止對CR與組合式CR的組合并且將CR報告給用戶。
具體而言,當系統(tǒng)選擇CR并且嘗試將它與組合式CR進行組合時存在兩種可能性。 第一可能性在于,組合過程完成而未超過CR規(guī)模,并且得到的CR是所選CR與組合式CR的 組合。另一可能性在于,在組合所選CR與組合式CR的同時超過CR規(guī)模限制。如果發(fā)生這 樣的情況,則系統(tǒng)可以將識別的CR報告給用戶,由此幫助用戶識別約束集合中的錯誤。
圖7圖示了根據(jù)本發(fā)明一個實施例的計算機系統(tǒng)。 計算機系統(tǒng)702包括處理器704、存儲器706和儲存器708。計算機系統(tǒng)702可以 與顯示器714、鍵盤710和指示設備712耦合。存儲器708可以存儲在由處理器704處理 時使計算機系統(tǒng)702構(gòu)造CR的指令和/或數(shù)據(jù)。具體而言,儲存器708可以存儲邏輯函數(shù) 716、構(gòu)造模塊718、排序模塊720、組合模塊722和報告模塊724。在操作期間,計算機系統(tǒng) 702可以將指令和/或數(shù)據(jù)從儲存器708加載到存儲器706中,并且使用處理器704來處理 指令和/或數(shù)據(jù)。
構(gòu)造模塊718可以包括在由處理器704執(zhí)行時使計算機系統(tǒng)702為邏輯函數(shù)716 構(gòu)造CR的指令。排序模塊720可以包括在由處理器704執(zhí)行時使計算機系統(tǒng)702對構(gòu)造 718模塊構(gòu)造的CR進行排序的指令。組合模塊722可以包括在由處理器704執(zhí)行時使計算 機系統(tǒng)702根據(jù)給定順序來組合CR的指令。報告模塊724可以包括在由處理器704執(zhí)行 時使計算機系統(tǒng)702報告計算機系統(tǒng)不能組合的CR的指令。在一些實施例中,系統(tǒng)可以使 用顯示器714來報告CR。 圖8圖示了根據(jù)本發(fā)明一個實施例的裝置。 裝置802可以包括可以經(jīng)由有線或者無線通信信道來相互通信的多個機構(gòu)。具體 而言,裝置802可以包括接收機構(gòu)804、構(gòu)造機構(gòu)806、排序機構(gòu)808、組合機構(gòu)810和報告機 構(gòu)812。在一些實施例中,接收機構(gòu)804可以被配置成接收將要為其構(gòu)造CR的邏輯函數(shù)集 合,構(gòu)造機構(gòu)806可以被配置成為邏輯函數(shù)集合構(gòu)造CR,排序機構(gòu)808可以被配置成對CR 進行排序以獲得CR函數(shù)排序,組合機構(gòu)810可以被配置成根據(jù)CR函數(shù)排序來組合CR,而報 告機構(gòu)812可以被配置成報告裝置802不能組合的CR。裝置802可以是計算機系統(tǒng)的部分或者是能夠與其他計算機系統(tǒng)和/或設備通信 的單獨設備??梢允褂靡粋€或者多個集成電路來實現(xiàn)裝置802。具體而言,裝置802中的一 個或者多個機構(gòu)可以實施為處理器的部分。
結(jié)論 在本具體實施方式
中描述的數(shù)據(jù)結(jié)構(gòu)和代碼通常存儲于計算機可讀存儲設備上, 該設備可以是能夠存儲用于由計算機系統(tǒng)使用的代碼和/或數(shù)據(jù)的任何設備。計算機可讀 存儲設備包括但不限于易失性存儲器、非易失性存儲器、磁和光學存儲設備(比如盤驅(qū)動、 磁帶、CD(光盤)、DVD(數(shù)字通用盤或者數(shù)字視頻盤)或者現(xiàn)在已知或者以后開發(fā)的能夠存 儲計算機可讀介質(zhì)的其他介質(zhì)。 可以將具體實施方式
這一節(jié)中描述的方法和過程實施為能夠存儲于如上所述計 算機可讀存儲設備中的代碼和/或數(shù)據(jù)。當計算機系統(tǒng)讀取和執(zhí)行計算機可讀存儲設備上 存儲的代碼和/或數(shù)據(jù)時,計算機系統(tǒng)實現(xiàn)作為數(shù)據(jù)結(jié)構(gòu)和代碼來體現(xiàn)的并且存儲于計算 機可讀存儲設備內(nèi)的方法和過程。 另外,可以在硬件模塊中包括所述方法和過程。例如,硬件模塊可以包括但不限于 專用集成電路(ASIC)芯片、現(xiàn)場可編程門陣列(FPGA)和現(xiàn)在已知或者將來開發(fā)的其他可 編程邏輯器件。當激活硬件模塊時,硬件模塊實現(xiàn)硬件模塊內(nèi)包括的方法和過程。
僅出于示例和描述的目的已經(jīng)呈現(xiàn)對本發(fā)明實施例的前文描述。本意并非讓它們 窮舉本發(fā)明或者使本發(fā)明限于公開的形式。因而,本領域技術人員將清楚許多修改和變化。 此外,本意并非讓上述公開內(nèi)容限制本發(fā)明。本發(fā)明的范圍由所附權(quán)利要求限定。
權(quán)利要求
一種用于有助于構(gòu)造規(guī)范表示(CR)的由計算機執(zhí)行的方法,所述CR表示邏輯函數(shù)集合的邏輯組合,所述方法包括接收CR規(guī)模限制;基于所述邏輯函數(shù)集合來構(gòu)造CR集合,其中所述CR集合中的各CR表示所述邏輯函數(shù)集合中的邏輯函數(shù);組合所述CR集合的子集以獲得第一組合式CR;識別所述CR集合中的第一CR,所述第一CR被預計為在與所述第一組合式CR組合時得到規(guī)模超過所述CR規(guī)模限制的第二組合式CR;并且將與所述第一CR關聯(lián)的第一邏輯函數(shù)報告給用戶。
2. 根據(jù)權(quán)利要求1所述的由計算機執(zhí)行的方法,其中組合所述CR集合的所述子集包括對所述CR集合進行排序以獲得CR函數(shù)排序;并且 根據(jù)所述CR函數(shù)排序來組合所述CR集合。
3. 根據(jù)權(quán)利要求2所述的由計算機執(zhí)行的方法,其中對所述CR集合進行排序包括基 于規(guī)模對所述CR集合進行排序。
4. 根據(jù)權(quán)利要求1所述的由計算機執(zhí)行的方法,其中構(gòu)造所述CR集合包括如果預計 第二 CR的規(guī)模超過所述CR規(guī)模限制,則將第二 CR報告給所述用戶。
5. 根據(jù)權(quán)利要求l所述的由計算機執(zhí)行的方法,其中識別所述CR集合中的所述第一 CR包括開始組合所述第一 CR與所述第一組合式CR,以生成得到的CR ; 在所述第一 CR與所述第一組合式CR組合時監(jiān)視所述得到的CR的規(guī)模;并且 響應于確定得到的CR的規(guī)模已經(jīng)超過所述CR規(guī)模限制來停止組合所述第一 CR與所 述第一組合式CR。
6. 根據(jù)權(quán)利要求1所述的由計算機執(zhí)行的方法,其中CR是二元判決圖(BDD)。
7. —種用于有助于構(gòu)造規(guī)范表示(CR)的設備,所述CR表示邏輯函數(shù)集合的邏輯組合, 所述設備包括接收裝置,用于接收CR規(guī)模限制;構(gòu)造裝置,用于基于所述邏輯函數(shù)集合來構(gòu)造CR集合,其中所述CR集合中的各CR表 示所述邏輯函數(shù)集合中的邏輯函數(shù);第一組合裝置,用于組合所述CR集合的子集以獲得第一組合式CR ;識別裝置,用于識別所述CR集合中的第一 CR,所述第一 CR被預計為在與所述第一組合 式CR組合時得到規(guī)模超過所述CR規(guī)模限制的第二組合式CR ;并且報告裝置,用于將與所述第一 CR關聯(lián)的第一邏輯函數(shù)報告給用戶。
8. 根據(jù)權(quán)利要求7所述的設備,其中所述第一組合裝置包括 排序裝置,用于對所述CR集合進行排序以獲得CR函數(shù)排序;并且 第二組合裝置,用于根據(jù)所述CR函數(shù)排序來組合所述CR集合。
9. 根據(jù)權(quán)利要求8所述的計算機可讀存儲設備,其中所述排序裝置對所述CR集合進行 排序包括用于基于規(guī)模對所述CR集合進行排序的裝置。
10. 根據(jù)權(quán)利要求7所述的設備,其中所述構(gòu)造裝置包括用于如果預計第二 CR的規(guī)模超過所述CR規(guī)模限制,則將所述第二 CR報告給所述用戶的裝置。
11. 根據(jù)權(quán)利要求7所述的設備,其中所述識別裝置包括 用于開始組合所述第一 CR與所述第一組合式CR以生成得到的CR的裝置; 用于在所述第一 CR與所述第一組合式CR組合時監(jiān)視所述得到的CR的規(guī)模的裝置;并且用于響應于確定得到的CR的規(guī)模已經(jīng)超過所述CR規(guī)模限制,來停止組合所述第一 CR 與所述第一組合式CR的裝置。
12. 根據(jù)權(quán)利要求7所述的設備,其中CR是二元判決圖(BDD)。
13. —種用于構(gòu)造規(guī)范表示(CR)的由計算機執(zhí)行的方法,所述CR表示邏輯函數(shù)集合的 邏輯組合,所述方法包括接收CR規(guī)模限制;基于所述邏輯函數(shù)集合來構(gòu)造CR集合,其中所述CR集合中的各CR表示所述邏輯函數(shù) 集合中的邏輯函數(shù);對所述CR集合進行排序以獲得CR函數(shù)排序{Cl,c2,…,cJ,其中Ci是在所述CR函數(shù) 排序中的第i個位置的CR,而n是所述CR集合的基數(shù);組合所述CR函數(shù)排序中的CR Cl至Cj—p以獲得中間CR,其中2 < j < n ;響應于確定組合CR Cj與所述中間CR將得到超過所述CR規(guī)模限制的CR,來選擇CR ck, 其中j+1《k《n ;并且嘗試組合CR ck與所述中間CR。
14. 根據(jù)權(quán)利要求13所述的由計算機執(zhí)行的方法,其中對所述CR集合進行排序包括 基于規(guī)模對所述CR集合進行排序。
15. 根據(jù)權(quán)利要求13所述的由計算機執(zhí)行的方法,其中CR是二元判決圖(BDD)。
16. 根據(jù)權(quán)利要求13所述的由計算機執(zhí)行的方法,還包括響應于確定對組合所述CR 集合的嘗試已經(jīng)由于在各嘗試期間超過所述CR規(guī)模限制而失敗,來增加所述CR規(guī)模限制。
17. —種用于構(gòu)造規(guī)范表示(CR)的設備,所述CR表示邏輯函數(shù)集合的邏輯組合,所述 設備包括接收裝置,用于接收CR規(guī)模限制;構(gòu)造裝置,用于基于所述邏輯函數(shù)集合來構(gòu)造CR集合,其中所述CR集合中的各CR表 示所述邏輯函數(shù)集合中的邏輯函數(shù);排序裝置,用于對所述CR集合進行排序以獲得CR函數(shù)排序{Cl,c2,, },其中Ci是 在所述CR函數(shù)排序中的第i個位置的CR,而n是所述CR集合的基數(shù);第一組合裝置,用于組合所述CR函數(shù)排序中的CR q至Cj—p以獲得中間CR,其中2 < j < n ;選擇裝置,用于響應于確定組合CR Cj與所述中間CR將得到超過所述CR規(guī)模限制的 CR來選擇CR Ck,其中j+1《k《n ;并且第二組合裝置,用于嘗試組合CR ck與所述中間CR。
18. 根據(jù)權(quán)利要求17所述的設備,其中所述排序裝置包括用于基于規(guī)模對所述CR集 合進行排序的裝置。
19. 根據(jù)權(quán)利要求17所述的設備,其中CR是二元判決圖(BDD)。
20.根據(jù)權(quán)利要求17所述的設備,所述設備還包括用于響應于確定對組合所述CR集合的嘗試已經(jīng)由于在各嘗試期間超過所述CR規(guī)模限制而失敗,來增加所述CR規(guī)模限制的想罟 農(nóng)且。
全文摘要
本發(fā)明公開了用于構(gòu)造規(guī)范表示的方法和裝置。一些實施例提供用于有助于構(gòu)造規(guī)范表示(CR)的系統(tǒng)和技術,該CR表示邏輯函數(shù)集合的邏輯組合。在操作期間,系統(tǒng)可以接收CR規(guī)模限制。接著,系統(tǒng)可以基于邏輯函數(shù)集合來構(gòu)造CR集合,其中CR集合中的各CR表示邏輯函數(shù)集合中的邏輯函數(shù)。系統(tǒng)然后可以組合CR集合的子集以獲得組合式CR。接著,系統(tǒng)可以識別在與組合式CR組合時造成超過CR規(guī)模限制的有問題的CR。系統(tǒng)然后可以將有問題的CR和/或與有問題的CR關聯(lián)的邏輯函數(shù)報告給用戶,由此幫助用戶識別邏輯函數(shù)集合中的錯誤。
文檔編號G06F17/50GK101789034SQ20091020809
公開日2010年7月28日 申請日期2009年10月27日 優(yōu)先權(quán)日2009年1月28日
發(fā)明者D·戈斯瓦米, J·辛格, N·N·W·赫恩格 申請人:新思科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
获嘉县| 隆尧县| 达孜县| 长治市| 商洛市| 呼和浩特市| 句容市| 三穗县| 高邑县| 炉霍县| 阳谷县| 攀枝花市| 开封县| 临澧县| 阜阳市| 垦利县| 枣庄市| 壶关县| 台山市| 南召县| 都兰县| 胶州市| 许昌县| 黑水县| 湖口县| 清丰县| 广灵县| 揭东县| 绥滨县| 罗城| 绵阳市| 乐清市| 渭南市| 榕江县| 宜丰县| 略阳县| 紫金县| 尚志市| 芜湖县| 科技| 津南区|