第6講 Verilog HDL綜合_第1頁(yè)
第6講 Verilog HDL綜合_第2頁(yè)
第6講 Verilog HDL綜合_第3頁(yè)
第6講 Verilog HDL綜合_第4頁(yè)
第6講 Verilog HDL綜合_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、f=ab 安徽師范大學(xué)安徽師范大學(xué)20152015第第6講講 Verilog HDL綜合綜合與驗(yàn)證與驗(yàn)證邏輯綜合高級(jí)驗(yàn)證6.1 邏輯綜合對(duì)邏輯綜合的概念進(jìn)行定義,解釋邏輯綜合的優(yōu)點(diǎn)。對(duì)邏輯綜合的概念進(jìn)行定義,解釋邏輯綜合的優(yōu)點(diǎn)。弄清楚哪些弄清楚哪些Verilog HDL結(jié)構(gòu)和操作符能用于邏輯綜結(jié)構(gòu)和操作符能用于邏輯綜合,理解邏輯綜合工具如何解釋這些結(jié)構(gòu)。合,理解邏輯綜合工具如何解釋這些結(jié)構(gòu)。解釋使用邏輯綜合進(jìn)行設(shè)計(jì)的典型流程,描述基于邏解釋使用邏輯綜合進(jìn)行設(shè)計(jì)的典型流程,描述基于邏輯綜合設(shè)計(jì)流程的主要組成部分。輯綜合設(shè)計(jì)流程的主要組成部分。描述如何驗(yàn)證由邏輯綜合生成的門級(jí)網(wǎng)表。描述如何驗(yàn)證由邏

2、輯綜合生成的門級(jí)網(wǎng)表。了解編寫(xiě)高效率了解編寫(xiě)高效率RTL描述的各種技巧。描述的各種技巧。描述能為邏輯綜合提供最佳門級(jí)網(wǎng)表的分割技術(shù)。描述能為邏輯綜合提供最佳門級(jí)網(wǎng)表的分割技術(shù)。使用邏輯綜合的方法進(jìn)行組合電路和時(shí)序電路的設(shè)計(jì)。使用邏輯綜合的方法進(jìn)行組合電路和時(shí)序電路的設(shè)計(jì)。 6.1.1 什么是邏輯綜合簡(jiǎn)而言之,邏輯綜合是在標(biāo)準(zhǔn)單元庫(kù)和特定的設(shè)計(jì)約束的基礎(chǔ)上,把設(shè)計(jì)的高層次描述轉(zhuǎn)換成優(yōu)化的門級(jí)網(wǎng)表的過(guò)程。標(biāo)準(zhǔn)單元庫(kù)可以包含簡(jiǎn)單的單元,例如與門、或門和或非門等基本邏輯門,也可以包含宏單元,例如加法器、多路選擇器和特殊的觸發(fā)器。最初的時(shí)候設(shè)計(jì)師采用人力作為開(kāi)發(fā)核心。計(jì)算機(jī)輔助邏輯綜合工具的出現(xiàn)已經(jīng)把高

3、層次描述向邏輯門的轉(zhuǎn)化過(guò)程自動(dòng)化了。設(shè)計(jì)者不需要在腦子里實(shí)現(xiàn)邏輯綜合,他們現(xiàn)在可以把精力集中在體系結(jié)構(gòu)的方案、設(shè)計(jì)的高層次描述、精確的設(shè)計(jì)約束和標(biāo)準(zhǔn)單元庫(kù)中的單元優(yōu)化上。這些都作為計(jì)算機(jī)輔助邏輯綜合工具的輸入。 6.1.2 邏輯綜合對(duì)數(shù)字設(shè)計(jì)行業(yè)的影響 手動(dòng)設(shè)計(jì)的限制手動(dòng)設(shè)計(jì)的限制:1.對(duì)于大規(guī)模設(shè)計(jì)來(lái)說(shuō),手動(dòng)轉(zhuǎn)換更容易帶來(lái)人為的錯(cuò)誤。一個(gè)很小的邏輯門的遺漏可能意味著整個(gè)模塊的重新設(shè)計(jì)。2.設(shè)計(jì)者一直都不能確信設(shè)計(jì)約束是否會(huì)得到滿足,直到完成門級(jí)實(shí)現(xiàn)并進(jìn)行了測(cè)試。3.把高層次設(shè)計(jì)轉(zhuǎn)換成邏輯門占去了整個(gè)設(shè)計(jì)周期的大部分時(shí)間。4.如果門級(jí)設(shè)計(jì)不滿足要求,模塊的重新設(shè)計(jì)時(shí)間非常長(zhǎng)。5.推測(cè)難以驗(yàn)證。

4、例如,設(shè)計(jì)者設(shè)計(jì)了一個(gè)以20 ns時(shí)鐘周期工作的門級(jí)模塊。如果設(shè)計(jì)者想分析該電路是否能夠優(yōu)化到以15 ns的時(shí)鐘周期運(yùn)行,整個(gè)模塊不得不重新設(shè)計(jì)。因此,為了驗(yàn)證這種推測(cè),需要重新進(jìn)行設(shè)計(jì)。6.每個(gè)設(shè)計(jì)者以不同的方式實(shí)現(xiàn)模塊設(shè)計(jì),設(shè)計(jì)風(fēng)格缺乏一致性。對(duì)于大規(guī)模設(shè)計(jì)來(lái)說(shuō),這意味著其中的各個(gè)小模塊可能是最優(yōu)化的,但是整個(gè)設(shè)計(jì)卻不是最優(yōu)化的。7.如果在最終的門級(jí)設(shè)計(jì)中發(fā)現(xiàn)了一個(gè)錯(cuò)誤,可能需要重新設(shè)計(jì)數(shù)以千計(jì)的邏輯門。8.庫(kù)單元的時(shí)序、面積和功耗是與特定制造工藝相關(guān)的。因此,如果在門級(jí)設(shè)計(jì)完成之后,公司改變IC制造商,這可能意味著重新設(shè)計(jì)整個(gè)電路,還可能要改變?cè)O(shè)計(jì)方法。9.設(shè)計(jì)技術(shù)是不可能重用的。設(shè)計(jì)是

5、特定于工藝的,難以改變,也難以重用。 1.采用高層次設(shè)計(jì)方法,人為的錯(cuò)誤會(huì)更少,因?yàn)樵O(shè)計(jì)是在更高的抽象層次描述的。2.高層次設(shè)計(jì)無(wú)需過(guò)多關(guān)注設(shè)計(jì)約束。邏輯綜合工具將把高層次設(shè)計(jì)轉(zhuǎn)換到門級(jí)網(wǎng)表,并確保滿足所有的約束。如果不能滿足,設(shè)計(jì)者就回去修改高層次設(shè)計(jì),重復(fù)這一過(guò)程,直到獲得滿足時(shí)序、面積和功耗約束的門級(jí)網(wǎng)表為止。3.從高層次設(shè)計(jì)到邏輯門的轉(zhuǎn)換非常迅速。有了這方面的提高,設(shè)計(jì)周期可以大大縮短。以前耗費(fèi)數(shù)月的設(shè)計(jì)現(xiàn)在可能僅需數(shù)小時(shí)或數(shù)天就能完成。4.模塊重新設(shè)計(jì)所需的反復(fù)時(shí)間更短,因?yàn)楦淖儍H需在寄存器傳輸級(jí)完成;然后,設(shè)計(jì)只需簡(jiǎn)單地重新綜合獲得門級(jí)網(wǎng)表。5.推測(cè)容易驗(yàn)證。高層次描述不需要改變。

6、設(shè)計(jì)者只需把時(shí)序約束從20 ns改變到15 ns,并重新綜合設(shè)計(jì),以獲得時(shí)鐘周期優(yōu)化為15 ns的新門級(jí)網(wǎng)表。6.邏輯綜合工具在整體上優(yōu)化了設(shè)計(jì),這樣就消除了由于不同模塊之間和局部?jī)?yōu)化的各個(gè)設(shè)計(jì)之間的設(shè)計(jì)風(fēng)格不同所帶來(lái)的問(wèn)題。7.如果發(fā)現(xiàn)門級(jí)設(shè)計(jì)中有錯(cuò)誤,設(shè)計(jì)者回頭修改高層次描述以消除錯(cuò)誤。然后,高層次描述再次讀入邏輯綜合工具,自動(dòng)生成新的門級(jí)描述。8.邏輯綜合工具允許進(jìn)行與工藝無(wú)關(guān)的設(shè)計(jì)??梢栽诓豢紤]IC制造工藝的情況下編寫(xiě)高層次描述。邏輯綜合工具使用某個(gè)IC制造商提供的標(biāo)準(zhǔn)單元庫(kù)中的單元,把設(shè)計(jì)轉(zhuǎn)換成邏輯門。如果改變工藝或者IC制造商,設(shè)計(jì)者只需在新工藝的標(biāo)準(zhǔn)單元庫(kù)的基礎(chǔ)上使用邏輯綜合,重

7、新把設(shè)計(jì)綜合到邏輯門。9.由于設(shè)計(jì)描述與工藝無(wú)關(guān),所以設(shè)計(jì)重用變成了可能。例如,如果微處理器中I/O模塊的功能不改變,該I/O模塊的RTL描述可以用于同系列微處理器的設(shè)計(jì)中。如果工藝改變了,綜合工具只需映射到需要的工藝。 自動(dòng)邏輯綜合工具解決方式:6.1.3 Verilog HDL綜合為了邏輯綜合的目的,目前都在寄存器傳輸級(jí)(RTL)層次用硬件描述語(yǔ)言(HDL)編寫(xiě)設(shè)計(jì)。術(shù)語(yǔ)RTL用于表示HDL的一種風(fēng)格,該風(fēng)格的HDL描述采用了數(shù)據(jù)流和行為結(jié)構(gòu)相結(jié)合的方式。邏輯綜合工具接受寄存器傳輸級(jí)HDL描述并把它轉(zhuǎn)化為優(yōu)化的門級(jí)網(wǎng)表。Verilog和VHDL是兩種最流行的在RTL級(jí)上描述功能的HDL語(yǔ)言

8、。 本章討論基于RTL的Verilog HDL邏輯綜合。用于把行為描述轉(zhuǎn)換成RTL描述的行為綜合工具發(fā)展緩慢,但是基于RTL的綜合已經(jīng)成為當(dāng)前最流行的設(shè)計(jì)方法。因此,本章只討論基于RTL的綜合。 Verilog結(jié)構(gòu) 可綜合的verilog結(jié)構(gòu)如下所示,使用時(shí)有一定的限制。 Verilog操作符Verilog中幾乎所有的操作符都可用于邏輯綜合。表14.2是所有可用于邏輯綜合的操作符。只有 = 和 != 這種與x和z相關(guān)的操作符不能用于邏輯綜合,因?yàn)榈扔谶壿嬛祒和z在邏輯綜合中沒(méi)有實(shí)際的意義。編寫(xiě)表達(dá)式時(shí),推薦使用圓括號(hào)來(lái)使邏輯更清晰,達(dá)到預(yù)期的目的。如果依賴操作符的

9、優(yōu)先級(jí),邏輯綜合工具有如果依賴操作符的優(yōu)先級(jí),邏輯綜合工具有可能產(chǎn)生不盡人意的邏輯結(jié)構(gòu)可能產(chǎn)生不盡人意的邏輯結(jié)構(gòu)。 部分Verilog結(jié)構(gòu)的解釋 綜合如何轉(zhuǎn)換 賦值語(yǔ)句賦值語(yǔ)句賦值結(jié)構(gòu)是在RTL級(jí)用于描述組合邏輯的最基本的結(jié)構(gòu)。下例是一個(gè)使用賦值語(yǔ)句的邏輯表達(dá)式:它通常被轉(zhuǎn)換成下面的門級(jí)電路實(shí)現(xiàn): 如果a,b,c和out是兩位的向量1:0,那么上面的賦值語(yǔ)句通常會(huì)被轉(zhuǎn)換成兩個(gè)完全相同的電路,它們分別對(duì)應(yīng)其中一位。 如果用到算術(shù)操作符,那么每個(gè)算術(shù)操作符由邏輯綜合工具中可用的算術(shù)運(yùn)算硬件模塊實(shí)現(xiàn)。例如設(shè)計(jì)一個(gè)一位全加器,假設(shè)邏輯綜合工具內(nèi)部有一位全加器可用,邏輯綜合工具通常直接調(diào)

10、用內(nèi)部的全加器模塊,如果是綜合多位加法器,綜合工具會(huì)進(jìn)行優(yōu)化,設(shè)計(jì)者可能得到一個(gè)不同的圖。如果使用了條件操作符?,就會(huì)推斷出多路選擇器電路。如下例:綜合后:if-else語(yǔ)句語(yǔ)句 單個(gè)if-else語(yǔ)句被轉(zhuǎn)換成多路選擇器,它的控制信號(hào)就是if子句中的信號(hào)或者變量。一般來(lái)說(shuō),多個(gè)if-else-if語(yǔ)句不會(huì)綜合成龐大的多路選擇器。case語(yǔ)句語(yǔ)句 case語(yǔ)句也可以用于生成多路選擇器。龐大的case語(yǔ)句可以用來(lái)生成龐大的多路選擇器。 for循環(huán)語(yǔ)句循環(huán)語(yǔ)句 for循環(huán)可用于產(chǎn)生級(jí)聯(lián)的鏈?zhǔn)浇M合邏輯。 always語(yǔ)句語(yǔ)句 always語(yǔ)句可用于生成時(shí)序和組合邏輯。對(duì)于時(shí)序邏輯來(lái)說(shuō),always語(yǔ)句

11、必須由時(shí)鐘信號(hào)clk的變化所控制。如下例: 語(yǔ)句: 這個(gè)語(yǔ)句被推斷為一個(gè)正跳變沿觸發(fā)的D觸發(fā)器 : 對(duì)于組合邏輯來(lái)說(shuō),always語(yǔ)句必須由clk,reset或者preset之外的其他信號(hào)觸發(fā)(所有的觸發(fā)信號(hào)都必須寫(xiě)在敏感列表中)。 函數(shù)語(yǔ)句函數(shù)語(yǔ)句 函數(shù)綜合成具有一個(gè)輸出變量的組合模塊。輸出變量可以是標(biāo)量或者向量。 6.1.4 邏輯綜合流程 從RTL到邏輯門設(shè)計(jì)者在高層次上使用RTL結(jié)構(gòu)描述設(shè)計(jì)。設(shè)計(jì)者在功能驗(yàn)證上耗費(fèi)一定的時(shí)間,以確保RTL描述的功能正確無(wú)誤。功能驗(yàn)證之后,再把RTL描述輸入到邏輯綜合工具中。 RTL描述被邏輯綜合工具轉(zhuǎn)換為一個(gè)未經(jīng)優(yōu)化的內(nèi)部中間表示。這一過(guò)程稱為翻譯。翻譯

12、相對(duì)簡(jiǎn)單,它使用的技術(shù)與14.3.3節(jié)中討論的技術(shù)類似。翻譯器讀入Verilog RTL描述中的基本原語(yǔ)和操作。翻譯過(guò)程中不考慮面積、時(shí)序和功耗等設(shè)計(jì)約束。在本過(guò)程中,邏輯綜合工具僅完成簡(jiǎn)單的內(nèi)部資源分配。翻譯過(guò)程產(chǎn)生了設(shè)計(jì)的未經(jīng)優(yōu)化的中間表示。邏輯綜合工具根據(jù)內(nèi)部的數(shù)據(jù)結(jié)構(gòu)在內(nèi)部表示設(shè)計(jì)。未經(jīng)優(yōu)化的中間表示是用戶所無(wú)法理解的。 刪除冗余邏輯,優(yōu)化中使用了大量與工藝無(wú)關(guān)的布爾邏輯優(yōu)化技術(shù),它是邏輯綜合中非常重要的一步,產(chǎn)生該設(shè)計(jì)優(yōu)化后的內(nèi)部表示。 在這一步驟中,綜合工具接受內(nèi)部表示,并使用工藝庫(kù)中提供的單元,用邏輯門實(shí)現(xiàn)該內(nèi)部表示。換言之,設(shè)計(jì)被映射到需要的目標(biāo)工藝。 工藝映射完成之后,生成由

13、目標(biāo)工藝部件所描述的優(yōu)化后的門級(jí)網(wǎng)表。如果該網(wǎng)表滿足要求的約束,它就被送到ABC公司去制作最終的版圖。否則,設(shè)計(jì)者要修改RTL描述或者重新對(duì)設(shè)計(jì)給出約束,以獲得需要的結(jié)果。反復(fù)這個(gè)過(guò)程,直到網(wǎng)表滿足所要求的約束。 工藝庫(kù) 單元的集合稱為工藝庫(kù)。綜合工具使用這些單元來(lái)實(shí)現(xiàn)設(shè)計(jì)。綜合工具產(chǎn)生的結(jié)果的質(zhì)量通常由工藝庫(kù)中可以使用的單元所決定。如果工藝庫(kù)中可供選擇的單元有限,綜合工具就不能在時(shí)序、面積和功耗等方面做充分的優(yōu)化。 設(shè)計(jì)約束 設(shè)計(jì)約束通常包含下列內(nèi)容: 1. 時(shí)序時(shí)序。電路必須滿足一定的時(shí)序要求。一個(gè)內(nèi)部的靜態(tài)時(shí)序分析器會(huì)檢查時(shí)序。 2. 面積面積。最終的版圖面積不能超過(guò)一定的限制。 3.

14、功耗功耗。電路功耗不能超過(guò)一定的界限。 一般來(lái)說(shuō),面積和時(shí)序約束之間有一個(gè)相反的關(guān)系。 示例設(shè)計(jì)說(shuō)明 數(shù)值比較器檢查一個(gè)數(shù)是否大于、等于或者小于另一個(gè)數(shù)。例如,設(shè)計(jì)一個(gè)具有如下說(shuō)明的四位數(shù)值比較器IC芯片: 設(shè)計(jì)名稱是magnitude_comparator。 輸入A和B是4位輸入,輸入端A和B不會(huì)出現(xiàn)x或者z值。 如果A大于B,那么輸出A_gt_B為真。 如果A小于B,那么輸出A_lt_B為真。 如果A等于B,那么輸出A_eq_B為真。 數(shù)值比較器電路必須盡可能快,為了提高速度,可以犧牲面積。 RTL描述工藝庫(kù)設(shè)計(jì)約束 根據(jù)設(shè)計(jì)說(shuō)明,對(duì)目標(biāo)工藝abc_100來(lái)說(shuō),設(shè)計(jì)應(yīng)該盡可能快。這里沒(méi)有面

15、積約束,因此只有一個(gè)設(shè)計(jì)約束:邏輯綜合 邏輯綜合工具讀取數(shù)值比較器的RTL描述。把針對(duì)目標(biāo)工藝abc_100的設(shè)計(jì)約束和工藝庫(kù)提供給邏輯綜合工具。邏輯綜合工具進(jìn)行必要的優(yōu)化,并產(chǎn)生針對(duì)abc_100工藝優(yōu)化后的門級(jí)描述。最終優(yōu)化后的門級(jí)描述 邏輯綜合工具產(chǎn)生最終的門級(jí)描述。門級(jí)電路的邏輯圖見(jiàn)后。 邏輯綜合工具為該電路生成的門級(jí)Verilog描述如后所示。端口是以名稱關(guān)聯(lián)的方式互相連接的。IC制造 6.1.5 門級(jí)網(wǎng)表的驗(yàn)證邏輯綜合工具生成的優(yōu)化后的門級(jí)網(wǎng)表必須驗(yàn)證其功能的正確性。另外,如果時(shí)序和面積約束太嚴(yán)格,綜合工具有時(shí)不能完全滿足這些要求,這時(shí)需要在門級(jí)網(wǎng)表層次進(jìn)行獨(dú)立的時(shí)序驗(yàn)證 。功能驗(yàn)

16、證:功能驗(yàn)證:最初為設(shè)計(jì)編寫(xiě)的RTL模塊和其綜合后的門級(jí)模塊可以用同一個(gè)測(cè)試激勵(lì)模塊進(jìn)行測(cè)試。比較它們的輸出結(jié)果,找出其中的不一致。 即對(duì)其功能進(jìn)行驗(yàn)證。對(duì)于門級(jí)描述,必須有一個(gè)由工藝廠商提供的仿真庫(kù)支持。時(shí)需驗(yàn)證:時(shí)需驗(yàn)證:通常使用時(shí)序仿真或者靜態(tài)時(shí)序驗(yàn)證工具來(lái)檢查門級(jí)網(wǎng)表的時(shí)序。如果違反任何時(shí)序約束,設(shè)計(jì)者必須重新設(shè)計(jì)RTL模塊或者改變邏輯綜合的設(shè)計(jì)約束。整個(gè)流程循環(huán)反復(fù),直到滿足時(shí)序要求為止。 6.1.6 邏輯綜合建模技巧:Verilog編碼風(fēng)格 使用有意義的信號(hào)和變量名稱使用有意義的信號(hào)和變量名稱 信號(hào)和變量的命名應(yīng)該具有意義,以便代碼自身具有清晰的注釋信息,增強(qiáng)可讀性。避免混合使用上

17、升沿和下降沿觸發(fā)的觸發(fā)器避免混合使用上升沿和下降沿觸發(fā)的觸發(fā)器 混合使用上升沿和下降沿觸發(fā)的觸發(fā)器可能在時(shí)鐘樹(shù)中引入反向器和緩沖器。一般不希望出現(xiàn)這種情況,因?yàn)檫@將在電路中引入時(shí)鐘偏斜。使用基本構(gòu)造模塊與使用連續(xù)賦值語(yǔ)句的對(duì)比 RTL描述中使用基本的構(gòu)造模塊和使用連續(xù)assign語(yǔ)句各有優(yōu)缺點(diǎn)。連續(xù)assign語(yǔ)句是一種非常簡(jiǎn)潔的表示功能的方式,通常能生成性能很好的隨機(jī)邏輯電路。然而,最終的邏輯結(jié)構(gòu)并不一定是對(duì)稱的。調(diào)用基本構(gòu)造模塊可以產(chǎn)生對(duì)稱的設(shè)計(jì),并且邏輯綜合工具能夠更高效地優(yōu)化小模塊。然而,調(diào)用構(gòu)造模塊是一種不太簡(jiǎn)潔的設(shè)計(jì)描述方式;它制約了針對(duì)變化工藝的重定向,并且通常會(huì)降低仿真器性能。

18、 調(diào)用多路選擇器與使用調(diào)用多路選擇器與使用if-else或者或者case語(yǔ)句的對(duì)比語(yǔ)句的對(duì)比 if-else和case語(yǔ)句常常被綜合成硬件中的多路選擇器。如果需要結(jié)構(gòu)化的實(shí)現(xiàn),最好直接使用多路選擇器來(lái)實(shí)現(xiàn)模塊,因?yàn)閕f-else或者case語(yǔ)句可能使綜合工具產(chǎn)生不可預(yù)期的隨機(jī)邏輯。調(diào)用多路選擇器的方式更容易控制,綜合速度也更快,但它存在依賴于工藝的不利因素,并且表達(dá)多路選擇器的代碼比較長(zhǎng)。另一方面,if-else和case語(yǔ)句可以簡(jiǎn)潔地表示多路選擇器,常用于建立不依賴工藝的RTL描述。使用圓括號(hào)優(yōu)化邏輯結(jié)構(gòu)使用圓括號(hào)優(yōu)化邏輯結(jié)構(gòu) 設(shè)計(jì)者可以使用圓括號(hào)將邏輯組合起來(lái),以便于控制最終的結(jié)構(gòu)。使用圓

19、括號(hào)也提高了Verilog描述的可讀性。 使用算術(shù)操作符,使用算術(shù)操作符, 和與使用現(xiàn)有構(gòu)造模塊的對(duì)比和與使用現(xiàn)有構(gòu)造模塊的對(duì)比 乘、除和取模操作在邏輯和面積上的實(shí)現(xiàn)代價(jià)很高。然而,這些算術(shù)操作符能夠以不依賴于工藝的簡(jiǎn)明方式實(shí)現(xiàn)所需的功能。另一方面,設(shè)計(jì)自定義模塊來(lái)完成乘、除和取模操作,可能要花費(fèi)大量的時(shí)間,并且RTL描述會(huì)變得與工藝相關(guān)。注意多條賦值語(yǔ)句對(duì)同一個(gè)變量賦值的情況注意多條賦值語(yǔ)句對(duì)同一個(gè)變量賦值的情況 多條賦值語(yǔ)句對(duì)同一個(gè)變量賦值可能導(dǎo)致生成意料之外的電路。前面的賦值可能被忽略,只有最后一次賦值起作用。 顯式地定義顯式地定義if-else或者或者case語(yǔ)句語(yǔ)句 在if-else

20、或者case語(yǔ)句中必須說(shuō)明各種可能的條件分支,否則可能產(chǎn)生電平敏感的鎖存器鎖存器,而不是多路選擇器。6.1.7 設(shè)計(jì)劃分水平劃分 使用位劃分方式為邏輯綜合工具提供更小的模塊進(jìn)行優(yōu)化,這種方式稱為水平劃分。它降低了問(wèn)題的復(fù)雜度,并為每個(gè)模塊產(chǎn)生了更為優(yōu)化的結(jié)果。 垂直劃分 意味著把模塊按功能劃分成更小的子模塊。這種方式不同于水平劃分。在水平劃分中,所有模塊完成同一個(gè)功能。在垂直劃分中,每一個(gè)模塊完成不同的功能。假設(shè)前面描述的4位ALU是一個(gè)具有加、減、右移和左移功能的四功能ALU。每一個(gè)模塊在功能上都不相同,這就是垂直劃分。 并行化設(shè)計(jì)結(jié)構(gòu) 采用并行化結(jié)構(gòu)的設(shè)計(jì)技術(shù)需要用更多的資源來(lái)生成運(yùn)行速度

21、更快的設(shè)計(jì)。使用更多的邏輯單元可以將順序操作轉(zhuǎn)換成并行操作,以提高運(yùn)行速度。超前進(jìn)位全加器就是一個(gè)典型的例子。 將超前進(jìn)位加法器與脈動(dòng)進(jìn)位加法器做一個(gè)比較。脈動(dòng)進(jìn)位加法器實(shí)際上是串行的。四位脈動(dòng)進(jìn)位加法器產(chǎn)生所有的和以及進(jìn)位位,共需要9個(gè)門的延遲時(shí)間。另一方面,假設(shè)有5輸入的與門和或門可以使用,超前進(jìn)位加法器在4個(gè)門延遲的時(shí)間內(nèi)就能產(chǎn)生所有的和以及進(jìn)位位。因此,使用更多的邏輯門來(lái)建立超前進(jìn)位單元,其運(yùn)行速度比n位脈動(dòng)進(jìn)位加法器更快 設(shè)計(jì)約束指定若想得到最理想的設(shè)計(jì),設(shè)計(jì)約束與高效率的HDL描述一樣重要。時(shí)序、面積、功耗和環(huán)境參數(shù),例如輸入驅(qū)動(dòng)強(qiáng)度、輸出負(fù)載、輸入到達(dá)時(shí)間等的精確描述對(duì)產(chǎn)生最優(yōu)的

22、門級(jí)網(wǎng)表至關(guān)重要。違反正確的約束或者忽略約束都可能導(dǎo)致非最優(yōu)化的設(shè)計(jì)。必須小心地指定設(shè)計(jì)約束。 6.1.7 時(shí)序電路綜合舉例設(shè)計(jì)說(shuō)明電路要求有限狀態(tài)機(jī)Verilog描述工藝庫(kù)設(shè)計(jì)約束邏輯綜合優(yōu)化的門級(jí)網(wǎng)表驗(yàn)證設(shè)計(jì)說(shuō)明設(shè)計(jì)一個(gè)簡(jiǎn)單的數(shù)字電路用于電子的報(bào)紙售賣機(jī)的投幣器。 假設(shè)報(bào)紙價(jià)格為15分。 投幣器只能接受5分和1角的硬幣。 必須提供適當(dāng)數(shù)目的零錢,投幣器不找錢。 合法的硬幣組合包括1個(gè)5分的硬幣和1個(gè)1角的硬幣,3個(gè)5分的硬幣,1個(gè)1角的硬幣和1個(gè)5分的硬幣。2個(gè)1角的硬幣是合法的,但是投幣器不找錢。電路要求 必須為該數(shù)字電路設(shè)置一些要求,如下所示: 當(dāng)投入硬幣時(shí),一個(gè)兩位的信號(hào)coin1:

23、0被傳送到數(shù)字電路。該信號(hào)在全局clock信號(hào)的下一個(gè)下降沿取值,并且準(zhǔn)確地保持一個(gè)時(shí)鐘周期。 數(shù)字電路的輸出是一位的。每次當(dāng)投入的硬幣總數(shù)為15分或者超過(guò)15分時(shí),輸出信號(hào)newspaper變?yōu)楦唠娖?,并且保持一個(gè)時(shí)鐘周期。售賣機(jī)的門也被打開(kāi)。 可以用一個(gè)reset信號(hào)復(fù)位有限狀態(tài)機(jī)。假設(shè)為同步復(fù)位。 有限狀態(tài)機(jī)(FSM) 采用有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn)電路: 輸入:2位,coin1:0。沒(méi)有硬幣時(shí),x0 = 2b00;有一個(gè)5分的硬幣時(shí),x5 = 2b01;有一個(gè)1角的硬幣時(shí),x10 = 2b10。 輸出:1位,newspaper。當(dāng)newspaper = 1b1時(shí),打開(kāi)門。 狀態(tài):4個(gè)狀態(tài)。s0

24、= 0分;s5 = 5分;s10 = 10分;s15 = 15分。Verilog描述對(duì)有限狀態(tài)機(jī)進(jìn)行描述。詳細(xì)的源碼參見(jiàn)書(shū)中。工藝庫(kù)至網(wǎng)表工藝庫(kù) 在14.4.1節(jié)中定義了abc_100工藝。這里將使用abc_100作為目標(biāo)工藝庫(kù)。abc_100包含一系列的庫(kù)單元:設(shè)計(jì)約束 本設(shè)計(jì)中用到的惟一約束為時(shí)序臨界(timing critical)約束。通常情況下需要更詳細(xì)的設(shè)計(jì)約束。邏輯綜合 使用指定的設(shè)計(jì)約束和工藝庫(kù)來(lái)綜合RTL描述并得到優(yōu)化的門級(jí)網(wǎng)表。優(yōu)化的門級(jí)網(wǎng)表 使用邏輯綜合把RTL描述映射到abc_100工藝。產(chǎn)生的優(yōu)化的門級(jí)網(wǎng)表。驗(yàn)證 把測(cè)試激勵(lì)施加到原先的RTL模塊上,以測(cè)試所有可能的硬

25、幣組合。該激勵(lì)模塊也可用于測(cè)試優(yōu)化的門級(jí)網(wǎng)表。測(cè)試模塊仿真輸出6.1.8 小結(jié) 邏輯綜合是把設(shè)計(jì)的高層次描述轉(zhuǎn)換成優(yōu)化的、使用工藝庫(kù)中單元描述的門級(jí)描述。計(jì)算機(jī)輔助邏輯綜合工具大大縮短設(shè)計(jì)周期,提高了生產(chǎn)力。它們使設(shè)計(jì)者能編寫(xiě)與工藝無(wú)關(guān)的高層次描述,并且生成與工藝相關(guān)的、優(yōu)化的門級(jí)網(wǎng)表。組合和時(shí)序的RTL描述都可以綜合。邏輯綜合工具接受寄存器傳輸級(jí)(RTL)的高層次描述。并非所有的Verilog結(jié)構(gòu)都能被邏輯綜合工具接受。 本章討論了可接受的Verilog結(jié)構(gòu)、操作符以及實(shí)現(xiàn)它們的數(shù)字電路元件。邏輯綜合工具接受RTL描述、設(shè)計(jì)約束和工藝庫(kù),產(chǎn)生優(yōu)化的門級(jí)網(wǎng)表。翻譯、邏輯優(yōu)化和工藝映射是邏輯綜合

26、工具內(nèi)部的過(guò)程,它們對(duì)用戶通常是不可見(jiàn)的。通過(guò)把相同的激勵(lì)應(yīng)用到RTL描述和門級(jí)網(wǎng)表并比較輸出結(jié)果,驗(yàn)證優(yōu)化后的門級(jí)網(wǎng)表的功能。通過(guò)時(shí)序仿真或者靜態(tài)時(shí)序驗(yàn)證來(lái)驗(yàn)證時(shí)序。必須使用適當(dāng)?shù)腣erilog編碼技術(shù)編寫(xiě)高效的RTL模塊。必須評(píng)估設(shè)計(jì)的各種選擇方案。本章已經(jīng)討論了編寫(xiě)高效率的RTL描述的指導(dǎo)原則。設(shè)計(jì)劃分是用于將設(shè)計(jì)分割成更小模塊的重要技術(shù)。更小的模塊減少了綜合工具優(yōu)化的復(fù)雜度。精確的設(shè)計(jì)約束指定是邏輯綜合的重要組成部分。 6.2 高級(jí)驗(yàn)證定義傳統(tǒng)驗(yàn)證流程的各個(gè)組成部分。定義傳統(tǒng)驗(yàn)證流程的各個(gè)組成部分。理解體系結(jié)構(gòu)建模的概念。理解體系結(jié)構(gòu)建模的概念。解釋高層次驗(yàn)證語(yǔ)言(解釋高層次驗(yàn)證語(yǔ)言(

27、HVL)的使用方法。)的使用方法。介紹各種不同的高效仿真技術(shù)。介紹各種不同的高效仿真技術(shù)。解釋分析仿真結(jié)果的各種方法。解釋分析仿真結(jié)果的各種方法。描述覆蓋技術(shù)。描述覆蓋技術(shù)。理解斷言檢查技術(shù)。理解斷言檢查技術(shù)。理解形式化驗(yàn)證技術(shù)。理解形式化驗(yàn)證技術(shù)。描述半形式化驗(yàn)證技術(shù)。描述半形式化驗(yàn)證技術(shù)。定義等價(jià)性檢查。定義等價(jià)性檢查。6.2.1 傳統(tǒng)的驗(yàn)證流程先要對(duì)芯片體系結(jié)構(gòu)進(jìn)行設(shè)計(jì)說(shuō)明。為了制定一個(gè)合理的體系結(jié)構(gòu)設(shè)計(jì)方案,需要對(duì)整體結(jié)構(gòu)的各種方案進(jìn)行分析,以便選出最優(yōu)的體系結(jié)構(gòu)。這一般是通過(guò)對(duì)設(shè)計(jì)的體系結(jié)構(gòu)模型進(jìn)行仿真來(lái)完成的。設(shè)計(jì)說(shuō)明在這一步驟結(jié)束時(shí)完成。設(shè)計(jì)說(shuō)明準(zhǔn)備好以后,根據(jù)該說(shuō)明創(chuàng)建一個(gè)功能

28、測(cè)試計(jì)劃。這個(gè)測(cè)試計(jì)劃構(gòu)成了功能驗(yàn)證環(huán)境的基本框架。根據(jù)這個(gè)測(cè)試計(jì)劃,對(duì)使用Verilog HDL描述的待測(cè)設(shè)計(jì)(Design- Under-Test,即DUT)施加測(cè)試向量。需要在功能測(cè)試環(huán)境中施加這些測(cè)試向量。目前有許多種工具可以生成和使用這些測(cè)試向量。這些工具也可以高效率地生成測(cè)試環(huán)境。DUT在傳統(tǒng)的軟件仿真器中仿真(DUT通常由邏輯設(shè)計(jì)工程師完成,由驗(yàn)證工程師對(duì)其進(jìn)行仿真)。然后分析輸出結(jié)果,并與預(yù)期結(jié)果進(jìn)行對(duì)比。這個(gè)步驟可以通過(guò)使用波形觀察器和調(diào)試工具手工完成。也可以通過(guò)測(cè)試環(huán)境,自動(dòng)檢查DUT的輸出方式或者使用諸如Perl等語(yǔ)言分析日志文件的方式自動(dòng)完成這種分析。另外,對(duì)代碼覆蓋率

29、進(jìn)行分析可以保證對(duì)設(shè)計(jì)進(jìn)行全面驗(yàn)證,以滿足驗(yàn)證目標(biāo)。如果輸出與預(yù)期結(jié)果完全匹配,并且滿足了覆蓋目標(biāo),則驗(yàn)證工作是完整的。此外還可以采取一些其他步驟來(lái)減少將來(lái)重復(fù)設(shè)計(jì)的風(fēng)險(xiǎn)。這些步驟包括硬件加速、硬件仿真以及基于斷言的驗(yàn)證。 體系結(jié)構(gòu)建模本階段實(shí)際上是結(jié)構(gòu)工程師對(duì)設(shè)計(jì)體系結(jié)構(gòu)所做的一種探索,通常是使用C或C+來(lái)描述的,現(xiàn)在又出現(xiàn)了systemC和systemverilog。 功能驗(yàn)證環(huán)境 對(duì)芯片功能的驗(yàn)證可以分為以下三個(gè)階段:模塊級(jí)驗(yàn)證。模塊級(jí)驗(yàn)證。模塊級(jí)驗(yàn)證通常是由模塊的設(shè)計(jì)者進(jìn)行的,設(shè)計(jì)和驗(yàn)證都使用Verilog完成。在這個(gè)階段將會(huì)運(yùn)行大量簡(jiǎn)單的測(cè)試案例,目的是保

30、證該模塊可以很好地與其他功能塊集成在一個(gè)芯片上。全芯片驗(yàn)證。全芯片驗(yàn)證。全芯片驗(yàn)證的目的在于保證功能測(cè)試計(jì)劃中描述的整個(gè)芯片的所有測(cè)試目標(biāo)全部都能被覆蓋。擴(kuò)展驗(yàn)證。擴(kuò)展驗(yàn)證。擴(kuò)展驗(yàn)證的目標(biāo)是發(fā)現(xiàn)設(shè)計(jì)中所有“角落”里的錯(cuò)誤。由于測(cè)試向量集不能預(yù)先確定,并且可能延續(xù)到版圖設(shè)計(jì)階段,因此這個(gè)階段相對(duì)較長(zhǎng)。 典型功能驗(yàn)證環(huán)境測(cè)試平臺(tái)(testbench)由HDL過(guò)程組成,它們把數(shù)據(jù)寫(xiě)入DUT或者從DUT讀取數(shù)據(jù)。只對(duì)(設(shè)計(jì)的)功能測(cè)試計(jì)劃中描述的特定功能進(jìn)行測(cè)試,測(cè)試時(shí)順序調(diào)用測(cè)試平臺(tái)中的過(guò)程,手工把選定的輸入激勵(lì)施加到DUT并檢查結(jié)果。 測(cè)試模塊因設(shè)計(jì)可控制性的減少而變得更困難、更耗時(shí)。內(nèi)部設(shè)計(jì)狀態(tài)

31、的可觀察性的減少而驗(yàn)證變得困難。測(cè)試模塊變得難以理解和維護(hù)。對(duì)有限的人手來(lái)說(shuō),有太多的“角落”情況要測(cè)試。沒(méi)有代碼共享,創(chuàng)建和維護(hù)多個(gè)環(huán)境變得很困難在基于HVL的方法中,驗(yàn)證的各部件在HVL仿真器中仿真,DUT由Verilog仿真器仿真。HVL仿真器和Verilog仿真器交互提供數(shù)據(jù),產(chǎn)生仿真結(jié)果。下圖展示了這種交互的一個(gè)示例。HVL仿真器和Verilog仿真器作為兩個(gè)獨(dú)立的進(jìn)程運(yùn)行,并且通過(guò)Verilog PLI接口進(jìn)行通信。HVL仿真器主要負(fù)責(zé)所有的驗(yàn)證部件,包括測(cè)試生成、輸入驅(qū)動(dòng)器、輸出接收器、數(shù)據(jù)檢查器、協(xié)議檢查器和覆蓋分析器。Verilog仿真器負(fù)責(zé)仿真DUT。 仿真有

32、三種方式可以對(duì)設(shè)計(jì)進(jìn)行仿真:軟件仿真軟件仿真、硬件加硬件加速和硬件仿真速和硬件仿真。 軟件仿真軟件仿真軟件仿真一般用于運(yùn)行基于Verilog HDL的設(shè)計(jì)。軟件仿真器運(yùn)行在普通計(jì)算機(jī)或者服務(wù)器上,讀入Verilog HDL代碼并在軟件中仿真其行為。當(dāng)設(shè)計(jì)超過(guò)一百萬(wàn)門時(shí),軟件仿真耗費(fèi)的時(shí)間開(kāi)始大幅度地增加,變成了驗(yàn)證過(guò)程中的瓶頸。因此,出現(xiàn)了各種各樣的仿真加速技術(shù)。其中的兩項(xiàng)技術(shù),硬件加速(Hardware Acceleration)和硬件仿真(Hardware Emulation)也應(yīng)運(yùn)而生。 硬件加速硬件加速在功能驗(yàn)證和擴(kuò)展驗(yàn)證階段,硬件加速用于加速現(xiàn)有的仿真,運(yùn)行冗長(zhǎng)的隨機(jī)事務(wù)序列。在該技

33、術(shù)中,基于Verilog HDL的設(shè)計(jì)被映射到可重配置的硬件系統(tǒng)。設(shè)計(jì)在硬件系統(tǒng)上仿真,產(chǎn)生仿真結(jié)果,通常可以把仿真速度提高兩到三個(gè)數(shù)量級(jí)。硬件加速可以基于FPGA或者基于處理器。仿真被分為兩部分,其一為軟件仿真器,仿真不可綜合的Verilog HDL代碼;其二為硬件加速器,仿真所有可綜合的代碼??梢杂肰erilog仿真器或HVL仿真器驗(yàn)證部件。仿真器和硬件加速器交互提供數(shù)據(jù),產(chǎn)生結(jié)果。 硬件加速器可以把仿真時(shí)間從大約數(shù)天減少為數(shù)小時(shí),因此可以大大縮短驗(yàn)證時(shí)間。然而,它們價(jià)格昂貴,并且需要大量的建立時(shí)間。另一個(gè)缺點(diǎn)是它們通常需要很長(zhǎng)的編譯時(shí)間,這意味著只對(duì)很長(zhǎng)的回歸(regression)仿真

34、非常有用。因此,小規(guī)模設(shè)計(jì)還是把軟件仿真作為仿真技術(shù)的首選。 硬件仿真硬件仿真硬件仿真(Hardware Emulation)又稱在電路仿真(In-Circuit Emulation)或在線仿真,是在實(shí)際系統(tǒng)軟件的真實(shí)環(huán)境中對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證的過(guò)程。硬件仿真一般用在擴(kuò)展驗(yàn)證階段,因?yàn)樵撾A段的驗(yàn)證需要系統(tǒng)已經(jīng)非常穩(wěn)定。硬件仿真的一個(gè)主要優(yōu)點(diǎn)是軟硬件的集成可以在實(shí)際的硬件出現(xiàn)之前就進(jìn)行,從而縮短了開(kāi)發(fā)周期。通過(guò)運(yùn)行實(shí)際的軟件,在軟件仿真環(huán)境中難以建立的條件也能被測(cè)試到。在設(shè)計(jì)上運(yùn)行真實(shí)的系統(tǒng)是一個(gè)重要的驗(yàn)證步驟,通過(guò)該步驟可以減少出錯(cuò)概率和減少設(shè)計(jì)反復(fù)次數(shù)。但是,軟件仿真器和硬件加速器不能用于該目的,

35、因?yàn)樗鼈兯俣忍?,并且與真實(shí)的系統(tǒng)沒(méi)有必需的連接機(jī)制(hook)。例如,在軟件仿真器上啟動(dòng)設(shè)計(jì)項(xiàng)目的UNIX操作系統(tǒng)進(jìn)行仿真,可能需要花費(fèi)許多年的運(yùn)行時(shí)間,而采用硬件仿真則可以在數(shù)小時(shí)之內(nèi)啟動(dòng)UNIX。硬件仿真是一種與真實(shí)情況非常接近的仿真,應(yīng)用軟件可以在與真實(shí)電路幾乎完全一樣的條件下運(yùn)行,與在實(shí)際芯片中運(yùn)行應(yīng)用軟件沒(méi)有差別。應(yīng)用軟件并不能察覺(jué)到它實(shí)際上是在仿真器上運(yùn)行的,而不是在真實(shí)的芯片上運(yùn)行的。 硬件仿真器一般運(yùn)行在MHz速度量級(jí)上,它們的價(jià)格非常昂貴并且需要很長(zhǎng)的配置時(shí)間。因此,小規(guī)模設(shè)計(jì)還是把軟件仿真作為仿真技術(shù)的首選。 分析傳統(tǒng)驗(yàn)證流程中的一個(gè)重要步驟是設(shè)計(jì)分析,為

36、了分析數(shù)據(jù)值和數(shù)據(jù)協(xié)議的正確性,可以采用許多種方法,如: 1波形觀察器用于觀察轉(zhuǎn)儲(chǔ)文件。設(shè)計(jì)者以圖形方式查看由各種不同的測(cè)試過(guò)程產(chǎn)生的轉(zhuǎn)儲(chǔ)文件,確保數(shù)據(jù)值和數(shù)據(jù)協(xié)議都正確。 2日志文件包含仿真運(yùn)行的記錄。設(shè)計(jì)者查看各種不同的測(cè)試日志文件,基于仿真信息判斷數(shù)據(jù)值和數(shù)據(jù)協(xié)議的正確性。這些方法每次測(cè)試完成運(yùn)行,設(shè)計(jì)者都不得不人為地檢查轉(zhuǎn)儲(chǔ)文件和日志文件。建議把測(cè)試環(huán)境創(chuàng)建成可以自我檢查的。需要為自我檢查測(cè)試環(huán)境創(chuàng)建兩個(gè)部件: 1數(shù)據(jù)檢查器數(shù)據(jù)檢查器.數(shù)據(jù)檢查器比較仿真的每一個(gè)輸出值,與預(yù)期的輸出值相對(duì)照,并快速檢查該值。如果存在不同之處,仿真可以立刻停止,輸出錯(cuò)誤信息。如果沒(méi)有錯(cuò)誤信息,就認(rèn)為成功地

37、完成了仿真。通常用記分板來(lái)實(shí)現(xiàn)數(shù)據(jù)檢查器。記分板通常用來(lái)提示某事務(wù)已經(jīng)完成并核查和記錄數(shù)據(jù)是否已在適當(dāng)?shù)慕涌诮邮铡S浄职逡_保即使在符合協(xié)議的情況下,DUT中的數(shù)據(jù)也不會(huì)丟失,還要確保接收數(shù)據(jù)正確. 2協(xié)議檢查器協(xié)議檢查器.協(xié)議檢查器快速地檢查每個(gè)輸入和輸出接口是否滿足數(shù)據(jù)協(xié)議。如果違反了協(xié)議,仿真可以立即停止,并顯示錯(cuò)誤信息。如果沒(méi)有錯(cuò)誤信息,就認(rèn)為成功地完成了仿真。 覆蓋 結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋處理Verilog HDL代碼的結(jié)構(gòu),匯報(bào)什么時(shí)候已經(jīng)覆蓋到結(jié)構(gòu)的關(guān)鍵部分。目前有3種主要類型的結(jié)構(gòu)覆蓋: 1代碼覆蓋代碼覆蓋。代碼覆蓋的基本假設(shè)是未經(jīng)測(cè)試的代碼可能存在潛在的錯(cuò)誤。然而,代

38、碼覆蓋只是檢查RTL代碼做得如何好,到什么程度,而不是測(cè)試設(shè)計(jì)的功能。代碼覆蓋不匯報(bào)驗(yàn)證是否完成,只是報(bào)告驗(yàn)證還不完全,直到代碼覆蓋達(dá)到100%為止。因此,代碼覆蓋雖然有用,但它不是一個(gè)完整的衡量標(biāo)準(zhǔn)。 2翻轉(zhuǎn)覆蓋翻轉(zhuǎn)覆蓋。這是一種最古老的覆蓋測(cè)量,在歷史上用于制造業(yè)的測(cè)試。翻轉(zhuǎn)覆蓋監(jiān)視仿真期間翻轉(zhuǎn)的邏輯位。如果某一位沒(méi)有從0到1或者從1到0翻轉(zhuǎn),它就沒(méi)有得到充分的驗(yàn)證。翻轉(zhuǎn)覆蓋不能確保驗(yàn)證的完整性。它不能保證特定的、代表高層次功能的位翻轉(zhuǎn)序列已經(jīng)出現(xiàn)。翻轉(zhuǎn)覆蓋不能縮短驗(yàn)證過(guò)程。當(dāng)工程師試圖翻轉(zhuǎn)某個(gè)根據(jù)設(shè)計(jì)規(guī)范不應(yīng)該翻轉(zhuǎn)的位時(shí),它甚至可能延長(zhǎng)驗(yàn)證過(guò)程。翻轉(zhuǎn)覆蓋是非常低層次的覆蓋,把特定位與高層

39、次測(cè)試計(jì)劃項(xiàng)目關(guān)聯(lián)起來(lái)是非常繁瑣的。 3分支覆蓋分支覆蓋。分支覆蓋檢查控制流程中所有可能的分支是否都測(cè)試過(guò)了。這種覆蓋程度的度量是必要的,但不是充分的。功能覆蓋功能覆蓋從系統(tǒng)的角度檢查設(shè)計(jì)。功能覆蓋確保所有合法的輸入激勵(lì)值在任何時(shí)刻的任意組合都已經(jīng)被測(cè)試過(guò)。此外,功能覆蓋也能提供有限狀態(tài)機(jī)的覆蓋測(cè)試,包括狀態(tài)和狀態(tài)轉(zhuǎn)移??梢酝ㄟ^(guò)在RTL代碼中插入覆蓋點(diǎn),或者用斷言語(yǔ)句實(shí)現(xiàn)覆蓋的方式來(lái)增強(qiáng)功能覆蓋的測(cè)試程度。例如,當(dāng)收到一個(gè)中斷或者內(nèi)部的FIFO滿時(shí),判斷是否所有事務(wù)都已測(cè)試完畢。通過(guò)這種方式,增強(qiáng)了功能覆蓋程度的度量。6.2.2 斷言檢查黑盒驗(yàn)證與白盒驗(yàn)證 黑盒驗(yàn)證,即驗(yàn)證只需要依賴于系統(tǒng)的輸

40、入和輸出關(guān)系。 白盒驗(yàn)證,即需要使用設(shè)計(jì)的內(nèi)部結(jié)構(gòu)信息才能進(jìn)行驗(yàn)證。 斷言檢查是一種白盒驗(yàn)證形式,它需要使用設(shè)計(jì)的內(nèi)部結(jié)構(gòu)信息。斷言檢查器的主要目的是提高可觀察性。斷言是表示設(shè)計(jì)者預(yù)期行為的語(yǔ)句。有兩種類型的斷言: 1. 時(shí)間斷言描述信號(hào)之間的時(shí)序關(guān)系。 2. 靜態(tài)斷言描述信號(hào)的屬性,不是真,就是假。 RTL代碼綜合時(shí),插入的斷言并不會(huì)影響電路元件的生成結(jié)果;插入的斷言通常被看成是邏輯綜合的注釋。下圖說(shuō)明了基于FIFO的接口設(shè)計(jì)何處可插入斷言?;跀嘌缘尿?yàn)證(Assertion-Based Verification,即ABV)具有如下優(yōu)點(diǎn): 1ABV提高了可觀察性,ABV能夠把發(fā)現(xiàn)有問(wèn)題的源代

41、碼段落隔離開(kāi)來(lái)。 2ABV提高了驗(yàn)證效率,減少了參與調(diào)試過(guò)程的工程師的數(shù)量。檢查工具發(fā)現(xiàn)問(wèn)題以后,工程師能夠及時(shí)得到通知,這樣使得工程師不必花費(fèi)數(shù)小時(shí)去查看波形和日志文件,便能很快找到錯(cuò)誤的源頭,從而節(jié)約測(cè)試時(shí)間,大大加快調(diào)試過(guò)程。6.2.3 形式化驗(yàn)證著名的白盒驗(yàn)證方法是一種形式化驗(yàn)證,這種方法用數(shù)學(xué)方法來(lái)證明設(shè)計(jì)的斷言或者屬性(property)是否正確。通常必須了解設(shè)計(jì)結(jié)構(gòu)行為的詳細(xì)信息才能編寫(xiě)出有用的、值得證明的屬性。因此,人們可以不需要進(jìn)行仿真就能證明設(shè)計(jì)是否正確。形式化驗(yàn)證還可以用來(lái)在RTL實(shí)現(xiàn)開(kāi)始之前,證明設(shè)計(jì)結(jié)構(gòu)的說(shuō)明是完全合理的。形式化驗(yàn)證工具通過(guò)試探操縱(manipulate)一個(gè)設(shè)計(jì)的所有可能工作路徑來(lái)證明設(shè)計(jì)屬性是否正確。所有輸入的改變必須遵循合法的行為約束。位于接口的斷言所起的作用是給形式化驗(yàn)證工具制定一個(gè)約束,規(guī)定合法輸入行為的范圍。然后做出努力以期證明RTL代碼中的斷言是真的,還是假的。若對(duì)輸入的約束規(guī)定得太寬松,則形式化驗(yàn)證工具可能生成依賴于非法輸入序列的反例,這些輸入不可能在設(shè)計(jì)中發(fā)生。若約束規(guī)定得太嚴(yán)格,則在形

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論