diff --git a/lib/CPUs/MIPS/src/core/mips_pipeline.vhd b/lib/CPUs/MIPS/src/core/mips_pipeline.vhd index 210d566..0264e29 100644 --- a/lib/CPUs/MIPS/src/core/mips_pipeline.vhd +++ b/lib/CPUs/MIPS/src/core/mips_pipeline.vhd @@ -179,9 +179,6 @@ architecture Behavioral of pipeline is signal ctrl_lines : ctrl_lines_t; signal branch_ce : STD_LOGIC; signal cpu_run : STD_LOGIC; - signal mul_dep : STD_LOGIC; - signal imem_dep : STD_LOGIC; - signal dmem_dep : STD_LOGIC; signal cop_ctrl : cop_ctrl_in_t; signal cop_stat : cop_ctrl_out_t; signal cop_din : word_t; @@ -214,21 +211,21 @@ begin cpu_run <= ce; -- Stall Detection Unit --------------------------------------------------- - sdu.ID_nop <= imem_dep or cop_stat.exc_pending or EX_stage.exc or MEM_stage.exc; - sdu.EX_nop <= mul_dep or ID_stage.nop or ID_stage.exc; + sdu.ID_nop <= sdu.imem_dep or cop_stat.exc_pending or EX_stage.exc or MEM_stage.exc; + sdu.EX_nop <= sdu.mul_dep or ID_stage.nop or ID_stage.exc; sdu.MEM_nop <= EX_stage.nop or EX_stage.exc; - sdu.WB_nop <= dmem_dep or MEM_stage.nop; + sdu.WB_nop <= sdu.dmem_dep or MEM_stage.nop; - sdu.ID_stall <= dmem_dep or imem_dep or mul_dep or ID_stage.exc; - sdu.EX_stall <= dmem_dep; - sdu.MEM_stall <= dmem_dep; + sdu.ID_stall <= sdu.dmem_dep or sdu.imem_dep or sdu.mul_dep or ID_stage.exc; + sdu.EX_stall <= sdu.dmem_dep; + sdu.MEM_stall <= sdu.dmem_dep; sdu.WB_stall <= '0'; - mul_dep <= ID_stage.ctrl.mul_access and (EX_stage.ctrl.mul_start or mul_busy); - imem_dep <= not imem_rdy; - dmem_dep <= not dmem_rdy and MEM_stage.ctrl.dmem_en; + sdu.mul_dep <= ID_stage.ctrl.mul_access and (EX_stage.ctrl.mul_start or mul_busy); + sdu.imem_dep <= not imem_rdy; + sdu.dmem_dep <= not dmem_rdy and MEM_stage.ctrl.dmem_en; --------------------------------------------------------------------------- - imem_en <= cpu_run and not (mul_dep or dmem_dep or cop_stat.exc_commit); + imem_en <= cpu_run and not (sdu.mul_dep or sdu.dmem_dep or cop_stat.exc_commit); -------------------------------------------------------------------------- -- Muldiv diff --git a/lib/CPUs/MIPS/src/core/mips_types.vhd b/lib/CPUs/MIPS/src/core/mips_types.vhd index a6db7be..f599822 100644 --- a/lib/CPUs/MIPS/src/core/mips_types.vhd +++ b/lib/CPUs/MIPS/src/core/mips_types.vhd @@ -220,6 +220,9 @@ package mips_types is end record; type sdu_t is record + imem_dep : STD_LOGIC; + dmem_dep : STD_LOGIC; + mul_dep : STD_LOGIC; ID_nop : STD_LOGIC; EX_nop : STD_LOGIC; MEM_nop : STD_LOGIC;