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