增量编译之Design Partition
0赞增量编译的概念很早就听说过,但一直没深入研究。在QuartusII中支持增量编译这一选项,如果使能这个选项,编译器会根据上一次的编译的编译结果进行优化,达到缩短编译时间的目的。
在QuartusII中默认的编译方式不是增量编译,而是一种固定式编译,每次重新编译会执行全编译,不会利用前次编译结果,这样花费的时间比较长;而如果需要使能增量编译,则首先需要对设计进行分区,通过Design Partitions工具将一个大的设计分成若干个分区,编译是针对分区分别进行Analysis&Synthesis、Fitter,每个分区可以的到各自的网表。下面以一个示例讲解一下实现增量编译的流程:
1. 首先在QuartusII中创建工程,加入代码,进行Analysis&Synthesis,可以得到设计代码的层次结构,如图1所示。
图1
2. 打开Design Partitions工具(Assignments àDesign Partitions Window),双击“new”创建新的设计分区,可以根据代码的层次结构创建对应的分区,如图2(a)所示,选择所有的层次结构,如图2(b)所示为创建完成的分区。
(a)
(b)
图2
3. 在Design Partition Window中有Netlist Type,这个选项指定增量编译使用前次编译结果的网表类型。如图3所示,双击可以得到下拉选项:Source File、Post-Synthesis(默认)、Post-Fit和Empty。
图3
Source File:在源代码未修改的情况下,不会重新Analysis,利用前次Analysis结果只进行Synthesis和Fitter;
Post-Synthesis:在源代码未修改的情况下,利用前次Synthesis结果只进行Fitter;
Post-Fit:在源代码未修改的情况下,保留前次Fitter结果进行编译,此选项最大程度上减少了编译时间;
Empty:如果只划分了分区,并未对改分区设计代码,可以将这个分区Netlist Type设置成Empty,编译时将忽略此分区。
对上诉几个选项分别进行了实验,图4是未设置Design Partions,即固定式编译的结果;图5是Source File的编译结果;图6是Post-Synthesis的编译结果;图7是Post-Fit的编译结果。
图4
图5
图6
图7
可以发现Post-Fit的编译时间最短,只需2分55秒,相比于固定式编译,编译时间减少了58%。
另外,固定式编译其实通过设置也可以实现增量编译,在Settings中Incremental Compilation中,使能Rapid Compilation选项,如图8所示,此选项类似于在Fitter时重用Netlist Type为Source File或者Post-Synthesis实现增量编译。
图8