Ignore:
Timestamp:
Apr 14, 2009, 8:39:12 PM (15 years ago)
Author:
rosiere
Message:

1) Add modelsim simulation systemC
2) Modelsim cosimulation systemC / VHDL is not finish !!!! (cf execute_queue and write_unit)
3) Add multi architecture
5) Add template for comparator, multiplier and divider
6) Change Message
Warning) Various test macro have change, many selftest can't compile

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_signal_internal.cpp

    r81 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
     
    1414#define FUNCTION "Component::signal_internal"
    1515  Signal * Component::signal_internal (Entity * entity_productor,
    16                                        Signal * signal_productor)
     16                                       Signal * signal_productor,
     17                                       Entity * entity_consumer,
     18                                       Signal * signal_consumer)
    1719  {
    1820    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    1921
     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   
    2028    // 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();
    2334   
    24     UpperCase (str_entity);
    25     UpperCase (str_signal);
     35//     UpperCase (str_entity);
     36//     UpperCase (str_signal);
    2637   
    27     std::string name_internal = "internal_"+str_entity+"_"+str_signal;
     38    std::string name_internal = (is_cosimulation)?str_signal:("internal_"+str_entity+"_"+str_signal);
    2839   
    2940    // test if internal's signal exist ... else, create
     
    3849       
    3950        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
    4457        // Signal's creation
    45         switch (signal_productor->get_type_info())
     58        switch (type_info)
    4659          {
    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."));
    7466          }
    7567       
Note: See TracChangeset for help on using the changeset viewer.