转载 关于物理综合优化

Recovery time is the minimum length of time an asynchronous control signal, for example, and preset, must be stable before the next active clock edge. The recovery slack time calculation is similar to the clock setup slack time calculation, but it applies asynchronous control signals.

Removal time is the minimum length of time an asynchronous control signal must be stable after the active clock edge. The TimeQuest analyzer removal time slack calculation is similar to the clock hold slack calculation, but it applies asynchronous control signals.

物理综合优化在老版本QII中是全局设置的,从Quartus II 9.0开始支持对模块(module)、节点(node)等局部进行物理综合优化设置。

随着设计规模越来越大,设计的复杂程度越来越高,外围接口也越来越复杂,逻辑设计的时序收敛的挑战也越来越严峻。在保证代码效率等其他手段的前提下,Altera的QuartusII软件提供一种叫物理综合(Physical Synthesis)的优化手段来提高设计的时序收敛。关于如何提高设计的时序收敛,QII handbook详细介绍了许多办法,这里简单罗列:关键性模块做好规划、好的设计及代码风格、层次化设计方式以及对于目标器件的了解另外就是好的且正确的约束也很重要。

我们看到QuartusII软件中有很多设置,默认的设置都基于“平均效果”,是综合考虑了速度(speed)、面积(area)以及成本(cost)等因素。不同的设计需要不同的设置,从来没有一种最优设置可以符合所有的设计项目。同样物理综合也是这样的一种设置,不同的设计需要进行不同的设置,甚至要考虑是否需要使能。对于设计优化来说,软件还提供一种指导来帮助设计者进行工程项目的设置,即Timing Optimization Advisor

在开始进入正题之前,先搞清楚两个概念物理综合和逻辑综合。首先是逻辑综合,所谓逻辑综合是将HDL描述语言转换成不含布局布线信息且能够映射(map)到物理器件的门电路过程。如下图的转换过程

因为逻辑综合没有包含布局布线的信息,所以对于逻辑综合后的时序信息仅限于转换后的门级电路或者器件内部逻辑单元或者节点间逻辑单元级数等时延信息(这些仅跟具体器件相关,是事先已确定的参数),而对于内部互联时延这时候是无法加以分析的。其次是物理综合,所谓物理综合是通过改变网表的布局(placement)从而或者不错的综合结果。传统设计的时延可能大部分取决于逻辑时延,但是最新的器件设计时延更多取决于内部互联时延。如此一来,节点(nodes)的位置以及各个节点之间的布线(route)就显得非常重要。厂家的综合工具洞悉自己器件的物理特性(比如时序、面积、功耗、布线资源、PLL、RAM及全局信号等等),所以会在不改变设计功能的情况下调整网表的布局或者修改增加部分节点从而达到改变设计性能、设计资源利用率等目的。请记住一点,即设计在布局完之前节点间的时延预估都是毫无意义的。

对于何时使用物理综合,个人建议是在修改代码以及约束等因素等无果的情况下可以开始考虑物理综合。因为物理综合带来性能提高或者面积利用率提高的同时会给你带来编译时间的增加,所以需要你综合考虑衡量。

启动物理综合设计Assignments->Settings->Compilation Process Settings->Physical Synthesis Optimizations,如下图所示

如上图所示,主要分两大部分,一部分用来优化performance,一部分优化area。所谓的effort level这里不做解释。详细介绍各个优化选项之前,先来介绍一下我们之前提到的从QII9.0开始的针对单个模块或节点物理综合的实现。如下图所示,

在Assignment Edtor里的Logic Options可以针对特定的module设置物理综合优化,这种方式非常适合于增量编译设计模式,因为基于团队的设计,有些模块可能设计完成,而有的模块可能还未完成,如果使能全局物理综合优化不但增加编译时间,而且对于未设计完成的模块也根本毫无效果。下面开始具体介绍各个物理综合优化选项:

一、针对性能(performance)的物理综合优化选项

1、Perform Physical synthesis for combinatorial logic

FPGA中的主要逻辑资源是LE或者ALU,组成LE和ALU的除了寄存器以为就是查找表(LUT)。本选项就是优化组合逻辑关键路径所经过的逻辑层数,如下图所示:

上图从左到右转换,使得关键信号critical所经过的路径减少,另外,本选项仅影响相应逻辑单元中的LUT对于寄存器并无影响。

该选项对于Memory Block、DSP Block以及IOE的输入无法改变,对于驱动全局信号也无法改变,另外对于被约束布局与同一个LAB的信号不产生影响。

2、Perform Register Retiming

通过移动寄存器中组合逻辑中的位置来平衡寄存器之间的路径时延,如下图所示

上图左半边,第一个寄存器和第二个寄存器之间逻辑时延为10ns,而第二个和第三个之间组合逻辑时延是5ns,我们考虑在一个时钟周期为9ns的系统中,那么第二个寄存器的建立时间就会出现问题。通过使能该选项调整寄存器位置如右半边所示三个寄存器之间的时延分别是8ns和7ns,虽然关键路径总时延未变,但是系统性能却获得了提升,可以稳定run在9ns的系统中。

我们知道通过加流水(pipeline)也可以解决大组合逻辑延时问题,但是pipeline和register retiming不同,pipeline是通过增加pipeline register来达到目的,同时增加了路径时延,而register retiming只是调整各级之间逻辑位置。当然如果设计中进行了pipeline设计,再使能本选项的时候也会对pipeline增加的register进行retiming。

Register Retiming的例外,  驱动硬逻辑(hard logic)的寄存器、影响时序约束的寄存器、驱动混合信号的寄存器以及被约束位于同一LAB的寄存器等。

3、Perform automatic asynchronous signal pipelining

异步信号时序问题,一般叫做Recovery Timing Issue和Removal Timing Issue,一般多出现在高速时钟域的异步负载(load)和清零(clear)信号上。先来明确两个概念:

Recovery Time:即异步信号在时钟沿到来前必须稳定的最小时间;

Removal Time:即异步信号在时钟沿到来后必须稳定的最小时间。

这两个概念有的类似于同步设计中的建立时间和保持时间。我们来看一个问题,所有的寄存器都有异步复位信号,当异步复位释放的时候,该异步信号很难保证同时到达所有的寄存器,这就有可能导致有些寄存器会“错过”一个时钟沿,那么在这一个时钟周期内这些寄存器的状态就是不可控了,这时就出现了在TimeQuest报告的recovery failure或者removal failure。本优化选项就是通过自动在异步信号路径上插入流水寄存器来改善这些fail path上的recovery time或者removal time问题。如下图所示

4、Perform register duplication

通常FPGA的buffer都允许高扇出net,但是由于每个fan-out的路径不同,所以在某些关键路径上就容易出现时序问题。记住一句话:“Timing failures from fan-out are more often a matter of where than of how many”,最差路径一般都是最远的路径,本选项通过寄存器复制优化长多扇出长路径上的时序。

注意在复制寄存器的时候有时候有必要也会复制一些组合逻辑。

下面来看看本选项的一些例外情况,跨时钟域的寄存器、影响时序约束的寄存器、被约束位于同一个LAB中的寄存器以及被看作Virtual I/O的寄存器。

二、Physical Synthesis Optimizations for Fitting

适用于Fitter阶段的优化手段,其功能就是使得设计优化可以fit进目标器件,其实就是针对面积(area)的优化。

1、 Physical Synthesis for Combinational Logic

即在fitting的时候针对组合逻辑的优化,本选项只会在“no-fit”事件发生的时候才会起作用,尽可能的减少逻辑使用,提高资源使用率。

2、 Logic to Memory Mapping

顾名思义就是在fitting的时候将部分逻辑移到未使用的Memory块里,同样也是在资源紧张和“no-fit”出现的时候该选项才起作用。

时间: 2024-07-30 02:37:10

转载 关于物理综合优化的相关文章

FPGA综合优化

1 速度和面积 在全面优化水平将达到速度和面积RTL要利用逻辑拓扑的优势. 供FPGA由于在后端而言缺乏知识,门级优化.普通情况下更高的速度要求更高的并行性以及更大的面积,可是在某些特殊情况下并非这样.由于FPGA的布局布线具有二阶效应. 直到布局布线完毕.工具才会知道器件的拥堵或者布线的困难,可是这时实际逻辑拓扑已经被提交,假设我们的优化选项设置为速度,那么当实现后器件过于拥挤而无法布局布线时,布局布线工具进而会产生附加逻辑.从而是实际速度更慢.因此当FPGA的资源利用率接近100%时进行面积

转载 50种方法优化SQL Server数据库查询

原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷

【转载】 Spark性能优化:资源调优篇

在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置.资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢:或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常.总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行.因此我们必须对Spark作业的资源使

【转载】前台页面优化全攻略-系列博文

据调查,网页大小在2013年平均增长了32%,平均达到了1.7M,单独的HTTP请求达到96个.这是令人震惊的数字,而且这只是个平均值,有一半的网站会大于这个值.网站也得了肥胖症,而我们这些开发者就是罪魁祸首. 本文转载博客园系列博文,博文如下: 前台页面优化全攻略(一) 前台页面优化全攻略(二) 前台页面优化全攻略(三) 前台页面优化全攻略(四)

[转载]网站前端性能优化之javascript和css——网站性能优化

之前看过Yahoo团队写的一篇关于网站性能优化的文章,文章是2010年左右写的,虽然有点老,但是很多方面还是很有借鉴意义的.关于css的性能优化,他提到了如下几点: CSS性能优化 1.把样式表置于顶部 现把样式表放到文档的< head />内部似乎会加快页面的下载速度.这是因为把样式表放到< head />内会使页面有步骤的加载显示. 注重性能的前端服务器往往希望页面有秩序地加载.同时,我们也希望浏览器把已经接收到内容尽可能显示出来.这对于拥有较多内容的页面和网速较慢的用户来说特

【转载】 Spark性能优化指南——基础篇

前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能复用同一个RDD 原则三:对多次使用的RDD进行持久化 原则四:尽量避免使用shuffle类算子 原则五:使用map-side预聚合的shuffle操作 原则六:使用高性能的算子 原则七:广播大变量 原则八:使用Kryo优化序列化性能 原则九:优化数据结构 资源调优 调优概述 Spark作业基本运行原理 资源参数调优 写在最后的话 前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的

【转载】Spark性能优化指南——高级篇

前言 数据倾斜调优 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数据 解决方案二:过滤少数导致倾斜的key 解决方案三:提高shuffle操作的并行度 解决方案四:两阶段聚合(局部聚合+全局聚合) 解决方案五:将reduce join转为map join 解决方案六:采样倾斜key并分拆join操作 解决方案七:使用随机前缀和扩容RDD进行join 解决方案八:多

转载mysql数据库配置优化

网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据服务器的"状态"进行优化. mysql> show global status; 可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句: mysql> show variables; 一.慢查询  mysql> show var

[转载]阿里云MySQL优化主从同步,降低数据延迟

1. 背景 为了提高系统的可用性和数据保护,MySQL通常采用master-slave的部署结构,简单高效,master和slave之间使用binlog来复制数据. binlog支持statement和row格式,为了保证数据的一致性,通常采用row格式的event.master-slave的结构图如下: 当主库或者主库所在的主机,机房出现异常情况的时候, 进行master和slave主备切换,让slave来提供不间断的服务.主备进行切换最重要的前提就是:slave节点已经apply完毕mast