是否可以查看vivado是否推断出blockram?

Is it possible to see if vivado inferred blockram?

我有一段代码:

module cw305_reg_aes #(
   parameter pADDR_WIDTH = 21,
   parameter pBYTECNT_SIZE = 14,
   parameter pPK_WIDTH = 800 // 800 * 8
)(
   input  wire                                  usb_clk,
   input  wire                                  crypto_clk,
   input  wire [pADDR_WIDTH-pBYTECNT_SIZE-1:0]  reg_address,

   input  wire [pBYTECNT_SIZE-1:0]              reg_bytecnt,

   output reg  [7:0]                            read_data,
   input  wire [7:0]                            write_data,
   input  wire                                  reg_read,
   input  wire                                  reg_write,

   output wire [7:0]                            reg_pk
);

reg  [7:0]                   reg_read_data;
reg  [7:0]                   reg_crypt_public_key [pPK_WIDTH-1:0];
(* ASYNC_REG = "TRUE" *) reg  [7:0] reg_crypt_public_key_crypt [pPK_WIDTH-1:0];

always @(posedge crypto_clk) begin
   for (i=0; i<pPK_WIDTH;i=i+1) begin
      reg_crypt_public_key_crypt[i] <= reg_crypt_public_key[i];
   end   
end

assign reg_pk = reg_crypt_public_key_crypt[0]

always @(*) begin
   if (reg_read) begin
      case (reg_address)          
         `REG_CRYPT_PUBLIC_KEY:      reg_read_data = reg_crypt_public_key[reg_bytecnt];
         default:                    reg_read_data = 0;
      endcase
   end
   else
      reg_read_data = 0;
end

always @(posedge usb_clk) begin
   if (reg_write) begin
      case (reg_address)
         `REG_CRYPT_PUBLIC_KEY:      reg_crypt_public_key[reg_bytecnt] <= write_data;
      endcase
   end
end

如何查看 Vivado 2021.1 是否为 reg_crypt_public_key 数组推断块 ram 而不是分布式 ram?

综合日志中报告了块 ram。如果推断出 BRAM,将有一个部分详细说明 HDL 的哪些部分产生了哪些 BRAM,有多少端口、宽度等

它看起来像论坛上提到的日志:https://support.xilinx.com/s/article/61027?language=en_US 与 header 喜欢

|Module Name   ------     | RTL Object | PORT A (depth X width)   | W | R | PORT B (depth X width)  | W | R | OUT_REG      | RAMB18 | RAMB36 | Hierarchical Name  

此外,打开最终利用率报告将显示设计中使用 BRAM 与 LUT 作为内存(分布式)的分层分解。

最后请参阅综合指南,了解如何根据制造商推荐的代码指南有意推断 BRAM。 p. 111https://www.xilinx.com/content/dam/xilinx/support/documents/sw_manuals/xilinx2021_2/ug901-vivado-synthesis.pdf

另一种方式:

  • 在 Vivado GUI 中打开 post 布线设计或 dcp 文件。
  • 找到网表 window 并浏览分层路径到预期的 BRAM 路径。
  • 右键单击 'schematic' 网表中的设计元素 window。
  • 原理图查看器打开显示:推断的 BRAM、分布式 RAM 或寄存器。

这里是一个显示连接到 BRAM 的寄存器的小例子:

这是一种通用方法,您可以探索这些工具对 RTL 代码做了什么。