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

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.xdnf.cn/news/1993.html

相关文章:

  • vscode 打开csv乱码
  • 4.5/Q1,GBD数据库最新文章解读
  • Dubbo负载均衡策略深度解析
  • 洛谷 B3647:【模板】Floyd 算法
  • 筑牢数字防线:商城系统安全的多维守护策略
  • 《解锁LLMs from scratch:开启大语言模型的探索之旅》
  • Electron Forge【实战】阿里百炼大模型 —— AI 聊天
  • BGP网络协议
  • 数据可视化平台产品介绍及功能特色
  • .NET 10 中的新增功能
  • 力扣347:前K个高频元素
  • 文章记单词 | 第43篇(六级)
  • Kafka和flume整合
  • cJSON中#define cJSON_IsReference 256 和 #define cJSON_StringIsConst 512这定义的大小是?
  • CSS常见布局
  • 逐行解析性能奥秘:借助 `line_profiler` 深入优化热点函数
  • MySQL 从入门到精通:第二篇 - 数据类型、约束与索引
  • 【华为HCIP | 华为数通工程师】821—多选解析—第十六页
  • 那些年踩过的坑之Arrays.asList
  • CC攻击的类型都有哪些?
  • eclipse怎么导入junit4
  • 解读《数据资产质量评估实施规则》:企业数据资产认证落地的关键指南
  • MCP(Model Context Protocol)
  • AlarmClock4.8.4(官方版)桌面时钟工具软件下载安装教程
  • Zephyr kernel Build System (CMake)介绍
  • MySQL引擎分类与选择、SQL更新底层实现、分库分表、读写分离、主从复制 - 面试实战
  • 数字浪潮下的算力担当:GPU 服务器的多元应用、核心价值
  • 技术探索之路:从自我认知到成长规划
  • 实现层归一化
  • 数据结构------C语言经典题目(7)