riple

Stay Hungry, Stay Foolish.

海外捉虫记—DSE能否覆盖所有设计空间

0
阅读(2429)

FPGA的布局布线就像PCB一样,好的布局不但能够提高布通率,系统的时序也更容易收敛。不同于PCB设计之处在于,FPGA的布局布线很难手工 操作。虽然可以用Logiclock约束一下大致的布局位置,但是绝大多数布局工作还是要依靠EDA工具的计算和权衡。(Logiclock的作用更多在 于保留时序收敛的结果,提高时序收敛的速度,而不一定能够得到最佳的时序性能)

从我使用PCB自动布线工具的体会看来,手动布局位置稍有变化,自动布线结果就会有很大不同。FPGA也是如此。在Quartus II的Fitter设置页面中,有一项是Seed的取值设置。从帮助文件里看来,Seed是自动布局工具随机选取初始布局位置的随机数生成种子,Seed 的不同取值会产生不同的起始布局位置,相应地也会产生不同的布线效果,从而产生不同的时序收敛结果。

由于计算机产生的随机数都是伪随机数,所以对同样配置的两台计算机来说,同样的Seed会产生同样的随机数。也就是说,同一台计算机的全编译结果是 可重现的。反过来说,相同的设计约束,由于计算机的配置不同,尤其是CPU的不同,会产生不同的编译结果。我认为,上述随机数生成环境的变化导致了这一差 异。

DSE(Design Space Explorer)的任务是尽可能全面地探索设计选项的不同设置,进行各种 尝试,并把各种尝试产生的时序和面积结果汇总给设计者,由设计者通过比较编译结果来逆向选择设置选项。由于这一过程是自动化进行的,虽然有一定的盲目性, 但是可以使设计者从手动执行这一系列冗繁操作的过程中得以解放。

既然是“尽可能”,就一定会有探索不到的边角。通观Quartus II的编译设置选项,除了上述的Seed,其他所有选项都是可以通过排列组合得以覆盖全面的。伪随机数的重复周期很长,想要穷尽不是没有可能,但是会耗费 极长的时间。DSE必须在“全面”和“快速”之间做出权衡。

在DSE的探索空间设置页面有一个选项栏,专门用于设定需要尝试的一系列Seed取值。DSE把选择Seed取值和覆盖率这一难题交还给了设计者。

所以,DSE是不会覆盖所有可能的设计设置选项空间的。这就是为什么我的同事Kevin发现,有的时候DSE不能达到的时序收敛目标可以通过手工尝 试不同的配置组合得以实现的原因。这一反常现象应该可以通过Seed的有限设置取值得到合理解释。在同一台计算机上是不会出现不可重现的编译结果的。(混 沌在这里还是没能占得上风)

Specifies the starting value the Fitter uses when randomly determining the initial placement for the current design. The value can be any non-negative integer value. Changing the starting value may or may not produce better fitting. Specify a starting value only if the Fitter is not meeting timing requirements by a small amount. The Design Space Explorer tool lets you sweep many seed values easily to find the best value for a given project. Modifying the design or Quartus settings even slightly will usually change which seed is best for the design.

需要注意的是:不同Seed取值产生的编译结果差别并不大,只有在编译结果已经极为接近时序收敛目标时(仅有一两条不收敛路径时)才值得尝试。更多 的精力应该用在设计优化和进行恰当的时序约束上。

相关链接:

Quartus II Fitter advice

Baidu
map