前言
书接上文,本文测试禁用报告和抑制信息能否加快编译速度?先说结论:
-
禁用报告能略微提升Vivado编译速度,但副作用很大(看不到资源利用率、时序等报告了),不推荐;
-
抑制信息不能提升Vivado编译速度。
具体测试详见正文。
一、实验条件说明
-
测试的Vivado版本为2024.2 -
测试工程仍为前文三个示例工程:CPU、MB和ZYNQU -
最大线程和使用线程均固定为32 -
其余条件同前文实验
二、测试截图
2.1 Report策略-默认
CPU


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Report策略-默认-CPU-1 | 0 | 1m22s | 1m46s | 3m08s |
| Report策略-默认-CPU-2 | 0 | 1m22s | 1m48s | 3m10s |
| Report策略-默认-CPU-平均 | 0 | 1m22s | 1m47s | 3m09s |
MB


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Report策略-默认-MB-1 | 3m07s | 26s | 4m28s | 8m01s |
| Report策略-默认-MB-2 | 3m08s | 26s | 4m27s | 8m01s |
| Report策略-默认-MB-平均 | 3m07.5s | 26s | 4m27.5s | 8m01s |
ZYNQU


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Report策略-默认-ZYNQU-1 | 1m09s | 29s | 1m58s | 3m36s |
| Report策略-默认-ZYNQU-2 | 1m09s | 29s | 1m58s | 3m36s |
| Report策略-默认-ZYNQU-平均 | 1m09s | 29s | 1m58s | 3m36s |
2.2 Report策略-No Reports
参考:ug892-vivado-design-flows-overview-en-us-2024.2.pdf
如何设置No Reports,参考下图。


CPU


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Report策略-No Reports-CPU-1 | 0 | 1m21s | 1m35s | 2m56s |
| Report策略-No Reports-CPU-2 | 0 | 1m20s | 1m36s | 2m56s |
| Report策略-No Reports-CPU-平均 | 0 | 1m20.5s | 1m35.5s | 2m56s |
MB


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Report策略-No Reports-MB-1 | 3m09s | 26s | 4m04s | 7m39s |
| Report策略-No Reports-MB-2 | 3m05s | 25s | 4m03s | 7m33s |
| Report策略-No Reports-MB-平均 | 3m07s | 25.5s | 4m03.5s | 7m36s |
ZYNQU


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Report策略-No Reports-ZYNQU-1 | 1m11s | 28s | 1m51s | 3m30s |
| Report策略-No Reports-ZYNQU-2 | 1m10s | 28s | 1m52s | 3m30s |
| Report策略-No Reports-ZYNQU-平均 | 1m10.5s | 28s | 1m51.5s | 3m30s |
2.3 抑制所有消息
本章测试抑制所有消息是否能提升Vivado编译速度。
使用以下tcl命令可抑制Vivado所有输出的信息:
# 抑制所有 INFO 级别的消息
set_msg_config -suppress -severity {INFO}
# 抑制所有 WARNING 级别的消息
set_msg_config -suppress -severity {WARNING}
使用以下tcl命令可以取消抑制:
# 取消抑制所有 INFO 级别的消息
reset_msg_config -suppress -severity {INFO}
# 取消抑制所有 WARNING 级别的消息
reset_msg_config -suppress -severity {WARNING}
使用以下tcl命令可以查看目前有哪些信息被抑制:
# 查看所有消息配置
get_msg_config -rules
需要特别注意的是,抑制命令在关闭Vivado再重新打开以后仍然有效,所以,还是需要用上面介绍的命令来取消抑制。
CPU


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| 无INFO无警告-CPU-1 | 0 | 1m21s | 1m46s | 3m07s |
| 无INFO无警告-CPU-2 | 0 | 1m21s | 1m46s | 3m07s |
| 无INFO无警告-CPU-平均 | 0 | 1m21s | 1m46s | 3m07s |
MB


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| 无INFO无警告-MB-1 | 3m09s | 25s | 4m30s | 8m04s |
| 无INFO无警告-MB-2 | 3m06s | 25s | 4m29s | 8m00s |
| 无INFO无警告-MB-平均 | 3m07.5s | 25s | 4m29.5s | 8m02s |
ZYNQU


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| 无INFO无警告-ZYNQU-1 | 1m08s | 28s | 1m59s | 3m35s |
| 无INFO无警告-ZYNQU-2 | 1m08s | 29s | 2m01s | 3m38s |
| 无INFO无警告-ZYNQU-平均 | 1m08s | 28.5s | 2m00s | 3m36.5s |
三、实验数据统计与分析
| 实验条件/平均编译时间/示例工程 | CPU | MB | ZYNQU |
|---|---|---|---|
| Report策略-默认 | 3m09s | 8m01s | 3m36s |
| Report策略-No Reports | 2m56s(-6.9%) | 7m36s(-5.2%) | 3m30s(-2.8%) |
| Report策略-默认+无INFO无警告 | 3m07s | 8m02s | 3m36.5s |
从编译时间对比来看,舍弃Reports对编译速度的提升比较微弱,且对比OOC/综合/实现各部分的时间可以发现舍弃Reports仅对实现阶段有提升,这也很容易理解,因为大部分Report就是在实现阶段生成的。
总结:
-
不建议使用No Reports的Report策略,对编译速度提升影响微弱,但有较大副作用,看不到资源消耗、功耗和时序信息了; -
不要抑制任何信息,对提升编译速度无帮助。
四、测试工程分享
本系列文章的所有测试工程,如下图所示。

均通过网盘分享。
欢迎大家关注我的微信公众号:徐晓康的博客,回复以下6位数字获取网盘链接。
981520
建议复制过去不会码错字!
如果本文对你有所帮助,欢迎点赞、转发、收藏、评论让更多人看到,赞赏支持就更好了。
如果对文章内容有疑问,请务必清楚描述问题,留言评论或私信告知我,我看到会回复。
徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。