一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

回顧集成電路的未來的分析介紹

lC49_半導(dǎo)體 ? 來源:djl ? 作者:石侃 ? 2019-09-02 16:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

驗(yàn)證(verification)是現(xiàn)代數(shù)字集成電路設(shè)計(jì)流程中不可或缺且至關(guān)重要的一環(huán),其目的是保證設(shè)計(jì)功能按照既定的設(shè)計(jì)規(guī)約正確的實(shí)現(xiàn)。在一個(gè)完整的項(xiàng)目周期中,驗(yàn)證所占用的時(shí)間可高達(dá)60%-70%。按驗(yàn)證的具體目的,可以有很多種細(xì)分類別,而本文主要針對(duì)其中的“功能驗(yàn)證“,即只專注于設(shè)計(jì)邏輯功能的實(shí)現(xiàn),而暫不考慮綜合、布局布線后引入的電路延時(shí)與優(yōu)化,從而導(dǎo)致的硬件與實(shí)際邏輯出現(xiàn)偏差的情況。

目前業(yè)界主流的驗(yàn)證方法主要是以UVM(Universal Verification Methodology)為代表的驗(yàn)證方法學(xué),通常使用隨機(jī)約束的方式,在電路仿真中自動(dòng)產(chǎn)生受控的隨機(jī)輸入,從而驅(qū)動(dòng)驗(yàn)證電路并完成驗(yàn)證功能。隨著UVM的發(fā)展和廣泛使用,特別是其中SystemVerilog語言加入了面向?qū)ο?、功能覆蓋、隨機(jī)約束等更加類似軟件開發(fā)的特性,使得驗(yàn)證平臺(tái)間模塊重用的效率得到提升,編程結(jié)構(gòu)化變好,代碼更加靈活。有關(guān)這些傳統(tǒng)的驗(yàn)證方法的討論和思考會(huì)在下文中逐步給出。

然而需要注意到的是,這些基于電路仿真的驗(yàn)證方法存在較多的根本性問題一直無法有效解決,如對(duì)極端情況的覆蓋、過長(zhǎng)的仿真時(shí)間、調(diào)試難度較大等等。這些問題也將會(huì)在后文一一討論。在2018年初,幾乎全部主流的CPU廠商都被發(fā)現(xiàn)在其CPU產(chǎn)品中存在熔斷(Meltdown)和幽靈(Spectre)漏洞。這也在一個(gè)側(cè)面表明,當(dāng)代集成電路驗(yàn)證存在極高的復(fù)雜性,特別是對(duì)于大型設(shè)計(jì)而言。因此,業(yè)界一直在尋找其他更為有效的驗(yàn)證方法學(xué)。下文將介紹的“形式化驗(yàn)證“(Formal Verification)就是其中之一。

圖1:熔斷(Meltdown)和幽靈(Spectre)漏洞

什么是形式化驗(yàn)證

和基于電路仿真的驗(yàn)證方法不同,筆者認(rèn)為形式化驗(yàn)證的定義是:利用形式化方法,即基于嚴(yán)格的數(shù)學(xué)表述和模型,根據(jù)設(shè)計(jì)規(guī)約對(duì)設(shè)計(jì)功能進(jìn)行屬性描述,并自動(dòng)進(jìn)行數(shù)學(xué)分析和證明。這看上去似乎非常玄妙,但實(shí)際上形式化驗(yàn)證的過程可以粗略的由下圖描述:

回顧集成電路的未來的分析介紹

圖2:形式化驗(yàn)證簡(jiǎn)要流程圖

它很像我們上學(xué)時(shí)做過的數(shù)學(xué)證明題,即給一個(gè)命題,用數(shù)學(xué)定理和方法證明該命題是否成立。若不成立則給出一則反例。在形式化驗(yàn)證中,待測(cè)設(shè)計(jì)的某個(gè)功能和設(shè)計(jì)規(guī)約對(duì)應(yīng)的描述就是命題的兩部分,命題為證明二者是否等價(jià),若得證則表示在任意情況下命題成立,若不得證則表示命題不成立,且會(huì)給出一個(gè)反例。這個(gè)推理和證明的過程通常由EDA工具自動(dòng)完成。目前,業(yè)界主流的形式化驗(yàn)證EDA工具主要有Cadence的JasperGold,和Synposys的VC-Formal等。

需要注意的是,作為形式化驗(yàn)證的使用者,我們并不需要了解形式化方法的具體數(shù)學(xué)原理,亦或是證明的具體過程。在多數(shù)情況下,在形式化驗(yàn)證工具里的調(diào)試過程和傳統(tǒng)電路仿真工具十分類似。在下一章,我將詳細(xì)介紹形式化驗(yàn)證相比傳統(tǒng)驗(yàn)證方法的主要優(yōu)勢(shì)。

形式化驗(yàn)證的主要優(yōu)點(diǎn)

與傳統(tǒng)的基于仿真的驗(yàn)證方法相比,形式化驗(yàn)證主要有以下三個(gè)方面的優(yōu)點(diǎn)。

第一,形式化驗(yàn)證能覆蓋完整的設(shè)計(jì)狀態(tài)空間。

與其他所有基于仿真的驗(yàn)證方法相比,這一點(diǎn)是形式化方法最大的優(yōu)勢(shì)所在。通常來講,一個(gè)數(shù)字電路的設(shè)計(jì)通常由若干個(gè)邏輯狀態(tài)空間(logic state space)組成,這其中可以包含以下幾類狀態(tài):

電路復(fù)位后的初始化狀態(tài), 也稱為復(fù)位狀態(tài);

內(nèi)部邏輯實(shí)現(xiàn)時(shí)的中間狀態(tài);

各個(gè)輸入輸出的狀態(tài)。

比如,在一個(gè)FIFO設(shè)計(jì)中,它的“滿”、“空”指示就是輸出的狀態(tài);在某一時(shí)刻,F(xiàn)IFO里內(nèi)存的讀寫指針的位置就是中間狀態(tài);而當(dāng)復(fù)位完成后,指針位置以及當(dāng)時(shí)“滿”、“空”指示的值就是復(fù)位狀態(tài)。

如果將這些狀態(tài)抽象提取出來,我們可以得到針對(duì)這個(gè)設(shè)計(jì)的完整的狀態(tài)空間,如下圖所示,其中每一個(gè)圓圈都代表電路中的一個(gè)可能的邏輯狀態(tài)。而驗(yàn)證的最終目的,就是對(duì)完整的狀態(tài)空間進(jìn)行覆蓋,并確定其滿足既定的設(shè)計(jì)要求。

在電路仿真中,每次仿真實(shí)際上就是在狀態(tài)空間里尋找一條從“復(fù)位狀態(tài)”到“輸出狀態(tài)”的路徑, 如下圖中標(biāo)出的一條路徑。

回顧集成電路的未來的分析介紹

圖3:一次仿真得到的狀態(tài)路徑

需要注意的是,在仿真中每條路徑的確定與仿真使用的輸入(也稱為激勵(lì)或測(cè)試向量)有著密切的關(guān)系。如果在每次仿真中使用不同的輸入,例如采用隨機(jī)約束的驗(yàn)證方法,那么有可能找到更多的狀態(tài)路徑,如下圖所示。

回顧集成電路的未來的分析介紹

圖4:多次仿真得到的狀態(tài)路徑

然而,對(duì)于某些大型設(shè)計(jì),即便使用了多種不同的輸入,也有可能仍然找到相同或者部分重疊的路徑,這樣就導(dǎo)致某些狀態(tài)很難被覆蓋,即我們通常所說的“邊界情況”(corner cases)。對(duì)于邊界情況的處理,通常的做法是增加仿真次數(shù),即嘗試更多不同的輸入組合;延長(zhǎng)仿真時(shí)間;或者針對(duì)其創(chuàng)建新的“定向測(cè)試”等。然而不管使用何種方法,都會(huì)極大的增加完成驗(yàn)證所需的時(shí)間,以及投入的各類成本。最根本的問題在于,即便使用了這些方法,也并不能保證邊界情況被100%覆蓋,這是由于仿真無法遍歷所有可能的輸入向量。換句話說,基于仿真的驗(yàn)證只是檢驗(yàn)了在使用某些測(cè)試向量時(shí),系統(tǒng)不會(huì)出現(xiàn)漏洞,但無法保證當(dāng)使用其他測(cè)試向量時(shí),漏洞不會(huì)出現(xiàn)。上文提到的CPU “熔斷”和“幽靈”漏洞,也從另一個(gè)角度很好的印證了這一點(diǎn):一方面,我相信英特爾(及其他廠商)在設(shè)計(jì)芯片時(shí)已經(jīng)進(jìn)行了充分驗(yàn)證,但顯然還存在邊界情況。另一方面,即使芯片已上市并廣泛使用多年,這些漏洞直到最近才被發(fā)現(xiàn),這在一定程度上表明通過改變測(cè)試向量來進(jìn)行邊界情況的捕捉和覆蓋,效果不夠理想,往往更像是“大海撈針”。

形式化驗(yàn)證和基于電路仿真的驗(yàn)證方法的最根本不同在于,形式化驗(yàn)證并不基于某些給定的輸入向量,而是通過數(shù)學(xué)方法分析、推導(dǎo)并證明某個(gè)邏輯功能在給出的邊界范圍內(nèi)是否與設(shè)計(jì)規(guī)約完全吻合,若不吻合則會(huì)給出一個(gè)反例。在上面舉的例子中,形式化驗(yàn)證可以從給定的復(fù)位狀態(tài)開始,用數(shù)學(xué)方法自動(dòng)探索并覆蓋整個(gè)狀態(tài)空間,如下圖所示。從形式化的視角來看,這里所有的邏輯狀態(tài)并沒有本質(zhì)的區(qū)別,因此即使是電路仿真很難發(fā)現(xiàn)的邊界情況,也能很容易的通過形式化的方法進(jìn)行覆蓋。

回顧集成電路的未來的分析介紹

圖5:形式化驗(yàn)證對(duì)狀態(tài)空間的全覆蓋

通常而言,上述數(shù)學(xué)推理并證明的過程都被封裝在EDA工具里,并由工具自動(dòng)完成。因此作為形式化驗(yàn)證工具的使用者,我們并不需要深入理解這些工具的工作機(jī)制,以及其中復(fù)雜的數(shù)學(xué)理論。這進(jìn)一步降低了形式化驗(yàn)證的使用門檻,同時(shí)能讓設(shè)計(jì)和驗(yàn)證工程師從更為整體的角度思考驗(yàn)證策略,而非糾結(jié)于如何產(chǎn)生各類輸入向量才能達(dá)成某種設(shè)計(jì)中的狀態(tài)。

第二,形式化驗(yàn)證能提供最小實(shí)例

形式化驗(yàn)證的第二個(gè)主要優(yōu)點(diǎn)在于能迅速提供一個(gè)最小實(shí)例,如下圖所示。這里“最小實(shí)例”指的是,達(dá)到一個(gè)目標(biāo)狀態(tài)所需要的必要條件,包括各個(gè)輸入值、寄存器的狀態(tài),以及達(dá)到目標(biāo)狀態(tài)需要的最少周期數(shù)等。

回顧集成電路的未來的分析介紹

圖6:形式化驗(yàn)證可以提供到達(dá)目標(biāo)狀態(tài)的最小實(shí)例

設(shè)想在一個(gè)復(fù)雜的狀態(tài)機(jī)設(shè)計(jì)中,需要驗(yàn)證某個(gè)狀態(tài)能否實(shí)現(xiàn),且需要考察達(dá)到該狀態(tài)時(shí)所需要的條件, 比如:如何給定輸入、內(nèi)部狀體如何轉(zhuǎn)換、通過多久才能達(dá)到該狀態(tài)等等。如果使用電路仿真,會(huì)有以下幾個(gè)問題:

1. 由于不確定何種輸入向量才能達(dá)到目標(biāo)狀態(tài),首先需要進(jìn)行一系列仿真才有可能達(dá)到該狀態(tài)。若目標(biāo)狀態(tài)恰好是邊界狀態(tài),找到它本身的難度就很大。

2. 即使通過多次仿真找到了滿足條件的輸入向量,這樣每次的仿真時(shí)間往往長(zhǎng)達(dá)幾十分鐘到幾小時(shí),對(duì)復(fù)現(xiàn)和多次調(diào)試的效率影響很大。

3. 無法確定是否還有其他條件能夠達(dá)到目標(biāo)狀態(tài)。

和電路仿真不同,形式化驗(yàn)證可以很快的給出達(dá)到目標(biāo)狀態(tài)的最小實(shí)例,或者反之,得出結(jié)論證明該目標(biāo)狀態(tài)永遠(yuǎn)不會(huì)被達(dá)到。電路設(shè)計(jì)者和驗(yàn)證者可以通過這個(gè)特性,利用形式化驗(yàn)證對(duì)目標(biāo)狀態(tài)進(jìn)行快速調(diào)試,并通過給出的最小實(shí)例,更好的理解電路行為,及時(shí)發(fā)現(xiàn)其與設(shè)計(jì)規(guī)約的偏差。

第三,形式化驗(yàn)證能提供“基于狀態(tài)”或“基于輸出”的分析和調(diào)試方法。

如上文所述,傳統(tǒng)的電路仿真都是基于輸入的方法,即給出輸入后才能觀察內(nèi)部狀態(tài)以及電路輸出。然而,形式化驗(yàn)證并不依賴任何輸入,因此可以做到“基于狀態(tài)”或者“基于輸出”,并以此進(jìn)行設(shè)計(jì)分析和調(diào)試。

例如,在基于狀態(tài)的方法中,我們希望知道在一個(gè)設(shè)計(jì)中是否能夠通過某種方式達(dá)到某種狀態(tài)(如前文中所述),或者更進(jìn)一步,希望將此狀態(tài)作為接下來分析和調(diào)試的起始狀態(tài)??梢韵胂螅褂秒娐贩抡孢_(dá)成這樣的目標(biāo)很難,因?yàn)樾枰日业胶线m的輸入、經(jīng)過漫長(zhǎng)的仿真時(shí)間后才可能達(dá)到該狀態(tài),而往往對(duì)于固定的輸入只會(huì)得到固定的輸出,如下圖所示。

相比之下,形式化驗(yàn)證沒有這些限制,而是可以任意指定起始狀態(tài),并可以由該狀態(tài)為起點(diǎn),探索后續(xù)的所有可能的狀態(tài)空間,包括所有可能達(dá)到的輸出狀態(tài),并給出對(duì)應(yīng)的輸入最小實(shí)例。同理,甚至可以指定某個(gè)輸出狀態(tài)為目標(biāo)狀態(tài),由此反推達(dá)到該狀態(tài)需要滿足何種條件。

回顧集成電路的未來的分析介紹

圖7:形式化驗(yàn)證可以進(jìn)行基于狀態(tài)或輸入的調(diào)試和驗(yàn)證

形式化驗(yàn)證的主要缺點(diǎn)

形式化驗(yàn)證有著傳統(tǒng)基于仿真的驗(yàn)證方法學(xué)無可比擬的優(yōu)勢(shì),看起來幾乎是完美的驗(yàn)證方法學(xué)??上У氖牵问交?yàn)證有著非常顯著的缺點(diǎn),其中最主要的就是所謂的“狀態(tài)爆炸”問題(state explosion)。顧名思義,這代表了在某個(gè)設(shè)計(jì)中,理論上存在的狀態(tài)可能非常多,超出了形式化驗(yàn)證工具可以處理的范圍。例如,在一個(gè)簡(jiǎn)單的n位計(jì)數(shù)器中,可能存在2^n個(gè)狀態(tài),且狀態(tài)數(shù)量隨著計(jì)數(shù)器位數(shù)的增加呈指數(shù)級(jí)增長(zhǎng)。同樣的狀態(tài)爆炸問題存在于存儲(chǔ)器、各類數(shù)學(xué)運(yùn)算單元如乘法器等等。

可以看到,這個(gè)問題是由形式化驗(yàn)證——具體而言是形式化驗(yàn)證中最為常用的模型驗(yàn)證(Model Checking)——的工作機(jī)制決定的,是形式化驗(yàn)證的根本性問題,無法通過優(yōu)化算法或者工具完全解決。但是值得欣慰的是,學(xué)術(shù)界和業(yè)界也在不斷探索用來緩解狀態(tài)爆炸問題的各種方法。在理論上,有學(xué)者提出了以下方法,如:

符號(hào)模型驗(yàn)證(Symbolic Model Checking),即使用二元決策圖(Binary Decision Diagrams – BDD)而非獨(dú)立的狀態(tài)列表來表達(dá)狀態(tài)空間;

偏序約減(Partial Order Reduction),即檢查各個(gè)狀態(tài)和行為間的獨(dú)立性以減小整體的狀態(tài)空間;

基于反例的抽象優(yōu)化(counterexample-guided abstraction refinement),即自適應(yīng)的尋找合適的抽象層次,實(shí)現(xiàn)精度和運(yùn)行時(shí)間的折中。

有界模型驗(yàn)證(Bounded Model Checking),即使用SAT(Boolean satisfiability)求解器在一定邊界條件下尋找反例。

在實(shí)際應(yīng)用中,業(yè)界也有一系列應(yīng)對(duì)狀態(tài)爆炸問題的方法,我將在下一章進(jìn)行詳細(xì)闡述。

如何使用形式化驗(yàn)證

那么,應(yīng)該如何著手使用形式化驗(yàn)證?首先需要考慮如何將設(shè)計(jì)規(guī)約和需求用形式化的方法表述出來。

驗(yàn)證的本質(zhì)就是將設(shè)計(jì)與設(shè)計(jì)規(guī)約進(jìn)行一一比對(duì)的過程。在電路仿真中,通常使用參考模型(reference model)作為設(shè)計(jì)規(guī)約的實(shí)現(xiàn)形式。參考模型通常由高級(jí)語言,如C/C++、SystemC、MATLAB等實(shí)現(xiàn),但有時(shí)也會(huì)通過RTL語言如SystemVerilog實(shí)現(xiàn)。與此不同的是,在形式化驗(yàn)證方法中,設(shè)計(jì)規(guī)約是通過形式化的語言進(jìn)行抽象和描述的,而并不需要參考模型。具體而言,設(shè)計(jì)規(guī)約通常會(huì)被拆分成若干條“屬性”(Property),然后通過SystemVerilog斷言(SystemVerilog Assertion – SVA)來進(jìn)行描述。

SVA是SystemVerilog語言的一個(gè)子集,其實(shí)它已然被廣泛用于傳統(tǒng)的電路仿真中,但使用范圍比較受限,主要用來檢查在仿真中某些狀態(tài)(通常為異常狀態(tài))是否會(huì)發(fā)生。在形式化驗(yàn)證中,SVA則是作為主要的編程語言,用來描述設(shè)計(jì)規(guī)約的各條屬性、對(duì)設(shè)計(jì)的行為進(jìn)行建模、提供實(shí)際的約束、提取覆蓋率等等。

總體而言,SVA的層次可以根據(jù)所表達(dá)的復(fù)雜度分為如下四級(jí):

1. 布爾運(yùn)算(Booleans),如

data[0] && data[1] && data[2]

2. 序列(sequence),用來表達(dá)在一段時(shí)間內(nèi)發(fā)生的一系列布爾運(yùn)算。因此可見序列的表示需要一個(gè)明確的時(shí)鐘作為參考。例如:

req ##2 grant

這代表當(dāng)req置一后再過兩個(gè)時(shí)鐘周期,grant再置一。

3. 屬性(property),用來組合多個(gè)序列,并以此表明在設(shè)計(jì)中需要滿足的某種邏輯關(guān)系。如:

A |-> B 和 A |=> B

其中A和B都為序列。本例中前者代表當(dāng)A成立時(shí),B在同一個(gè)周期內(nèi)也必須成立;后者代表當(dāng)A成立時(shí),B在下一個(gè)周期必須成立。

4. 斷言聲明(assertion statements),用來表示對(duì)一則SVA屬性所進(jìn)行的動(dòng)作,例如:

p1: assert property (A |-> B);

這代表將對(duì)括號(hào)內(nèi)的property進(jìn)行斷言檢查。具體來講,斷言聲明通常使用以下三個(gè)關(guān)鍵詞之一:assert,assume和cover。這三個(gè)關(guān)鍵詞在形式化驗(yàn)證環(huán)境中的語義和在電路仿真中有所不同:

Assert:用來表明給定的斷言聲明(statement)必須在任何條件下都滿足;

Assume:用來指定各種形式化驗(yàn)證的約束條件

Cover:用來表明在形式化驗(yàn)證的過程中必須要覆蓋到的情況

形式化驗(yàn)證流程

由于篇幅所限,其他更深入的有關(guān)SVA的介紹和舉例無法在本文給出。有興趣的讀者可以查看相關(guān)的文獻(xiàn)書籍以了解更多。本文想強(qiáng)調(diào)的是,在形式化驗(yàn)證中,各種設(shè)計(jì)規(guī)約、約束條件、驗(yàn)證目標(biāo)、覆蓋點(diǎn)等,都是通過SVA進(jìn)行表述和建模的。這樣,可以把圖2中所示的簡(jiǎn)單的形式化驗(yàn)證流程圖擴(kuò)展為如下圖所示:

回顧集成電路的未來的分析介紹

圖8:擴(kuò)展后的形式化驗(yàn)證流程

由上圖和前圖的對(duì)比可以看到,形式化驗(yàn)證引擎的輸入輸出都進(jìn)行了一些擴(kuò)展。在輸入端,除了在仿真中也需要的待測(cè)模塊以外,形式化驗(yàn)證還需要對(duì)輸入進(jìn)行一定的約束,并通過SVA的描述,提供待驗(yàn)證的斷言和覆蓋點(diǎn)。

通常來講,使用形式化驗(yàn)證的第一步,并非是立即編寫各種斷言,而是構(gòu)思需要對(duì)整個(gè)設(shè)計(jì)和驗(yàn)證環(huán)境添加怎樣的約束。形式化約束的意義在于能很大程度上的減小狀態(tài)空間,一方面能引導(dǎo)形式化驗(yàn)證工具在更加合理的狀態(tài)區(qū)間中進(jìn)行更有效的斷言判定,另一方面能夠從一開始就杜絕一些不合理的狀態(tài)或條件的出現(xiàn),從而避免驗(yàn)證出現(xiàn)漏報(bào)(false negative)。為形式化驗(yàn)證添加約束還能“強(qiáng)迫”設(shè)計(jì)者和驗(yàn)證工程師在整體上全面思考設(shè)計(jì)規(guī)約以及設(shè)計(jì)需求,從而在早期發(fā)現(xiàn)設(shè)計(jì)規(guī)約和需求中的漏洞和不足。

在明確各種約束條件之后,接下來需要考慮設(shè)計(jì)中存在哪些目標(biāo)狀態(tài),并通過覆蓋點(diǎn)進(jìn)行覆蓋。這與使用隨機(jī)約束的驗(yàn)證方法中,提取功能覆蓋率的思想比較類似。通常這些目標(biāo)狀態(tài)都在驗(yàn)證計(jì)劃中給出。需要注意的是,在形式化驗(yàn)證中,覆蓋點(diǎn)還有一個(gè)重要作用是防止誤報(bào)(false positive)的出現(xiàn)。最極端的例子是,如果不給出任何斷言,那么形式化驗(yàn)證工具就會(huì)給出全部斷言都被證明的誤報(bào)。因此需要覆蓋點(diǎn)對(duì)目標(biāo)狀態(tài)進(jìn)行覆蓋,確保工具對(duì)相關(guān)斷言的確進(jìn)行了證明。

在形式化驗(yàn)證工具的輸出端,通常會(huì)給出三類信息:

1.若斷言得到證明,則會(huì)給出已經(jīng)被證明的斷言列表;

2.若斷言被證明有誤,則會(huì)給出一個(gè)反例(如上文所述通常為最小實(shí)例);

3.若在有限時(shí)間之內(nèi),工具無法給出證明或反證,則會(huì)標(biāo)明該斷言的證明沒有定論(inconclusive)。

有很多種可能性會(huì)導(dǎo)致出現(xiàn)最后一種情況,例如證明時(shí)間太短、斷言及屬性過于復(fù)雜等,但通常代表此時(shí)的狀態(tài)空間太大,已經(jīng)超出了形式化工具可以證明的范圍。此時(shí)應(yīng)該考慮著手減小狀態(tài)空間,例如考慮簡(jiǎn)化斷言、提供更多約束、嘗試其他的形式化驗(yàn)證引擎等。也可以使用更進(jìn)一步形式化驗(yàn)證技巧,如使用抽象模型(abstraction),設(shè)置黑盒(blackbox)或斷點(diǎn)(cut-point),對(duì)待測(cè)設(shè)計(jì)采用分而治之的策略等。

例如對(duì)于一個(gè)大小為32位寬、512個(gè)存儲(chǔ)單元的存儲(chǔ)器,理論上它的狀態(tài)空間存在2^(32*512)個(gè)狀態(tài), 即大約十億的一千次方,已經(jīng)遠(yuǎn)超計(jì)算機(jī)可以計(jì)算的范圍。另一方面,對(duì)于存儲(chǔ)器本身而言,其通常作為一個(gè)可配置的IP使用,對(duì)于使用存儲(chǔ)器IP的設(shè)計(jì)而言,驗(yàn)證存儲(chǔ)器自身的功能并非驗(yàn)證的目的。而且,我們往往可以安全的假設(shè),存儲(chǔ)器本身已經(jīng)經(jīng)過了IP提供商的完整驗(yàn)證,可以直接使用。此外,可以注意到每個(gè)存儲(chǔ)器的存儲(chǔ)單元均相互獨(dú)立,很多情況下兩個(gè)存儲(chǔ)單元的內(nèi)容并不會(huì)相互影響。

在這種情況下,我們可以使用針對(duì)存儲(chǔ)器的抽象模型,只對(duì)少數(shù)存儲(chǔ)單元進(jìn)行精確建模,而不需關(guān)心其他單元,那么可以將整體的狀態(tài)空間下降為2^(32*3)個(gè)狀態(tài)。

對(duì)形式化驗(yàn)證中的抽象模型的研究一直是業(yè)界和學(xué)界的熱點(diǎn)之一,比如,英國(guó)Imagination公司的Arshish Darbari等人曾經(jīng)發(fā)表過多篇文章,詳細(xì)闡述了關(guān)于FIFO、Arbiter等模塊的形式化抽象方法。我的博士導(dǎo)師,倫敦帝國(guó)理工學(xué)院的Constantinides教授也曾對(duì)多項(xiàng)式數(shù)據(jù)通路的形式化驗(yàn)證開展過一系列理論研究工作。形式化驗(yàn)證咨詢機(jī)構(gòu)Oski也發(fā)表過一系列文章,詳細(xì)講解了諸如如何對(duì)FIFO等底層模塊進(jìn)行形式化抽象,如下圖所示。

回顧集成電路的未來的分析介紹

圖9:Oski提出的FIFO形式化抽象方法

同時(shí),形式化驗(yàn)證工具的提供商,如Candence和Synopsys也都提供了一些常用模塊,如FIFO、存儲(chǔ)器、乘法器等的抽象模型。

綜上所述,一個(gè)較為完整的形式化驗(yàn)證環(huán)境會(huì)如下圖所示。

回顧集成電路的未來的分析介紹

圖10:一個(gè)形式化驗(yàn)證環(huán)境示意圖

筆者眼中的現(xiàn)代驗(yàn)證方法學(xué)

在筆者眼中,形式化驗(yàn)證將在現(xiàn)代驗(yàn)證方法學(xué)中慢慢占有越來越重要的地位。這主要是由于形式化驗(yàn)證獨(dú)特的工作原理,及其先天優(yōu)于基于電路仿真的驗(yàn)證方法的各類特性。同時(shí),形式化驗(yàn)證適用于多種不同的模塊層級(jí),從小規(guī)模的IP設(shè)計(jì),到大規(guī)模的系統(tǒng)集成,都有可能使用形式化的方法進(jìn)行驗(yàn)證。很多業(yè)界的公司都早已開展形式化驗(yàn)證的使用,比如英特爾就對(duì)其i7處理器的某核心部件全部使用形式化方法進(jìn)行驗(yàn)證。另外,隨著EDA工具的不斷完善,普通的使用者,如設(shè)計(jì)和驗(yàn)證工程師,不需要掌握任何形式化理論或數(shù)學(xué)模型推導(dǎo),這些過程都已被封裝在工具中,這樣大大簡(jiǎn)化了形式化驗(yàn)證的使用門檻。形式化驗(yàn)證另一個(gè)主要的作用在于,能夠幫助設(shè)計(jì)者充分嚴(yán)謹(jǐn)?shù)乃伎荚O(shè)計(jì)需求和規(guī)約,并在設(shè)計(jì)早期就能有效發(fā)現(xiàn)各類漏洞,而無需等待復(fù)雜的測(cè)試平臺(tái)搭建完成。

另一方面,如前文提到的,形式化驗(yàn)證也伴隨著先天的缺點(diǎn),即不能有效處理擁有大量狀態(tài)的設(shè)計(jì),如存儲(chǔ)器、數(shù)學(xué)運(yùn)算器等。為了應(yīng)對(duì)這樣的情況,驗(yàn)證工程師需要掌握一些形式化驗(yàn)證技巧和抽象方法。此外,形式化驗(yàn)證與電路仿真的思考角度完全不同,一個(gè)熟練使用UVM和隨機(jī)約束的驗(yàn)證工程師不一定能在短時(shí)間內(nèi)很好的掌握形式化驗(yàn)證的思想和工作方法。這幾點(diǎn)都使得形式化驗(yàn)證又不是那么簡(jiǎn)單易用。

因此,業(yè)界的共識(shí)在于,充分利用形式化驗(yàn)證和電路仿真的優(yōu)點(diǎn),揚(yáng)長(zhǎng)避短,在一個(gè)完整的項(xiàng)目周期內(nèi)協(xié)同使用不同的驗(yàn)證方法學(xué)。業(yè)界有關(guān)項(xiàng)目進(jìn)行時(shí)間和漏洞數(shù)量關(guān)系、修復(fù)漏洞的花費(fèi)三者關(guān)系的經(jīng)驗(yàn)圖如下所示,可見在項(xiàng)目開發(fā)初期,是各類漏洞存在的高發(fā)期,但此時(shí)修復(fù)漏洞所需要的成本最少。等到項(xiàng)目行將結(jié)束并流片的時(shí)候,漏洞很難被找到,但一旦出現(xiàn)就往往需要花費(fèi)大量成本進(jìn)行修復(fù)。

回顧集成電路的未來的分析介紹

圖11:Bug數(shù)量、修復(fù)Bug的成本與所在的項(xiàng)目開發(fā)周期的關(guān)系

因此,在項(xiàng)目早期,可以利用形式化方法逐步完善設(shè)計(jì)規(guī)約,同時(shí)發(fā)現(xiàn)各類早期的問題和簡(jiǎn)單的漏洞。設(shè)計(jì)者也可以負(fù)責(zé)編寫各類斷言,而驗(yàn)證工程師負(fù)責(zé)形式化平臺(tái)的搭建,以及更復(fù)雜斷言的設(shè)計(jì)。與此同時(shí),使用UVM等方法學(xué)搭建電路仿真平臺(tái),用以在更高層次(如系統(tǒng)集成時(shí))、和項(xiàng)目中后期通過不間斷的回歸測(cè)試發(fā)現(xiàn)設(shè)計(jì)漏洞。當(dāng)基本測(cè)試完成后,可以使用硬件模擬FPGA原型設(shè)計(jì)等方法,再進(jìn)行大量實(shí)際數(shù)據(jù)的測(cè)試。特別是對(duì)基于FPGA系統(tǒng)的設(shè)計(jì),由于FPGA的可編程性,有條件的話可以更早進(jìn)行硬件測(cè)試。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 集成電路
    +關(guān)注

    關(guān)注

    5422

    文章

    12021

    瀏覽量

    368040
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7644

    瀏覽量

    167009
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7650

    瀏覽量

    90570
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    中國(guó)集成電路大全 接口集成電路

    資料介紹本文系《中國(guó)集成電路大全》的接口集成電路分冊(cè),是國(guó)內(nèi)第一次比較系統(tǒng)地介紹國(guó)產(chǎn)接口集成電路的系列、品種、特性和應(yīng)用方而知識(shí)的書籍。全書
    發(fā)表于 04-21 16:33

    電路分析中的集成電路應(yīng)用電路的識(shí)圖

    `在無線電設(shè)備中,集成電路的應(yīng)用愈來愈廣泛,對(duì)集成電路應(yīng)用電路的識(shí)圖是電路分析中的一個(gè)重點(diǎn),也是難點(diǎn)之一。1
    發(fā)表于 06-08 14:27

    【轉(zhuǎn)】電路分析中的集成電路應(yīng)用電路的識(shí)圖

    在無線電設(shè)備中,集成電路的應(yīng)用愈來愈廣泛,對(duì)集成電路應(yīng)用電路的識(shí)圖是電路分析中的一個(gè)重點(diǎn),也是難點(diǎn)之一。1
    發(fā)表于 06-21 20:27

    單片微波集成電路設(shè)計(jì)分析介紹

    ]。SYMMIC? from CapeSym是專門為單片微波集成電路設(shè)計(jì)者設(shè)計(jì)的在設(shè)計(jì)階段使用的熱分析工具,并且此工具與AWR公司的射頻/微波設(shè)計(jì)軟件Microwave office?集成在一起。與非
    發(fā)表于 07-04 06:47

    射頻集成電路設(shè)計(jì)

    本書全面深入地介紹了如何設(shè)計(jì)千洮赫茲(GHz)CMOS射頻集成電路。本書首先回顧集成電路元件的特性、MOS器件物理和晶體莫管型,RLC并聯(lián)、串聯(lián)和其他形式的振蕩網(wǎng)絡(luò),以及分布
    發(fā)表于 07-11 15:24 ?0次下載
    射頻<b class='flag-5'>集成電路</b>設(shè)計(jì)

    音樂集成電路原理介紹

    音樂集成電路原理介紹 使用音樂集成電路,通過簡(jiǎn)單的外接電路即可獲得簡(jiǎn)單的樂曲、語音或是各種模擬的聲響。音樂集成電路價(jià)格便宜,
    發(fā)表于 01-13 10:41 ?3364次閱讀
    音樂<b class='flag-5'>集成電路</b>原理<b class='flag-5'>介紹</b>

    集成電路介紹及原理應(yīng)用

    集成電路介紹及原理應(yīng)用 集成電路是一種采用特殊工藝,將晶體管、電阻、電容等元件集成在硅基片上而形成的具有一定功能的器件,英文為縮寫
    發(fā)表于 01-27 16:04 ?8315次閱讀
    <b class='flag-5'>集成電路</b><b class='flag-5'>介紹</b>及原理應(yīng)用

    集成電路分析與設(shè)計(jì)

    集成電路分析與設(shè)計(jì)》課程,主要介紹CMOS數(shù)字集成電路設(shè)計(jì)的基礎(chǔ)知識(shí)共40課時(shí)(32理論課時(shí)+8實(shí)驗(yàn)課時(shí))完成4個(gè)實(shí)驗(yàn),對(duì)準(zhǔn)備從事IC行業(yè)的學(xué)生來講,本課程只是一個(gè)基礎(chǔ),還需要繼續(xù)深
    發(fā)表于 08-02 17:17 ?0次下載

    集成電路測(cè)試儀器有哪些_集成電路測(cè)試儀組成結(jié)構(gòu)介紹

    本文以集成電路測(cè)試儀為中心、主要介紹了什么是集成電路測(cè)試儀、集成電路測(cè)試儀有哪些種類、電路測(cè)試儀的組成以及
    發(fā)表于 12-20 11:33 ?1.5w次閱讀

    什么叫集成電路_集成電路芯片種類及作用

    本文主要介紹了什么是集成電路,集成電路的結(jié)構(gòu)與特點(diǎn)、集成電路對(duì)集成電路的種類和作用進(jìn)行了詳細(xì)的介紹
    發(fā)表于 12-20 11:49 ?8.7w次閱讀

    集成電路是什么_集成電路封裝_集成電路的主要原材料

    本文開始介紹了什么是集成電路集成電路擁有的特點(diǎn),其次介紹集成電路的分類和集成電路的原材料,最
    發(fā)表于 01-24 18:25 ?2.9w次閱讀

    模擬集成電路分析與設(shè)計(jì),模擬集成電路的基本原理和概念是是什么?

     本書介紹模擬集成電路分析與設(shè)計(jì)。全面闡述了模擬集成電路的基本原理和概念,同時(shí)還闡述了模擬集成電路的新技術(shù)和新發(fā)展。全書共十二章(前七章
    發(fā)表于 07-18 08:00 ?0次下載
    模擬<b class='flag-5'>集成電路</b>的<b class='flag-5'>分析</b>與設(shè)計(jì),模擬<b class='flag-5'>集成電路</b>的基本原理和概念是是什么?

    集成電路未來發(fā)展

    本文首先介紹了什么是集成電路,其次介紹集成電路的種類,最后闡述了集成電路的發(fā)展。電路工藝是
    的頭像 發(fā)表于 08-28 18:15 ?1.3w次閱讀

    集成電路封裝失效分析方法

    集成電路封裝失效分析就是判斷集成電路失效中封裝相關(guān)的失效現(xiàn)象、形式(失效模式),查找封裝失效原因,確定失效的物理化學(xué)過程(失效機(jī)理),為集成電路封裝糾正設(shè)計(jì)、工藝改進(jìn)等預(yù)防類似封裝失效
    的頭像 發(fā)表于 06-21 08:53 ?1734次閱讀

    集成電路設(shè)計(jì)中靜態(tài)時(shí)序分析介紹

    本文介紹集成電路設(shè)計(jì)中靜態(tài)時(shí)序分析(Static Timing Analysis,STA)的基本原理、概念和作用,并分析了其優(yōu)勢(shì)和局限性。 ? 靜態(tài)時(shí)序
    的頭像 發(fā)表于 02-19 09:46 ?581次閱讀