原创 QuartusII增量编译的个人学习(四)

2012-10-9 13:40 6216 24 32 分类: FPGA/CPLD 文集: 增量编译

悲剧啊……跳闸啦,刚码到一半……又要重新码啊……哭

我们先来搞清楚两个概念——逻辑分区”和“物理分区

前面所讲到的Design Partition只是将设计进行“逻辑分区”,直白点说就是将我们的设计分成N个小的模块,每个模块有着单独的逻辑和功能,它告诉编译器,这部分逻辑是一个分区A,那部分逻辑是另一个分区B,在进行这样的分区之后,编译器在整个工程的综合、布局布线上面并不会有什么太大的变化,这个逻辑上的分区只是用来让用户清楚,哪部分逻辑是分区A的,哪部分逻辑是分区B的。之后用户就可通过设定A、B分区的属性类型来告诉编译器,哪部分已经不需要重新综合、布局布线了;哪部分已经修改了,需要重新进行综合等等。

而我们来看看LogicLock的作用,是对设计进行“物理分区”,更准确的说,它是对目标器件进行“物理分区”,然后将逻辑上的功能模块分配到一定的分区内。也就是说,我们先对目标器件进行物理区域划分,把它分成几个“地盘”,然后选择一个逻辑功能模块分配到某个“地盘”里,告诉编译器,以后这部分逻辑功能就只能在这个“地盘”里面布局布线了。同样的,用户可以对各个模块进行属性上的设定,告诉编译器以什么样的形式在“地盘”里面进行布局布线。

下面简单介绍下LogicLock的使用,我们前面已经用Design Partition进行了“逻辑分区”,我们可以用同样的方法,在设计的树形结构里面右键,然后如下图:

增量编译15.jpg

把各个子模块加入到LogicLock Region里面之后如下图:

增量编译14.jpg

里面有两个主要的参数,Size和State:Size有两个选项,Auto、Fixed;而State也有两个选项,Locked、Floating。但是并不是有着四个组合,其实只有着下面三种状态:

增量编译16.jpg

第一种,Auto+Floating:由编译器自动选择区域大小和位置;(在Chip Planner里面由虚线显示)

第二种,Fixed+Floating:由编译器选择位置,但由用户设定区域大小;(在Chip Planner里面由短实线显示)

第三种,Fixed+Locked:区域大小和位置都由用户来设定。(在Chip Planner里面由实线显示)

那我们来说说LogicLock在增量编译里面有什么作用呢?还是需要强调一下,增量编译不是一定非要用到LogicLock,但Quartus推荐在增量编译时使用LogicLock!为什么呢?因为它可以让增量编译的思想贯彻得更彻底。

我们想想在前面用Design Partition时出现的一种情况:改动后的模块逻辑功能上变化比较大,影响了其它“逻辑分区”的布局布线,这样未改动部分也需要进行重新编译了。但如果这个时候使用的是LogicLock,由于每个逻辑功能模块都分配了一定的“物理区域”,改动后的模块再怎么变也是在它自己的“地盘”里,不会影响到别的“地盘”的布局布线。

但LogicLock也会带来一定的负面影响,最直接的,一般情况下,时序分析后的Fmax都要更低一些。这是为什么呢?其实想想也能知道,如果没有使用LogicLock,编译器可以自动从全局出发去做出做大的优化,而我们人为地进行了物理分区限定,那即使可能每个小模块做到了很好的优化,但是由于各个区域之间的布局布线受到了限制,那自然会有所影响。但也不能如此绝对地断定,如果在占用资源很庞大的情况下,使用这种方法还能带来意想不到的效果。

文章评论8条评论)

登录后参与讨论

jlx_cuc 2013-7-24 14:00

是不是把一个整体功能给分割成两个logic块了呢

用户443471 2013-7-23 23:15

为什么quartus本来调试正确的模块,设置logiclock后结果反而错误了?

用户443471 2013-6-29 22:12

Error (138082): Current release of the Quartus II software does not support Incremental Compilation and Rapid Recompile simultaneously. 您好,请问您知道为什么我的会出现这个问题吗?我用的quartus12.0

用户377235 2013-4-26 08:18

很有用

jlx_cuc 2012-10-26 13:54

的确,用于IP核加密是个不错的做法~学习下~~

用户561495 2012-10-25 22:42

我对partition的用途使用如下:比如你写了一个IP核,你不想让使用IP核的人看见,那么你可以将这部分代码在增量编译中选择生成qxp文件(好像是网表文件),然后就可以将加密的IP核,即IP.qxp文件给用户使用,用户拿到IP.qxp后,可以建立一个partition,直接和用户自己开发的FPGA程序对通,从用途的角度来讲我是这么使用过。具体很详细的细节希望能够讨论。 第二:逻辑分区:说白了就是在FPGA芯片的物理整列区域进行固定区域的划分,一般使用在大型的项目开发过程中,比如此项目分给5个同事,每个同事负责一个子模块,从立项的资源评估后,可以使用逻辑锁定功能将FPGA分成5部分,分别分给五个开发者,这样每个开发者可以改动自己的程序以至于不影响别人的东西,这种的不好处楼主也说了,就不罗嗦了,总之我对增量编译还不是很清晰,希望有空能够更深一步的讨论。

jlx_cuc 2012-10-9 09:18

说实话,原本也就准备写这么点的,怕建了个人专栏太寒碜啊~呵呵~~

用户403664 2012-10-9 09:00

这一系列可以推荐到专栏了~建立个人专栏吧亲~
相关推荐阅读
jlx_cuc 2014-06-06 18:19
你真的会socket编程吗(1)
最近的项目都围绕着TCP socket在进行着,VC下的socket,Linux下的socket,感觉很简单,但是却发现其实下面的几个同事对于socket这个东西还只是“会”,但并不一定懂。 ...
jlx_cuc 2014-05-16 18:44
操作系统-读书笔记(1)
最近在业余阅读时找到一本《自己动手编写操作系统》觉得不错,视角很新颖,是有关操作系统书籍中为数不多的看了不想睡觉的读本。   由于这本书的出版时间较早,书中引导盘还使用的是软盘,所以在跟随...
jlx_cuc 2014-05-08 17:13
“改变”后的一丝体会
有两个月没写博客了,现在正是开学之际,有必要对前面两个月的工作做做记录。   经历过从北京到苏州的工作地点转换,生活和工作上的体会和收获颇丰。到苏州来以后会觉得,原来的一些看法还是太过狭隘...
jlx_cuc 2014-05-08 17:13
最终我又不要脸的回来了——成为一名“管理者”后的心得
之前的很长一段时间都没再更新过这个博客,一直在EDN潜水,一直在做伸手党。原因有两个,一个是忙,一个是懒。 最终我还是不要脸的回来了。还是想以后好好把这个博客经营下去,也好等咱们的娃长大了给它...
jlx_cuc 2013-07-11 17:13
【博客大赛】写给“即将入学”的硕士研究生们
原本题目定的是《写给即将入学的硕士研究生们》,后来想了想便加上了双引号。先来说说这个双引号。   早在一个多月前全国考研的最后结果便出来了,对于考上研的同学们来说,马上就要开始自己的研究生...
jlx_cuc 2013-04-08 23:22
【博客大赛】老罗和他的锤子之我的见解
事先说明,个人感觉我的观点还算是中立观点,并不是要感叹老罗和锤子有多好,也不想批评它们是否一无是处。只是想在时隔这么就没来EDN,恰巧又遇到锤子的发布这个时间点,发表些个人的感想和见解。 ...
我要评论
8
24
关闭 站长推荐上一条 /2 下一条