Ignore:
Timestamp:
Jul 17, 2007, 4:47:56 PM (17 years ago)
Author:
rosiere
Message:

Modification des classes d'encapsulation des interfaces.
Stable sur tous les composants actuels

File:
1 edited

Legend:

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

    r43 r44  
    2020    uint32_t             cpt = 0;
    2121    map<Signal *,string> tab;
     22
     23    // buffer all output
     24    {
     25      vhdl->set_body ("------------------------------------------------------");
     26      vhdl->set_body ("-- Output's Buffer");
     27      vhdl->set_body ("------------------------------------------------------");
     28
     29      // for each interface
     30      list<Interface_fifo *>         * list_interface = (_entity)->get_interfaces_list()->get_interface_list();
     31      list<Interface_fifo *>::iterator j              = list_interface->begin();
     32      if (not list_interface->empty())
     33        {
     34          while (j != list_interface->end())
     35            {
     36              // for each signal
     37              list<Signal *>         * list_signal = (*j)->get_signal_list();
     38              list<Signal *>::iterator k           = list_signal->begin();
     39              if (not list_signal->empty())
     40                {
     41                  while (k != list_signal->end())
     42                    {
     43                      Signal * signal = (*k);
     44
     45                      // test if is connect with external interface or with an another component AND if this port is mapped.
     46                      if ( (signal->get_direction() == OUT) and
     47                           (signal->get_connect_from_signal () != NULL) )
     48                        {
     49                          // Create name
     50                          string signal_name = "signal_"+toString(cpt++);
     51                         
     52                          tab [signal                           ] = signal_name;
     53                          tab [signal->get_connect_from_signal()] = signal_name;
     54                         
     55                          // Add a new signal and the affectation
     56                          vhdl->set_signal (signal_name, signal->get_size());
     57                          vhdl->set_body   (signal->get_name()+" <= "+signal_name+";");
     58                        }
     59                      else
     60                        {
     61                          tab [signal                   ] = signal->get_name();
     62                        }
     63                      ++k;
     64                    }
     65                }
     66              ++j;
     67            }
     68        }
     69      vhdl->set_body ("");
     70      vhdl->set_body ("------------------------------------------------------");
     71      vhdl->set_body ("");
     72    }
    2273
    2374    vhdl->set_library_work (_entity->get_name() + "_Pack");
     
    50101                            // test if is connect with external interface or with an another component.
    51102                            Signal * signal_src  = (*k);
     103
    52104                            if (signal_src->presence_vhdl () == true)
    53105                              {
    54                                 Signal * signal_dest = (*k)->get_signal_link();
     106                                Signal * signal_dest = signal_src->get_connect_to_signal();
    55107                                string   name_src    = signal_src->get_name();
    56108                                string   name_dest;
    57109                               
    58                                 if (_entity->find_signal(signal_dest) == false)
    59                                   {
     110//                              // Test if destination signal is a interface port ?
     111//                              if (_entity->find_signal(signal_dest) == false)
     112//                                {
    60113                                    // find if signal is already link
    61                                     map<Signal *,string>::iterator it = tab.find(signal_src);
    62                                     if (tab.find(signal_src) == tab.end())
     114                                    map<Signal *,string>::iterator it = tab.find(signal_dest);
     115                                    if (tab.find(signal_dest) == tab.end())
    63116                                      {
    64117                                        // Create name
     
    72125                                      }
    73126                                    else
    74                                       name_dest = (*it).second;
    75                                   }
    76                                 else
    77                                   name_dest = signal_dest->get_name();
     127                                      {
     128                                        // find !!!!
     129                                        name_dest = (*it).second;
     130                                        tab [signal_src ] = name_dest;
     131                                      }
     132//                                }
     133//                              else
     134//                                {
     135//                                  cout << "Kane à dit : " << signal_dest->get_name() << endl;
     136//                                  // Test if output
     137//                                  if (signal_dest->get_direction() == OUT)
     138//                                    {
     139//                                      // Take buffer's signal
     140//                                      map<Signal *,string>::iterator it = tab.find(signal_dest);
     141//                                      name_dest        = (*it).second;
     142
     143//                                      cout << " * OUT - name : " << name_dest << endl;
     144//                                    }
     145//                                  else
     146//                                    {
     147//                                      name_dest = signal_dest->get_name();
     148//                                      cout << " * IN  - name : " << name_dest << endl;
     149//                                    }                             
     150//                                }
    78151                               
    79152                                vhdl->set_body_component_port_map (list_port_map, name_src, name_dest);
Note: See TracChangeset for help on using the changeset viewer.