是否可以查看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 代码做了什么。
我有一段代码:
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 代码做了什么。