1. 程式人生 > >DC學習(2)綜合的流程

DC學習(2)綜合的流程

模型 文本編輯器 步驟 div gui 其他 流程 http 生成

一:邏輯綜合的概述

  synthesis = translation + logic optimization + gate mapping

1:Translation

  主要把描述RTL級的HDL語言,在約束下轉換成DC內部的同意用門級描述的電路,以GTECH或者沒有映射的ddc形式展現

2:logic optimization

  邏輯優化,就是把統一用門級描述的電路進行優化,例如把路徑調整一下,門改一下。

3:Gate mapping

  門級映射;DC用別的廠商的工藝庫把電路給映射出來,得到一個ddc文件;包括映射的門電路信息與網表,.v格式的網表,延時信息(sdf),工作約束(sdc)

。(.ddc不能用文本編輯器打開)。.ddc這個包含的網表文件是實際意義的網表文件,而.v這個形式的網表問價是用來做後仿真的文件。

  延時信息的得出:線負載模型、拓撲結構模型(現在)。

二:DC啟動方式

1:dc_shell

  DC以命令行的格式啟動

2:design_vision

  DC圖形界面啟動

3:Batch_mode

  批處理模式。前面兩種方式只是把DC啟動起來,沒有真正的工作。需要通過source命令把腳本寫進去以後,DC讀取才真正工作;這種批處理模式是,在啟動的同時,告訴DC執行哪些腳本

  例如:$dc_shell -topo -f run.tcl | tee -i run.log

  意思是:使用拓撲模式啟動DC,啟動的同時執行run.tcl腳本文件,並且把啟動過程中顯示在終端的信息記錄到run.log中。| tee -i就是寫進信息的管道命令,講dc_shell -topo -f run.tcl 執行後顯示的信息(輸出結果),流入到run.log文件中。這樣子是為了在DC啟動失敗的時候,通過查看啟動信息,進而排除錯誤

三:基本流程概述

1:高層次設計流程圖

  技術分享圖片

  ①在設計之前,準備好庫,verilog代碼,約束條件

  ② 完成 RTL 源碼設計之後,應讓設計開發與功能仿真並行進行:

    ·在設計開發階段,我們使用DC來實現特定的設計目標,以及執行默認選項的初步綜合

    ·如果設計開發結果未能在10%的偏差範圍內滿足時序目標,則需要修正HDL代碼,然後重復設計開發和功能驗證的過程。 

  ③ 使用 DC 完成設計的綜合並滿足設計目標.這個過程包括三個步驟,即綜合=翻譯+邏輯優化+映射,首先將 RTL 源代碼轉化為通用的布爾等式,然後設計的約束對電路進行邏輯綜合和優化,使電路能滿足設計的目標或者約束,最後使用目標工藝庫的邏輯單元映射成門級網表,在將設計綜合成門級網表之後,要驗證此時的設計是否滿足設計目標。如果不能滿足設計目標,此時需要產生及分析報告確定問題及解決問題。

  ④當設計滿足功能、時序以及其他的設計目標的時候,需要執行物理層設計最後分析物理層設計的性能,也就是使用DC的拓撲模式,加入floorplan的物理信息後進行綜合分析設計的性能。如果結果未能滿足設計目標,應返回第三步.如果滿足設計目標,則本部分設計周期完成.

2:流程圖與相應的命令

  技術分享圖片

  ①準備設計文件,DC 的設計輸入文件一般為 HDL 文件。

  ②指定庫文件,需要指定的庫文件包括:

  鏈接庫(link library) 、目標庫(target library) 、符號庫(symbol library)、綜合庫(synthetic library)

  工藝庫文件的配置放在三個地方,裝DC目錄,user目錄,操作目錄。前兩個目錄是早已配置好,最好不要動的;第三個目錄放在工作目錄下的隱藏目錄:.synopsys_dc.setup,通過ls -al才能看到此文件。

  一般有兩種文件,後綴名為lib(人看,可轉化為db文件)和db(工具讀)

  例如:set target_library 22nm.db

     set_app_var target_library 22nm.db #對於DC內部原變量,最好使用第二種方法,set_app_var會檢查變量拼寫是否為內部變量,若拼寫錯誤,則出現error。

  下面是庫的解釋,具體的解釋在後面有說,這裏先進行簡單地概述一下:

  Link library 和 target library 統稱為 technology library(即工藝庫,習慣稱之為綜合庫),technology library 由半導體制造商提供,包含相關 cell 的信息及設計約束標準,其中:

  Target library: 在門級優化及映射的時候提供生成網表的 cell,即DC 用於創建實際電路的庫。

  Link library:設置裏面不僅有Target library,還有其他東西,例如IP核。

  symbol library:Symbol library 提供 Design Vision GUI 中設計實現的圖形符號,如果你使用腳本模式而不使用 GUI,此庫可不指定 Symbol library。

 ③讀入設計:

  設計的讀入過程是將設計文件載入內存,並將其轉換為 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 時手動存儲設計數據。比如存儲網表、延時信息等數據文件,ddc文件。

四:例子

DC學習(2)綜合的流程