![AMD FPGA设计优化宝典:面向Vivado/SystemVerilog](https://wfqqreader-1252317822.image.myqcloud.com/cover/811/47793811/b_47793811.jpg)
1.5 性能指标
对于一个FPGA设计,我们该如何评估其性能呢?通常会用到这样几个指标:设计可运行的最高频率(Fmax)、输入到输出的时钟周期数(Latency)、吞吐率(Throughput)、资源利用率和功耗(Power)。
Fmax可通过时序报告计算得出。在Vivado中,可通过命令report_timing_summary生成时序报告,如图1-46所示。当WNS、WHS和WPWS均大于或等于0时,表明时序已收敛。
![](https://epubservercos.yuewen.com/23E432/27210676502898006/epubprivate/OEBPS/Images/45725_38_3.jpg?sign=1738892712-2meVv3bM3ratPYyJSjDuDuXE6oYkeh4K-0-18a30790d1256959416bab6e19d494a4)
图1-46
图中WNS为0.171ns,若时钟周期为10ns,那么Fmax为
![](https://epubservercos.yuewen.com/23E432/27210676502898006/epubprivate/OEBPS/Images/45725_38_4.jpg?sign=1738892712-vp3vS3HfZsPGrLE8FSdXhRImI76ezHWU-0-46b308f89624b753520cdc876f255748)
显然,WNS越大越好。
输入到输出的延迟通常用时钟周期个数来表示,称为Latency,该指标也反映了设计的流水级数。如图1-47所示,输入x0对应的输出为y0,输入x1对应的输出为y1,从输入到输出需要3个时钟周期,故Latency为3。而相邻两个输入之间间隔的时钟周期个数则反映了该设计的吞吐率。显然,Latency越小越好。但Latency小意味着流水级数低,这可能会导致Fmax降低。
![](https://epubservercos.yuewen.com/23E432/27210676502898006/epubprivate/OEBPS/Images/45725_39_1.jpg?sign=1738892712-OFIpvVVzU07sicH19FsVTBGZxy7cabNg-0-df1897e24a2b86a21d6b465516176178)
图1-47
在Vivado下,可通过命令xilinx::designutils::report_failfast查看资源利用率的指导值和实际值,如图1-48所示。图中Guideline列对应指导值,Actual列对应实际值,Status列若为REVIEW,则表明其所在行对应的资源利用率超过指导值。
![](https://epubservercos.yuewen.com/23E432/27210676502898006/epubprivate/OEBPS/Images/45725_39_2.jpg?sign=1738892712-8YE3vf2S49Ya0vcuwnWTteZnXJCyrNJy-0-087212fe56f59d577a40f884df60e83f)
图1-48
将图1-48中的信息提取出来形成表1-7。表中LUTRAM表示分布式RAM,SRL表示用LUT实现的移位寄存器。根据此表,我们可以在设计初期进行芯片选型。需要注意的是,Block RAM、UltraRAM和DSP48三者资源利用率都不能超过80%,若超过了80%,则要保证三者平均利用率低于80%。
表1-7
![](https://epubservercos.yuewen.com/23E432/27210676502898006/epubprivate/OEBPS/Images/45725_40_1.jpg?sign=1738892712-0Wt9qkcy2G0t22v9KsnpqUfRJCRe8Q3H-0-9c96a565705ed03c10bc1fed70676d49)
此外,还要考查设计功耗是否达到预期目标。在Vivado下,可通过命令report_power生成当前设计的功耗报告,如图1-49所示。提供的信息越多,例如,通过仿真提供.saif文件等,可使报告的可信度越高。
![](https://epubservercos.yuewen.com/23E432/27210676502898006/epubprivate/OEBPS/Images/45725_40_2.jpg?sign=1738892712-5SFizziLwLY9DrsQPuDOcZvUS0sUzd6w-0-ca8a0ef91ff956a56f11b43275df45cf)
图1-49
这些性能指标不是独立的,而是相互影响的。有时为了提升Fmax而增加Latency或资源利用率;有时为了降低资源利用率而牺牲Fmax。无论如何,最终的目标是实现时序和功耗均收敛。时序收敛意味着设计达到了预期的Fmax,功耗收敛意味着设计的功耗在目标范围内。