前言
对于需要在PCB板上使用大规模FPGA器件的设计人员来说,I/O 引脚分配是必须面对的众多挑战之一。由于众多原因,许多设计人员发表为大型FPGA 器件和高级BGA封装确定I/O引脚配置或布局方案越来越困难。但是组合运用多种智能I/O规划工具,能够使引脚分配过程变得更轻松。在PCB上定义FPGA 器件的I/O引脚布局是一项艰巨的设计挑战,即可能帮助设计快速完成,也有可能造
成设计失败。 在此过程中必须平衡FPGA和PCB两方面的要求,同时还要并行完成两者的设计。 如果仅仅针对PCB或FPGA进行引脚布局优化,那么可能在另一方面引起设计问题。为了解引脚分配所引起的后果,需要以可视化形式显示出PCB布局和FPGA物理器件引脚,以及内部FPGA I/O点和相关资源。不幸的是,到今天为止还没有单个工具或方法能够同时满足所有这些协同设计需求。然而,可以结合不同的威廉希尔官方网站
和策略来优化引脚规划流程并积极采用Xilinx® PinAhead威廉希尔官方网站
等新协同设计工具来发展出一套有效的引脚分配和布局方法。 赛灵思公司在ISE™ 软件设计套件10.1版中包含了PinAhead。赛灵思公司开发了一种规则驱动的方法。首先根据PCB 和FPGA设计要求定义一套初始引脚布局,这样利用与最终版本非常接近的引脚布局设计小组就可以尽可能早地开始各自的设计流程。如果在设计流程的后期由于PCB布线或内部FPGA性能问题而需要进行调整,在采用这一方法晨这些问题通常也已经局部化了,只需要在PCB或FPGA设计中进行很小的设计修改。
步骤1: 评估设计参数
那么,从哪里开始呢? 首先应当尽早制定I/O分配策略。 但没有优化工具或完整的网表,完成这一任务可能很困难。
首先,让我们先回答几个问题来确定PCB物理参数和限制:
PCB板有几层、走线宽度以及过孔尺寸多大?
PCB参数对可使用的FPGA封装类型( 如BGA) 有限制吗?
PCB上有没有FPGA必须使用的固定接口位置? 其它芯片、连接器或布局限制?
哪些高速接口需要特别关注?
能否将布局策略可视化,从而保证最短互连?
你会发现画一张PCB布局图很有帮助。PCB布局图上应当包括所有主要元器件以及关键接口和总线,从而可以帮助确定最佳的FPGA引脚分配。 请注意将元器件画在PCB板的实际安装面上。 标注出需要特别关注的接口,如高速总线和差分对( 如下图)。
下一步,检查FPGA器件的布局来了解芯片上的物理资源所在。 列出设计中使用的不同电压和时钟,开始隔离设计需要的接口。 然后确定设计是否使用特殊的I/O接口资源,如千兆收发器(GT)、BUFR、IODELAY 以及数字时钟管理器。这些资源可能需要将有关的I/O 引脚布署得尽量互相靠近。现在需要确定设计中使用的PowerPC™、DSP48和RAM16等FPGA资源的位置。 将连接到I/O 组的任何相关I/O尽量置于尽相关资源最近的地方。 然后看一下能否将某些I/O信号组合到接口,这对于引脚分配很有帮助。 最后,确定FPGA的配置模式。
步骤2: 定义引脚布局要求
一旦了解了主要的FPGA接口并创建了物理布局的原型,就可以定义引脚布局了。有些设计人员喜欢使用包含所有I/O信号数据表来保持与引脚的对应。你可以按电压、时钟、接口或总线对它们进行分组。 这一方法确实非常有用,因为它可帮助你将信号组合成组,从而在分配引脚时可以按组进行。 这一阶段,你还会发现为了实现最优PCB布线,有些关键接口必须置于器件的某个边,或者利用外部物理引脚。
在考虑到FPGA和PCB要求并确定了主要的接口位置以后,下一步是根据所有这些条件将引脚分配给I/O组。 这也是真正开始工作的地方。在当前的设计流程中,引脚分配时一项耗费时间的任务,在解决任何性能和信号完整性问题的过程中可能会涉及许多尝试和错误。传统上,设计人员都是徒手画图来完成这项任务的,因为EDA 和芯片供应商没有提供帮助设计人员将FPGA和PCB引脚布局可视化的工具。但现在赛灵思公司提供了相应的工具。在ISE Foundation™ 软件工具10.1 版本中包含的PlanAhead Lite是PlanAhead™ 设计、分析和平面布局工具的简化版。 其中包括的针对PCB和 FPGA设计的PinAhead 的工具使得I/O引脚配置更为容易。这里我们不打算详细介绍该工具的所有细节,而只是看一下如何将其用于I/O引脚分配。
步骤3: 利用PinAhead进行引脚分配
PinAhead环境提供了一组不同的视图。利用这些视图可以帮助完成I/O端口信息与物理封装引脚或裸片I/O盘(Pad) 的对应和分配( 如下图)。PinAhead的图形环境与PlanAhead类似,在器件视图中清晰地显示出芯片上的I/O盘和相关资源,并在封装视图中显示出物理器件引脚。视图同时显示出I/O端口和物理引脚信息,这
样可以通过交叉选取来试探逻辑设计和物理器件资源的对应。
你可以在没有设计网表的情况下使用PinAhead来尝试器件资源,或者直接开始I/O引脚规划流程。 封装引脚视图(“Package Pins”view) 根据器件数据表列出了器件封装威廉希尔官方网站
参数,因此大多数情况下在进行引脚配置时都不再需要去参考器件数据手册。 封装引脚视图以列表形式对I/O组(bank)进行了分类,因此可以同时在
器件和封装视图中交叉选择和高亮显示I/O组。 视频清晰显示出物理引脚位置和裸片中的I/O盘的关系,从而简化了I/O组的优化选择。封装引脚视频还显示了I/O组中每一引脚的信息。
你可以利用PinAhead接口从头开始创建I/O端口,也可以从CSV格式数据表、HDL源文件头或综合后的网络和UCF格式约束文件中导入I/O端口。 I/O端口视图(“I/O Ports” view) 显示出设计中定义的所有I/O端口信号,总线文件夹则显示分组的总线和差分对信号。你可以按不同方式对封装引脚和I/O端口视图进行排序。 可以切换列表视图显示基于分类的列表或全部列表,或者点击鼠标对封装引脚视图进行排序,显示所有可用的全局时钟或地区时钟引脚。同时还可以将信息导出到CSV格式数据表,做为引脚配置的出发点。PinAhead 还提供了一个界面,支持有选择地禁止PinAhead 将I/O端口分配给某些I/O引脚、I/O引脚组或I/O组。可以在封装引脚、器件或封装视图中选择和禁止引脚。例如,你可以对封装引脚视图(Package Pins view) 排序并禁止所有VREF 引脚。PinAhead 允许将相关的I/O 端口和总线组合为“接口”(interface)。这样组合使你可以将相关I/O端口做为单个实体处理,从而简化了I/O 端口管理和分配任务。 接口组合功能可以更容易地可视化显示和管理与特定逻辑接口相关联的所有信号。
可方便地在设计间拷贝接口,或者利用接口组合生成特定接口的PCB原理图符号。 组合后的接口在I/O端口视图中以可扩展文件夹的形式出现,通过在视图中选择I/O端口并将其拖动到接口文件夹,可以将额外的I/O端口添加到接口组合中。
当创建I/O端口时,可将其分配到封装引脚或I/O盘(pad)。 在此之前,最好先检查一下I/O端口的最初PCB 互连草图并与PCB设计人员协商,了解布放不同I/O端口接口的相关位置和其它需考虑的因素。 适当的总线顺序和边缘距离有PCB 布线非常有帮助,可以大大节约设计时间。通过将单个引脚、总线和接口拖动到器件或封装视图,可以将它们分配到I/O引脚。 利用不同的分配模式,可以将引脚组分配给选定的I/O引脚。 可用的模式包括“Place I/O Ports in an I/O Bank,”“ Place I/O Ports in Area,” 以及“ Place I/O Ports Sequentially.”。每种模式提供了将I/O端口分配到引脚的不同分配方式。 利用这些模式,可以通过鼠标光标处弹出的窗口
了解你所分配的端口数量信息。 直到分配了所有选定I/O端口之前,这一模式一直保持。
器件视图(Device view) 以图形方式显示所有时钟区域和时钟相关的逻辑对象,从而使时钟相关的I/O分配更容易、更直观。 选择一个时钟区将会显示所有I/O组、时钟相关的资源以及与其相关的器件资源。PlanAhead软件试图保证你在引脚分配时始终符合规则。 在你的指引下,PlanAhead工具将差分以端口分配给适当的引脚对。 当交互式指定I/O端口时,工具会运行规则检查(DRC) 来保证布局是合乎规则的。工具缺省设置运行在交互DRC 模式,当然你也可以选择关闭这一模式。 工具会检查电压冲突、VREF引脚或I/O 标准冲突,以及位于GT 器件附近的噪声敏感引脚。 当发现错误或问题时,工具会显示一条提示信息(Tooltip),告诉你为什么不能够将某个I/O端口分配给特定的引脚。通过激活 PinAhead的“ Autoplace”命令,还可以让其自动分配所有或任何选择的I/O端口到封装引脚。Autoplace命令将会遵守所有I/O 标准和差分对规则,并正确布署全局时钟引脚。 该命令还会尝试尽量将I/O端
口组合为接口(interface)。器件视图(Device view) 以图形方式显示所有时钟区域和时钟相关的逻辑对象,从而使时钟相关的I/O分配更容易、更直观。 选择一个时钟区将会显示所有I/O组、时钟相关的资源以及与其相关的器件资源。 通过可用资源与其物理关系的探索,区域时钟规划过程变得更容易。
还可利用PinAhead布局设计中其它与I/O相关的逻辑,如BUFG、BUFR、IODELAY、IDELAYCTRL和DCM。利用PlanAhead中的“Find”命令,可以方便地定位这些对象和布放点。 要想有选择地察看的扩展逻辑和逻辑连接,请使用工具中的原理图视图(“Schematic” view)。通过在PlanAhead软件中的某个视图中选择特定的I/O相关逻辑并将其拖动到器件视图(Device view) 中的选定位置,就可以锁定其布局。PlanAhead软件将会自动判断,仅允许将有关逻辑放在合适的位置。在拖动设计中的逻辑对象时,动态光标会显示出适当的布局位置。
步骤4: 为最终核签(Sign-Off)运行DRC和WASSO
一旦完成引脚分配,就可利用 PinAhead丰富的DRC规则来进行核签前的DRC检查,保证在运行PlanAhead软件实施工具前设计是无错的。工具中的众多I/O和时钟相关规则可保证I/O布局是合法的。 可利用PlanAhead的DRC对话框来选择相应的规则。如果工具发现违反规则的情况,将会显示带有错误信息的DRC结果表。 选择相应的错误信息可以更进入地了解有关情况。PlanAhead还提供了加权平均同步转换输出(WASSO) 分析功能,可帮助识别引脚分配引起的潜在信号完整性问题。为工具提供PCB设计的寄生参数特性,PlanAhead软件将会分析不同的I/O组以及其近邻,并报告每一个I/O 组的利用情况和状态。
步骤5: 导出I/O引脚分配数据
你可以将I/O端口列表和封装引脚信息从PlanAhead软件导出为CSV格式文件、HDL头或UCF文件。CSV文件包括有关器件封装引脚的所有信息,以及与设计相关的I/O引脚分配和配置。 列表中的封装引脚部分是数据表中定义I/O端口的很好起点。
你还可以利用该数据表自动生成设计小组开始PCB布局所需要的PCB原理图符号。然而,有时这些符号对于原理图来说太长了,可能需要将它们缩短为几个符号。利用PinAhead中的创建的接口组可以快速做到这一点。以原理图符号形式提供这些I/O引脚配置为PCB设计人员开始PCB布局提供了很好的基础。因为如果在引脚分配的最初就考虑到PCB接口,那么最很可能与最终的引脚配置比较接近。如果确实需要改变引脚来方便布线,那么改变也比较容易,因为需要改变的引脚可能已经在I/O组内了。这种方法不会对FPGA 设计造成太大的影响。通过在PCB和FPGA设计人员之间传递修改过的引脚布局数据表或UCF文件,可以保证两个部分之间的任何修改是同步的。为防止信号噪声以及支持某些FPGA功能,你还可能希望将未用的引脚或特定配置的引脚连接到VCC或GND。 赛灵思目前正在致力于在PinAhead的下一版本中提供这一功能。通过一个界面方便FPGA设计人员指导此类引脚,并在输出的CSV数据表中包含相应的引脚连接。 这样PCB设计人员就可以更容易识别相关引脚并正确连接之。
未来,随着FPGA集成更复杂的功能以及使用更先进的封装,发展可靠的FPGA和PCB引脚布局方法势在必行。PinAhead Lite在帮助实现基于协同设计理念的引脚布局策略方面已经能够提供很大帮助,但我们仍然已经在致力于改进这一工具以帮助设计人员更好地应对引脚布局方面的挑战。