如何实现复杂FPGA设计的时序收敛

“打鼹鼠”是一个古老(电子时代之前)的休闲游戏。在桌面上有许多洞,每个洞里都藏着鼹鼠。当有鼹鼠从洞里钻出来时,你就用锤子打它,让鼹鼠退回洞里,你因此而得分。当鼹鼠返回洞里时,又有一只鼹鼠会随机地从另外一个洞里钻出来,你需要近乎疯狂地击打鼹鼠头部直到得了高分,这样心情也很舒畅。需要说明的是,游戏中并不是真的鼹鼠。世界有些地方把这种游戏叫“打老鼠”,我也不明白为什么啮齿动物在外面总是人人喊打。要实现复杂FPGA芯片设计的时序收敛,就非常类似于这一古老的游戏,但趣味自然少了许多。

 

为什么FPGA设计类似“打鼹鼠”?

 

在FPGA设计中(除验证外),最主要的时间陷阱(Time Sink)是时序收敛。时序收敛常常是一个不断反复的过程,以确保设计中的每个路径都满足时序要求。在相对较小、速度较慢的设计中,时序收敛比较容易,而且是自动收敛的,因此对FPGA器件或实现工具的要求不高。然而,实际中的大多数设计并非如此轻松,它们要求对每个关键路径进行调整,以满足时序要求,而期间又会不断有新的关键路径被发现或出现。

 

图1是迭代的时序收敛示意图。在第一阶段,只有路径C的时间裕量是负数。为改善路径C,对设计进行修改。随着对路径C实现约束,路经B和E又成为关键路径(见第二阶段),然后又对路径B和E进行改善。以此类推,直到所有路径都满足时序要求。

 

图1:迭代的时序收敛示意图。
图1:迭代的时序收敛示意图。

 

很显然,这种过程非常类似于打鼹鼠游戏;只不过并不像游戏那样轻松,而是让我们紧张。

 

全新的FPGA产品系列真能解决这一问题吗?

 

实际上,FPGA厂商已开发出优异的新一代FPGA以满足用户对更高性能和更高容量的需求。然而,FPGA用户更善于发掘推动FPGA突破容量限制的新方法,从而将FPGA引入更多新的应用领域。

 

FPGA已不再是一系列均匀分布的查找表(LUT)和由各种不同长度和速度的布线资源连接起来的触发器。目前,业界领先的FPGA设计包含多个时钟域,并使用嵌入式累积乘法(MAC)功能块,包括嵌入式处理器和各种存储器资源。FPGA的应用也随着器件内各种特定资源的增多而得以扩展,并准备着在FPGA内部实现这些特定的功能块。这是个好现象,但从某种程度上说,这种嵌入式资源的分布将导致时序收敛的问题更加突出。正如下文的RAM示例所指出的,嵌入式功能本身就是导致布线差异的根源。

 

这里假设设计需要做一些修改,以根据最新功能要求增加RAM的容量。在FPGA器件中可能有丰富的RAM资源,但需要使用不同的RAM资源,比如使用一个大的块RAM,而不是一组分布式RAM。综合工具能够轻松映射到所需的RAM,但新的块RAM可能只存在于FPGA器件上的特定列中,因此这时的设计布局将不同于原始布局。关键路径的连线从含有新RAM的列开始或向其延伸,或者重新布局以使关键路径靠近新的RAM,但其它收敛或发散的路径却会延长。使用传统的综合工具很难避免这种问题。因此需要密切注意这些时序收敛问题。

 

为什么布线预测如此重要?

 

布线延迟本质上是不可预测的,因为FPGA内各个驱动与负载之间存在许多不同的布线路径。每个路径的延迟不同,在工具流程开始的时候,逻辑综合无法预测流程结束时布局布线算法将要选择哪条路径。最快的布线资源通常是最缺乏的,布线阻塞常导致非最优的布线延时。仅靠开发具有更多、更快布线资源的FPGA器件并非解决方法,因为此时FPGA的面积使用效率更低、成本更高、功耗也更大。

 

随着采用更先进的CMOS工艺的新一代FPGA的推出,布线延迟将不可避免地成为关键路径总延迟中最关键的部分,因此综合和布局布线流程中的时序可预测性也变得一代不如一代。最终,导致时序收敛的原因可以归结为综合预测的路径时序与布局/布线实际实现的时序之间的差异。解决方法是在整个流程中较早引入布局(并最好也同时引入布线)并融入综合过程。这种全新的综合/布局布线工具将大幅减少时序收敛所需的迭代数,这也正是FPGA物理综合实际能达到的效果。

 

如何在“打鼹鼠”游戏中获胜?

 

下面以带多个复杂模块的大型设计(图2)为例来讨论。很多情况下,一个时序问题的解决将改变RTL,并且一些改进时序的做法也会增加资源的使用。

 

图2:RTL变化如何使路径发生变化。
图2:RTL变化如何使路径发生变化。

 

在图2中,模块A紧邻模块B和模块B,当为解决某个时序问题而修改模块A的RTL时,模块A会扩展到模块B和C使用的区域。这将迫使B和C中的器件发生移动,路径延长,从而产生新的关键路径。请注意,模块B或C中的逻辑没有变化,正常的逻辑综合流程不会由于模块A的尺寸变化而改变它对B或C中的互连延时的估计,因为模块A的RTL变化和B或C中新的关键路径之间的因果关系是物理上的。一般情况下,导致设计迭代具有不可预测性的本质原因是物理特性,因此真正的物理综合当仁不让成为首选解决方案。

 

在真正的物理综合中,当模块A的RTL发生改变并延长模块B和C中的走线时,新的更长连线可以被正确估算和考虑,这样在同样的物理综合过程中,围绕新的关键路径所进行的优化、布局和局部布线就可以自动解决这些问题。

 

本文小结

 

估计FPGA中的总路径延迟很困难,因此时序收敛已成为当前许多设计的时间陷阱。物理综合可以提供所需的布局可预测性,从而更好地控制和预测时序收敛。真正的物理综合有助于FPGA项目在较短时间内获得成功。

 

附:什么是“真正的物理综合?”

 

很多工具声称可实施物理综合,然而事实上这些工具只是使用先前的布局布线的时序信息重新优化综合结果。原始综合并未受到任何影响,因此来不及消除综合所做的主要结构性决策。更准确地讲,这种方法应称为“物理再优化”。

 

在真正的物理综合中,综合本身也完成布局,所以非常清楚最终FPGA的布线走向。因而时序预测也准确得多,避免了时序收敛问题。

posted @ 2009-12-21 22:57  FPGA/DSP  阅读(907)  评论(0编辑  收藏  举报