Changeset 69 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h
- Timestamp:
- Dec 12, 2007, 5:02:47 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h
r56 r69 17 17 #include "Common/include/Debug.h" 18 18 19 #ifndef SYSTEMC_VHDL_COMPATIBILITY 19 20 #include "Behavioural/Generic/Queue_Control/include/Queue_Control.h" 21 #endif 20 22 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h" 21 #include "Behavioural/ Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Types.h"23 #include "Behavioural/include/Types.h" 22 24 #ifdef STATISTICS 23 25 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Statistics.h" … … 42 44 class Treservation_station_entry_t 43 45 { 44 public : Tcontext_t _context_id ; 45 public : Tpacket_t _packet_id ; 46 public : Tcontext_t _context_id ; 47 public : Tcontext_t _front_end_id ; 48 public : Tcontext_t _ooo_engine_id ; 49 public : Tpacket_t _rob_id ; 46 50 public : Toperation_t _operation ; 47 51 public : Ttype_t _type ; … … 68 72 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Treservation_station_entry_t & x) 69 73 { 70 output_stream << " * _context_id : " << toString(x._context_id ) << endl 71 << " * _packet_id : " << toString(x._packet_id ) << endl 72 << " * _operation : " << toString(x._operation ) << endl 73 << " * _type : " << toString(x._type ) << endl 74 << " * _has_immediat: " << toString(x._has_immediat) << endl 75 << " * _immediat : " << toString(x._immediat ) << endl 76 // << " * _read_ra : " << toString(x._read_ra ) << endl 77 << " * _num_reg_ra : " << toString(x._num_reg_ra ) << endl 78 << " * _data_ra_val : " << toString(x._data_ra_val ) << endl 79 << " * _data_ra : " << toString(x._data_ra ) << endl 80 // << " * _read_rb : " << toString(x._read_rb ) << endl 81 << " * _num_reg_rb : " << toString(x._num_reg_rb ) << endl 82 << " * _data_rb_val : " << toString(x._data_rb_val ) << endl 83 << " * _data_rb : " << toString(x._data_rb ) << endl 84 // << " * _read_rc : " << toString(x._read_rc ) << endl 85 << " * _num_reg_rc : " << toString(x._num_reg_rc ) << endl 86 << " * _data_rc_val : " << toString(x._data_rc_val ) << endl 87 << " * _data_rc : " << toString(x._data_rc ) << endl 88 << " * _write_rd : " << toString(x._write_rd ) << endl 89 << " * _num_reg_rd : " << toString(x._num_reg_rd ) << endl 90 << " * _write_re : " << toString(x._write_re ) << endl 91 << " * _num_reg_re : " << toString(x._num_reg_re ) << endl; 74 output_stream << " * _context_id : " << toString(x._context_id ) << endl 75 << " * _front_end_id : " << toString(x._front_end_id ) << endl 76 << " * _ooo_engine_id : " << toString(x._ooo_engine_id ) << endl 77 << " * _rob_id : " << toString(x._rob_id ) << endl 78 << " * _operation : " << toString(x._operation ) << endl 79 << " * _type : " << toString(x._type ) << endl 80 << " * _has_immediat : " << toString(x._has_immediat ) << endl 81 << " * _immediat : " << toString(x._immediat ) << endl 82 // << " * _read_ra : " << toString(x._read_ra ) << endl 83 << " * _num_reg_ra : " << toString(x._num_reg_ra ) << endl 84 << " * _data_ra_val : " << toString(x._data_ra_val ) << endl 85 << " * _data_ra : " << toString(x._data_ra ) << endl 86 // << " * _read_rb : " << toString(x._read_rb ) << endl 87 << " * _num_reg_rb : " << toString(x._num_reg_rb ) << endl 88 << " * _data_rb_val : " << toString(x._data_rb_val ) << endl 89 << " * _data_rb : " << toString(x._data_rb ) << endl 90 // << " * _read_rc : " << toString(x._read_rc ) << endl 91 << " * _num_reg_rc : " << toString(x._num_reg_rc ) << endl 92 << " * _data_rc_val : " << toString(x._data_rc_val ) << endl 93 << " * _data_rc : " << toString(x._data_rc ) << endl 94 << " * _write_rd : " << toString(x._write_rd ) << endl 95 << " * _num_reg_rd : " << toString(x._num_reg_rd ) << endl 96 << " * _write_re : " << toString(x._write_re ) << endl 97 << " * _num_reg_re : " << toString(x._num_reg_re ) << endl; 92 98 93 99 return output_stream; … … 123 129 public : SC_IN (Tcontrol_t) * in_NRESET ; 124 130 125 // ~~~~~[ Interface "reservation_station_in" ]~~~~~~~~~~~~~~~~~~~~~~~~ 126 public : SC_IN (Tcontrol_t ) * in_RESERVATION_STATION_IN_VAL ; 127 public : SC_OUT(Tcontrol_t ) * out_RESERVATION_STATION_IN_ACK ; 128 public : SC_IN (Tcontext_t ) * in_RESERVATION_STATION_IN_CONTEXT_ID ; 129 public : SC_IN (Tpacket_t ) * in_RESERVATION_STATION_IN_PACKET_ID ; 130 public : SC_IN (Toperation_t ) * in_RESERVATION_STATION_IN_OPERATION ; 131 public : SC_IN (Ttype_t ) * in_RESERVATION_STATION_IN_TYPE ; 132 public : SC_IN (Tcontrol_t ) * in_RESERVATION_STATION_IN_HAS_IMMEDIAT; 133 public : SC_IN (Tgeneral_data_t ) * in_RESERVATION_STATION_IN_IMMEDIAT ; 134 //public : SC_IN (Tcontrol_t ) * in_RESERVATION_STATION_IN_READ_RA ; 135 public : SC_IN (Tgeneral_address_t) * in_RESERVATION_STATION_IN_NUM_REG_RA ; 136 public : SC_IN (Tcontrol_t ) * in_RESERVATION_STATION_IN_DATA_RA_VAL ; 137 public : SC_IN (Tgeneral_data_t ) * in_RESERVATION_STATION_IN_DATA_RA ; 138 //public : SC_IN (Tcontrol_t ) * in_RESERVATION_STATION_IN_READ_RB ; 139 public : SC_IN (Tgeneral_address_t) * in_RESERVATION_STATION_IN_NUM_REG_RB ; 140 public : SC_IN (Tcontrol_t ) * in_RESERVATION_STATION_IN_DATA_RB_VAL ; 141 public : SC_IN (Tgeneral_data_t ) * in_RESERVATION_STATION_IN_DATA_RB ; 142 //public : SC_IN (Tcontrol_t ) * in_RESERVATION_STATION_IN_READ_RC ; 143 public : SC_IN (Tspecial_address_t) * in_RESERVATION_STATION_IN_NUM_REG_RC ; 144 public : SC_IN (Tcontrol_t ) * in_RESERVATION_STATION_IN_DATA_RC_VAL ; 145 public : SC_IN (Tspecial_data_t ) * in_RESERVATION_STATION_IN_DATA_RC ; 146 public : SC_IN (Tcontrol_t ) * in_RESERVATION_STATION_IN_WRITE_RD ; 147 public : SC_IN (Tgeneral_address_t) * in_RESERVATION_STATION_IN_NUM_REG_RD ; 148 public : SC_IN (Tcontrol_t ) * in_RESERVATION_STATION_IN_WRITE_RE ; 149 public : SC_IN (Tspecial_address_t) * in_RESERVATION_STATION_IN_NUM_REG_RE ; 150 151 // ~~~~~[ Interface "reservation_station_out" ]~~~~~~~~~~~~~~~~~~~~~~~ 152 public : SC_OUT(Tcontrol_t ) ** out_RESERVATION_STATION_OUT_VAL ; 153 public : SC_IN (Tcontrol_t ) ** in_RESERVATION_STATION_OUT_ACK ; 154 public : SC_OUT(Tcontext_t ) ** out_RESERVATION_STATION_OUT_CONTEXT_ID ; 155 public : SC_OUT(Tpacket_t ) ** out_RESERVATION_STATION_OUT_PACKET_ID ; 156 public : SC_OUT(Toperation_t ) ** out_RESERVATION_STATION_OUT_OPERATION ; 157 public : SC_OUT(Ttype_t ) ** out_RESERVATION_STATION_OUT_TYPE ; 158 public : SC_OUT(Tcontrol_t ) ** out_RESERVATION_STATION_OUT_HAS_IMMEDIAT; 159 public : SC_OUT(Tgeneral_data_t ) ** out_RESERVATION_STATION_OUT_IMMEDIAT ; 160 public : SC_OUT(Tgeneral_data_t ) ** out_RESERVATION_STATION_OUT_DATA_RA ; 161 public : SC_OUT(Tgeneral_data_t ) ** out_RESERVATION_STATION_OUT_DATA_RB ; 162 public : SC_OUT(Tspecial_data_t ) ** out_RESERVATION_STATION_OUT_DATA_RC ; 163 public : SC_OUT(Tcontrol_t ) ** out_RESERVATION_STATION_OUT_WRITE_RD ; 164 public : SC_OUT(Tgeneral_address_t) ** out_RESERVATION_STATION_OUT_NUM_REG_RD ; 165 public : SC_OUT(Tcontrol_t ) ** out_RESERVATION_STATION_OUT_WRITE_RE ; 166 public : SC_OUT(Tspecial_address_t) ** out_RESERVATION_STATION_OUT_NUM_REG_RE ; 131 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~ 132 public : SC_IN (Tcontrol_t ) * in_INSERT_VAL ; 133 public : SC_OUT(Tcontrol_t ) * out_INSERT_ACK ; 134 public : SC_IN (Tcontext_t ) * in_INSERT_CONTEXT_ID ; 135 public : SC_IN (Tcontext_t ) * in_INSERT_FRONT_END_ID ; 136 public : SC_IN (Tcontext_t ) * in_INSERT_OOO_ENGINE_ID ; 137 public : SC_IN (Tpacket_t ) * in_INSERT_ROB_ID ; 138 public : SC_IN (Toperation_t ) * in_INSERT_OPERATION ; 139 public : SC_IN (Ttype_t ) * in_INSERT_TYPE ; 140 public : SC_IN (Tcontrol_t ) * in_INSERT_HAS_IMMEDIAT ; 141 public : SC_IN (Tgeneral_data_t ) * in_INSERT_IMMEDIAT ; 142 //public : SC_IN (Tcontrol_t ) * in_INSERT_READ_RA ; 143 public : SC_IN (Tgeneral_address_t) * in_INSERT_NUM_REG_RA ; 144 public : SC_IN (Tcontrol_t ) * in_INSERT_DATA_RA_VAL ; 145 public : SC_IN (Tgeneral_data_t ) * in_INSERT_DATA_RA ; 146 //public : SC_IN (Tcontrol_t ) * in_INSERT_READ_RB ; 147 public : SC_IN (Tgeneral_address_t) * in_INSERT_NUM_REG_RB ; 148 public : SC_IN (Tcontrol_t ) * in_INSERT_DATA_RB_VAL ; 149 public : SC_IN (Tgeneral_data_t ) * in_INSERT_DATA_RB ; 150 //public : SC_IN (Tcontrol_t ) * in_INSERT_READ_RC ; 151 public : SC_IN (Tspecial_address_t) * in_INSERT_NUM_REG_RC ; 152 public : SC_IN (Tcontrol_t ) * in_INSERT_DATA_RC_VAL ; 153 public : SC_IN (Tspecial_data_t ) * in_INSERT_DATA_RC ; 154 public : SC_IN (Tcontrol_t ) * in_INSERT_WRITE_RD ; 155 public : SC_IN (Tgeneral_address_t) * in_INSERT_NUM_REG_RD ; 156 public : SC_IN (Tcontrol_t ) * in_INSERT_WRITE_RE ; 157 public : SC_IN (Tspecial_address_t) * in_INSERT_NUM_REG_RE ; 158 159 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~ 160 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_VAL ; 161 public : SC_IN (Tcontrol_t ) ** in_RETIRE_ACK ; 162 public : SC_OUT(Tcontext_t ) ** out_RETIRE_CONTEXT_ID ; 163 public : SC_OUT(Tcontext_t ) ** out_RETIRE_FRONT_END_ID ; 164 public : SC_OUT(Tcontext_t ) ** out_RETIRE_OOO_ENGINE_ID ; 165 public : SC_OUT(Tpacket_t ) ** out_RETIRE_ROB_ID ; 166 public : SC_OUT(Toperation_t ) ** out_RETIRE_OPERATION ; 167 public : SC_OUT(Ttype_t ) ** out_RETIRE_TYPE ; 168 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_HAS_IMMEDIAT ; 169 public : SC_OUT(Tgeneral_data_t ) ** out_RETIRE_IMMEDIAT ; 170 public : SC_OUT(Tgeneral_data_t ) ** out_RETIRE_DATA_RA ; 171 public : SC_OUT(Tgeneral_data_t ) ** out_RETIRE_DATA_RB ; 172 public : SC_OUT(Tspecial_data_t ) ** out_RETIRE_DATA_RC ; 173 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_WRITE_RD ; 174 public : SC_OUT(Tgeneral_address_t) ** out_RETIRE_NUM_REG_RD ; 175 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_WRITE_RE ; 176 public : SC_OUT(Tspecial_address_t) ** out_RETIRE_NUM_REG_RE ; 167 177 168 178 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 169 179 170 public : SC_IN (Tcontrol_t ) ** in_GPR_WRITE_VAL ; // val and ack171 public : SC_IN (Tcontext_t ) ** in_GPR_WRITE_ CONTEXT_ID;172 public : SC_IN (Tgeneral_address_t) ** in_GPR_WRITE_NUM_REG ;173 public : SC_IN (Tgeneral_data_t ) ** in_GPR_WRITE_DATA ;180 public : SC_IN (Tcontrol_t ) ** in_GPR_WRITE_VAL ; // val and ack 181 public : SC_IN (Tcontext_t ) ** in_GPR_WRITE_OOO_ENGINE_ID; 182 public : SC_IN (Tgeneral_address_t) ** in_GPR_WRITE_NUM_REG ; 183 public : SC_IN (Tgeneral_data_t ) ** in_GPR_WRITE_DATA ; 174 184 175 185 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 176 186 177 public : SC_IN (Tcontrol_t ) ** in_SPR_WRITE_VAL ; // val and ack178 public : SC_IN (Tcontext_t ) ** in_SPR_WRITE_ CONTEXT_ID;179 public : SC_IN (Tspecial_address_t) ** in_SPR_WRITE_NUM_REG ;180 public : SC_IN (Tspecial_data_t ) ** in_SPR_WRITE_DATA ;187 public : SC_IN (Tcontrol_t ) ** in_SPR_WRITE_VAL ; // val and ack 188 public : SC_IN (Tcontext_t ) ** in_SPR_WRITE_OOO_ENGINE_ID; 189 public : SC_IN (Tspecial_address_t) ** in_SPR_WRITE_NUM_REG ; 190 public : SC_IN (Tspecial_data_t ) ** in_SPR_WRITE_DATA ; 181 191 182 192 // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 183 193 184 public : SC_IN (Tcontext_t ) ** in_BYPASS_WRITE_ CONTEXT_ID ;185 public : SC_IN (Tcontrol_t ) ** in_BYPASS_WRITE_GPR_VAL ;186 public : SC_IN (Tgeneral_address_t) ** in_BYPASS_WRITE_GPR_NUM_REG ; // RD187 public : SC_IN (Tgeneral_data_t ) ** in_BYPASS_WRITE_GPR_DATA ;188 public : SC_IN (Tcontrol_t ) ** in_BYPASS_WRITE_SPR_VAL ;189 public : SC_IN (Tspecial_address_t) ** in_BYPASS_WRITE_SPR_NUM_REG ; // RE190 public : SC_IN (Tspecial_data_t ) ** in_BYPASS_WRITE_SPR_DATA ;194 public : SC_IN (Tcontext_t ) ** in_BYPASS_WRITE_OOO_ENGINE_ID ; 195 public : SC_IN (Tcontrol_t ) ** in_BYPASS_WRITE_GPR_VAL ; 196 public : SC_IN (Tgeneral_address_t) ** in_BYPASS_WRITE_GPR_NUM_REG ; // RD 197 public : SC_IN (Tgeneral_data_t ) ** in_BYPASS_WRITE_GPR_DATA ; 198 public : SC_IN (Tcontrol_t ) ** in_BYPASS_WRITE_SPR_VAL ; 199 public : SC_IN (Tspecial_address_t) ** in_BYPASS_WRITE_SPR_NUM_REG ; // RE 200 public : SC_IN (Tspecial_data_t ) ** in_BYPASS_WRITE_SPR_DATA ; 191 201 192 202 // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 193 203 194 public : SC_IN (Tcontrol_t ) ** in_BYPASS_MEMORY_VAL ;195 public : SC_IN (Tcontext_t ) ** in_BYPASS_MEMORY_ CONTEXT_ID;196 public : SC_IN (Tgeneral_address_t) ** in_BYPASS_MEMORY_NUM_REG ;197 public : SC_IN (Tgeneral_data_t ) ** in_BYPASS_MEMORY_DATA ;204 public : SC_IN (Tcontrol_t ) ** in_BYPASS_MEMORY_VAL ; 205 public : SC_IN (Tcontext_t ) ** in_BYPASS_MEMORY_OOO_ENGINE_ID; 206 public : SC_IN (Tgeneral_address_t) ** in_BYPASS_MEMORY_NUM_REG ; 207 public : SC_IN (Tgeneral_data_t ) ** in_BYPASS_MEMORY_DATA ; 198 208 199 209 … … 203 213 204 214 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 215 #ifdef SYSTEMC_VHDL_COMPATIBILITY 216 protected : bool * _queue_valid; 217 protected : uint32_t internal_INSERT_SLOT; 218 #else 205 219 protected : morpheo::behavioural::generic::queue_control::Queue_Control * _queue_control; 220 #endif 206 221 protected : Treservation_station_entry_t * _queue; 207 222 208 protected : Tcontrol_t internal_RESERVATION_STATION_IN_ACK; 209 protected : Tcontrol_t * internal_RESERVATION_STATION_OUT_VAL; 223 protected : Tcontrol_t internal_INSERT_ACK; 224 protected : Tcontrol_t * internal_RETIRE_VAL; 225 protected : uint32_t * internal_RETIRE_SLOT; 210 226 #endif 211 227 … … 244 260 #endif 245 261 246 #ifdef VHDL_TESTBENCH 247 private : void vhdl_testbench_transition (void); 248 #endif 262 private : void end_cycle (void); 249 263 }; 250 264
Note: See TracChangeset
for help on using the changeset viewer.