1.邏輯綜合
利用工具將RTL代碼轉化為門級網表的過程稱為邏輯綜合。綜合一個設計的過程,從讀取RTL代碼開始,通過時序約束關系,映射產生一個門級網表。
1 流程介紹
1.用硬件描述語言進行設計
讀入的設計,通常是采用硬件描述語言(HDL)編寫的,如Verilog和VHDL。
2.指定工藝庫
在根據約束條件進行邏輯綜合時,對于選擇的流片工藝,工藝庫將提供綜合工具所需要的標準單元的全部信息,即工藝庫含有特定工藝下的標準單元的邏輯功能、單元的面積、輸入到輸出的時序關系、輸出的扇出限制和對單元時序檢查所需的信息等。
3.讀入設計
把HDL描述的設計,即RTL代碼輸入給綜合工具,由綜合工具進行編譯,綜合工具在綜合時會首先檢查代碼的可綜合性。
4.定義環境約束條件
定義本設計要綜合時的環境,包括設計的工藝參數(溫度、制造工藝、電壓)、I/O端口屬性等。
5.設定設計的約束條件
約束條件將指定綜合工具按照什么樣的原則來綜合電路,該電路所要達到的指標是什么。
2 定義時鐘
定義芯片所需的內部時鐘信號。
通常時鐘網絡在綜合過程中是不做處理的,會在后續的布局布線中插入時鐘樹,減小其時鐘偏斜。
輸入/輸出延時
為保證片外的觸發器可以正確地輸入/輸出,不僅要保證片內的延時要滿足時序要求,而且要保證片內外延時總和要滿足時序要求 。
輸入/輸出延時示意
3 設定設計規則約束
設定設計規則約束包括節點上信號最大跳變時間(Max Transition)、最大扇出(Max Fanout)、最大電容(Max Capacitance)等。合理的設定這些約束條件將有利于控制功耗,保證信號完整性。
這3個約束可以設置在輸入端口、輸出端口及當前設計上。通常這些約束在工藝庫內已經設定,由工藝參數決定大小。如果庫內設定的值不夠恰當或者過于樂觀,可以根據設計需要專門設置。
4 面積約束
面積約束是指定設計的最大面積值,如果設計超過了這一面積就違反了約束。
在將設計實體轉換成門級電路時,通常要加面積約束條件。這一設計指標,也是邏輯綜合過程中進行優化的依據之一。多數的邏輯綜合工具允許設計者按工藝庫中門級宏單元所用的單位來指定面積的約束條件。
5 優化設計
優化的主要目的是在滿足時序要求的前提下盡量減小芯片面積。與工藝無關的優化缺乏非常準確的時序信息,因而注意力往往集中在優化面積上。等到映射之后時序信息比較準確時再進行修正更有效。
架構優化:如選擇DesignWare實現所需功能等。
邏輯優化:重構(優化面積)與展平(優化速度)。
門級優化:映射、延時優化、設計規則修正、面積優化。
SoC設計中常用的綜合策略
有兩種基本的綜合策略可以選擇,即自頂向下(Top-down)與自底向上(Bottom-up)。
在自頂向下綜合策略里,頂層設計與其子模塊同時編譯,僅需要施加頂層約束。
自底向上的綜合策略是指先單獨地對各個子模塊進行約束與綜合,完成后,賦予它們不再優化(Dont_touch)屬性,將它們整合到上一層模塊中,進行綜合,重復這一過程,直至綜合最頂層的模塊。
2.物理綜合
傳統的邏輯綜合方法是依賴于連線負載模型(Wire-load Model)的,隨著工藝尺寸的不斷縮小及芯片復雜性的增加,整個電路的延時信息更多取決于互連線延時。
在物理綜合時,就考慮布局布線的問題了。
操作模式
物理綜合要求的約束條件通常有芯片尺寸、引腳位置、線上負載信息、版圖規劃信息等。一般使用以下兩種操作模式。
RTL到門級模式:在RTL到門級模式下,物理綜合的輸入信息是RTL級的設計電路、版圖規劃信息及含有版圖信息的物理綜合的庫文件。
門級到布局后門級模式 :在這一模式下,與RTL到門級模式的唯一區別是物理綜合的輸入信息是門級網表,而不是RTL級的設計電路。
相對而言,RTL到門級模式所花費的時間要比門級到門級模式的時間長。
物理綜合的流程圖
更多請查看 :綜合與時序分析
實例:用Design Compiler 進行邏輯綜合
在綜合的各個步驟中所經常用到的命令
(1)指定庫文件
在綜合之前,需要用一個名為“.synopsys_dc.setup”的初始化文件建立綜合的環境。在該文件中,通過向相關環境變量賦值,來定義工藝庫的位置及綜合所需要的參數。
synopsys的安裝目錄下:對于UNIX系統來說,它通常位于“$SYNOPSYS/admin/setup”目錄下。用于卸載synopsys工藝獨立庫及別的參數,不包含設計相關的數據。
用戶根目錄下:這里的setup文件包含用戶對于自己DC工作環境的參數設置。
啟動DC的當前目錄:這里的setup文件包含因項目與設計而異的變量設置。
Setup文件的內容
search_path:由目錄列表組成。當DC搜索某個未指定路徑的文件(如庫、設計文件等)時,將由search_path中定義的路徑中去搜索該文件。通常將其定義為某個主要的庫文件所在的目錄路徑。
target_library:指定對設計進行綜合時采用的工藝庫,由廠家提供。該庫中的器件被DC用于邏輯映射。本變量指定的庫文件名,應該也包含在link_library所列出的內容中,用于供DC讀取門級網表。
link_library:該變量指定的庫文件中的器件將不會被DC用來進行綜合,如RAM、ROM及I/O。在RTL設計中,將以實例化的方式進行引用。
symbol_library:該變量指定的庫文件包含有工藝庫中器件的圖形化信息,用于生成圖形化原理圖。
(2)讀入設計
(3)定義工作環境
設置環境條件(set_operating_conditions)
設置線負載模型(set_wire_load_model)
設置驅動強度(set_drive與set_driving_cell)
設置電容負載
設置扇出負載(set_fanout_load)
(4)設置約束條件
設置設計規則約束(set_max_transition、set_max_fanout、set_max_capacitance)
例如:set_max_transition 0.3 current_design
例如:set_max_capacitance 1.5[get_ports out1]
例如:set_max_fanout 3.0[all_outputs]
時鐘定義的相關命令
create_clock用來定義一個時鐘的周期和波形
set_clock_latency定義時鐘網絡的延時
set_clock_uncertainty定義時鐘偏斜值
時鐘定義
create_generated_clock定義一個內部生成的時鐘。可以將內部分頻或者倍頻產生的時鐘定義為初級時鐘的函數。
例如:create_generated_clock -name GENCLK -source CLKIN -divide_by 2[get_pins idiv/ div_reg/Q]
對于只含有組合邏輯的模塊,為了定義該模塊的延時約束,可以創建一個虛擬時鐘,再相對于虛擬時鐘定義輸入/輸出延時。
設置輸入/輸出端口的延時
輸入延時定義了信號相對于時鐘的到達時間,指一個信號在時鐘沿之后多少時間到達。
輸出延時則定義輸出信號相對于時鐘所需要的到達時間,指一個信號在時鐘沿之前多少時間輸出。
特別路徑的約束
虛假路徑(set_false_path)是指由于邏輯功能、數據順序或操作模式等原因,從來不會激活或者不需要考慮的路徑。
設置多周期路徑
設置多周期路徑(set_multicycle_path),指設計中從發送數據到采樣到數據的時間允許多于一個時鐘周期的路徑。虛線標出了多周期路徑。
(5)設定綜合優化策略
通過使用compile命令調用DC,對設計進行綜合與優化。該命令有許多選項可以選擇,其中,映射努力(map_effort)即要求工具優化的程度,可以設置為低、中、高。
在初次編譯時,如果需要對整個設計的性能和面積等有一個大致的了解,可以將map_effort設置為低。默認的map_effort級別為中,而在最后一次編譯中,可以將map_effort設置為高。通常,將map_effort設置為中即可。
審核編輯:湯梓紅
-
物理綜合
+關注
關注
0文章
3瀏覽量
6590 -
RTL
+關注
關注
1文章
388瀏覽量
60696 -
觸發器
+關注
關注
14文章
2032瀏覽量
61892
原文標題:邏輯綜合與物理綜合
文章出處:【微信號:數字ICer,微信公眾號:數字ICer】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
如何使用DCNXT實現物理綜合?
Tcl與Design Compiler (八)——DC的邏輯綜合與優化 精選資料分享
DC邏輯綜合

ASIC邏輯綜合及Synopsys Design Compiler 的使用資料說明

評論