Changeset 68 for 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
- Timestamp:
- Dec 8, 2007, 5:12:36 PM (16 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/Read_queue/src/Read_queue_vhdl_body.cpp
r54 r68 23 23 log_printf(FUNC,Read_queue,"vhdl_body","Begin"); 24 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("\t in_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(""); 48 49 uint32_t min = 0; 50 uint32_t max; 51 52 if(_param->_have_port_context_id ) 53 { 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;"); 56 min = max+1; 57 } 58 if(_param->_have_port_front_end_id ) 59 { 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;"); 62 min = max+1; 63 } 64 if(_param->_have_port_ooo_engine_id ) 65 { 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;"); 68 min = max+1; 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;"); 74 min = max+1; 75 } 76 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;"); 79 min = max+1; 80 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;"); 87 min = max+1; 88 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;"); 95 min = max+1; 96 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;"); 103 min = max+1; 104 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;"); 111 min = max+1; 112 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;"); 119 min = max+1; 120 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;"); 127 min = max+1; 128 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;"); 143 if(_param->_have_port_ooo_engine_id) 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;"); 154 if(_param->_have_port_ooo_engine_id) 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(""); 165 166 if(_param->_have_port_context_id ) 167 vhdl->set_body ("out_READ_QUEUE_OUT_CONTEXT_ID <= internal_CONTEXT_ID ;"); 168 if(_param->_have_port_front_end_id ) 169 vhdl->set_body ("out_READ_QUEUE_OUT_FRONT_END_ID <= internal_FRONT_END_ID ;"); 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 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 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"); 248 for (int32_t i=_param->_nb_spr_write-1; i>=0 ; i--) 249 { 250 string cmp; 251 252 if (_param->_have_port_ooo_engine_id) 253 cmp = "and (in_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 254 else 255 cmp = ""; 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;"); 266 267 } 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"); 278 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 279 { 280 string cmp; 281 282 if (_param->_have_port_ooo_engine_id) 283 cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 284 else 285 cmp = ""; 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"); 298 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 299 { 300 string cmp; 301 302 if (_param->_have_port_ooo_engine_id) 303 cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 304 else 305 cmp = ""; 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"); 318 for (int32_t i=_param->_nb_spr_write-1; i>=0 ; i--) 319 { 320 string cmp; 321 322 if (_param->_have_port_ooo_engine_id) 323 cmp = "and (in_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 324 else 325 cmp = ""; 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 <="); 338 #ifdef SYSTEMC_VHDL_COMPATIBILITY 339 vhdl->set_body("\t"+std_logic_others(_param->_size_general_data,0)+" when internal_READ_RA='0' else"); 340 #endif 341 // bypass 342 vhdl->set_body("\t\t-- check bypass"); 343 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 344 { 345 string cmp; 346 347 if (_param->_have_port_ooo_engine_id) 348 cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 349 else 350 cmp = ""; 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 <="); 360 #ifdef SYSTEMC_VHDL_COMPATIBILITY 361 vhdl->set_body("\t"+std_logic_others(_param->_size_general_data,0)+" when internal_READ_RB='0' else"); 362 #endif 363 // bypass 364 vhdl->set_body("\t\t-- check bypass"); 365 for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--) 366 { 367 string cmp; 368 369 if (_param->_have_port_ooo_engine_id) 370 cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 371 else 372 cmp = ""; 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 <="); 382 #ifdef SYSTEMC_VHDL_COMPATIBILITY 383 vhdl->set_body("\t"+std_logic_others(_param->_size_special_data,0)+" when internal_READ_RC='0' else"); 384 #endif 385 // bypass 386 vhdl->set_body("\t\t-- check bypass"); 387 for (int32_t i=_param->_nb_spr_write-1; i>=0 ; i--) 388 { 389 string cmp; 390 391 if (_param->_have_port_ooo_engine_id) 392 cmp = "and (in_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) "; 393 else 394 cmp = ""; 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;"); 442 443 } 444 445 25 446 log_printf(FUNC,Read_queue,"vhdl_body","End"); 26 447 };
Note: See TracChangeset
for help on using the changeset viewer.