邏輯綜合系列主要說明以下問題:
- 為什么要邏輯綜合
- 邏輯綜合的基本原理
- 邏輯綜合需要提供哪些文件
- 邏輯綜合過程中施加約束
- 邏輯綜合能產生那些結果
綜合是前端設計的重要步驟之一,其過程是將行為描述的電路、RTL級的電路轉換到門級,其目的在于:決定電路門級結構,尋求時序與面積的平衡,尋求功耗與時序的平衡,增強電路的測試性。常見的工具是synoosys公司的 Design Compiler,將HDL語言描述的電路轉換到基于工藝庫的門級網表。
邏輯綜合的步驟為:轉譯(Translation)、優化(Optimize)、映射(Mapping)。
DC在綜合過程中會將電路劃分為以下的處理對象:
??
- Design:整個需要綜合的電路,即我們待綜合的對象
- Port:最外部的端口,一般是電路與外部交互的IO口
- Clock:由于時鐘上的任何問題都會對電路造成重要的影響,所以時鐘需要單獨處理
- Cell:被例化的模塊
- Reference:例化模塊的原電路
- Pin:Cell自身的引腳,注意與Port的區別
- Net:內部連線
用Design Compiler做綜合的流程如下:
其實施流程為:
- 預綜合過程(pre-synthesis process)
- 施加設計約束(contrainting design)
- 設計綜合(synthesizing?design)
- 后綜合過程(post-synthesis process)
①準備設計文件,DC 的設計輸入文件一般為 HDL 文件。
②指定庫文件,需要指定的庫文件包括:
鏈接庫(link library) 、目標庫(target library) 、符號庫(symbol library)、綜合庫(synthetic library)
下面是庫的解釋,具體的解釋在后面有說,這里先進行簡單地概述一下:
?Link library & target library
? Link ?library 和 target ?library 統稱為?technology ?library(即工藝庫,習慣稱之為綜合庫),technology ?library ?由半導體制造商提供,包含相關 cell 的信息及設計約束標準,其中:
?? Target library: ???在門級優化及映射的時候提供生成網表的 cell,即DC 用于創建實際電路的庫。
? ?Link library: ?????提供設計網表中的 cell,可以跟target_library使用同一個庫,但是 DC 不用 link library中的 cell 來綜合設計。
當 DC 讀入設計時,它自動讀入由 link library 變量指定的庫。當連接設計時,DC 先搜尋其內存中已經有的庫,然后在搜尋由 link ?library 指定的庫。
注:當讀入的文件是門級網表時,需要把 link library 指向生成該門級網表的庫文件,否則 DC 因不知道網表中門單元電路的功能而報錯。 關于工藝庫里面的具體內容,后面會專門進行說明。
??Symbol library
Symbol library 提供 Design Vision GUI 中設計實現的圖形符號,如果你使用腳本模式而不使用 GUI,此庫可不指定 Symbol?library
??Synthetic library
? 即為 Designware library ,名字上翻譯是綜合庫,但卻常稱之為IP庫,而不是直譯。特殊的 Designware library 是需要授權的(比如使用多級流水線的乘法器),默認的標準 Designware 由 DC 軟件商提供,無需指定。
? Create_mw_lib?:主要使用DC的物理綜合的時候,需要生成物理庫
③讀入設計?:
設計的讀入過程是將設計文件載入內存,并將其轉換為 DC 的中間格式,即GTECH 格式,GTECH 格式由“soft macros” ?如 ?adders, comparators 等組成,這些組件來自 synopsys ?的 synthetic lib,每種組件具有多種結構。
讀入設計有兩種實現方法實現方法:read ?和 ?analyze & elaborate(實際上
read 是 analyze ?與 ?elaborate 的打包操作 ?),下面介紹二者在使用中的區別:
?
從中可以看到,analyze & elaborate ?可以自由指定設計庫,并生成 GTECH中間文件前生成.syn 文件存儲于 work 目錄下,便于下次 elaborate 節省時間,我們一般選擇 ?analyze & elaborate 的方法讀入設計。
④定義設計環境:?
定義對象包括工藝參數(溫度、電壓等),I/O 端口屬性(負載、驅動、扇出),統計 wire-load 模型,設計環境將影響設計綜合及優化結果。
⑤設置設計約束:?
設計約束包括設計規則約束和優化約束,設計規則約束(design ?rule constraint)由工藝庫決定,在設計編譯過程中必須滿足,用于使電路能按功能要求正常工作。設計優化約束定義了 DC 要達到的時序和面積優化目標,該約束由用戶指定,DC 在不違反設計規則約束的前提下,遵循此約束綜合設計。
⑥選擇編譯策略:?
對于層次化設計,DC 中有兩種編譯策略供選擇,分別為 top down 和 bottom up。在 top down 策略中,頂層設計和子設計在一起編譯,所有的環境和約束設置針對頂層設計,雖然此種策略自動考慮到相關的內部設計,但是此種策略不適合與大型設計,因為 top down 編譯策略中,所以設計必須同時駐內存,硬件資源耗費大。在 bottom up 策略中,子設計單獨約束,當子設計成功編譯后,被設置為 dont_touch 屬性,防止在之后的編譯過程中被修改,所有同層子設計編譯完成后,再編譯之上的父設計,直至頂層設計編譯完成。Bottom ?up 策略允許大規模設計,因為該策略不需要所有設計同時駐入內存。
⑦編譯:?
用 Compile 命令執行綜合與優化過程,還可以利用一些選項指導編譯和優化過程。
⑧分析及解決設計中存在的問題?
DC ?可以產生一些報告以反應設計的綜合和優化結果,如:時序、面積、約束等報告,這些報告有助于分析和解決設計中存在的問題以改善綜合結果,我們還可以利用 check_design 命令檢驗綜合的設計的一致性。
⑨存儲設計數據?
DC 不會自動存儲綜合后的設計結果,因而需要在離開 DC 時手動存儲設計數據。比如存儲網表、延時信息等數據文件。