]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/tumbl.git/blobdiff - hw/mbl_Pkg.vhd
Implement ITT conditional execution
[fpga/lx-cpu1/tumbl.git] / hw / mbl_Pkg.vhd
index 2b535858c1387fc6b2c3a5c645a1b2e6e96c1654..c81f642f5098be040cebdcf9bb60969637c9ba02 100644 (file)
@@ -55,6 +55,8 @@ PACKAGE mbl_Pkg IS
     TYPE MEM_ACTION_Type    IS (NO_MEM, WR_MEM, RD_MEM);
     TYPE TRANSFER_SIZE_Type IS (WORD, HALFWORD, BYTE);
     TYPE SAVE_REG_Type      IS (NO_SAVE, SAVE_RA, SAVE_RB);
+    TYPE CMP_COND_Type      IS (COND_ALL, COND_EQ, COND_NE, COND_LT, COND_LE, COND_GT, COND_GE);
+    TYPE CMP_COND_TYPE_Type IS (COND_TYPE_ALL, COND_TYPE_IF_THEN, COND_TYPE_IF_THEN_THEN, COND_TYPE_IF_THEN_ELSE);
     --
     TYPE IF2ID_Type IS RECORD
         program_counter : STD_LOGIC_VECTOR (31 DOWNTO 0);
@@ -76,6 +78,8 @@ PACKAGE mbl_Pkg IS
         mem_Action       : MEM_ACTION_Type;         -- rd_mem implies writeback
         transfer_Size    : TRANSFER_SIZE_Type;
         wrb_Action       : WRB_ACTION_Type;
+        cmp_Cond         : CMP_COND_Type;
+        cmp_Cond_Type    : CMP_COND_TYPE_Type;
     END RECORD;
 
     TYPE ID2GPRF_Type IS RECORD
@@ -116,6 +120,11 @@ PACKAGE mbl_Pkg IS
         branch_target : STD_LOGIC_VECTOR (31 DOWNTO 0);
     END RECORD;
 
+    TYPE EX2CTRL_Type IS RECORD
+        flush_first   : STD_LOGIC;
+        flush_second  : STD_LOGIC;
+    END RECORD;
+
     TYPE HALT_Type IS RECORD
         halt          : STD_LOGIC;
         halt_code     : STD_LOGIC_VECTOR ( 4 DOWNTO 0);
@@ -223,12 +232,14 @@ PACKAGE mbl_Pkg IS
     COMPONENT exeq IS
         GENERIC (
             USE_HW_MUL_g : BOOLEAN := FALSE;
-            USE_BARREL_g : BOOLEAN := FALSE
+            USE_BARREL_g : BOOLEAN := FALSE;
+            COMPATIBILITY_MODE_g : BOOLEAN := FALSE
             );
         PORT (
             ID2EX_i      :  IN ID2EX_Type;
             GPRF2EX_i    :  IN GPRF2EX_Type;
             EX2IF_o      : OUT EX2IF_Type;
+            EX2CTRL_o    : OUT EX2CTRL_Type;
             HALT_o       : OUT HALT_Type;
             --
             EX_WRB_i     :  IN WRB_Type;
@@ -291,6 +302,7 @@ PACKAGE mbl_Pkg IS
             -- exeq to fetch feedback registers
             EX2IF_REG_i     :  IN EX2IF_Type;
             EX2IF_REG_o     : OUT EX2IF_Type;
+            EX2CTRL_REG_i   :  IN EX2CTRL_Type;
             -- exeq to core (halting)
             exeq_halt_i     :  IN STD_LOGIC;
             -- exeq to mem pipeline registers