趙慶哲,王兆勇
(中國電子科技集團(tuán)公司第四十七研究所,沈陽 110032)
什么是邏輯綜合?邏輯綜合是指應(yīng)用相關(guān)工具軟件讀入IC設(shè)計者所設(shè)計的RTL(Register_Transition_Level)的Verilog HDL或者VHDL源代碼,以一定的半導(dǎo)體工藝庫為目標(biāo),在時序或面積約束下,將RTL源代碼映射成為門級網(wǎng)表的過程。邏輯綜合將IC設(shè)計者的設(shè)計意圖轉(zhuǎn)化成為了實際的電路連接形式,它是IC設(shè)計流程中聯(lián)系前端和后端的橋梁,后續(xù)對設(shè)計的處理都是以邏輯綜合后生成的門級網(wǎng)表為基礎(chǔ)進(jìn)行的。
邏輯綜合的流程主要分為四個部分:首先,建立邏輯綜合環(huán)境,包括半導(dǎo)體工藝庫的路徑設(shè)置以及對工藝庫中一些特殊元器件使用的設(shè)置;其次,讀入設(shè)計和目標(biāo)工藝庫以及約束文件;第三,對設(shè)計進(jìn)行邏輯上的優(yōu)化;第四,對優(yōu)化后的設(shè)計進(jìn)行時序分析,如果沒有達(dá)到約束目標(biāo),那么就需要修改設(shè)計并重復(fù)上述過程。圖1表示的就是綜合流程。
圖1 邏輯綜合流程
結(jié)合邏輯綜合流程圖,我們詳細(xì)闡述邏輯綜合的方法。
目標(biāo)工藝庫路徑的設(shè)置:由于邏輯綜合以一定的半導(dǎo)體工藝庫為目標(biāo),因此,我們首先要設(shè)置工藝庫的路徑,便于綜合工具對其進(jìn)行尋找。半導(dǎo)體工藝廠商提供的.db形式的工藝庫文件可以作為目標(biāo)工藝庫文件。對于目標(biāo)工藝庫的路徑設(shè)置方式,不同的軟件工具有不同的形式,但大致上都是設(shè)置目標(biāo)工藝庫的路徑和目標(biāo)工藝庫文件。目標(biāo)工藝庫是工藝庫中最差情況的工藝庫。同時,還需要設(shè)置最好和最壞兩個極端情況的工藝庫及其路徑,之所以這樣設(shè)置,是為了在時序分析的時候能更好地分析setup timing和hold timing。最后需要設(shè)置鏈接庫。在一些設(shè)計中往往存在一些宏單元,例如存儲器單元和I/O單元,它們不屬于標(biāo)準(zhǔn)單元庫中的單元,因此,需要將其設(shè)置為鏈接庫,在邏輯綜合的時候會在需要時調(diào)用這些宏單元。注意,這些宏單元文件必須作為鏈接庫來進(jìn)行設(shè)置,如果作為目標(biāo)庫進(jìn)行設(shè)置,則在邏輯綜合過程中軟件會將宏單元作為目標(biāo)庫來使用。
讀入設(shè)計、工藝庫和約束:這是邏輯綜合讀取RTL設(shè)計和工藝庫以及約束的過程。對于RTL設(shè)計,綜合工具可以接受VerilogHDL和VHDL形式的文件,但是RTL設(shè)計應(yīng)該是可綜合的結(jié)構(gòu),否則在讀取過程中會產(chǎn)生一些警告或者錯誤信息,導(dǎo)致綜合結(jié)果出現(xiàn)偏差。對于工藝庫,在其路徑設(shè)置完成后,邏輯綜合工具會自動將其讀入到軟件的內(nèi)存之中以待使用。約束文件是邏輯綜合過程中重要的文件,它是IC設(shè)計者期待的IC所能達(dá)到的時序或面積上的目標(biāo)。是整個邏輯綜合過程中邏輯優(yōu)化的指導(dǎo)方向?;镜募s束包括對時鐘的約束和對輸入輸出端口的約束。對時鐘的約束主要是設(shè)置時鐘名稱、端口以及周期等信息;對于輸入端口的設(shè)置,主要是輸入信號相對于時鐘的延遲時間;而對于輸出端口的設(shè)置則是對下游電路的延遲時間進(jìn)行設(shè)置。圖2就是時鐘以及輸入輸出延遲示意圖。
圖2 輸入輸出延遲示意圖
讀入邏輯綜合所需的文件后,綜合工具便開始了邏輯優(yōu)化過程,這個過程基于上述的約束目標(biāo)。在邏輯優(yōu)化過程中,對設(shè)計進(jìn)行處理有兩種方式,一種是保留設(shè)計層次,另一種是將設(shè)計全部展平,也就是打破設(shè)計的全部層次。由于邏輯綜合一般不進(jìn)行跨越模塊邊界優(yōu)化,因此對于時序要求很嚴(yán)格的設(shè)計來說,打破層次的綜合方式比較適合,而對于時序要求不嚴(yán)格的設(shè)計而言,則兩者都在可選之列。
時序和面積分析:邏輯綜合工具內(nèi)嵌有靜態(tài)時序分析工具,因此在邏輯綜合完成后,可以對設(shè)計進(jìn)行時序和面積分析。分析的目標(biāo)有兩個,即setup timing和hold timing分析。前者是對設(shè)計中寄存器的數(shù)據(jù)信號先于時鐘信號穩(wěn)定的時間進(jìn)行檢查,如果出現(xiàn)違背,則說明寄存器不能正確地采集到輸入信號。而后者是寄存器的數(shù)據(jù)信號晚于時鐘信號穩(wěn)定的時間,如果出現(xiàn)違背,則說明上下兩級寄存器之間的數(shù)據(jù)變化太快以致后級寄存器無法正確采集到前級寄存器的數(shù)據(jù)。時序分析清晰地表示出了路徑的時序狀況,下面就是某設(shè)計的時序分析報告。
從這個報告中我們可以看到時序路徑的起點和終點以及分析的類型、所屬的時鐘域以及路徑上的時序變化情況。
邏輯綜合完成后,生成的文件有門級網(wǎng)表文件和.sdf、.sdc文件。門級網(wǎng)表是映射到目標(biāo)工藝庫的設(shè)計,是一種門級連接。它是后續(xù)流程的基礎(chǔ)。.sdc文件是邏輯綜合工具生成的關(guān)于設(shè)計的約束文件,它是邏輯綜合所用的約束文件的生成物,提供給后端P&R用作時序約束。.sdf文件是設(shè)計中各個單元的延遲文件,它是根據(jù)標(biāo)準(zhǔn)單元庫中單元的時序數(shù)據(jù)計算而來的。單元在不同的load和transition time條件下的延遲是不同的,在標(biāo)準(zhǔn)單元庫中,存在一個二維的查找表,表的縱向和橫向分別是transition time和load,以下是某標(biāo)準(zhǔn)單元庫中的時序二維表。
邏輯綜合過程中,軟件根據(jù)單元實際的transition和load進(jìn)行查表,如果超出了表的范圍,那么計算的延遲值便不是一個準(zhǔn)確值。如果在表內(nèi),為了準(zhǔn)確計算單元延遲,找出與實際延遲值相鄰的四點,根據(jù)四點差值算法,計算單元的延遲并寫入.SDF文件之中。
以上就是邏輯綜合的基本過程,完成上述各步驟,就完成了一個設(shè)計的邏輯綜合過程。邏輯綜合是一種自動化的設(shè)計方式,主要依據(jù)一定的算法對設(shè)計進(jìn)行處理,因此,缺乏靈活性。因此要求設(shè)計者對電路要加深理解,對硬件描述語言與邏輯綜合的關(guān)系要清楚地把握,只有這樣,邏輯綜合工具才能綜合出理想的電路結(jié)構(gòu)。同時,邏輯綜合人員也要對標(biāo)準(zhǔn)單元庫有所了解,對內(nèi)部元器件的特性要熟悉,這樣,才能給出適當(dāng)?shù)脑O(shè)計約束,從而更好地完成邏輯綜合工作。
[1]Himanshu Bhatnagar,著.高級 ASIC 芯片綜合[M].張文俊,譯.北京:清華大學(xué)出版社,2007.
[2]Weste,Harris,著.CMOS超大規(guī)模集成電路設(shè)計[M].汪東,李振濤,李寶鋒,等譯.北京:中國電力出版社,2005.