]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/lx-rocon.git/commitdiff
Tumbl - disable GPRF forward if finish_wrb_mem_s is clock cycle cause.
authorPavel Pisa <ppisa@pikron.com>
Wed, 31 Dec 2014 11:14:05 +0000 (12:14 +0100)
committerPavel Pisa <ppisa@pikron.com>
Wed, 31 Dec 2014 11:14:05 +0000 (12:14 +0100)
Signed-off-by: Pavel Pisa <ppisa@pikron.com>
hw/lx-rocon_tumbl/lx_rocon_gprf_abd.vhd
hw/lx-rocon_tumbl/lx_rocon_tumbl.vhd
hw/lx_rocon_pkg.vhd
submodule/tumbl

index 94cf3da29d2651efdf490683e86ec5b08e22ea85..1cb7446ab6a3f4690b217bb25315cb276cc92359 100644 (file)
@@ -16,6 +16,8 @@ entity lx_rocon_gprf_abd is
                clk_i        :  in std_logic;
                rst_i        :  in std_logic;
                clken_i      :  in std_logic;
+               gprf_finish_wrb_mem_i : in std_logic;
+
                --
                ID2GPRF_i    :  in ID2GPRF_Type;
                MEM_WRB_i    :  in WRB_Type;
@@ -158,9 +160,9 @@ p_regd:
        begin
                wait until clk_i'event and clk_i = '1';
                if (clken_i = '1') then
-                       wthru_rA_r <= not ena_rA_s;
-                       wthru_rB_r <= not ena_rB_s;
-                       wthru_rD_r <= not ena_rD_s;
+                       wthru_rA_r <= not ena_rA_s and not gprf_finish_wrb_mem_i;
+                       wthru_rB_r <= not ena_rB_s and not gprf_finish_wrb_mem_i;
+                       wthru_rD_r <= not ena_rD_s and not gprf_finish_wrb_mem_i;
                end if;
        end process;
 
index eafdf59cf66c7d38e1385e298e0d06dc9f3a5166..5b9008a398ebda69f2f55c3dfbec807aa4a7f44f 100644 (file)
@@ -63,6 +63,7 @@ architecture rtl of lx_rocon_tumbl is
        signal imem_addr_s   : std_logic_vector((IMEM_ABITS_g-1) downto 0);
        signal imem_data_s   : std_logic_vector(31 downto 0);
        signal gprf_clken_s  : std_logic;
+       signal gprf_finish_wrb_mem_s : std_logic;
        signal core_clken_s  : std_logic;
        signal pc_ctrl_s     : std_logic;
        signal c2dmemb_s     : CORE2DMEMB_Type;
@@ -176,6 +177,7 @@ I_GPRF: lx_rocon_gprf_abd
                clk_i        => clk_i,
                rst_i        => rst_i,
                clken_i      => gprf_really_clken_s,
+               gprf_finish_wrb_mem_i => gprf_finish_wrb_mem_s,
                --
                ID2GPRF_i    => ID2GPRF_s,
                MEM_WRB_i    => MEM_WRB_s,
@@ -257,6 +259,7 @@ I_CTRL: core_ctrl
                delay_bit_o     => delay_bit_r,
                -- GPRF control
                gprf_clken_o    => gprf_clken_s,
+               gprf_finish_wrb_mem_o => gprf_finish_wrb_mem_s,
                -- exeq to fetch feedback registers
                EX2IF_REG_i     => EX2IF_s,
                EX2IF_REG_o     => EX2IF_r,
index 85bec18e83dd2ac094e809215dad9a5abd843e9b..59b79ebd04e0a8418f3c854025e3c2bee66e87ce 100644 (file)
@@ -364,6 +364,7 @@ package lx_rocon_pkg is
                clk_i        :  in std_logic;
                rst_i        :  in std_logic;
                clken_i      :  in std_logic;
+               gprf_finish_wrb_mem_i :  in std_logic;
                --
                ID2GPRF_i    :  in ID2GPRF_Type;
                MEM_WRB_i    :  in WRB_Type;
index 0e360bb03b9126943802fc74133e0e022bed48bf..a2a61e3911b4bc4823dbd61a7806bbdadef5972e 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 0e360bb03b9126943802fc74133e0e022bed48bf
+Subproject commit a2a61e3911b4bc4823dbd61a7806bbdadef5972e