原创 【博客大赛】StratixII之EDA及学术开发功能描述

2014-4-17 12:45 2060 14 15 分类: FPGA/CPLD 文集: 所见即所得(WYSIWSG)

StratixIIEDA及学术开发功能描述

1.概述

         Stratix/Cyclone

 

2.逻辑单元(Logic Cell)描述

在以前的架构中(比如Cyclone),单个LE包括一个组合逻辑和寄存器。对于Stratix II来说,组合逻辑和寄存器被单独分开到两个部分,原语创建的时候也不象CycloneStratix那样,而是通过lcell_comb(组合逻辑部分)和lcell_ffflip-flop/register)分别创建。这和CycloneII的情形有点类似。注意这里的flip-flopregister的意思可以互换。

 

         1显示了Stratix II寄存器逻辑单元完整功能框图,它有八个输入,分别是datainadatasdataclkenasloadsclraloadaclr;同时只有一个输出regout

 

1.jpg

1Stratix II寄存器逻辑单元完整功能框图

 

         2显示了Stratix ii组合逻辑单元完整的功能框图,它有八个输入端口,分别是dataadatabdatacdataddataedatafshareincin,以及四个输出端口,分别是shareoutcoutsumoutcombout

 

1.jpg

2Stratix II组合逻辑单元完整功能框图

 

3.坐标系统和位置约束

1.jpg

3StratixII坐标系统

 

         3显示了Stratix II器件底层坐标系统,坐标标注和Stratix/Cyclone类似,这里不赘述。只是从Cyclone II开始,根据上述LE的结构分析,可以直接单独给lcell_comb或者lcell_ff约束位置了。这在FPGA TDC设计中延时链锁定有一定好处,同时增加了具体的工作量,因为你必须分别约束组合逻辑阵列和寄存器阵列。

 

         可以看到M-RAM占了很大一块,一个基本坐标单元是一个LAB的位置大小。那么一个M-RAM占据的位置相当于3x4=12LAB的面积。每个LAB有(xy)坐标,而其内部的lcell_comblcell_ff又有子坐标,比如lcell_comb_X2_Y5_N4ALTERA的意思是不建议这样按数字从上到下约束组合逻辑单元或者寄存器单元的位置,因为这样常常给fitter来麻烦,最好的办法是仅仅约束LAB的位置。

 

4布线延迟与布线距离以及布线规则的关系

         略,同Cyclone II

5Netlist Recommendations

内容略,同Cyclone II。但是由于逻辑单元端口有差别,所以表1的内容和CycloneII有区别。

1

1.jpg

6.逻辑综合概览和优化

6.1 ALMLAB的相关描述

         第二节描述了Stratix II器件使用的基本逻辑单元,Quartus II开发软件将这些逻辑单元打包进两种结构,即ALMLAB。这两种结构除了单独逻辑单元自己的限制外还有一些额外的限制。后面我们将讨论这些限制规则。

 

         一个ALMAdaptive Logic Module)包括最多2lcell_comb模块和2lcell_ff模块,如图4所示。Note that not all positions in an ALM need necessarily be populated with a logic cell for theALM to be valid.

1.jpg

4:一个ALM中的逻辑单元(Logic Cell

 

         Stratix II的一个LAB中有8ALM,所以一个LAB中有32个逻辑单元(Logic cell)(16lcell_comb16lcell_ff)。如图5所示,32个单元组成了一个LAB,灰色的为lcell_comb,白色的为lcell_ff,每个虚线框表示一个ALM,如前所述位置信息显示是ALM的可能位置信息,用户逻辑电路并不一定在fit后会使用到。

 

         注意图5中灰色所示的所有lcell_comb位置标号都是偶数,而白色所示的lcell_ff位置标号都是奇数,这些信息用户在ChipPlanner或者资源属性编辑器中看得到。如果我们要约束lcell_comblcell_ff位置,那么如图3所示找到这些逻辑单元所在的LAB坐标,然后确定该逻辑单元的位置,比如将一个lcell_comb进行位置约束如lcell_comb_X4_Y6_N0,就是将其约束位于图5所示ALM#1中,将一个lcell_ff进行位置约束如lcell_ff_X4_Y6_N7,就是将其约束位于图5所示的ALM#2中的第二个寄存器。

 

1.jpg

5Stratix II器件中的LAB

6.2 测量综合面积质量

         因为组合逻辑单元(lcell_comb)可以以不同的方式组合起来,形成ALM,所以测量综合面积不是单单象统计创建的逻辑单元那样简单。从面积角度来看,当fitter争取最大密度努力时,综合将创建最少的ALMLAB。我们来看一个很简单例子,806输入lcell_comb单元可能要消耗80ALM(因为一个ALM只有在满足LUT掩码要求的情况下才可能实现两个6输入函数),而1004输入lcell_comb仅消耗50ALM(因为一个ALM总是包含2个四输入函数)。从电路面积角度来说,消耗最小面积的综合效果是最好的。

 

         Altera提供的quartus.ini文件中,包含这样的信息“fit_pack_for_density=on”和“fit_report_lab_usage _stats=on”,这些都将允许精确的面积估算。当这些变量使用的时候,Quartus II软件将试图通过Packing逻辑单元(Logic Cell)进ALMLAB来达到最小化面积,特别是同时Fmax只是很小降低。Quartus II软件同时会给用户打印以下信息:

Info: Number of LABs at the end of packing: 100

Info: Number of LEs at the end of packing: 1600

来说明当它fit电路的时候,最小的ALMLAB使用量。当然当综合算法中的最大电路速度被执行,那么Quratus II软件运行的时候不带上述变量。

         最好的办法是在工程的qsf文件中添加以下的编译设置:

set_global_assignment –name INI_VARS "fit_pack_for_density=on;fit_report_lab_usage_ stats=on”

注意上述约束行中的引号中不能包含任何空格。

6.3获得好的面积及性能建议

         通常来说,最好是使用6输入函数来减少电路深度从而提高电路的性能。在那些不影响电路深度的情况最好是使用6输入函数,这些情况有,如果6输入函数能节约多于两个5或者更少输入函数,或者ALM的掩码支持26输入函数。

 

6.4获得好的Fitting结果建议

1.         使用lcell_ff.sclr应当慎重,Stratix II架构中一个LAB最多只有一个.sclr 。不恰当地使用这个端口,会大幅降低逻辑资源利用率、fitting可能性以及电路速度。举个例子,过去常常在一个逻辑单元里使用.sclr 端口来产生一个5输入函数,如此在实现这个电路的时候可以减少逻辑单元的数量,因此从一个综合角度来看这也许是一个好主意。但是,一旦这个lcell_ff使用了.sclr,那么这个lcell_ff所在的LAB一般无法将其它寄存器逻辑单元打包(Pack)进来,除非这些寄存器逻辑单元都使用同样的.sclr值或者它们的synch_mode=off。这可能在最坏情况下导致逻辑密度大量减少,因为只有一个lcell_ff可以被放置在一个LAB中,而不是16个。所以无原则地使用.sclr会导致非常坏的fitter结果和电路速度,因为fitter在这种情况将lcell_ff组合进LAB的灵活性非常小。

.sclr应该只有在用户电路中实现同步清零的时候才被使用,因为在这种情况下同步清零信号一般产生非常大的扇出。因此,fitter一般不会过分约束同步清零信号。.sclr端口也可以审慎地用于实现其他中等扇出信号,用来减少逻辑单元的使用量。

2.         上述原则同样适用于.sload 端口。同步加载应当会产生高扇出。

3.         时钟使能(.ena)使用起来相对有点宽松,因为每个LAB允许有三个不同的.ena值,这比只有两个.ena值大大提高了fitter应对多.ena值情况的能力。不过,过多的时钟使能(.ena)使得获取高逻辑利用率非常困难。我们发现电路如果使用成千上万的时钟使能,APEX往往逻辑利用率只能达到90%。更谨慎地使用时钟使能,常常能达到99%的逻辑利用率。因此,注意限制不同.ena信号的数量(尤其是低扇出信号)还是值得的。Stratix II比之前器件多出一个时钟使能端口,所以相对要宽松。

4.         LAB的总的布线信号是44个(不包括cinLAB内逻辑单元生成的信号),所以为了更好的布通性,最好使用不超过38个不同的信号布线到一个LAB(不包括clkaclr,它们可以使用全局资源)。

5.         Fitter将会在需要的时候将lcell_comb单元和lcell_ff单元“打包”一起放入一个ALM中。如此,综合阶段没有必要将二者放在一起。然而,需要注意的是单元创建的时候不要对fitter打包lcell_comblcell_ff进同一个LE产生不利影响。

6.         如图4所示的ALM总共包括2lcell_comb2lecll_ff,表2显示了除了逻辑单元自己的限制外的lcell_comb单元组合到一个ALM的一些限制。该表并没有显示出每一种可能的lcell_comb组合,详细的情况可以查看Stratix IILCELL所见即所得相关文档。

2:聚合lcell_comb进入ALM的限制情况

1.jpg

         Lcell_comb类型选择没有意义,只有当使用6输入函数有明确的优势的时候可以采用,比如需要减少电路深度或者电路面积的时候可以选择使用6输入函数。如果没有严格限制一定要使用6输入函数,最好使用更小输入函数,因为如上表所示,输入端口越少,限制也越少。

 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

coyoo 2014-4-9 13:52

在遇到综合或者fit不过的时候可以进行对照检查。
相关推荐阅读
coyoo 2025-01-16 13:07
PET探测器
记录下PET探测器的知识点。所谓探测器,即探测出核医学里的核辐射。人体代谢等反应发生的湮没产生了伽马光子,该伽马光子的能量很强,当前很难直接探测(尽管还存在直接探测的探测器)。所以,更多的时候是间接探...
coyoo 2024-12-25 14:13
ALTERA Cyclone 10器件的使用-8:特定的上电顺序
概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 1...
coyoo 2024-12-22 11:46
AD9218子板在新处理板上表现的问题
概述 新的数据处理板融合了数字和数据处理功能模块,计划采用ADI的4通道串行ADC芯片代替之前的并行ADC。由于初次使用,所以初次设计时预留了AD9218的子板的插槽。 在调试AD9633功能的同时并...
coyoo 2024-12-14 17:15
在Cyclone 10 GX器件上实现高精度TDC探索
概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实...
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读出测试系统需要解...
我要评论
1
14
关闭 站长推荐上一条 /3 下一条