|  | // Copyright 2023 Google LLC | 
|  | // | 
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | // you may not use this file except in compliance with the License. | 
|  | // You may obtain a copy of the License at | 
|  | // | 
|  | //     http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, software | 
|  | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | // See the License for the specific language governing permissions and | 
|  | // limitations under the License. | 
|  |  | 
|  | module Sram_1rw_256x256( | 
|  | input          clock, | 
|  | input          valid, | 
|  | input          write, | 
|  | input  [7:0]   addr, | 
|  | input  [255:0] wdata, | 
|  | output [255:0] rdata, | 
|  | input          volt_sel | 
|  | ); | 
|  |  | 
|  | `ifdef GF22_ML_CACHE | 
|  | logic [1:0] ma_sawl; | 
|  | logic [1:0] ma_wras; | 
|  | logic       ma_wrasd; | 
|  |  | 
|  | always_comb begin | 
|  | if(volt_sel)begin | 
|  | ma_sawl = 2'b11; | 
|  | ma_wras = 2'b10; | 
|  | ma_wrasd = 1'b0; | 
|  | end | 
|  | else begin | 
|  | ma_sawl = 2'b00; | 
|  | ma_wras = 2'b00; | 
|  | ma_wrasd = 1'b1; | 
|  | end | 
|  | end | 
|  |  | 
|  | MBH_ZSNL_IN22FDX_S1PL_NFLG_W00256B256M04C128  u_gf22_ml_icache | 
|  | ( | 
|  | .clk(clock), | 
|  | .cen(~valid), | 
|  | .rdwen(~write), | 
|  | .deepsleep(1'b0), | 
|  | .powergate(1'b0), | 
|  | .MA_SAWL0(ma_sawl[0]), | 
|  | .MA_SAWL1(ma_sawl[1]), | 
|  | .MA_WRAS0(ma_wras[0]), | 
|  | .MA_WRAS1(ma_wras[1]), | 
|  | .MA_WRASD(ma_wrasd), | 
|  | .a(addr), | 
|  | .d(wdata), | 
|  | .bw({256{1'b1}}), | 
|  | .q(rdata) | 
|  | ); | 
|  | `else | 
|  | reg [255:0] mem [0:255]; | 
|  | reg [7:0] raddr; | 
|  |  | 
|  | assign rdata = mem[raddr]; | 
|  |  | 
|  | always @(posedge clock) begin | 
|  | if (valid & write) begin | 
|  | mem[addr] <= wdata; | 
|  | end | 
|  | if (valid & ~write) begin | 
|  | raddr <= addr; | 
|  | end | 
|  | end | 
|  | `endif // GF22_ML_CACHE | 
|  | endmodule |