一般较好的方法是在综合过程中通过时序的一些约束让对应的工具自动分配,但是从研发的时间段上来考虑这种方法往往是不可取的,RTL验证与验证板设计必须是同步进行的,在验证代码出来时验证的单板也必须设计完毕,也就是管脚的分配也必须在设计代码出来之前完成。所以,管脚的分配更多的将是依赖人,而非工具,这个时候就更需要考虑各方面的因素。
综合起来主要考虑以下的几个方面:
1、 FPGA 所承载逻辑的信号流向。
IC验证中所选用的 FPGA 一般逻辑容量都非常大,外部的管脚数量也相当的丰富,这个时候就必须考虑到 PCB 设计时的布线的难度,如果管脚的分配不合理,那么有可能在PCB 设计时出现大量的交叉的信号线,这给布线带来很大的困难,甚至走不通,或者是即便是布线走通了,也有可能由于外部的延时过大而不满足时序方面的要求。所以在管脚分配前对 FPGA 工作的环境要相当的熟悉,要对其中的信号来自哪里去向何方非常的清楚,这就按照连线最短的原则将对应的信号分配到与外部器件连线最近的BANK中
2、 掌握 FPGA 内部 BANK 的分配的情况。
现在 FPGA 内部都分成几个区域,每个区域中可用的 I/O 管脚数量各不相同。在 IC 验证中都是采用了 ALTERA 与 XILINX系列的 FPGA ,这两个厂商的 FPGA中内部BANK的分配有一定的差异,这可以在设计中查阅相关的手册。下面与 ALTERA 中 Stratix II系列的 FPGA 内部 BANK 的分配为例来进行说明。
图中详细说明了 FPGA 内部 BANK 的分配情况和每个 BANK 中所支持的 I/O 标准。根据 FPGA 中内部 BANK 的分配的情况,同时结合图 1 中信号的流向也就可以大体固定FPGA 在单板中的方向,同时按照就近的原则将相关的信号分配到相关的 BANK 中,这样的方法可以完成一般信号的分配。
3、 掌握所选 FPGA 每个 BANK 所支持的 I/O 标准。
从图 2 中可以看出 FPGA 内部的每个 BANK 所支持的 I/O 的标准不尽相同,所以管脚的分配时要将支持相同标准的管脚都集中到一个 BANK 中,因为 FPGA 中同一个BANK一般不同时支持两种 I/O 标准,当然也有例外,这就需要查阅相关 I/O 标准所要求的工作条件。
4、 关注特殊信号的管脚的分配
这里的特殊信号主要是指时钟信号与复位信号,或者是一些要求驱动能力较高的信号。时钟信号一般都是要求分配到全局的时钟管脚,这样获得的时间的延迟将是最小的,驱动也最强。复位信号因为要求同步性好驱动的能力强,所以一般的情况下也会从全局的时钟管脚送入。 在分配时钟时,根据时钟的多少分配的策略差别很大,也需要重点关注,这需要查阅相应的手册看哪些时钟分别能到达哪些区域,一般的时钟都是差分时钟,这个时候如果所用的不是差分时钟就需要注意 P 端与 N 端一般不能同时分配给不同的时钟信号。如下图所示 XILINX 系列的 FPGA 中成对的时钟如果是同时采用那么就不能同时到达相同的区域,因为到达相同区域的时钟线只有一根。
所以在时钟较少时最好成对的P和S不要同时使用,而是只是选择P或者是N这样就不会出现冲突的情况。
5、 兼顾信号完整性的考虑。 由于在分配中常常会出现总线分配的情况,同时大量的总线又有可能常常是同时翻转,这样就会带来了一系列信号完整性的问题,所以在管脚分配时大量同时翻转的信号尽量分开。