Register outputs on execute2

Signed-off-by: Anton Blanchard <anton@linux.ibm.com>
pull/42/head
Anton Blanchard 5 years ago committed by Anton Blanchard
parent 819f820090
commit c7aa683ba8

@ -20,29 +20,38 @@ entity execute2 is
end execute2; end execute2;


architecture behave of execute2 is architecture behave of execute2 is
signal e: Execute1ToExecute2Type; signal r, rin : Execute2ToWritebackType;
begin begin
execute2_0: process(clk) execute2_0: process(clk)
begin begin
if (rising_edge(clk)) then if rising_edge(clk) then
e <= e_in; r <= rin;
end if; end if;
end process; end process;


execute2_1: process(all) execute2_1: process(all)
variable v : Execute2ToWritebackType;
begin begin
e_out.valid <= e.valid; v := rin;
e_out.write_enable <= e.write_enable;
e_out.write_reg <= e.write_reg; v.valid := e_in.valid;
e_out.write_data <= e.write_data; v.write_enable := e_in.write_enable;
e_out.write_cr_enable <= e.write_cr_enable; v.write_reg := e_in.write_reg;
e_out.write_cr_mask <= e.write_cr_mask; v.write_data := e_in.write_data;
e_out.write_cr_data <= e.write_cr_data; v.write_cr_enable := e_in.write_cr_enable;

v.write_cr_mask := e_in.write_cr_mask;
if e.valid = '1' and e.rc = '1' then v.write_cr_data := e_in.write_cr_data;
e_out.write_cr_enable <= '1';
e_out.write_cr_mask <= num_to_fxm(0); if e_in.valid = '1' and e_in.rc = '1' then
e_out.write_cr_data <= ppc_cmpi('1', e.write_data, x"0000") & x"0000000"; v.write_cr_enable := '1';
v.write_cr_mask := num_to_fxm(0);
v.write_cr_data := ppc_cmpi('1', e_in.write_data, x"0000") & x"0000000";
end if; end if;

-- Update registers
rin <= v;

-- Update outputs
e_out <= v;
end process; end process;
end; end;

Loading…
Cancel
Save