本文介绍了利用现代FPGA架构的先进性能管理PCB复杂性的新方法,即可以减少PCB布线的拥塞,减少设计反复、重新设计的次数以及削减层和元件的数量。同时也概述了利用FPGA的灵活I/O特性降低PCB制造成本的方法。
内置嵌入式处理器、DSP和存储器模块的高端FPGA有替代整个ASIC的趋势。最新的FPGA器件能够专门利用多个通用I/O管脚来创建更宽的配置总线,从而加快编程时间,而这些引脚在配置完成后仍可作为正常的I/O管脚使用。器件复杂度的增加意味着引脚数量的增加,这会提高在PCB上集成这些器件的难度和成本。设计小组必须认真应对这一挑战,以确保使用这些新的可编程器件时不会影响到产品的成本和上市时间。
引脚数量超过1,000的FPGA会给电路板设计带来很大的麻烦。采用人工方式对这么多数量的引脚进行布局和布线是非常低效的,特别是当FPGA设计有稍许修改时会造成费时的电路板设计反复。尽管引脚数量提高了,封装上的引脚间距仍保持不变,但PCB上的引脚密度却有显著的增加。随之产生的布线拥塞意味着大多数PCB设计师必须具备高密度互连(HDI)制造工艺方面的丰富经验。包含高数量引脚FPGA器件的PCB需要更多层的电路板,底线是每增加一层,制造成本增加10%到20%。
理想的I/O标准选择和配置必须考虑PCB的电气特性。最新FPGA器件的高速串行I/O使得FPGA和系统板之间的接口成为特别棘手的问题。例如数千兆位收发器(MGT)技术旨在显著缩短数据路径,同时戏剧性地提高吞吐量。然而这些高速I/O会带来新的挑战。设计师现在不是担心系统时序、上冲/下冲、串扰和正确端接,而是关心介电损耗、趋肤效应和确定性/随机性抖动问题及其对码间干扰的影响。
数千兆位差分信号的信号劣化和衰减主要有三大原因:介电损耗(是长度和板材的函数)、过孔损耗和连接器损耗。根据具体物理位置的不同,每个过孔的损耗将在0.5dB到1dB之间,而总的损耗裕量只不是10dB到15dB之间。因此,大多数FPGA制造商推荐将数千兆位收发器放置在FPGA的四周,以避免打孔到内部信号层。根据FPGA制造商的规范要求,仔细的堆叠规划对这些信号而言至关重要,以便达到仔细校准过的差分阻抗。
为了进一步解决好问题,FPGA I/0设计是灵活的。其它任何硅片技术都无法提供像FPGA器件这样灵活的接口特性。过去由于电路板设计和FPGA设计小组没有取得I/O设计的同步致使许多PCB 需要重新设计的情况时有发生。具有I/O新功能的高引脚数量器件会显著地增加PCB制造成本和整体上市时间,在这种情况下,借鉴本文推荐的解决方案就能够跨越FPGA和PCB设计流程之间的日渐变宽的沟壑。
传统的突破
FPGA设计流程采用的方法基于硬件描述语言,而PCB仍采用原理图输入方法。对复杂度不高的器件来说,传统流程是可以接受的,FPGA和PCB可以在不同的设计环境中分别进行设计。然而,这种传统的FPGA和PCB设计小组独立工作模式带来的是以下这种串行步骤:
1. FPGA设计师定义设计的顶层模块,并建立逻辑信号;
2. FPGA设计师在FPGA综合步骤中锁定一些特殊信号(时钟信号、专门的高速信号);
3. FPGA供应商的布局布线软件自动将其它的FPGA顶层信号分配到物理器件管脚,并创建FPGA引脚映射文件;
4. FPGA小组将引脚映射信息发送给PCB设计小组,同时库管理员创建FPGA器件的定义;
5. PCB设计师创建FPGA的符号并将它引入PCB原理图设计;
6. 根据PCB的原理图进行PCB的布局布线。
将FPGA I/O设计数据传送到PCB流程通常需要人工进行数据的重新输入(介于步骤3和4之间)。每个引脚有很多属性,包括逻辑信号名、物理引脚号、引脚方向、引脚组(引脚交换组)、FPGA器件普通引脚名称和差分信号引脚对等。这样,有一千个引脚的器件意味着PCB库管理员需要无任何差错地输入6,000个数据。为了适合原理图纸张的大小,高引脚数量的符号通常需要被分割成若干部分。这些部分的符号创建和管理工作需要花数天到数周的时间。每次FPGA到信号引脚映射关系的修改所导致的原理图连接更新同样也是一个漫长又容易出错的过程。如果逻辑信号名和物理引脚号在FPGA流程和PCB流程之间没有得到同步,那么放置在PCB上的FPGA就可能无法正常工作。
在典型的FPGA布局布线流程中,I/O设计肯定是要修改的,因为布局布线需要“I/O自由分配”以满足FPGA的时序约束条件。FPGA设计师必须采取额外的步骤锁定I/O设计,以便设计进展时能保持不变。由于在PCB设计时整合高数量引脚FPGA器件的代价非常高,设计小组经常在设计过程的早期就锁定FPGA的I/O设计。I/O设计的锁定在降低FPGA-PCB的整合维护成本的同时,也失去了降低PCB制造成本的机会。许多设计小组很早就锁定了I/O分配,随后却发现为了满足PCB布线或性能要求必须改变FPGA I/O的设计。由于没有充分准备好有效地应对FPGA I/O的变化,这些设计小组通常都造成设计延迟。
两方面的约束条件
约束条件可以分成两个部分,即FPGA约束和PCB版图约束。FPGA约束条件包括设计的时序要求(时序约束)、器件的规模和架构(布线约束)以及应用于I/O缓存的I/O标准(I/O约束)。引入可配置的I/O ASIC宏单元意味着每个器件具有更大的灵活性,可以支持更广泛的信令标准,但这也会造成紧密相邻的器件应采用哪个标准的约束情况。为了最大化这样的灵活性,可以将器件信号分成若干I/O组,从而使分配规则进一步复杂。每一种约束都会影响I/O的分配。
在电路板设计这边,最佳的I/O分配取决于可用布线层的数量和PCB上器件的方位(布线约束)。除了布线约束外,PCB版图必须满足信号完整性(SI)和整个系统设计的时序约束条件(SI和时序约束)。由于这些SI和时序约束会限制电路板上走线的长度、空隙和其它物理参数,因此也会影响I/O端口的引脚位置。下面列出了可能会影响I/O设计的一些约束条件:
* FPGA时序
* FPGA可布线性
* FPGA I/O
* PCB可布线性
* PCB SI和时序
因为这些约束条件是由不同的设计师管理的(例如FPGA、PCB和SI设计师),又会影响到相同的I/O分配过程,因此很难协调。
桥接FPGA-PCB设计流程
FPGA设计师必须满足综合和布局布线约束以符合时序规定要求,而PCB设计师必须在后端约束设计以便满足系统级的时序和SI要求。随着设计复杂性的提高,这些约束在两个设计流程之间可能发生冲突。
第一个需要解决的问题是加强两个设计小组之间的沟通。另外一个关键的课题是确保HDL、FPGA和PCB环境中所使用的工具套件的一致性。基于语言的FPGA HDL描述必须被正确地描述成包含引脚分配数据的原理图符号,并保持与PCB版图工具的正确链接。最后,这两个设计领域必须通过PCB上正确的FPGA引脚分配来保持同步,并以原理图符号和PCB外形数据库来进行表示,即使是不同的设计小组使用完全不同的工具套件也应如此。
例如,为了满足严峻的上市时间目标,一块PCB可能包含多个并行设计的高引脚数FPGA。每个FPGA封装内引脚输出的变化必须连续反馈给PCB原理图和版图设计数据库。PCB的高速SI分析工具必须能够访问I/O收发器的验证模型。为了完整或满足高速时序要求的PCB布线也可能要求FPGA引脚输出的调整。在这双重跟踪过程中,FPGA设计师可以使用来自EDA供应商和FPGA供应商的工具。PCB设计师可以使用另外一家EDA供应商的工具,而这一工具不必与FPGA工具供应商提供的工具相同。