<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺談DC綜合工具的工作流程

芯司機 ? 來源:芯司機 ? 2023-06-19 15:47 ? 次閱讀

引言

電路設計自動化的時代,綜合工具的作用不言而喻,通過綜合,設計人員能夠獲得自己所設計模塊的規模、時序性能和關鍵路徑等有用信息,進而指導自己優化設計結構。本文就來說說綜合工具DC工作的全流程,希望對設計人員和DC的初級使用者有所啟發。

DC (Design compiler) 是Synopsys 公司綜合核心工具,內嵌六種工具:DC Explorer、HDL Compiler、Library Compiler 、Power Compiler,DFT Compiler and DFTMAX 和Design Vision,在綜合的不同階段DC調用相應的工具實現所需的功能。DC包含以下功能技術:DC Expert,DC Ultra 和DC Graphical。DC Expert 能夠進行功耗、面積和時序的優化,采用線性負載模型計算延時;DC Ultra所采用的優化算法也更先進,且DC Ultra提供拓計算技術,即在拓撲模式下不采用線性負載模型而是采用Synopsys的布局優化技術,以保證綜合結果和最終物理設計更好的相關性;DC Graphical具有DC Expert和DC ultra 所有特性,并且能夠優化multicorner-multimode 設計、減少布線擁堵和進行初步floorplan。

DC Expert:啟動命令dc_shell,綜合命令compile。

DC Ultra:拓撲模式啟動命令dc_shell -topo,綜合命令complie_ultra。

DC Graphical:啟動命令dc_shell -topo,綜合命令complie_ultra -spg。

Synopsys對綜合的定義十分形象Synthesis=Translation + Logic Optimization +Gate Mapping,這正好表示出使用DC綜合的過程,將RTL設計translate成GTECH門級網表,再根據施加的約束對電路優化并向特定工藝庫映射。本文力求解釋清楚綜合過程,不涉及具體綜合腳本和施加約束方法。

DC是調用HDL Compiler來將讀取的設計轉換成不依賴于工藝的GTECH門級網表的。這里需要說明的是GTECH網表中不僅僅只有與非門、異或門這種門電路符號,還有時序器件符號SEQGEN,如果設計中使用加、減、乘和比較等運算,GTECH會將其提取出來并用以帶有OP標識的符號表示,這方便后續進行高級別電路優化;另外,設計中避免不了使用選擇邏輯,如不特別聲明,DC在這一階段對選擇邏輯用SELECT_OP表示,且在后續的映射階段并不一定將SELECT_OP映射成多路選擇器,而是采用與非門電路來實現其功能,如果想要映射成多路選擇器,那么需要在RTL中聲明synopsys infer_mux。

接下來DC根據綜合人員設置的約束對GTECH網表進行優化,可分為組合優化和時序優化。

組合邏輯優化是先對組合邏輯設計進行工藝無關的邏輯級優化,從GTECH門電路提取出布爾表達式集合,這樣可以對通過對布爾表達式的化簡和變形實現對電路結構的化簡和變形;

再向工藝庫映射,映射的過程中根據速度和面積的目標選擇適合的電路結構;

最后在對工藝依賴的門電路進行門級優化,這一階段DC主要進行延時優化、功耗優化、DRC修正和面積優化。

時序優化分為兩步,第一步向工藝庫中的時序器件進行映射,此時組合邏輯還沒有完成映射,也就沒有具體的延時信息,時序器件的選擇也不就不是最優的,時序優化是在映射后進行的,且進行時序器件替換時是將時序電路附近的組合邏輯一起考量的。

具體來說DC的優化流程是如圖1所示的12步完成的,其中星號表示 DC Expert不支持。

1)如果使用compile_ ultra,默認首先自動進行ungroup操作,ungroup操作會將設計展平,展平設計必然會對內部信號重命名,這一操作會為后仿調試帶來困難,所以建議先關閉這一功能,首次綜合compile_ultra –no_auto_ungroup后,如果時序確實很緊張再打開這一功能,或者使用set_ungroup命令來實現局部ungroup操作。

2)high-level optimization是在時序和面積的約束下進行的資源提取和共享。如果使用DC Ultra工具,那么還可以對 datapath進行加減等運算operator進行提取優化。

3)Multiplexer Mapping and Optimization,即將組合邏輯中多路選擇標識首先映射成單個多路選擇器或者多路選擇樹,且為了能夠共享多路選擇樹、減少面積,DC會重新調整選擇信號的順序。

4)Sequential Mapping階段,DC將 SEQGEN代表的時序單元映射到 target Library中實際的時序器件。

5)Structuring and Mapping,即將設計中可以析出的子函數或者說子表達式作為中間變量,通過復用多次使用的中間變量可以減少面積,并將組合邏輯對工藝庫進行映射。

6)Automatic uniquification,這個操作相當于綜合人員使用了uniquify命令,該命令通過對多次例化的子設計進行復制和重命名的方式,實現每一個instance都有唯一設計與之對應,從而解決同一子設計多次例化問題。

7)implementing Synthetic Parts,在高級別優化階段,類似+或者*這樣的operator將其用一個抽象符號代表,稱為Synthetic Part,此時將這些 Synthetic Part映射為具體不同結構的加法器或者乘法器等。

8)timing-driven combinational optimization,此步驟DC對關鍵路徑再次進行重構,即增加總變量和復制中間變量等操作來提升速度,并且對關鍵路徑再次進行operator的Implementing,比如將串行加法器替換為行波進位加法器。

9)Register Retiming,該步驟僅DC Ultra支持,該操作簡單說就是對寄存器的移位、合并或者拆散復制等操作來減少違例。如果使用 optimize registers命令,那么寄存器的 retiming 更適合 pipelined designs;如果在 compile_ultra命令后帶- retime選項,DC會自動進行局部 retiming操作,這更適合通用的non- pipeline design。

10)Delay and Leakage Optimization這一步驟,DC試圖修復延時違例,DC再次對關鍵路徑的電路結構進行評估,如果不滿足約束,那么再次進行結構選擇并進行替換;至于leakage優化,DC是將非關鍵路徑的庫單元替換為庫中leakage更低的單元,比如選擇庫中高閾值電壓單元。

11)Design Rule Fixing,DC 通過插入buffer或者 resize gate進行設計規則違例修正。

12)Area Optimization,此過程DC 默認是在不影響延時性能進行的。如果使用DC Ultra工具,綜合人員可以使用 compile_ultra 命令后,再施加optimize_ netlist -area命令,在不影響時序性能的前提下進一步提升面積優化效果。

wKgaomSQCBeAOO-wAABWC2x6EiI987.png

四、總結

另外,如果想要獲得更好的QoR,從RTL code中提取數據路徑塊是十分重要,設計人員可以在compile_ultra前使用analyze_datapath_extraction命令來查看設計中算術內容并得到設計建議反饋。若想以html格式顯示報告,帶-html選項即可,HTML格式文件里面可以直接鏈接到RTL代碼,便于檢閱和修改。有時候觀測一下設計的最小面積和時序性能的極限很有意義,不加任何約束,compile_ultral會綜合出面積最小的情況;使用set_cost_priority -delay命令,將延時優化的優先級提前到DRC優先級前,可觀測設計時序性能的極限。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電路設計
    +關注

    關注

    6589

    文章

    2333

    瀏覽量

    197398
  • HDL
    HDL
    +關注

    關注

    8

    文章

    324

    瀏覽量

    47130
  • DC
    DC
    +關注

    關注

    8

    文章

    3571

    瀏覽量

    678169
  • RTL
    RTL
    +關注

    關注

    1

    文章

    382

    瀏覽量

    59185
  • 時序
    +關注

    關注

    5

    文章

    359

    瀏覽量

    37013

原文標題:一文讓你理解DC綜合全過程!

文章出處:【微信號:芯司機,微信公眾號:芯司機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    電氣CAD文件中高效的工作流程

    電氣CAD文件中高效的工作流程性能卓越的 PCschemetic ELautomation軟件具有作電氣設計時所需要的所有功能。其獨一無二的工作流程可節省您大量的時間,它代替了所有的訂貨信息——從
    發表于 12-04 11:24

    幫忙分析下這個設計的工作流程

    你好我是單片機學習的菜鳥能不能幫我分析一下一下設計的工作流程各個器件的工作原理
    發表于 12-07 11:06

    AndroidWifi工作流程

    AndroidWifi工作流程
    發表于 11-02 10:52

    AndroidWifi工作流程

    AndroidWifi工作流程
    發表于 09-25 11:17

    AndroidWifi工作流程

    AndroidWifi工作流程
    發表于 11-08 09:07

    請問AC電源控制器的工作流程是怎樣的?

    請問AC電源控制器的工作流程是怎樣的?
    發表于 05-12 06:46

    Simulink是什么?Simulink的工作流程是怎樣進行的?

    Simulink是什么?Simulink有哪些功能?如何去使用Simulink?Simulink的工作流程是怎樣進行的?
    發表于 07-09 06:16

    AS068工作流程是怎樣的?

    AS068工作流程是怎樣的?
    發表于 12-07 08:02

    串口發送數據的配置與工作流程是怎樣的?

    串口發送數據的配置與工作流程是怎樣的?
    發表于 12-10 06:26

    測試工程師工作流程有哪些

    測試工程師的工作流程,與公司的整體工作流程,項目的測試要求等因素相關。本文主要討論測試工程師的一般工作流程。
    的頭像 發表于 10-03 16:56 ?7383次閱讀

    雷電的4K工作流程

    在4K的雷電工作流程
    的頭像 發表于 05-31 11:20 ?2192次閱讀

    英特爾圖形性能分析器(GPA)的Windows DirectX工作流程分析

    Seth為英特爾圖形性能分析提供了Windows DirectX工作流程。 了解基本的GPA工作流程或刷新您對不同工具的了解。
    的頭像 發表于 11-07 06:55 ?3062次閱讀

    KiCad的工作流程解析

    KiCad與其它PCB設計軟件的功能基本一致,只是其工作流程與有些設計工具存在的主要不同在于原理圖的元器件符號庫和PCB的封裝庫是分開的,在創建原理圖的時候可以不用考慮使用的元器件的封裝,直到開始做PCB布局布線的時候才會為元器件分配封裝。
    發表于 08-16 15:10 ?3237次閱讀
    KiCad的<b class='flag-5'>工作流程</b>解析

    工作流程圖怎么用?有哪些繪制工作流程圖的軟件

    工作流程圖是清晰地展示工作中各個環節的流程圖圖示,主要用于工作活動和效率的管理。工作流程圖這種圖示方法具有直觀描述性、簡潔性、可操作性和指導
    的頭像 發表于 07-28 14:22 ?3230次閱讀

    一套完整的機器視覺系統的工作流程有哪些?

    機器視覺系統的工作流程
    的頭像 發表于 06-06 15:17 ?2029次閱讀
    一套完整的機器視覺系統的<b class='flag-5'>工作流程</b>有哪些?
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>