Synopsys 邏輯綜合的整體架構概覽

目錄

一、DC Shell 邏輯綜合的整體架構概覽

?? 邏輯綜合的主要階段(Pipeline)

二、核心架構模塊詳解

1. Internal Database(設計對象數據庫)

2. Scheduler(調度器)

3. Rewriting Engine(表達式重寫器)

4. Datapath Engine

5. Mapping Engine

三、腳本化流程(TCL 下的控制路徑)

四、HLO 和 datapath 的聯系


一、DC Shell 邏輯綜合的整體架構概覽

Design Compiler(DC)作為 Synopsys 的旗艦綜合工具,其底層架構是高度模塊化的,以“中間表示(IR)”驅動的靜態調度優化器(Static Scheduling Optimizer)為核心,依次執行 RTL 解析、靜態數據流圖構建、表達式轉換、邏輯優化、結構優化、時序收斂與映射幾個階段。

?? 邏輯綜合的主要階段(Pipeline)

  1. RTL Parser(前端)

    • 解析 Verilog/VHDL,構建?Abstract Syntax Tree(AST)
    • 提取模塊、端口、變量、過程控制結構
  2. Elaboration

    • 實例化模塊、分層展開(flatten or preserve hierarchy)
    • 初始化數據類型、生成?Design Object(internal DB)
  3. High-Level Optimization(HLO)

    • 將行為級表達式轉換為靜態數據流圖(SDFG)
    • 嘗試對復雜表達式進行調度、綁定、重寫(rewriting)
  4. Datapath Optimization

    • 構建 datapath 節點(adder、shifter、multiplier、MUX)
    • 進行資源共享、調度、綁定(binding)
    • 特殊處理乘法、條件選擇等結構
  5. Logic Optimization

    • 布爾優化(常量傳播、冗余移除、factorization)
    • Common subexpression elimination
  6. Mapping

    • 將中間結構(GTECH cells)映射為目標庫中的元件(standard cells or custom cells)
    • 基于時序、面積、功耗做代價驅動的選擇
  7. Post-Mapping Optimization

    • Retiming、buffer insertion、gate resizing、logic duplication
    • 時序閉合
  8. Netlist Generation

    • 輸出 gate-level netlist(Verilog),或 GTECH(generic technology)表示

二、核心架構模塊詳解

1. Internal Database(設計對象數據庫)

DC 所有 design 元素(cell、net、pin、expr、mux、dp node)都以對象存在于 Internal DB 中。常用的數據結構有:

  • design:頂層模塊
  • net?/?port?/?pin
  • dp_node:datapath node,封裝如 adder、multiplier
  • expression_tree:行為表達式樹,供 HLO 重寫器處理
  • 屬性系統:所有對象可攜帶 attribute(可以通過?get_attribute?操作)

2. Scheduler(調度器)

核心的調度引擎是 DC 的靈魂。它決定表達式中每個操作應在哪個“cycle”執行,或是否跨越 cycle 邊界:

  • 基于控制依賴與數據依賴圖(DFG)
  • 考慮 path slack、resource sharing、binding 成本
  • 配合 timing engine 實時計算 slack 和 delay

3. Rewriting Engine(表達式重寫器)

HLO 中的重要部分,處理結構變換,比如:

  • a + (b + c)?重寫為?(a + b) + c
  • (sel) ? a : b?轉換為 mux 構造形式
  • 探測 shared pattern(子表達式共享)

4. Datapath Engine

datapath 引擎負責將 SDFG 圖中的操作構建為硬件友好的 datapath 單元(而非離散 gates):

  • 構造 datapath 節點(如 dp_adder、dp_mux)
  • 調用綁定器將 dp_node 綁定到實現(如 multiplier)
  • 嘗試資源復用與 cross-cycle 構造

這一步是能否提升面積/功耗的關鍵步驟,也最容易失敗。

5. Mapping Engine

將 GTECH 表達式映射為標準 cell。這里會調用:

  • Cell selector:遍歷 cell library 尋找合適 cell
  • Timing annotator:估計時延
  • Area/capacitive cost estimator:為選擇提供權重

三、腳本化流程(TCL 下的控制路徑)

dc_shell?的整體流程可以通過一套典型的腳本來掌控:

read_verilog design.v
elaborate top
linkset_synlib_optimization true
compile_ultra -gate_clock -no_autoungroup
write -f verilog -hierarchy -o top_mapped.v

高級用戶可以用:

  • set_attribute?設置 datapath behavior
  • report_dp_*?查看 datapath 構建狀況
  • ungroup?/?compile_ultra -no_autoungroup?控制優化范圍

四、HLO 和 datapath 的聯系

HLO → datapath 優化之間是密切耦合的。

  • HLO 提供了 datapath 構建的?結構語義信息(表達式樹)
  • Datapath 引擎在 HLO 成功 schedule 后嘗試構造硬件資源映射
  • 若 HLO 失敗(如表達式無法調度),datapath 優化必然失敗
  • 某些 mux 無法構建常常是 expression 沒有被合法 rewrite 成 static conditional

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78418.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78418.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78418.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

低壓電工常見知識點

一.工廠用電 1.工廠一般有電源380V和220V。 三相:黃綠紅 藍 雙色 助記符:王力宏 分別對應第一相(R),第二相(S),第三相(T),零線(N),地線(PE) 單相:紅 黑 對應火線(L) 零線(N) 左零右火 二.人體安全電壓是36V 三.變壓器的講解 變壓器的符號…

【沉浸式求職學習day27】

沉浸式求職學習 家人們誰懂啊!明天下午又實習筆試了,所以今天大部分時間還是在搞一些行測之類的東西,所以今天沒什么分享給大家的,明晚會簡單的和大家分享一下關于數據庫的一些東西,以及和大家聊聊我筆試的感覺哈哈哈哈…

進入救援模式(物理服務器)

目錄 **?? 準備工作****?? 進入救援模式(物理服務器)****方法 1:直接修改啟動參數****適用情況****操作步驟****方法 2:通過GRUB引導菜單進入(系統未完全崩潰時)****適用情況****操作步驟****兩者的核心區別****如何選擇?****注意事項****總結**當物理服務器無法正常…

基于Pytest接口自動化的requests模塊項目實戰以及接口關聯方法詳解

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快 1、基于pytest單元測試框架的規則 1.1 模塊名(即文件名)必須以test_開頭或者_test結尾 1.2 類名必須以Test開頭且不能有init方法 1.3 用…

匯總 JavaScript 內置對象常用方法詳解

匯總 JavaScript 內置對象常用方法詳解 JavaScript 提供了許多強大的內置對象,它們帶有各種實用的方法,能夠幫助我們更高效地編寫代碼。本文將介紹最常用的內置對象方法,并通過實例展示它們的使用場景。 目錄 Array 數組String 字符串Obje…

OceanBase TPCC測試常見報錯匯總

OceanBase TPCC測試常見報錯匯總 報錯1:加載測試數據時創建tablegroup失敗報錯2:加載測試數據時執行超時報錯3:加載測試數據時funcs.sh函數找不到報錯4:加載數據時報錯超過租戶內存上限辦法一:增加租戶內存辦法二:調高轉儲線程數辦法三:調整MemStore內存占比和凍結觸發閾…

Flutter 在 Dart 3.8 開始支持 Null-Aware Elements 語法,自動識別集合里的空元素

近日,在 Dart 3.8 的 changelog 里正式提交了 Null-Aware Elements 語法,該語法糖可以用于在 List、Set、Map 等集合中處理可能為 null 的元素或鍵值對,簡化顯式檢查 null 的場景: /之前 var listWithoutNullAwareElements [if …

SAIL-RK3588協作機器人運動控制器技術方案

一、核心能力與政策適配? ?政策合規性? 滿足工信部《智能機器人重點技術攻關指南》要求,支持 ?EtherCAT主站協議(符合IEC 61158標準)?,助力企業申報工業機器人研發專項補貼(最高300萬元/項目)?核心板…

Eigen幾何變換類 (Transform, Quaternion等)

1. Transform 類&#xff1a;仿射/射影變換 模板參數 cpp Transform<Scalar, Dim, Mode, Options> Scalar&#xff1a;數據類型&#xff08;如 float, double&#xff09;。 Dim&#xff1a;維度&#xff08;2 或 3&#xff09;。 Mode&#xff1a;變換類型&#xf…

openGauss手工配置主備

1、初始化 創建一個操作系統用戶&#xff0c;例如postgres&#xff0c;為這個用戶設置PATH和LD_LIBRARY_PATH環境變量&#xff0c;指向opengauss/bin和opengauss/lib export GAUSSHOME/mnt/disk01/opengauss export PATH$GAUSSHOME/bin:$PATH export LD_LIBRARY_PATH$GAUSS…

CSS預處理器對比:Sass、Less與Stylus如何選擇

引言 CSS預處理器已成為現代前端開發的標準工具&#xff0c;它們通過添加編程特性來增強純CSS的功能&#xff0c;使樣式表更加模塊化、可維護且高效。在眾多預處理器中&#xff0c;Sass、Less和Stylus是三個最流行的選擇&#xff0c;它們各自擁有獨特的語法和功能特點。本文將深…

基于Docker、Kubernetes和Jenkins的百節點部署架構圖及信息流描述

以下是基于Docker、Kubernetes和Jenkins的百節點部署架構圖及信息流描述,使用文本和Mermaid語法表示: 架構圖(Mermaid語法) #mermaid-svg-WWCAqL1oWjvRywVJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WWCAq…

js中get,set用法

1、作為對象的訪問器屬性 //使用Object.definePropertylet obj {_a:123};Object.defineProperty(obj, "a", {get() {return this._a;},set(val) {this._aval},});console.log(obj.a); //123obj.a456console.log(obj.a) // 456 //使用對象字面量let obj {_a:123,ge…

Steam游戲服務器攻防全景解讀——如何構建游戲級抗DDoS防御體系?

Steam游戲服務器的DDoS攻防體系設計&#xff0c;從協議層漏洞利用到業務連續性保障&#xff0c;深度拆解反射型攻擊、TCP狀態耗盡等7類威脅場景。基于全球15個游戲廠商攻防實戰數據&#xff0c;提供包含邊緣節點調度、AI流量指紋識別、SteamCMD加固配置的三維防護方案&#xff…

【AI】SpringAI 第四彈:接入本地大模型 Ollama

Ollama 是一個開源的大型語言模型服務工具。它的主要作用是幫助用戶快速在本地運行大模型&#xff0c; 簡化了在 Docker 容器內部署和管理大語言模型&#xff08;LLM&#xff09;的過程。 1. 確保Ollama 已經啟動 # 查看幫助文檔 ollama -h# 自動下載并啟動 ollama run deeps…

大語言模型的評估指標

目錄 一、混淆矩陣 1. 混淆矩陣的結構&#xff08;二分類為例&#xff09; 2.從混淆矩陣衍生的核心指標 3.多分類任務的擴展 4. 混淆矩陣的實戰應用 二、分類任務核心指標 1. Accuracy&#xff08;準確率&#xff09; 2. Precision&#xff08;精確率&#xff09; 3. …

SpringBoot Gradle插件:構建與打包配置

文章目錄 引言一、Spring Boot Gradle插件基礎二、依賴管理與配置三、應用打包配置四、啟動腳本與運行配置五、多環境構建與配置六、集成Docker與云原生支持七、實踐案例&#xff1a;自定義Spring Boot應用構建總結 引言 在Java生態系統中&#xff0c;Gradle作為一種靈活且強大…

Vue3 組件通信與插槽

Vue3 組件通信方式全解&#xff08;10種方案&#xff09; 一、組件通信方式概覽 通信方式適用場景數據流向復雜度Props/自定義事件父子組件簡單通信父 ? 子?v-model 雙向綁定父子表單組件父 ? 子??Provide/Inject跨層級組件通信祖先 → 后代??事件總線任意組件間通信任…

【KWDB 創作者計劃】_嵌入式硬件篇---數字電子器件

文章目錄 前言一、系列前綴(如 "74" 或 "54")74(商用級)54(工業級)二、邏輯家族(如 "LS"、"HC"、"HCT" 等)TTL(晶體管-晶體管邏輯)家族CMOS(互補金屬氧化物半導體)家族BiCMOS(雙極 CMOS)家族三、功能編號(如…

黃勇的《架構探險:從Java到大數據》內容詳解

《架構探險&#xff1a;從Java到大數據》內容詳解 1. 書籍核心主題 黃勇的《架構探險&#xff1a;從Java到大數據》是一本系統性探討架構設計演進的著作&#xff0c;結合Java技術棧和大數據場景&#xff0c;深入分析了從單體架構到分布式、微服務、云原生的演進路徑&#xff0…