| // expect-wr-ports 1 |
| // expect-rd-ports 1 |
| |
| module generic_sram_byte_en #( |
| parameter DATA_WIDTH = 32, |
| parameter ADDRESS_WIDTH = 4 |
| ) ( |
| input i_clk, |
| input [DATA_WIDTH-1:0] i_write_data, |
| input i_write_enable, |
| input [ADDRESS_WIDTH-1:0] i_address, |
| input [DATA_WIDTH/8-1:0] i_byte_enable, |
| output reg [DATA_WIDTH-1:0] o_read_data |
| ); |
| |
| reg [DATA_WIDTH-1:0] mem [0:2**ADDRESS_WIDTH-1]; |
| integer i; |
| |
| always @(posedge i_clk) begin |
| for (i=0;i<DATA_WIDTH/8;i=i+1) |
| if (i_write_enable && i_byte_enable[i]) |
| mem[i_address][i*8 +: 8] <= i_write_data[i*8 +: 8]; |
| o_read_data <= mem[i_address]; |
| end |
| |
| endmodule |