仿真與邏輯綜合_第1頁
仿真與邏輯綜合_第2頁
仿真與邏輯綜合_第3頁
仿真與邏輯綜合_第4頁
仿真與邏輯綜合_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

仿真與邏輯綜合9.1仿真9.2邏輯綜合習題與思考題

9.1仿真

9.1.1仿真輸入信息的產(chǎn)生硬件系統(tǒng)通常是通過輸入信號來驅(qū)動的,在不同輸入信號的情況下其行為表現(xiàn)是產(chǎn)生不同的輸出結果。因此仿真輸入信息的產(chǎn)生是對系統(tǒng)進行仿真的重要前提,也是必須進行的步驟。仿真信息的產(chǎn)生通常有三種方法:程序直接產(chǎn)生法、讀TEXIO文件產(chǎn)生法和仿真波形輸入法。

1.程序直接產(chǎn)生法

所謂程序直接產(chǎn)生法,就是由設計者設計一段VHDL程序,由該程序直接產(chǎn)生仿真的輸入信息。例如要對例8-41帶允許端的十二進制計數(shù)器進行仿真。該計數(shù)器有3個輸入端,仿真時要產(chǎn)生clr、en和clk3個輸入信號,如圖9-1所示。

圖9-1帶允許端的十二進制計數(shù)器的仿真輸入信號

3個輸入信號之間有嚴格的定時關系。這些定時波形可以用進程來產(chǎn)生。例如:

上例中的第一個進程產(chǎn)生周期為20

ns的時鐘脈沖test_clk。開始,test_clk?=

'1',保持10

ns。然后,test_clk?=

'0',再保持10

ns,得到一個時鐘周期。該進程沒有指定敏感量,因此當進程執(zhí)行到最后一條語句后又返回到最前面,開始執(zhí)行進程的第一條語句。如此循環(huán)往復,就能產(chǎn)生出一串周期為20ns的時鐘脈沖。

上例中的第二個進程用來產(chǎn)生初始的復位(清除)信號和計數(shù)允許信號。該進程可產(chǎn)生寬20?ns的復位信號,復位260?ns后再使test_en有效(置為“1”),從而使計數(shù)器進入正常的計數(shù)狀態(tài)。該進程的最后一條語句是WAIT語句,它表明該進程只執(zhí)行一次,進程在WAIT語句上處于無限制的等待狀態(tài)。

【例9-1】利用程序直接產(chǎn)生輸入信號。

根據(jù)例9-1的仿真程序可以得到仿真波形如圖9-2所示。

圖9-2帶允許端的十二進制計數(shù)器的仿真波形

2.讀TEXTIO文件產(chǎn)生法

在程序直接產(chǎn)生法中,仿真模塊的編程人員必須了解輸入信號的詳細狀態(tài)和它們與時間的關系,這對編程人員提出了太高的要求。為此,人們設計了一種用數(shù)據(jù)文件輸入仿真的辦法,即仿真輸入數(shù)據(jù)按定時要求按行存于一個文件(即TEXTIO文件)中。在仿真時,根據(jù)定時要求按行讀出,并賦予相應的輸入信號。圖9-3(a)就是根據(jù)例9-1的仿真輸入信號要求所設計的TEXTIO文件bar.in。

輸入文件bar.in;(b)輸出文件bar.out圖9-3TEXTIO文件bar.in的文件格式

在bar.in文件中每行包含2位數(shù)據(jù),第1位為clk,第2位為reset,。每行數(shù)據(jù)之間的定時間隔為10?ns。如果在程序中每隔10?ns讀入一行數(shù)據(jù),并將讀入值賦予對應的clk、reset,那么就產(chǎn)生了仿真輸入信號。這一點利用TEXTIO中的READLINE和READ語句很容易實現(xiàn)。

例如:

該例描述了每隔10

ns從bar.in文件中讀入一行數(shù)據(jù),并將其對應值賦予clk.in、reset.in的情況。該進程除非碰到了bar.in文件的末尾標志,否則該進程中的語句將循環(huán)執(zhí)行。這樣就產(chǎn)生了所需的八進制計數(shù)器仿真輸入信號。

利用仿真輸入信號的具體仿真模塊的實例如例9-2所示。仿真結果從輸出文件bar.out中得到,如圖9-3(b)所示。

【例9-2】利用仿真輸入信號的具體仿真模塊的實例。

產(chǎn)生輸入仿真信號時還應注意的一點是:輸入控制信號和時鐘信號最好不要在同一仿真時刻發(fā)生變化,應與時鐘變化沿錯開一定時間。這樣做的好處是:防止仿真中因判別二者變化的先后不同而出現(xiàn)相反的結果,使仿真結果具有唯一性。這里再次提醒,目前有些EDA工具仍只支持87版的TEXTIO,本實例也只在ISE中進行了驗證。

3.仿真波形輸入法

這種方法是利用波形編輯工具,編制出整個仿真期間系統(tǒng)每個輸入端的定時波形,作為系統(tǒng)仿真的輸入信號。這些輸入波形以文件形式存于工作庫中,例如MAX+PlusⅡ就以?.scf文件格式存于仿真庫中。系統(tǒng)在仿真時按不同仿真時刻,順序提取各輸入波形當前的輸入值,作為各輸入端的仿真輸入。

9.1.2仿真Δ

仿真Δ(即仿真中的Δ延時)對仿真來說是至關重要的。它能使那些零延時事件得到適當?shù)呐判颍员阍诜抡孢^程中得到一致的結果。眾所周知,用VHDL程序來描述系統(tǒng)的硬件時,它所描述的僅僅是系統(tǒng)的行為和構造,最終表現(xiàn)為門電路之間的連接關系。因此,在處理中對某些部分先處理,對另外一些部分后處理,并不要求有非常嚴格的順序。例如,某一個組合邏輯電路,其輸入為a和b,輸出為q,它由一個反相器、一個與非門和一個與門構成,其連接關系如圖9-4所示。用VHDL描述的對應程序模塊如例9-3所示。

圖9-4一個組合邏輯電路示例

【例9-3】用VHDL描述的圖9-4的對應程序模塊。

在該模塊的構造體中,3條語句都是信號代入語句,因此它們都是并發(fā)語句,只要其敏感量有變化,該語句就被啟動執(zhí)行一次?,F(xiàn)在假設信號b為“1”,端口a的信號有一個變化,即從“1”變成“0”。第一條信號代入語句的敏感量是a,因此,該語句啟動執(zhí)行一次,使信號量c由“0”變?yōu)椤?”。第二、第三條語句都含有敏感量c,因此,這兩條語句都將啟動執(zhí)行一次。在仿真中第二、第三條語句是并發(fā)語句,按理誰先執(zhí)行,誰后執(zhí)行,其結果是一樣的,但是事實并非如此。下面分析兩種不同的情況。

若第三條語句先執(zhí)行,則由于d

=

1,c?=

1,因此,q?=

1;接著執(zhí)行第二條語句,由于b?=

1,c?=

1,因此d?=

0。d由“1”到“0”將再次啟動第三條語句執(zhí)行,此時d?=

0,c

=

1,故q?=

0。這樣,輸出端口q就有由“0”變“1”,又由“1”變“0”的一個正跳變化。

若第二條語句先執(zhí)行,則由于b

=

1,c?=

1,因此d?=

0。由于d和c的變化使第三條語句執(zhí)行,此時d?=

0,c?=

1,因此q?=

0。即使a值發(fā)生由“1”變“0”的變化,q值將始終維持為“0”。兩種不同情況的q輸出波形如圖9-5所示。

圖9-5兩種不同情況的q輸出波形

由上面的分析可知,在仿真過程中,仿真次序不一致就會產(chǎn)生不同的仿真結果,這當然是不允許的。為了取得與硬件動作一致的仿真結果,必須引入一個適當?shù)姆抡嫱綑C制,使仿真結果和處理次序先后無關。這種仿真同步機制就是Δ延時同步機制,也稱仿真Δ機制。

所謂Δ延時同步機制,就是對那些零延時的事件,在仿真中加一個無限小的時間量,例如在VHDL中時間量的最小單位為1?fs(10-15

s),那么Δ延時就不能超過這個值。也就是說,即使加有限個Δ延時的時間值,也絕不會使其超過仿真時間的最小分辨率。下面以例9-3采用Δ延時為例作一說明,其仿真過程如圖9-6所示。

圖9-6采用Δ延時的仿真過程

如圖9-6所示,對于輸入端a的一個信號變化,在輸出端要出現(xiàn)新的值需要有3個仿真Δ延時時間。如果a信號變化時刻為0?ns,那么q輸出端出現(xiàn)新的值的時刻為0?ns

+

3Δ。前面假設Δ是一個無限小量,即從仿真角度來看,有限個Δ的延時是可以忽略的,相當于a有一個自“1”至“0”的跳變,立即使信號c產(chǎn)生一個自“0”到“1”的跳變,使信號d產(chǎn)生一個自“1”到“0”的跳變,而輸出q維持原值不變。

注意,這些跳變被認為發(fā)生在同一仿真時刻0?ns處。引入Δ延時僅僅是為了便于排出仿真計算的次序,在仿真波形中是不反映計算過程的,而只反映最終的計算結果。這樣處理以后,就使得仿真結果和硬件動作完全一致了。

而言之,在那些零延時的語句中,如例9-3中的3條代入語句,在仿真時都將加上Δ的延時,這樣就解決了仿真時由于計算順序不同所帶來的不一致性。

9.1.3仿真程序模塊的書寫

為了進行正確的仿真,對仿真程序的書寫也有一定的要求。

(1)可簡化實體描述。例9-1是一個帶允許端的十二進制計數(shù)器的仿真模塊,在仿真過程中要輸出的是仿真信號。這些仿真信號通常在仿真模塊中定義,如例9-1中的test_clk、test_clr和test_en等。因此,在仿真模塊的實體中可以省略有關端口的描述。例如,例9-1中的實體描述為

ENTITYtest_count12enIS

ENDENTITYtest_count12en;

(2)程序中應包含輸出錯誤信息的語句。在仿真中往往要對波形、定時關系進行檢查,如不滿足要求,應輸出仿真錯誤信息,以引起設計人員的注意。在VHDL中,ASSERT語句就專門用于錯誤驗證及錯誤信息的輸出。該語句的書寫格式如下:

ASSERT條件[REPORT輸出錯誤信息]

[SEVERITY出錯級別]

ASSERT后跟的是條件,也就是檢查的內(nèi)容。如果條件不滿足,則輸出錯誤信息和出錯級別。出錯信息將指明具體的出錯內(nèi)容或原因。出錯級別表示錯誤的程序。在VHDL中,出錯級別分為NOTE、WARNING、ERROR和FAILURE共4個級別,這些都將由編程人員在程序中指定。

(3)用配置語句選擇不同的仿真構造體。在3.3節(jié)中已詳細介紹了CONFIGURATION這一配置語句的功能和使用實例。在編寫仿真程序模塊時,為了方便,也經(jīng)常要使用該語句。設計者為了獲得較佳的系統(tǒng)性能,總要采用不同方法,設計不同結構的系統(tǒng)進行對比仿真,以尋求最佳的系統(tǒng)結構。在這種情況下,系統(tǒng)的實體只有一個,而對應構造體可以有多個。仿真時可以用CONFIGRATION語句進行選配。例如,用該語句可以選配例9-1的sim1構造體:

(4)不同級別或?qū)哟蔚姆抡嬗胁煌?。正如前面所述,系統(tǒng)仿真通常由3個階段組成:行為級仿真、RTL級仿真和門級仿真。它們的仿真目的和仿真程序模塊的書寫要求都各不相同。對此,設計者必須充分注意。

①行為級仿真。行為級仿真的目的是驗證系統(tǒng)的數(shù)學模型和行為是否正確,因而對系統(tǒng)的抽象程度較高。由于有這個前提,因此對行為級仿真程序模塊的書寫沒有太多限制,凡是VHDL中的語句和數(shù)據(jù)類型都可在程序中使用。在書寫時應盡可能使用抽象程度高的描述語句,以使程序更簡潔明了。

②RTL級仿真。通過行為級仿真以后,下一步就是要將行為級描述的程序模塊改寫為RTL描述的程序模塊。RTL級仿真是為了使仿真模塊符合邏輯工具的要求,使其能生成門級邏輯電路。

③門級仿真。RTL程序模塊經(jīng)邏輯綜合以后就生成了門級電路。既然RTL程序模塊已經(jīng)通過仿真,為何還要對門級電路進行仿真呢?這主要有以下幾個原因。

第一,在RTL仿真中一般不考慮門的延時,也就是進行零延時仿真。在這種情況下系統(tǒng)的工作速度不能得到正確的驗證。不僅如此,門延時的存在還會對系統(tǒng)內(nèi)部工作過程及輸入/輸出帶來意想不到的影響。

第二,正如在5.2節(jié)所述的那樣,在RTL描述中像“Z”和“X”那樣的狀態(tài)在描述中是可以屏蔽的,但是利用邏輯綜合工具,根據(jù)不同的約束條件,對電路進行相應變動時,這種狀態(tài)就有可能發(fā)生傳播。在門級電路仿真中出現(xiàn)這種狀態(tài)是不允許的。

RTL描述經(jīng)邏輯綜合生成門電路的過程中,需對數(shù)據(jù)類型進行轉換。一般情況下,輸入/輸出端口只限定使用STD_LOGIC和STD_LOGIC_VECTOR數(shù)據(jù)類型。

9.2邏輯綜合

所謂邏輯綜合,就是將較高抽象層次的描述自動地轉換到較低抽象層次的描述的一種方法。

就現(xiàn)有的邏輯綜合工具而言,所謂邏輯綜合,就是將RTL級的描述轉換成門級網(wǎng)表的過程。當前適用于VHDL的邏輯綜合工具主要有:CadenceDesignSystems公司的Synergy、Synopsys公司的DesignCompilerFamily、MentorGraphics公司的AutologicⅡ等十幾種。

一般邏輯綜合的過程如圖9-7所示。邏輯綜合過程要求的輸入為RTL描述的程序模塊、約束條件(如面積、速度、功耗、可測性)、支持它的工藝庫(如TTL工藝庫、MOS工藝庫、CMOS工藝庫等),輸出為門級網(wǎng)表。圖9-7邏輯綜合過程示意圖

9.2.1約束條件

在邏輯綜合過程中,出于優(yōu)化輸出和工藝映射的需要,一定要有相應的約束條件,以實現(xiàn)對所設計結構的控制。也就是說,采用不同的約束條件如面積、延時、功耗和可測性等,對于同樣的一個系統(tǒng),其實現(xiàn)的系統(tǒng)結構是不一樣的。

1.面積約束條件

在將設計轉換成門級電路時通常要加面積的約束條件。這是一個設計目標,也是邏輯綜合過程中進行優(yōu)化的依據(jù)之一。多數(shù)邏輯綜合工具允許設計者按工藝庫中門級宏單元所用的單位來指定面積的約束條件。例如,如果用等效門作為測量單位,那么面積約束條件即可以用門的個數(shù)來描述。例如:

max_area1200

2.時間延時約束條件

時間延時約束條件最常用的描述方法是指定輸入/輸出的最大延時時間。用延時約束條件來引導優(yōu)化和映射,對設計電路來說是一個相當困難的任務。在某些條件下,無論邏輯綜合工具采用什么樣的優(yōu)化手段,最終達不到預期目標的情況時有發(fā)生。一種典型的時間延時約束條件的描述如下:

max_delay1.7data_out

這種描述規(guī)定信號data_out的最大延時應小于或等于1.7個庫單位時間。

9.2.2屬性描述

屬性描述可用來界定設計的環(huán)境,例如由屬性來規(guī)定所設計電路的負載數(shù)、驅(qū)動能力和輸入信號定時等。

1.負載

每個輸出引腳都要規(guī)定一個驅(qū)動能力,由它確定在一個特定的時間范圍內(nèi)驅(qū)動多少負載,每個輸入也要有一個指定的負載值。通過負載的計算就可以推算出,因負載的輕重而使輸出波形的變壞程度。

負載屬性將指明某一信號的輸出負載能力,在工藝庫中按庫單位計算。例如:

set_load6xbus

該屬性規(guī)定輸出信號xbus可帶動6個庫單位負載信號。

2.驅(qū)動

驅(qū)動屬性規(guī)定驅(qū)動器電阻的大小,即控制驅(qū)動電流的大小。它同樣也按工藝庫的單位來指定。例如:

set_drive2ybus

該屬性規(guī)定輸出信號ybus有2個庫單位的驅(qū)動能力。

3.到達時間

邏輯綜合工具通常用靜態(tài)時間分析器來檢查正在綜合的邏輯是否滿足用戶規(guī)定的延時限制條件。在特定的節(jié)點設置到達時間,以便進行指定的定時分析,這一點有時是非常重要的。例如,某邏輯電路的所有輸入信號中有一路信號比其他信號要遲到達,而邏輯電路的輸出又要滿足所給定的延時限制的要求。這就給邏輯綜合提出了嚴格的要求。

也就是說,該路信號的遲到時間加上在該電路中的延時時間不應該超過用戶對該電路的延時限制。這種要求表明,邏輯綜合結果要求該路遲到信號在本邏輯模塊中的延遲要比其他路信號更小,即要盡可能減少該信號從輸入到輸出通路上的門的級數(shù)。

9.2.3工藝庫

在根據(jù)約束條件進行邏輯綜合時,工藝庫將持有綜合工具所必要的全部信息,即工藝庫不僅僅含有ASIC單元的邏輯功能,還包含該單元的面積、輸入到輸出的定時關系、輸出的扇出限制和對單元所需的定時檢查。例如,一個2輸入與門的工藝庫描述如下:

該例描述了一個名稱為xyz的工藝庫中的一個單元,庫單元名為and2,它有2個輸入a1和a2,一個輸出o1。該and2單元的面積為5個庫單位,要用一個庫單位的負載電容能力的信號才能驅(qū)動它的一個輸入引腳。輸出引腳o1的固有上升和下降延時規(guī)定為不帶負載時的輸出延時。器件輸出o1是輸入a1和a2的函數(shù),在計算延時時應有從a1、a2輸入到o1輸出這樣一個通道的延時。

多數(shù)邏輯綜合工具都有一個完整而復雜的模型,該模型能計算通過一個ASIC單元的延時。這類模型不僅包括固有的上升和下降時間,而且還包括輸出負載、輸入級波形的斜度延時和估計的引線延時。這樣,某一電路的總延時就可寫為

總延時?=?固有延時?+?負載延時?+?引線延時?+?輸入級波形斜度延時

其中:

固有延時(慣性延時)——不帶任何負載的門延時;

負載延時——驅(qū)動輸出時因負載電容所產(chǎn)生的附加延時;

引線延時——信號在引線上傳送的延時,它和單元的物理特征有關;

輸入級波形斜度延時——由于輸入波形不夠陡所引起的延時。

工藝庫還包括如何用有關的工藝參數(shù)和工作條件換算延時信息的數(shù)據(jù),其中工作條件是指器件工作溫度和加在器件上的供電電壓。

9.2.4邏輯綜合的基本步驟

應用邏輯綜合工具將RTL描述轉換至門級描述一般應分為3步。

(1)將RTL描述轉換成非優(yōu)化的門級布爾描述(如與門、或門、觸發(fā)器、鎖存器等);

(2)執(zhí)行優(yōu)化算法,產(chǎn)生優(yōu)化的布爾描述;

(3)按照目的工藝要求,采用相應工藝庫把優(yōu)化的布爾描述映射成實際的邏輯門。

上述3個步驟的執(zhí)行過程如圖9-8所示。

圖9-8邏輯綜合的主要步驟示意圖

1.RTL描述至非優(yōu)化的布爾描述的轉換

從RTL描述轉換到布爾描述是由邏輯綜合工具來實現(xiàn)的,該過程不受用戶控制。其最終的轉換結果是一種中間結果,格式隨不同邏輯綜合工具而異,且對用戶是不透明的。

按照轉換的規(guī)則和算法,將RTL描述中的IF、CASE、LOOP語句以及條件信號代入和選擇信號代入等語句轉換成中間的布爾表達式,要么裝配組成,要么由推論形成觸發(fā)器和鎖存器。

2.布爾優(yōu)化描述

布爾優(yōu)化過程是將一個非優(yōu)化的布爾描述轉化成一個優(yōu)化的布爾描述的過程。它是邏輯綜合過程中的一項重要工作,它采用了大量的算法和規(guī)則。優(yōu)化的一種方法是:先將非優(yōu)化的布爾描述轉換到最低級描述(pla格式),然后優(yōu)化這種描述(用pla優(yōu)化技術),最后用共享公共項(包括引入中間變量)去簡化邏輯,減少門的個數(shù)。

將非優(yōu)化的布爾描述轉換成一種pla格式的過程稱為展平設計,它將所有的邏輯關系都轉換成簡單的AND(與)和OR(或)的表達式。這種轉換的目的是使非優(yōu)化的布爾描述格式轉換成能執(zhí)行優(yōu)化算法的布爾描述格式。例如,非優(yōu)化的布爾描述如下:

a=bANDc;

b=xOR(yANDz);

c=qORw;

輸出a用3個功能方程式描述,其中b和c為中間變量。展平的功能是將中間變量b和c置換掉,完全用不帶中間變量的布爾式來表示。展平過程實際上是一個消元過程:

a?=(xOR(yANDz))AND(qORw)

??

?=xAND(qORw)OR(yANDz)AND(qORw)

??

?=

溫馨提示

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

評論

0/150

提交評論