Add Tercel PHY reset synchronization
[microwatt.git] / dram_tb.vhdl
index af0578e4933396103122ff619ce50b65ba4ccea2..ca7c90b82a9ff54fabc2338cbe24fb16d302b56c 100644 (file)
@@ -43,6 +43,9 @@ begin
         generic map(
             DRAM_ABITS => 24,
             DRAM_ALINES => 1,
+            DRAM_DLINES => 16,
+            DRAM_CKLINES => 1,
+            DRAM_PORT_WIDTH => 128,
             PAYLOAD_FILE => DRAM_INIT_FILE,
             PAYLOAD_SIZE => DRAM_INIT_SIZE
             )
@@ -61,9 +64,6 @@ begin
             wb_ctrl_is_csr      => '0',
             wb_ctrl_is_init     => '0',
 
-            serial_tx           => open,
-            serial_rx           => '1',
-
             init_done           => open,
             init_error          => open,
 
@@ -239,14 +239,14 @@ begin
         wb_read(a);
         wait_acks(1);
         read_data(d);
-        assert d = x"0123456789abcdef" report "bad data" severity failure;
+        assert d = x"0123456789abcdef" report "bad data, got " & to_hstring(d) severity failure;
 
         report "Simple read hit...";
         clr_acks;
         wb_read(a);
         wait_acks(1);
         read_data(d);
-        assert d = x"0123456789abcdef" report "bad data" severity failure;
+        assert d = x"0123456789abcdef" report "bad data, got " & to_hstring(d) severity failure;
 
         report "Back to back 4 stores 4 reads on hit...";
         clr_acks;
@@ -296,6 +296,43 @@ begin
             check_data(make_pattern(i));
         end loop;
 
+        report "Pre-fill a line";
+        a(11) := '1';
+        clr_acks;
+        wb_write(add_off(a,  0), x"1111111100000000", x"ff");
+        wb_write(add_off(a,  8), x"3333333322222222", x"ff");
+        wb_write(add_off(a, 16), x"5555555544444444", x"ff");
+        wb_write(add_off(a, 24), x"7777777766666666", x"ff");
+        wb_write(add_off(a, 32), x"9999999988888888", x"ff");
+        wb_write(add_off(a, 40), x"bbbbbbbbaaaaaaaa", x"ff");
+        wb_write(add_off(a, 48), x"ddddddddcccccccc", x"ff");
+        wb_write(add_off(a, 56), x"ffffffffeeeeeeee", x"ff");
+        wb_write(add_off(a, 64), x"1111111100000000", x"ff");
+        wb_write(add_off(a, 72), x"3333333322222222", x"ff");
+        wb_write(add_off(a, 80), x"5555555544444444", x"ff");
+        wb_write(add_off(a, 88), x"7777777766666666", x"ff");
+        wb_write(add_off(a, 96), x"9999999988888888", x"ff");
+        wb_write(add_off(a,104), x"bbbbbbbbaaaaaaaa", x"ff");
+        wb_write(add_off(a,112), x"ddddddddcccccccc", x"ff");
+        wb_write(add_off(a,120), x"ffffffffeeeeeeee", x"ff");
+        wait_acks(16);
+
+        report "Scattered from middle of line...";
+        clr_acks;
+        wb_read(add_off(a,24));
+        wb_read(add_off(a,32));
+        wb_read(add_off(a, 0));
+        wb_read(add_off(a,16));
+        wait_acks(4);
+        read_data(d);
+        assert d = x"7777777766666666" report "bad data (24), got " & to_hstring(d) severity failure;
+        read_data(d);
+        assert d = x"9999999988888888" report "bad data (32), got " & to_hstring(d) severity failure;
+        read_data(d);
+        assert d = x"1111111100000000" report "bad data (0), got " & to_hstring(d) severity failure;
+        read_data(d);
+        assert d = x"5555555544444444" report "bad data (16), got " & to_hstring(d) severity failure;
+
         std.env.finish;
     end process;
 end architecture;