2019-06-25 10:43:58 -05:00
|
|
|
// expect-wr-ports 1
|
|
|
|
// expect-rd-ports 1
|
|
|
|
// expect-rd-clk \clk
|
|
|
|
|
2024-04-08 05:44:37 -05:00
|
|
|
module ram2 #(
|
|
|
|
parameter SIZE = 5 // Address size
|
|
|
|
) (input clk,
|
2019-06-25 10:43:58 -05:00
|
|
|
input sel,
|
|
|
|
input we,
|
|
|
|
input [SIZE-1:0] adr,
|
|
|
|
input [63:0] dat_i,
|
|
|
|
output reg [63:0] dat_o);
|
2024-04-08 05:44:37 -05:00
|
|
|
|
2019-06-25 10:43:58 -05:00
|
|
|
|
|
|
|
reg [63:0] mem [0:(1 << SIZE)-1];
|
|
|
|
integer i;
|
|
|
|
|
|
|
|
initial begin
|
|
|
|
for (i = 0; i < (1<<SIZE) - 1; i = i + 1)
|
|
|
|
mem[i] <= 0;
|
|
|
|
end
|
|
|
|
|
|
|
|
always @(posedge clk)
|
|
|
|
if (sel) begin
|
|
|
|
if (~we)
|
|
|
|
dat_o <= mem[adr];
|
|
|
|
else
|
|
|
|
mem[adr] <= dat_i;
|
|
|
|
end
|
|
|
|
endmodule
|