![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=1738848023-0DYe8wGPM1odkmDDrxkxFZ2yS55IdcIy-0-8146d5e1edfd18ebac5bd8f5ad0a8b2f)
图1-46
图中WNS为0.171ns,若时钟周期为10ns,那么Fmax为
![](https://epubservercos.yuewen.com/23E432/27210676502898006/epubprivate/OEBPS/Images/45725_38_4.jpg?sign=1738848023-8MEPHZ5ibZfza2CQopuFLQwJ3W3u737Y-0-bc33839c56a62a7bea300e3bf1c1fb0e)
显然,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=1738848023-eZFl3GKEkF6o5pD32HkSYepQFY7gnSP0-0-820f9de15d7537d1aecc85f3ee1b2ab9)
图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=1738848023-I4Q1UE5Avm2OVZbw52LBbyVSZnT6Epxt-0-ce95a824c5cc4a1075d3fe748044fa75)
图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=1738848023-190LYb5rygDsgCDi83SB77PkCIowwkGL-0-24e40329b0fb336d247e76f16b921232)
此外,还要考查设计功耗是否达到预期目标。在Vivado下,可通过命令report_power生成当前设计的功耗报告,如图1-49所示。提供的信息越多,例如,通过仿真提供.saif文件等,可使报告的可信度越高。
![](https://epubservercos.yuewen.com/23E432/27210676502898006/epubprivate/OEBPS/Images/45725_40_2.jpg?sign=1738848023-KJ1s2Yd79db8Zk8OGJ0tMkIGsuzBwOrf-0-20ab6f8597616223254f762e873c643b)
图1-49
这些性能指标不是独立的,而是相互影响的。有时为了提升Fmax而增加Latency或资源利用率;有时为了降低资源利用率而牺牲Fmax。无论如何,最终的目标是实现时序和功耗均收敛。时序收敛意味着设计达到了预期的Fmax,功耗收敛意味着设计的功耗在目标范围内。