- put dependency signals 'imem_dep', 'dmem_dep' and 'mul_dep' into structure for easier debugging
Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ git-svn-id: http://moon:8086/svn/vhdl/trunk@352 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
@@ -179,9 +179,6 @@ architecture Behavioral of pipeline is
|
|||||||
signal ctrl_lines : ctrl_lines_t;
|
signal ctrl_lines : ctrl_lines_t;
|
||||||
signal branch_ce : STD_LOGIC;
|
signal branch_ce : STD_LOGIC;
|
||||||
signal cpu_run : 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_ctrl : cop_ctrl_in_t;
|
||||||
signal cop_stat : cop_ctrl_out_t;
|
signal cop_stat : cop_ctrl_out_t;
|
||||||
signal cop_din : word_t;
|
signal cop_din : word_t;
|
||||||
@@ -214,21 +211,21 @@ begin
|
|||||||
cpu_run <= ce;
|
cpu_run <= ce;
|
||||||
|
|
||||||
-- Stall Detection Unit ---------------------------------------------------
|
-- Stall Detection Unit ---------------------------------------------------
|
||||||
sdu.ID_nop <= imem_dep or cop_stat.exc_pending or EX_stage.exc or MEM_stage.exc;
|
sdu.ID_nop <= sdu.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.EX_nop <= sdu.mul_dep or ID_stage.nop or ID_stage.exc;
|
||||||
sdu.MEM_nop <= EX_stage.nop or EX_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.ID_stall <= sdu.dmem_dep or sdu.imem_dep or sdu.mul_dep or ID_stage.exc;
|
||||||
sdu.EX_stall <= dmem_dep;
|
sdu.EX_stall <= sdu.dmem_dep;
|
||||||
sdu.MEM_stall <= dmem_dep;
|
sdu.MEM_stall <= sdu.dmem_dep;
|
||||||
sdu.WB_stall <= '0';
|
sdu.WB_stall <= '0';
|
||||||
|
|
||||||
mul_dep <= ID_stage.ctrl.mul_access and (EX_stage.ctrl.mul_start or mul_busy);
|
sdu.mul_dep <= ID_stage.ctrl.mul_access and (EX_stage.ctrl.mul_start or mul_busy);
|
||||||
imem_dep <= not imem_rdy;
|
sdu.imem_dep <= not imem_rdy;
|
||||||
dmem_dep <= not dmem_rdy and MEM_stage.ctrl.dmem_en;
|
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
|
-- Muldiv
|
||||||
|
|||||||
@@ -220,6 +220,9 @@ package mips_types is
|
|||||||
end record;
|
end record;
|
||||||
|
|
||||||
type sdu_t is record
|
type sdu_t is record
|
||||||
|
imem_dep : STD_LOGIC;
|
||||||
|
dmem_dep : STD_LOGIC;
|
||||||
|
mul_dep : STD_LOGIC;
|
||||||
ID_nop : STD_LOGIC;
|
ID_nop : STD_LOGIC;
|
||||||
EX_nop : STD_LOGIC;
|
EX_nop : STD_LOGIC;
|
||||||
MEM_nop : STD_LOGIC;
|
MEM_nop : STD_LOGIC;
|
||||||
|
|||||||
Reference in New Issue
Block a user