Changeset 113 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit
- 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
- Files:
-
- 17 added
- 29 edited
- 3 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/Makefile.defs
r81 r113 7 7 # 8 8 9 ENTITY = Execute_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/Execute_queue/SelfTest/include/top.h
r111 r113 2 2 * $Id$ 3 3 * 4 * [ 4 * [ Description ] 5 5 * 6 * Test " RegisterFile"6 * Test "Execute_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 16 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/Execute_queue/include/Execute_queue.h" … … 29 29 using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue; 30 30 31 void test (string name, 32 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_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_EXECUTE_QUEUE_IN_VAL ; 38 private: sc_signal<Tcontrol_t > * out_EXECUTE_QUEUE_IN_ACK ; 39 private: sc_signal<Tcontext_t > * in_EXECUTE_QUEUE_IN_CONTEXT_ID ; 40 private: sc_signal<Tcontext_t > * in_EXECUTE_QUEUE_IN_FRONT_END_ID ; 41 private: sc_signal<Tcontext_t > * in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ; 42 private: sc_signal<Tpacket_t > * in_EXECUTE_QUEUE_IN_PACKET_ID ; 43 //private: sc_signal<Toperation_t > * in_EXECUTE_QUEUE_IN_OPERATION ; 44 //private: sc_signal<Ttype_t > * in_EXECUTE_QUEUE_IN_TYPE ; 45 private: sc_signal<Tspecial_data_t > * in_EXECUTE_QUEUE_IN_FLAGS ; 46 private: sc_signal<Texception_t > * in_EXECUTE_QUEUE_IN_EXCEPTION ; 47 private: sc_signal<Tcontrol_t > * in_EXECUTE_QUEUE_IN_NO_SEQUENCE ; 48 private: sc_signal<Taddress_t > * in_EXECUTE_QUEUE_IN_ADDRESS ; 49 private: sc_signal<Tgeneral_data_t > * in_EXECUTE_QUEUE_IN_DATA ; 50 51 private: sc_signal<Tcontrol_t > * out_EXECUTE_QUEUE_OUT_VAL ; 52 private: sc_signal<Tcontrol_t > * in_EXECUTE_QUEUE_OUT_ACK ; 53 private: sc_signal<Tcontext_t > * out_EXECUTE_QUEUE_OUT_CONTEXT_ID ; 54 private: sc_signal<Tcontext_t > * out_EXECUTE_QUEUE_OUT_FRONT_END_ID ; 55 private: sc_signal<Tcontext_t > * out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID; 56 private: sc_signal<Tpacket_t > * out_EXECUTE_QUEUE_OUT_PACKET_ID ; 57 //private: sc_signal<Toperation_t > * out_EXECUTE_QUEUE_OUT_OPERATION ; 58 //private: sc_signal<Ttype_t > * out_EXECUTE_QUEUE_OUT_TYPE ; 59 private: sc_signal<Tspecial_data_t > * out_EXECUTE_QUEUE_OUT_FLAGS ; 60 private: sc_signal<Texception_t > * out_EXECUTE_QUEUE_OUT_EXCEPTION ; 61 private: sc_signal<Tcontrol_t > * out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ; 62 private: sc_signal<Taddress_t > * out_EXECUTE_QUEUE_OUT_ADDRESS ; 63 private: sc_signal<Tgeneral_data_t > * out_EXECUTE_QUEUE_OUT_DATA ; 64 65 #endif 66 67 private: std::string name; 68 private: Tusage_t _usage; 69 private: morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters * _param; 70 #ifdef STATISTICS 71 private: morpheo::behavioural::Parameters_Statistics * _param_stat; 72 #endif 73 private: Execute_queue * component; 74 75 private: void usage 76 ( 77 #ifdef MTI_SYSTEMC 78 int argc, const char * const * argv 79 #else 80 int argc, char * argv[] 81 #endif 82 ); 83 private: void allocation (void); 84 private: void deallocation (void); 85 public : void test (void); 86 87 #ifdef MTI_SYSTEMC 88 SC_CTOR(top::top); 89 #else 90 public : top (sc_module_name module_name,int argc, char * argv[]); 91 #endif 92 public : ~top(void); 93 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_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/Execute_queue/SelfTest/include/t est.h"8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/include/top.h" 9 9 10 #define NB_PARAMS 7 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 (_(" * size_special_data (uint32_t)\n")); 23 24 exit (1); 25 } 26 27 #ifndef SYSTEMC 28 int main (int argc, char * argv[]) 29 #else 30 int sc_main (int argc, char * argv[]) 31 #endif 32 { 33 if (argc != 2+NB_PARAMS) 34 usage (argc, argv); 35 36 uint32_t x = 1; 37 38 const string name = argv[x++]; 39 const uint32_t size_queue = atoi(argv[x++]); 40 const uint32_t nb_context = atoi(argv[x++]); 41 const uint32_t nb_front_end = atoi(argv[x++]); 42 const uint32_t nb_ooo_engine = atoi(argv[x++]); 43 const uint32_t nb_packet = atoi(argv[x++]); 44 const uint32_t size_general_data = atoi(argv[x++]); 45 const uint32_t size_special_data = atoi(argv[x++]); 17 int _return = EXIT_SUCCESS; 46 18 47 19 try 48 20 { 49 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters 50 (size_queue , 51 nb_context , 52 nb_front_end , 53 nb_ooo_engine , 54 nb_packet , 55 size_general_data , 56 size_special_data , 57 true // is_toplevel 58 ); 59 60 msg(_("%s"),param->print(1).c_str()); 61 62 test (name,param); 21 top * my_top = new top ("my_top",argc,argv); 22 23 my_top->test(); 24 25 delete my_top; 63 26 } 64 27 catch (morpheo::ErrorMorpheo & error) 65 28 { 66 msg (_("<%s> : %s.\n"),name.c_str(),error.what ());67 exit (EXIT_FAILURE);29 msgError(_("%s\n"),error.what ()); 30 _return = EXIT_FAILURE; 68 31 } 69 catch (...) 32 33 try 70 34 { 71 err (_("<%s> : This test must generate a error.\n"),name.c_str()); 72 exit (EXIT_FAILURE); 35 if (_return == EXIT_SUCCESS) 36 TEST_OK("Execute_queue : no error"); 37 else 38 TEST_KO("Execute_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; 73 44 } 74 45 75 return (EXIT_SUCCESS);46 return _return; 76 47 } 77 48 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h
r101 r113 18 18 #include "Common/include/Debug.h" 19 19 20 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Wrapper_Execute_queue.h" 20 21 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Parameters.h" 21 22 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Types.h" … … 28 29 #endif 29 30 #include "Behavioural/include/Usage.h" 31 #include "Behavioural/include/Simulation.h" 32 33 #include "Behavioural/Generic/Queue/include/Queue.h" 30 34 31 35 namespace morpheo { … … 47 51 protected : const std::string _name; 48 52 protected : const Parameters * _param; 49 p rivate : constTusage_t _usage;53 public : Tusage_t _usage; 50 54 51 55 #ifdef STATISTICS … … 95 99 public : SC_OUT(Taddress_t ) * out_EXECUTE_QUEUE_OUT_ADDRESS ; 96 100 public : SC_OUT(Tgeneral_data_t ) * out_EXECUTE_QUEUE_OUT_DATA ; 97 98 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~99 101 100 102 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 103 105 private : Tcontrol_t internal_EXECUTE_QUEUE_IN_ACK ; 104 106 private : Tcontrol_t internal_EXECUTE_QUEUE_OUT_VAL; 107 108 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 109 # ifdef VHDL 110 private : morpheo::behavioural::generic::queue::Parameters * _param_queue; 111 private : morpheo::behavioural::generic::queue::Queue * _component_queue; 112 # endif 113 #endif 114 115 #ifdef MODELSIM_COSIMULATION 116 // ~~~~~[ Wrapper ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 117 private : Wrapper_Execute_queue * _wrapper; 105 118 #endif 106 119 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Parameters.h
r98 r113 61 61 public : Parameters_test msg_error (void); 62 62 63 public : std::string print (uint32_t depth); 64 public : friend std::ostream& operator<< (std::ostream& output_stream, 65 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters & x); 63 public : std::string id (void) const; 64 65 public : std::string print (uint32_t depth); 66 public : friend std::ostream& operator<< (std::ostream& output_stream, 67 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters & x); 66 68 }; 67 69 … … 72 74 }; // end namespace multi_execute_loop 73 75 }; // end namespace core 74 75 76 }; // end namespace behavioural 76 77 }; // end namespace morpheo -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue.cpp
r88 r113 35 35 _name (name) 36 36 ,_param (param) 37 ,_usage (usage)38 37 { 39 log_ printf(FUNC,Execute_queue,FUNCTION,"Begin");38 log_begin(Execute_queue,FUNCTION); 40 39 41 #if DEBUG_Execute_queue == true 42 log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 40 _usage = usage_environment(usage); 43 41 44 std::cout << *param << std::endl; 45 #endif 42 // #if DEBUG_Execute_queue == true 43 // log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 46 44 47 log_printf(INFO,Execute_queue,FUNCTION,"Allocation"); 45 // std::cout << *param << std::endl; 46 // #endif 47 48 #ifdef MODELSIM_COSIMULATION 49 { 50 std::string param_id = param->id(); 51 52 if ((_model.get_type(_param->_type) == MODEL_VHDL) and 53 (param_id != "") 54 ) 55 { 56 std::string vhdl_id = vhdl_get_id(_name); 57 58 if (vhdl_id == param_id) 59 { 60 msgInformation(_("<%s> Use VHDL model\n"),_name.c_str()); 61 _usage = usage_cosimulation(_usage); 62 } 63 else 64 { 65 log_printf(TRACE,Execute_queue,FUNCTION,"get_id : %s",vhdl_id.c_str()); 66 log_printf(TRACE,Execute_queue,FUNCTION,"id : %s",param_id.c_str()); 67 68 msgWarning(_("<%s> Can't load VHDL model, continue with SystemC model\n"),_name.c_str()); 69 } 70 } 71 } 72 #endif 73 74 log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Allocation"),_name.c_str()); 48 75 allocation (); 49 76 … … 51 78 if (usage_is_set(_usage,USE_STATISTICS)) 52 79 { 53 log_printf(INFO,Execute_queue,FUNCTION, "Allocation of statistics");80 log_printf(INFO,Execute_queue,FUNCTION,("<%s> Allocation of statistics"),_name.c_str()); 54 81 55 82 statistics_declaration(param_statistics); … … 61 88 { 62 89 // generate the vhdl 63 log_printf(INFO,Execute_queue,FUNCTION, "Generate the vhdl");90 log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Generate the vhdl"),_name.c_str()); 64 91 65 92 vhdl(); … … 68 95 69 96 #ifdef SYSTEMC 70 if (usage_is_set(_usage,USE_SYSTEMC ))97 if (usage_is_set(_usage,USE_SYSTEMC_BODY)) 71 98 { 72 log_printf(INFO,Execute_queue,FUNCTION, "Method - transition");99 log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Method - transition"),_name.c_str()); 73 100 74 101 SC_METHOD (transition); … … 80 107 # endif 81 108 82 log_printf(INFO,Execute_queue,FUNCTION, "Method - genMoore");109 log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Method - genMoore"),_name.c_str()); 83 110 84 111 SC_METHOD (genMoore); … … 89 116 // List dependency information 90 117 # endif 91 118 } 92 119 #endif 93 } 94 log_printf(FUNC,Execute_queue,FUNCTION,"End"); 120 log_end(Execute_queue,FUNCTION); 95 121 }; 96 122 … … 99 125 Execute_queue::~Execute_queue (void) 100 126 { 101 log_ printf(FUNC,Execute_queue,FUNCTION,"Begin");127 log_begin(Execute_queue,FUNCTION); 102 128 103 129 #ifdef STATISTICS 104 130 if (usage_is_set(_usage,USE_STATISTICS)) 105 131 { 106 log_printf(INFO,Execute_queue,FUNCTION, "Generate Statistics file");132 log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str()); 107 133 108 134 delete _stat; … … 110 136 #endif 111 137 112 log_printf(INFO,Execute_queue,FUNCTION, "Deallocation");138 log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Deallocation"),_name.c_str()); 113 139 deallocation (); 114 140 115 log_ printf(FUNC,Execute_queue,FUNCTION,"End");141 log_end(Execute_queue,FUNCTION); 116 142 }; 117 143 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_allocation.cpp
r112 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/Execute_queue/include/Wrapper_Execute_queue.h" 8 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h" 9 10 #include "Behavioural/include/Allocation.h" … … 27 28 28 29 Entity * entity = _component->set_entity (_name 29 , "Execute_queue"30 ,_param->_type 30 31 #ifdef POSITION 31 32 ,COMBINATORY … … 35 36 _interfaces = entity->set_interfaces(); 36 37 37 // ~~~~~[ 38 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 38 39 39 40 Interface * interface = _interfaces->set_interface("" … … 54 55 ALLOC0_VALACK_IN ( in_EXECUTE_QUEUE_IN_VAL,VAL); 55 56 ALLOC0_VALACK_OUT(out_EXECUTE_QUEUE_IN_ACK,ACK); 56 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id );57 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id );58 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id );59 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr );60 // ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation );61 // ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type );62 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FLAGS ,"flags" ,Tspecial_data_t ,_param->_size_special_data );63 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception );64 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 );57 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 58 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 59 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 60 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 61 // ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 62 // ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 63 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FLAGS ,"flags" ,Tspecial_data_t ,_param->_size_special_data ); 64 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 65 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 65 66 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 66 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data );67 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 67 68 68 69 ALLOC0_INTERFACE_END(); … … 90 91 } 91 92 92 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 93 94 _queue = new std::list<execute_queue_entry_t *>; 93 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 94 if (usage_is_set(_usage,USE_SYSTEMC_BODY)) 95 { 96 _queue = new std::list<execute_queue_entry_t *>; 97 } 98 99 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 #ifdef VHDL 101 if (usage_is_set(_usage,USE_VHDL)) 102 { 103 _param_queue = new morpheo::behavioural::generic::queue::Parameters 104 (_param->_size_queue, 105 _param->_size_internal_queue, 106 0, 107 false, 108 false 109 ); 110 111 std::string queue_name = _name + "_queue"; 112 _component_queue = new morpheo::behavioural::generic::queue::Queue 113 (queue_name.c_str() 114 # ifdef STATISTICS 115 ,NULL 116 # endif 117 ,_param_queue 118 ,USE_VHDL); 119 120 _component->set_component(_component_queue->_component 121 # ifdef POSITION 122 , 0, 0, 0, 0 123 # endif 124 , INSTANCE_LIBRARY 125 ); 126 } 127 #endif 95 128 96 129 #ifdef POSITION 97 if (usage_is_set(_usage,USE_POSITION)) 98 _component->generate_file(); 99 #endif 100 130 if (usage_is_set(_usage,USE_POSITION)) 131 _component->generate_file(); 132 #endif 133 134 #ifdef MODELSIM_COSIMULATION 135 if (usage_is_set(_usage,USE_COSIMULATION)) 136 { 137 log_printf(INFO,Execute_queue,FUNCTION,_("<%s> : Create Wrapper"),_name.c_str()); 138 139 _wrapper = new Wrapper_Execute_queue(_name.c_str(),"morpheo_behavioural","/dsk/l1/misc/Morpheo/work",_param); 140 // _wrapper = new Wrapper_Execute_queue(_name.c_str(),"morpheo_behavioural","work"); 141 142 log_printf(INFO,Execute_queue,FUNCTION,_("<%s> : Wrapper Instanciation"),_name.c_str()); 143 144 // INSTANCE0_FOREIGN_SIGNAL_CLOCK(_wrapper, in_CLOCK , "in_CLOCK" ,1); 145 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_NRESET ,Tcontrol_t , "in_NRESET" ,1); 146 147 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_VAL ,Tcontrol_t , "in_EXECUTE_QUEUE_IN_VAL" ,1 ); 148 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_IN_ACK ,Tcontrol_t ,"out_EXECUTE_QUEUE_IN_ACK" ,1 ); 149 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_CONTEXT_ID ,Tcontext_t , "in_EXECUTE_QUEUE_IN_CONTEXT_ID" ,_param->_size_context_id ); 150 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_FRONT_END_ID ,Tcontext_t , "in_EXECUTE_QUEUE_IN_FRONT_END_ID" ,_param->_size_front_end_id ); 151 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ,Tcontext_t , "in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID" ,_param->_size_ooo_engine_id ); 152 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_PACKET_ID ,Tpacket_t , "in_EXECUTE_QUEUE_IN_PACKET_ID" ,_param->_size_rob_ptr ); 153 // // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_OPERATION ,Toperation_t , "in_EXECUTE_QUEUE_IN_OPERATION" ,_param->_size_operation ); 154 // // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_TYPE ,Ttype_t , "in_EXECUTE_QUEUE_IN_TYPE" ,_param->_size_type ); 155 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_FLAGS ,Tspecial_data_t , "in_EXECUTE_QUEUE_IN_FLAGS" ,_param->_size_special_data ); 156 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_EXCEPTION ,Texception_t , "in_EXECUTE_QUEUE_IN_EXCEPTION" ,_param->_size_exception ); 157 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_NO_SEQUENCE ,Tcontrol_t , "in_EXECUTE_QUEUE_IN_NO_SEQUENCE" ,1 ); 158 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_ADDRESS ,Taddress_t , "in_EXECUTE_QUEUE_IN_ADDRESS" ,_param->_size_instruction_address); 159 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_IN_DATA ,Tgeneral_data_t , "in_EXECUTE_QUEUE_IN_DATA" ,_param->_size_general_data ); 160 161 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_VAL ,Tcontrol_t ,"out_EXECUTE_QUEUE_OUT_VAL" ,1 ); 162 // INSTANCE0_FOREIGN_SIGNAL_IN (_wrapper, in_EXECUTE_QUEUE_OUT_ACK ,Tcontrol_t , "in_EXECUTE_QUEUE_OUT_ACK" ,1 ); 163 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,Tcontext_t ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID" ,_param->_size_context_id ); 164 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,Tcontext_t ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" ,_param->_size_front_end_id ); 165 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID ,Tcontext_t ,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID" ,_param->_size_ooo_engine_id ); 166 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_PACKET_ID ,Tpacket_t ,"out_EXECUTE_QUEUE_OUT_PACKET_ID" ,_param->_size_rob_ptr ); 167 // // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_OPERATION ,Toperation_t ,"out_EXECUTE_QUEUE_OUT_OPERATION" ,_param->_size_operation ); 168 // // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_TYPE ,Ttype_t ,"out_EXECUTE_QUEUE_OUT_TYPE" ,_param->_size_type ); 169 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_FLAGS ,Tspecial_data_t ,"out_EXECUTE_QUEUE_OUT_FLAGS" ,_param->_size_special_data ); 170 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_EXCEPTION ,Texception_t ,"out_EXECUTE_QUEUE_OUT_EXCEPTION" ,_param->_size_exception ); 171 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,Tcontrol_t ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE" ,1 ); 172 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_ADDRESS ,Taddress_t ,"out_EXECUTE_QUEUE_OUT_ADDRESS" ,_param->_size_instruction_address); 173 // INSTANCE0_FOREIGN_SIGNAL_OUT (_wrapper,out_EXECUTE_QUEUE_OUT_DATA ,Tgeneral_data_t ,"out_EXECUTE_QUEUE_OUT_DATA" ,_param->_size_general_data ); 174 175 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_CLOCK ,Tcontrol_t , "in_CLOCK" ,1); 176 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_NRESET ,Tcontrol_t , "in_NRESET" ,1); 177 178 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_VAL ,Tcontrol_t , "in_EXECUTE_QUEUE_IN_VAL" ,1 ); 179 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_IN_ACK ,Tcontrol_t ,"out_EXECUTE_QUEUE_IN_ACK" ,1 ); 180 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_CONTEXT_ID ,Tcontext_t , "in_EXECUTE_QUEUE_IN_CONTEXT_ID" ,_param->_size_context_id ); 181 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_FRONT_END_ID ,Tcontext_t , "in_EXECUTE_QUEUE_IN_FRONT_END_ID" ,_param->_size_front_end_id ); 182 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ,Tcontext_t , "in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID" ,_param->_size_ooo_engine_id ); 183 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_PACKET_ID ,Tpacket_t , "in_EXECUTE_QUEUE_IN_PACKET_ID" ,_param->_size_rob_ptr ); 184 // INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_OPERATION ,Toperation_t , "in_EXECUTE_QUEUE_IN_OPERATION" ,_param->_size_operation ); 185 // INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_TYPE ,Ttype_t , "in_EXECUTE_QUEUE_IN_TYPE" ,_param->_size_type ); 186 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_FLAGS ,Tspecial_data_t, "in_EXECUTE_QUEUE_IN_FLAGS" ,_param->_size_special_data ); 187 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_EXCEPTION ,Texception_t , "in_EXECUTE_QUEUE_IN_EXCEPTION" ,_param->_size_exception ); 188 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_NO_SEQUENCE ,Tcontrol_t , "in_EXECUTE_QUEUE_IN_NO_SEQUENCE" ,1 ); 189 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_ADDRESS ,Taddress_t , "in_EXECUTE_QUEUE_IN_ADDRESS" ,_param->_size_instruction_address); 190 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_DATA ,Tgeneral_data_t, "in_EXECUTE_QUEUE_IN_DATA" ,_param->_size_general_data ); 191 192 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_VAL ,Tcontrol_t ,"out_EXECUTE_QUEUE_OUT_VAL" ,1 ); 193 INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_OUT_ACK ,Tcontrol_t , "in_EXECUTE_QUEUE_OUT_ACK" ,1 ); 194 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,Tcontext_t ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID" ,_param->_size_context_id ); 195 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,Tcontext_t ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" ,_param->_size_front_end_id ); 196 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID ,Tcontext_t ,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID" ,_param->_size_ooo_engine_id ); 197 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_PACKET_ID ,Tpacket_t ,"out_EXECUTE_QUEUE_OUT_PACKET_ID" ,_param->_size_rob_ptr ); 198 // INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_OPERATION ,Toperation_t ,"out_EXECUTE_QUEUE_OUT_OPERATION" ,_param->_size_operation ); 199 // INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_TYPE ,Ttype_t ,"out_EXECUTE_QUEUE_OUT_TYPE" ,_param->_size_type ); 200 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_FLAGS ,Tspecial_data_t,"out_EXECUTE_QUEUE_OUT_FLAGS" ,_param->_size_special_data ); 201 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_EXCEPTION ,Texception_t ,"out_EXECUTE_QUEUE_OUT_EXCEPTION" ,_param->_size_exception ); 202 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,Tcontrol_t ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE" ,1 ); 203 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_ADDRESS ,Taddress_t ,"out_EXECUTE_QUEUE_OUT_ADDRESS" ,_param->_size_instruction_address); 204 INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_DATA ,Tgeneral_data_t,"out_EXECUTE_QUEUE_OUT_DATA" ,_param->_size_general_data ); 205 206 log_printf(INFO,Execute_queue,FUNCTION,_("<%s> : Wrapper Instanciation end"),_name.c_str()); 207 } 208 #endif 209 101 210 log_printf(FUNC,Execute_queue,FUNCTION,"End"); 102 211 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_deallocation.cpp
r112 r113 25 25 log_printf(FUNC,Execute_queue,FUNCTION,"Begin"); 26 26 27 if (usage_is_set(_usage,USE_SYSTEMC ))27 if (usage_is_set(_usage,USE_SYSTEMC_INTERFACE)) 28 28 { 29 29 delete in_CLOCK ; … … 60 60 61 61 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 62 while (not _queue->empty())62 if (usage_is_set(_usage,USE_SYSTEMC_BODY)) 63 63 { 64 delete _queue->front(); 65 _queue->pop_front(); 64 while (not _queue->empty()) 65 { 66 delete _queue->front(); 67 _queue->pop_front(); 68 } 69 delete _queue; 66 70 } 67 delete _queue;68 71 69 72 delete _component; 73 74 #ifdef VHDL 75 if (usage_is_set(_usage,USE_VHDL)) 76 { 77 delete _component_queue; 78 delete _param_queue; 79 } 80 #endif 81 82 #ifdef MODELSIM_COSIMULATION 83 if (usage_is_set(_usage,USE_COSIMULATION)) 84 { 85 delete _wrapper; 86 } 87 #endif 70 88 71 89 log_printf(FUNC,Execute_queue,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_statistics_declaration.cpp
r81 r113 26 26 27 27 _stat = new Stat (static_cast<std::string>(_name), 28 "Execute_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/Execute_queue/src/Execute_queue_vhdl.cpp
r101 r113 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h" 10 10 #include "Behavioural/include/Vhdl.h" 11 #include "Behavioural/Generic/Queue/include/Queue.h"12 11 13 12 namespace morpheo { … … 23 22 #undef FUNCTION 24 23 #define FUNCTION "Execute_queue::vhdl" 25 void Execute_queue::vhdl (void) 24 void Execute_queue::vhdl (void) 26 25 { 27 26 log_printf(FUNC,Execute_queue,FUNCTION,"Begin"); 28 27 29 //----- Queue ----- 30 31 morpheo::behavioural::generic::queue::Parameters * param_queue; 32 morpheo::behavioural::generic::queue::Queue * queue; 33 34 param_queue = new morpheo::behavioural::generic::queue::Parameters 35 (_param->_size_queue, 36 _param->_size_internal_queue, 37 0, 38 false, 39 false 40 ); 41 42 std::string queue_name = _name + "_queue"; 43 queue = new morpheo::behavioural::generic::queue::Queue 44 (queue_name.c_str() 45 #ifdef STATISTICS 46 ,NULL 47 #endif 48 ,param_queue 49 ,USE_VHDL); 50 51 _component->set_component(queue->_component 52 #ifdef POSITION 53 , 0, 0, 0, 0 54 #endif 55 , INSTANCE_LIBRARY 56 ); 57 58 Vhdl * vhdl = new Vhdl (_name); 28 Vhdl * vhdl = new Vhdl (_name,_param->id()); 59 29 60 30 _interfaces->set_port(vhdl); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_vhdl_body.cpp
r98 r113 57 57 size = _param->_size_context_id; 58 58 max = min-1+size; 59 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_CONTEXT_ID ;");59 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_CONTEXT_ID "+std_logic_range(size)+";"); 60 60 min = max+1; 61 61 } … … 64 64 size = _param->_size_front_end_id; 65 65 max = min-1+size; 66 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_FRONT_END_ID ;");66 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_FRONT_END_ID"+std_logic_range(size)+";"); 67 67 min = max+1; 68 68 } … … 71 71 size = _param->_size_ooo_engine_id; 72 72 max = min-1+size; 73 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ;");73 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID"+std_logic_range(size)+";"); 74 74 min = max+1; 75 75 } … … 78 78 size = _param->_size_rob_ptr; 79 79 max = min-1+size; 80 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_PACKET_ID ;");80 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_PACKET_ID"+std_logic_range(size)+";"); 81 81 min = max+1; 82 82 } … … 84 84 // size = _param->_size_operation; 85 85 // max = min-1+size; 86 // vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_OPERATION ;");86 // vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_OPERATION"+std_logic_range(size)+";"); 87 87 // min = max+1; 88 88 // 89 89 // size = _param->_size_type; 90 90 // max = min-1+size; 91 // vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_TYPE ;");91 // vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_TYPE"+std_logic_range(size)+";"); 92 92 // min = max+1; 93 93 94 94 size = _param->_size_special_data; 95 95 max = min-1+size; 96 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_FLAGS ;");96 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_FLAGS"+std_logic_range(size)+";"); 97 97 min = max+1; 98 98 99 99 size = _param->_size_exception; 100 100 max = min-1+size; 101 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_EXCEPTION ;");101 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_EXCEPTION"+std_logic_range(size)+";"); 102 102 min = max+1; 103 103 104 104 size = 1; 105 105 max = min-1+size; 106 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_NO_SEQUENCE ;");106 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_NO_SEQUENCE"+std_logic_range(size)+";"); 107 107 min = max+1; 108 108 109 109 size = _param->_size_instruction_address; 110 110 max = min-1+size; 111 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_ADDRESS ;");111 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_ADDRESS"+std_logic_range(size)+";"); 112 112 min = max+1; 113 113 114 114 size = _param->_size_general_data; 115 115 max = min-1+size; 116 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_DATA ;");116 vhdl->set_body (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_DATA"+std_logic_range(size)+";"); 117 117 min = max+1; 118 118 } … … 125 125 126 126 if(_param->_have_port_context_id) 127 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID <= internal_EXECUTE_QUEUE_OUT_CONTEXT_ID ;");127 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID "+std_logic_range(_param->_size_context_id )+" <= internal_EXECUTE_QUEUE_OUT_CONTEXT_ID ;"); 128 128 if(_param->_have_port_front_end_id) 129 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID <= internal_EXECUTE_QUEUE_OUT_FRONT_END_ID ;");129 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID "+std_logic_range(_param->_size_front_end_id )+" <= internal_EXECUTE_QUEUE_OUT_FRONT_END_ID ;"); 130 130 if(_param->_have_port_ooo_engine_id) 131 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID <= internal_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID;");131 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID "+std_logic_range(_param->_size_ooo_engine_id )+" <= internal_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID;"); 132 132 if(_param->_have_port_rob_ptr) 133 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_PACKET_ID <= internal_EXECUTE_QUEUE_OUT_PACKET_ID ;");134 // vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_OPERATION <= internal_EXECUTE_QUEUE_OUT_OPERATION ;");135 // vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_TYPE <= internal_EXECUTE_QUEUE_OUT_TYPE ;");136 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_FLAGS <= internal_EXECUTE_QUEUE_OUT_FLAGS ;");137 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_EXCEPTION <= internal_EXECUTE_QUEUE_OUT_EXCEPTION ;");138 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE <= internal_EXECUTE_QUEUE_OUT_NO_SEQUENCE ;");139 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_ADDRESS <= internal_EXECUTE_QUEUE_OUT_ADDRESS ;");140 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_DATA <= internal_EXECUTE_QUEUE_OUT_DATA ;");133 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_PACKET_ID "+std_logic_range(_param->_size_rob_ptr )+" <= internal_EXECUTE_QUEUE_OUT_PACKET_ID ;"); 134 // vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_OPERATION "+std_logic_range(_param->_size_operation )+" <= internal_EXECUTE_QUEUE_OUT_OPERATION ;"); 135 // vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_TYPE "+std_logic_range(_param->_size_type )+" <= internal_EXECUTE_QUEUE_OUT_TYPE ;"); 136 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_FLAGS "+std_logic_range(_param->_size_special_data )+" <= internal_EXECUTE_QUEUE_OUT_FLAGS ;"); 137 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_EXCEPTION "+std_logic_range(_param->_size_exception )+" <= internal_EXECUTE_QUEUE_OUT_EXCEPTION ;"); 138 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE "+std_logic_range(1 )+" <= internal_EXECUTE_QUEUE_OUT_NO_SEQUENCE ;"); 139 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_ADDRESS "+std_logic_range(_param->_size_instruction_address)+" <= internal_EXECUTE_QUEUE_OUT_ADDRESS ;"); 140 vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_DATA "+std_logic_range(_param->_size_general_data )+" <= internal_EXECUTE_QUEUE_OUT_DATA ;"); 141 141 142 143 // vhdl->set_body (0,""); 144 // vhdl->set_body (0,"process (in_CLOCK)"); 145 // vhdl->set_body (0,"begin"); 146 // vhdl->set_body (1,"if in_CLOCK'event and in_CLOCK = '1' then"); 147 // // vhdl->set_body (2,"if in_NRESET = '0' then"); 148 // // vhdl->set_body (3,"reg_CURRENT_STATE <= STATE_0;"); 149 // // vhdl->set_body (2,"else"); 150 // vhdl->set_body (3,"reg_CURRENT_STATE <= sig_NEXT_STATE;"); 151 // // vhdl->set_body (2,"end if;"); 152 153 // for (uint32_t i = 0; i <_param->_size_queue - 1; i++) 154 // { 155 // vhdl->set_body (2,"if sig_WEN_"+toString(i)+" = '1' then"); 156 // vhdl->set_body (3,"if sig_SEL_"+toString(i)+" = '0' then"); 157 // if (_param->_have_port_context_id) 158 // vhdl->set_body (4,"reg_CONTEXT_ID_"+toString(i)+" <= in_EXECUTE_QUEUE_IN_CONTEXT_ID;"); 159 // if (_param->_have_port_front_end_id) 160 // vhdl->set_body (4,"reg_FRONT_END_ID_"+toString(i)+" <= in_EXECUTE_QUEUE_IN_FRONT_END_ID;"); 161 // if (_param->_have_port_ooo_engine_id) 162 // vhdl->set_body (4,"reg_OOO_ENGINE_ID_"+toString(i)+" <= in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID;"); 163 // if (_param->_have_port_rob_ptr) 164 // vhdl->set_body (4,"reg_PACKET_ID_"+toString(i)+" <= in_EXECUTE_QUEUE_IN_PACKET_ID;"); 165 // vhdl->set_body (4, "reg_FLAGS_"+toString(i)+" <= in_EXECUTE_QUEUE_IN_FLAGS;"); 166 // vhdl->set_body (4, "reg_EXCEPTION_"+toString(i)+" <= in_EXECUTE_QUEUE_IN_EXCEPTION;"); 167 // vhdl->set_body (4, "reg_NO_SEQUENCE_"+toString(i)+" <= in_EXECUTE_QUEUE_IN_NO_SEQUENCE;"); 168 // vhdl->set_body (4, "reg_ADDRESS_"+toString(i)+" <= in_EXECUTE_QUEUE_IN_ADDRESS;"); 169 // vhdl->set_body (4, "reg_DATA_"+toString(i)+" <= in_EXECUTE_QUEUE_IN_DATA;"); 170 171 // vhdl->set_body (3, "else"); 172 // if (_param->_have_port_context_id) 173 // vhdl->set_body (4,"reg_CONTEXT_ID_"+toString(i)+" <= reg_CONTEXT_ID_"+toString(i+1)+";"); 174 // if (_param->_have_port_front_end_id) 175 // vhdl->set_body (4,"reg_FRONT_END_ID_"+toString(i)+" <= reg_FRONT_END_ID_"+toString(i+1)+";"); 176 // if (_param->_have_port_ooo_engine_id) 177 // vhdl->set_body (4,"reg_OOO_ENGINE_ID_"+toString(i)+" <= reg_OOO_ENGINE_ID_"+toString(i+1)+";"); 178 // if (_param->_have_port_rob_ptr) 179 // vhdl->set_body (4,"reg_PACKET_ID_"+toString(i)+" <= reg_PACKET_ID_"+toString(i+1)+";"); 180 // vhdl->set_body (4, "reg_FLAGS_"+toString(i)+" <= reg_FLAGS_"+toString(i+1)+";"); 181 // vhdl->set_body (4, "reg_EXCEPTION_"+toString(i)+" <= reg_EXCEPTION_"+toString(i+1)+";"); 182 // vhdl->set_body (4, "reg_NO_SEQUENCE_"+toString(i)+" <= reg_NO_SEQUENCE_"+toString(i+1)+";"); 183 // vhdl->set_body (4, "reg_ADDRESS_"+toString(i)+" <= reg_ADDRESS_"+toString(i+1)+";"); 184 // vhdl->set_body (4, "reg_DATA_"+toString(i)+" <= reg_DATA_"+toString(i+1)+";"); 185 186 // vhdl->set_body (3,"end if;"); 187 188 // vhdl->set_body (2,"end if;"); 189 // } 190 191 // vhdl->set_body (2,"if sig_WEN_"+toString(_param->_size_queue-1)+" = '1' then"); 192 // if (_param->_have_port_context_id) 193 // vhdl->set_body (3,"reg_CONTEXT_ID_"+toString(_param->_size_queue-1)+" <= in_EXECUTE_QUEUE_IN_CONTEXT_ID;"); 194 // if (_param->_have_port_front_end_id) 195 // vhdl->set_body (3,"reg_FRONT_END_ID_"+toString(_param->_size_queue-1)+" <= in_EXECUTE_QUEUE_IN_FRONT_END_ID;"); 196 // if (_param->_have_port_ooo_engine_id) 197 // vhdl->set_body (3,"reg_OOO_ENGINE_ID_"+toString(_param->_size_queue-1)+" <= in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID;"); 198 // if (_param->_have_port_rob_ptr) 199 // vhdl->set_body (3,"reg_PACKET_ID_"+toString(_param->_size_queue-1)+" <= in_EXECUTE_QUEUE_IN_PACKET_ID;"); 200 // vhdl->set_body (3, "reg_FLAGS_"+toString(_param->_size_queue-1)+" <= in_EXECUTE_QUEUE_IN_FLAGS;"); 201 // vhdl->set_body (3, "reg_EXCEPTION_"+toString(_param->_size_queue-1)+" <= in_EXECUTE_QUEUE_IN_EXCEPTION;"); 202 // vhdl->set_body (3, "reg_NO_SEQUENCE_"+toString(_param->_size_queue-1)+" <= in_EXECUTE_QUEUE_IN_NO_SEQUENCE;"); 203 // vhdl->set_body (3, "reg_ADDRESS_"+toString(_param->_size_queue-1)+" <= in_EXECUTE_QUEUE_IN_ADDRESS;"); 204 // vhdl->set_body (3, "reg_DATA_"+toString(_param->_size_queue-1)+" <= in_EXECUTE_QUEUE_IN_DATA;"); 205 // vhdl->set_body (2,"end if;"); 206 207 208 // vhdl->set_body (1,"end if;"); 209 // vhdl->set_body (0,"end process;"); 210 211 212 // vhdl->set_body (0,""); 213 // vhdl->set_body (0,""); 214 // vhdl->set_body (0,""); 215 216 // vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_VAL <= sig_OUT_VAL;"); 217 // vhdl->set_body (0,"out_EXECUTE_QUEUE_IN_ACK <= sig_IN_ACK;"); 218 // if (_param->_have_port_context_id) 219 // vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID <= reg_CONTEXT_ID_0;"); 220 // if (_param->_have_port_front_end_id) 221 // vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID <= reg_FRONT_END_ID_0;"); 222 // if (_param->_have_port_ooo_engine_id) 223 // vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID <= reg_OOO_ENGINE_ID_0;"); 224 // if (_param->_have_port_rob_ptr) 225 // vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_PACKET_ID <= reg_PACKET_ID_0;"); 226 // vhdl->set_body (0, "out_EXECUTE_QUEUE_OUT_FLAGS <= reg_FLAGS_0;"); 227 // vhdl->set_body (0, "out_EXECUTE_QUEUE_OUT_EXCEPTION <= reg_EXCEPTION_0;"); 228 // vhdl->set_body (0, "out_EXECUTE_QUEUE_OUT_NO_SEQUENCE <= reg_NO_SEQUENCE_0;"); 229 // vhdl->set_body (0, "out_EXECUTE_QUEUE_OUT_ADDRESS <= reg_ADDRESS_0;"); 230 // vhdl->set_body (0, "out_EXECUTE_QUEUE_OUT_DATA <= reg_DATA_0;"); 231 232 233 // vhdl->set_body (0,""); 234 235 // vhdl->set_body (0,"process (reg_CURRENT_STATE, in_EXECUTE_QUEUE_OUT_ACK, in_EXECUTE_QUEUE_IN_VAL, in_NRESET)"); 236 // vhdl->set_body (0,"begin"); 237 // vhdl->set_body (1,"if in_NRESET = '0' then"); 238 // vhdl->set_body (2,"sig_NEXT_STATE <= STATE_0;"); 239 // vhdl->set_body (1,"else"); 240 // vhdl->set_body (2,"case reg_CURRENT_STATE is"); 241 // for (uint32_t i = 0; i <_param->_size_queue + 1; i++) 242 // { 243 // vhdl->set_body (3,"when STATE_"+toString(i)+" =>"); 244 // if (i == 0) 245 // { 246 // vhdl->set_body (4,"if in_EXECUTE_QUEUE_IN_VAL = '1' then"); 247 // vhdl->set_body (5,"sig_NEXT_STATE <= reg_CURRENT_STATE ("+toString(_param->_size_queue-1)+" downto 0) & '0';"); 248 // vhdl->set_body (4,"else"); 249 // vhdl->set_body (5,"sig_NEXT_STATE <= reg_CURRENT_STATE;"); 250 // vhdl->set_body (4,"end if;"); 251 // continue; 252 // } 253 // if (i == (_param->_size_queue)) 254 // { 255 // vhdl->set_body (4,"if in_EXECUTE_QUEUE_OUT_ACK = '1' then"); 256 // vhdl->set_body (5,"sig_NEXT_STATE <= '0' & reg_CURRENT_STATE ("+toString(_param->_size_queue)+" downto 1);"); 257 // vhdl->set_body (4,"else"); 258 // vhdl->set_body (5,"sig_NEXT_STATE <= reg_CURRENT_STATE;"); 259 // vhdl->set_body (4,"end if;"); 260 // continue; 261 // } 262 // vhdl->set_body (4,"if in_EXECUTE_QUEUE_IN_VAL = '1' and in_EXECUTE_QUEUE_OUT_ACK = '0' then"); 263 // vhdl->set_body (5,"sig_NEXT_STATE <= reg_CURRENT_STATE ("+toString(_param->_size_queue-1)+" downto 0) & '0';"); 264 // vhdl->set_body (4,"elsif in_EXECUTE_QUEUE_IN_VAL = '0' and in_EXECUTE_QUEUE_OUT_ACK = '1' then"); 265 // vhdl->set_body (5,"sig_NEXT_STATE <= '0' & reg_CURRENT_STATE ("+toString(_param->_size_queue)+" downto 1);"); 266 // vhdl->set_body (4,"else"); 267 // vhdl->set_body (5,"sig_NEXT_STATE <= reg_CURRENT_STATE;"); 268 // vhdl->set_body (4,"end if;"); 269 // } 270 // vhdl->set_body (3,"when others => assert false report \"wrong state\" severity failure;"); 271 // vhdl->set_body (2,"end case;"); 272 // vhdl->set_body (1,"end if;"); 273 274 // vhdl->set_body (2,"case reg_CURRENT_STATE is"); 275 // for (uint32_t i = 0; i <_param->_size_queue + 1; i++) 276 // { 277 // vhdl->set_body (3,"when STATE_"+toString(i)+" =>"); 278 // if (i == 0) 279 // { 280 // vhdl->set_body (4,"sig_OUT_VAL <= '0';"); 281 // vhdl->set_body (4,"sig_IN_ACK <= '1';"); 282 // for (uint32_t j = 0; j <_param->_size_queue; j++) 283 // { 284 // if (i == j) 285 // { 286 // vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= '0';"); 287 // vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= in_EXECUTE_QUEUE_IN_VAL;"); 288 // } 289 // else 290 // { 291 // if (j < (_param->_size_queue - 1)) 292 // vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= '0';"); 293 // vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= '0';"); 294 // } 295 // } 296 // continue; 297 // } 298 // if (i == (_param->_size_queue)) 299 // { 300 // vhdl->set_body (4,"sig_OUT_VAL <= '1';"); 301 // vhdl->set_body (4,"sig_IN_ACK <= '0';"); 302 // for (uint32_t j = 0; j <_param->_size_queue; j++) 303 // { 304 // if (j == (i - 1)) 305 // { 306 // vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= '0';"); 307 // } 308 // else 309 // { 310 // vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= in_EXECUTE_QUEUE_OUT_ACK;"); 311 // vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= in_EXECUTE_QUEUE_OUT_ACK;"); 312 // } 313 // } 314 // continue; 315 // } 316 // vhdl->set_body (4,"sig_OUT_VAL <= '1';"); 317 // vhdl->set_body (4,"sig_IN_ACK <= '1';"); 318 // for (uint32_t j = 0; j <_param->_size_queue; j++) 319 // { 320 // if (j < (i - 1)) 321 // { 322 // vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= in_EXECUTE_QUEUE_OUT_ACK;"); 323 // vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= in_EXECUTE_QUEUE_OUT_ACK;"); 324 // } 325 // if (j == (i - 1)) 326 // { 327 // vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= '0';"); 328 // vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= in_EXECUTE_QUEUE_OUT_ACK and in_EXECUTE_QUEUE_IN_VAL;"); 329 // } 330 // if (j == i) 331 // { 332 // if (j < (_param->_size_queue - 1)) 333 // vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= '0';"); 334 // vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= in_EXECUTE_QUEUE_IN_VAL and not in_EXECUTE_QUEUE_OUT_ACK;"); 335 // } 336 // if (j > i) 337 // { 338 // if (j < (_param->_size_queue - 1)) 339 // vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= '0';"); 340 // vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= '0';"); 341 // } 342 // } 343 // } 344 // vhdl->set_body (3,"when others =>"); 345 // vhdl->set_body (2,"end case;"); 346 // vhdl->set_body (0,"end process;"); 142 vhdl->set_debug ("in_CLOCK = 'U'","GLOP1: Clock = 'U'"); 143 vhdl->set_debug ("in_CLOCK = 'X'","GLOP2: Clock = 'X'"); 144 vhdl->set_debug ("in_CLOCK = 'Z'","GLOP3: Clock = 'Z'"); 145 vhdl->set_debug ("in_CLOCK = 'W'","GLOP4: Clock = 'W'"); 146 vhdl->set_debug ("in_CLOCK = '1'","KANE : Clock = '1'"); 147 vhdl->set_debug ("in_CLOCK = '0'","SETH : Clock = '0'"); 347 148 348 149 log_printf(FUNC,Execute_queue,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Parameters.cpp
r111 r113 27 27 uint32_t size_general_data , 28 28 uint32_t size_special_data , 29 bool is_toplevel ) 29 bool is_toplevel ): 30 behavioural::Parameters("Execute_queue") 30 31 { 31 32 log_printf(FUNC,Execute_queue,FUNCTION,"Begin"); … … 57 58 copy(); 58 59 } 59 60 _size_internal_queue =61 (_size_context_id +62 _size_front_end_id +63 _size_ooo_engine_id +64 _size_rob_ptr +65 // _size_operation +66 // _size_type +67 _size_special_data +68 _size_exception +69 1 +70 _size_general_data +71 _size_general_data72 );73 60 74 61 log_printf(FUNC,Execute_queue,FUNCTION,"End"); … … 114 101 { 115 102 log_printf(FUNC,Execute_queue,FUNCTION,"Begin"); 103 104 _size_internal_queue = 105 (_size_context_id + 106 _size_front_end_id + 107 _size_ooo_engine_id + 108 _size_rob_ptr + 109 // _size_operation + 110 // _size_type + 111 _size_special_data + 112 _size_exception + 113 1 + 114 _size_general_data + 115 _size_general_data 116 ); 117 116 118 log_printf(FUNC,Execute_queue,FUNCTION,"End"); 117 119 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Makefile.defs
r81 r113 7 7 # 8 8 9 ENTITY = Write_unit 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/SelfTest/include/top.h
r111 r113 4 4 * [ Description ] 5 5 * 6 * Test " RegisterFile"6 * Test "Write_unit" 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 (2048*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/include/Write_unit.h" … … 28 28 using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit; 29 29 30 void test (string name, 31 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::Parameters * param); 30 SC_MODULE(top) 31 { 32 #ifdef SYSTEMC 33 private: sc_clock * in_CLOCK ; 34 private: sc_signal<Tcontrol_t> * in_NRESET; 35 36 private: sc_signal<Tcontrol_t > * in_WRITE_UNIT_IN_VAL ; 37 private: sc_signal<Tcontrol_t > * out_WRITE_UNIT_IN_ACK ; 38 private: sc_signal<Tcontext_t > * in_WRITE_UNIT_IN_CONTEXT_ID ; 39 private: sc_signal<Tcontext_t > * in_WRITE_UNIT_IN_FRONT_END_ID ; 40 private: sc_signal<Tcontext_t > * in_WRITE_UNIT_IN_OOO_ENGINE_ID; 41 private: sc_signal<Tpacket_t > * in_WRITE_UNIT_IN_PACKET_ID ; 42 //private: sc_signal<Toperation_t > * in_WRITE_UNIT_IN_OPERATION ; 43 //private: sc_signal<Ttype_t > * in_WRITE_UNIT_IN_TYPE ; 44 private: sc_signal<Tcontrol_t > * in_WRITE_UNIT_IN_WRITE_RD ; 45 private: sc_signal<Tgeneral_address_t> * in_WRITE_UNIT_IN_NUM_REG_RD ; 46 private: sc_signal<Tgeneral_data_t > * in_WRITE_UNIT_IN_DATA_RD ; 47 private: sc_signal<Tcontrol_t > * in_WRITE_UNIT_IN_WRITE_RE ; 48 private: sc_signal<Tspecial_address_t> * in_WRITE_UNIT_IN_NUM_REG_RE ; 49 private: sc_signal<Tspecial_data_t > * in_WRITE_UNIT_IN_DATA_RE ; 50 private: sc_signal<Texception_t > * in_WRITE_UNIT_IN_EXCEPTION ; 51 private: sc_signal<Tcontrol_t > * in_WRITE_UNIT_IN_NO_SEQUENCE ; 52 private: sc_signal<Taddress_t > * in_WRITE_UNIT_IN_ADDRESS ; 53 54 private: sc_signal<Tcontrol_t > * out_WRITE_UNIT_OUT_VAL ; 55 private: sc_signal<Tcontrol_t > * in_WRITE_UNIT_OUT_ACK ; 56 private: sc_signal<Tcontext_t > * out_WRITE_UNIT_OUT_CONTEXT_ID ; 57 private: sc_signal<Tcontext_t > * out_WRITE_UNIT_OUT_FRONT_END_ID ; 58 private: sc_signal<Tcontext_t > * out_WRITE_UNIT_OUT_OOO_ENGINE_ID; 59 private: sc_signal<Tpacket_t > * out_WRITE_UNIT_OUT_PACKET_ID ; 60 //private: sc_signal<Toperation_t > * out_WRITE_UNIT_OUT_OPERATION ; 61 //private: sc_signal<Ttype_t > * out_WRITE_UNIT_OUT_TYPE ; 62 private: sc_signal<Tspecial_data_t > * out_WRITE_UNIT_OUT_FLAGS ; 63 private: sc_signal<Texception_t > * out_WRITE_UNIT_OUT_EXCEPTION ; 64 private: sc_signal<Tcontrol_t > * out_WRITE_UNIT_OUT_NO_SEQUENCE ; 65 private: sc_signal<Taddress_t > * out_WRITE_UNIT_OUT_ADDRESS ; 66 private: sc_signal<Tgeneral_data_t > * out_WRITE_UNIT_OUT_DATA ; 67 68 private: sc_signal<Tcontrol_t > ** out_GPR_WRITE_VAL ; 69 private: sc_signal<Tcontrol_t > ** in_GPR_WRITE_ACK ; 70 private: sc_signal<Tcontext_t > ** out_GPR_WRITE_OOO_ENGINE_ID ; 71 private: sc_signal<Tgeneral_address_t> ** out_GPR_WRITE_NUM_REG ; 72 private: sc_signal<Tgeneral_data_t > ** out_GPR_WRITE_DATA ; 73 74 private: sc_signal<Tcontrol_t > ** out_SPR_WRITE_VAL ; 75 private: sc_signal<Tcontrol_t > ** in_SPR_WRITE_ACK ; 76 private: sc_signal<Tcontext_t > ** out_SPR_WRITE_OOO_ENGINE_ID ; 77 private: sc_signal<Tspecial_address_t> ** out_SPR_WRITE_NUM_REG ; 78 private: sc_signal<Tspecial_data_t > ** out_SPR_WRITE_DATA ; 79 80 private: sc_signal<Tcontext_t > ** out_BYPASS_WRITE_OOO_ENGINE_ID ; 81 private: sc_signal<Tcontrol_t > ** out_BYPASS_WRITE_GPR_VAL ; 82 private: sc_signal<Tgeneral_address_t> ** out_BYPASS_WRITE_GPR_NUM_REG ; // RD 83 private: sc_signal<Tgeneral_data_t > ** out_BYPASS_WRITE_GPR_DATA ; 84 private: sc_signal<Tcontrol_t > ** out_BYPASS_WRITE_SPR_VAL ; 85 private: sc_signal<Tspecial_address_t> ** out_BYPASS_WRITE_SPR_NUM_REG ; // RE 86 private: sc_signal<Tspecial_data_t > ** out_BYPASS_WRITE_SPR_DATA ; 87 #endif 88 89 private: std::string name; 90 private: Tusage_t _usage; 91 private: morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::Parameters * _param; 92 #ifdef STATISTICS 93 private: morpheo::behavioural::Parameters_Statistics * _param_stat; 94 #endif 95 private: Write_unit * component; 96 97 private: void usage 98 ( 99 #ifdef MTI_SYSTEMC 100 int argc, const char * const * argv 101 #else 102 int argc, char * argv[] 103 #endif 104 ); 105 private: void allocation (void); 106 private: void deallocation (void); 107 public : void test (void); 108 109 #ifdef MTI_SYSTEMC 110 SC_CTOR(top::top); 111 #else 112 public : top (sc_module_name module_name,int argc, char * argv[]); 113 #endif 114 public : ~top(void); 115 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/main.cpp
r88 r113 6 6 */ 7 7 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/include/t est.h"8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/include/top.h" 9 9 10 #define NB_PARAMS 11 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_write_queue (uint32_t)\n")); 17 err (_(" * size_execute_queue (uint32_t)\n")); 18 err (_(" * nb_context (uint32_t)\n")); 19 err (_(" * nb_front_end (uint32_t)\n")); 20 err (_(" * nb_ooo_engine (uint32_t)\n")); 21 err (_(" * nb_packet (uint32_t)\n")); 22 err (_(" * size_general_data (uint32_t)\n")); 23 err (_(" * nb_general_register (uint32_t)\n")); 24 err (_(" * size_special_data (uint32_t)\n")); 25 err (_(" * nb_special_register (uint32_t)\n")); 26 err (_(" * nb_bypass_write (uint32_t)\n")); 27 28 exit (1); 29 } 30 31 #ifndef SYSTEMC 32 int main (int argc, char * argv[]) 33 #else 34 int sc_main (int argc, char * argv[]) 35 #endif 36 { 37 if (argc != 2+NB_PARAMS) 38 usage (argc, argv); 39 40 uint32_t x = 1; 41 42 const string name = argv[x++]; 43 const uint32_t size_write_queue = atoi(argv[x++]); 44 const uint32_t size_execute_queue = atoi(argv[x++]); 45 const uint32_t nb_context = atoi(argv[x++]); 46 const uint32_t nb_front_end = atoi(argv[x++]); 47 const uint32_t nb_ooo_engine = atoi(argv[x++]); 48 const uint32_t nb_packet = atoi(argv[x++]); 49 const uint32_t size_general_data = atoi(argv[x++]); 50 const uint32_t nb_general_register = atoi(argv[x++]); 51 const uint32_t size_special_data = atoi(argv[x++]); 52 const uint32_t nb_special_register = atoi(argv[x++]); 53 const uint32_t nb_bypass_write = atoi(argv[x++]); 17 int _return = EXIT_SUCCESS; 54 18 55 19 try 56 20 { 57 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::Parameters 58 (size_write_queue , 59 size_execute_queue , 60 nb_context , 61 nb_front_end , 62 nb_ooo_engine , 63 nb_packet , 64 size_general_data , 65 nb_general_register, 66 size_special_data , 67 nb_special_register, 68 nb_bypass_write , 69 true // is_toplevel 70 ); 71 72 msg(_("%s"),param->print(1).c_str()); 73 74 test (name,param); 21 top * my_top = new top ("my_top",argc,argv); 22 23 my_top->test(); 24 25 delete my_top; 75 26 } 76 27 catch (morpheo::ErrorMorpheo & error) 77 28 { 78 msg (_("<%s> : %s.\n"),name.c_str(),error.what ());79 exit (EXIT_FAILURE);29 msgError(_("%s\n"),error.what ()); 30 _return = EXIT_FAILURE; 80 31 } 81 catch (...) 32 33 try 82 34 { 83 err (_("<%s> : This test must generate a error.\n"),name.c_str()); 84 exit (EXIT_FAILURE); 35 if (_return == EXIT_SUCCESS) 36 TEST_OK("Write_unit : no error"); 37 else 38 TEST_KO("Write_unit : 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; 85 44 } 86 45 87 return (EXIT_SUCCESS);46 return _return; 88 47 } 89 48 #endif -
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; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h
r97 r113 48 48 protected : const std::string _name; 49 49 protected : const Parameters * _param; 50 p rivate : constTusage_t _usage;50 public : Tusage_t _usage; 51 51 52 52 #ifdef STATISTICS -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters.cpp
r97 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_unit") 33 34 { 34 35 log_printf(FUNC,Write_unit,FUNCTION,"Begin"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit.cpp
r88 r113 36 36 ,_usage (usage) 37 37 { 38 log_ printf(FUNC,Write_unit,FUNCTION,"Begin");38 log_begin(Write_unit,FUNCTION); 39 39 40 #if DEBUG_Write_unit == true41 log_printf(INFO,Write_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_Write_unit == true 41 // log_printf(INFO,Write_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 log_printf(INFO,Write_unit,FUNCTION, "Allocation");46 log_printf(INFO,Write_unit,FUNCTION,_("<%s> Allocation"),_name.c_str()); 47 47 48 48 allocation ( … … 55 55 if (usage_is_set(_usage,USE_STATISTICS)) 56 56 { 57 log_printf(INFO,Write_unit,FUNCTION, "Allocation of statistics");57 log_printf(INFO,Write_unit,FUNCTION,_("<%s> Allocation of statistics"),_name.c_str()); 58 58 59 59 statistics_declaration(param_statistics); … … 65 65 { 66 66 // generate the vhdl 67 log_printf(INFO,Write_unit,FUNCTION, "Generate the vhdl");67 log_printf(INFO,Write_unit,FUNCTION,_("<%s> Generate the vhdl"),_name.c_str()); 68 68 69 69 vhdl(); … … 74 74 if (usage_is_set(_usage,USE_SYSTEMC)) 75 75 { 76 log_printf(INFO,Write_unit,FUNCTION, "Method - transition");76 log_printf(INFO,Write_unit,FUNCTION,_("<%s> Method - transition"),_name.c_str()); 77 77 78 78 SC_METHOD (transition); … … 86 86 #endif 87 87 } 88 log_ printf(FUNC,Write_unit,FUNCTION,"End");88 log_end(Write_unit,FUNCTION); 89 89 }; 90 90 … … 93 93 Write_unit::~Write_unit (void) 94 94 { 95 log_ printf(FUNC,Write_unit,FUNCTION,"Begin");95 log_begin(Write_unit,FUNCTION); 96 96 97 97 #ifdef STATISTICS 98 98 if (usage_is_set(_usage,USE_STATISTICS)) 99 99 { 100 log_printf(INFO,Write_unit,FUNCTION, "Generate Statistics file");100 log_printf(INFO,Write_unit,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str()); 101 101 102 102 delete _stat; … … 104 104 #endif 105 105 106 log_printf(INFO,Write_unit,FUNCTION, "Deallocation");106 log_printf(INFO,Write_unit,FUNCTION,_("<%s> Deallocation"),_name.c_str()); 107 107 deallocation (); 108 108 109 log_ printf(FUNC,Write_unit,FUNCTION,"End");109 log_end(Write_unit,FUNCTION); 110 110 }; 111 111 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp
r112 r113 34 34 35 35 Entity * entity = _component->set_entity (_name 36 , "Write_unit"36 ,_param->_type 37 37 #ifdef POSITION 38 38 ,COMBINATORY -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_statistics_declaration.cpp
r81 r113 25 25 26 26 _stat = new Stat (static_cast<std::string>(_name), 27 "Write_unit",27 _param->_type, 28 28 param_statistics); 29 29 30 _stat->add_stat(component_write_queue->_stat); 31 if (_param->_have_component_execute_queue) 30 if (usage_is_set(component_write_queue->_usage,USE_STATISTICS)) 31 _stat->add_stat(component_write_queue->_stat); 32 33 if (_param->_have_component_execute_queue and (usage_is_set(component_execute_queue->_usage,USE_STATISTICS))) 32 34 _stat->add_stat(component_execute_queue->_stat); 33 35
Note: See TracChangeset
for help on using the changeset viewer.