]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/tumbl.git/blobdiff - hw/mbl_Pkg.vhd
Customized instruction set (with compatibility mode)
[fpga/lx-cpu1/tumbl.git] / hw / mbl_Pkg.vhd
index f3a35bc61c7b44179677d0886fb714bcea32aaa1..2b535858c1387fc6b2c3a5c645a1b2e6e96c1654 100644 (file)
@@ -45,7 +45,7 @@ PACKAGE mbl_Pkg IS
 
     TYPE ALU_ACTION_Type    IS (A_NOP, A_ADD, A_CMP, A_CMPU, A_OR, A_AND, A_XOR,
                                         A_SHIFT, A_SEXT8, A_SEXT16, A_MFS, A_MTS,
-                                                    A_MUL, A_BSLL, A_BSRL, A_BSRA);
+                                        A_MUL, A_BSLL, A_BSRL, A_BSRA, A_HALT);
     TYPE ALU_IN1_Type       IS (ALU_IN_REGA, ALU_IN_NOT_REGA, ALU_IN_PC, ALU_IN_ZERO);
     TYPE ALU_IN2_Type       IS (ALU_IN_REGB, ALU_IN_NOT_REGB, ALU_IN_IMM, ALU_IN_NOT_IMM);
     TYPE ALU_CIN_Type       IS (CIN_ZERO, CIN_ONE, FROM_MSR, FROM_IN1);
@@ -116,6 +116,11 @@ PACKAGE mbl_Pkg IS
         branch_target : STD_LOGIC_VECTOR (31 DOWNTO 0);
     END RECORD;
 
+    TYPE HALT_Type IS RECORD
+        halt          : STD_LOGIC;
+        halt_code     : STD_LOGIC_VECTOR ( 4 DOWNTO 0);
+    END RECORD;
+
     TYPE EX2MEM_Type IS RECORD
         mem_Action      : MEM_ACTION_Type;                  -- RD_MEM implies writeback
         wrb_Action      : WRB_ACTION_Type;
@@ -183,8 +188,9 @@ PACKAGE mbl_Pkg IS
 
     COMPONENT decode IS
         GENERIC (
-            USE_HW_MUL_g : BOOLEAN := FALSE;
-            USE_BARREL_g : BOOLEAN := FALSE
+            USE_HW_MUL_g : BOOLEAN := TRUE;
+            USE_BARREL_g : BOOLEAN := TRUE;
+            COMPATIBILITY_MODE_g : BOOLEAN := FALSE
             );
         PORT (
             IF2ID_i     :  IN IF2ID_Type;
@@ -195,8 +201,8 @@ PACKAGE mbl_Pkg IS
             --
             INT_CTRL_i  :  IN INT_CTRL_Type;
             ID2CTRL_o   : OUT ID2CTRL_Type;
-                                               --
-                                               noLiteOpc_o : OUT STD_LOGIC
+            --
+            noLiteOpc_o : OUT STD_LOGIC
             );
     END COMPONENT;
 
@@ -223,6 +229,7 @@ PACKAGE mbl_Pkg IS
             ID2EX_i      :  IN ID2EX_Type;
             GPRF2EX_i    :  IN GPRF2EX_Type;
             EX2IF_o      : OUT EX2IF_Type;
+            HALT_o       : OUT HALT_Type;
             --
             EX_WRB_i     :  IN WRB_Type;
             EX_WRB_o     : OUT WRB_Type;
@@ -257,14 +264,18 @@ PACKAGE mbl_Pkg IS
     END COMPONENT;
 
     COMPONENT core_ctrl IS
+        GENERIC (
+            COMPATIBILITY_MODE_g : BOOLEAN := FALSE
+            );
         PORT (
             clk_i           :  IN STD_LOGIC;
             rst_i           :  IN STD_LOGIC;
             halt_i          :  IN STD_LOGIC;
+            bad_op_i        :  IN STD_LOGIC;
             int_i           :  IN STD_LOGIC;
             trace_i         :  IN STD_LOGIC;
             trace_kick_i    :  IN STD_LOGIC;
-            core_clk_en_o   : OUT STD_LOGIC;
+            core_clken_o    : OUT STD_LOGIC;
             -- specific fetch i/o
             imem_addr_o     : OUT STD_LOGIC_VECTOR (31 DOWNTO 0);
             imem_clken_o    : OUT STD_LOGIC;
@@ -280,6 +291,8 @@ PACKAGE mbl_Pkg IS
             -- exeq to fetch feedback registers
             EX2IF_REG_i     :  IN EX2IF_Type;
             EX2IF_REG_o     : OUT EX2IF_Type;
+            -- exeq to core (halting)
+            exeq_halt_i     :  IN STD_LOGIC;
             -- exeq to mem pipeline registers
             EX2MEM_REG_i    :  IN EX2MEM_Type;
             EX2MEM_REG_o    : OUT EX2MEM_Type;
@@ -302,8 +315,7 @@ PACKAGE mbl_Pkg IS
             MSR_i           :  IN MSR_Type;
             MSR_o           : OUT MSR_Type;
             -- miscellaneous
-            MEM2CTRL_i      :  IN MEM2CTRL_Type;
-            done_o          : OUT STD_LOGIC
+            MEM2CTRL_i      :  IN MEM2CTRL_Type
             );
     END COMPONENT;