Synopsys 逻辑综合的整体架构概览

news2025/7/15 15:01:04

目录

一、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
link

set_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.coloradmin.cn/o/2343985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 富文本转word

前言&#xff1a; 本文的目的是将传入的富文本内容(html标签&#xff0c;图片)并且分页导出为word文档。 所使用的为docx4j 一、依赖导入 <!-- 富文本转word --><dependency><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId&…

多模态大语言模型arxiv论文略读(四十三)

InteraRec: Screenshot Based Recommendations Using Multimodal Large Language Models ➡️ 论文标题&#xff1a;InteraRec: Screenshot Based Recommendations Using Multimodal Large Language Models ➡️ 论文作者&#xff1a;Saketh Reddy Karra, Theja Tulabandhula …

GPU加速-系统CUDA12.5-Windows10

误区注意 查看当前系统可支持的最高版本cuda&#xff1a;nvidia-smi 说明&#xff1a; 此处显示的12.7只是驱动对应的最高版本&#xff0c;不一定是 / 也不一定需要是 当前Python使用的版本。但我们所安装的CUDA版本需要 小于等于它&#xff08;即≤12.7&#xff09;因此即使…

kafka课后总结

Kafka是由LinkedIn开发的分布式发布 - 订阅消息系统&#xff0c;具备高吞吐量、低延迟、可扩展性、持久性、可靠性、容错性和高并发等特性。其主要角色包括Broker、Topic、Partition、Producer、Consumer、Consumer Group、replica、leader、follower和controller。消息系统中存…

【股票系统】使用docker本地构建ai-hedge-fund项目,模拟大师炒股进行分析。人工智能的对冲基金的开源项目

股票系统: https://github.com/virattt/ai-hedge-fund 镜像地址: https://gitcode.com/gh_mirrors/ai/ai-hedge-fund 项目地址: https://gitee.com/pythonstock/docker-run-ai-hedge-fund 这是一个基于人工智能的对冲基金的原理验证项目。本项目旨在探讨利用人工智能进行…

施工安全巡检二维码制作

进入新时代以来&#xff0c;人们对安全的重视程度越来越高。特别在建筑施工行业&#xff0c;安全不仅是关乎着工人的性命&#xff0c;更是承载着工人背后家庭的幸福生活。此时就诞生了安全巡检的工作&#xff0c;而巡检过程中内容庞杂&#xff0c;安全生产检查、隐患排查、施工…

基于 Google Earth Engine (GEE) 的土地利用变化监测

一、引言 土地利用变化是全球环境变化的重要组成部分&#xff0c;对生态系统、气候和人类社会产生深远影响。利用遥感技术可以快速、准确地获取土地利用信息&#xff0c;监测其变化情况。本文将详细介绍如何使用 GEE 对特定区域的 Landsat 影像进行处理&#xff0c;实现土地利…

BT169-ASEMI无人机专用功率器件BT169

编辑&#xff1a;ll BT169-ASEMI无人机专用功率器件BT169 型号&#xff1a;BT169 品牌&#xff1a;ASEMI 封装&#xff1a;SOT-23 批号&#xff1a;最新 引脚数量&#xff1a;3 特性&#xff1a;单向可控硅 工作温度&#xff1a;-40℃~150℃ BT169单向可控硅&#xff…

AI图像编辑器 Luminar Neo 便携版 Win1.24.0.14794

如果你对图像编辑有兴趣&#xff0c;但又不想花费太多时间学习复杂的软件操作&#xff0c;那么 Luminar Neo 可能就是你要找的完美工具。作为一款基于AI技术的创意图像编辑器&#xff0c;Luminar Neo简化了复杂的编辑流程&#xff0c;即使是没有任何图像处理经验的新手&#xf…

发币流程是什么,需要多少成本?

这是一个专注于Web3相关开发的账号&#xff0c;具体会讲解步骤以及开发方案 偶尔会有科普&#xff0c;有兴趣的可以点右上角关注一下 发币&#xff08;发行数字货币&#xff09;的流程通常涉及技术实现、法律合规、经济模型设计等多个环节&#xff0c;以下是关键步骤的简要说明…

【fork初体验】

文章目录 Linux 实验&#xff1a;深入理解 fork 系统调用一、实验目的二、实验环境三、实验内容与步骤&#xff08;一&#xff09;打印进程的进程 ID 和父进程 ID1. 编写程序2. 编译与运行3. 运行结果 &#xff08;二&#xff09;使用 fork 系统调用创建进程并加入循环语句1. 编…

学习设计模式《六》——抽象工厂方法模式

一、基础概念 抽象工厂模式的本质是【选择产品簇(系列)的实现】&#xff1b; 抽象工厂模式定义&#xff1a;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类&#xff1b; 抽象工厂模式功能&#xff1a;抽象工厂的功能是为一系列相关对象或相互依…

python_BeautifulSoup提取html中的信息

目录 描述&#xff1a; 过程&#xff1a; step one 下载html网页到本地 step two 提取html信息 list_con soup.select(.list-con) [0] li_list list_con.find_all(li) a li.find(span).find(a) title a.get(title) url a.get(href) span li.find(span).find(spa…

今日头条如何查看IP归属地?详细教程与常见问题解答

在当今互联网时代&#xff0c;IP属地信息已成为各大社交平台展示用户真实性的重要标识。今日头条作为国内领先的资讯平台&#xff0c;也提供了IP属地显示功能。那么&#xff0c;今日头条怎么查看IP归属地&#xff1f;本文将详细介绍在今日头条11.9.0版本中如何查看自己和他人的…

【物联网】基于LORA组网的远程环境监测系统设计(机智云版)

基于LORA组网的远程环境监测系统设计(机智云版) 演示视频: 简介: 1.本系统有一个主机,两个从机。 2.一主多从的LORA组网通信,主机和两个从机都配备了STM32F103单片机与 LoRa 模块,主机作为中心设备及WIFI网关,负责接收和发送数据到远程物联网平台和手机APP,两个从机…

制作一款打飞机游戏22:表格导出

编辑器功能扩展 今天&#xff0c;我想让编辑器能够处理一个数组&#xff0c;这是编辑器将要编辑的东西&#xff0c;它只编辑数组。这些区域在后续的不同版本的编辑器中会有不同的含义&#xff0c;但现在我想创建一个模板&#xff0c;能够加载一个二维数组&#xff0c;并将二维…

Linux内核源码结构

目录 Linux内核源码结构 Linux内核版本命名 Linux内核版本选择 内核源码结构 arch&#xff1a;与CPU架构相关的源代码 block:磁盘设备的支持 COPYING文件 CREDITS文件 crypto:加密相关 Documentation: drivers:设备驱动 firmware:固件 fs:文件系统 include:头文件…

72.评论日记

【巫师】中美关税战02&#xff1a;应给人民爆装备&#xff0c;以及普通人如何应对(7条建议)_哔哩哔哩_bilibili 2025年4月26日11:03:31

Websocket自动发送消息客户端工具

点击下载《Websocket自动发送消息客户端工具》 1. 前言 在现代网络应用中&#xff0c;实时通信和即时数据传输变得越来越重要。WebSocket作为一种全双工通信协议&#xff0c;因其高效、实时的特点&#xff0c;被广泛应用于聊天应用、实时数据监控、在线游戏等领域。然而&…

STM32的开发环境介绍

目录 STM32软件环境 Keil软件在线安装 其他软件环境安装 STM32开发的几种方式 STM32寄存器版本和库函数版本 标准外设库的作用&#xff1a; STM32软件环境 STM32 的集成开发环境&#xff08;IDE&#xff09;&#xff1a;编辑编译软件 常见的环境&#xff1a; (1)KEIL&a…