引脚数量超过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工具供应商提供的工具相同。
最大的障碍在于将FPGA布局布线工具结果传送给原理图和PCB版图工具。如前所述,对于1,000个引脚以上的单个FPGA器件来说,这一过程可能要花一周的时间。随着并行的FPGA-PCB设计过程的进行,引脚输出变化(典型情况是4到6次)以及缺少完全自动的FPGA工具到PCB原理图符号和几何传送过程,将导致设计进度被打乱。如果PCB设计系统能够理解FPGA的引脚交换和驱动器规则,那么就能在PCB环境中实现这些引脚的变化,并自动反馈给FPGA工具。
为了确保获得正确的性能,需要执行包括PCB上实际布线在内的高速验证。随着数千兆位高速信号的普及,FPGA供应商提供的设计套件必须包含精确的IBIS、Spice或VHDL-AMS模型。有了这些模型以及能够在GHz范围内进行信号分析的PCB验证工具,整个设计的SI和性能就能得到充分验证。
设计小组可能分布在世界上不同的地区,这在大型组织机构中经常见到。这时需要采用内置数据管理方法学使设计师们合作进行FPGA的板上集成,并跟踪任何一个设计师做出的每个修改。因此让这两个工具套件一起工作的关键在于这两个流程所采用的工具之间的紧密接口。
如果设计小组能在FPGA I/O设计阶段就开始前端的合作,那么他们势必就能消除设计的反复。对于适合FPGA和PCB实现的独特并行、交互式设计方法来说这是一种非常迫切的需求,它能最大可能地创建可布线的设计,并一次性地满足SI和时序要求。新的集成化系统设计工具,如明导资讯公司的I/O Designer,就提供了这样一种能够满足这些特殊需求的合作环境。
一致性、自动化和可伸缩性
大多数FPGA I/O设计发生在设计过程中的逻辑抽象级。而实际上为了便于完成PCB设计过程,I/O设计必须在物理级进行。在设计过程中给每套约束指定优先级后形势将变得更复杂。
如果目标只是尽快完成电路板原型,那么引脚输出必须在设计过程早期固定下来。理想情况是,为了满足PCB约束条件并得到最优化的PCB,PCB版图设计师应该在PCB版图设计过程中决定引脚的分配方案,同时自动完成所有的FPGA约束。过去,I/O分配是由FPGA供应商提供的布局布线工具自动完成的,很少考虑到PCB的要求。然而,随着PCB复杂度的提高,这一过程需要得到设计小组的认真管理。因此当前典型的设计过程是在综合和布局布线过程之前就定义好这些前端约束。一般这些约束先被定义在特殊工具约束文件中,再直接传递给综合工具,然后转送给布局布线工具。通过ASCII约束文件定义约束条件时要求设计师在分配I/O端口之前很好地理解FPGA I/O引脚详细内容和分配规则(FPGA I/O约束)。而这一工作一般是由FPGA设计师完成的,但他们可能不太明白PCB版图细节,因此不会最优化这一部分设计。
I/O设计过程是将所选FPGA连接到电路板上所有周边器件时优化引脚分配的第一个步骤。I/O Designer能够解决这一问题。为了最终决定电路板优化过程,I/O Designer将管理和控制PCB版图设计过程中的引脚交换,同时确保这些交换不会破坏任何的FPGA技术规则。I/O Designer能使用户以特殊的方式贯穿整个设计流程,从顶层HDL描述到PCB级符号,甚至到FPGA布局布线工具所需的物理引脚信息。它能背注布局布线、PCB原理图和版图工具中发生的任何FPGA修改。因此这样的工具能为设计HDL和FPGA物理实现的数字工程师以及采用器件符号的电路板设计师提供一个集中统一的环境。这样做具有下面三大优点:
一致性。每当设计师修改引脚输出时,这种变化应该自动传递给FPGA设计用到的其它设计工具。如果PCB设计师决定交换两个引脚,而这种交换又会影响到FPGA的内部布线。I/O Designer能够确保FPGA和PCB流程是一致的。作为一种数据管理工具,它监视每个流程并管理所有发生的变化。它能跟踪PCB的引脚交换,并即时修改相关的文件。I/O Designer会根据HDL设计和引脚I/O分配过程产生FPGA布局布线约束,并根据“后布线”引脚数据创建必要的符号、原理图和分层关系。
自动化。FPGA布局布线过程的自动化以及时序和I/O约束的管理相对比较容易实现。但PCB版图设计过程的全自动化比较困难,因为有许多可变因素需要考虑。在PCB版图设计过程中,设计师要考虑整个电路板的布线,同时又要避免破坏任何时序、SI和可布线性约束条件。因此任何设计用于在电路板上整合FPGA的工具需要重点实现FPGA约束管理的自动化,同时允许设计师在PCB版图设计中能集中精力执行“难以自动完成”的任务。这样的工具还必须有内置的包含了Altera、Actel和Xilinix等供应商提供的必要器件信息的库,以便使约束得到顺利实施以及使FPGA和PCB设计流程中所有工具能够得到良好地整合。I/O Designer可以利用I/O设计信息自动产生必要的符号和原理图,并在I/O分配修改时维护好这些原理图。如果变化来自于FPGA一侧,那么原理图经过简单更新后就可将变化传递给PCB版图工具。
可伸缩性。在设计阶段重新选用规模更大或更小的器件比较常见。由于FPGA器件的每个引脚具有特殊的属性(如前所述可定义为FPGA I/O约束),设计师在分配I/O引脚时需要考虑向更大或更小规模器件转移的可能性。有了I/O Designer后,设计小组在决定切换至更大或更小FPGA时就无需重新分配I/O。由于改变I/O设计经常会造成额外的电路板重新设计工作,因此,如果没有十分的必要应避免这样的操作。
利用FPGA的灵活性
现代FPGA架构包含可编程的I/O,可支持50种以上不同的I/O标准。一般用得比较多的是单端和低电压差分信号(LVDS)I/O标准。虽然FPGA I/O设计是可变的,但它们的灵活性也有一定的限制。现代的FPGA器件架构将引脚集合分组成“引脚组(pin-bank)”。在同一个引脚组中引脚共享参考电压等某些共同的特性,因此通常是可交换的。但在不同引脚组中的引脚可能被指定不兼容的I/O标准,因此会导致不同的情况。
一种情况是为了满足PCB互连性能要求或PCB的可布线性,PCB设计师可能要求修改FPGA I/O引脚。另外一种情况是最初的引脚改变造成了不同I/O标准同时存在的问题,迫使已有信号转移到新的引脚组。最后一种情况是前一种情况下重新定位的信号又造成了不同I/O标准同时存在的问题,迫使现有信号被转移到新的引脚组。
LVDS信号线对主要用于高速信号传输,此时SI问题比较突出。当FPGA器件中的一个信号被赋于LVDS I/O标准时,这个FPGA信号就需要用到FPGA封装中的2个引脚。LVDS信号会改善PCB的性能,但也会产生附加的约束条件。LVDS线对必须:1)长度差在±10%之内;2)在整个走线长度内差分线对保持固定的间距。
FPGA逻辑信号使用太多的LVDS I/O标准会导致使用更大且具有更多引脚的FPGA封装。而不采用LVDS I/O标准意味着产品性能会受到限制,甚至达到许多产品设计小组无法接受的程度。从单个引脚到双引脚I/O标准(或反过来)的轻易改变能力能使整个设计小组使用最少的LVDS I/O信号满足系统性能约束条件。总之,尽量减少LVDS的使用可以降低PCB制造的复杂性和成本。
在I/O Designer等工具中置入I/O引脚组规则(PCB设计师很容易通过直观易用的GUI学会)可以释放PCB设计师的精力,开拓他们的视野,从而让他们更有效地参与FPGA I/O设计过程。在掌握了FPGA I/O的并行FPGA和PCB小组设计、实现了FPGA和PCB设计流程中物理集成的自动化后,设计小组就能充分利用FPGA I/O的灵活性减少PCB布线的拥塞。认真检查现代FPGA架构和它们的用途可以发现很多有趣的事实:
* 在同一引脚组中的引脚很容易实现交换;
* 设计中同一总线内的信号一般都分配到同一引脚组(充分利用引脚的易交换性);
* 对设计中的总线信号来说引脚组并不代表最佳的物理设计。(从图3可以看出,使用相同的引脚组会迫使总线信号在PCB上相互交叉)
通常学会高效地使用多个引脚组可以物理优化FPGA的I/O,并消除总线中的交叉信号,同时也可能减少制造PCB所需的信号层数量,从而达到降低成本的目的。
随着当前高速、高门数、高引脚数FPGA的出现,FPGA设计唯一永恒的主题是不断发生的变化,包括为了满足时序和损耗要求的互连级变化和FPGA本身内部引脚分配阶段的变化。FPGA设计具有的高度灵活性对电路板设计师来说也许是一个最大的梦魇。FPGA公司应该明智地认真检查现有技术,确保今天的FPGA所提供的巨大灵活性和强大功能不会太过火而成为PCB实现的潜在障碍。象I/O Designer这样的工具能够实现PCB布局和验证所需的原理图连接自动化,而且它还能记住哪个信号连接连到了哪个器件引脚,并指示这些引脚如何映射到原始的电路板级总线结构。依靠正确的软件工具以及FPGA和PCB设计并行路径之间的紧密合作,FPGA设计和实现进度就可能节省“周”数量级的时间,从而显著地降低总体成本。