Changeset 97 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit
- Timestamp:
- Dec 19, 2008, 4:34:00 PM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
r88 r97 190 190 _queue_head->_num_reg_re , 191 191 192 toString _type(_queue_head->_type).c_str());192 toString(_queue_head->_type).c_str()); 193 193 194 194 … … 240 240 (*it)->_num_reg_re , 241 241 242 toString _type((*it)->_type).c_str());242 toString((*it)->_type).c_str()); 243 243 244 244 ++i; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_body.cpp
r81 r97 22 22 { 23 23 log_printf(FUNC,Read_queue,"vhdl_body","Begin"); 24 vhdl->set_body ("");25 vhdl->set_body( "");26 vhdl->set_body( "-----------------------------------");27 vhdl->set_body( "-- Instance queue ");28 vhdl->set_body( "-----------------------------------");29 vhdl->set_body( "");30 31 vhdl->set_body( "instance_"+_name+"_queue : "+_name+"_queue");32 vhdl->set_body( "port map (");33 vhdl->set_body( "\tin_CLOCK \t=>\t in_CLOCK ");34 vhdl->set_body( "\t, in_NRESET \t=>\t in_NRESET");35 vhdl->set_body( "\t, in_INSERT_VAL \t=>\tinternal_QUEUE_INSERT_VAL");36 vhdl->set_body( "\t,out_INSERT_ACK \t=>\tinternal_QUEUE_INSERT_ACK");37 vhdl->set_body( "\t, in_INSERT_DATA \t=>\tinternal_QUEUE_INSERT_DATA");38 vhdl->set_body( "\t,out_RETIRE_VAL \t=>\tinternal_QUEUE_RETIRE_VAL");39 vhdl->set_body( "\t, in_RETIRE_ACK \t=>\tinternal_QUEUE_RETIRE_ACK");40 vhdl->set_body( "\t,out_RETIRE_DATA \t=>\tinternal_QUEUE_RETIRE_DATA");41 vhdl->set_body( ");");42 43 vhdl->set_body( "");44 vhdl->set_body( "-----------------------------------");45 vhdl->set_body( "-- Queue_data ");46 vhdl->set_body( "-----------------------------------");47 vhdl->set_body( "");24 vhdl->set_body(0,""); 25 vhdl->set_body(0,""); 26 vhdl->set_body(0,"-----------------------------------"); 27 vhdl->set_body(0,"-- Instance queue "); 28 vhdl->set_body(0,"-----------------------------------"); 29 vhdl->set_body(0,""); 30 31 vhdl->set_body(0,"instance_"+_name+"_queue : "+_name+"_queue"); 32 vhdl->set_body(0,"port map ("); 33 vhdl->set_body(1," in_CLOCK \t=>\t in_CLOCK "); 34 vhdl->set_body(1,", in_NRESET \t=>\t in_NRESET"); 35 vhdl->set_body(1,", in_INSERT_VAL \t=>\tinternal_QUEUE_INSERT_VAL"); 36 vhdl->set_body(1,",out_INSERT_ACK \t=>\tinternal_QUEUE_INSERT_ACK"); 37 vhdl->set_body(1,", in_INSERT_DATA \t=>\tinternal_QUEUE_INSERT_DATA"); 38 vhdl->set_body(1,",out_RETIRE_VAL \t=>\tinternal_QUEUE_RETIRE_VAL"); 39 vhdl->set_body(1,", in_RETIRE_ACK \t=>\tinternal_QUEUE_RETIRE_ACK"); 40 vhdl->set_body(1,",out_RETIRE_DATA \t=>\tinternal_QUEUE_RETIRE_DATA"); 41 vhdl->set_body(0,");"); 42 43 vhdl->set_body(0,""); 44 vhdl->set_body(0,"-----------------------------------"); 45 vhdl->set_body(0,"-- Queue_data "); 46 vhdl->set_body(0,"-----------------------------------"); 47 vhdl->set_body(0,""); 48 48 49 49 uint32_t min = 0; … … 53 53 { 54 54 max = min-1+_param->_size_context_id; 55 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_CONTEXT_ID;");55 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_CONTEXT_ID;"); 56 56 min = max+1; 57 57 } … … 59 59 { 60 60 max = min-1+_param->_size_front_end_id; 61 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_FRONT_END_ID;");61 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_FRONT_END_ID;"); 62 62 min = max+1; 63 63 } … … 65 65 { 66 66 max = min-1+_param->_size_ooo_engine_id; 67 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_OOO_ENGINE_ID;");67 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_OOO_ENGINE_ID;"); 68 68 min = max+1; 69 69 } 70 if(_param->_have_port_rob_ id)71 { 72 max = min-1+_param->_size_rob_ id;73 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_ROB_ID;");70 if(_param->_have_port_rob_ptr ) 71 { 72 max = min-1+_param->_size_rob_ptr ; 73 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_ROB_ID;"); 74 74 min = max+1; 75 75 } 76 76 77 77 max = min-1+_param->_size_operation; 78 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_OPERATION;");78 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_OPERATION;"); 79 79 min = max+1; 80 80 81 81 max = min-1+_param->_size_type; 82 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_TYPE;");83 min = max+1; 84 85 max = min; 86 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_HAS_IMMEDIAT;");82 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_TYPE;"); 83 min = max+1; 84 85 max = min; 86 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_HAS_IMMEDIAT;"); 87 87 min = max+1; 88 88 89 89 max = min-1+_param->_size_general_data; 90 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_IMMEDIAT;");91 min = max+1; 92 93 max = min; 94 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RA;");90 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_IMMEDIAT;"); 91 min = max+1; 92 93 max = min; 94 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RA;"); 95 95 min = max+1; 96 96 97 97 max = min-1+_param->_size_general_register; 98 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RA;");99 min = max+1; 100 101 max = min; 102 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RB;");98 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RA;"); 99 min = max+1; 100 101 max = min; 102 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RB;"); 103 103 min = max+1; 104 104 105 105 max = min-1+_param->_size_general_register; 106 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RB;");107 min = max+1; 108 109 max = min; 110 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RC;");106 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RB;"); 107 min = max+1; 108 109 max = min; 110 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RC;"); 111 111 min = max+1; 112 112 113 113 max = min-1+_param->_size_special_register; 114 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RC;");115 min = max+1; 116 117 max = min; 118 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_WRITE_RD;");114 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RC;"); 115 min = max+1; 116 117 max = min; 118 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_WRITE_RD;"); 119 119 min = max+1; 120 120 121 121 max = min-1+_param->_size_general_register; 122 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RD;");123 min = max+1; 124 125 max = min; 126 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_WRITE_RE;");122 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RD;"); 123 min = max+1; 124 125 max = min; 126 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_WRITE_RE;"); 127 127 min = max+1; 128 128 129 129 max = min-1+_param->_size_special_register; 130 vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RE;");131 min = max+1; 132 133 vhdl->set_body ("internal_QUEUE_RETIRE_ACK <= internal_READ_QUEUE_OUT_VAL and in_READ_QUEUE_OUT_ACK;");134 135 vhdl->set_body( "");136 vhdl->set_body( "-----------------------------------");137 vhdl->set_body( "-- Interface read");138 vhdl->set_body( "-----------------------------------");139 vhdl->set_body( "");140 vhdl->set_body( "-- GPR");141 vhdl->set_body ("out_GPR_READ_0_VAL <= internal_QUEUE_RETIRE_VAL and internal_READ_RA_VAL;");142 vhdl->set_body ("out_GPR_READ_1_VAL <= internal_QUEUE_RETIRE_VAL and internal_READ_RB_VAL;");130 vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RE;"); 131 min = max+1; 132 133 vhdl->set_body(0,"internal_QUEUE_RETIRE_ACK <= internal_READ_QUEUE_OUT_VAL and in_READ_QUEUE_OUT_ACK;"); 134 135 vhdl->set_body(0,""); 136 vhdl->set_body(0,"-----------------------------------"); 137 vhdl->set_body(0,"-- Interface read"); 138 vhdl->set_body(0,"-----------------------------------"); 139 vhdl->set_body(0,""); 140 vhdl->set_body(0,"-- GPR"); 141 vhdl->set_body(0,"out_GPR_READ_0_VAL <= internal_QUEUE_RETIRE_VAL and internal_READ_RA_VAL;"); 142 vhdl->set_body(0,"out_GPR_READ_1_VAL <= internal_QUEUE_RETIRE_VAL and internal_READ_RB_VAL;"); 143 143 if(_param->_have_port_ooo_engine_id) 144 144 { 145 vhdl->set_body ("out_GPR_READ_0_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");146 vhdl->set_body ("out_GPR_READ_1_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");147 } 148 vhdl->set_body ("out_GPR_READ_0_NUM_REG <= internal_NUM_REG_RA;");149 vhdl->set_body ("out_GPR_READ_1_NUM_REG <= internal_NUM_REG_RB;");150 vhdl->set_body( "");151 152 vhdl->set_body( "-- SPR");153 vhdl->set_body ("out_SPR_READ_0_VAL <= internal_QUEUE_RETIRE_VAL and internal_READ_RC_VAL;");145 vhdl->set_body(0,"out_GPR_READ_0_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;"); 146 vhdl->set_body(0,"out_GPR_READ_1_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;"); 147 } 148 vhdl->set_body(0,"out_GPR_READ_0_NUM_REG <= internal_NUM_REG_RA;"); 149 vhdl->set_body(0,"out_GPR_READ_1_NUM_REG <= internal_NUM_REG_RB;"); 150 vhdl->set_body(0,""); 151 152 vhdl->set_body(0,"-- SPR"); 153 vhdl->set_body(0,"out_SPR_READ_0_VAL <= internal_QUEUE_RETIRE_VAL and internal_READ_RC_VAL;"); 154 154 if(_param->_have_port_ooo_engine_id) 155 155 { 156 vhdl->set_body ("out_SPR_READ_0_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");157 } 158 vhdl->set_body ("out_SPR_READ_0_NUM_REG <= internal_NUM_REG_RC;");159 160 vhdl->set_body( "");161 vhdl->set_body( "-----------------------------------");162 vhdl->set_body( "-- Interface read_queue_out");163 vhdl->set_body( "-----------------------------------");164 vhdl->set_body( "");156 vhdl->set_body(0,"out_SPR_READ_0_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;"); 157 } 158 vhdl->set_body(0,"out_SPR_READ_0_NUM_REG <= internal_NUM_REG_RC;"); 159 160 vhdl->set_body(0,""); 161 vhdl->set_body(0,"-----------------------------------"); 162 vhdl->set_body(0,"-- Interface read_queue_out"); 163 vhdl->set_body(0,"-----------------------------------"); 164 vhdl->set_body(0,""); 165 165 166 166 if(_param->_have_port_context_id ) 167 vhdl->set_body ("out_READ_QUEUE_OUT_CONTEXT_ID <= internal_CONTEXT_ID ;");167 vhdl->set_body(0,"out_READ_QUEUE_OUT_CONTEXT_ID <= internal_CONTEXT_ID ;"); 168 168 if(_param->_have_port_front_end_id ) 169 vhdl->set_body ("out_READ_QUEUE_OUT_FRONT_END_ID <= internal_FRONT_END_ID ;");169 vhdl->set_body(0,"out_READ_QUEUE_OUT_FRONT_END_ID <= internal_FRONT_END_ID ;"); 170 170 if(_param->_have_port_ooo_engine_id ) 171 vhdl->set_body ("out_READ_QUEUE_OUT_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");172 if(_param->_have_port_rob_ id)173 vhdl->set_body ("out_READ_QUEUE_OUT_ROB_ID <= internal_ROB_ID ;");174 vhdl->set_body ("out_READ_QUEUE_OUT_OPERATION <= internal_OPERATION ;");175 vhdl->set_body ("out_READ_QUEUE_OUT_TYPE <= internal_TYPE ;");176 vhdl->set_body ("out_READ_QUEUE_OUT_HAS_IMMEDIAT <= internal_HAS_IMMEDIAT ;");177 vhdl->set_body ("out_READ_QUEUE_OUT_IMMEDIAT <= internal_IMMEDIAT ;");178 vhdl->set_body ("out_READ_QUEUE_OUT_READ_RA <= internal_READ_RA ;");179 vhdl->set_body ("out_READ_QUEUE_OUT_NUM_REG_RA <= internal_NUM_REG_RA ;");180 vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RA_VAL <= internal_NEXT_DATA_RA_VAL;");181 vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RA <= internal_NEXT_DATA_RA ;");182 vhdl->set_body ("out_READ_QUEUE_OUT_READ_RB <= internal_READ_RB ;");183 vhdl->set_body ("out_READ_QUEUE_OUT_NUM_REG_RB <= internal_NUM_REG_RB ;");184 vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RB_VAL <= internal_NEXT_DATA_RB_VAL;");185 vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RB <= internal_NEXT_DATA_RB ;");186 vhdl->set_body ("out_READ_QUEUE_OUT_READ_RC <= internal_READ_RC ;");187 vhdl->set_body ("out_READ_QUEUE_OUT_NUM_REG_RC <= internal_NUM_REG_RC ;");188 vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RC_VAL <= internal_NEXT_DATA_RC_VAL;");189 vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RC <= internal_NEXT_DATA_RC ;");190 vhdl->set_body ("out_READ_QUEUE_OUT_WRITE_RD <= internal_WRITE_RD ;");191 vhdl->set_body ("out_READ_QUEUE_OUT_NUM_REG_RD <= internal_NUM_REG_RD ;");192 vhdl->set_body ("out_READ_QUEUE_OUT_WRITE_RE <= internal_WRITE_RE ;");193 vhdl->set_body ("out_READ_QUEUE_OUT_NUM_REG_RE <= internal_NUM_REG_RE ;");194 195 vhdl->set_body( "");196 vhdl->set_body( "-----------------------------------");197 vhdl->set_body( "-- next reg update");198 vhdl->set_body( "-----------------------------------");199 vhdl->set_body( "");200 vhdl->set_body( "-- read_rx_val - 1 : must access at the registerFile (after access, is set at 0)");201 202 { 203 vhdl->set_body( "");204 vhdl->set_body( "internal_NEXT_READ_RA_VAL <=");205 vhdl->set_body( "\t'0' when");206 // bypass 207 vhdl->set_body( "\t\t-- check bypass");208 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 209 { 210 std::string cmp; 211 212 if (_param->_have_port_ooo_engine_id) 213 cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 214 else 215 cmp = ""; 216 217 vhdl->set_body( "\t\t((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");218 } 219 vhdl->set_body( "\t\tfalse else");220 vhdl->set_body( "\tinternal_READ_RA_VAL and not in_GPR_READ_0_ACK;");221 } 222 { 223 vhdl->set_body( "");224 vhdl->set_body( "internal_NEXT_READ_RB_VAL <=");225 vhdl->set_body( "\t'0' when");226 // bypass 227 vhdl->set_body( "\t\t-- check bypass");228 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 229 { 230 std::string cmp; 231 232 if (_param->_have_port_ooo_engine_id) 233 cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 234 else 235 cmp = ""; 236 237 vhdl->set_body( "\t\t((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");238 } 239 vhdl->set_body( "\t\tfalse else");240 vhdl->set_body( "\tinternal_READ_RB_VAL and not in_GPR_READ_1_ACK;");241 } 242 { 243 vhdl->set_body( "");244 vhdl->set_body( "internal_NEXT_READ_RC_VAL <=");245 vhdl->set_body( "\t'0' when");246 // bypass 247 vhdl->set_body( "\t\t-- check bypass");171 vhdl->set_body(0,"out_READ_QUEUE_OUT_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;"); 172 if(_param->_have_port_rob_ptr ) 173 vhdl->set_body(0,"out_READ_QUEUE_OUT_ROB_ID <= internal_ROB_ID ;"); 174 vhdl->set_body(0,"out_READ_QUEUE_OUT_OPERATION <= internal_OPERATION ;"); 175 vhdl->set_body(0,"out_READ_QUEUE_OUT_TYPE <= internal_TYPE ;"); 176 vhdl->set_body(0,"out_READ_QUEUE_OUT_HAS_IMMEDIAT <= internal_HAS_IMMEDIAT ;"); 177 vhdl->set_body(0,"out_READ_QUEUE_OUT_IMMEDIAT <= internal_IMMEDIAT ;"); 178 // vhdl->set_body(0,"out_READ_QUEUE_OUT_READ_RA <= internal_READ_RA ;"); 179 vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RA <= internal_NUM_REG_RA ;"); 180 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RA_VAL <= internal_NEXT_DATA_RA_VAL;"); 181 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RA <= internal_NEXT_DATA_RA ;"); 182 // vhdl->set_body(0,"out_READ_QUEUE_OUT_READ_RB <= internal_READ_RB ;"); 183 vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RB <= internal_NUM_REG_RB ;"); 184 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RB_VAL <= internal_NEXT_DATA_RB_VAL;"); 185 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RB <= internal_NEXT_DATA_RB ;"); 186 // vhdl->set_body(0,"out_READ_QUEUE_OUT_READ_RC <= internal_READ_RC ;"); 187 vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RC <= internal_NUM_REG_RC ;"); 188 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RC_VAL <= internal_NEXT_DATA_RC_VAL;"); 189 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RC <= internal_NEXT_DATA_RC ;"); 190 vhdl->set_body(0,"out_READ_QUEUE_OUT_WRITE_RD <= internal_WRITE_RD ;"); 191 vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RD <= internal_NUM_REG_RD ;"); 192 vhdl->set_body(0,"out_READ_QUEUE_OUT_WRITE_RE <= internal_WRITE_RE ;"); 193 vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RE <= internal_NUM_REG_RE ;"); 194 195 vhdl->set_body(0,""); 196 vhdl->set_body(0,"-----------------------------------"); 197 vhdl->set_body(0,"-- next reg update"); 198 vhdl->set_body(0,"-----------------------------------"); 199 vhdl->set_body(0,""); 200 vhdl->set_body(0,"-- read_rx_val - 1 : must access at the registerFile (after access, is set at 0)"); 201 202 { 203 vhdl->set_body(0,""); 204 vhdl->set_body(0,"internal_NEXT_READ_RA_VAL <="); 205 vhdl->set_body(1,"'0' when"); 206 // bypass 207 vhdl->set_body(2,"-- check bypass"); 208 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 209 { 210 std::string cmp; 211 212 if (_param->_have_port_ooo_engine_id) 213 cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 214 else 215 cmp = ""; 216 217 vhdl->set_body(2,"((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or"); 218 } 219 vhdl->set_body(2,"false else"); 220 vhdl->set_body(1,"internal_READ_RA_VAL and not in_GPR_READ_0_ACK;"); 221 } 222 { 223 vhdl->set_body(0,""); 224 vhdl->set_body(0,"internal_NEXT_READ_RB_VAL <="); 225 vhdl->set_body(1,"'0' when"); 226 // bypass 227 vhdl->set_body(2,"-- check bypass"); 228 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 229 { 230 std::string cmp; 231 232 if (_param->_have_port_ooo_engine_id) 233 cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 234 else 235 cmp = ""; 236 237 vhdl->set_body(2,"((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or"); 238 } 239 vhdl->set_body(2,"false else"); 240 vhdl->set_body(1,"internal_READ_RB_VAL and not in_GPR_READ_1_ACK;"); 241 } 242 { 243 vhdl->set_body(0,""); 244 vhdl->set_body(0,"internal_NEXT_READ_RC_VAL <="); 245 vhdl->set_body(1,"'0' when"); 246 // bypass 247 vhdl->set_body(2,"-- check bypass"); 248 248 for (int32_t i=_param->_nb_spr_write-1; i>=0 ; i--) 249 249 { … … 255 255 cmp = ""; 256 256 257 vhdl->set_body( "\t\t((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RC=in_SPR_WRITE_"+toString(i)+"_NUM_REG)) or");258 } 259 vhdl->set_body( "\t\tfalse else");260 vhdl->set_body( "\tinternal_READ_RC_VAL and not in_SPR_READ_0_ACK;");261 } 262 { 263 vhdl->set_body( "");264 vhdl->set_body( "internal_READ_QUEUE_OUT_VAL <= not internal_NEXT_READ_RA_VAL and not internal_NEXT_READ_RB_VAL and not internal_NEXT_READ_RC_VAL;");265 vhdl->set_body( " out_READ_QUEUE_OUT_VAL <= internal_READ_QUEUE_OUT_VAL and internal_QUEUE_RETIRE_VAL;");257 vhdl->set_body(2,"((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RC=in_SPR_WRITE_"+toString(i)+"_NUM_REG)) or"); 258 } 259 vhdl->set_body(2,"false else"); 260 vhdl->set_body(1,"internal_READ_RC_VAL and not in_SPR_READ_0_ACK;"); 261 } 262 { 263 vhdl->set_body(0,""); 264 vhdl->set_body(0,"internal_READ_QUEUE_OUT_VAL <= not internal_NEXT_READ_RA_VAL and not internal_NEXT_READ_RB_VAL and not internal_NEXT_READ_RC_VAL;"); 265 vhdl->set_body(0," out_READ_QUEUE_OUT_VAL <= internal_READ_QUEUE_OUT_VAL and internal_QUEUE_RETIRE_VAL;"); 266 266 267 267 } 268 268 269 vhdl->set_body( "");270 vhdl->set_body( "-- data_rx_val - 1 : the read of registerFile is valid");271 272 { 273 vhdl->set_body( "");274 vhdl->set_body( "internal_NEXT_DATA_RA_VAL <=");275 vhdl->set_body( "\t'1' when");276 // bypass 277 vhdl->set_body( "\t\t-- check bypass");269 vhdl->set_body(0,""); 270 vhdl->set_body(0,"-- data_rx_val - 1 : the read of registerFile is valid"); 271 272 { 273 vhdl->set_body(0,""); 274 vhdl->set_body(0,"internal_NEXT_DATA_RA_VAL <="); 275 vhdl->set_body(1,"'1' when"); 276 // bypass 277 vhdl->set_body(2,"-- check bypass"); 278 278 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 279 279 { … … 285 285 cmp = ""; 286 286 287 vhdl->set_body( "\t\t((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");288 } 289 vhdl->set_body( "\t\tfalse else");290 vhdl->set_body( "\tinternal_DATA_RA_VAL or (internal_READ_RA_VAL and in_GPR_READ_0_ACK and in_GPR_READ_0_DATA_VAL);");291 } 292 { 293 vhdl->set_body( "");294 vhdl->set_body( "internal_NEXT_DATA_RB_VAL <=");295 vhdl->set_body( "\t'1' when");296 // bypass 297 vhdl->set_body( "\t\t-- check bypass");287 vhdl->set_body(2,"((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or"); 288 } 289 vhdl->set_body(2,"false else"); 290 vhdl->set_body(1,"internal_DATA_RA_VAL or (internal_READ_RA_VAL and in_GPR_READ_0_ACK and in_GPR_READ_0_DATA_VAL);"); 291 } 292 { 293 vhdl->set_body(0,""); 294 vhdl->set_body(0,"internal_NEXT_DATA_RB_VAL <="); 295 vhdl->set_body(1,"'1' when"); 296 // bypass 297 vhdl->set_body(2,"-- check bypass"); 298 298 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 299 299 { … … 305 305 cmp = ""; 306 306 307 vhdl->set_body( "\t\t((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");308 } 309 vhdl->set_body( "\t\tfalse else");310 vhdl->set_body( "\tinternal_DATA_RB_VAL or (internal_READ_RB_VAL and in_GPR_READ_1_ACK and in_GPR_READ_1_DATA_VAL);");311 } 312 { 313 vhdl->set_body( "");314 vhdl->set_body( "internal_NEXT_DATA_RC_VAL <=");315 vhdl->set_body( "\t'1' when");316 // bypass 317 vhdl->set_body( "\t\t-- check bypass");307 vhdl->set_body(2,"((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or"); 308 } 309 vhdl->set_body(2,"false else"); 310 vhdl->set_body(1,"internal_DATA_RB_VAL or (internal_READ_RB_VAL and in_GPR_READ_1_ACK and in_GPR_READ_1_DATA_VAL);"); 311 } 312 { 313 vhdl->set_body(0,""); 314 vhdl->set_body(0,"internal_NEXT_DATA_RC_VAL <="); 315 vhdl->set_body(1,"'1' when"); 316 // bypass 317 vhdl->set_body(2,"-- check bypass"); 318 318 for (int32_t i=_param->_nb_spr_write-1; i>=0 ; i--) 319 319 { … … 325 325 cmp = ""; 326 326 327 vhdl->set_body( "\t\t((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RC=in_SPR_WRITE_"+toString(i)+"_NUM_REG)) or");328 } 329 vhdl->set_body( "\t\tfalse else");330 vhdl->set_body( "\tinternal_DATA_RC_VAL or (internal_READ_RC_VAL and in_SPR_READ_0_ACK and in_SPR_READ_0_DATA_VAL);");331 } 332 333 vhdl->set_body( "");334 vhdl->set_body( "-- data_rx - data read");335 { 336 vhdl->set_body( "");337 vhdl->set_body( "internal_NEXT_DATA_RA <=");327 vhdl->set_body(2,"((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RC=in_SPR_WRITE_"+toString(i)+"_NUM_REG)) or"); 328 } 329 vhdl->set_body(2,"false else"); 330 vhdl->set_body(1,"internal_DATA_RC_VAL or (internal_READ_RC_VAL and in_SPR_READ_0_ACK and in_SPR_READ_0_DATA_VAL);"); 331 } 332 333 vhdl->set_body(0,""); 334 vhdl->set_body(0,"-- data_rx - data read"); 335 { 336 vhdl->set_body(0,""); 337 vhdl->set_body(0,"internal_NEXT_DATA_RA <="); 338 338 #ifdef SYSTEMC_VHDL_COMPATIBILITY 339 vhdl->set_body( "\t"+std_logic_others(_param->_size_general_data,0)+" when internal_READ_RA='0' else");339 vhdl->set_body(1,""+std_logic_others(_param->_size_general_data,0)+" when internal_READ_RA='0' else"); 340 340 #endif 341 341 // bypass 342 vhdl->set_body( "\t\t-- check bypass");342 vhdl->set_body(2,"-- check bypass"); 343 343 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 344 344 { … … 350 350 cmp = ""; 351 351 352 vhdl->set_body( "\tin_GPR_WRITE_"+toString(i)+"_DATA when ((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) else");353 } 354 vhdl->set_body( "\treg_DATA_RA when (internal_DATA_RA_VAL='1') else");355 vhdl->set_body( "\tin_GPR_READ_0_DATA;");356 } 357 { 358 vhdl->set_body( "");359 vhdl->set_body( "internal_NEXT_DATA_RB <=");352 vhdl->set_body(1,"in_GPR_WRITE_"+toString(i)+"_DATA when ((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) else"); 353 } 354 vhdl->set_body(1,"reg_DATA_RA when (internal_DATA_RA_VAL='1') else"); 355 vhdl->set_body(1,"in_GPR_READ_0_DATA;"); 356 } 357 { 358 vhdl->set_body(0,""); 359 vhdl->set_body(0,"internal_NEXT_DATA_RB <="); 360 360 #ifdef SYSTEMC_VHDL_COMPATIBILITY 361 vhdl->set_body( "\t"+std_logic_others(_param->_size_general_data,0)+" when internal_READ_RB='0' else");361 vhdl->set_body(1,""+std_logic_others(_param->_size_general_data,0)+" when internal_READ_RB='0' else"); 362 362 #endif 363 363 // bypass 364 vhdl->set_body( "\t\t-- check bypass");364 vhdl->set_body(2,"-- check bypass"); 365 365 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 366 366 { … … 372 372 cmp = ""; 373 373 374 vhdl->set_body( "\tin_GPR_WRITE_"+toString(i)+"_DATA when ((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) else");375 } 376 vhdl->set_body( "\treg_DATA_RB when (internal_DATA_RB_VAL='1') else");377 vhdl->set_body( "\tin_GPR_READ_1_DATA;");378 } 379 { 380 vhdl->set_body( "");381 vhdl->set_body( "internal_NEXT_DATA_RC <=");374 vhdl->set_body(1,"in_GPR_WRITE_"+toString(i)+"_DATA when ((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) else"); 375 } 376 vhdl->set_body(1,"reg_DATA_RB when (internal_DATA_RB_VAL='1') else"); 377 vhdl->set_body(1,"in_GPR_READ_1_DATA;"); 378 } 379 { 380 vhdl->set_body(0,""); 381 vhdl->set_body(0,"internal_NEXT_DATA_RC <="); 382 382 #ifdef SYSTEMC_VHDL_COMPATIBILITY 383 vhdl->set_body( "\t"+std_logic_others(_param->_size_special_data,0)+" when internal_READ_RC='0' else");383 vhdl->set_body(1,""+std_logic_others(_param->_size_special_data,0)+" when internal_READ_RC='0' else"); 384 384 #endif 385 385 // bypass 386 vhdl->set_body( "\t\t-- check bypass");386 vhdl->set_body(2,"-- check bypass"); 387 387 for (int32_t i=_param->_nb_spr_write-1; i>=0 ; i--) 388 388 { … … 394 394 cmp = ""; 395 395 396 vhdl->set_body( "\tin_SPR_WRITE_"+toString(i)+"_DATA when ((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (in_SPR_WRITE_"+toString(i)+"_NUM_REG=internal_NUM_REG_RC)) else");397 } 398 vhdl->set_body( "\treg_DATA_RC when (internal_DATA_RC_VAL='1') else");399 vhdl->set_body( "\tin_SPR_READ_0_DATA;");400 401 vhdl->set_body( "");402 vhdl->set_body( "-----------------------------------");403 vhdl->set_body( "-- transition");404 vhdl->set_body( "-----------------------------------");405 vhdl->set_body( "");406 vhdl->set_body( "-- need a new head if :");407 vhdl->set_body( "-- * queue is empty");408 vhdl->set_body( "-- * pop with queue");409 vhdl->set_body ("internal_NEXT_NEED_NEW_HEAD <= not internal_QUEUE_RETIRE_VAL or (internal_QUEUE_RETIRE_VAL and internal_QUEUE_RETIRE_ACK);");410 411 vhdl->set_body ("internal_READ_RA_VAL <= internal_READ_RA when reg_NEED_NEW_HEAD='1' else reg_READ_RA_VAL;");412 vhdl->set_body ("internal_READ_RB_VAL <= internal_READ_RB when reg_NEED_NEW_HEAD='1' else reg_READ_RB_VAL;");413 vhdl->set_body ("internal_READ_RC_VAL <= internal_READ_RC when reg_NEED_NEW_HEAD='1' else reg_READ_RC_VAL;");414 vhdl->set_body ("internal_DATA_RA_VAL <= not internal_READ_RA when reg_NEED_NEW_HEAD='1' else reg_DATA_RA_VAL;");415 vhdl->set_body ("internal_DATA_RB_VAL <= not internal_READ_RB when reg_NEED_NEW_HEAD='1' else reg_DATA_RB_VAL;");416 vhdl->set_body ("internal_DATA_RC_VAL <= not internal_READ_RC when reg_NEED_NEW_HEAD='1' else reg_DATA_RC_VAL;");417 418 419 vhdl->set_body ("");420 vhdl->set_body ("transition: process (in_CLOCK)");421 vhdl->set_body ("begin -- process transition");422 vhdl->set_body ("\tif in_CLOCK'event and in_CLOCK = '1' then");423 vhdl->set_body ("");424 vhdl->set_body ("\t\tif (in_NRESET = '0') then");425 vhdl->set_body ("\t\t\treg_NEED_NEW_HEAD <= '1';");426 vhdl->set_body ("\t\telse");427 vhdl->set_body ("\t\t\treg_NEED_NEW_HEAD <= internal_NEXT_NEED_NEW_HEAD;");428 vhdl->set_body ("\t\t\treg_READ_RA_VAL <= internal_NEXT_READ_RA_VAL;");429 vhdl->set_body ("\t\t\treg_READ_RB_VAL <= internal_NEXT_READ_RB_VAL;");430 vhdl->set_body ("\t\t\treg_READ_RC_VAL <= internal_NEXT_READ_RC_VAL;");431 vhdl->set_body ("\t\t\treg_DATA_RA_VAL <= internal_NEXT_DATA_RA_VAL;");432 vhdl->set_body ("\t\t\treg_DATA_RB_VAL <= internal_NEXT_DATA_RB_VAL;");433 vhdl->set_body ("\t\t\treg_DATA_RC_VAL <= internal_NEXT_DATA_RC_VAL;");434 vhdl->set_body ("\t\t\treg_DATA_RA <= internal_NEXT_DATA_RA ;");435 vhdl->set_body ("\t\t\treg_DATA_RB <= internal_NEXT_DATA_RB ;");436 vhdl->set_body ("\t\t\treg_DATA_RC <= internal_NEXT_DATA_RC ;");437 438 vhdl->set_body ("\t\tend if;");439 vhdl->set_body ("");440 vhdl->set_body ("\tend if;");441 vhdl->set_body ("end process transition;");396 vhdl->set_body(1,"in_SPR_WRITE_"+toString(i)+"_DATA when ((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (in_SPR_WRITE_"+toString(i)+"_NUM_REG=internal_NUM_REG_RC)) else"); 397 } 398 vhdl->set_body(1,"reg_DATA_RC when (internal_DATA_RC_VAL='1') else"); 399 vhdl->set_body(1,"in_SPR_READ_0_DATA;"); 400 401 vhdl->set_body(0,""); 402 vhdl->set_body(0,"-----------------------------------"); 403 vhdl->set_body(0,"-- transition"); 404 vhdl->set_body(0,"-----------------------------------"); 405 vhdl->set_body(0,""); 406 vhdl->set_body(0,"-- need a new head if :"); 407 vhdl->set_body(0,"-- * queue is empty"); 408 vhdl->set_body(0,"-- * pop with queue"); 409 vhdl->set_body(0,"internal_NEXT_NEED_NEW_HEAD <= not internal_QUEUE_RETIRE_VAL or (internal_QUEUE_RETIRE_VAL and internal_QUEUE_RETIRE_ACK);"); 410 411 vhdl->set_body(0,"internal_READ_RA_VAL <= internal_READ_RA when reg_NEED_NEW_HEAD='1' else reg_READ_RA_VAL;"); 412 vhdl->set_body(0,"internal_READ_RB_VAL <= internal_READ_RB when reg_NEED_NEW_HEAD='1' else reg_READ_RB_VAL;"); 413 vhdl->set_body(0,"internal_READ_RC_VAL <= internal_READ_RC when reg_NEED_NEW_HEAD='1' else reg_READ_RC_VAL;"); 414 vhdl->set_body(0,"internal_DATA_RA_VAL <= not internal_READ_RA when reg_NEED_NEW_HEAD='1' else reg_DATA_RA_VAL;"); 415 vhdl->set_body(0,"internal_DATA_RB_VAL <= not internal_READ_RB when reg_NEED_NEW_HEAD='1' else reg_DATA_RB_VAL;"); 416 vhdl->set_body(0,"internal_DATA_RC_VAL <= not internal_READ_RC when reg_NEED_NEW_HEAD='1' else reg_DATA_RC_VAL;"); 417 418 419 vhdl->set_body(0,""); 420 vhdl->set_body(0,"transition: process (in_CLOCK)"); 421 vhdl->set_body(0,"begin -- process transition"); 422 vhdl->set_body(1,"if in_CLOCK'event and in_CLOCK = '1' then"); 423 vhdl->set_body(0,""); 424 vhdl->set_body(2,"if (in_NRESET = '0') then"); 425 vhdl->set_body(3,"reg_NEED_NEW_HEAD <= '1';"); 426 vhdl->set_body(2,"else"); 427 vhdl->set_body(3,"reg_NEED_NEW_HEAD <= internal_NEXT_NEED_NEW_HEAD;"); 428 vhdl->set_body(3,"reg_READ_RA_VAL <= internal_NEXT_READ_RA_VAL;"); 429 vhdl->set_body(3,"reg_READ_RB_VAL <= internal_NEXT_READ_RB_VAL;"); 430 vhdl->set_body(3,"reg_READ_RC_VAL <= internal_NEXT_READ_RC_VAL;"); 431 vhdl->set_body(3,"reg_DATA_RA_VAL <= internal_NEXT_DATA_RA_VAL;"); 432 vhdl->set_body(3,"reg_DATA_RB_VAL <= internal_NEXT_DATA_RB_VAL;"); 433 vhdl->set_body(3,"reg_DATA_RC_VAL <= internal_NEXT_DATA_RC_VAL;"); 434 vhdl->set_body(3,"reg_DATA_RA <= internal_NEXT_DATA_RA ;"); 435 vhdl->set_body(3,"reg_DATA_RB <= internal_NEXT_DATA_RB ;"); 436 vhdl->set_body(3,"reg_DATA_RC <= internal_NEXT_DATA_RC ;"); 437 438 vhdl->set_body(2,"end if;"); 439 vhdl->set_body(0,""); 440 vhdl->set_body(1,"end if;"); 441 vhdl->set_body(0,"end process transition;"); 442 442 443 443 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_declaration.cpp
r81 r97 87 87 min = max+1; 88 88 } 89 if(_param->_have_port_rob_ id)89 if(_param->_have_port_rob_ptr) 90 90 { 91 size = _param->_size_rob_ id;91 size = _param->_size_rob_ptr; 92 92 max = min-1+size; 93 93 vhdl->set_alias ("internal_ROB_ID ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 94 94 min = max+1; 95 95 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp
r88 r97 6 6 * Test 7 7 */ 8 #define NB_ITERATION 28 #define NB_ITERATION 1 9 9 #define CYCLE_MAX (2048*NB_ITERATION) 10 10 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp
r88 r97 231 231 in_BYPASS_WRITE_GPR_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("gpr_data" ,_param->_size_general_data); 232 232 in_BYPASS_WRITE_SPR_VAL [i] = interface->set_signal_valack_in ("spr_val",VAL); 233 in_BYPASS_WRITE_SPR_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("spr_num_reg" ,_param->_size_ general_register);234 in_BYPASS_WRITE_SPR_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("spr_data" ,_param->_size_ general_data);233 in_BYPASS_WRITE_SPR_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("spr_num_reg" ,_param->_size_special_register); 234 in_BYPASS_WRITE_SPR_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("spr_data" ,_param->_size_special_data); 235 235 } 236 236 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp
r88 r97 50 50 _queue[it_dump]._write_re , \ 51 51 _queue[it_dump]._num_reg_re , \ 52 toString _type(_queue[it_dump]._type).c_str()); \52 toString(_queue[it_dump]._type).c_str()); \ 53 53 } while (0) 54 54 #else … … 84 84 _queue[(*_queue_control)[it_dump]]._write_re , \ 85 85 _queue[(*_queue_control)[it_dump]]._num_reg_re , \ 86 toString _type(_queue[(*_queue_control)[it_dump]]._type).c_str()); \86 toString(_queue[(*_queue_control)[it_dump]]._type).c_str()); \ 87 87 } while (0) 88 88 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_body.cpp
r81 r97 88 88 if (_param->_have_port_ooo_engine_id) 89 89 vhdl->set_body ("out_RETIRE_"+toString(i)+"_OOO_ENGINE_ID <= reg_OOO_ENGINE_ID"+range_retire+";"); 90 if (_param->_have_port_rob_ id)90 if (_param->_have_port_rob_ptr) 91 91 vhdl->set_body ("out_RETIRE_"+toString(i)+"_ROB_ID <= reg_ROB_ID "+range_retire+";"); 92 92 vhdl->set_body ("out_RETIRE_"+toString(i)+"_OPERATION <= reg_OPERATION "+range_retire+";"); … … 268 268 if (_param->_have_port_ooo_engine_id) 269 269 vhdl->set_body ("\t\t\t\treg_OOO_ENGINE_ID "+range_insert+" <= in_INSERT_OOO_ENGINE_ID;"); 270 if (_param->_have_port_rob_ id)270 if (_param->_have_port_rob_ptr) 271 271 vhdl->set_body ("\t\t\t\treg_ROB_ID "+range_insert+" <= in_INSERT_ROB_ID ;"); 272 272 vhdl->set_body ("\t\t\t\treg_OPERATION "+range_insert+" <= in_INSERT_OPERATION ;"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_declaration.cpp
r81 r97 32 32 if (_param->_have_port_ooo_engine_id) 33 33 vhdl->set_type ("Tooo_engine_id ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_ooo_engine_id)); 34 if (_param->_have_port_rob_ id)35 vhdl->set_type ("Trob_id ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_rob_ id));34 if (_param->_have_port_rob_ptr) 35 vhdl->set_type ("Trob_id ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_rob_ptr)); 36 36 vhdl->set_type ("Toperation ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_operation)); 37 37 vhdl->set_type ("Ttype ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_type)); … … 48 48 if (_param->_have_port_ooo_engine_id) 49 49 vhdl->set_signal("reg_OOO_ENGINE_ID ","Tooo_engine_id"); 50 if (_param->_have_port_rob_ id)50 if (_param->_have_port_rob_ptr) 51 51 vhdl->set_signal("reg_ROB_ID ","Trob_id"); 52 52 vhdl->set_signal("reg_OPERATION ","Toperation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp
r88 r97 1 1 /* 2 * $ Id$2 * $id: Read_unit_allocation.cpp 88 2008-12-10 18:31:39Z rosiere $ 3 3 * 4 4 * [ Description ] … … 115 115 ALLOC1_VALACK_IN ( in_GPR_READ_ACK,ACK); 116 116 ALLOC1_SIGNAL_OUT(out_GPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 117 ALLOC1_SIGNAL_OUT(out_GPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_ data);118 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_ register);117 ALLOC1_SIGNAL_OUT(out_GPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 118 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 119 119 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 120 120 } … … 127 127 ALLOC1_VALACK_IN ( in_SPR_READ_ACK,ACK); 128 128 ALLOC1_SIGNAL_OUT(out_SPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 129 ALLOC1_SIGNAL_OUT(out_SPR_READ_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_ data);130 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_ register);129 ALLOC1_SIGNAL_OUT(out_SPR_READ_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 130 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data ); 131 131 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 132 132 } … … 138 138 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL,VAL); 139 139 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 140 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_ data);141 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_ register);140 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 141 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 142 142 } 143 143 … … 148 148 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL,VAL); 149 149 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 150 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_ data);151 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_ register);150 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 151 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 152 152 } 153 153 … … 158 158 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 159 159 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_VAL ,"gpr_val" ,Tcontrol_t ,1); 160 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_NUM_REG ,"gpr_num_reg" ,Tgeneral_address_t,_param->_size_general_ data);161 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_DATA ,"gpr_data" ,Tgeneral_data_t ,_param->_size_general_ register);160 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_NUM_REG ,"gpr_num_reg" ,Tgeneral_address_t,_param->_size_general_register); 161 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_DATA ,"gpr_data" ,Tgeneral_data_t ,_param->_size_general_data ); 162 162 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_VAL ,"spr_val" ,Tcontrol_t ,1); 163 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_ data);164 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_ register);163 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 164 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data ); 165 165 } 166 166 … … 171 171 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_VAL ,"val" ,Tcontrol_t ,1); 172 172 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 173 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_ data);174 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_ register);173 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 174 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 175 175 } 176 176
Note: See TracChangeset
for help on using the changeset viewer.