--- /dev/null
+// SPBlock_512W64B8W simulation mode
+module SPBlock_512W64B8W(
+ input clk,
+ input [8:0] a,
+ input [63:0] d,
+ output [63:0] q,
+ // Width of WE determines the write granularity
+ input [7:0] we
+);
+
+genvar i;
+
+reg [63:0] ram [511:0];
+wire[7:0] d_split [7:0];
+reg [8:0] a_hold;
+
+always @(posedge clk) begin
+ a_hold <= a;
+end
+
+assign q = ram[a_hold];
+
+generate
+ for (i = 0; i < 8; i = i + 1) begin
+ assign d_split[i] = d[((i + 1)*8 - 1):i*8];
+
+ always @(posedge clk) begin
+ if (we[i]) begin
+ ram[a][((i + 1)*8 - 1):i*8] = d_split[i];
+ end
+ end
+ end
+endgenerate
+
+endmodule