Changeset 135 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue
- Timestamp:
- Jul 17, 2009, 10:59:05 AM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue
- Files:
-
- 3 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/Makefile.deps
r82 r135 13 13 include $(DIR_MORPHEO)/Behavioural/Makefile.deps 14 14 endif 15 ifndef Queue 16 include $(DIR_MORPHEO)/Behavioural/Generic/Queue/Makefile.deps 17 endif 15 18 16 19 #-----[ Directory ]---------------------------------------- … … 21 24 22 25 Decod_queue_LIBRARY = -lDecod_queue \ 26 $(Queue_LIBRARY) \ 23 27 $(Behavioural_LIBRARY) 24 28 25 29 Decod_queue_DIR_LIBRARY = -L$(Decod_queue_DIR)/lib \ 30 $(Queue_DIR_LIBRARY) \ 26 31 $(Behavioural_DIR_LIBRARY) 27 32 … … 31 36 @\ 32 37 $(MAKE) Behavioural_library; \ 38 $(MAKE) Queue_library; \ 33 39 $(MAKE) --directory=$(Decod_queue_DIR) --makefile=Makefile; 34 40 … … 36 42 @\ 37 43 $(MAKE) Behavioural_library_clean; \ 44 $(MAKE) Queue_library_clean; \ 38 45 $(MAKE) --directory=$(Decod_queue_DIR) --makefile=Makefile clean; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/doc/sty/header.sty
r82 r135 2 2 %\def\review{\number\day/\number\month/\number\year\xspace} 3 3 4 \title{Decod _queue}4 \title{Decod\_queue} 5 5 6 6 \author{} -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Parameters.h
r111 r135 34 34 35 35 public : uint32_t _nb_bank; 36 public : uint32_t _size_internal_queue ; // data size in queue 36 37 37 38 //-----[ methods ]----------------------------------------------------------- … … 60 61 }; // end namespace multi_front_end 61 62 }; // end namespace core 62 63 63 }; // end namespace behavioural 64 64 }; // end namespace morpheo -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_vhdl.cpp
r82 r135 9 9 #include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Decod_queue.h" 10 10 #include "Behavioural/include/Vhdl.h" 11 #include "Behavioural/Generic/Queue/include/Queue.h" 11 12 12 13 namespace morpheo { … … 24 25 { 25 26 log_begin(Decod_queue,FUNCTION); 27 28 //----- Queue ----- 29 30 morpheo::behavioural::generic::queue::Parameters * param_queue; 31 morpheo::behavioural::generic::queue::Queue * queue; 32 33 param_queue = new morpheo::behavioural::generic::queue::Parameters 34 (_param->_size_queue, 35 _param->_size_internal_queue, 36 0, 37 false, 38 false 39 ); 40 41 std::string queue_name = _name + "_queue"; 42 queue = new morpheo::behavioural::generic::queue::Queue 43 (queue_name.c_str() 44 #ifdef STATISTICS 45 ,NULL 46 #endif 47 ,param_queue 48 ,USE_VHDL); 49 50 _component->set_component(queue->_component 51 #ifdef POSITION 52 , 0, 0, 0, 0 53 #endif 54 , INSTANCE_LIBRARY 55 ); 26 56 27 57 Vhdl * vhdl = new Vhdl (_name); -
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 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_vhdl_declaration.cpp
r82 r135 23 23 { 24 24 log_begin(Decod_queue,FUNCTION); 25 26 vhdl->set_signal ("internal_QUEUE_INSERT_DATA ",_param->_size_internal_queue); 27 vhdl->set_signal ("internal_QUEUE_RETIRE_DATA ",_param->_size_internal_queue); 28 vhdl->set_signal ("internal_QUEUE_INSERT_VAL ",1); 29 vhdl->set_signal ("internal_QUEUE_RETIRE_VAL ",1); 30 vhdl->set_signal ("internal_QUEUE_INSERT_ACK ",1); 31 vhdl->set_signal ("internal_QUEUE_RETIRE_ACK ",1); 32 33 vhdl->set_signal ("internal_QUEUE_NEW_HEAD ",1); 34 35 uint32_t min = 0; 36 uint32_t max, size; 37 38 for(uint32_t i = 0;i < _param->_nb_context;i++){ 39 40 vhdl->set_signal ("reg_NB_INST_"+toString(i)+"_ALL",_param->_size_nb_inst_decod); 41 vhdl->set_signal ("internal_NB_INST_"+toString(i)+"_ALL",_param->_size_nb_inst_decod); 42 43 for(uint32_t i_inst = 0;i_inst < _param->_nb_inst_decod;i_inst++){ 44 vhdl->set_signal ("internal_NB_INST_IN_"+toString(i)+"_"+toString(i_inst)+"_CONTEXT",_param->_size_nb_inst_decod); 45 vhdl->set_signal ("internal_NB_INST_OUT_"+toString(i)+"_"+toString(i_inst)+"_CONTEXT",_param->_size_nb_inst_decod); 46 } 47 } 48 49 for(uint32_t i = 0;i < _param->_nb_inst_decod;i++){ 50 vhdl->set_signal ("reg_DECOD_OUT_"+toString(i)+"_VAL",1); 51 vhdl->set_signal ("internal_DECOD_OUT_"+toString(i)+"_VAL",1); 52 vhdl->set_signal ("internal_OUT_DECOD_OUT_"+toString(i)+"_VAL",1); 53 vhdl->set_signal ("internal_DECOD_"+toString(i)+"_VALID",1); 54 vhdl->set_signal ("internal_INDEX_"+toString(i),_param->_size_nb_inst_decod + 1); 55 56 max = min; 57 58 if(_param->_have_port_context_id) 59 { 60 size = _param->_size_context_id; 61 max = min-1+size; 62 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_CONTEXT_ID",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 63 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_CONTEXT_ID",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 64 min = max+1; 65 } 66 67 if(_param->_have_port_depth) 68 { 69 size = _param->_size_depth; 70 max = min-1+size; 71 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_DEPTH",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 72 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_DEPTH",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 73 min = max+1; 74 } 75 76 size = _param->_size_type; 77 max = min-1+size; 78 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_TYPE",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 79 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_TYPE",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 80 min = max+1; 81 82 size = _param->_size_operation; 83 max = min-1+size; 84 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_OPERATION",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 85 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_OPERATION",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 86 min = max+1; 87 88 size = 1; 89 max = min-1+size; 90 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_NO_EXECUTE",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 91 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_NO_EXECUTE",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 92 min = max+1; 93 94 size = 1; 95 max = min-1+size; 96 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_IS_DELAY_SLOT",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 97 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_IS_DELAY_SLOT",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 98 min = max+1; 99 100 #ifdef DEBUG 101 size = _param->_size_instruction_address; 102 max = min-1+size; 103 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_ADDRESS",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 104 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_ADDRESS",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 105 min = max+1; 106 #endif 107 108 size = _param->_size_instruction_address; 109 max = min-1+size; 110 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_ADDRESS_NEXT",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 111 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_ADDRESS_NEXT",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 112 min = max+1; 113 114 size = 1; 115 max = min-1+size; 116 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_HAS_IMMEDIAT",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 117 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_HAS_IMMEDIAT",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 118 min = max+1; 119 120 size = _param->_size_general_data; 121 max = min-1+size; 122 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_IMMEDIAT",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 123 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_IMMEDIAT",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 124 min = max+1; 125 126 size = 1; 127 max = min-1+size; 128 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_READ_RA",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 129 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_READ_RA",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 130 min = max+1; 131 132 size = _param->_size_general_register_logic; 133 max = min-1+size; 134 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_NUM_REG_RA",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 135 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_NUM_REG_RA",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 136 min = max+1; 137 138 size = 1; 139 max = min-1+size; 140 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_READ_RB",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 141 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_READ_RB",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 142 min = max+1; 143 144 size = _param->_size_general_register_logic; 145 max = min-1+size; 146 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_NUM_REG_RB",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 147 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_NUM_REG_RB",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 148 min = max+1; 149 150 size = 1; 151 max = min-1+size; 152 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_READ_RC",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 153 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_READ_RC",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 154 min = max+1; 155 156 size = _param->_size_special_register_logic; 157 max = min-1+size; 158 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_NUM_REG_RC",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 159 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_NUM_REG_RC",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 160 min = max+1; 161 162 size = 1; 163 max = min-1+size; 164 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_WRITE_RD",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 165 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_WRITE_RD",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 166 min = max+1; 167 168 size = _param->_size_general_register_logic; 169 max = min-1+size; 170 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_NUM_REG_RD",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 171 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_NUM_REG_RD",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 172 min = max+1; 173 174 size = 1; 175 max = min-1+size; 176 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_WRITE_RE",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 177 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_WRITE_RE",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 178 min = max+1; 179 180 size = _param->_size_special_register_logic; 181 max = min-1+size; 182 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_NUM_REG_RE",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 183 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_NUM_REG_RE",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 184 min = max+1; 185 186 size = _param->_size_exception_use; 187 max = min-1+size; 188 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_EXCEPTION_USE",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 189 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_EXCEPTION_USE",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 190 min = max+1; 191 192 size = _param->_size_exception_decod; 193 max = min-1+size; 194 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_EXCEPTION",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 195 vhdl->set_alias ("internal_DECOD_OUT_"+toString(i)+"_EXCEPTION",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 196 min = max+1; 197 198 size = 1; 199 max = min-1+size; 200 vhdl->set_alias ("internal_DECOD_IN_"+toString(i)+"_VAL",std_logic(size),"internal_QUEUE_INSERT_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 201 vhdl->set_alias ("internal_QUEUE_OUT_"+toString(i)+"_VAL",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min)); 202 min = max+1; 203 204 } 205 25 206 log_end(Decod_queue,FUNCTION); 26 207 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Parameters.cpp
r111 r135 41 41 42 42 test(); 43 44 _size_internal_queue = 45 (1 + // _val 46 _size_context_id + // _context_id 47 _size_depth + // _depth 48 _size_type + // _type 49 _size_operation + // _operation 50 1 + // _no_execute 51 1 + // _is_delay_slot 52 #ifdef DEBUG 53 _size_instruction_address + // _address 54 #endif 55 _size_instruction_address + // _address_next 56 1 + // _has_immediat 57 _size_general_data + // _immediat 58 1 + // _read_ra 59 _size_general_register_logic + // _num_reg_ra 60 1 + // _read_rb 61 _size_general_register_logic + // _num_reg_rb 62 1 + // _read_rc 63 _size_special_register_logic + // _num_reg_rc 64 1 + // _write_rd 65 _size_general_register_logic + // _num_reg_rd 66 1 + // _write_re 67 _size_special_register_logic + // _num_reg_re 68 _size_exception_use + // _exception_use 69 _size_exception_decod // _exception 70 ) * _nb_inst_decod; 43 71 44 72 if (is_toplevel)
Note: See TracChangeset
for help on using the changeset viewer.