逻辑综合——优化电路

对进行时序路径、工作环境、设计规则等进行约束完成之后,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

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253799.shtml

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

相关文章

DOM包裹wrap()方法

DOM包裹wrap()方法 如果要将元素用其他元素包裹起来,也就是给它增加一个父元素,针对这样的处理,JQuery提供了一个wrap方法 .wrap( wrappingElement ):在集合中匹配的每个元素周围包裹一个HTML结构 简单的看一段代码: &…

Verdi 基础教程

一、Verdi 功能 查看设计debugVerdi不能自己产生波形 二、Verdi使用流程 1、Verdi环境配置 .bashrc中配置 export Verdi_HOME$Synopsys_Dir/Verdi2015 #export NOVAS_HOME$Synopsys_Dir/Verdi2015 export PATH$Verdi_HOME/bin:$PATH export LD_LIBRARY_PATH"/opt/Syno…

ida和idr机制分析(盘符分配机制)

内核ida和idr机制分析(盘符分配机制) ida和idr的机制在我个人看来,是内核管理整数资源的一种方法。在内核中,许多地方都用到了该结构(例如class的id,disk的id),更直观的说&#xff0…

MIPI CSI-2学习

CSI(Camera Serial Interface)定义了摄像头外设与主机控制器之间的接口,旨在确定摄像头与主机控制器在移动应用中的标准。 关键词描述 缩写解释CCICamera Control Interface(物理层组件,通常使用I2C或I3C进行通信&…

nand flash坏块管理OOB,BBT,ECC

0.NAND的操作管理方式 NAND FLASH的管理方式:以三星FLASH为例,一片Nand flash为一个设备(device),1 (Device) xxxx (Blocks),1 (Block) xxxx (Pages),1(Page) 528 (Bytes) 数据块大小(512Bytes) OOB 块大小(16Byte…

小白学git2

你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。 首先,登陆G…

CMOS图像传感器——工作原理

一、像素阵列结构 一般像素阵列是由水平方向的行( Row ) 和垂直方向的列(Column)正交排列构成的。像素排列的最基本设计原则是:摄像器件像素排列的坐标,必须在显示的时候能够准确地还原在图像原来的相对位置上。在大多数情况下,每个像素中心线在行的方向和列的方向,即…

追寻终极数据库 - 事务/分析混合处理系统的交付挑战 (3)

挑战:支持多个存储引擎 以下内容并不是新发现:行优化存储适用于OLTP和运营工作负载,而列存储适用于BI和分析工作负载。频繁写入的工作负载适用于行式存储。对Hadoop而言,Hbase适合低延迟工作负载,列式ORC文件或Parquet…

异步FIFO设计(Verilog)

FIFO(First In First Out)是异步数据传输时经常使用的存储器。该存储器的特点是数据先进先出(后进后出)。其实,多位宽数据的异步传输问题,无论是从快时钟到慢时钟域,还是从慢时钟到快时钟域&…

python中RabbitMQ的使用(路由键模糊匹配)

路由键模糊匹配 使用正则表达式进行匹配。其中“#”表示所有、全部的意思;“*”只匹配到一个词。 匹配规则: 路由键:routings [ happy.work, happy.life , happy.work.teacher, sad.work, sad.life, sad.work.teacher ] "#"&am…

时钟切换处理(Verilog)

随着各种应用场景的限制,芯片在运行时往往需要在不同的应用下切换不同的时钟源,例如低功耗和高性能模式就分别需要低频率和高频率的时钟。两个时钟源有可能是同源且同步的,也有可能是不相关的。直接使用选择逻辑进行时钟切换大概率会导致分频…

Angular Elements 组件在非angular 页面中使用的DEMO

2019独角兽企业重金招聘Python工程师标准>>> 一、Angular Elements 介绍 Angular Elements 是伴随Angular6.0一起推出的新技术。它借助Chrome浏览器的ShadowDom API,实现一种自定义组件。 这种组件可以用Angular普通组件的开发技术进行编写,…

卢卡斯定理

卢卡斯定理:解决一类组合数取模问题 A、B是非负整数,p是质数。AB写成p进制:Aa[n]a[n-1]...a[0],Bb[n]b[n-1]...b[0]。 则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0]) modp同余 即:Lucas(n,m,p)c(n%p,m%p)*Luc…

loadrunner中对https证书的配置

1、准备好网站的证书,一般证书是cer格式; 2、因为loadrunner只支持pem格式的证书,所以要将证书转换格式,利用openssl工具;(或者直接让开发提供pem格式的证书)3、得到pem格式的证书之后&#xff…

Datapath综合代码规范(Verilog)

一、一般准则 1、有符号数运算 利用类型“signed”完成有符号数运算,而不是用无符号数模拟有符号数运算。这样可以得到更好的QoR。在资源报告中检查操作数的类型和大小。 2、符号/零扩展 尽量不要手动扩展。verilog利用signed/unsigned会自动完成扩展。这样代码可…

CMOS 图像传感器——Skipping 和 Binning 模式

在通常的CMOS读取方式中,由于像素读取规模的差异,不同的分辨率对应不同的帧率。在通道带宽固定的前提下,想要提高帧率就要考虑是否需要缩小视野(外圈裁切)。若不希望视野缩小,需要减少采样的分辨率。 常用的…

APB协议学习

APB(Advanced Peripheral Bus) 1、APB的概述与特点 APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无…

私有协议栈开发

通信协议从广义上区分,可以分为公有协议和私有协议。由于私有协议的灵活性,它往往会在某个公司或者组织内部使用,按需定制,也因为如此,升级起来会非常方便,灵活性好。绝大多数的私有协议传输层都基于TCP/IP…

数字图像处理——2D降噪

图像降噪处理主要分为2D(空域)与3D降噪(时域/多帧),而2D降噪由于相关的实现算法丰富,效果各异,有着丰富的研究价值。理解2D降噪算法的流程,也对其他的增强算法有很大的帮助&#xff…