Changeset 113 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue
- Timestamp:
- Apr 14, 2009, 8:39:12 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue
- Files:
-
- 5 added
- 11 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/Makefile.defs
r81 r113 7 7 # 8 8 9 ENTITY = Write_queue 10 9 11 #-----[ Directory ]---------------------------------------- 10 12 DIR_COMPONENT_MORPHEO = ../../../../../../.. -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/include/top.h
r111 r113 2 2 * $Id$ 3 3 * 4 * [ 4 * [ Description ] 5 5 * 6 * Test " RegisterFile"6 * Test "Write_queue" 7 7 */ 8 8 … … 11 11 #endif 12 12 13 #include <string> 14 #include <iostream> 15 #include <sys/time.h> 13 #define NB_ITERATION 1 14 #define CYCLE_MAX (1024*NB_ITERATION) 16 15 16 #include "Common/include/Test.h" 17 17 #include "Common/include/Time.h" 18 18 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h" … … 29 29 using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue; 30 30 31 void test (string name, 32 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Parameters * param); 31 SC_MODULE(top) 32 { 33 #ifdef SYSTEMC 34 private: sc_clock * in_CLOCK ; 35 private: sc_signal<Tcontrol_t> * in_NRESET; 36 37 private: sc_signal<Tcontrol_t > * in_WRITE_QUEUE_IN_VAL ; 38 private: sc_signal<Tcontrol_t > * out_WRITE_QUEUE_IN_ACK ; 39 private: sc_signal<Tcontext_t > * in_WRITE_QUEUE_IN_CONTEXT_ID ; 40 private: sc_signal<Tcontext_t > * in_WRITE_QUEUE_IN_FRONT_END_ID ; 41 private: sc_signal<Tcontext_t > * in_WRITE_QUEUE_IN_OOO_ENGINE_ID ; 42 private: sc_signal<Tpacket_t > * in_WRITE_QUEUE_IN_PACKET_ID ; 43 //private: sc_signal<Toperation_t > * in_WRITE_QUEUE_IN_OPERATION ; 44 //private: sc_signal<Ttype_t > * in_WRITE_QUEUE_IN_TYPE ; 45 private: sc_signal<Tcontrol_t > * in_WRITE_QUEUE_IN_WRITE_RD ; 46 private: sc_signal<Tgeneral_address_t> * in_WRITE_QUEUE_IN_NUM_REG_RD ; 47 private: sc_signal<Tgeneral_data_t > * in_WRITE_QUEUE_IN_DATA_RD ; 48 private: sc_signal<Tcontrol_t > * in_WRITE_QUEUE_IN_WRITE_RE ; 49 private: sc_signal<Tspecial_address_t> * in_WRITE_QUEUE_IN_NUM_REG_RE ; 50 private: sc_signal<Tspecial_data_t > * in_WRITE_QUEUE_IN_DATA_RE ; 51 private: sc_signal<Texception_t > * in_WRITE_QUEUE_IN_EXCEPTION ; 52 private: sc_signal<Tcontrol_t > * in_WRITE_QUEUE_IN_NO_SEQUENCE ; 53 private: sc_signal<Taddress_t > * in_WRITE_QUEUE_IN_ADDRESS ; 54 private: sc_signal<Tcontrol_t > * out_WRITE_QUEUE_OUT_VAL ; 55 private: sc_signal<Tcontrol_t > * in_WRITE_QUEUE_OUT_ACK ; 56 private: sc_signal<Tcontext_t > * out_WRITE_QUEUE_OUT_CONTEXT_ID ; 57 private: sc_signal<Tcontext_t > * out_WRITE_QUEUE_OUT_FRONT_END_ID ; 58 private: sc_signal<Tcontext_t > * out_WRITE_QUEUE_OUT_OOO_ENGINE_ID; 59 private: sc_signal<Tpacket_t > * out_WRITE_QUEUE_OUT_PACKET_ID ; 60 //private: sc_signal<Toperation_t > * out_WRITE_QUEUE_OUT_OPERATION ; 61 //private: sc_signal<Ttype_t > * out_WRITE_QUEUE_OUT_TYPE ; 62 private: sc_signal<Tspecial_data_t > * out_WRITE_QUEUE_OUT_FLAGS ; 63 private: sc_signal<Texception_t > * out_WRITE_QUEUE_OUT_EXCEPTION ; 64 private: sc_signal<Tcontrol_t > * out_WRITE_QUEUE_OUT_NO_SEQUENCE ; 65 private: sc_signal<Tgeneral_data_t > * out_WRITE_QUEUE_OUT_ADDRESS ; 66 private: sc_signal<Taddress_t > * out_WRITE_QUEUE_OUT_DATA ; 67 private: sc_signal<Tcontrol_t > ** out_GPR_WRITE_VAL ; 68 private: sc_signal<Tcontrol_t > ** in_GPR_WRITE_ACK ; 69 private: sc_signal<Tcontext_t > ** out_GPR_WRITE_OOO_ENGINE_ID ; 70 private: sc_signal<Tgeneral_address_t> ** out_GPR_WRITE_NUM_REG ; 71 private: sc_signal<Tgeneral_data_t > ** out_GPR_WRITE_DATA ; 72 private: sc_signal<Tcontrol_t > ** out_SPR_WRITE_VAL ; 73 private: sc_signal<Tcontrol_t > ** in_SPR_WRITE_ACK ; 74 private: sc_signal<Tcontext_t > ** out_SPR_WRITE_OOO_ENGINE_ID ; 75 private: sc_signal<Tspecial_address_t> ** out_SPR_WRITE_NUM_REG ; 76 private: sc_signal<Tspecial_data_t > ** out_SPR_WRITE_DATA ; 77 private: sc_signal<Tcontext_t > ** out_BYPASS_WRITE_OOO_ENGINE_ID ; 78 private: sc_signal<Tcontrol_t > ** out_BYPASS_WRITE_GPR_VAL ; 79 private: sc_signal<Tgeneral_address_t> ** out_BYPASS_WRITE_GPR_NUM_REG ; 80 private: sc_signal<Tgeneral_data_t > ** out_BYPASS_WRITE_GPR_DATA ; 81 private: sc_signal<Tcontrol_t > ** out_BYPASS_WRITE_SPR_VAL ; 82 private: sc_signal<Tspecial_address_t> ** out_BYPASS_WRITE_SPR_NUM_REG ; 83 private: sc_signal<Tspecial_data_t > ** out_BYPASS_WRITE_SPR_DATA ; 84 85 #endif 86 87 private: std::string name; 88 private: Tusage_t _usage; 89 private: morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Parameters * _param; 90 #ifdef STATISTICS 91 private: morpheo::behavioural::Parameters_Statistics * _param_stat; 92 #endif 93 private: Write_queue * component; 94 95 private: void usage 96 ( 97 #ifdef MTI_SYSTEMC 98 int argc, const char * const * argv 99 #else 100 int argc, char * argv[] 101 #endif 102 ); 103 private: void allocation (void); 104 private: void deallocation (void); 105 public : void test (void); 106 107 #ifdef MTI_SYSTEMC 108 SC_CTOR(top::top); 109 #else 110 public : top (sc_module_name module_name,int argc, char * argv[]); 111 #endif 112 public : ~top(void); 113 }; 114 115 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/main.cpp
r88 r113 2 2 * $Id$ 3 3 * 4 * [ 4 * [ Description ] 5 5 * 6 6 */ 7 7 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/include/t est.h"8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/include/top.h" 9 9 10 #define NB_PARAMS 10 11 12 void usage (int argc, char * argv[]) 10 #ifndef MTI_SYSTEMC 11 # ifndef SYSTEMC 12 int main (int argc, char * argv[]) 13 # else 14 int sc_main (int argc, char * argv[]) 15 # endif 13 16 { 14 err (_("<Usage> %s name_instance list_params.\n"),argv[0]); 15 err (_("list_params is :\n")); 16 err (_(" * size_queue (uint32_t)\n")); 17 err (_(" * nb_context (uint32_t)\n")); 18 err (_(" * nb_front_end (uint32_t)\n")); 19 err (_(" * nb_ooo_engine (uint32_t)\n")); 20 err (_(" * nb_packet (uint32_t)\n")); 21 err (_(" * size_general_data (uint32_t)\n")); 22 err (_(" * nb_general_register (uint32_t)\n")); 23 err (_(" * size_special_data (uint32_t)\n")); 24 err (_(" * nb_special_register (uint32_t)\n")); 25 err (_(" * nb_bypass_write (uint32_t)\n")); 26 27 exit (1); 28 } 29 30 #ifndef SYSTEMC 31 int main (int argc, char * argv[]) 32 #else 33 int sc_main (int argc, char * argv[]) 34 #endif 35 { 36 if (argc != 2+NB_PARAMS) 37 usage (argc, argv); 38 39 uint32_t x = 1; 40 41 const string name = argv[x++]; 42 const uint32_t size_queue = atoi(argv[x++]); 43 const uint32_t nb_context = atoi(argv[x++]); 44 const uint32_t nb_front_end = atoi(argv[x++]); 45 const uint32_t nb_ooo_engine = atoi(argv[x++]); 46 const uint32_t nb_packet = atoi(argv[x++]); 47 const uint32_t size_general_data = atoi(argv[x++]); 48 const uint32_t nb_general_register = atoi(argv[x++]); 49 const uint32_t size_special_data = atoi(argv[x++]); 50 const uint32_t nb_special_register = atoi(argv[x++]); 51 const uint32_t nb_bypass_write = atoi(argv[x++]); 17 int _return = EXIT_SUCCESS; 52 18 53 19 try 54 20 { 55 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Parameters 56 (size_queue , 57 nb_context , 58 nb_front_end , 59 nb_ooo_engine , 60 nb_packet , 61 size_general_data , 62 nb_general_register, 63 size_special_data , 64 nb_special_register, 65 nb_bypass_write , 66 true // is_toplevel 67 ); 68 69 msg(_("%s"),param->print(1).c_str()); 70 71 test (name,param); 21 top * my_top = new top ("my_top",argc,argv); 22 23 my_top->test(); 24 25 delete my_top; 72 26 } 73 27 catch (morpheo::ErrorMorpheo & error) 74 28 { 75 msg (_("<%s> : %s.\n"),name.c_str(),error.what ());76 exit (EXIT_FAILURE);29 msg(_("%s"),error.what ()); 30 _return = EXIT_FAILURE; 77 31 } 78 catch (...) 32 33 try 79 34 { 80 err (_("<%s> : This test must generate a error.\n"),name.c_str()); 81 exit (EXIT_FAILURE); 35 if (_return == EXIT_SUCCESS) 36 TEST_OK("Write_queue : no error"); 37 else 38 TEST_KO("Write_queue : a lot of error"); 39 } 40 catch (morpheo::ErrorMorpheo & error) 41 { 42 // msgError(_("<%s> :\n%s"),name.c_str(), error.what ()); 43 _return = EXIT_FAILURE; 82 44 } 83 45 84 return (EXIT_SUCCESS);46 return _return; 85 47 } 86 48 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h
r97 r113 30 30 #include "Behavioural/include/Usage.h" 31 31 32 #include "Behavioural/Generic/Queue/include/Queue.h" 33 32 34 namespace morpheo { 33 35 namespace behavioural { … … 48 50 protected : const std::string _name; 49 51 protected : const Parameters * _param; 50 p rivate : constTusage_t _usage;52 public : Tusage_t _usage; 51 53 52 54 #ifdef STATISTICS … … 126 128 127 129 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 130 private : morpheo::behavioural::generic::queue::Parameters * _param_queue; 131 private : morpheo::behavioural::generic::queue::Queue * _component_queue; 128 132 129 133 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters.cpp
r103 r113 30 30 uint32_t nb_special_register, 31 31 uint32_t nb_bypass_write , 32 bool is_toplevel) 32 bool is_toplevel): 33 behavioural::Parameters ("Write_queue") 33 34 { 34 35 log_printf(FUNC,Write_queue,FUNCTION,"Begin"); … … 67 68 copy(); 68 69 } 69 70 _size_internal_queue =71 ( _size_context_id +72 _size_front_end_id +73 _size_ooo_engine_id +74 _size_rob_ptr +75 1 +76 _size_general_register +77 _size_general_data +78 1 +79 _size_special_register +80 _size_special_data +81 _size_exception +82 1 +83 _size_instruction_address84 );85 70 86 71 log_printf(FUNC,Write_queue,FUNCTION,"End"); … … 134 119 { 135 120 log_printf(FUNC,Write_queue,FUNCTION,"Begin"); 121 122 _size_internal_queue = 123 ( _size_context_id + 124 _size_front_end_id + 125 _size_ooo_engine_id + 126 _size_rob_ptr + 127 1 + 128 _size_general_register + 129 _size_general_data + 130 1 + 131 _size_special_register + 132 _size_special_data + 133 _size_exception + 134 1 + 135 _size_instruction_address 136 ); 137 136 138 log_printf(FUNC,Write_queue,FUNCTION,"End"); 137 139 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters_msg_error.cpp
r81 r113 26 26 log_printf(FUNC,Write_queue,FUNCTION,"Begin"); 27 27 28 Parameters_test test ( "Write_queue");28 Parameters_test test (_type); 29 29 30 30 if (_nb_bypass_write > _size_queue) 31 test.error("The write_queue can't have more bypass_write than entry in the queue. ");31 test.error("The write_queue can't have more bypass_write than entry in the queue.\n"); 32 32 33 33 log_printf(FUNC,Write_queue,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue.cpp
r88 r113 37 37 ,_usage (usage) 38 38 { 39 log_ printf(FUNC,Write_queue,FUNCTION,"Begin");39 log_begin(Write_queue,FUNCTION); 40 40 41 #if DEBUG_Write_queue == true42 log_printf(INFO,Write_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());41 // #if DEBUG_Write_queue == true 42 // log_printf(INFO,Write_queue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 43 44 std::cout << *param << std::endl;45 #endif44 // std::cout << *param << std::endl; 45 // #endif 46 46 47 log_printf(INFO,Write_queue,FUNCTION, "Allocation");47 log_printf(INFO,Write_queue,FUNCTION,_("<%s> Allocation"),_name.c_str()); 48 48 allocation (); 49 49 … … 51 51 if (usage_is_set(_usage,USE_STATISTICS)) 52 52 { 53 log_printf(INFO,Write_queue,FUNCTION, "Allocation of statistics");53 log_printf(INFO,Write_queue,FUNCTION,_("<%s> Allocation of statistics"),_name.c_str()); 54 54 55 55 statistics_declaration(param_statistics); … … 61 61 { 62 62 // generate the vhdl 63 log_printf(INFO,Write_queue,FUNCTION, "Generate the vhdl");63 log_printf(INFO,Write_queue,FUNCTION,_("<%s> Generate the vhdl"),_name.c_str()); 64 64 65 65 vhdl(); … … 70 70 if (usage_is_set(_usage,USE_SYSTEMC)) 71 71 { 72 log_printf(INFO,Write_queue,FUNCTION, "Method - transition");72 log_printf(INFO,Write_queue,FUNCTION,_("<%s> Method - transition"),_name.c_str()); 73 73 74 74 SC_METHOD (transition); … … 80 80 # endif 81 81 82 log_printf(INFO,Write_queue,FUNCTION, "Method - genMoore");82 log_printf(INFO,Write_queue,FUNCTION,_("<%s> Method - genMoore"),_name.c_str()); 83 83 84 84 SC_METHOD (genMoore); … … 92 92 #endif 93 93 } 94 log_ printf(FUNC,Write_queue,FUNCTION,"End");94 log_end(Write_queue,FUNCTION); 95 95 }; 96 96 … … 99 99 Write_queue::~Write_queue (void) 100 100 { 101 log_ printf(FUNC,Write_queue,FUNCTION,"Begin");101 log_begin(Write_queue,FUNCTION); 102 102 103 103 #ifdef STATISTICS 104 104 if (usage_is_set(_usage,USE_STATISTICS)) 105 105 { 106 log_printf(INFO,Write_queue,FUNCTION, "Generate Statistics file");106 log_printf(INFO,Write_queue,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str()); 107 107 108 108 delete _stat; … … 110 110 #endif 111 111 112 log_printf(INFO,Write_queue,FUNCTION, "Deallocation");112 log_printf(INFO,Write_queue,FUNCTION,_("<%s> Deallocation"),_name.c_str()); 113 113 deallocation (); 114 114 115 log_ printf(FUNC,Write_queue,FUNCTION,"End");115 log_end(Write_queue,FUNCTION); 116 116 }; 117 117 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp
r112 r113 28 28 29 29 Entity * entity = _component->set_entity (_name 30 , "Write_queue"30 ,_param->_type 31 31 #ifdef POSITION 32 32 ,COMBINATORY … … 136 136 } 137 137 138 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~138 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 139 139 140 140 _queue = new std::list<write_queue_entry_t *>; 141 142 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 143 _param_queue = new morpheo::behavioural::generic::queue::Parameters 144 (_param->_size_queue, 145 _param->_size_internal_queue, 146 _param->_nb_bypass_write, 147 false, 148 false 149 ); 150 151 std::string queue_name = _name + "_queue"; 152 _component_queue = new morpheo::behavioural::generic::queue::Queue 153 (queue_name.c_str() 154 #ifdef STATISTICS 155 ,NULL 156 #endif 157 ,_param_queue 158 ,USE_VHDL); 159 160 _component->set_component(_component_queue->_component 161 #ifdef POSITION 162 , 50, 50, 50, 50 163 #endif 164 , INSTANCE_LIBRARY 165 ); 141 166 142 167 #ifdef POSITION -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp
r112 r113 92 92 93 93 delete _component; 94 delete _component_queue; 95 delete _param_queue; 94 96 95 97 log_printf(FUNC,Write_queue,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_statistics_declaration.cpp
r81 r113 26 26 27 27 _stat = new Stat (static_cast<std::string>(_name), 28 "Write_queue",28 _param->_type, 29 29 param_statistics); 30 30 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_vhdl.cpp
r105 r113 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h" 10 10 #include "Behavioural/include/Vhdl.h" 11 #include "Behavioural/Generic/Queue/include/Queue.h"12 11 13 12 namespace morpheo { … … 26 25 { 27 26 log_printf(FUNC,Write_queue,FUNCTION,"Begin"); 28 29 morpheo::behavioural::generic::queue::Parameters * param_queue;30 morpheo::behavioural::generic::queue::Queue * queue;31 32 param_queue = new morpheo::behavioural::generic::queue::Parameters33 (_param->_size_queue,34 _param->_size_internal_queue,35 _param->_nb_bypass_write,36 false,37 false38 );39 40 std::cout << "size internal queue :" << _param->_size_internal_queue << "." << std::endl;41 42 std::string queue_name = _name + "_queue";43 queue = new morpheo::behavioural::generic::queue::Queue44 (queue_name.c_str()45 #ifdef STATISTICS46 ,NULL47 #endif48 ,param_queue49 ,USE_VHDL);50 51 _component->set_component(queue->_component52 #ifdef POSITION53 , 50, 50, 50, 5054 #endif55 , INSTANCE_LIBRARY56 );57 58 59 27 60 28 Vhdl * vhdl = new Vhdl (_name); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_vhdl_declaration.cpp
r103 r113 54 54 uint32_t min = 0; 55 55 uint32_t max, size; 56 uint32_t min_ooo, max_ooo ;56 uint32_t min_ooo, max_ooo = 0; 57 57 uint32_t pos_write_rd, min_gpr_num_reg, max_gpr_num_reg, min_gpr_data, max_gpr_data; 58 58 uint32_t pos_write_re, min_spr_num_reg, max_spr_num_reg, min_spr_data, max_spr_data;
Note: See TracChangeset
for help on using the changeset viewer.