Added hansimem testcase (memory with async reset)
authorClifford Wolf <clifford@clifford.at>
Sun, 24 Mar 2013 09:40:40 +0000 (10:40 +0100)
committerClifford Wolf <clifford@clifford.at>
Sun, 24 Mar 2013 09:40:40 +0000 (10:40 +0100)
tests/simple/hansimem.v [new file with mode: 0644]

diff --git a/tests/simple/hansimem.v b/tests/simple/hansimem.v
new file mode 100644 (file)
index 0000000..b02b6c6
--- /dev/null
@@ -0,0 +1,44 @@
+
+module MyMem #(
+  parameter AddrWidth = 4,
+  parameter DataWidth = 4) (
+  (* gentb_constant = 1 *)
+  input                  Reset_n_i,
+  input                  Clk_i,
+  input  [AddrWidth-1:0] Addr_i,
+  input  [DataWidth-1:0] Data_i,
+  output [DataWidth-1:0] Data_o,
+  input                  WR_i);
+
+  reg Data_o;
+
+  localparam Size = 2**AddrWidth;
+
+  (* mem2reg *)
+  reg [DataWidth-1:0] Mem[Size-1:0];
+
+  integer i;
+
+  always @(negedge Reset_n_i or posedge Clk_i)
+  begin
+    //$display("Data1 = %b, Data11 = %b, Data12 = %b, Data2 = %b, Data21 = %b, Data22 = %b",Data1_i,Data11,Data12,Data2_i,Data21,Data22);
+    if (!Reset_n_i)
+    begin
+      Data_o <= 'bx;
+      for (i=0; i<Size; i=i+1)
+      begin
+        Mem[i] <= 0;
+      end
+    end
+    else
+    begin
+      Data_o <= Mem[Addr_i];
+      if (WR_i)
+      begin
+        Mem[Addr_i] <= Data_i;
+      end
+    end
+  end
+
+endmodule
+