热度 15
2014-4-17 12:45
2047 次阅读|
1 个评论
StratixII 之 EDA 及学术开发功能描述 1 .概述 同 Stratix/Cyclone 。 2 .逻辑单元( Logic Cell )描述 在以前的架构中(比如 Cyclone ),单个 LE 包括一个组合逻辑和寄存器。对于 Stratix II 来说,组合逻辑和寄存器被单独分开到两个部分,原语创建的时候也不象 Cyclone 和 Stratix 那样,而是通过 lcell_comb (组合逻辑部分)和 lcell_ff ( flip-flop/register )分别创建。这和 CycloneII 的情形有点类似。注意这里的 flip-flop 和 register 的意思可以互换。 图 1 显示了 Stratix II 寄存器逻辑单元完整功能框图,它有八个输入,分别是 datain 、 adatasdata 、 clk 、 ena 、 sload 、 sclr 、 aload 和 aclr; 同时只有一个输出 regout 。 图 1 : Stratix II 寄存器逻辑单元完整功能框图 图 2 显示了 Stratix ii 组合逻辑单元完整的功能框图,它有八个输入端口,分别是 dataa 、 datab 、 datac 、 datad 、 datae 、 dataf 、 sharein 和 cin ,以及四个输出端口,分别是 shareout 、 cout 、 sumout 和 combout 。 图 2 : Stratix II 组合逻辑单元完整功能框图 3 .坐标系统和位置约束 图 3 : StratixII 坐标系统 图 3 显示了 Stratix II 器件底层坐标系统,坐标标注和 Stratix/Cyclone 类似,这里不赘述。只是从 Cyclone II 开始,根据上述 LE 的结构分析,可以直接单独给 lcell_comb 或者 lcell_ff 约束位置了。这在 FPGA TDC 设计中延时链锁定有一定好处,同时增加了具体的工作量,因为你必须分别约束组合逻辑阵列和寄存器阵列。 可以看到 M-RAM 占了很大一块,一个基本坐标单元是一个 LAB 的位置大小。那么一个 M-RAM 占据的位置相当于 3x4=12 个 LAB 的面积。每个 LAB 有( x , y )坐标,而其内部的 lcell_comb 和 lcell_ff 又有子坐标,比如 lcell_comb_X2_Y5_N4 。 ALTERA 的意思是不建议这样按数字从上到下约束组合逻辑单元或者寄存器单元的位置,因为这样常常给 fitter 来麻烦,最好的办法是仅仅约束 LAB 的位置。 4 . 布线延迟与布线距离以及布线规则的关系 略,同 Cyclone II 5 . Netlist Recommendations 内容略,同 Cyclone II 。但是由于逻辑单元端口有差别,所以表 1 的内容和 CycloneII 有区别。 表 1 : 6 .逻辑综合概览和优化 6.1 ALM 和 LAB 的相关描述 第二节描述了 Stratix II 器件使用的基本逻辑单元, Quartus II 开发软件将这些逻辑单元打包进两种结构,即 ALM 和 LAB 。这两种结构除了单独逻辑单元自己的限制外还有一些额外的限制。后面我们将讨论这些限制规则。 一个 ALM ( Adaptive Logic Module )包括最多 2 个 lcell_comb 模块和 2 个 lcell_ff 模块,如图 4 所示。 Note that not all positions in an ALM need necessarily be populated with a logic cell for theALM to be valid. 图 4 :一个 ALM 中的逻辑单元( Logic Cell ) Stratix II 的一个 LAB 中有 8 个 ALM ,所以一个 LAB 中有 32 个逻辑单元( Logic cell )( 16 个 lcell_comb 和 16 个 lcell_ff )。如图 5 所示, 32 个单元组成了一个 LAB ,灰色的为 lcell_comb ,白色的为 lcell_ff ,每个虚线框表示一个 ALM ,如前所述位置信息显示是 ALM 的可能位置信息,用户逻辑电路并不一定在 fit 后会使用到。 注意图 5 中灰色所示的所有 lcell_comb 位置标号都是偶数,而白色所示的 lcell_ff 位置标号都是奇数,这些信息用户在 ChipPlanner 或者资源属性编辑器中看得到。如果我们要约束 lcell_comb 和 lcell_ff 位置,那么如图 3 所示找到这些逻辑单元所在的 LAB 坐标,然后确定该逻辑单元的位置,比如将一个 lcell_comb 进行位置约束如 lcell_comb_X4_Y6_N0 ,就是将其约束位于图 5 所示 ALM#1 中,将一个 lcell_ff 进行位置约束如 lcell_ff_X4_Y6_N7 ,就是将其约束位于图 5 所示的 ALM#2 中的第二个寄存器。 图 5 : Stratix II 器件中的 LAB 6.2 测量综合面积质量 因为组合逻辑单元( lcell_comb )可以以不同的方式组合起来,形成 ALM ,所以测量综合面积不是单单象统计创建的逻辑单元那样简单。从面积角度来看,当 fitter 争取最大密度努力时,综合将创建最少的 ALM 和 LAB 。我们来看一个很简单例子, 80 个 6 输入 lcell_comb 单元可能要消耗 80 个 ALM (因为一个 ALM 只有在满足 LUT 掩码要求的情况下才可能实现两个 6 输入函数),而 100 个 4 输入 lcell_comb 仅消耗 50 个 ALM (因为一个 ALM 总是包含 2 个四输入函数)。从电路面积角度来说,消耗最小面积的综合效果是最好的。 在 Altera 提供的 quartus.ini 文件中,包含这样的信息“ fit_pack_for_density=on ”和“ fit_report_lab_usage _stats=on ”,这些都将允许精确的面积估算。当这些变量使用的时候, Quartus II 软件将试图通过 Packing 逻辑单元( Logic Cell )进 ALM 和 LAB 来达到最小化面积,特别是同时 Fmax 只是很小降低。 Quartus II 软件同时会给用户打印以下信息: Info: Number of LABs at the end of packing: 100 Info: Number of LEs at the end of packing: 1600 来说明当它 fit 电路的时候,最小的 ALM 和 LAB 使用量。当然当综合算法中的最大电路速度被执行,那么 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 的掩码支持 2 个 6 输入函数。 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 个(不包括 cin 和 LAB 内逻辑单元生成的信号),所以为了更好的布通性,最好使用不超过 38个 不同的信号布线到一个 LAB (不包括 clk 和 aclr ,它们可以使用全局资源)。 5. Fitter 将会在需要的时候将 lcell_comb 单元和 lcell_ff 单元“打包”一起放入一个 ALM 中。如此,综合阶段没有必要将二者放在一起。然而,需要注意的是单元创建的时候不要对 fitter 打包 lcell_comb 和 lcell_ff 进同一个 LE 产生不利影响。 6. 如图 4 所示的 ALM 总共包括 2 个 lcell_comb 和 2 个 lecll_ff ,表 2 显示了除了逻辑单元自己的限制外的 lcell_comb 单元组合到一个 ALM 的一些限制。该表并没有显示出每一种可能的 lcell_comb 组合,详细的情况可以查看 Stratix II 的 LCELL 所见即所得相关文档。 表 2 :聚合 lcell_comb 进入 ALM 的限制情况 Lcell_comb 类型选择没有意义,只有当使用 6 输入函数有明确的优势的时候可以采用,比如需要减少电路深度或者电路面积的时候可以选择使用 6 输入函数。如果没有严格限制一定要使用 6 输入函数,最好使用更小输入函数,因为如上表所示,输入端口越少,限制也越少。