module oram(clk, rst, dout);
    input clk, rst;
    output reg [15:0] dout;
    reg [7:0] cnt;
    wire web;
    wire [15:0] dout_w;

    sram_16_256_8_scn4m_subm sram (.clk0(clk), .csb0(1'b0), .web0(web), .wmask0(2'b11), .addr0(8'd0), .din0({8'd0, cnt}), .dout0(dout_w));
    always @ (posedge clk or posedge rst) begin
      if (rst) begin
        cnt <= 8'd0;
        dout <= 16'd0;
      end
      else begin
        cnt <= cnt + 1'b1;
        dout <= ~web? dout_w : dout;
      end
    end

    assign web = ~cnt[0];
endmodule

/* module sram_16_256_8_scn4m_subm( */
/* // Port 0: RW */
/*     clk0,csb0,web0,wmask0,addr0,din0,dout0 */
/*   ); */

/*   parameter NUM_WMASKS = 2 ; */
/*   parameter DATA_WIDTH = 16 ; */
/*   parameter ADDR_WIDTH = 8 ; */
/*   parameter RAM_DEPTH = 1 << ADDR_WIDTH; */
/*   // FIXME: This delay is arbitrary. */
/*   parameter DELAY = 3 ; */

/*   input  clk0; // clock */
/*   input   csb0; // active low chip select */
/*   input  web0; // active low write control */
/*   input [NUM_WMASKS-1:0]   wmask0; // write mask */
/*   input [ADDR_WIDTH-1:0]  addr0; */
/*   input [DATA_WIDTH-1:0]  din0; */
/*   output [DATA_WIDTH-1:0] dout0; */

/* endmodule */

