summaryrefslogtreecommitdiff
path: root/tests/simple/memory.v
diff options
context:
space:
mode:
Diffstat (limited to 'tests/simple/memory.v')
-rw-r--r--tests/simple/memory.v64
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/simple/memory.v b/tests/simple/memory.v
index d58ed9d1..f38bdafd 100644
--- a/tests/simple/memory.v
+++ b/tests/simple/memory.v
@@ -243,3 +243,67 @@ module memtest10(input clk, input [5:0] din, output [5:0] dout);
assign dout = queue[3];
endmodule
+
+// ----------------------------------------------------------
+
+module memtest11(clk, wen, waddr, raddr, wdata, rdata);
+ input clk, wen;
+ input [1:0] waddr, raddr;
+ input [7:0] wdata;
+ output [7:0] rdata;
+
+ reg [7:0] mem [3:0];
+
+ assign rdata = mem[raddr];
+
+ always @(posedge clk) begin
+ if (wen)
+ mem[waddr] <= wdata;
+ else
+ mem[waddr] <= mem[waddr];
+ end
+endmodule
+
+// ----------------------------------------------------------
+
+module memtest12 (
+ input clk,
+ input [1:0] adr,
+ input [1:0] din,
+ output reg [1:0] q
+);
+ reg [1:0] ram [3:0];
+ always@(posedge clk)
+ {ram[adr], q} <= {din, ram[adr]};
+endmodule
+
+// ----------------------------------------------------------
+
+module memtest13 (
+ input clk, rst,
+ input [1:0] a1, a2, a3, a4, a5, a6,
+ input [3:0] off1, off2,
+ input [31:5] din1,
+ input [3:0] din2, din3,
+ output reg [3:0] dout1, dout2,
+ output reg [31:5] dout3
+);
+ reg [31:5] mem [0:3];
+
+ always @(posedge clk) begin
+ if (rst) begin
+ mem[0] <= 0;
+ mem[1] <= 0;
+ mem[2] <= 0;
+ mem[3] <= 0;
+ end else begin
+ mem[a1] <= din1;
+ mem[a2][14:11] <= din2;
+ mem[a3][5 + off1 +: 4] <= din3;
+ dout1 <= mem[a4][12:9];
+ dout2 <= mem[a5][5 + off2 +: 4];
+ dout3 <= mem[a6];
+ end
+ end
+endmodule
+