Changeset 103 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_vhdl_declaration.cpp
- Timestamp:
- Jan 16, 2009, 5:55:32 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_vhdl_declaration.cpp
r81 r103 1 #ifdef VHDL1 #ifdef VHDL 2 2 /* 3 3 * $Id$ … … 24 24 { 25 25 log_printf(FUNC,Write_queue,FUNCTION,"Begin"); 26 27 vhdl->set_alias ("sig_QUEUE_INSERT_VAL ",1," in_WRITE_QUEUE_IN_VAL",std_logic_range(1)); 28 vhdl->set_alias ("sig_QUEUE_INSERT_ACK ",1,"out_WRITE_QUEUE_IN_ACK",std_logic_range(1)); 29 vhdl->set_signal ("sig_QUEUE_INSERT_DATA ",_param->_size_internal_queue); 30 vhdl->set_signal ("sig_QUEUE_RETIRE_DATA ",_param->_size_internal_queue); 31 vhdl->set_signal ("sig_QUEUE_RETIRE_VAL ",1); 32 vhdl->set_signal ("sig_QUEUE_RETIRE_ACK ",1); 33 for (uint32_t i=0; i<_param->_nb_bypass_write; i++) 34 { 35 vhdl->set_signal ("sig_QUEUE_SLOT_"+toString(i)+"_VAL",1); 36 vhdl->set_signal ("sig_QUEUE_SLOT_"+toString(i)+"_DATA",_param->_size_internal_queue); 37 } 38 for (uint32_t i=0; i<_param->_nb_bypass_write; i++) 39 { 40 vhdl->set_signal ("sig_BYPASS_WRITE_"+toString(i)+"_GPR_VAL",1); 41 vhdl->set_signal ("sig_BYPASS_WRITE_"+toString(i)+"_SPR_VAL",1); 42 } 43 44 vhdl->set_signal ("sig_GPR_WRITE_0_VAL",1); 45 vhdl->set_signal ("sig_SPR_WRITE_0_VAL",1); 46 vhdl->set_signal ("sig_DELETE_QUEUE_FRONT",1); 47 vhdl->set_signal ("sig_WRITE_QUEUE_OUT_VAL",1); 48 vhdl->set_signal ("reg_GPR_WRITE",1); 49 vhdl->set_signal ("reg_SPR_WRITE",1); 50 vhdl->set_signal ("sig_GPR_WRITE",1); 51 vhdl->set_signal ("sig_SPR_WRITE",1); 52 vhdl->set_signal ("reg_UPDATE",1); 53 54 uint32_t min = 0; 55 uint32_t max, size; 56 uint32_t min_ooo, max_ooo; 57 uint32_t pos_write_rd, min_gpr_num_reg, max_gpr_num_reg, min_gpr_data, max_gpr_data; 58 uint32_t pos_write_re, min_spr_num_reg, max_spr_num_reg, min_spr_data, max_spr_data; 59 60 if(_param->_have_port_context_id ) 61 { 62 size = _param->_size_context_id; 63 max = min-1+size; 64 vhdl->set_alias ("sig_WRITE_QUEUE_OUT_CONTEXT_ID ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 65 min = max+1; 66 } 67 if(_param->_have_port_front_end_id ) 68 { 69 size = _param->_size_front_end_id; 70 max = min-1+size; 71 vhdl->set_alias ("sig_WRITE_QUEUE_OUT_FRONT_END_ID ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 72 min = max+1; 73 } 74 if(_param->_have_port_ooo_engine_id ) 75 { 76 size = _param->_size_ooo_engine_id; 77 max = min-1+size; 78 vhdl->set_alias ("sig_WRITE_QUEUE_OUT_OOO_ENGINE_ID ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 79 vhdl->set_alias ("sig_GPR_WRITE_0_OOO_ENGINE_ID ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 80 vhdl->set_alias ("sig_SPR_WRITE_0_OOO_ENGINE_ID ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 81 min_ooo = min; 82 max_ooo = max; 83 min = max+1; 84 } 85 if(_param->_have_port_rob_ptr) 86 { 87 size = _param->_size_rob_ptr; 88 max = min-1+size; 89 vhdl->set_alias ("sig_WRITE_QUEUE_OUT_PACKET_ID ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 90 min = max+1; 91 } 92 93 size = 1; 94 max = min-1+size; 95 vhdl->set_alias ("sig_WRITE_RD ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 96 pos_write_rd = max; 97 min = max+1; 98 99 size = _param->_size_general_register; 100 max = min-1+size; 101 vhdl->set_alias ("sig_GPR_WRITE_0_NUM_REG ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 102 min_gpr_num_reg = min; 103 max_gpr_num_reg = max; 104 min = max+1; 105 106 size = _param->_size_general_data; 107 max = min-1+size; 108 vhdl->set_alias ("sig_GPR_WRITE_0_DATA ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 109 vhdl->set_alias ("sig_WRITE_QUEUE_OUT_DATA ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 110 min_gpr_data = min; 111 max_gpr_data = max; 112 min = max+1; 113 114 size = 1; 115 max = min-1+size; 116 vhdl->set_alias ("sig_WRITE_RE ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 117 pos_write_re = max; 118 min = max+1; 119 120 size = _param->_size_special_register; 121 max = min-1+size; 122 vhdl->set_alias ("sig_SPR_WRITE_0_NUM_REG ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 123 min_spr_num_reg = min; 124 max_spr_num_reg = max; 125 min = max+1; 126 127 size = _param->_size_special_data; 128 max = min-1+size; 129 vhdl->set_alias ("sig_SPR_WRITE_0_DATA ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 130 vhdl->set_alias ("sig_WRITE_QUEUE_OUT_FLAGS ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 131 min_spr_data = min; 132 max_spr_data = max; 133 min = max+1; 134 135 size = _param->_size_exception; 136 max = min-1+size; 137 vhdl->set_alias ("sig_WRITE_QUEUE_OUT_EXCEPTION ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 138 min = max+1; 139 140 size = 1; 141 max = min-1+size; 142 vhdl->set_alias ("sig_WRITE_QUEUE_OUT_NO_SEQUENCE ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 143 min = max+1; 144 145 size = _param->_size_instruction_address; 146 max = min-1+size; 147 vhdl->set_alias ("sig_WRITE_QUEUE_OUT_ADDRESS ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 148 min = max+1; 149 150 for (uint32_t i=0; i<_param->_nb_bypass_write; i++) 151 { 152 if(_param->_have_port_ooo_engine_id) 153 vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_OOO_ENGINE_ID",std_logic(_param->_size_ooo_engine_id),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,max_ooo,min_ooo)); 154 vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_GPR_NUM_REG",std_logic(_param->_size_general_register),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,max_gpr_num_reg,min_gpr_num_reg)); 155 vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_GPR_DATA",std_logic(_param->_size_general_data),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,max_gpr_data,min_gpr_data)); 156 vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_SPR_NUM_REG",std_logic(_param->_size_special_register),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,max_spr_num_reg,min_spr_num_reg)); 157 vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_SPR_DATA",std_logic(_param->_size_special_data),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,max_spr_data,min_spr_data)); 158 159 vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_WRITE_RD",std_logic(1),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,pos_write_rd,pos_write_rd)); 160 vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_WRITE_RE",std_logic(1),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,pos_write_re,pos_write_re)); 161 } 162 26 163 log_printf(FUNC,Write_queue,FUNCTION,"End"); 27 164 };
Note: See TracChangeset
for help on using the changeset viewer.