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

下載本文檔

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

文檔簡(jiǎn)介

仿真與邏輯綜合9.1仿真9.2邏輯綜合習(xí)題與思考題

9.1仿真

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

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

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

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

3個(gè)輸入信號(hào)之間有嚴(yán)格的定時(shí)關(guān)系。這些定時(shí)波形可以用進(jìn)程來產(chǎn)生。例如:

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

ns的時(shí)鐘脈沖test_clk。開始,test_clk?=

'1',保持10

ns。然后,test_clk?=

'0',再保持10

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

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

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

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

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

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

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

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

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

例如:

該例描述了每隔10

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

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

【例9-2】利用仿真輸入信號(hào)的具體仿真模塊的實(shí)例。

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

3.仿真波形輸入法

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

9.1.2仿真Δ

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

圖9-4一個(gè)組合邏輯電路示例

【例9-3】用VHDL描述的圖9-4的對(duì)應(yīng)程序模塊。

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

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

=

1,c?=

1,因此,q?=

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

1,c?=

1,因此d?=

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

0,c

=

1,故q?=

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

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

=

1,c?=

1,因此d?=

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

0,c?=

1,因此q?=

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

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

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

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

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

圖9-6采用Δ延時(shí)的仿真過程

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

+

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

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

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

9.1.3仿真程序模塊的書寫

為了進(jìn)行正確的仿真,對(duì)仿真程序的書寫也有一定的要求。

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

ENTITYtest_count12enIS

ENDENTITYtest_count12en;

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

ASSERT條件[REPORT輸出錯(cuò)誤信息]

[SEVERITY出錯(cuò)級(jí)別]

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

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

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

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

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

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

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

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

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

9.2邏輯綜合

所謂邏輯綜合,就是將較高抽象層次的描述自動(dòng)地轉(zhuǎn)換到較低抽象層次的描述的一種方法。

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

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

9.2.1約束條件

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

1.面積約束條件

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

max_area1200

2.時(shí)間延時(shí)約束條件

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

max_delay1.7data_out

這種描述規(guī)定信號(hào)data_out的最大延時(shí)應(yīng)小于或等于1.7個(gè)庫單位時(shí)間。

9.2.2屬性描述

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

1.負(fù)載

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

負(fù)載屬性將指明某一信號(hào)的輸出負(fù)載能力,在工藝庫中按庫單位計(jì)算。例如:

set_load6xbus

該屬性規(guī)定輸出信號(hào)xbus可帶動(dòng)6個(gè)庫單位負(fù)載信號(hào)。

2.驅(qū)動(dòng)

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

set_drive2ybus

該屬性規(guī)定輸出信號(hào)ybus有2個(gè)庫單位的驅(qū)動(dòng)能力。

3.到達(dá)時(shí)間

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

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

9.2.3工藝庫

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

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

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

總延時(shí)?=?固有延時(shí)?+?負(fù)載延時(shí)?+?引線延時(shí)?+?輸入級(jí)波形斜度延時(shí)

其中:

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

負(fù)載延時(shí)——驅(qū)動(dòng)輸出時(shí)因負(fù)載電容所產(chǎn)生的附加延時(shí);

引線延時(shí)——信號(hào)在引線上傳送的延時(shí),它和單元的物理特征有關(guān);

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

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

9.2.4邏輯綜合的基本步驟

應(yīng)用邏輯綜合工具將RTL描述轉(zhuǎn)換至門級(jí)描述一般應(yīng)分為3步。

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

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

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

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

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

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

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

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

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

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

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

a=bANDc;

b=xOR(yANDz);

c=qORw;

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

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

??

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

??

?=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論