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取值产生的编译结果差别并不大,只有在编译结果已经极为接近时序收敛目标时(仅有一两条不收敛路径时)才值得尝试。更多的精力应该用在设计优化和进行恰当的时序约束上。
相关链接:
ash_riple_768180695 2008-12-13 20:26
用户1057373 2008-12-12 13:17
ash_riple_768180695 2008-12-10 22:17
用户1057373 2008-12-10 17:17
用户131284 2008-11-8 12:48