Changeset 135 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_vhdl_body.cpp
- Timestamp:
- Jul 17, 2009, 10:59:05 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_vhdl_body.cpp
r82 r135 23 23 { 24 24 log_begin(Decod_queue,FUNCTION); 25 vhdl->set_body (""); 25 26 vhdl->set_body(0,""); 27 vhdl->set_comment(0,"-----------------------------------"); 28 vhdl->set_comment(0,"-- Instance queue "); 29 vhdl->set_comment(0,"-----------------------------------"); 30 vhdl->set_body(0,""); 31 32 vhdl->set_body (0,"instance_"+_name+"_queue : "+_name+"_queue"); 33 vhdl->set_body (0,"port map ("); 34 vhdl->set_body (1," in_CLOCK => in_CLOCK "); 35 vhdl->set_body (1,", in_NRESET => in_NRESET"); 36 vhdl->set_body (1,", in_INSERT_VAL => internal_QUEUE_INSERT_VAL"); 37 vhdl->set_body (1,",out_INSERT_ACK => internal_QUEUE_INSERT_ACK"); 38 vhdl->set_body (1,", in_INSERT_DATA => internal_QUEUE_INSERT_DATA"); 39 vhdl->set_body (1,",out_RETIRE_VAL => internal_QUEUE_RETIRE_VAL"); 40 vhdl->set_body (1,", in_RETIRE_ACK => internal_QUEUE_RETIRE_ACK"); 41 vhdl->set_body (1,",out_RETIRE_DATA => internal_QUEUE_RETIRE_DATA"); 42 vhdl->set_body (0,");"); 43 44 vhdl->set_body(0,""); 45 vhdl->set_comment(0,"-----------------------------------"); 46 vhdl->set_comment(0,"-- Entree Queue "); 47 vhdl->set_comment(0,"-----------------------------------"); 48 vhdl->set_body(0,""); 49 50 for(uint32_t i=0;i < _param->_nb_inst_decod;i++){ 51 52 vhdl->set_body(0,""); 53 vhdl->set_comment(0,"-----------------------------------"); 54 vhdl->set_comment(0,"-- Instruction "+toString(i)+" "); 55 vhdl->set_comment(0,"-----------------------------------"); 56 vhdl->set_body(0,""); 57 58 if(_param->_have_port_context_id) vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_CONTEXT_ID <= in_DECOD_IN_"+toString(i)+"_CONTEXT_ID ;"); 59 if(_param->_have_port_depth) vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_DEPTH <= in_DECOD_IN_"+toString(i)+"_DEPTH ;"); 60 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_TYPE <= in_DECOD_IN_"+toString(i)+"_TYPE ;"); 61 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_OPERATION <= in_DECOD_IN_"+toString(i)+"_OPERATION ;"); 62 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_NO_EXECUTE <= in_DECOD_IN_"+toString(i)+"_NO_EXECUTE ;"); 63 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_IS_DELAY_SLOT <= in_DECOD_IN_"+toString(i)+"_IS_DELAY_SLOT ;"); 64 #ifdef DEBUG 65 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_ADDRESS <= in_DECOD_IN_"+toString(i)+"_ADDRESS ;"); 66 #endif 67 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_ADDRESS_NEXT <= in_DECOD_IN_"+toString(i)+"_ADDRESS_NEXT ;"); 68 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_HAS_IMMEDIAT <= in_DECOD_IN_"+toString(i)+"_HAS_IMMEDIAT ;"); 69 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_IMMEDIAT <= in_DECOD_IN_"+toString(i)+"_IMMEDIAT ;"); 70 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_READ_RA <= in_DECOD_IN_"+toString(i)+"_READ_RA ;"); 71 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_NUM_REG_RA <= in_DECOD_IN_"+toString(i)+"_NUM_REG_RA ;"); 72 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_READ_RB <= in_DECOD_IN_"+toString(i)+"_READ_RB ;"); 73 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_NUM_REG_RB <= in_DECOD_IN_"+toString(i)+"_NUM_REG_RB ;"); 74 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_READ_RC <= in_DECOD_IN_"+toString(i)+"_READ_RC ;"); 75 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_NUM_REG_RC <= in_DECOD_IN_"+toString(i)+"_NUM_REG_RC ;"); 76 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_WRITE_RD <= in_DECOD_IN_"+toString(i)+"_WRITE_RD ;"); 77 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_NUM_REG_RD <= in_DECOD_IN_"+toString(i)+"_NUM_REG_RD ;"); 78 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_WRITE_RE <= in_DECOD_IN_"+toString(i)+"_WRITE_RE ;"); 79 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_NUM_REG_RE <= in_DECOD_IN_"+toString(i)+"_NUM_REG_RE ;"); 80 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_EXCEPTION_USE <= in_DECOD_IN_"+toString(i)+"_EXCEPTION_USE ;"); 81 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_EXCEPTION <= in_DECOD_IN_"+toString(i)+"_EXCEPTION ;"); 82 vhdl->set_body(0,"internal_DECOD_IN_"+toString(i)+"_VAL <= in_DECOD_IN_"+toString(i)+"_VAL ;"); 83 vhdl->set_body(0,"out_DECOD_IN_"+toString(i)+"_ACK <= internal_QUEUE_INSERT_ACK ;"); 84 } 85 86 vhdl->set_body(0,""); 87 88 vhdl->set_body(0,"internal_QUEUE_INSERT_VAL <= '0'"); 89 for(uint32_t i=0;i < _param->_nb_inst_decod;i++){ 90 vhdl->set_body(1," OR internal_DECOD_IN_"+toString(i)+"_VAL"); 91 } 92 vhdl->set_body(1,";"); 93 94 vhdl->set_body(0,""); 95 96 if(_param->_have_port_context_id){ 97 if(_param->_size_nb_inst_decod < 2){ 98 for(uint32_t i_context=0;i_context < _param->_nb_context;i_context++) 99 vhdl->set_body(0,"internal_NB_INST_"+toString(i_context)+"_ALL <= ( reg_NB_INST_"+toString(i_context)+"_ALL OR ( internal_DECOD_IN_0_VAL AND ( internal_QUEUE_INSERT_ACK AND internal_DECOD_OUT_0_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,i_context)+" ))) AND ( NOT ( internal_OUT_DECOD_OUT_0_VAL AND ( internal_DECOD_OUT_0_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,i_context)+" AND ( NOT internal_DECOD_OUT_0_VAL ))));"); 100 } 101 else{ 102 for(uint32_t i_context=0;i_context < _param->_nb_context;i_context++){ 103 104 for(uint32_t i_inst=0;i_inst < _param->_nb_inst_decod;i_inst++){ 105 vhdl->set_body(0,"internal_NB_INST_OUT_"+toString(i_context)+"_"+toString(i_inst)+"_CONTEXT <= "+std_logic_conv(_param->_size_nb_inst_decod,1)+" WHEN( internal_DECOD_OUT_"+toString(i_inst)+"_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,i_context)+" AND internal_OUT_DECOD_OUT_"+toString(i_inst)+"_VAL = '1' AND internal_DECOD_OUT_"+toString(i_inst)+"_VAL = '0' ) ELSE "+std_logic_conv(_param->_size_nb_inst_decod,0)+";"); 106 vhdl->set_body(0,"internal_NB_INST_IN_"+toString(i_context)+"_"+toString(i_inst)+"_CONTEXT <= "+std_logic_conv(_param->_size_nb_inst_decod,1)+" WHEN( internal_DECOD_IN_"+toString(i_inst)+"_VAL = '1' AND internal_QUEUE_INSERT_ACK = '1' AND internal_DECOD_IN_"+toString(i_inst)+"_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,i_context)+" ) ELSE "+std_logic_conv(_param->_size_nb_inst_decod,0)+";"); 107 } 108 109 vhdl->set_body(0,""); 110 111 vhdl->set_body(0,"internal_NB_INST_"+toString(i_context)+"_ALL <= reg_NB_INST_"+toString(i_context)+"_ALL"); 112 113 for(uint32_t i_inst=0;i_inst < _param->_nb_inst_decod;i_inst++){ 114 vhdl->set_body(1,"+ internal_NB_INST_IN_"+toString(i_context)+"_"+toString(i_inst)+"_CONTEXT"); 115 vhdl->set_body(1,"- internal_NB_INST_OUT_"+toString(i_context)+"_"+toString(i_inst)+"_CONTEXT"); 116 } 117 vhdl->set_body(1,";"); 118 } 119 } 120 } 121 else{ 122 if(_param->_size_nb_inst_decod < 2) vhdl->set_body(0,"internal_NB_INST_0_ALL <= ( reg_NB_INST_0_ALL OR ( internal_DECOD_IN_0_VAL AND internal_QUEUE_INSERT_ACK )) AND ( NOT ( internal_OUT_DECOD_OUT_0_VAL AND ( NOT internal_DECOD_OUT_0_VAL )));"); 123 else{ 124 for(uint32_t i_inst=0;i_inst < _param->_nb_inst_decod;i_inst++){ 125 vhdl->set_body(0,"internal_NB_INST_OUT_0_"+toString(i_inst)+"_CONTEXT <= "+std_logic_conv(_param->_size_nb_inst_decod,1)+" WHEN(( internal_OUT_DECOD_OUT_"+toString(i_inst)+"_VAL = '1' ) AND internal_DECOD_OUT_"+toString(i_inst)+"_VAL = '0' ) ELSE "+std_logic_conv(_param->_size_nb_inst_decod,0)+";"); 126 vhdl->set_body(0,"internal_NB_INST_IN_0_"+toString(i_inst)+"_CONTEXT <= "+std_logic_conv(_param->_size_nb_inst_decod,1)+" WHEN( internal_DECOD_IN_"+toString(i_inst)+"_VAL = '1' AND internal_QUEUE_INSERT_ACK = '1' ) ELSE "+std_logic_conv(_param->_size_nb_inst_decod,0)+";"); 127 } 128 129 vhdl->set_body(0,""); 130 131 vhdl->set_body(0,"internal_NB_INST_0_ALL <= reg_NB_INST_0_ALL"); 132 for(uint32_t i=0;i < _param->_nb_inst_decod;i++){ 133 vhdl->set_body(1," + internal_NB_INST_IN_0_"+toString(i)+"_CONTEXT"); 134 vhdl->set_body(1," - internal_NB_INST_OUT_0_"+toString(i)+"_CONTEXT"); 135 } 136 vhdl->set_body(1,";"); 137 } 138 } 139 140 vhdl->set_body(0,""); 141 vhdl->set_comment(0,"-----------------------------------"); 142 vhdl->set_comment(0,"-- Sortie Queue "); 143 vhdl->set_comment(0,"-----------------------------------"); 144 vhdl->set_body(0,""); 145 146 for(uint32_t i=0;i < _param->_nb_inst_decod;i++){ 147 148 vhdl->set_body(0,""); 149 vhdl->set_comment(0,"-----------------------------------"); 150 vhdl->set_comment(0,"-- Instruction "+toString(i)+" "); 151 vhdl->set_comment(0,"-----------------------------------"); 152 vhdl->set_body(0,""); 153 154 if(_param->_have_port_context_id){ 155 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_CONTEXT_ID <= internal_DECOD_OUT_"+toString(i)+"_CONTEXT_ID"); 156 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 157 158 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_CONTEXT_ID "); 159 } 160 vhdl->set_body(0," ;"); 161 } 162 if(_param->_have_port_depth){ 163 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_DEPTH <= internal_DECOD_OUT_"+toString(i)+"_DEPTH"); 164 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 165 166 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_DEPTH "); 167 } 168 vhdl->set_body(0," ;"); 169 } 170 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_TYPE <= internal_DECOD_OUT_"+toString(i)+"_TYPE"); 171 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 172 173 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_TYPE "); 174 } 175 vhdl->set_body(0," ;"); 176 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_OPERATION <= internal_DECOD_OUT_"+toString(i)+"_OPERATION"); 177 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 178 179 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_OPERATION "); 180 } 181 vhdl->set_body(0," ;"); 182 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_NO_EXECUTE <= internal_DECOD_OUT_"+toString(i)+"_NO_EXECUTE"); 183 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 184 185 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_NO_EXECUTE "); 186 } 187 vhdl->set_body(0," ;"); 188 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_IS_DELAY_SLOT <= internal_DECOD_OUT_"+toString(i)+"_IS_DELAY_SLOT"); 189 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 190 191 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_IS_DELAY_SLOT "); 192 } 193 vhdl->set_body(0," ;"); 194 #ifdef DEBUG 195 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_ADDRESS <= internal_DECOD_OUT_"+toString(i)+"_ADDRESS"); 196 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 197 198 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_ADDRESS "); 199 } 200 vhdl->set_body(0," ;"); 201 #endif 202 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_ADDRESS_NEXT <= internal_DECOD_OUT_"+toString(i)+"_ADDRESS_NEXT"); 203 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 204 205 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_ADDRESS_NEXT "); 206 } 207 vhdl->set_body(0," ;"); 208 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_HAS_IMMEDIAT <= internal_DECOD_OUT_"+toString(i)+"_HAS_IMMEDIAT"); 209 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 210 211 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_HAS_IMMEDIAT "); 212 } 213 vhdl->set_body(0," ;"); 214 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_IMMEDIAT <= internal_DECOD_OUT_"+toString(i)+"_IMMEDIAT"); 215 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 216 217 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_IMMEDIAT "); 218 } 219 vhdl->set_body(0," ;"); 220 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_READ_RA <= internal_DECOD_OUT_"+toString(i)+"_READ_RA"); 221 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 222 223 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_READ_RA "); 224 } 225 vhdl->set_body(0," ;"); 226 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_NUM_REG_RA <= internal_DECOD_OUT_"+toString(i)+"_NUM_REG_RA"); 227 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 228 229 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_NUM_REG_RA "); 230 } 231 vhdl->set_body(0," ;"); 232 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_READ_RB <= internal_DECOD_OUT_"+toString(i)+"_READ_RB"); 233 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 234 235 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_READ_RB "); 236 } 237 vhdl->set_body(0," ;"); 238 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_NUM_REG_RB <= internal_DECOD_OUT_"+toString(i)+"_NUM_REG_RB"); 239 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 240 241 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_NUM_REG_RB "); 242 } 243 vhdl->set_body(0," ;"); 244 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_READ_RC <= internal_DECOD_OUT_"+toString(i)+"_READ_RC"); 245 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 246 247 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_READ_RC "); 248 } 249 vhdl->set_body(0," ;"); 250 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_NUM_REG_RC <= internal_DECOD_OUT_"+toString(i)+"_NUM_REG_RC"); 251 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 252 253 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_NUM_REG_RC "); 254 } 255 vhdl->set_body(0," ;"); 256 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_WRITE_RD <= internal_DECOD_OUT_"+toString(i)+"_WRITE_RD"); 257 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 258 259 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_WRITE_RD "); 260 } 261 vhdl->set_body(0," ;"); 262 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_NUM_REG_RD <= internal_DECOD_OUT_"+toString(i)+"_NUM_REG_RD"); 263 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 264 265 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_NUM_REG_RD "); 266 } 267 vhdl->set_body(0," ;"); 268 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_WRITE_RE <= internal_DECOD_OUT_"+toString(i)+"_WRITE_RE"); 269 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 270 271 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_WRITE_RE "); 272 } 273 vhdl->set_body(0," ;"); 274 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_NUM_REG_RE <= internal_DECOD_OUT_"+toString(i)+"_NUM_REG_RE"); 275 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 276 277 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_NUM_REG_RE "); 278 } 279 vhdl->set_body(0," ;"); 280 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_EXCEPTION_USE <= internal_DECOD_OUT_"+toString(i)+"_EXCEPTION_USE"); 281 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 282 283 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod+1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_EXCEPTION_USE "); 284 } 285 vhdl->set_body(0," ;"); 286 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_EXCEPTION <= internal_DECOD_OUT_"+toString(i)+"_EXCEPTION"); 287 for(uint32_t cp = i;cp < _param->_nb_inst_decod - 1;cp++){ 288 289 vhdl->set_body(1," WHEN( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod + 1,cp*2 + 1)+") ELSE internal_DECOD_OUT_"+toString(cp + 1)+"_EXCEPTION "); 290 } 291 vhdl->set_body(0," ;"); 292 293 vhdl->set_body(0,""); 294 295 if(_param->_have_port_depth){ 296 if(_param->_have_port_context_id){ 297 298 vhdl->set_body(0,"internal_DECOD_"+toString(i)+"_VALID <= '1' WHEN(( in_DEPTH_0_FULL = '1' AND internal_DECOD_OUT_"+toString(i)+"_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,0)+" ) "); 299 for(uint32_t i_context = 1;i_context < _param->_nb_context;i_context++) 300 vhdl->set_body(2," OR ( in_DEPTH_"+toString(i_context)+"_FULL = '1' AND internal_DECOD_OUT_"+toString(i)+"_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,i_context)+" ) "); 301 302 vhdl->set_body(1," ) ELSE '1' WHEN(( in_DEPTH_0_MIN = in_DEPTH_0_MAX AND internal_DECOD_OUT_"+toString(i)+"_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,0)+" ) "); 303 for(uint32_t i_context = 1;i_context < _param->_nb_context;i_context++) 304 vhdl->set_body(2," OR ( in_DEPTH_"+toString(i_context)+"_MIN = in_DEPTH_"+toString(i_context)+"_MAX AND internal_DECOD_OUT_"+toString(i)+"_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,i_context)+" ) "); 305 306 vhdl->set_body(1," ) ELSE '1' WHEN((( internal_DECOD_OUT_"+toString(i)+"_DEPTH > in_DEPTH_0_MIN ) AND ( internal_DECOD_OUT_"+toString(i)+"_DEPTH < in_DEPTH_0_MAX ) AND ( in_DEPTH_0_MIN < in_DEPTH_0_MAX ) AND ( internal_DECOD_OUT_"+toString(i)+"_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,0)+" )) "); 307 for(uint32_t i_context = 1;i_context < _param->_nb_context;i_context++) 308 vhdl->set_body(2," OR (( internal_DECOD_OUT_"+toString(i)+"_DEPTH > in_DEPTH_"+toString(i_context)+"_MIN ) AND ( internal_DECOD_OUT_"+toString(i)+"_DEPTH < in_DEPTH_"+toString(i_context)+"_MAX ) AND ( in_DEPTH_"+toString(i_context)+"_MIN < in_DEPTH_"+toString(i_context)+"_MAX ) AND internal_DECOD_OUT_"+toString(i)+"_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,i_context)+" ) "); 309 310 vhdl->set_body(1," ) ELSE '1' WHEN(((( internal_DECOD_OUT_"+toString(i)+"_DEPTH > in_DEPTH_0_MAX ) OR ( internal_DECOD_OUT_"+toString(i)+"_DEPTH < in_DEPTH_0_MIN )) AND ( in_DEPTH_0_MIN > in_DEPTH_0_MAX ) AND ( internal_DECOD_OUT_"+toString(i)+"_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,0)+" ))"); 311 for(uint32_t i_context = 1;i_context < _param->_nb_context;i_context++) 312 vhdl->set_body(2," OR ((( internal_DECOD_OUT_"+toString(i)+"_DEPTH > in_DEPTH_"+toString(i_context)+"_MAX ) OR ( internal_DECOD_OUT_"+toString(i)+"_DEPTH < in_DEPTH_"+toString(i_context)+"_MIN )) AND ( in_DEPTH_"+toString(i_context)+"_MIN > in_DEPTH_"+toString(i_context)+"_MAX ) AND internal_DECOD_OUT_"+toString(i)+"_CONTEXT_ID = "+std_logic_conv(_param->_size_context_id,i_context)+" ) "); 313 314 vhdl->set_body(1," ) ELSE '0' ;"); 315 } 316 else{ 317 vhdl->set_body(0,"internal_DECOD_"+toString(i)+"_VALID <= '1' WHEN( in_DEPTH_0_FULL = '1' ) ELSE '1' WHEN( in_DEPTH_0_MIN = in_DEPTH_0_MAX ) ELSE '1' WHEN(( internal_DECOD_OUT_"+toString(i)+"_DEPTH > in_DEPTH_0_MIN ) AND ( internal_DECOD_OUT_"+toString(i)+"_DEPTH < in_DEPTH_0_MAX ) AND ( in_DEPTH_0_MIN < in_DEPTH_0_MAX )) ELSE '1' WHEN((( internal_DECOD_OUT_"+toString(i)+"_DEPTH > in_DEPTH_0_MAX ) OR ( internal_DECOD_OUT_"+toString(i)+"_DEPTH < in_DEPTH_0_MIN )) AND ( in_DEPTH_0_MIN > in_DEPTH_0_MAX )) ELSE '0' ;"); 318 } 319 320 vhdl->set_body(0,""); 321 322 vhdl->set_body(0,"internal_OUT_DECOD_OUT_"+toString(i)+"_VAL <= ( internal_QUEUE_OUT_"+toString(i)+"_VAL AND internal_QUEUE_RETIRE_VAL AND internal_DECOD_"+toString(i)+"_VALID ) WHEN( internal_QUEUE_NEW_HEAD = '1' ) ELSE reg_DECOD_OUT_"+toString(i)+"_VAL ;"); 323 } 324 else vhdl->set_body(0,"internal_OUT_DECOD_OUT_"+toString(i)+"_VAL <= ( internal_QUEUE_OUT_"+toString(i)+"_VAL AND internal_QUEUE_RETIRE_VAL ) WHEN( internal_QUEUE_NEW_HEAD = '1' ) ELSE reg_DECOD_OUT_"+toString(i)+"_VAL ;"); 325 326 vhdl->set_body(0,""); 327 328 vhdl->set_body(0,"internal_DECOD_OUT_"+toString(i)+"_VAL <= '0' WHEN(( in_DECOD_OUT_"+toString(i)+"_ACK = '1' ) AND ( internal_INDEX_"+toString(i)+" = "+std_logic_conv(_param->_size_nb_inst_decod + 1,i*2 + 1)+" ))"); 329 for(uint32_t cp = 0;cp < i;cp++){ 330 331 vhdl->set_body(1," ELSE '0' WHEN(( in_DECOD_OUT_"+toString(cp)+"_ACK = '1' ) AND ( internal_INDEX_"+toString(cp)+" = "+std_logic_conv(_param->_size_nb_inst_decod + 1,i*2 + 1)+" ))"); 332 } 333 vhdl->set_body(1," ELSE '1' WHEN( internal_OUT_DECOD_OUT_"+toString(i)+"_VAL = '1' ) ELSE '0' ;"); 334 335 vhdl->set_body(0,""); 336 337 vhdl->set_body(0,"out_DECOD_OUT_"+toString(i)+"_VAL <= internal_INDEX_"+toString(i)+"(0) ;"); 338 339 vhdl->set_body(0,""); 340 341 vhdl->set_body(0,"internal_INDEX_"+toString(i)+" <= "); 342 for(uint32_t cp = i;cp < _param->_nb_inst_decod;cp++){ 343 344 vhdl->set_body(1,std_logic_conv(_param->_size_nb_inst_decod + 1,cp*2 + 1)+" WHEN( internal_OUT_DECOD_OUT_"+toString(cp)+"_VAL = '1'"); 345 for(uint32_t cp2 = 0;cp2 < i;cp2++){ 346 347 vhdl->set_body(2," AND NOT( internal_INDEX_"+toString(cp2)+" = "+std_logic_conv(_param->_size_nb_inst_decod + 1,cp*2 + 1)+" )"); 348 } 349 vhdl->set_body(1," ) ELSE "); 350 } 351 vhdl->set_body(1,std_logic_conv(_param->_size_nb_inst_decod + 1,0)+" ;"); 352 } 353 354 vhdl->set_body(0,""); 355 356 vhdl->set_body(0,"internal_QUEUE_NEW_HEAD <= NOT( '0'"); 357 for(uint32_t i=0;i < _param->_nb_inst_decod;i++){ 358 vhdl->set_body(1," OR reg_DECOD_OUT_"+toString(i)+"_VAL"); 359 } 360 vhdl->set_body(1,");"); 361 362 vhdl->set_body(0,""); 363 364 vhdl->set_body(0,"internal_QUEUE_RETIRE_ACK <= NOT( '0'"); 365 for(uint32_t i=0;i < _param->_nb_inst_decod;i++){ 366 vhdl->set_body(1," OR internal_DECOD_OUT_"+toString(i)+"_VAL"); 367 } 368 vhdl->set_body(1,");"); 369 370 vhdl->set_body(0,""); 371 372 for(uint32_t i=0;i < _param->_nb_context;i++){ 373 vhdl->set_body(0,"out_NB_INST_"+toString(i)+"_ALL <= reg_NB_INST_"+toString(i)+"_ALL ;"); 374 } 375 376 vhdl->set_body(0,""); 377 vhdl->set_comment(0,"-----------------------------------"); 378 vhdl->set_comment(0,"-- Registers "); 379 vhdl->set_comment(0,"-----------------------------------"); 380 vhdl->set_body(0,""); 381 382 vhdl->set_body(0,"reg_DECOD_write: process (in_CLOCK)"); 383 vhdl->set_body(0,"begin"); 384 vhdl->set_body(1,"if in_CLOCK'event AND in_CLOCK = '1' then"); 385 vhdl->set_body(2,"if in_NRESET = '0' then"); 386 387 for(uint32_t i=0;i < _param->_nb_context;i++){ 388 vhdl->set_body(3,"reg_NB_INST_"+toString(i)+"_ALL <= "+std_logic_conv(_param->_size_nb_inst_decod,0)+";"); 389 } 390 for(uint32_t i=0;i < _param->_nb_inst_decod;i++){ 391 vhdl->set_body(3,"reg_DECOD_OUT_"+toString(i)+"_VAL <= '0';"); 392 } 393 394 vhdl->set_body(2,"else"); 395 396 for(uint32_t i=0;i < _param->_nb_context;i++){ 397 vhdl->set_body(3,"reg_NB_INST_"+toString(i)+"_ALL <= internal_NB_INST_"+toString(i)+"_ALL;"); 398 } 399 for(uint32_t i=0;i < _param->_nb_inst_decod;i++){ 400 vhdl->set_body(3,"reg_DECOD_OUT_"+toString(i)+"_VAL <= internal_DECOD_OUT_"+toString(i)+"_VAL;"); 401 } 402 403 vhdl->set_body(2,"end if;"); 404 vhdl->set_body(1,"end if;"); 405 vhdl->set_body(0,"end process reg_DECOD_write;"); 406 26 407 log_end(Decod_queue,FUNCTION); 27 408 };
Note: See TracChangeset
for help on using the changeset viewer.