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

2014-4-9 09:51 2235 15 15 分类: FPGA/CPLD 文集: 所见即所得(WYSIWSG)

7.逻辑单元(Logic Cell)规则

7.1 对单个寄存器逻辑单元(lcell_ff)进行约束

  1. 如果clk端口连接,那么regout端口必须连接
  2. 如果sclr端口连接,那么clk端口必须连接
  3. 如果sload端口连接,那么clk端口必须连接
  4. 如果ena端口连接,那么clk端口必须连接

7.2 对单个组合逻辑单元(lcell_comb)进行约束

  1. Cin端口不连接,要连接必须连接到GND或者连接到另一个lcell_comb的cout端口。如果一个lcell_comb的cin连接到另一个lcell_comb的cout端口,那么该lcell_comb使用的时候其SUMOUT或COUT一定要受到cin端口的影响。
  2. Cout端口必须根据上一条连接,或者保持不连接
  3. Sharein端口可能被连接只有当cin被连接且该lecll_comb的参数shared_arith = on。
  4. 如果sharein连接,它可以连接到GND或者必须由驱动本本lcell_comb的cin端口的lcell_comb的shareout驱动
  5. Shareout端口只有在cout端口连接的时候才能被连接
  6. 当shareout端口连接的时候,它必须驱动被本lcell_comb的cout驱动的同一个lcell_comb的sharein端口
  7. 如果cout/cin连接,但是sharein/shareout没有连接,那么只有dataa,datab,datacdataddataf输入端口可以使用。
  8. 如果参数shared_arith =  on(即sharein/shareout连接),那么只有dataa,datab,datacdataddataf输入端口可以使用,dataf端口只影响该lcell_comb的组合逻辑输出,即combout。
  9. 在一个lcell_comb中,如果一个输入连接有信号,但是该信号依据LUT掩码没有影响至少一个输出,那么这是违法的,作为规则,Quartus II软件将Disconnect这个输入。
  10. LUT掩码依赖一个没有任何信号连接的输入端口也是不合法的。

8ALMLAB规则

         本节讨论一下综合器应当遵守的规则,依据这些规则产生的逻辑单元才具有电气特性,逻辑单元组合进LE和LAB的时候才能形成合法的LAB可布通性。

8.1约束LABs的进位链

         进位链概念省略。如图3所示的连续相连的灰色(偶数)lcell_comb可以组成进位链。长进位链跨多个LAB的时候必须从上一个LAB直接跨入紧邻的下一个LAB,只能从上到下连接。需要注意的是StratixII中的进位链连接时,sharein和shareout的是否连接是可选的。相对比较以前器件结构,在StratixII架构中创建一个非法的进位链是不可能的,因为lcell_comb和lcell_ff无法合并进同一个LE中。

         进位链的起始位置总是固定在一些特定位置的carryin/sharein,fitter可以分配一个进位链从一个LAB的子坐标(sub-location)0或者16开始(因为只有这些子坐标位置才有进位链输入的tie-off。笔者注:什么是“tie-off”)。如果这对于某个特殊设计是一个很大的限制,那么fitter可以插入一个lecll_comb单元来为进位链创建一个固定的carryin/sharein作为该链的起始。这个增加的lcell_comb的所有其他输入端口都未连接(或者都连接到VCC或GND),而只连接carryout端口(shareout端口也可能连接)到另一个lcell_comb的carryin端口。使用这种技术,fitter可以将一个进位链放置在任何LAB子坐标。

         长进位链跨多个LAB的时候必须从上一个LAB直接跨入紧邻的下一个LAB,只能从上到下连接。

         Stratix II的ALM可以实现8输入的算术功能,如果某个使用了整个LAB中8个ALM的链很可能使得这个LAB没有足够的输入端口来实现该链。在这些情况下,fitter会自动将这个链分成小链,并将这些小链只fit进半个LAB。这些小链将使用下面介绍到的“early exit”和“late entry”模块完成LAB之间的连接。

         被放置在LAB子坐标0、4、8、和12位置的链使得其可以从这个LAB的中间离开并从下一个LAB起始的子坐标0继续。这就是所谓的“early exit”模式。链从一个LAB末尾(即子坐标30)离开,使得其有可能从下一个LAB的中间(即子坐标16)进入。这就是所谓的“late entry”模式。Stratix II器件的LAB列只能交替地支持上述模式中的一种,即某个LAB支持哪种模式取决于该LAB的列位置。图6显示了上述内容。

         fitter除了使用上述early exit和late entry模式来打开进位链以外,还会使用通用布线资源(即不使用专用的carryin和carryout连接)在LAB之间连接链。如果fitter这样做了,软件会给出一个相关警告信息。

1.jpg

图6:early exit和late entry跨LAB的进位链

8.2约束进位链到ALM

         进位链意味着一组相邻的ALM被打包在一起,这样就需要满意的ALM设置。比如,进位链的第一个和第二个lcell_comb必须位于同一个ALM中,第三个和第四个必须位于下一个ALM中,等等。图7显示了ALM中的这些进位单元。

1.jpg

图7:聚合进位链进ALM

         图7所示的进位链相邻进位单元必须遵守下列ALM合法规则:

  1. 它们必须处于相同的共享算术模式(即两个进位单元要么sharein/shareout都连接,要么都不连接)。需要注意的是链中不同ALM的LUT可以毫无限制地配置成shared或者non-shared模式,只要同一个ALM中的LUT配置成相同的模式即可。

2.         连接到lcell_comb端口dataa、datab和两个lcell_comb的datac的不同信号数目不能多于4个。这是因为这三个端口中的两个必须由这两个lcell_comb共享。个人觉得应该是dataa和datab在一个ALM中是由其中的两个组合逻辑单元共享,而datac应该上下有不同的datac端口。

         图8显示了一个遵守规则2和一个不遵守的例子。合法的ALM有信号s1、s2、s3和s6连接到ALM的两个lcell_comb的端口dataa、datab和datac上,而非法的ALM有s1、s2、s3、s6、s7和s8六个信号连接到ALM的两个lcell_comb的端口dataa、datab和datac上。

1.jpg

图8:规则2合法和非法实例

8.3约束LAB-wide信号

         好多连接到逻辑单元的信号叫做“LAB-wide”信号,这些信号单独为LAB产生并可以由LAB内的逻辑共享。因此,在一个LAB布置的逻辑单元如果需要过多的LAB-wide信号将是非法的。

         上一节讨论的进位链,虽然进位自己不会有错,当进位链中每个逻辑单元要驱动寄存器单元的时候,这些进位链结构常常会导致比较差的fit结果。我们最好来看这样一个例子,假如一个长度为6的进位链(横跨3个ALM),进位链每个逻辑单元驱动一个寄存器,同时每个寄存器的使用不一样的时钟信号,那么进位链所在的这个LAB最多只能放入这些寄存器中的两个,因为每个LAB最多只支持两个不同的时钟信号。因此,这只会带来比较次优的布局结构,如图9所示。

在Stratix II器件中,连接到lcell_ff的clk,ena,aclr,aload,sclr和sload端口的信号都属于LAB-wide信号。一个lcell_ff端口连接到一个正常信号都消耗一个LAB-wide信号,同一个信号被取反后在LAB中使用也额外消耗一个LAB-wide信号。所以如果LAB中的一个lcell_ff使用clock,而!clock被另一个lcell_ff使用,那么将消耗两个LAB-wide信号。逻辑单元上连接到VCC和GND的端口也需要LAB-wide线。还有一种情况是逻辑单元某些端口处于悬空状态,这种unconnect情况可能需要LAB-wide线,也可能不需要,这取决于端口以及LE的配置。表3显示了lecll_ff中悬空端口的处理情况。

1.jpg

图9:过多LAB-wide被使用的时候地布局影响

表3:端口未连接时是否被认为“used”

1.jpg

下列都是表3定义的重要的规则,用于统计被认为“used”但是却未连接信号的寄存器端口。

  1. 所有lecll_ff上的.clk和.ena信号都成对地组成LE时钟,如图10所示。在任何LAB中,可以有不超过2个不同的时钟对。

l  同一个.clk信号和2个不同的.ena信号可认为是两个不同的寄存器时钟对

l  同一个.ena信号和2个不同的.clk信号可认为是两个不同的寄存器时钟对

1.jpg

图10:形成lcell_ff时钟的时钟和时钟使能组合

  1. 最多只有两个不同的时钟信号可以连接到clk端口

表4显示了一个时钟加时钟使能如何创建时钟对的例子。该例显示了三个的寄存器使用的三组时钟和三组时钟使能,clk(#1)和ena(#1)属于register Cell(#1),clk(#2)和ena(#2)属于register Cell(#2)。没有连接的.ena端口被配置为VCC,如表3指定那样。A,B,C、D,E和F对应信号网络。

表4:时钟和时钟使能如何组成lcell_ff时钟的例子(所有单元的.regout连接)

1.jpg

  1. 最多2个不同的信号可能被连接到.aclr端口。(从表2,未连接的.aclr将会认为是连接到GND)
  2. 最多只有一个不同的信号可以连接到aload端口
  3. 如果任何LAB中的一个lcell_ff使用了alod端口,那么:

l  该LAB中所有使用aload的lcell_ff必须使用和第一个lcell_ff相同的aclr

l  该LAB中所有未使用aload的lcell_ff必须使用相同的aclr

  1. 最多只有一个不同信号能被连接到.sload端口,最多只有一个不同信号能被连接到.sclr端口

l  一个lcell_ff使用sload和(或)sclr只能被放置在一个使用相同sload和(或)sclr或者不使用sload和(或)sclr的LAB中。

表4显示了sload和sclr组合是否被认为“used”的情况,表5则显示了sload和sclr组合被合法布局到一个LAB的例子。两个表中的A和B都是指非GND和非VCC的信号网络。

表5:当sload和sclr被认为“used”的例子

1.jpg

表6:lcell_ff使用sload和sclr的合法和非法组合

1.jpg

注:表5和表6中A和B均为非VCC和非GND的信号网络。

8.3LAB控制信号可布通性约束

这里有一些规则可以确保LAB内所有必需的控制信号能被布局进这个LAB。任何连接到逻辑单元端口的信号网络(非VCC和非GND),如果其未使用全局布线资源,那么它布进LAB,需要占用LAB-wide输入端口。一个信号如果在LAB内正和负都被用到,那么该信号必须被布线两次。如果一个逻辑单元的一个端口连接(或者说可以如表3那样认为连接)到VCC或者GND信号,那么它可能需要也可能不需要占用LAB-wide输入端口,这取决于这个端口是否存在LAB-wide tie-off。表7显示了lcell_ff的哪些端口连接到一个信号或者连接(或者说可以如表3那样认为连接)到VCC或者GND时需要LAB-wide输入端口的情况。

表7:VCC/GND需要布线进LAB的情况(*为不同于Stratix)

1.jpg

         以下是一些重要规则,依据表7定义VCC/GND需要布线资源。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
15
关闭 站长推荐上一条 /3 下一条