- Timestamp:
- Feb 16, 2010, 1:35:48 PM (14 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile
- Files:
-
- 14 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h
r101 r137 21 21 class Parameters : public morpheo::behavioural::Parameters 22 22 { 23 public : const uint32_t _nb_port_read ; 24 public : const uint32_t _nb_port_write; 25 public : const uint32_t _nb_port_read_write; 26 public : const uint32_t _nb_word ; 27 public : const uint32_t _size_word ; 28 public : const uint32_t _size_address ; 29 public : const bool _have_port_address; 30 public : const bool _have_init_value; 31 public : const std::string _init_value; 23 public : uint32_t _nb_port_read ; 24 public : uint32_t _nb_port_write; 25 public : uint32_t _nb_port_read_write; 26 public : uint32_t _nb_word ; 27 public : uint32_t _size_word ; 28 public : std::string _init_value ; 29 30 public : uint32_t _size_address ; 31 public : bool _have_port_address; 32 public : bool _have_init_value; 32 33 33 34 public : Parameters (uint32_t nb_port_read , -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp
r101 r137 7 7 8 8 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h" 9 #include "Common/include/Log2.h" 9 10 10 11 namespace morpheo { … … 20 21 uint32_t size_word , 21 22 std::string init_value 22 ) : 23 _nb_port_read (nb_port_read ), 24 _nb_port_write (nb_port_write), 25 _nb_port_read_write(nb_port_read_write), 26 _nb_word (nb_word ), 27 _size_word (size_word ), 28 _size_address (static_cast<uint32_t>(log2(_nb_word))), 29 _have_port_address (_size_address != 0), 30 _have_init_value (init_value != ""), 31 _init_value (init_value) 23 ) 32 24 { 25 _nb_port_read = nb_port_read ; 26 _nb_port_write = nb_port_write; 27 _nb_port_read_write = nb_port_read_write; 28 _nb_word = nb_word ; 29 _size_word = size_word ; 30 _init_value = init_value ; 31 32 _size_address = log2(_nb_word); 33 _have_port_address = _size_address != 0; 34 _have_init_value = init_value != ""; 35 33 36 test(); 34 37 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h
r124 r137 24 24 { 25 25 //-----[ fields ]------------------------------------------------------------ 26 public : const uint32_t _nb_port_read ; // Global read port 27 public : const uint32_t _nb_port_write ; // Global write port 28 public : const uint32_t _nb_word ; 29 public : const uint32_t _size_word ; 30 public : const uint32_t _nb_bank ; // Number of bank (All bank is identical) 31 public : const uint32_t _nb_port_read_by_bank ; // Local read port 32 public : const uint32_t _nb_port_write_by_bank; // Local write port 33 public : const Tcrossbar_t _crossbar ; 34 public : const bool _have_init_value; 35 public : const std::string _init_value; 26 public : uint32_t _nb_port_read ; // Global read port 27 public : uint32_t _nb_port_write ; // Global write port 28 public : uint32_t _nb_word ; 29 public : uint32_t _size_word ; 30 public : uint32_t _nb_bank ; // Number of bank (All bank is identical) 31 public : uint32_t _nb_port_read_by_bank ; // Local read port 32 public : uint32_t _nb_port_write_by_bank; // Local write port 33 public : Tcrossbar_t _crossbar ; 34 public : std::string _init_value ; 36 35 37 public : constuint32_t _size_address ;38 public : constuint32_t _size_address_by_bank ;36 public : uint32_t _size_address ; 37 public : uint32_t _size_address_by_bank ; 39 38 40 public : constuint32_t _bank_shift ;41 public : constTaddress_t _bank_mask ;42 public : constuint32_t _num_reg_shift ;43 public : constTaddress_t _num_reg_mask ;39 public : uint32_t _bank_shift ; 40 public : Taddress_t _bank_mask ; 41 public : uint32_t _num_reg_shift ; 42 public : Taddress_t _num_reg_mask ; 44 43 45 public : constuint32_t _nb_word_by_bank ;44 public : uint32_t _nb_word_by_bank ; 46 45 47 public : const bool _have_port_address ; 48 public : const bool _have_bank_port_address; 46 public : bool _have_port_address ; 47 public : bool _have_bank_port_address; 48 public : bool _have_init_value ; 49 49 50 50 // A lot of table to the partial crossbar 51 public : 52 //public : 53 public : 54 //public : 51 public : uint32_t * _link_port_read_to_bank_read ; 52 //public : uint32_t * _link_port_read_to_num_bank ; 53 public : uint32_t * _link_port_write_to_bank_write; 54 //public : uint32_t * _link_port_write_to_num_bank ; 55 55 56 56 //-----[ methods ]----------------------------------------------------------- -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h
r88 r137 48 48 #ifdef STATISTICS 49 49 public : Stat * _stat; 50 51 private : counter_t * _stat_nb_read; 52 private : counter_t * _stat_nb_write; 53 private : counter_t * _stat_nb_conflict_on_read; 54 private : counter_t * _stat_nb_conflict_on_write; 50 55 #endif 51 56 … … 80 85 private : Taddress_t * internal_WRITE_BANK; 81 86 private : Taddress_t * internal_WRITE_NUM_REG; 87 88 #ifdef STATISTICS 89 private : bool * internal_READ_VAL; 90 //private : Taddress_t * internal_READ_BANK; 91 #endif 82 92 83 93 // function pointer -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp
r124 r137 8 8 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h" 9 9 #include "Common/include/BitManipulation.h" 10 #include "Common/include/Log2.h" 10 11 11 12 namespace morpheo { … … 25 26 Tcrossbar_t crossbar , 26 27 std::string init_value 27 ): 28 _nb_port_read (nb_port_read ), 29 _nb_port_write (nb_port_write ), 30 _nb_word (nb_word ), 31 _size_word (size_word ), 32 _nb_bank (nb_bank ), 33 _nb_port_read_by_bank (nb_port_read_by_bank ), 34 _nb_port_write_by_bank (nb_port_write_by_bank), 35 _crossbar (crossbar ), 36 _have_init_value (init_value != "" ), 37 _init_value (init_value ), 38 _size_address (static_cast<uint32_t>(ceil(log2(_nb_word)))), 39 _size_address_by_bank (_size_address - static_cast<uint32_t>(ceil(log2(_nb_bank)))), 28 ) 29 { 30 log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin"); 31 32 _nb_port_read = nb_port_read ; 33 _nb_port_write = nb_port_write ; 34 _nb_word = nb_word ; 35 _size_word = size_word ; 36 _nb_bank = nb_bank ; 37 _nb_port_read_by_bank = nb_port_read_by_bank ; 38 _nb_port_write_by_bank = nb_port_write_by_bank; 39 _crossbar = crossbar ; 40 _init_value = init_value ; 41 42 _size_address = log2(_nb_word); 43 _size_address_by_bank = _size_address - log2(_nb_bank); 40 44 41 45 // Address : [....................] [size_address-1:0] 42 46 // Bank : [....] [size_address-1:size_address-1-log2(nb_bank)] 43 47 // num_reg : ]...............] [size_address-2-log2(nb_bank):0] 44 _bank_shift (_size_address_by_bank), 45 _bank_mask (gen_mask<Taddress_t>(static_cast<Taddress_t>(ceil(log2(_nb_bank))))), 46 _num_reg_shift (0), 47 _num_reg_mask (gen_mask<Taddress_t>(_size_address_by_bank)), 48 _nb_word_by_bank (_nb_word / _nb_bank), 49 _have_port_address (_size_address != 0), 50 _have_bank_port_address(_size_address_by_bank != 0) 51 { 52 log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin"); 48 _bank_shift = _size_address_by_bank; 49 _bank_mask = gen_mask<Taddress_t>(log2(_nb_bank)); 50 _num_reg_shift = 0; 51 _num_reg_mask = gen_mask<Taddress_t>(_size_address_by_bank); 52 _nb_word_by_bank = _nb_word / _nb_bank; 53 _have_port_address = _size_address != 0; 54 _have_bank_port_address = _size_address_by_bank != 0; 55 _have_init_value = init_value != "" ; 53 56 54 57 if (_crossbar == PARTIAL_CROSSBAR) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp
r112 r137 77 77 ALLOC1(internal_WRITE_BANK ,Taddress_t,_param->_nb_port_write); 78 78 ALLOC1(internal_WRITE_NUM_REG,Taddress_t,_param->_nb_port_write); 79 80 #ifdef STATISTICS 81 ALLOC1(internal_READ_VAL ,bool ,_param->_nb_port_read); 82 #endif 79 83 } 80 84 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp
r112 r137 40 40 DELETE1(internal_WRITE_BANK ,_param->_nb_port_write); 41 41 DELETE1(internal_WRITE_NUM_REG ,_param->_nb_port_write); 42 43 #ifdef STATISTICS 44 DELETE1(internal_READ_VAL ,_param->_nb_port_read); 45 #endif 46 42 47 } 43 48 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_read.cpp
r123 r137 38 38 bool ack = false; 39 39 40 #ifdef STATISTICS 41 internal_READ_VAL [i] = false; 42 #endif 43 40 44 log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION," * read [%d] : %d",i,val); 41 45 … … 72 76 log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION," * data : %d",data); 73 77 78 #ifdef STATISTICS 79 internal_READ_VAL [i] = true; 80 #endif 74 81 PORT_WRITE(out_READ_DATA [i], data); 75 82 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_read.cpp
r123 r137 37 37 bool ack = false; 38 38 39 #ifdef STATISTICS 40 internal_READ_VAL [i] = false; 41 #endif 42 39 43 log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION," * read [%d] : %d",i,val); 40 44 … … 73 77 log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION," * data : %d",data); 74 78 79 #ifdef STATISTICS 80 internal_READ_VAL [i] = true; 81 #endif 82 75 83 PORT_WRITE(out_READ_DATA [i], data); 76 84 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics_declaration.cpp
r81 r137 24 24 "RegisterFile_Multi_Banked", 25 25 param_statistics); 26 27 // _stat_nb_read = _stat->create_variable("nb_read" ); 28 // _stat_nb_write = _stat->create_variable("nb_write"); 29 // _stat_nb_conflict_on_read = _stat->create_variable("nb_conflict_on_read" ); 30 // _stat_nb_conflict_on_write = _stat->create_variable("nb_conflict_on_write"); 31 32 _stat_nb_read = _stat->create_counter("nb_read" ,"",""); 33 _stat_nb_write = _stat->create_counter("nb_write" ,"",""); 34 _stat_nb_conflict_on_read = _stat->create_counter("nb_conflict_on_read" ,"",""); 35 _stat_nb_conflict_on_write = _stat->create_counter("nb_conflict_on_write","",""); 36 37 _stat->create_expr_average_by_cycle("average_read" , "nb_read" , "", _("Average read by cycle" )); 38 _stat->create_expr_average_by_cycle("average_write", "nb_write", "", _("Average write by cycle")); 39 40 _stat->create_expr_percent ("percent_conflict_on_read" , "nb_conflict_on_read" , "+ nb_read nb_conflict_on_read" , _("Percent conflit on read port" )); 41 _stat->create_expr_percent ("percent_conflict_on_write", "nb_conflict_on_write", "+ nb_write nb_conflict_on_write", _("Percent conflit on write port")); 26 42 27 43 log_printf(FUNC,RegisterFile_Multi_Banked,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_transition.cpp
r128 r137 51 51 reg_DATA[internal_WRITE_BANK[i]][internal_WRITE_NUM_REG[i]] = data; 52 52 } 53 54 #ifdef STATISTICS 55 if (usage_is_set(_usage,USE_STATISTICS)) 56 if (PORT_READ(in_WRITE_VAL [i])) 57 { 58 if (internal_WRITE_VAL [i] == 1) 59 (*_stat_nb_write) ++; 60 else 61 (*_stat_nb_conflict_on_write) ++; 62 } 63 #endif 53 64 } 65 66 #ifdef STATISTICS 67 if (usage_is_set(_usage,USE_STATISTICS)) 68 for (uint32_t i=0; i<_param->_nb_port_read; i++) 69 if (PORT_READ(in_READ_VAL [i])) 70 { 71 if (internal_READ_VAL [i] == 1) 72 (*_stat_nb_read) ++; 73 else 74 (*_stat_nb_conflict_on_read) ++; 75 } 76 #endif 77 54 78 } 55 79 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp
r81 r137 88 88 std::string index = (_param->_crossbar == FULL_CROSSBAR)?("_"+toString(j)):""; 89 89 90 vhdl->set_body("\t"+separator+" in_ VAL_"+toString(k)+"\t=>\tinternal_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL");91 vhdl->set_body("\t,out_ ACK_"+toString(k)+"\t=>\tinternal_SELECT_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL");90 vhdl->set_body("\t"+separator+" in_"+toString(k)+"_VAL \t=>\tinternal_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL"); 91 vhdl->set_body("\t,out_"+toString(k)+"_ACK \t=>\tinternal_SELECT_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL"); 92 92 } 93 93 vhdl->set_body(");"); … … 107 107 std::string index = (_param->_crossbar == FULL_CROSSBAR)?("_"+toString(j)):""; 108 108 109 vhdl->set_body("\t"+separator+" in_ VAL_"+toString(k)+"\t=>\tinternal_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL");110 vhdl->set_body("\t,out_ ACK_"+toString(k)+"\t=>\tinternal_SELECT_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL");109 vhdl->set_body("\t"+separator+" in_"+toString(k)+"_VAL \t=>\tinternal_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL"); 110 vhdl->set_body("\t,out_"+toString(k)+"_ACK \t=>\tinternal_SELECT_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL"); 111 111 } 112 112 vhdl->set_body(");"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/test.cpp
r131 r137 26 26 Tusage_t _usage = USE_ALL; 27 27 28 //_usage = usage_unset(_usage,USE_SYSTEMC );28 _usage = usage_unset(_usage,USE_SYSTEMC ); 29 29 // _usage = usage_unset(_usage,USE_VHDL ); 30 30 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h
r88 r137 26 26 { 27 27 //-----[ fields ]------------------------------------------------------------ 28 public : constTinstance_t _instance;29 public : constuint32_t _nb_port_read ;30 public : constuint32_t _nb_port_write;31 public : constuint32_t _nb_word ;32 public : constuint32_t _size_word ;33 public : constuint32_t _size_address ;34 public : constbool _have_port_address;28 public : Tinstance_t _instance; 29 public : uint32_t _nb_port_read ; 30 public : uint32_t _nb_port_write; 31 public : uint32_t _nb_word ; 32 public : uint32_t _size_word ; 33 public : uint32_t _size_address ; 34 public : bool _have_port_address; 35 35 36 36 public : morpheo::behavioural::generic::registerfile::registerfile_monolithic ::Parameters * _param_registerfile_monolithic; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp
r88 r137 14 14 15 15 16 Parameters::Parameters (morpheo::behavioural::generic::registerfile::registerfile_monolithic ::Parameters * param) : 17 _instance (instance_RegisterFile_Monolithic), 18 _nb_port_read (param->_nb_port_read ), 19 _nb_port_write (param->_nb_port_write), 20 _nb_word (param->_nb_word ), 21 _size_word (param->_size_word ), 22 _size_address (param->_size_address ), 23 _have_port_address (param->_have_port_address) 16 Parameters::Parameters (morpheo::behavioural::generic::registerfile::registerfile_monolithic ::Parameters * param) 24 17 { 25 18 log_printf(FUNC,RegisterFile,"Parameters","Begin"); 19 20 _instance = instance_RegisterFile_Monolithic; 21 _nb_port_read = param->_nb_port_read ; 22 _nb_port_write = param->_nb_port_write; 23 _nb_word = param->_nb_word ; 24 _size_word = param->_size_word ; 25 _size_address = param->_size_address ; 26 _have_port_address = param->_have_port_address; 26 27 27 28 _param_registerfile_monolithic = param;
Note: See TracChangeset
for help on using the changeset viewer.