原创 使用QuatusII的物理综合优化

2012-12-3 12:33 6191 10 15 分类: FPGA/CPLD 文集: QuartusII

        物理综合优化在老版本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”出现的时候该选项才起作用。

文章评论5条评论)

登录后参与讨论

用户377235 2013-4-19 14:51

楼主辛苦,对我相当有帮助,万分感激!!!

用户821944 2010-4-1 12:00

却是相当好,对于我当前的工作有很大的指导意义!

用户1383215 2009-11-20 18:55

很好

ash_riple_768180695 2009-11-19 20:31

内容很好,很全面。如果能够给出Quartus手册中对应章节的链接,供大家进一步阅读和参考就更好了。

ilove314_323192455 2009-11-19 15:10

好文章。 综合优化选项的设置确是达到时序收敛的有效的方法之一。
相关推荐阅读
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
coyoo 2024-11-16 13:54
不同ADC采样同一前端模拟信号时转换用时差异分析
概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。系统数字化简介 项目前端...
coyoo 2024-11-10 13:04
ALTERA Cyclone 10器件的使用-7:FPGA片内RAM资源利用率思考
概述 项目使用的FPGA目标器件为Cyclone 10 GX系列规模最大一颗料,由于功能升级增加了功能模块更多,发现器件片内RAM不够使用了。为了探索片内RAM使用的利用率问题,从代码RTL级与编译软...
coyoo 2024-11-10 12:30
转知乎:幽灵般的人体成像技术-PET
幽灵般的人体成像技术——PET - 知乎...
coyoo 2024-11-09 10:26
AD9633默认情况下调试记录(二)
概述 所谓默认情况,即如器件手册中图2所标示那样。对应AD9633的调试,除了涉及到ADC自身,还需要兼顾前端驱动器,系统中AD9633驱动器使用了差分运算放大器,这里不在赘述,笔者已有相关文章论述。...
我要评论
5
10
关闭 站长推荐上一条 /2 下一条