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