report_ram_utilization这个命令在Vivado2018.3版本中就已经存在。在2019.1的版本中有了微小的更新,增加了一个新的选项-include_path_info。借此,我们详细介绍一下这个命令。
尽管通过report_utilization命令可查看不同RAM(Block RAM,Distributed RAM,URAM)的资源利用率,但report_ram_utilization能够获得更多的信息,这对于时序分析非常有利。
report_ram_utilization生成报告由五部分构成。
第一部分是Summary,显示了不同RAM的利用率,如下图所示。
第二部分Memory Description显示了Memory Name、Array Size和Memory Type等信息,如下图所示。其中通过Memory Name结合get_cells命令可找到对应的Memory。
第三部分Memory Utilization显示了每个Memory的大小以及Primitive,如下图所示。在这部分内容中可以看到每个Memory的深度、宽度等信息。
第四部分Memory Performance主要用于时序分析,如下图所示。在这部分可以看到DOA_REG、DOB_REG等Block RAM的属性,据此可判定该BRAM是否使用了自带的Embedded Register。同时还可以看到IREG_A、OREG_A等UltraRAM的属性,据此可判定该URAM是否使用了自带的输入寄存器和输出寄存器。
第五部分Memory Power主要用于分析BRAM对整个设计的功耗贡献,如下图所示。从这里可以看到每个BRAM各自端口的WRITE_MODE(READ_FIRST、WRITE_FIRST和NO_CHANGE)。
这个命令的使用方法也很简单,如下图所示。可以针对整个设计使用该命令,也可以针对某个模块使用该命令,只需添加选项-cells。生成报告可以在Tcl Console里直接显示,也可通过选项-file保存在指定文件中。