![AMD FPGA设计优化宝典:面向Vivado/VHDL](https://wfqqreader-1252317822.image.myqcloud.com/cover/974/47548974/b_47548974.jpg)
1.5 性能指标
对于一个FPGA设计,我们该如何评估其性能呢?通常会用到以下几个指标:设计可运行的最高频率(Fmax)、输入到输出的时钟周期数(Latency)、吞吐率(Throughput)、资源利用率和功耗(Power)。
Fmax可通过时序报告计算得到。在Vivado中,可通过命令report_timing_summary生成时序报告,如图1-46所示。当WNS、WHS和WPWS均大于或等于0时,表明时序已收敛。
![](https://epubservercos.yuewen.com/A0DA3D/26947437507592606/epubprivate/OEBPS/Images/45098_40_2.jpg?sign=1739240334-Et5DU5Jatx2dcCFUN4o8xljdf6ausWhK-0-1bb7230e02a45900b3becb3519e2700b)
图1-46
在图1-46中,WNS为0.171ns,若时钟周期为10ns,那么Fmax为
![](https://epubservercos.yuewen.com/A0DA3D/26947437507592606/epubprivate/OEBPS/Images/45098_40_3.jpg?sign=1739240334-hbwtQ5LQutbBLozIZwJAyzc3sR6wFxJa-0-a7432ebfd2fdd5f9ce93239a912c342e)
显然,WNS越大越好。
输入到输出的延迟通常用时钟周期个数来表示,称为Latency,该指标也反映了设计的流水级数。如图1-47所示,输入x0对应的输出为y0,输入x1对应的输出为y1,从输入到输出需要3个时钟周期,因此Latency为3。相邻两个输入之间间隔的时钟周期个数反映了该设计的吞吐率。显然,Latency越小越好。但Latency小意味着流水级数低,这可能会导致Fmax降低。
![](https://epubservercos.yuewen.com/A0DA3D/26947437507592606/epubprivate/OEBPS/Images/45098_41_1.jpg?sign=1739240334-AoM0DV3Zw1V9qcvt3ulUcHN5qgRDZ9im-0-c75fd72b2ceb21e713cd8c5e1e6395eb)
图1-47
在Vivado下,可通过命令xilinx::designutils::report_failfast(从Vivado 2022.1开始,可直接使用命令report_qor_assessment)查看资源利用率的指导值和实际值,如图1-48所示,图中,Guideline列对应指导值,Actual列对应实际值,Status列若为REVIEW,则表明其所在行对应的资源利用率超过指导值。
![](https://epubservercos.yuewen.com/A0DA3D/26947437507592606/epubprivate/OEBPS/Images/45098_41_2.jpg?sign=1739240334-G7fvmG6tKoUOrhg2tEQ989hGPfYGSur1-0-ef54d3ce7ccbb2c033a586d7dc123bb0)
图1-48
将图1-48中的信息提取出来,形成表1-7,表中,LUTRAM表示分布式RAM,SRL表示用LUT实现的移位寄存器。根据此表,我们可以在设计初期进行芯片选型。需要注意的是BRAM、UltraRAM和DSP48三者的资源利用率都不能超过80%,若超过了80%,则要保证三者的平均利用率低于80%。
表1-7
![](https://epubservercos.yuewen.com/A0DA3D/26947437507592606/epubprivate/OEBPS/Images/45098_41_3.jpg?sign=1739240334-sFIdzjZQLlmsBWBGqoPYO7n6dQkwDxtg-0-2406789dbca6525233aeea2e152b317d)
此外,我们还要看设计功耗是否达到预期目标。在Vivado下,可通过命令report_power生成当前设计的功耗报告,如图1-49所示。报告提供的信息越多(如通过仿真提供.saif文件等),可信度越高。
![](https://epubservercos.yuewen.com/A0DA3D/26947437507592606/epubprivate/OEBPS/Images/45098_42_1.jpg?sign=1739240334-AIXyuhDbpRumPdgImRAvpzGSoEhlzR0N-0-6e0f405e1e3af0229f0a9ec18dbe25b6)
图1-49
这些性能指标不是独立的,而是相互影响的。有时为了提升Fmax而增加Latency或资源利用率;有时为了降低资源利用率而牺牲Fmax。无论如何,最终的目标是实现时序和功耗均收敛。时序收敛意味着设计达到了预期的Fmax,功耗收敛意味着设计的功耗在目标范围内。