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

2008-11-17 21:11 3560 8 13 分类: FPGA/CPLD

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

文章评论5条评论)

登录后参与讨论

ash_riple_768180695 2008-12-13 20:26

应该可以解决。另外,也可以尝试一下LogicLock.不过最好还是找一个Altera关于I/O时序约束的例子看一下。

用户1057373 2008-12-12 13:17

多谢指点! 你的最新文章写的post-fit netlist,也是解决这些问题的吗?

ash_riple_768180695 2008-12-10 22:17

我觉得你已经找到答案了。再有就是fast input register或者fast output register选项。不妨用恰当的时序约束控制一下局部的布局布线目标。ALtera的网站上应该有DDR的引脚时序约束和分析示例。

用户1057373 2008-12-10 17:17

很郁闷的问题:我用了quartus中的DDR模块,刚开始还不错,到后来工程一大,经常是其他地方一改动,DDR就不工作了。这是要用到logic lock吗?还有别的方法没?

用户131284 2008-11-8 12:48

看riple的博客总能开阔眼界
相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
5
8
关闭 站长推荐上一条 /2 下一条