Changeset 62 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked
- Timestamp:
- Dec 4, 2007, 2:31:54 PM (17 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked
- Files:
-
- 1 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp
r58 r62 80 80 (*(_RegisterFile_Multi_Banked-> in_READ_VAL [i])) (READ_VAL [i]); 81 81 (*(_RegisterFile_Multi_Banked->out_READ_ACK [i])) (READ_ACK [i]); 82 if (_param->_have_port_address==true) 82 83 (*(_RegisterFile_Multi_Banked-> in_READ_ADDRESS [i])) (READ_ADDRESS [i]); 83 84 (*(_RegisterFile_Multi_Banked->out_READ_DATA [i])) (READ_DATA [i]); … … 88 89 (*(_RegisterFile_Multi_Banked-> in_WRITE_VAL [i])) (WRITE_VAL [i]); 89 90 (*(_RegisterFile_Multi_Banked->out_WRITE_ACK [i])) (WRITE_ACK [i]); 91 if (_param->_have_port_address==true) 90 92 (*(_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS [i])) (WRITE_ADDRESS [i]); 91 93 (*(_RegisterFile_Multi_Banked-> in_WRITE_DATA [i])) (WRITE_DATA [i]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h
r57 r62 71 71 public : const uint32_t _nb_word_by_bank ; 72 72 73 public : const bool _have_port_address ; 74 public : const bool _have_bank_port_address; 75 73 76 // A lot of table to the partial crossbar 74 77 public : uint32_t * _link_port_read_to_bank_read ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp
r57 r62 42 42 _num_reg_shift (0), 43 43 _num_reg_mask (gen_mask<Taddress_t>(_size_address_by_bank)), 44 _nb_word_by_bank (_nb_word / _nb_bank) 44 _nb_word_by_bank (_nb_word / _nb_bank), 45 _have_port_address (_size_address != 0), 46 _have_bank_port_address(_size_address_by_bank != 0) 45 47 { 46 48 log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin"); … … 48 50 if (_crossbar == PARTIAL_CROSSBAR) 49 51 { 50 log_printf( NONE,RegisterFile_Multi_Banked,"Parameters","Case : _crossbar == PARTIAL_CROSSBAR");52 log_printf(TRACE,RegisterFile_Multi_Banked,"Parameters","Case : _crossbar == PARTIAL_CROSSBAR"); 51 53 52 54 // All port_src is connected with one port_dest on each bank … … 68 70 69 71 70 log_printf( NONE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_read_to_bank_read");72 log_printf(TRACE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_read_to_bank_read"); 71 73 for (uint32_t i=0; i<_nb_port_read ;i++) 72 74 { 73 log_printf(NONE,RegisterFile_Multi_Banked,"Parameters"," * Read in [%d] to out [%d]",i,_link_port_read_to_bank_read [i]); 74 printf(" * Read in [%d] to out [%d]\n",i,_link_port_read_to_bank_read [i]); 75 log_printf(TRACE,RegisterFile_Multi_Banked,"Parameters"," * Read in [%d] to out [%d]",i,_link_port_read_to_bank_read [i]); 75 76 } 76 log_printf( NONE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_write_to_bank_write");77 log_printf(TRACE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_write_to_bank_write"); 77 78 for (uint32_t i=0; i<_nb_port_write ;i++) 78 79 { 79 log_printf(NONE,RegisterFile_Multi_Banked,"Parameters"," * Write in [%d] to out [%d]",i,_link_port_write_to_bank_write [i]); 80 printf(" * Write in [%d] to out [%d]\n",i,_link_port_write_to_bank_write [i]); 80 log_printf(TRACE,RegisterFile_Multi_Banked,"Parameters"," * Write in [%d] to out [%d]",i,_link_port_write_to_bank_write [i]); 81 81 } 82 82 } … … 102 102 _num_reg_shift (param._num_reg_shift ), 103 103 _num_reg_mask (param._num_reg_mask ), 104 _nb_word_by_bank (param._nb_word_by_bank ) 104 _nb_word_by_bank (param._nb_word_by_bank ), 105 _have_port_address (param._have_port_address ), 106 _have_bank_port_address(param._have_bank_port_address) 105 107 { 106 108 log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters (copy)","Begin"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp
r57 r62 85 85 sensitive_neg << *(in_CLOCK); 86 86 for (uint32_t i=0; i<_param->_nb_port_read; i++) 87 sensitive << *( in_READ_VAL [i]) 88 << *( in_READ_ADDRESS [i]); 87 { 88 sensitive << *( in_READ_VAL [i]); 89 if (_param->_have_port_address == true) 90 sensitive << *( in_READ_ADDRESS [i]); 91 } 89 92 90 93 #ifdef SYSTEMCASS_SPECIFIC … … 93 96 { 94 97 (*(out_READ_ACK [i])) (*( in_READ_VAL [i])); 98 if (_param->_have_port_address == true) 95 99 (*(out_READ_ACK [i])) (*( in_READ_ADDRESS [i])); 96 100 (*(out_READ_DATA [i])) (*( in_READ_VAL [i])); 101 if (_param->_have_port_address == true) 97 102 (*(out_READ_DATA [i])) (*( in_READ_ADDRESS [i])); 98 103 } … … 109 114 sensitive_neg << *(in_CLOCK); 110 115 for (uint32_t i=0; i<_param->_nb_port_write; i++) 111 sensitive << *( in_WRITE_VAL [i]) 112 << *( in_WRITE_ADDRESS [i]) 113 << *( in_WRITE_DATA [i]); 116 { 117 sensitive << *( in_WRITE_VAL [i]) 118 << *( in_WRITE_DATA [i]); 119 if (_param->_have_port_address == true) 120 sensitive << *( in_WRITE_ADDRESS [i]); 121 } 114 122 115 123 #ifdef SYSTEMCASS_SPECIFIC … … 118 126 { 119 127 (*(out_WRITE_ACK [i])) (*( in_WRITE_VAL [i])); 128 if (_param->_have_port_address == true) 120 129 (*(out_WRITE_ACK [i])) (*( in_WRITE_ADDRESS [i])); 121 130 (*(out_WRITE_ACK [i])) (*( in_WRITE_DATA [i])); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp
r57 r62 50 50 in_READ_VAL = new SC_IN (Tcontrol_t) * [_param->_nb_port_read]; 51 51 out_READ_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read]; 52 if (_param->_have_port_address == true) 52 53 in_READ_ADDRESS = new SC_IN (Taddress_t) * [_param->_nb_port_read]; 53 54 out_READ_DATA = new SC_OUT(Tdata_t ) * [_param->_nb_port_read]; … … 65 66 in_READ_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 66 67 out_READ_ACK [i] = interface->set_signal_valack_out ("ack" , ACK); 68 if (_param->_have_port_address == true) 67 69 in_READ_ADDRESS [i] = interface->set_signal_in <Taddress_t> ("address", static_cast<uint32_t>(log2(_param->_nb_word))); 68 70 out_READ_DATA [i] = interface->set_signal_out <Tdata_t > ("data" , _param->_size_word); … … 73 75 in_WRITE_VAL = new SC_IN (Tcontrol_t) * [_param->_nb_port_write]; 74 76 out_WRITE_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write]; 77 if (_param->_have_port_address == true) 75 78 in_WRITE_ADDRESS = new SC_IN (Taddress_t) * [_param->_nb_port_write]; 76 79 in_WRITE_DATA = new SC_IN (Tdata_t ) * [_param->_nb_port_write]; … … 88 91 in_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 89 92 out_WRITE_ACK [i] = interface->set_signal_valack_out ("ack" , ACK); 93 if (_param->_have_port_address == true) 90 94 in_WRITE_ADDRESS [i] = interface->set_signal_in <Taddress_t> ("address", static_cast<uint32_t>(log2(_param->_nb_word))); 91 95 in_WRITE_DATA [i] = interface->set_signal_in <Tdata_t > ("data" , _param->_size_word); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp
r53 r62 26 26 delete [] in_READ_VAL ; 27 27 delete [] out_READ_ACK ; 28 if (_param->_have_port_address == true) 28 29 delete [] in_READ_ADDRESS; 29 30 delete [] out_READ_DATA ; … … 32 33 delete [] in_WRITE_VAL ; 33 34 delete [] out_WRITE_ACK ; 35 if (_param->_have_port_address == true) 34 36 delete [] in_WRITE_ADDRESS; 35 37 delete [] in_WRITE_DATA ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_read.cpp
r57 r62 37 37 { 38 38 // Compute the adress of the bank 39 Taddress_t address = PORT_READ(in_READ_ADDRESS[i]); 39 Taddress_t address; 40 if (_param->_have_port_address == true) 41 address = PORT_READ(in_READ_ADDRESS[i]); 42 else 43 address = 0; 44 40 45 log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * address : %d",address); 41 46 Taddress_t bank = address_bank (address); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_write.cpp
r57 r62 38 38 val = false; 39 39 // Compute the adress of the bank 40 Taddress_t address = PORT_READ(in_WRITE_ADDRESS[i]); 40 Taddress_t address; 41 if (_param->_have_port_address == true) 42 address = PORT_READ(in_WRITE_ADDRESS[i]); 43 else 44 address = 0; 41 45 log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_write"," * address : %d",address); 42 46 Taddress_t bank = address_bank (address); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_read.cpp
r57 r62 37 37 { 38 38 // Compute the adress of the bank 39 Taddress_t address = PORT_READ(in_READ_ADDRESS[i]); 39 Taddress_t address; 40 if (_param->_have_port_address == true) 41 address = PORT_READ(in_READ_ADDRESS[i]); 42 else 43 address = 0; 40 44 log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * address : %d",address); 41 45 Taddress_t bank = address_bank (address); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_write.cpp
r57 r62 37 37 val = false; 38 38 // Compute the adress of the bank 39 Taddress_t address = PORT_READ(in_WRITE_ADDRESS[i]); 39 Taddress_t address; 40 if (_param->_have_port_address == true) 41 address = PORT_READ(in_WRITE_ADDRESS[i]); 42 else 43 address = 0; 40 44 log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write"," * address : %d",address); 41 45 Taddress_t bank = address_bank (address); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp
r58 r62 51 51 vhdl->set_body("\t, in_READ_"+toString(j)+"_VAL \t=>\tinternal_BANK_READ_"+toString(i)+"_"+toString(j)+"_VAL"); 52 52 vhdl->set_body("\t,out_READ_"+toString(j)+"_ACK \t=>\tinternal_BANK_READ_"+toString(i)+"_"+toString(j)+"_ACK"); 53 if (_param->_have_bank_port_address == true) 53 54 vhdl->set_body("\t, in_READ_"+toString(j)+"_ADDRESS \t=>\tinternal_BANK_READ_"+toString(i)+"_"+toString(j)+"_ADDRESS"); 54 55 vhdl->set_body("\t,out_READ_"+toString(j)+"_DATA \t=>\tinternal_BANK_READ_"+toString(i)+"_"+toString(j)+"_DATA"); … … 58 59 vhdl->set_body("\t, in_WRITE_"+toString(j)+"_VAL \t=>\tinternal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_VAL"); 59 60 vhdl->set_body("\t,out_WRITE_"+toString(j)+"_ACK \t=>\tinternal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_ACK"); 61 if (_param->_have_bank_port_address == true) 60 62 vhdl->set_body("\t, in_WRITE_"+toString(j)+"_ADDRESS \t=>\tinternal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_ADDRESS"); 61 63 vhdl->set_body("\t, in_WRITE_"+toString(j)+"_DATA \t=>\tinternal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_DATA"); … … 154 156 vhdl->set_body("-----------------------------------"); 155 157 vhdl->set_body(""); 158 159 if (_param->_have_bank_port_address == true) 156 160 for (uint32_t i=0; i<_param->_nb_bank; i++) 157 161 { … … 221 225 for (uint32_t j=0; j<_param->_nb_port_read; j ++) 222 226 { 223 string address = (_param->_nb_bank==1)?"":("and (in_READ_"+toString(j)+"_ADDRESS"+std_logic_range(_param->_size_address-1,_param->_size_address_by_bank)+"="+std_logic_conv( _param->_size_address-_param->_size_address_by_bank,i)+") "); 224 225 vhdl->set_body("internal_READ_"+toString(i)+"_"+toString(j)+"_VAL <= '1' when (in_READ_"+toString(j)+"_VAL ='1') "+address+"else '0';"); 227 string str_address; 228 229 if (_param->_have_bank_port_address == true) 230 str_address = (_param->_nb_bank==1)?"":("and (in_READ_"+toString(j)+"_ADDRESS"+std_logic_range(_param->_size_address-1,_param->_size_address_by_bank)+"="+std_logic_conv( _param->_size_address-_param->_size_address_by_bank,i)+") "); 231 else 232 str_address = ""; 233 234 vhdl->set_body("internal_READ_"+toString(i)+"_"+toString(j)+"_VAL <= '1' when (in_READ_"+toString(j)+"_VAL ='1') "+str_address+"else '0';"); 226 235 } 227 236 for (uint32_t j=0; j<_param->_nb_port_write; j ++) 228 237 { 229 string address = (_param->_nb_bank==1)?"":("and (in_WRITE_"+toString(j)+"_ADDRESS"+std_logic_range(_param->_size_address-1,_param->_size_address_by_bank)+"="+std_logic_conv( _param->_size_address-_param->_size_address_by_bank,i)+") "); 230 vhdl->set_body("internal_WRITE_"+toString(i)+"_"+toString(j)+"_VAL <= '1' when (in_WRITE_"+toString(j)+"_VAL='1') "+address+"else '0';"); 238 string str_address; 239 240 if (_param->_have_port_address == true) 241 str_address = (_param->_nb_bank==1)?"":("and (in_WRITE_"+toString(j)+"_ADDRESS"+std_logic_range(_param->_size_address-1,_param->_size_address_by_bank)+"="+std_logic_conv( _param->_size_address-_param->_size_address_by_bank,i)+") "); 242 else 243 str_address = ""; 244 245 vhdl->set_body("internal_WRITE_"+toString(i)+"_"+toString(j)+"_VAL <= '1' when (in_WRITE_"+toString(j)+"_VAL='1') "+str_address+"else '0';"); 231 246 } 232 247 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_declaration.cpp
r58 r62 41 41 vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_VAL" ,1); 42 42 vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_ACK" ,1); 43 if (_param->_have_bank_port_address == true) 43 44 vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_ADDRESS",_param->_size_address_by_bank); 44 45 vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_DATA" ,_param->_size_word); … … 64 65 vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_VAL" ,1); 65 66 vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_ACK" ,1); 67 if (_param->_have_bank_port_address == true) 66 68 vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_ADDRESS",_param->_size_address_by_bank); 67 69 vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_DATA" ,_param->_size_word);
Note: See TracChangeset
for help on using the changeset viewer.