Vivado编译加速验证
1)Vivado软件版本:2018.3
该版本生成bit文件后,无法找到dcp文件,可以手动生成dcp文件或在增量编译选项中选择automatically use the checkpoint from the previous run;
2)程序1:
FPGA器件:XC7K325T
该程序主时钟速率较低,资源占用也不高,几乎不存在时序违例的情况;程序资源消耗如下:
Resource | Utilization | Available | Utilization% |
LUT | 68203 | 203800 | 33.47 |
LUTRAM | 29596 | 64000 | 46.24 |
FF | 51573 | 407600 | 12.65 |
BRAM | 168 | 445 | 37.75 |
DSP | 2 | 840 | 0.24 |
IO | 78 | 500 | 15.6 |
GT | 2 | 16 | 12.5 |
BUFG | 12 | 32 | 37.5 |
MMCM | 2 | 10 | 20 |
PCIe | 1 | 1 | 100 |
3)程序1验证过程及结果如下:
序号 | 综合时间 | 布线时间 | 备注 |
1 | 2:18 | 23:44 | 原始程序 |
2 | 2:20 | 20:05 | 修改1bit逻辑,设置增量编译 |
3 | 2:21 | 17:39 | 不修改代码,在1基础上设置增量编译,设置编译线程为8: set_param general.maxThreads 8 |
4 | 2:25 | 18:10 | 修改1bit逻辑,设置增量编译,设置编译线程为8 |
5 | 2:19 | 12:15 | 不修改代码,在4基础上,增加input时序约束,设置增量编译,设置编译线程为8,观察对编译时间的影响 |
6 | 2:23 | 12:13 | 不修改代码,在5基础上仅增加output delay约束,设置增量编译,设置编译线程为8 |
7 | 2:19 | 17:55 | 修改1bit逻辑,修改input时序约束,设置增量编译,设置编译线程为8 |
|
|
|
|
4)程序2
FPGA器件:XC7V690T
该程序主时钟速率较高,资源占用也较高,存在时序违例的几率较大;程序资源消耗如下资源消耗如下:
Resource | Utilization | Available | Utilization% |
LUT | 334375 | 433200 | 77.19 |
LUTRAM | 58501 | 174200 | 33.58 |
FF | 495241 | 866400 | 57.16 |
BRAM | 712.5 | 1470 | 48.47 |
DSP | 2694 | 3600 | 74.83 |
IO | 268 | 850 | 31.53 |
GT | 4 | 36 | 11.11 |
BUFG | 30 | 32 | 93.75 |
MMCM | 7 | 20 | 35 |
PCIe | 1 | 3 | 33.33 |
5)程序2验证过程及结果如下:
序号 | 综合时间 | 布线时间 | 备注 |
1 | 19:46 | 2:11:07 | 在原始程序上修改部分逻辑,直接编译;完成后时序存在部分违例; |
2 | 20:48 | 3:13:11 | 在原始程序上修改部分逻辑,修改内容与1相同,设置增量编译,设置编译线程为8; 编译完成后时序存在违例 |
6)总结:
1)逻辑修改较少的情况下,设置编译线程为8,设置增量编译均可增加编译速度,提速约20%;(参考程序1验证结果)
2)若不修改代码,仅修改对全局时序影响不大的时序约束,如增加对外部输入的状态信号的input delay或输出信号的output delay约束,此时可提速约40%;(参考程序1验证结果)
3)如果程序时序或资源比较紧张时,不建议采用增量编译,可能导致更差的结果;增加编译线程不会影响编译结果,可只使用该设置。
4)根据以上验证,想要提高编译速度,还是要从代码上进行优化,