谢丫丫

Xilinx Vivado设计套件中的设计实现

0
阅读(78) 评论(0)

本文将介绍Vivado用于加速设计实现的技术。

在之前的一篇文章中,我们讨论了Vivado用于加速设计过程的“集成时间”阶段的一些技术。本文将介绍Vivado用于加速“设计实现”的技术。

 

Vivado分析场所和路线

FPGA设计中的布局布线(P&R)是找到将在FPGA芯片内部实现的真实物理设计的阶段。顾名思义,布局布线有两个步骤:放置和布线。放置确定应该使用FPGA芯片中的哪个块来实现设计的给定逻辑元件。路由步骤确定应使用哪些路由(FPGA中的线路)将放置的块彼此连接。许多传统的FPGA设计工具依赖于称为“模拟退火”的算法来执行布局布线。该算法的基本概念如图1所示。

图1基于模拟退火的P&R。图片由Xilinx提供。

如您所见,选择初始随机点作为放置解决方案。然后,探索该初始随机点周围的解空间,并检查成本函数,通常是时间。如果本地移动减少了成本函数,则新点将用作算法其余部分的起点。如图所示,有时获得的放置不可路由,因此,我们可能必须朝着实际增加成本函数的方向移动。

通过模拟退火,初始点和随后的局部移动具有随机性质。这就是使用该算法的传统FPGA设计工具无法为P&R阶段提供可预测的运行时间的原因。此外,请注意,在图1的示例中,随机局部运动未产生最优解。它只找到了成本函数的局部最小值(如图中“找到最佳解决方案”所示)。此外,该优化示例是一维的并且试图仅最小化一个成本函数。

为了解决这些问题,Xilinx Vivado开发了一种分析布局布线引擎,该引擎使用大型数学方程来最小化多变量成本函数。如图2所示。

 

图2 Vivado的分析P&R引擎。图片由Xilinx提供。

如图所示,成本函数是三维的,并试图找到设计的时序,线长和拥塞的全局最小值。该分析算法允许工具在P&R阶段具有非常可预测的运行时间。下面的图3比较了Vivado与另一个竞争对手工具的运行时间。在该图中,横轴表示设计尺寸。正如您所看到的,Vivado的运行时间不仅比传统工具小得多,而且具有非常可预测的方式,并且随着设计大小线性增长。

图3设计工具运行时间与设计大小。图片由Xilinx提供。

 

下图将Vivado优化算法与Xilinx ISE和另一个FPGA设计工具进行了比较。如您所见,Vivado的运行时间比ISE的运行时间更容易预测。值得一提的是,随着设计规模接近一百万个逻辑单元,传统工具效果不佳; 但是,Vivado可以处理具有可预测结果的10M +逻辑单元。

图4 Vivado与其他工具。图片由Xilinx提供。

 

“超出上下文”的流程

Vivado可以独立实现设计模块。据说这些模块是在上下文(OOC ICfans)之外实现的。Vivado的这种功能使我们能够单独验证和实施重要的块。然后,在实现顶层模块时,从上下文实现获得的网表将替换OOC块的HDL版本。通过这种方式,我们可以在OOC模式下实现特定模块,并在实现顶级模块时避免为该模块消耗额外的CPU周期。

OOC实现有助于我们在将模块放置在可以具有更长运行时间的更大设计之前验证模块。此外,我们可以在OOC模式下实现一次模块,并在我们未来的任何项目中导入一次或多次结果。由于OOC块不需要额外的CPU周期,因此我们可以显着加快项目的实施时间。该网表重用策略如图5所示。


图5图片由Xilinx提供。

 

增量实施

使用今天的算法,我们可能需要等待几个小时才能使FPGA设计工具放置和布线我们的电路。但是,有时候,就在工具完成工作之前,我们记得我们在代码中犯了一个小错误。例如,我们使用了它的补充,或者我们忘记在混合模式时钟管理器(MMCM)上更改参数,而不是使用特定信号。对于如此小的变化,我们可以使用Vivado的增量实现功能来修改布局布线设计,而无需回到通常的综合和实现阶段。增量编译的设计流程如图6所示。

图6 Vivado增量编译流程。图片由Xilinx提供。

如您所见,第一次运行(左侧)用作第二次运行(右侧)的参考,其中设计被修改。增量实现是一种令人难以置信的灵活性,允许我们直接修改布局布线设计并“快速”应用小的更改。

 

在本文中,我们仅简要回顾了Xilinx Vivado的一些重要功能,这些功能可加快设计实施的时间。但是,您可能会对此软件的其他一些功能感兴趣。例如,Vivado支持一种名为Tcl的强大的解释性编程语言,它代表工具命令语言。有了这个功能,您几乎可以控制软件的每个方面。您可以编写一个Tcl脚本来自动执行重复操作,否则会花费大量时间。或者您可以编写一个脚本来执行对不同设计阶段中可用的Vivado优化函数的多次调用。

在这里,我们研究了Vivado设计套件相对于传统FPGA设计工具的一些优势。如果您熟悉其他工具中的类似功能,请在下面的评论中与我们分享您的经验。