EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1. 迭代闭环思维 还记得小时候我们学习骑自行车的场景吗?一种是:亲自尝试模仿去骑,摔跤后总结下然后再尝试去骑,一遍又一遍的摔跤再尝试,然后越骑越好;另外一种是:在别人的指导下,按照别人的套路去练习,也越骑越好。
3 J9 e$ H, K) [' f# [7 |7 w% B虽然这2种方式都学会了骑自行车,但差别还是很大的,前者是自我模仿思考的迭代闭环的学习方法,是小孩子常用的方法,比如小孩子学说话、走路等,这种方法的好处是学会了还能举一反三,不好的地方就是花掉的时间失败成本会更高;后者是套路式的学习方法,按照套路武功秘籍练好各式各招就会了,是年龄大的人常用的方法,这种方法的好处是学习的成本低,不好的地方是思考反馈会越来越少。 " K' O! U, q+ U% S) U" t# G
其实,现在我们仔细想下:小孩子为什么喜欢问为什么,因为小孩子是自我模仿思考的迭代闭环的学习方法;反而越大的人却越来越讨厌问为什么,因为大人更喜欢套路式学习方法,喜欢玩套路。 ) L$ f* v0 u* ^9 [" f" \* i
: v" \# D& X! J3 \3 N5 A在这里,希望长大的我们,学习能多一些迭代闭环的思想方法,这样会因为我们迭代闭环的次数越多,学习就会越来越系统,也越学越快,越学越简单。就好比FPGA的设计一样,迭代次数越多,设计会越来越好。
( B% U% T8 e6 k3 nFPGA设计的特点是需要不断不断的迭代各个设计流程来达到最终的设计,同时迭代的成本大,它比单片机开发更注重迭代的开发思想。所以,设计的前期一定要从系统的角度考虑好系统的方案,然后在系统这个方案中不断的迭代,不然后期发现由于系统方案的问题就得不偿失了,好的系统架构就是成功一大半了。其中,在FPGA设计中可以通过增量编译来加快我们的开发。
! N# Z7 I/ p; R4 v2. FPGA增量编译 FPGA增量编译可以理解为:当设计流程90%左右的设计是一样的话,就可以利用上次的结果来加速设计,当然如果设计中大部分不一样的话,利用增量编译就得不偿失。下面我们看看vivado中的增量编译: / x/ ? B& ]- g2 e) t8 g# G
% E9 U8 @" }' k$ h( W使用增量编译时,可查看ug904文档,里面有详细介绍,主要利用Vivado的dcp类型的文件,dcp文件是Design Check Point文件,即一些中间节点文件,保存各个阶段的结果,为复用提供了方便。使用增量编译有2种方式: 6 H9 _6 [( ?+ \2 p3 B
在项目模式下: 1) 通过右键点击新实现方案运行 impl_2 ,并从弹出的菜单中选择设置增量编译; 2) 浏览增量编译检查点参考DCP文件并点击确认; 3) 继续运行实现方案,会明显发现编译时间缩短。
) M" H) ]: D. u4 E2 Y0 K
. x- d0 G" d1 l" ^1 H0 N
* j8 C2 d1 S3 c3 [# K- Q& x# f+ G9 ?! j6 k9 ~- T
在非项目模式下: 在opt_design后运行以下命令:: w# ^) `) J3 ^" a8 g/ T/ B
%read_checkpoint -incremental reference_routed.dcp `! H9 ^; R, }7 c* K8 e6 M5 |
上图的编译时间发现:增量编译后,可以大大减少编译时间,工程越大后的效果越明显。注意: 1) 当参考设计和当前设计的相似度大于95%的,最适合用增量编译技术,但相似度低于75%时,工具会建议关闭增量编译; 2) 有些时候,虽然是很小的RTL改动,也会造成网表的巨大差异,比如:改变HDL中的端口,增加总线的参数等,这个时候其实不适合用增量编译的。
1 I7 s" H' V8 X2 t- d3 r& e; A+ Z- n- p
|