Changeset 113 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_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/Execute_queue
- Files:
-
- 7 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/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 };
Note: See TracChangeset
for help on using the changeset viewer.