【蜂鸟E203的FPGA验证】Chap.8 Vivado综合与性能分析-Vivado性能分析
前言:本文均为作者原创,内容均来自本人的毕业设计。未经授权严禁转载、使用。里面的插图和表格均为作者本人制作,如需转载请联系我并标注引用参考。分享仅供大家学习和交流。
综合后资源利用率分析
已知本设计所采用的FPGA验证平台为Nuclei DDR200T开发板上的Xilinx XC7A200TFBG484-2 FPGA核心。在Vivado里选择此FPGA核心,与环境中所选择FPGA型号的硬件资源规范相结合,利用资源利用率(Utilization)的功能,模拟上版后的性能、面积,确定所设计的处理器占用了哪些FPGA核心内部的硬件资源(如查找表、存储器、I/O接口等)。
可直接在Vivado界面下Project summary中查看本设计在FPGA核心内部的资源利用率,流水线各单元详细的资源利用率如图3-16所示。我们会考虑FPGA资源的余量作为处理器设计复杂度的指标,逻辑资源余量主要是LUT,slice的余量情况。本设计所使用的XC7A200TFBG484-2 FPGA核心中CLB由两个SLICE构成,我们查看LUTs和SLICE都不超过50%,符合逻辑资源占用率余量要求。
综合后,系统资源利用率占比图如图3-15所示,可以看出蜂鸟E203占用FPGA核心的资源主要有:LUT、LUTRAM、FF、BRAM、IO、BUFG、MMCM。其中:
- 查找表(Look-Up-Table,简称LTU),是FPGA实现组合逻辑的硬件单元。值得注意的是,资源利用率中的LUT是指设计中消耗的所有LUT,包括用做逻辑函数发生器的LUT,也包括用做存储单元的LUTRAM[20]。
- 分布式存储器(Look-Up-Table RAM,简称LUTRAM),指设计消耗的LUT被用作了存储单元或移位寄存器,可以实现BRAM所不能实现的异步访问。
- 触发器(Flip-Flop,简称FF),是FPGA内部一种边沿敏感的存储硬件单元,可以存储1bit数据,存储的动作由某一信号的边沿进行同步,是Verilog硬件描述语言里reg寄存器的基本存储单位。
- BRAM(Block RAM),是FPGA的内部单独成块用以现各种存储功能的硬件单元。如Xilinx公司的结构中每个BRAM有36Kbit的容量。
- 输入输出端口(Input-Output,简称IO),指FPGA的输入输出管脚数目,在FPGA内位置和电气属性相近的IO组成1个Bank,每个Bank上的IO可实现电压基准不同、多种电平标准的输入输出。
- 全局时钟缓冲器(Buffer-Global-Clock,简称BUFG),是FPGA核心中的专用时钟资源,通常用于时钟网络如上电、复位和时钟,每个BUFG只能驱动一个时钟。
- 混合模式时钟管理器(Mixed-Mode Clock Manager,简称MMCM),是FPGA核心内部用来分频时钟输入,输出为处理器内部使用的不同频率的时钟,硬件上可以减弱产生时钟的延迟、抖动等。
本设计采用Vivado里的implementation 综合功能对设计进行综合约束。实现过程把设计文件(.Verilog)和约束文件(.xdc)转换为网表文件(.edf),如图3-16所示。
导出网表文件.edf文件,可以从该文件的部分截图中看到板载的LUT、FDCE情况和连接输入输出信息,不包含Verilog源码,所以网表文件一般用于设计调用IP。
2. 综合后功耗与功耗优化
功耗(Power)等于处理器上的电流值与电压值的乘积,可以反应处理器最大负荷运行、满载工作时电流热效应造成热量释放的大小指标,单位为瓦(W)。总功耗由静态和动态两部分组成:静态功耗包括晶体管物理特性上的泄露、每一个I/O引脚、时钟管理单元;动态功耗包括工作时钟频率、输出负载、处理器使用的电压电流、处理器在FPGA内部逻辑和布线资源的占用。如图3-17所示,所设计的单核32位RISC-V处理器的系统总功耗为0.277W,其中,动态功耗(Dynamic)0.13W占系统的47%,静态功耗(Device Static)0.148W占系统的53%。
结温(Junction Temperature)是处理器大负荷运行、满载工作时实际半导体裸片的最高温度。结温一般估测方法是从晶圆到封装外壳间的散热以及热阻。如图3-17所示,所设计的单核32位RISC-V处理器的结温为25.7℃,符合预计设计需求(一般要求50℃之内)。
功耗优化是在避免其对时序的影响的情况下最大限度地降低处理器在FPGA上板后的功耗,同时。Vivado中提供了功耗的优化方法,在TCL命令窗口输入布局前与布局后的功耗优化power_opt_design。对设计文件进行优化,以降低目标器件的功耗要求。运行命令后的控制台如图3-18所示
Vivado的功耗优化主要在动态功耗的优化上。首先,实现结构和方法的优化,在保证性能的基础上,自动规划板载资源使得资源占用比率达到最小。其次,优化存储器的功耗如BRAM、RAM存储器等,减少所添加的额外逻辑防止读写冲突。最终的功耗报告如图3-19所示,可见优化后的功耗为0.265,比优化前下降了0.012W。
3. 综合后布局布线实现
布局,将逻辑网表中的基本逻辑单元映射到FPGA芯片内部固有的硬件逻辑模块上;布线,将FPGA核心上布局好的硬件逻辑模块做连线连接,也会进一步优化硬件逻辑模块的布局。Vivado提供了较为简单的自动化布局布线操作,可以自动在速度最优和面积最优之间做出选择,使得FPGA核心内对硬件逻辑模块的连线合理、正确。在Vivado下打开设计实现后的设备视图(Device Viewer),如图3-20所示,可以看到各资源放置紧密而有序,布局布线整齐合理。
自动化布局布线后,Vivado会自动生成相关报告,提供有关设计中布局布线的结果和门级网表文件。布局布线后需要导出布局布线包,生成为一个DCP文件,但这个DCP文件包含netlist、xdc file、physical database,生成的DCP包如图3-21所示。
4. 综合后静态时序分析
Timing Summary(全局的静态时序分析报告)一共有三个报告:Timing Summary、Clock Network、Timing Interaction。整体分为三个部分的:Setup(设置时间,触发器的输入在时钟边缘之前保持稳定所需的时间量)、Hold(保持时间,是触发器的输入在时钟边缘后保持稳定所需的最小时间量)、Pulse Width(脉冲宽度,是时钟clk的高电平宽度和低电平宽度)。这三部分对于确保寄存器稳定输出非常关键。
- WNS代表最差情况下的负时序裕量;
- TNS代表最差情况下负时序裕量之和;
- WHS代表最差情况下保持时序裕量;
- THS代表最差情况下负保持时序裕量路径之和;
- WPWS代表最差情况下脉冲宽度违例;
- TPWS代表最差情况下脉冲宽度负时序裕量之和。
静态时序分析需要根据处理器中信号到达单元的要求时间计算出时序裕量Slack,当Slack为正值时,说明设计满足静态时序要求。在静态时序分析时,这些参数为正表示静态时序正常,没有违规,否则,表示静态时序违规。
时序报告如图3-22所示,可以发现,WNS为0值,WHS为正值0.056ns,WPWS为正值3ns,该三个值均为非负值,则说明能达到时序要求,即经过综合与布局布线添加时序后的工程工作正常。