diff --git a/sram/verilog/sl_sram.v b/sram/verilog/sl_sram.v index d99ee2d6cafc870342b35177f9102d8864b7822d..64b0786b37457254a5da272f245eebf0c915ba6b 100644 --- a/sram/verilog/sl_sram.v +++ b/sram/verilog/sl_sram.v @@ -35,7 +35,7 @@ module sl_sram #( // fixed pre-compiled 16K instance supported localparam TIE_EMA = 3'b010; localparam TIE_EMAW = 2'b00; -wire [11:0] ADDR12 = ADDR; +wire [AW-3:0] ADDR12 = ADDR; wire [31:0] WDATA32 = WDATA; wire [31:0] RDATA32; assign RDATA = RDATA32; @@ -44,22 +44,47 @@ wire GWEN = &(~WREN); wire [31:0] WEN32 = { {8{!WREN[3]}},{8{!WREN[2]}},{8{!WREN[1]}},{8{!WREN[0]}} }; localparam TIE_RET1N = 1'b1; - rf_sp_hdf - u_rf_sp_hdf ( -`ifdef POWER_PINS - .VDD (VDD), - .VSS (VSS), -`endif - .Q (RDATA32), - .CLK (HCLK), - .CEN (CEN), - .WEN (WEN32), - .A (ADDR12), - .D (WDATA32), - .EMA (TIE_EMA), - .EMAW (TIE_EMAW), - .GWEN (GWEN), - .RET1N (TIE_RET1N) - ); +generate + if (AW==14) begin + rf_16k + u_rf_sp_hdf ( + `ifdef POWER_PINS + .VDD (VDD), + .VSS (VSS), + `endif + .Q (RDATA32), + .CLK (HCLK), + .CEN (CEN), + .WEN (WEN32), + .A (ADDR12), + .D (WDATA32), + .EMA (TIE_EMA), + .EMAW (TIE_EMAW), + .GWEN (GWEN), + .RET1N (TIE_RET1N) + ); + + end + else if (AW==13) begin + rf_08k + u_rf_sp_hdf ( + `ifdef POWER_PINS + .VDD (VDD), + .VSS (VSS), + `endif + .Q (RDATA32), + .CLK (HCLK), + .CEN (CEN), + .WEN (WEN32), + .A (ADDR12), + .D (WDATA32), + .EMA (TIE_EMA), + .EMAW (TIE_EMAW), + .GWEN (GWEN), + .RET1N (TIE_RET1N) + ); + end +endgenerate + endmodule