EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1. 迭代闭环思维 还记得小时候我们学习骑自行车的场景吗?一种是:亲自尝试模仿去骑,摔跤后总结下然后再尝试去骑,一遍又一遍的摔跤再尝试,然后越骑越好;另外一种是:在别人的指导下,按照别人的套路去练习,也越骑越好。
' k( }; q, {, N9 a: x0 R虽然这2种方式都学会了骑自行车,但差别还是很大的,前者是自我模仿思考的迭代闭环的学习方法,是小孩子常用的方法,比如小孩子学说话、走路等,这种方法的好处是学会了还能举一反三,不好的地方就是花掉的时间失败成本会更高;后者是套路式的学习方法,按照套路武功秘籍练好各式各招就会了,是年龄大的人常用的方法,这种方法的好处是学习的成本低,不好的地方是思考反馈会越来越少。 % X1 e" ~9 c; f, c& E% h
其实,现在我们仔细想下:小孩子为什么喜欢问为什么,因为小孩子是自我模仿思考的迭代闭环的学习方法;反而越大的人却越来越讨厌问为什么,因为大人更喜欢套路式学习方法,喜欢玩套路。 * i3 C R+ L7 U4 o# C9 v" V
7 t0 |. H/ E, c/ C2 Y; a5 ^( J
在这里,希望长大的我们,学习能多一些迭代闭环的思想方法,这样会因为我们迭代闭环的次数越多,学习就会越来越系统,也越学越快,越学越简单。就好比FPGA的设计一样,迭代次数越多,设计会越来越好。 7 M8 ~! D E& M3 f R
FPGA设计的特点是需要不断不断的迭代各个设计流程来达到最终的设计,同时迭代的成本大,它比单片机开发更注重迭代的开发思想。所以,设计的前期一定要从系统的角度考虑好系统的方案,然后在系统这个方案中不断的迭代,不然后期发现由于系统方案的问题就得不偿失了,好的系统架构就是成功一大半了。其中,在FPGA设计中可以通过增量编译来加快我们的开发。
3 l% z+ k3 U$ U# z# }2. FPGA增量编译 FPGA增量编译可以理解为:当设计流程90%左右的设计是一样的话,就可以利用上次的结果来加速设计,当然如果设计中大部分不一样的话,利用增量编译就得不偿失。下面我们看看vivado中的增量编译:
4 s7 Z) e: f8 h5 A7 L
0 H' b! n* N* C5 w使用增量编译时,可查看ug904文档,里面有详细介绍,主要利用Vivado的dcp类型的文件,dcp文件是Design Check Point文件,即一些中间节点文件,保存各个阶段的结果,为复用提供了方便。使用增量编译有2种方式:
0 U$ ?0 m1 t0 @1 m7 _* u4 O2 M在项目模式下: 1) 通过右键点击新实现方案运行 impl_2 ,并从弹出的菜单中选择设置增量编译; 2) 浏览增量编译检查点参考DCP文件并点击确认; 3) 继续运行实现方案,会明显发现编译时间缩短。
: g- E3 k1 Y) N1 ]0 d% s0 w; b5 Y m
; f( x2 A. d1 n
& U4 D/ e, L- U9 F( s2 O2 M) H6 E( c1 ~9 ~$ x& ? l" u
在非项目模式下: 在opt_design后运行以下命令:1 Y2 Z4 o5 }4 T' r- ~
%read_checkpoint -incremental reference_routed.dcp
0 f; J6 G- @) K% s& y) V; w& H/ G& ~( b上图的编译时间发现:增量编译后,可以大大减少编译时间,工程越大后的效果越明显。注意: 1) 当参考设计和当前设计的相似度大于95%的,最适合用增量编译技术,但相似度低于75%时,工具会建议关闭增量编译; 2) 有些时候,虽然是很小的RTL改动,也会造成网表的巨大差异,比如:改变HDL中的端口,增加总线的参数等,这个时候其实不适合用增量编译的。 ; a1 S" Y' G) t d3 v/ B
; Z- o' A+ v9 A8 U9 Q2 e: f; \ |