- Timestamp:
- Mar 27, 2008, 11:04:49 AM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp
r71 r78 7 7 */ 8 8 9 #define NB_ITERATION 1 9 #define NB_ITERATION 16 10 10 11 11 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h" -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h
r75 r78 37 37 public : ~Parameters () ; 38 38 39 public : std::stringmsg_error (void);39 public : Parameters_test msg_error (void); 40 40 public : std::string print (uint32_t depth); 41 41 public : friend std::ostream& operator<< (std::ostream& output_stream, -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h
r75 r78 52 52 private : counter_t * _stat_nb_read; 53 53 private : counter_t * _stat_nb_write; 54 private : counter_t * _stat_average_read ;55 private : counter_t * _stat_average_write;56 private : counter_t * _stat_percent_use_read ;57 private : counter_t * _stat_percent_use_write;58 54 #endif 59 55 … … 88 84 89 85 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 private : SC_REGISTER (Tdata_t) ** reg_DATA;86 private : Tdata_t * reg_DATA; 91 87 92 88 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp
r75 r78 17 17 namespace registerfile_monolithic { 18 18 19 std::stringParameters::msg_error(void)19 Parameters_test Parameters::msg_error(void) 20 20 { 21 std::string msg = "";21 Parameters_test test("RegisterFile_Monolithic"); 22 22 23 23 if ((8*sizeof(Tdata_t)) < _size_word) 24 { 25 msg += " - type \"Tdata_t\" is too little to the size defined by size_word\n"; 26 msg += " * size_word : " + toString(_size_word) + "\n"; 27 msg += " * Tdata_t (bits): " + toString(8*(sizeof(Tdata_t))) + "\n"; 28 } 24 test.error("Type \"Tdata_t\" is too little to the size defined by size_word"); 29 25 30 26 if ((8*sizeof(Taddress_t)) < log2(_nb_word)) 31 { 32 msg += " - type \"Taddress_t\" is too little to the size defined by nb_word\n"; 33 msg += " * nb_word : " + toString(_nb_word) + "\n"; 34 msg += " > size (bits) : " + toString(log2(_nb_word)) + "\n"; 35 msg += " * Taddress_t (bits) : " + toString(8*(sizeof(Taddress_t))) + "\n"; 36 } 27 test.error("type \"Taddress_t\" is too little to the size defined by nb_word"); 37 28 38 29 if ((_nb_port_read + _nb_port_read_write) < 1) 39 { 40 msg += " - you need a read port\n"; 41 msg += " * nb_port_read : " + toString(_nb_port_read) + "\n"; 42 msg += " * nb_port_read_write : " + toString(_nb_port_read_write) + "\n"; 43 } 30 test.error("you need a read port"); 44 31 45 32 if ((_nb_port_write + _nb_port_read_write) < 1) 46 { 47 msg += " - you need a write port\n"; 48 msg += " * nb_port_write : " + toString(_nb_port_write) + "\n"; 49 msg += " * nb_port_read_write : " + toString(_nb_port_read_write) + "\n"; 50 } 51 // if (_nb_word < 2) 52 // { 53 // msg += " - nb_word must be >= 2\n"; 54 // msg += " * nb_word : " + toString(_nb_word) + "\n"; 55 // } 33 test.error("you need a write port"); 56 34 57 return msg;35 return test; 58 36 }; 59 37 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp
r75 r78 120 120 121 121 // ----- Register 122 reg_DATA = new SC_REGISTER (Tdata_t) *[_param->_nb_word];122 reg_DATA = new Tdata_t [_param->_nb_word]; 123 123 124 for (uint32_t i=0; i<_param->_nb_word; i++)125 {126 std::string rename = "reg_DATA[" + toString(i) + "]";127 reg_DATA [i] = new SC_REGISTER (Tdata_t) (rename.c_str());128 }129 130 124 #ifdef POSITION 131 125 _component->generate_file(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp
r71 r78 29 29 else 30 30 address = 0; 31 Tdata_t data = REGISTER_READ(reg_DATA[address]);31 Tdata_t data = reg_DATA[address]; 32 32 33 33 log_printf(TRACE,RegisterFile,"genMealy_read","[%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data)); 34 34 35 #ifdef STATISTICS36 (*_stat_nb_read) ++;37 #endif38 35 // Write in registerFile 39 36 PORT_WRITE(out_READ_DATA[i],data); … … 61 58 address = 0; 62 59 63 data = REGISTER_READ(reg_DATA[address]);60 data = reg_DATA[address]; 64 61 65 62 log_printf(TRACE,RegisterFile,"genMealy_read","[%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data)); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics_declaration.cpp
r75 r78 23 23 _stat_nb_read = _stat->create_variable("nb_read" ); 24 24 _stat_nb_write = _stat->create_variable("nb_write"); 25 26 _stat_average_read = _stat->create_counter("average_read" , "", "Average read by cycle");27 _stat_average_write = _stat->create_counter("average_write", "", "Average write by cycle");28 25 29 _stat _percent_use_read = _stat->create_counter("percent_use_read" , "%", "Read port usage");30 _stat _percent_use_write = _stat->create_counter("percent_use_write", "%", "Write port usage");26 _stat->create_expr_average_by_cycle("average_read" , "nb_read" , "", "Average read by cycle" ); 27 _stat->create_expr_average_by_cycle("average_write", "nb_write", "", "Average write by cycle"); 31 28 32 _stat->create_expr("average_read" , "/ nb_read cycle", false); 33 _stat->create_expr("average_write", "/ nb_write cycle", false); 34 35 _stat->create_expr("percent_use_read" , "/ * average_read 100 " + toString(_param->_nb_port_read +_param->_nb_port_read_write), false); 36 _stat->create_expr("percent_use_write", "/ * average_write 100 " + toString(_param->_nb_port_write+_param->_nb_port_read_write), false); 29 _stat->create_expr_percent ("percent_use_read" , "average_read" , toString(_param->_nb_port_read +_param->_nb_port_read_write), "Percent read by cycle" ); 30 _stat->create_expr_percent ("percent_use_write", "average_write", toString(_param->_nb_port_write+_param->_nb_port_read_write), "Percent write by cycle"); 37 31 38 32 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp
r75 r78 38 38 39 39 // Write in registerFile 40 REGISTER_WRITE(reg_DATA[address],data);40 reg_DATA[address] = data; 41 41 } 42 42 } … … 62 62 63 63 // Write in registerFile 64 REGISTER_WRITE(reg_DATA[address],data);64 reg_DATA[address] = data; 65 65 } 66 66 #ifdef STATISTICS -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h
r75 r78 64 64 public : ~Parameters () ; 65 65 66 public : std::stringmsg_error (void);66 public : Parameters_test msg_error (void); 67 67 public : std::string print (uint32_t depth); 68 68 public : friend std::ostream& operator<< (std::ostream& output_stream, -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h
r75 r78 73 73 74 74 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 75 private : SC_REGISTER (Tdata_t) *** reg_DATA;75 private : Tdata_t ** reg_DATA; 76 76 77 77 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_msg_error.cpp
r75 r78 15 15 16 16 17 std::stringParameters::msg_error(void)17 Parameters_test Parameters::msg_error(void) 18 18 { 19 19 log_printf(FUNC,RegisterFile_Multi_Banked,"msg_error","Begin"); 20 20 21 std::string msg = "";21 Parameters_test test("RegisterFile_Multi_Banked"); 22 22 23 23 if (_nb_port_read < _nb_port_read_by_bank) 24 { 25 msg += " - Each bank read's port must be higher at number of read port\n"; 26 msg += " * nb_port_read : " + toString(_nb_port_read ) + "\n"; 27 msg += " * nb_port_read_by_bank : " + toString(_nb_port_read_by_bank) + "\n"; 28 } 24 test.error("Each bank read's port must be higher at number of read port"); 29 25 30 26 if (_nb_port_write < _nb_port_write_by_bank) 31 { 32 msg += " - Each bank write's port must be higher at number of write port\n"; 33 msg += " * nb_port_write : " + toString(_nb_port_write ) + "\n"; 34 msg += " * nb_port_write_by_bank : " + toString(_nb_port_write_by_bank) + "\n"; 35 } 27 test.error("Each bank write's port must be higher at number of write port"); 36 28 37 29 if (_nb_bank < 1) 38 { 39 msg += " - nb_bank must be higher at 1\n"; 40 msg += " * nb_bank : " + toString(_nb_bank ) + "\n"; 41 } 42 43 return msg; 30 test.error("nb_bank must be higher at 1"); 44 31 45 32 log_printf(FUNC,RegisterFile_Multi_Banked,"msg_error","End"); 33 34 return test; 46 35 }; 47 36 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp
r75 r78 96 96 // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 97 97 98 reg_DATA = new SC_REGISTER (Tdata_t) ** [_param->_nb_bank];98 reg_DATA = new Tdata_t * [_param->_nb_bank]; 99 99 100 100 for (uint32_t i=0; i<_param->_nb_bank; i++) 101 101 { 102 reg_DATA [i] = new SC_REGISTER (Tdata_t) * [_param->_nb_word]; 103 104 for (uint32_t j=0; j<_param->_nb_word; j++) 105 { 106 std::string rename = "reg_DATA_" + toString(i) + "_" + toString(j); 107 reg_DATA [i][j] = new SC_REGISTER (Tdata_t) (rename.c_str()); 108 } 102 reg_DATA [i] = new Tdata_t [_param->_nb_word]; 109 103 } 110 104 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_read.cpp
r62 r78 62 62 log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * bank_port : %d",j); 63 63 64 Tdata_t data = REGISTER_READ(reg_DATA[bank][num_reg]);64 Tdata_t data = reg_DATA[bank][num_reg]; 65 65 66 66 log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * data : %d",data); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_read.cpp
r62 r78 64 64 log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * bank_port : %d",j); 65 65 66 Tdata_t data = REGISTER_READ(reg_DATA[bank][num_reg]);66 Tdata_t data = reg_DATA[bank][num_reg]; 67 67 68 68 log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * data : %d",data); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_transition.cpp
r75 r78 31 31 32 32 // Write in registerFile 33 REGISTER_WRITE(reg_DATA[internal_WRITE_BANK[i]][internal_WRITE_NUM_REG[i]],data);33 reg_DATA[internal_WRITE_BANK[i]][internal_WRITE_NUM_REG[i]] = data; 34 34 } 35 35 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h
r75 r78 43 43 public : ~Parameters () ; 44 44 45 public : std::stringmsg_error (void);45 public : Parameters_test msg_error (void); 46 46 public : std::string print (uint32_t depth); 47 47 public : friend std::ostream& operator<< (std::ostream& output_stream, -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h
r75 r78 5 5 * $Id$ 6 6 * 7 * [ 7 * [ Description ] 8 8 * 9 9 */ … … 41 41 #endif 42 42 { 43 // -----[ 43 // -----[ fields ]---------------------------------------------------- 44 44 // Parameters 45 45 protected : const std::string _name; … … 54 54 55 55 #ifdef SYSTEMC 56 // ~~~~~[ 56 // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 57 // Interface 58 58 public : SC_CLOCK * in_CLOCK ; … … 73 73 #endif 74 74 75 // ~~~~~[ 75 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 76 76 protected : morpheo::behavioural::generic::registerfile::registerfile_monolithic ::RegisterFile_Monolithic ::RegisterFile_Monolithic * component_RegisterFile_Monolithic ; 77 77 protected : morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked * component_RegisterFile_Multi_Banked; 78 78 79 // ~~~~~[ 79 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 80 80 81 // ~~~~~[ 81 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 82 83 // -----[ 83 // -----[ methods ]--------------------------------------------------- 84 84 85 85 #ifdef SYSTEMC -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_msg_error.cpp
r75 r78 16 16 17 17 18 std::stringParameters::msg_error(void)18 Parameters_test Parameters::msg_error(void) 19 19 { 20 log_printf(FUNC,RegisterFile,"msg_error","Begin");21 22 20 if (_instance == instance_RegisterFile_Monolithic) 23 21 return _param_registerfile_monolithic ->msg_error(); 24 22 else 25 23 return _param_registerfile_multi_banked->msg_error(); 26 27 log_printf(FUNC,RegisterFile,"msg_error","End");28 24 }; 29 25
Note: See TracChangeset
for help on using the changeset viewer.