|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
寄存器打包是Quartus II软件布图工具中的一个优化选项,由AUTO_PACKED_REGISTERS控制。所谓寄存器打包就是将寄存器和组合逻辑LUT、DSP、I/O或者RAM块组合到一起。有些器件如果使用第三方综合工具,会将那些扇出到同一个寄存器的组合逻辑单元组合成一个逻辑单元。当然,如果需要,Quartus II的Fitter可以执行额外的寄存器打包来对面积进行优化。
下面我们针对四输入查找表来举例说明寄存器和LUT打包的类型,如图2所示,对于4输入查找表来说,最常见的就是LUT和寄存器一同打包进同一个LE之中;第二种是所谓的寄存器Q端反馈模式,我们看到LUT虽然并未驱动寄存器,但是寄存器的输出反馈到LUT的某个输入端,这也是一种正常打包;第三种属于设计优化时将毫不相干的LUT和寄存器打包在一起;最后一种是有寄存器级联的时候,那么LE中的寄存器用于寄存器级联,那么这些LE中的LUT就处于未使用状态,这是可以考虑将一些独立的LUT打包进来。
图2:寄存器和LUT打包的类型 所有寄存器打包都是在QuartusII的布图工具中实现,对于Stratix II及以后的高级器件,就是将“Comb”和“FF”元件组合进ALM和LAB之中。在布图工具中,这个选项默认是“Auto”,在布局布线的时候将执行总体打包处理,这将有益于设计的时序以及布通性。假如器件已经过满,这时候布图工具会自动执行更积极的打包处理。表1显示了寄存器打包各种设置下对应设计性能以及资源消耗状态的影响因子。
表1:寄存器打包设置影响
寄存器打包设置 | F[sub]max[/sub]相关 | LE资源消耗相关 |
Off |
0.95 |
1.29 |
Normal |
1.0 |
1.0 |
Minimize Area |
0.98 |
0.97 |
Auto(Default) |
1.0 直到器件非常满,然后 0.98 |
1.0 直到器件非常满,然后 0.97 |
从表1可以看到,寄存器打包设置为“Off”的时候,对器件产生非常不利的影响,关闭寄存器打包意味着阻止所有寄存器被打包。阻止90纳米工艺后器件中两个LCELL_FF和LCELL_COMB元素放置在一起,这样会增加逻辑消耗,降低F[sub]max[/sub]以及增加布线压力。对于之前的器件,比如Stratix、Cyclone等LUT和寄存器都使用LCELL元素,所以基本的打包处理已经在综合的时候完成。所以,这里的建议是全局保持寄存器打包的默认设置。
那么现在问题是既然如此,为何布图工具中还要为寄存器打包保留“Off”这个设置呢?这是因为寄存器打包算法并不是完美无缺的,也不能包治百病。保留这个设置,可以使设计者可以针对某些特定节点、模块关闭寄存器打包处理,这样可以帮助提高设计的性能。寄存器打包算法位于整个布图流程的前端,所以我们可以在布图前期对于设计的时序及可能导致的错误有一个粗略的看法。假如我们发现寄存器打包执行错误的权衡,那么我们就能对某些选定的节点或模块关闭寄存器打包。 |
|