2 use ieee.std_logic_1164.all;
3 use ieee.numeric_std.all;
10 SIM : boolean := false
15 d_in : in Decode2ToCrFileType;
16 d_out : out CrFileToDecode2Type;
18 w_in : in WritebackToCrFileType;
21 sim_dump : in std_ulogic
25 architecture behaviour of cr_file is
26 signal crs : std_ulogic_vector(31 downto 0) := (others => '0');
27 signal crs_updated : std_ulogic_vector(31 downto 0);
28 signal xerc : xer_common_t := xerc_init;
29 signal xerc_updated : xer_common_t;
31 cr_create_0: process(all)
32 variable hi, lo : integer := 0;
33 variable cr_tmp : std_ulogic_vector(31 downto 0) := (others => '0');
38 if w_in.write_cr_mask(i) = '1' then
41 cr_tmp(hi downto lo) := w_in.write_cr_data(hi downto lo);
45 crs_updated <= cr_tmp;
47 if w_in.write_xerc_enable = '1' then
48 xerc_updated <= w_in.write_xerc_data;
56 cr_write_0: process(clk)
58 if rising_edge(clk) then
59 if w_in.write_cr_enable = '1' then
60 report "Writing " & to_hstring(w_in.write_cr_data) & " to CR mask " & to_hstring(w_in.write_cr_mask);
63 if w_in.write_xerc_enable = '1' then
64 report "Writing XERC";
71 cr_read_0: process(all)
73 -- just return the entire CR to make mfcrf easier for now
74 if d_in.read = '1' then
75 report "Reading CR " & to_hstring(crs_updated);
77 d_out.read_cr_data <= crs_updated;
78 d_out.read_xerc_data <= xerc_updated;
81 sim_dump_test: if SIM generate
84 if sim_dump = '1' then
85 report "CR 00000000" & to_hstring(crs);
86 assert false report "end of test" severity failure;
91 end architecture behaviour;