当前位置: 首页 > news >正文

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

相关文章:

  • 电子电子架构 --- 主机厂视角下ECU开发流程
  • 【前端】如何检查内存泄漏
  • 如何把两个视频合并成一个视频?无需视频编辑器即可搞定视频合并
  • 知识知多少——Matplotlib 库
  • QT窗口相关控件及其属性
  • 制作一款打飞机游戏23:编辑器ui
  • 【Nacos-安全与限流机制健全06 】
  • 存储新势力:助力DeepSeek一体机
  • 【专题刷题】二分查找(二)
  • 【Luogu】动态规划四
  • 2025时间序列都有哪些创新点可做——总结篇
  • 常用第三方库:flutter_boost混合开发
  • Shell脚本-while循环语法结构
  • MySQL数据库(13) 用户管理
  • kubernetes环境手动部署 Prometheus 监控系统安装文档
  • 差分优化效率
  • 研发内控新规下的合规之道:维拉工时助力企业穿越IPO审查雷区
  • 深入浅出 MVVM:理解现代前端开发的核心架构模式
  • 贪心算法~~
  • Sand AI 开源 MAGI-1 视频生成模型,近屿智能带你领略无限扩展的 AI 视界
  • 春暖花开,为何皮肤却闹起了小情绪?
  • 葛兰西的三位一体:重提并复兴欧洲共产主义的平民圣人
  • 宜家上海徐汇商场明天恢复营业,改造后有啥新变化?
  • 陈平评《艺术科学的目的与界限》|现代艺术史学的奠基时代
  • 王旭任甘肃省副省长
  • 11-13世纪的地中海贸易