趙慶哲,王兆勇
(中國電子科技集團公司第四十七研究所,沈陽 110032)
什么是邏輯綜合?邏輯綜合是指應用相關工具軟件讀入IC設計者所設計的RTL(Register_Transition_Level)的Verilog HDL或者VHDL源代碼,以一定的半導體工藝庫為目標,在時序或面積約束下,將RTL源代碼映射成為門級網表的過程。邏輯綜合將IC設計者的設計意圖轉化成為了實際的電路連接形式,它是IC設計流程中聯系前端和后端的橋梁,后續對設計的處理都是以邏輯綜合后生成的門級網表為基礎進行的。
邏輯綜合的流程主要分為四個部分:首先,建立邏輯綜合環境,包括半導體工藝庫的路徑設置以及對工藝庫中一些特殊元器件使用的設置;其次,讀入設計和目標工藝庫以及約束文件;第三,對設計進行邏輯上的優化;第四,對優化后的設計進行時序分析,如果沒有達到約束目標,那么就需要修改設計并重復上述過程。圖1表示的就是綜合流程。

圖1 邏輯綜合流程
結合邏輯綜合流程圖,我們詳細闡述邏輯綜合的方法。
目標工藝庫路徑的設置:由于邏輯綜合以一定的半導體工藝庫為目標,因此,我們首先要設置工藝庫的路徑,便于綜合工具對其進行尋找。半導體工藝廠商提供的.db形式的工藝庫文件可以作為目標工藝庫文件。對于目標工藝庫的路徑設置方式,不同的軟件工具有不同的形式,但大致上都是設置目標工藝庫的路徑和目標工藝庫文件。目標工藝庫是工藝庫中最差情況的工藝庫。同時,還需要設置最好和最壞兩個極端情況的工藝庫及其路徑,之所以這樣設置,是為了在時序分析的時候能更好地分析setup timing和hold timing。最后需要設置鏈接庫。在一些設計中往往存在一些宏單元,例如存儲器單元和I/O單元,它們不屬于標準單元庫中的單元,因此,需要將其設置為鏈接庫,在邏輯綜合的時候會在需要時調用這些宏單元。注意,這些宏單元文件必須作為鏈接庫來進行設置,如果作為目標庫進行設置,則在邏輯綜合過程中軟件會將宏單元作為目標庫來使用。
讀入設計、工藝庫和約束:這是邏輯綜合讀取RTL設計和工藝庫以及約束的過程。對于RTL設計,綜合工具可以接受VerilogHDL和VHDL形式的文件,但是RTL設計應該是可綜合的結構,否則在讀取過程中會產生一些警告或者錯誤信息,導致綜合結果出現偏差。對于工藝庫,在其路徑設置完成后,邏輯綜合工具會自動將其讀入到軟件的內存之中以待使用。約束文件是邏輯綜合過程中重要的文件,它是IC設計者期待的IC所能達到的時序或面積上的目標。是整個邏輯綜合過程中邏輯優化的指導方向?;镜募s束包括對時鐘的約束和對輸入輸出端口的約束。對時鐘的約束主要是設置時鐘名稱、端口以及周期等信息;對于輸入端口的設置,主要是輸入信號相對于時鐘的延遲時間;而對于輸出端口的設置則是對下游電路的延遲時間進行設置。圖2就是時鐘以及輸入輸出延遲示意圖。

圖2 輸入輸出延遲示意圖
讀入邏輯綜合所需的文件后,綜合工具便開始了邏輯優化過程,這個過程基于上述的約束目標。在邏輯優化過程中,對設計進行處理有兩種方式,一種是保留設計層次,另一種是將設計全部展平,也就是打破設計的全部層次。由于邏輯綜合一般不進行跨越模塊邊界優化,因此對于時序要求很嚴格的設計來說,打破層次的綜合方式比較適合,而對于時序要求不嚴格的設計而言,則兩者都在可選之列。
時序和面積分析:邏輯綜合工具內嵌有靜態時序分析工具,因此在邏輯綜合完成后,可以對設計進行時序和面積分析。分析的目標有兩個,即setup timing和hold timing分析。前者是對設計中寄存器的數據信號先于時鐘信號穩定的時間進行檢查,如果出現違背,則說明寄存器不能正確地采集到輸入信號。而后者是寄存器的數據信號晚于時鐘信號穩定的時間,如果出現違背,則說明上下兩級寄存器之間的數據變化太快以致后級寄存器無法正確采集到前級寄存器的數據。時序分析清晰地表示出了路徑的時序狀況,下面就是某設計的時序分析報告。


從這個報告中我們可以看到時序路徑的起點和終點以及分析的類型、所屬的時鐘域以及路徑上的時序變化情況。
邏輯綜合完成后,生成的文件有門級網表文件和.sdf、.sdc文件。門級網表是映射到目標工藝庫的設計,是一種門級連接。它是后續流程的基礎。.sdc文件是邏輯綜合工具生成的關于設計的約束文件,它是邏輯綜合所用的約束文件的生成物,提供給后端P&R用作時序約束。.sdf文件是設計中各個單元的延遲文件,它是根據標準單元庫中單元的時序數據計算而來的。單元在不同的load和transition time條件下的延遲是不同的,在標準單元庫中,存在一個二維的查找表,表的縱向和橫向分別是transition time和load,以下是某標準單元庫中的時序二維表。

邏輯綜合過程中,軟件根據單元實際的transition和load進行查表,如果超出了表的范圍,那么計算的延遲值便不是一個準確值。如果在表內,為了準確計算單元延遲,找出與實際延遲值相鄰的四點,根據四點差值算法,計算單元的延遲并寫入.SDF文件之中。
以上就是邏輯綜合的基本過程,完成上述各步驟,就完成了一個設計的邏輯綜合過程。邏輯綜合是一種自動化的設計方式,主要依據一定的算法對設計進行處理,因此,缺乏靈活性。因此要求設計者對電路要加深理解,對硬件描述語言與邏輯綜合的關系要清楚地把握,只有這樣,邏輯綜合工具才能綜合出理想的電路結構。同時,邏輯綜合人員也要對標準單元庫有所了解,對內部元器件的特性要熟悉,這樣,才能給出適當的設計約束,從而更好地完成邏輯綜合工作。
[1]Himanshu Bhatnagar,著.高級 ASIC 芯片綜合[M].張文俊,譯.北京:清華大學出版社,2007.
[2]Weste,Harris,著.CMOS超大規模集成電路設計[M].汪東,李振濤,李寶鋒,等譯.北京:中國電力出版社,2005.