register_file: Report value being written before asserting it's not X
authorPaul Mackerras <paulus@ozlabs.org>
Sat, 13 Jun 2020 07:22:56 +0000 (17:22 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Sat, 13 Jun 2020 07:35:27 +0000 (17:35 +1000)
If a bug causes an indeterminate value to be written to a GPR, an
assert causes simulation to abort.  Move the assert after the report
of the GPR index and value so that we get to know what the bad value
is before the simulation terminates.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
register_file.vhdl

index 2cffeea2511aedbbc9aca93c8efd6b125ad47928..4df032ca7c7d56cc28fc71fb2f2e4c97abb16d9d 100644 (file)
@@ -40,12 +40,12 @@ begin
     begin
         if rising_edge(clk) then
             if w_in.write_enable = '1' then
-                assert not(is_x(w_in.write_data)) and not(is_x(w_in.write_reg)) severity failure;
                if w_in.write_reg(5) = '0' then
                    report "Writing GPR " & to_hstring(w_in.write_reg) & " " & to_hstring(w_in.write_data);
                else
                    report "Writing GSPR " & to_hstring(w_in.write_reg) & " " & to_hstring(w_in.write_data);
                end if;
+                assert not(is_x(w_in.write_data)) and not(is_x(w_in.write_reg)) severity failure;
                 registers(to_integer(unsigned(w_in.write_reg))) <= w_in.write_data;
             end if;
         end if;