- Timestamp:
- Apr 14, 2009, 8:39:12 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_signal_internal.cpp
r81 r113 2 2 * $Id$ 3 3 * 4 * [ 4 * [ Description ] 5 5 * 6 6 */ … … 14 14 #define FUNCTION "Component::signal_internal" 15 15 Signal * Component::signal_internal (Entity * entity_productor, 16 Signal * signal_productor) 16 Signal * signal_productor, 17 Entity * entity_consumer, 18 Signal * signal_consumer) 17 19 { 18 20 log_printf(FUNC,Behavioural,FUNCTION,"Begin"); 19 21 22 bool productor_is_cosimulation = usage_is_set(entity_productor->get_usage(),USE_COSIMULATION); 23 bool consumer_is_cosimulation = usage_is_set(entity_consumer ->get_usage(),USE_COSIMULATION); 24 bool is_cosimulation = consumer_is_cosimulation or productor_is_cosimulation; 25 if (productor_is_cosimulation and consumer_is_cosimulation) 26 throw ERRORMORPHEO (FUNCTION,toString(_("Entity \"%s\" and Entity \"%s\" use both cosimulation. It's not supported.\n"),entity_productor->get_name().c_str(),entity_consumer->get_name().c_str())); 27 20 28 // create name of internal's signal 21 std::string str_entity = entity_productor->get_name(); 22 std::string str_signal = signal_productor->get_name(); 29 Entity * entity = (consumer_is_cosimulation)?entity_consumer:entity_productor; 30 Signal * signal = (consumer_is_cosimulation)?signal_consumer:signal_productor; 31 32 std::string str_entity = entity->get_name(); 33 std::string str_signal = signal->get_name(); 23 34 24 UpperCase (str_entity);25 UpperCase (str_signal);35 // UpperCase (str_entity); 36 // UpperCase (str_signal); 26 37 27 std::string name_internal = "internal_"+str_entity+"_"+str_signal;38 std::string name_internal = (is_cosimulation)?str_signal:("internal_"+str_entity+"_"+str_signal); 28 39 29 40 // test if internal's signal exist ... else, create … … 38 49 39 50 if (interface == NULL) 40 throw (ErrorMorpheo ("<Component::port_map> Component \""+_entity->get_name()+"\", doesn't have an interface \"\".")); 41 42 std::string signame = entity_productor->get_name()+"_"+signal_productor->get_name(); 43 51 throw ERRORMORPHEO (FUNCTION,toString(_("Component \"%s\", doesn't have an interface \"\".\n"),_entity->get_name().c_str())); 52 53 // std::string signame = entity->get_name()+"_"+signal->get_name(); 54 std::string signame = name_internal; 55 type_info_t type_info = signal->get_type_info(); 56 44 57 // Signal's creation 45 switch ( signal_productor->get_type_info())58 switch (type_info) 46 59 { 47 case BOOL : 48 { 49 interface->set_signal_internal<bool >(signame, signal_productor->get_size()); 50 break; 51 } 52 case UINT8_T : 53 { 54 interface->set_signal_internal<uint8_t >(signame, signal_productor->get_size()); 55 break; 56 } 57 case UINT16_T : 58 { 59 interface->set_signal_internal<uint16_t>(signame, signal_productor->get_size()); 60 break; 61 } 62 case UINT32_T : 63 { 64 interface->set_signal_internal<uint32_t>(signame, signal_productor->get_size()); 65 break; 66 } 67 case UINT64_T : 68 { 69 interface->set_signal_internal<uint64_t>(signame, signal_productor->get_size()); 70 break; 71 } 72 default : 73 throw (ErrorMorpheo ("Signal \""+name_internal+"\" : type unknow.")); 60 case BOOL : interface->set_signal_internal<bool >(signame, signal->get_size()); break; 61 case UINT8_T : interface->set_signal_internal<uint8_t >(signame, signal->get_size()); break; 62 case UINT16_T : interface->set_signal_internal<uint16_t>(signame, signal->get_size()); break; 63 case UINT32_T : interface->set_signal_internal<uint32_t>(signame, signal->get_size()); break; 64 case UINT64_T : interface->set_signal_internal<uint64_t>(signame, signal->get_size()); break; 65 default :throw (ErrorMorpheo ("Signal \""+name_internal+"\" : type unknow.")); 74 66 } 75 67
Note: See TracChangeset
for help on using the changeset viewer.