????????綜合是前端模塊設計中的重要步驟之一,綜合的過程是將行為描述的電路、RTL級的電路轉換到門級的過程;Design Compiler是Synopsys公司用于做電路綜合的核心工具,它可以方便地將HDL語言描述的電路轉換到基于工藝庫的門級網表。本文將簡單介紹綜合的原理以及使用Design Compiler做電路綜合的全過程。
一、概述
????????綜合的目的在于:決定電路門級結構,尋求時序與面積的平衡,尋求功耗與時序的平衡,增強電路的測試性。它是根據一個系統邏輯功能與性能的要求,在一個包含眾多結構、功能、性能均已知的邏輯元件的單元庫的支持下,尋找出一個邏輯網絡結構的最佳實現方案。即實現在滿足設計電路的功能、速度及面積等限制條件下,將行為級描述轉化為指定的技術庫中單元電路的連接。
?????????綜合主要包括三個階段:轉換(translation)、映射(mapping) 與優化(optimization)。綜合工具首先將HDL的描述轉換成一個與工藝獨立(technology-independent)的RTL級網表(網表中RTL模塊通過連線互聯),然后根據具體指定的工藝庫,將RTL級網表映射到工藝庫上,成為一個門級網表,最后再根據設計者施加的諸如延時、面積方面的約束條件,對門級網表進行優化。
? ? ? ? 邏輯綜合具有以下幾個層次:
????????隨著抽象層次的升高,設計者對于最終硬件(門和觸發器)的控制能力越來越小。設計者可以在上述的三個層次用HDL語言描述他的設計,根據HDL語言描述的層次的高低,綜合也相應的可以分為邏輯級綜合,RTL級綜合以及行為級綜合。
- 邏輯級綜合中,設計被描述成布爾等式的形式,觸發器、鎖存器這樣的基本單元采用元件例化(instantiate)的方式表達出來。邏輯級描述實際上已經暗示了綜合以后的網表。
- 在RTL級綜合中,電路的數學運算和行為功能分別通過HDL語言特定的運算符和行為結構描述出來。對于時序電路,我們可以明確的描述它在每個時鐘邊沿的行為。
- 行為級綜合比RTL級綜合層次更高,同時它描述電路也越抽象,在RTL級中,電路在每個時鐘邊沿的行為必須確切的描述出來,而行為級描述卻不是這樣,這里沒有明確規定電路的時鐘周期。電路的行為可以描述成一個時序程序(sequential program),綜合工具的任務就是根據指定的設計約束,找出哪些運算可以在哪個時鐘周期內完成,需要在多個周期內用到的變量值需要通過寄存器寄存起來。
?????????上圖向我們展示了一個設計從最初的最抽象的概念階段到最終的芯片階段的轉化過程,在這個過程當中,Design Compiler主要完成將設計的RTL級描述轉化到門級網表的過程。
二、Design compiler基本流程
????????
?????????與一般的綜合過程相同,使用DC做綜合也包含轉換、優化和映射三個階段。
????????轉換階段綜合工具將HDL語言描述的電路或未映射的電路用工藝獨立的RTL級的邏輯來實現,對于Synopsys的綜合工具DC來說,就是使用gtech.db庫中的RTL級單元來組成一個中間的網表。
????????優化與映射是綜合工具對已有的中間網表進行分析,去掉其中的冗余單元,并對不滿足限制條件(如constraints.tcl)的路徑進行優化,然后將優化之后的電路映射到由制造商提供的工藝庫上(如core_slow.db)。?? ? ? ?
? ? ? ? 使用DC進行綜合的實施流程為:
- 預綜合過程(pre-synthesis process)
- 施加設計約束(contrainting design)
- 設計綜合(synthesizing?design)
- 后綜合過程(post-synthesis process)
????????當半導體工藝的最小特征尺寸小于1um時,稱之為亞微米設計技術,當最小特征尺寸小于0.5um時稱為深亞微米設計技術(DSM:Deep Sub Micrometer),而當進一步小于0.25um時,則稱為超深亞微米設計技術(VDSM:Very Deep Sub Micrometer)。當進入超深亞微米設計后,原有的綜合工具受到了很大的挑戰,其中一個主要表現是:連線的延時迅速上升。
????????當特征尺寸大于0.5um時,電路的延時主要集中在門級單元的延時上,如果門級單元延時占系統延時的70%以上,則前端綜合后的電路延時與后端進行布局布線以后反標(back-annotate)回來的電路延時相差不大。
????????通常在0.35um設計時,連線延時已經達到了總延時的50%以上,于是版圖反標的延時與綜合出來得到延時相差會比較大,單靠一次綜合已經不能準確估計電路的延時情況,此時需要經過前端后端工具不斷疊代來達到比較真實的結果。如下圖:
?