Remove execute2 stage
Since the condition setting got moved to writeback, execute2 does nothing aside from wasting a cycle. This removes it. Signed-off-by: Paul Mackerras <paulus@ozlabs.org>pull/105/head
parent
9646fe28b0
commit
f49a5a99a5
@ -1,52 +0,0 @@
|
|||||||
library ieee;
|
|
||||||
use ieee.std_logic_1164.all;
|
|
||||||
use ieee.numeric_std.all;
|
|
||||||
|
|
||||||
library work;
|
|
||||||
use work.common.all;
|
|
||||||
|
|
||||||
-- 2 cycle ALU
|
|
||||||
-- We handle rc form instructions here
|
|
||||||
|
|
||||||
entity execute2 is
|
|
||||||
port (
|
|
||||||
clk : in std_ulogic;
|
|
||||||
|
|
||||||
e_in : in Execute1ToExecute2Type;
|
|
||||||
e_out : out Execute2ToWritebackType
|
|
||||||
);
|
|
||||||
end execute2;
|
|
||||||
|
|
||||||
architecture behave of execute2 is
|
|
||||||
signal r, rin : Execute2ToWritebackType;
|
|
||||||
begin
|
|
||||||
execute2_0: process(clk)
|
|
||||||
begin
|
|
||||||
if rising_edge(clk) then
|
|
||||||
r <= rin;
|
|
||||||
end if;
|
|
||||||
end process;
|
|
||||||
|
|
||||||
execute2_1: process(all)
|
|
||||||
variable v : Execute2ToWritebackType;
|
|
||||||
begin
|
|
||||||
v := rin;
|
|
||||||
|
|
||||||
v.valid := e_in.valid;
|
|
||||||
v.write_enable := e_in.write_enable;
|
|
||||||
v.write_reg := e_in.write_reg;
|
|
||||||
v.write_data := e_in.write_data;
|
|
||||||
v.write_cr_enable := e_in.write_cr_enable;
|
|
||||||
v.write_cr_mask := e_in.write_cr_mask;
|
|
||||||
v.write_cr_data := e_in.write_cr_data;
|
|
||||||
v.rc := e_in.rc;
|
|
||||||
v.write_len := e_in.write_len;
|
|
||||||
v.sign_extend := e_in.sign_extend;
|
|
||||||
|
|
||||||
-- Update registers
|
|
||||||
rin <= v;
|
|
||||||
|
|
||||||
-- Update outputs
|
|
||||||
e_out <= r;
|
|
||||||
end process;
|
|
||||||
end;
|
|
Loading…
Reference in New Issue