Changeset 62 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src
- Timestamp:
- Dec 4, 2007, 2:31:54 PM (17 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp
r55 r62 25 25 _nb_word (nb_word ), 26 26 _size_word (size_word ), 27 _size_address (static_cast<uint32_t>(log2(_nb_word))) 27 _size_address (static_cast<uint32_t>(log2(_nb_word))), 28 _have_port_address (_size_address != 0) 29 28 30 { 29 31 test(); … … 36 38 _nb_word (param._nb_word ), 37 39 _size_word (param._size_word ), 38 _size_address (param._size_address ) 40 _size_address (param._size_address ), 41 _have_port_address (param._have_port_address) 39 42 { 40 43 test(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp
r55 r62 50 50 msg += " * nb_port_read_write : " + toString(_nb_port_read_write) + "\n"; 51 51 } 52 if (_nb_word < 2)53 {54 msg += " - nb_word must be >= 2\n";55 msg += " * nb_word : " + toString(_nb_word) + "\n";56 }52 // if (_nb_word < 2) 53 // { 54 // msg += " - nb_word must be >= 2\n"; 55 // msg += " * nb_word : " + toString(_nb_word) + "\n"; 56 // } 57 57 58 58 return msg; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp
r58 r62 58 58 sensitive_neg << *(in_CLOCK); 59 59 for (uint32_t i=0; i<_param->_nb_port_read; i++) 60 sensitive << *(in_READ_VAL [i]) 61 << *(in_READ_ADDRESS [i]); 60 { 61 sensitive << *(in_READ_VAL [i]); 62 if (_param->_have_port_address) 63 sensitive << *(in_READ_ADDRESS [i]); 64 } 62 65 for (uint32_t i=0; i<_param->_nb_port_read_write; i++) 63 sensitive << *(in_READ_WRITE_VAL [i]) 64 << *(in_READ_WRITE_RW [i]) 65 << *(in_READ_WRITE_ADDRESS [i]); 66 { 67 sensitive << *(in_READ_WRITE_VAL [i]) 68 << *(in_READ_WRITE_RW [i]); 69 if (_param->_have_port_address) 70 sensitive << *(in_READ_WRITE_ADDRESS [i]); 71 } 66 72 67 73 # ifdef SYSTEMCASS_SPECIFIC … … 70 76 { 71 77 (*(out_READ_DATA [i])) (*( in_READ_VAL [i])); 72 (*(out_READ_DATA [i])) (*( in_READ_ADDRESS [i])); 78 if (_param->_have_port_address) 79 (*(out_READ_DATA [i])) (*( in_READ_ADDRESS [i])); 73 80 } 74 81 for (uint32_t i=0; i<_param->_nb_port_read_write; i++) … … 76 83 (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_VAL [i])); 77 84 (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_RW [i])); 78 (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i])); 85 if (_param->_have_port_address) 86 (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i])); 79 87 } 80 88 # endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp
r57 r62 44 44 in_READ_VAL = new SC_IN (Tcontrol_t) * [_param->_nb_port_read]; 45 45 out_READ_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read]; 46 if (_param->_have_port_address) 46 47 in_READ_ADDRESS = new SC_IN (Taddress_t) * [_param->_nb_port_read]; 47 48 out_READ_DATA = new SC_OUT(Tdata_t ) * [_param->_nb_port_read]; … … 59 60 in_READ_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 60 61 out_READ_ACK [i] = interface->set_signal_valack_out ("ack" , ACK); 62 if (_param->_have_port_address) 61 63 in_READ_ADDRESS [i] = interface->set_signal_in <Taddress_t> ("address", _param->_size_address); 62 64 out_READ_DATA [i] = interface->set_signal_out <Tdata_t > ("data" , _param->_size_word); … … 67 69 in_WRITE_VAL = new SC_IN (Tcontrol_t) * [_param->_nb_port_write]; 68 70 out_WRITE_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write]; 71 if (_param->_have_port_address) 69 72 in_WRITE_ADDRESS = new SC_IN (Taddress_t) * [_param->_nb_port_write]; 70 73 in_WRITE_DATA = new SC_IN (Tdata_t ) * [_param->_nb_port_write]; … … 82 85 in_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 83 86 out_WRITE_ACK [i] = interface->set_signal_valack_out ("ack" , ACK); 87 if (_param->_have_port_address) 84 88 in_WRITE_ADDRESS [i] = interface->set_signal_in <Taddress_t> ("address", _param->_size_address); 85 89 in_WRITE_DATA [i] = interface->set_signal_in <Tdata_t > ("data" , _param->_size_word); … … 91 95 out_READ_WRITE_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read_write]; 92 96 in_READ_WRITE_RW = new SC_IN (Tcontrol_t) * [_param->_nb_port_read_write]; 97 if (_param->_have_port_address) 93 98 in_READ_WRITE_ADDRESS = new SC_IN (Taddress_t) * [_param->_nb_port_read_write]; 94 99 in_READ_WRITE_WDATA = new SC_IN (Tdata_t ) * [_param->_nb_port_read_write]; … … 108 113 out_READ_WRITE_ACK [i] = interface->set_signal_valack_out ("ack" , ACK); 109 114 in_READ_WRITE_RW [i] = interface->set_signal_valack_in ("rw" , VAL); 115 if (_param->_have_port_address) 110 116 in_READ_WRITE_ADDRESS [i] = interface->set_signal_in <Taddress_t> ("address", _param->_size_address); 111 117 in_READ_WRITE_WDATA [i] = interface->set_signal_in <Tdata_t > ("wdata" , _param->_size_word); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp
r57 r62 25 25 delete [] in_READ_VAL ; 26 26 delete [] out_READ_ACK ; 27 if (_param->_have_port_address) 27 28 delete [] in_READ_ADDRESS; 28 29 delete [] out_READ_DATA ; … … 31 32 delete [] in_WRITE_VAL ; 32 33 delete [] out_WRITE_ACK ; 34 if (_param->_have_port_address) 33 35 delete [] in_WRITE_ADDRESS; 34 36 delete [] in_WRITE_DATA ; … … 38 40 delete [] out_READ_WRITE_ACK ; 39 41 delete [] in_READ_WRITE_RW ; 42 if (_param->_have_port_address) 40 43 delete [] in_READ_WRITE_ADDRESS; 41 44 delete [] in_READ_WRITE_WDATA ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp
r55 r62 28 28 if ( PORT_READ(in_READ_VAL [i]) == 1) 29 29 { 30 Taddress_t address = PORT_READ(in_READ_ADDRESS[i]); 30 Taddress_t address; 31 if (_param->_have_port_address) 32 address = PORT_READ(in_READ_ADDRESS[i]); 33 else 34 address = 0; 31 35 Tdata_t data = REGISTER_READ(reg_DATA[address]); 32 36 … … 55 59 ) 56 60 { 57 Taddress_t address = PORT_READ(in_READ_WRITE_ADDRESS[i]); 61 Taddress_t address; 62 if (_param->_have_port_address) 63 address = PORT_READ(in_READ_WRITE_ADDRESS[i]); 64 else 65 address = 0; 58 66 59 67 data = REGISTER_READ(reg_DATA[address]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp
r55 r62 30 30 #endif 31 31 32 Taddress_t address = PORT_READ(in_WRITE_ADDRESS[i]); 32 Taddress_t address; 33 if (_param->_have_port_address) 34 address = PORT_READ(in_WRITE_ADDRESS[i]); 35 else 36 address = 0; 37 33 38 Tdata_t data = PORT_READ(in_WRITE_DATA [i]); 34 39 … … 49 54 #endif 50 55 51 Taddress_t address = PORT_READ(in_READ_WRITE_ADDRESS[i]); 56 Taddress_t address; 57 if (_param->_have_port_address) 58 address = PORT_READ(in_READ_WRITE_ADDRESS[i]); 59 else 60 address = 0; 52 61 Tdata_t data = PORT_READ(in_READ_WRITE_WDATA [i]); 53 62 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp
r55 r62 37 37 38 38 for (uint32_t i = 0; i < _param->_nb_port_read; i++) 39 vhdl->set_body ("out_READ_"+toString(i)+"_DATA <= reg_DATA (conv_integer(in_READ_"+toString(i)+"_ADDRESS)) when in_READ_"+toString(i)+"_VAL = '1' else "+std_logic_others(_param->_size_word,0)+";"); 39 { 40 string str_address; 41 if (_param->_have_port_address) 42 str_address = "conv_integer(in_READ_"+toString(i)+"_ADDRESS)"; 43 else 44 str_address = "0"; 40 45 46 vhdl->set_body ("out_READ_"+toString(i)+"_DATA <= reg_DATA ("+str_address+") when in_READ_"+toString(i)+"_VAL = '1' else "+std_logic_others(_param->_size_word,0)+";"); 47 } 41 48 for (uint32_t i = 0; i < _param->_nb_port_read_write; i++) 42 vhdl->set_body ("out_READ_WRITE_"+toString(i)+"_RDATA <= reg_DATA (conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)) when in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_READ)+"' else "+std_logic_others(_param->_size_word,0)+";"); 49 { 50 string str_address; 51 if (_param->_have_port_address) 52 str_address = "conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)"; 53 else 54 str_address = "0"; 55 vhdl->set_body ("out_READ_WRITE_"+toString(i)+"_RDATA <= reg_DATA ("+str_address+") when in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_READ)+"' else "+std_logic_others(_param->_size_word,0)+";"); 56 } 43 57 44 58 vhdl->set_body (""); … … 54 68 for (uint32_t i = 0; i < _param->_nb_port_write; i++) 55 69 { 56 vhdl->set_body ("\t\tif (in_WRITE_"+toString(i)+"_VAL = '1') then"); 57 vhdl->set_body ("\t\t\treg_DATA(conv_integer(in_WRITE_"+toString(i)+"_ADDRESS)) <= in_WRITE_"+toString(i)+"_DATA;"); 58 vhdl->set_body ("\t\tend if;"); 70 string str_address; 71 if (_param->_have_port_address) 72 str_address = "conv_integer(in_WRITE_"+toString(i)+"_ADDRESS)"; 73 else 74 str_address = "0"; 75 76 vhdl->set_body ("\t\tif (in_WRITE_"+toString(i)+"_VAL = '1') then"); 77 vhdl->set_body ("\t\t\treg_DATA("+str_address+") <= in_WRITE_"+toString(i)+"_DATA;"); 78 vhdl->set_body ("\t\tend if;"); 59 79 } 60 80 for (uint32_t i = 0; i < _param->_nb_port_read_write; i++) 61 81 { 62 vhdl->set_body ("\t\tif (in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_WRITE)+"') then"); 63 vhdl->set_body ("\t\t\treg_DATA(conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)) <= in_READ_WRITE_"+toString(i)+"_WDATA;"); 64 vhdl->set_body ("\t\tend if;"); 82 string str_address; 83 if (_param->_have_port_address) 84 str_address = "conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)"; 85 else 86 str_address = "0"; 87 88 vhdl->set_body ("\t\tif (in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_WRITE)+"') then"); 89 vhdl->set_body ("\t\t\treg_DATA("+str_address+") <= in_READ_WRITE_"+toString(i)+"_WDATA;"); 90 vhdl->set_body ("\t\tend if;"); 65 91 } 66 92
Note: See TracChangeset
for help on using the changeset viewer.