逻辑综合——优化电路

2023-11-07

对进行时序路径、工作环境、设计规则等进行约束完成之后,DC就可以进行综合、优化时序了,DC在优化过程中主要的策略将在下面进行说明。然而,当普通模式下不能进行优化的,就需要我们进行编写脚本来改进DC的优化来达到时序要求。

DC进行优化的目的是权衡timing和area约束,满足用户对功能、时序和面积的要求。

DC优化有很多策略,包括对数据通道的优化,对状态机的优化,对布尔逻辑的优化等。

一、creating group path

默认情况下,DC根据不同的时钟划分path group。但如果设计中存在复杂的时钟,复杂的时序要求或者复杂的约束,用户可以将所关心的几条关键路径划分为一个path group,指定DC专注于改组路径的优化。也可以对不同的路径组设置不同的权重,权重值从0到100。

默认情况下,DC只优化关键路径,即负SLACK最差的路径,如果在关键路径附近指定一个范围,那么DC会优化指定范围内的路径。由于优化的路径越多,DC运行时间越长。一般范围设定为时钟周期的10%。

二、high-effort compile

high-effort compile能够让DC更加努力地达到所约束地目标,该措施在关键路径上进行重新综合,同时对关键路径周围地逻辑进行了restructure和remap。

high-effort指令有两种:

  • compile ultra command:附带两个option,这两个option分别包含一些脚本,提供额外地时序和面积地优化。option为:area_high_effort_script option和timing_high_effort_script option。
  • compile command:附带一个option,map_effort -high option。

High effort对关键路径地优化包括逻辑复制(Logic Duplication)和映射为大扇入的门单元(Mapping to Wide_Fanin Gates)。

此外,incremental指令也可以提高电路优化的性能。如果电路在compile之后不满足约束,通过incremental也许能够达到要求的结果。incremental指令只进行门级的优化,而不是逻辑功能级,会导致大量的计算时间,但是对于将最差的负slack减为0,这是最有效的办法。 

为了在使用incremental指令时,减少DC的运算时间,可以将满足时序要求的模块设置为dont_touch属性。

dont_touch noncritical_blocks

对于有很多违例逻辑模块的设计,通常incremental最有效。

compile -map_effort high -incremental_mapping

  三、gate-level optimizations

 

四、Automatic Ungrouping

Ungrouping 取消设计中的层次,移除层次的边界,并且允许DC Ultra通过减少逻辑级数改进时序,以及用过共享资源减小面积。常见指令如下:compile_ultra,compile -auto_ungroup

compile会提供两种策略,包括:delay-based auto-ungrouping, area-based auto-ungrouping。

五、adaptive retiming

如果在逻辑综合过程中发现设计的流水线划分不平衡,就可以使用retiming策略,在时序路径上前后移动寄存器,以提高电路的时序性能

由上图所示,retiming可能会对面积产生影响,则如果有违例的路径,则调整寄存器的位置;如果没有违例的路径,则可以用来减少寄存器的数量。

DC在移动寄存器的优化中,只能对有相同约束的寄存器进行调整,如果两个寄存器约束不同,则不能一起移动。移动后的寄存器在网表中的名字通常带有一个R的前缀和一个系列号。

retiming的策略不能和compile_ultra的以下option一起使用:-incremental -top -only_design_rule

六、High-level optimization and datapath optimization

七、verifying functional equivalence

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

逻辑综合——优化电路 的相关文章

  • [Typescript]基础篇之 String 对象

    基础篇之 String 对象 String 对象简介 与 string 区别 String 定义 属性 方法 属性的使用 方法的使用 lastIndexOf localeCompare replace search slice split
  • matlab学习笔记1

    1 常见用法 1 创建匿名函数 返回该函数句柄 输入参数 表达式 fun x 100 x 2 x 1 2 2 1 x 1 2 定义了一个函数 2 给函数名取别名 函数名 还有其他用法 可参考 https blog csdn net kaev
  • Altium Designer 20中创建网络类、隐藏网络连线

    我们平时在PCB布局的时候不需要电源和地的连线 我们只需要信号的流向 所以我们需要添加一个电源类 来隐藏电源和地的连线 那么 我们如何创建一个类呢 Step 01 使用快捷键DC 调出对象类浏览器 Step 02 Net Classes右击
  • 3W字长文总结PyTorch中常用的函数

    quad quad PyTorch基本函数更新 quad q
  • 程序开发性能调优之如何降低CPU使用率。

    单核的CUP就100 双核的就60 这谁受的了 咋调都不行 我把所有的效果都关了 还不行 连声音都关了 就剩个窗口模式了 他照样100 咋整啊 改用静态的方式的确是能够大大降低数据库的存取频率 进而降低CPU的使用率 依你所表述的情况来看
  • 谈谈softmax中常出现的温度系数 T (τ)

    2022 4 1 今天再回首来看这篇文章 发现自己写的非常局限 并且基本是在拾人牙慧 缺乏自己的思考与提炼 在阅读了更多文章和做实验进行一些思考之后 重写了这篇博客 主要从对比学习 知识蒸馏 分类训练来谈谈自己对于温度系数的理解 前因 许多
  • [前端]ztree树形菜单在dialog中应用时遇到的坑

    前言 好久没更新了 最近工作时遇到这样一个坑 可苦恼死我了 如果你们遇到同样的问题 可参考一下 同一个组件 也就是dialog中含有ztree 多个地方同时调用 第一次在一个页面打开 ztree可以正常渲染出数据 在第二个页面打开后 ztr
  • (2)STM32+ESP8266+手机网络助手实现AP模式通信

    文章目录 1 实验目的及资源 1 1 目的 1 2 资源 2 串口调试wifi模块 2 1 接线 2 2 AT指令测试 2 3 与手机app通信 3 STM32通过wifi与手机app通信 3 1 使用资源 3 2 串口3初始化 3 3 e
  • git pull origin master 时, 遇到 fatal: refusing to merge unrelated histories 230626

    git pull origin master 时 遇到 fatal refusing to merge unrelated histories 230626 解决办法 加 allow unrelated histories allow un
  • 设计模式(1)-工厂模式

    工厂模式可以将其分为三种 1 简单工厂模式 2 工厂方法模式 3 抽象工厂模式 下面我们一个一个来说 一 简单工厂模式 简单工厂模式 或称静态工厂方法模式 是类的创建模式 简单工厂模式是由一个 工厂对象根据收到的消息决定要创建哪一个类的对象
  • 利用GitHub Actions实现将GitHub代码同步到Gitee

    利用 Github Action 实现将 Github 上面的代码同步到 Gitee 中 同步的原理是利用 SSH 公私钥配对的方式拉取 Github 仓库的代码并推送到 Gitee 仓库中 所以我们需要以下几个步骤 生成 SSH 公私钥
  • 数组实现队列(详细)

    我们都知道 队列是一种先进先出的数据结构 每当有人问你队列是什么 你的回答就是 一种先进先出的数据结构 当然这样的回答也是完全没有错的 它就是一种先进先出的数据结构 为什么我们不能描述的多一点呢 更详细一点 下面我们就来详细的描述一下队列
  • 纠错输出编码(Error-Correcting Output Codes: ECOC)

    最近在利用Error Correcting Output Codes做论文 发现网上没有一种讲的比较清楚的 那我今天就花点时间大致上讲一下这种方法 最初提出ECOC方法的是如下的文章 Solving Multiclass Learning
  • 简述sql注入中万能密码的原理

    进行SQL注入的原理就是将特殊输入作为参数传入web程序 从而欺骗服务器执行信息查询功能 而万能密码则是利用sql库中运算符的优先级使得所传入数据库查询语句恒为true的SQL语句 1 用户登录时 后台执行的数据库查询操作 SQL语句 是
  • GIT 常用命令整理

    常用git命令 欢迎大家参考 1 git介绍 git与svn一样都是基于仓库来管理代码的 不过git的仓库在客户端和服务端都是存在的 我们通常都是在本地进行代码commit 然后再提交到远端服务器仓库的 而svn的话 差不多相当于大家一群人

随机推荐

  • 利用Jmeter做接口测试(功能测试)全流程分析

    利用Jmeter做接口测试怎么做呢 过程真的是超级简单 明白了原理以后 把零碎的知识点填充进去就可以了 所以在学习的过程中 不管学什么 我一直都强调的是要循序渐进 和明白原理和逻辑 这篇文章就来介绍一下如何利用Jmeter做接口测试的流程
  • Maven锦集:Linux/Windows环境安装配置

    前言 Maven在日常开发中 显得尤为重要 比如 RocketMQ的运作 就需提前配置好Maven 一起学习在Linux或Windows不同环境安装和配置Maven 本文以Maven3 8 6为例 温馨提示 如果你本机安装有多个Linux版
  • ROC,AUC及其基于Sklearn的实现

    ROC AUC及其基于Sklearn的实现 ROC和AUC的概念 sklearn的实现 from sklearn metrics import roc curve auc 多分类问题的ROC绘制 代码实现sklearn官方文档 API文档
  • Python之定时器的使用

    python中的定时器的使用 一 必须引入库 import threading 引入库 二 上代码 usr bin python coding UTF 8 import threading 引入库 def name timer print
  • 命令登陆mysql数据库_命令操作Mysql数据库

    MySql中添加用户 新建数据库 用户授权 删除用户 修改密码 注意每行后边都跟个 表示一个命令语句结束 1 新建用户 1 1 登录MYSQL gt mysql u root p gt 密码 1 2 创建用户 登录mysql后创建新用户 后
  • Android屏幕适配全攻略

    Android屏幕适配出现的原因 在我们学习如何进行屏幕适配之前 我们需要先了解下为什么Android需要进行屏幕适配 由于Android系统的开放性 任何用户 开发者 OEM厂商 运营商都可以对Android进行定制 修改成他们想要的样子
  • 2020运营商SDN和NFV的投入超200亿美元

    近两年 在网络领域最火热的非软件定义网络SDN和网络功能虚拟化NFV莫属 并且可以预计 在未来的一段时间内 SDN和NFV都将成为网络世界的 主角 其中SDN将让网络具备可灵活调配资源的能力 从而提高网络利用率 并降低网络服务成本 是未来新
  • 复现ThinkPHP5 5.0.23远程代码执行漏洞

    访问 index php s captcha页面 会出现如下报错 执行whoami 查看当前目录 method construct filter system method get server REQUEST METHOD pwd 写入一
  • 最大公约数和最小公倍数问题

    等差数列 蓝桥杯192 gcd问题 题目描述 数学老师给小明出了一道等差数列求和的题目 但是粗心的小明忘记了一 部分的数列 只记得其中 N 个整数 现在给出这 N 个整数 小明想知道包含这 N 个整数的最短的等差数列有几项 思路 求出每一项
  • Web学习笔记4:html初级篇-基础标签(1)

    话接上次 一 基本框架 在html语言中 也会有所谓的基本框架 我们来看一下 我们来一个一个解释 首先 我们要明确一点 框架中的标签都是一对的 这是什么意思 我们可以看到 在框架中有和 有和 有和 这些 只要是中间的文字一样 且标签形式为前
  • nginx中斜杠(/)详解

    本文主要介绍了nginx中斜杠 详解 配置location proxy pass时 加 与不加 的区别 文中通过示例代码介绍的非常详细 具有一定的参考价值 感兴趣的小伙伴们可以参考一下 不知大家日常在nginx配置时 是不是会对是否加斜杠充
  • 练习:字符串统计(坑:f‘string‘报错)

    练习 字符串统计 今天刷到字符串统计的题目 能看懂了 用自己的代码也来实现一次 题目 代码实现 re代码实现 f str 报错 我的博文推荐 练习题目 回首页 代码运行效果 python代码 如果从语句注释不能清楚作用 请评论区留言指教和探
  • android中的UI视图更新不能放在子线程中操作

    surfaceview不能再子线程里更新 需要通过Handler更新
  • 部署Node节点 配置kubelet证书自动申请 CSR、审核及自动续期

    k8s1 18 8版本 kubelet首次启动流程 第一次启动时没有证书如何连接 apiserver 这个问题实际上可以去查看一下 bootstrap kubeconfig 和 token csv 得到答案 在 apiserver 配置中指
  • vite+vue+cesium搭建

    vite vue cesium搭建 学习教程 https www bilibili com video BV1X44y1x7J2 p 1 npm install g yarn npm安装yarn yarn v 查看yarn版本 cmd Wi
  • 服务器 分布式 虚拟化,「云计算」云计算的两大特性:虚拟化、分布式

    云计算技术出现以后 它会加速电信和互联网业务的融合 这个融合除了技术和运营方式的融合 或者创新模式的转变 主要是电信业务网络的全IP化和宽带化的发展 相互之间的渗透趋势越来越明显 借鉴互联网云计算发展思路 可以将电信网络现在的很多资源 包括
  • 系统提示缺少xinput1_3.dll怎么办?

    我们在使用电脑的过程中 总会遇到一些dll文件丢失的情况 大概是因为系统的内部组件受损或者是出现了某种冲突引起的 比如系统提示xinput1 3 dll丢失要如何解决呢 缺少xinput1 3 dll丢失怎么修复 1 出现如下的窗口提示 不
  • 【数据结构-队列】阻塞队列

    欢迎来到我的博客 很高兴能够在这里和您见面 希望您在这里可以感受到一份轻松愉快的氛围 不仅可以获得有趣的内容和知识 也可以畅所欲言 分享您的想法和见解 推荐 kuan 的首页 持续学习 不断总结 共同进步 活到老学到老 导航 檀越剑指大厂系
  • c++中 string 和 int 类型转换

    一 int 类型转换为 string 类型 示例 include
  • 逻辑综合——优化电路

    对进行时序路径 工作环境 设计规则等进行约束完成之后 DC就可以进行综合 优化时序了 DC在优化过程中主要的策略将在下面进行说明 然而 当普通模式下不能进行优化的 就需要我们进行编写脚本来改进DC的优化来达到时序要求 DC进行优化的目的是权