Ignore:
Timestamp:
Jul 5, 2007, 5:50:19 PM (17 years ago)
Author:
rosiere
Message:

Modification des classes d'encapsulation des interfaces :

  • gère les signaux à écrire dans le vhdl
  • les traces pour le testbench
  • la génération des vhdl structurelles

-> test sur la Pattern History Table

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/src
Files:
22 added
18 deleted
37 edited
11 moved

Legend:

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

    r38 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    76 */
    87
    9 #include "Behavioural/include/Position.h"
     8#include "Behavioural/include/Component.h"
    109
    1110namespace morpheo              {
    1211namespace behavioural          {
    1312
    14   Position::Position  (void)
     13  Component::Component  (void)
    1514  {
    16     log_printf(FUNC,Behavioural,"Position","Begin");
     15    log_printf(FUNC,Behavioural,"Component","Begin");
    1716    _list_component = new list<Entity *>;
    18     log_printf(FUNC,Behavioural,"Position","End");
     17    log_printf(FUNC,Behavioural,"Component","End");
    1918  };
    2019
    21   Position::Position  (const Position & position)
     20  Component::Component  (const Component & component)
    2221  {
    23     log_printf(FUNC,Behavioural,"Position (copy)","Begin");
    24     _entity         = position._entity        ;
    25     _list_component = position._list_component;
    26     log_printf(FUNC,Behavioural,"Position (copy)","End");
     22    log_printf(FUNC,Behavioural,"Component (copy)","Begin");
     23    _entity         = component._entity        ;
     24    _list_component = component._list_component;
     25    log_printf(FUNC,Behavioural,"Component (copy)","End");
    2726  };
    2827 
    29   Position::~Position ()
     28  Component::~Component ()
    3029  {
    31     log_printf(FUNC,Behavioural,"~Position","Begin");
     30    log_printf(FUNC,Behavioural,"~Component","Begin");
    3231    delete _entity;
    33 
    34 //     if (_list_component->empty()== false)
    35 //       {
    36 //      list<Entity *>::iterator i = _list_component->begin();
    37 
    38 //      while (i != _list_component->end())
    39 //        {
    40 //          delete (*i);
    41 //          ++i;
    42 //        }
    43 //       }
    44 
    4532    delete _list_component;
    46     log_printf(FUNC,Behavioural,"~Position","End");
     33    log_printf(FUNC,Behavioural,"~Component","End");
    4734  };
    4835 
     
    5037}; // end namespace behavioural         
    5138}; // end namespace morpheo             
    52 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_find_entity.cpp

    r31 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    76 */
    87
    9 #include "Behavioural/include/Position.h"
     8#include "Behavioural/include/Component.h"
    109
    1110namespace morpheo              {
    1211namespace behavioural          {
    1312
    14   Entity * Position::find_entity (string name)
     13  Entity * Component::find_entity (string name)
    1514  {
    1615
    17     if (_entity->_name == name)
     16    if (_entity->get_name() == name)
    1817      return _entity;
    1918    else
     
    2423          while (i != _list_component->end())
    2524            {
    26               if ((*i)->_name == name)
     25              if ((*i)->get_name() == name)
    2726                {
    2827                  return  *i;
     
    3837}; // end namespace behavioural         
    3938}; // end namespace morpheo             
    40 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_generate_file.cpp

    r31 r42  
    77 */
    88
    9 #include "Behavioural/include/Position.h"
     9#include "Behavioural/include/Component.h"
    1010
    1111namespace morpheo              {
    1212namespace behavioural          {
    1313
    14   void Position::generate_file (void)
     14  void Component::generate_file (void)
    1515  {
    1616    try
     
    2525    catch (ErrorMorpheo e)
    2626      {
    27         throw (ErrorMorpheo ("Position \""+_entity->_name+"\" have a bad mapping : "+e.what()));
     27        throw (ErrorMorpheo ("Component \""+_entity->get_name()+"\" have a bad mapping : "+e.what()));
    2828      }
    2929  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_get_component.cpp

    r31 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    76 */
    87
    9 #include "Behavioural/include/Position.h"
     8#include "Behavioural/include/Component.h"
    109
    1110namespace morpheo              {
    1211namespace behavioural          {
    1312
    14   string Position::get_component (void)
     13  string Component::get_component (void)
    1514  {
    1615    uint32_t               depth          = 0;
     
    4948}; // end namespace behavioural         
    5049}; // end namespace morpheo             
    51 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_get_entity.cpp

    r31 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    76 */
    87
    9 #include "Behavioural/include/Position.h"
     8#include "Behavioural/include/Component.h"
    109
    1110namespace morpheo              {
    1211namespace behavioural          {
    1312
    14   string Position::get_entity (void)
     13  string Component::get_entity (void)
    1514  {
    1615    ostringstream text;
     
    2120}; // end namespace behavioural         
    2221}; // end namespace morpheo             
    23 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp

    r31 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    76 */
    87
    9 #include "Behavioural/include/Position.h"
     8#include "Behavioural/include/Component.h"
    109
    1110namespace morpheo              {
    1211namespace behavioural          {
    1312
    14   void Position::port_map (string component1,
    15                            string signal1   ,
    16                            string component2,
    17                            string signal2   )
     13  void Component::port_map (string component_src ,
     14                            string port_src      ,
     15                            string component_dest,
     16                            string port_dest     )
    1817  {
    19     Entity * entity1 = find_entity(component1);
     18    string name_entity = _entity->get_name();
    2019
    21     if (entity1 == NULL)
    22       throw (ErrorMorpheo ("Position \""+_entity->_name+"\", port map with unknow component \""+component1+"\"."));
     20    // First entity
     21    Entity * entity_dest = find_entity(component_dest);
    2322
    24     bool is_top_level1 = _entity->_name == component1;
     23    if (entity_dest == NULL)
     24      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with unknow component \""+component_dest+"\"."));
    2525
    26     Interface * interface1 = find_interface (signal1, entity1);
     26    Signal * signal_dest = entity_dest->find_signal (port_dest);
    2727
    28     if (interface1 == NULL)
    29       throw (ErrorMorpheo ("Position \""+_entity->_name+"\", port map with component \""+component1+"\" and a unknow port \""+signal1+"\"."));
     28    if (signal_dest == NULL)
     29      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with component \""+component_dest+"\" and a unknow signal \""+port_dest+"\"."));
    3030
    31     Entity * entity2 = find_entity(component2);
     31    // Second entity
     32    Entity * entity_src = find_entity(component_src);
    3233
    33     if (entity2 == NULL)
    34       throw (ErrorMorpheo ("Position \""+_entity->_name+"\", port map with unknow component \""+component2+"\"."));
     34    if (entity_src == NULL)
     35      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with unknow component \""+component_src+"\"."));
    3536
    36     bool is_top_level2 = _entity->_name == component2;
     37    Signal * signal_src = entity_src->find_signal (port_src);
    3738
    38     Interface * interface2 = find_interface (signal2, entity2);
     39    if (signal_src == NULL)
     40      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with component \""+component_src+"\" and a unknow signal \""+port_src+"\"."));
    3941
    40     if (interface2 == NULL)
    41       throw (ErrorMorpheo ("Position \""+_entity->_name+"\", port map with component \""+component2+"\" and a unknow port \""+signal2+"\"."));
    42 
    43     // all is ok
    44     if (is_top_level1 == false)
    45       interface1->port_map(static_cast<void *>(entity2   ),
    46                            static_cast<void *>(interface2));
    47 
    48     if (is_top_level2 == false)
    49       interface2->port_map(static_cast<void *>(entity1   ),
    50                            static_cast<void *>(interface1));
    51    
     42    // If all is ok, mapping
     43    signal_src ->link   (signal_dest);
     44    signal_dest->mapping(signal_src );
    5245  };
    5346
    5447}; // end namespace behavioural         
    5548}; // end namespace morpheo             
    56 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_print.cpp

    r31 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    76 */
    87
    9 #include "Behavioural/include/Position.h"
     8#include "Behavioural/include/Component.h"
    109
    1110
     
    1413
    1514  ostream& operator<< (ostream& output_stream,
    16                        morpheo::behavioural::Position & x)
     15                       morpheo::behavioural::Component & x)
    1716  {
    1817    output_stream << x.get_entity    () << endl;
     
    2322}; // end namespace behavioural         
    2423}; // end namespace morpheo             
    25 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_set_component.cpp

    r38 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    76 */
    87
    9 #include "Behavioural/include/Position.h"
     8#include "Behavioural/include/Component.h"
    109
    1110namespace morpheo              {
    1211namespace behavioural          {
    1312
    14   void Position::set_component (Position * position,
    15                                 uint32_t   pos_x  ,
    16                                 uint32_t   pos_y  ,
    17                                 uint32_t   size_x ,
    18                                 uint32_t   size_y )
     13  void Component::set_component (Component * component
     14#ifdef POSITION
     15                                ,uint32_t   pos_x 
     16                                ,uint32_t   pos_y 
     17                                ,uint32_t   size_x
     18                                ,uint32_t   size_y
     19#endif
     20                                 )
    1921  {
    20     Entity * entity = position->_entity;
     22    Entity * entity = component->_entity;
    2123
    2224    _list_component->push_back(entity);
    2325
     26#ifdef POSITION
    2427    entity->mapping( pos_x, pos_y, size_x, size_y);
     28#endif
    2529  };
    2630
    2731}; // end namespace behavioural         
    2832}; // end namespace morpheo             
    29 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_set_entity.cpp

    r31 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    76 */
    87
    9 #include "Behavioural/include/Position.h"
     8#include "Behavioural/include/Component.h"
    109
    1110namespace morpheo              {
    1211namespace behavioural          {
    1312
    14   Entity * Position::set_entity (string        name   ,
    15                                         string        type   ,
    16                                         schema_t      schema )
     13  Entity * Component::set_entity (string        name   
     14                                  ,string        type   
     15#ifdef POSITION
     16                                  ,schema_t      schema
     17#endif
     18                                  )
    1719  {
    18     Entity * entity = new Entity (name   ,
    19                                   type   ,
    20                                   schema );
     20    Entity * entity = new Entity (name   
     21                                  ,type   
     22#ifdef POSITION
     23                                  ,schema
     24#endif
     25                                  );
    2126    _entity = entity;
    2227   
     
    2631}; // end namespace behavioural         
    2732}; // end namespace morpheo             
    28 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_toXML.cpp

    r31 r42  
    77 */
    88
    9 #include "Behavioural/include/Position.h"
     9#include "Behavioural/include/Component.h"
    1010
    1111namespace morpheo              {
    1212namespace behavioural          {
    1313
    14   XML Position::toXML (void)
     14  XML Component::toXML (void)
    1515  {
    16     XML xml (_entity->_name);
     16    XML xml (_entity->get_name());
    1717   
    1818    xml.balise_open         ("description");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity.cpp

    r41 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    1211namespace behavioural          {
    1312
    14   Entity::Entity  (string       name   ,
    15                    string       type   ,
    16                    schema_t     schema):
    17     _name       (name      ),
    18     _type       (type      ),
    19     _schema     (schema    )
     13  Entity::Entity  ( string       name   
     14                   ,string       type 
     15#ifdef POSITION
     16                   ,schema_t     schema
     17#endif
     18                    ):
     19     _name       (name      )
     20    ,_type       (type      )
     21#ifdef POSITION
     22    ,_schema     (schema    )
     23#endif
    2024  {
    2125    log_printf(FUNC,Behavioural,"Entity","Begin");
    2226    _interfaces = new Interfaces (name);
     27#ifdef POSITION
    2328    _is_map     = false;
     29#endif
    2430    log_printf(FUNC,Behavioural,"Entity","End");
    2531  };
    2632
    2733  Entity::Entity  (const Entity & entity):
    28     _name       (entity._name      ),
    29     _type       (entity._type      ),
    30     _schema     (entity._schema    )
     34     _name       (entity._name      )
     35    ,_type       (entity._type      )
     36#ifdef POSITION
     37    ,_schema     (entity._schema    )
     38#endif
    3139  {
    3240    log_printf(FUNC,Behavioural,"Entity (copy)","Begin");
     41    _interfaces = entity._interfaces;
     42#ifdef POSITION
    3343    _is_map     = entity._is_map    ;
    34     _interfaces = entity._interfaces;
    3544    _comment    = entity._comment   ;
     45#endif
    3646    log_printf(FUNC,Behavioural,"Entity (copy)","End");
    3747  };
     
    4353    log_printf(FUNC,Behavioural,"~Entity","End");
    4454  };
    45  
    4655
    4756}; // end namespace behavioural         
    4857}; // end namespace morpheo             
    49 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_find_interface.cpp

    r31 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    1918}; // end namespace behavioural         
    2019}; // end namespace morpheo             
    21 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_interfaces.cpp

    r31 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    2019  };
    2120
     21  Interfaces * Entity::get_interfaces_list (void)
     22  {
     23    return _interfaces;
     24  };
     25 
     26
    2227}; // end namespace behavioural         
    2328}; // end namespace morpheo             
    24 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_print.cpp

    r31 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    1615                       morpheo::behavioural::Entity & x)
    1716  {
     17#ifdef POSITION
    1818    output_stream << x._name + "\t"+x._type+"\t"+toString(x._schema) << endl;
    1919    output_stream << x.get_comment()    << endl;
     20#else
     21    output_stream << x._name + "\t"+x._type<< endl;
     22#endif
    2023    output_stream << x.get_interfaces() << endl;
    2124    return output_stream;
     
    2427}; // end namespace behavioural         
    2528}; // end namespace morpheo             
    26 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_set_interfaces.cpp

    r41 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    1918}; // end namespace behavioural         
    2019}; // end namespace morpheo             
    21 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp

    r41 r42  
    1111namespace behavioural          {
    1212
    13   Interface::Interface  (string                name         ,
    14                          direction_t           direction    ,
    15                          localisation_t        localisation ):
    16     _name         (name        ),
    17     _direction    (direction   ),
    18     _localisation (localisation)
     13  Interface::Interface  (string                name         
     14#ifdef POSITION
     15                         ,direction_t           direction   
     16                         ,localisation_t        localisation
     17#endif
     18                         ):
     19    _name         (name        )
     20#ifdef POSITION
     21    ,_direction    (direction   )
     22    ,_localisation (localisation)
     23#endif
    1924  {
    2025    log_printf(FUNC,Behavioural,"Interface","Begin");
    2126
    22     _comment       = "";
    2327    _list_signal   = new (list<Signal*>);
    2428
    2529#ifdef POSITION
     30    _comment       = "";
    2631    _is_map        = false;
    2732    _entity_map    = NULL;
     
    3742
    3843  Interface::Interface  (const Interface & interface):
    39     _name         (interface._name        ),
    40     _direction    (interface._direction   ),
    41     _localisation (interface._localisation)
     44    _name         (interface._name        )
     45#ifdef POSITION
     46    ,_direction    (interface._direction   )
     47    ,_localisation (interface._localisation)
     48#endif
    4249  {
    4350    log_printf(FUNC,Behavioural,"Interface (copy)","Begin");
    44     _comment       = interface._comment    ;
    4551    _list_signal   = interface._list_signal;
    4652#ifdef POSITION
     53    _comment       = interface._comment    ;
    4754    _is_map        = interface._is_map     ;
    4855    _entity_map    = interface._entity_map   ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo.cpp

    r41 r42  
    1111namespace behavioural          {
    1212
    13   Interface_fifo::Interface_fifo  (string         name        ,
    14                                    direction_t    direction   ,
    15                                    localisation_t localisation):
    16     Interface (name        ,
    17                direction   ,
    18                localisation)
     13  Interface_fifo::Interface_fifo  (string         name       
     14#ifdef POSITION
     15                                   ,direction_t    direction   
     16                                   ,localisation_t localisation
     17#endif
     18                                   ):
     19    Interface (name         
     20#ifdef POSITION
     21               ,direction   
     22               ,localisation
     23#endif
     24               )
    1925  {
    2026    log_printf(FUNC,Behavioural,"Interface_fifo","Begin");
     
    3238
    3339  Interface_fifo::Interface_fifo  (const Interface_fifo & interface_fifo) :
    34     Interface (interface_fifo._name        ,
    35                interface_fifo._direction   ,
    36                interface_fifo._localisation)
     40    Interface (interface_fifo._name         
     41#ifdef POSITION
     42               ,interface_fifo._direction   
     43               ,interface_fifo._localisation
     44#endif
     45               )
    3746  {
    3847    log_printf(FUNC,Behavioural,"Interface_fifo (copy)","Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_get_cycle.cpp

    r41 r42  
    1717    if (_test_exhaustive == true)
    1818      return Interface::get_cycle();
    19    
    20     return _list_cycle->back();
     19
     20    if (_list_cycle->empty() == true)
     21      return 0;
     22    else
     23      return _list_cycle->back();
    2124  };
    2225
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench_test.cpp

    r41 r42  
    1313
    1414  string Interface_fifo::testbench_test (Vhdl * & vhdl,
    15                                        string   counter_name)
     15                                         string   counter_name,
     16                                         string   reset_name  )
    1617  {
    1718    log_printf(FUNC,Behavioural,"testbench_test","Begin");
     
    1920   
    2021    if (_test_exhaustive == true)
    21       test_name = Interface::testbench_test(vhdl,counter_name);
     22      test_name = Interface::testbench_test(vhdl,counter_name,reset_name);
    2223    else
    2324      {
     
    2627        vhdl->set_body("");
    2728
    28         test_name    = testbench_test_name   (vhdl);
    29         string test_name_ok = testbench_test_ok     (vhdl);
     29               test_name        = testbench_test_name        (vhdl);
     30        string test_name_tmp    = test_name+"_tmp";
     31        string test_name_ok     = testbench_test_ok          (vhdl);
     32        string test_transaction = testbench_test_transaction (vhdl);
     33
     34        vhdl->set_signal(test_name_tmp,1);
    3035
    3136        if (_list_cycle->empty()== false)
    3237          {
    3338            vhdl->set_body ("with "+counter_name+" select");
    34             vhdl->set_body ("\t"+test_name+" <=");
     39            vhdl->set_body ("\t"+test_name_tmp+" <=");
    3540       
    3641            list<uint32_t>::iterator i = _list_cycle->begin();
     
    3843            while (i != _list_cycle->end())
    3944              {
    40                 vhdl->set_body ("\t"+test_name_ok+" when "+toString(*i)+",");
     45                vhdl->set_body ("\t"+test_transaction+" and "+test_name_ok+" when "+toString(*i)+",");
    4146                ++i;
    4247              }
    43             vhdl->set_body ("\t'1' when others;");
     48            vhdl->set_body ("\tnot "+test_transaction+" when others;");
    4449          }
     50        else
     51          vhdl->set_body (test_name_tmp+" <= not "+test_transaction+";");
     52       
     53        vhdl->set_body("");
     54        vhdl->set_body(test_name + " <= '1' when ("+reset_name+" = '0') else "+test_name_tmp+";");
     55
     56#ifdef VHDL_TESTBENCH_ASSERT
     57        if (_list_cycle->empty()== false)
     58          {
     59            vhdl->set_body("");
     60            vhdl->set_body("-- Assert ...");
     61            vhdl->set_body("");
     62
     63            uint32_t                 j = 0;
     64            list<uint32_t>::iterator i = _list_cycle->begin();
     65           
     66            while (i != _list_cycle->end())
     67              {
     68                vhdl->set_body("assert not ( ("+counter_name+" = "+toString(*i)+")) report \"***** <"+_name+"> interface's test number "+toString(j)+" *****\" severity NOTE;");
     69                j++;
     70                ++i;
     71              }
     72
     73            vhdl->set_body("");
     74          }
     75#endif
    4576      }
    4677
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench_transaction.cpp

    r40 r42  
     1#ifdef VHDL_TESTBENCH
    12/*
    23 * $Id$
     
    4849}; // end namespace behavioural         
    4950}; // end namespace morpheo             
     51#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_clock.cpp

    r41 r42  
    1313namespace behavioural          {
    1414
    15   string Interface::get_clock (void)
     15  Signal * Interface::get_clock (void)
    1616  {
    17     string clock = "";
     17    Signal * clock = NULL;
    1818   
    1919    if (not _list_signal->empty())
     
    2323        while (i != _list_signal->end())
    2424          {
    25             string str = (*i)->get_clock ();
     25            Signal * sig = (*i)->get_clock ();
    2626
    27             if (str != "")
     27            if (sig != NULL)
    2828              {
    29                 if (clock != "")
     29                if (clock != NULL)
    3030                  throw ErrorMorpheo ("<Interface.get_clock> : find too many clock.");
    31                 clock = str;
     31                clock = sig;
    3232              }
    3333            ++i;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_comment.cpp

    r38 r42  
     1#ifdef POSITION
    12/*
    23 * $Id$
     
    2223}; // end namespace behavioural         
    2324}; // end namespace morpheo             
     25#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp

    r41 r42  
    6969#endif
    7070
     71  list<Signal *> * Interface::get_signal_list (void)
     72    {
     73      return _list_signal;
     74    }
     75
    7176}; // end namespace behavioural         
    7277}; // end namespace morpheo             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_port_map.cpp

    r38 r42  
    1 #ifdef POSITION
    21/*
    32 * $Id$
     
    1312namespace behavioural          {
    1413
    15   void Interface::port_map (void * entity,
    16                             void * interface)
    17   {
    18     log_printf(FUNC,Behavioural,"port_map","Begin");
    19     _is_map        = true     ;
    20     _entity_map    = entity   ;
    21     _interface_map = interface;
    22     log_printf(FUNC,Behavioural,"port_map","End");
    23   };
     14//   void Interface::port_map (void * entity,
     15//                          void * interface)
     16//   {
     17//     log_printf(FUNC,Behavioural,"port_map","Begin");
     18// #ifdef POSITION
     19//     _is_map        = true     ;
     20//     _entity_map    = entity   ;
     21//     _interface_map = interface;
     22// #endif
     23//     log_printf(FUNC,Behavioural,"port_map","End");
     24//   };
    2425
    2526}; // end namespace behavioural         
    2627}; // end namespace morpheo             
    27 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp

    r41 r42  
    1616  {
    1717    log_printf(FUNC,Behavioural,"operator<<","Begin");
     18#ifdef POSITION
    1819    output_stream << x._name + "\t"+toString(x._localisation)+"\t"+toString(x._direction) << endl;
    1920    output_stream << x.get_comment() << endl;
     21#else
     22    output_stream << x._name << endl;
     23#endif
    2024    output_stream << x.get_signal () << endl;
    2125
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_comment.cpp

    r38 r42  
     1#ifdef POSITION
    12/*
    23 * $Id$
     
    2122}; // end namespace behavioural         
    2223}; // end namespace morpheo             
     24#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp

    r41 r42  
    2020    string signame = signal_name(_name, name, direction);
    2121
    22     Signal * sig = new Signal (signame      ,
    23                                direction    ,
    24                                size         ,
    25                                presence_port);
     22    Signal * sig = new Signal       (signame, direction, size, presence_port);
    2623
    2724    _list_signal->push_back (sig);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_testbench_body.cpp

    r41 r42  
    1414
    1515  void Interface::testbench_body (Vhdl * & vhdl,
    16                                   string   counter_name)
     16                                  string   counter_name,
     17                                  string   reset_name  )
    1718  {
    1819    log_printf(FUNC,Behavioural,"testbench_body","Begin");
     
    2829        while (i != _list_signal->end())
    2930          {
    30             (*i)->testbench_body(vhdl, counter_name);
     31            (*i)->testbench_body(vhdl, counter_name, reset_name);
    3132            ++i;
    3233          }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_testbench_test.cpp

    r41 r42  
    1414
    1515  string Interface::testbench_test (Vhdl * & vhdl,
    16                                     string   counter_name)
     16                                    string   counter_name,
     17                                    string   reset_name  )
    1718  {
    1819    log_printf(FUNC,Behavioural,"testbench_test","Begin");
     
    2526    string test_name_ok = testbench_test_ok     (vhdl);
    2627
    27     vhdl->set_body(test_name + " <= "+test_name_ok+";");
     28    vhdl->set_body(test_name + " <= '1' when ("+reset_name+" = '0') else "+test_name_ok+";");
    2829
    2930    log_printf(FUNC,Behavioural,"testbench_test","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_testbench_test_name.cpp

    r41 r42  
    4949  };
    5050
     51  string Interface::testbench_test_transaction_name (Vhdl * & vhdl)
     52  {
     53    log_printf(FUNC,Behavioural,"testbench_test_transaction_name","Begin");
     54
     55    string name;
     56
     57    name = "interface_";
     58    if (_name != "")
     59      name += _name + "_";
     60    name += "test_transaction";
     61
     62    vhdl->set_signal(name,1);
     63   
     64    log_printf(FUNC,Behavioural,"testbench_test_transaction_name","End");
     65
     66    return name;
     67  };
     68
    5169}; // end namespace behavioural         
    5270}; // end namespace morpheo             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_testbench_test_ok.cpp

    r41 r42  
    2020
    2121    vhdl->set_body(test_name + " <= '1' when true");
     22
    2223    // set all condition
    2324    if (_list_signal->empty()== false)
     
    3132          }
    3233      }
    33     vhdl->set_body("else '0';");
     34    vhdl->set_body("\telse '0';");
    3435    vhdl->set_body("");
    3536
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_toXML.cpp

    r38 r42  
     1#ifdef POSITION
    12/*
    23 * $Id$
     
    4344  };
    4445
    45 #ifdef POSITION
    4646  XML Interface::toXML_mapping (void)
    4747  {
     
    5555    xml.singleton_begin ("port_map");
    5656    xml.  attribut      ("name"     ,_name               );
    57     xml.  attribut      ("component",(static_cast<Entity    *>(_entity_map   ))->_name);
    58     xml.  attribut      ("port"     ,(static_cast<Interface *>(_interface_map))->_name);
     57    xml.  attribut      ("component",(static_cast<Entity    *>(_entity_map   ))->get_name());
     58    xml.  attribut      ("port"     ,(static_cast<Interface *>(_interface_map))->get_name());
    5959    xml.singleton_end   ();
    6060
     
    6363    return xml;
    6464  };
    65 #endif
    6665}; // end namespace behavioural         
    6766}; // end namespace morpheo             
     67#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_find_interface.cpp

    r40 r42  
    1515    if (_list_interface->empty()== false)
    1616      {
    17         list<Interface_fifo*>::iterator i     = _list_interface->begin();
     17        list<Interface_fifo*>::iterator i = _list_interface->begin();
    1818
    1919        while (i != _list_interface->end())
    2020          {
    21             if ((*i)->_name == name)
     21            if ((*i)->get_name() == name)
    2222              return (*i);
    2323            ++i;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_clock.cpp

    r41 r42  
    1313namespace behavioural          {
    1414 
    15   string Interfaces::get_clock (void)
     15  Signal * Interfaces::get_clock (void)
    1616  {
    17     string clock = "";
     17    Signal * clock = NULL;
    1818   
    1919    if (not _list_interface->empty())
    2020      {
    21         list<Interface_fifo*>::iterator i     = _list_interface->begin();
     21        list<Interface_fifo*>::iterator i = _list_interface->begin();
    2222       
    2323        while (i != _list_interface->end())
    2424          {
    25             string str = (*i)->get_clock ();
     25            Signal * sig = (*i)->get_clock ();
    2626
    27             if (str != "")
     27            if (sig != NULL)
    2828              {
    29                 if (clock != "")
     29                if (clock != NULL)
    3030                  throw ErrorMorpheo ("<Interfaces.get_clock> : find too many clock.");
    31                 clock = str;
     31                clock = sig;
    3232              }
    3333            ++i;
     
    3535      }
    3636
    37     if (clock == "")
     37    if (clock == NULL)
    3838      throw ErrorMorpheo ("<Interfaces.get_clock> : no clock find.");
    3939   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp

    r40 r42  
    4747  };
    4848
     49  list<Interface_fifo*>* Interfaces::get_interface_list (void)
     50  {
     51    return _list_interface;
     52  };
     53
    4954}; // end namespace behavioural         
    5055}; // end namespace morpheo             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp

    r40 r42  
    1111namespace behavioural          {
    1212
    13   Interface_fifo * Interfaces::set_interface (string         name        ,
    14                                          direction_t    direction   ,
    15                                          localisation_t localisation)
     13  Interface_fifo * Interfaces::set_interface (string         name       
     14#ifdef POSITION
     15                                              ,direction_t    direction   
     16                                              ,localisation_t localisation
     17#endif
     18                                              )
    1619  {
    17     Interface_fifo * interface = new Interface_fifo (name, direction, localisation);
     20    Interface_fifo * interface = new Interface_fifo (name
     21#ifdef POSITION
     22                                                     ,direction
     23                                                     ,localisation
     24#endif
     25                                                     );
    1826   
    1927    _list_interface->push_back (interface);
     
    2230  };
    2331
     32#ifdef POSITION
    2433  Interface_fifo * Interfaces::set_interface (string         name        ,
    2534                                         direction_t    direction   ,
     
    3342    return interface;
    3443  };
    35 
     44#endif
    3645
    3746}; // end namespace behavioural         
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench_body.cpp

    r41 r42  
    1414
    1515  string Interfaces::testbench_body (Vhdl * & vhdl,
    16                                    string   counter_name)
     16                                     string   counter_name,
     17                                     string   reset_name  )
    1718  {
    1819    log_printf(FUNC,Behavioural,"testbench_body","Begin");
     
    2829        while (i != _list_interface->end())
    2930          {
    30             (*i)->testbench_body(vhdl, counter_name);
    31             string str = (*i)->testbench_test(vhdl, counter_name);
     31            (*i)->testbench_body(vhdl, counter_name, reset_name);
     32            string str = (*i)->testbench_test(vhdl, counter_name, reset_name);
    3233
    3334            test += " and "+str;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench_generate_file.cpp

    r41 r42  
    1919    Vhdl   * vhdl        = new Vhdl(_name+"_Testbench");
    2020    string   counter     = "counter";
    21     string   clock       = this->get_clock();
     21    Signal * clock       = this->get_clock();
     22    Signal * reset       = this->get_reset();
     23    string   clock_name  = clock->get_name();
     24    string   reset_name  = reset->get_name();
    2225    uint32_t cycle       = this->get_cycle();
    2326
    24     vhdl      ->set_signal    (counter, "natural", "0");
    25     vhdl      ->set_signal    (clock  , 1        , 0); // modif Signal_set_signal
     27    vhdl->set_signal    (clock_name, 1, 0);
     28    vhdl->set_signal    (reset_name, 1, 0);
     29    vhdl->set_signal    (counter, "natural");
    2630    this->set_signal    (vhdl);
    2731
    2832    vhdl->set_body("");
    2933    vhdl->set_body("------------------------------------------------------");
    30     vhdl->set_body("-- Component");
     34    vhdl->set_body("-- Component - Intanciation");
    3135    vhdl->set_body("------------------------------------------------------");
    3236    vhdl->set_body("");
     
    5458    delete list_signal;
    5559
    56     vhdl->set_body("");
    57     vhdl->set_body("------------------------------------------------------");
    58     vhdl->set_body("-- Port's affectation");
    59     vhdl->set_body("------------------------------------------------------");
    60     vhdl->set_body("");
    61     string test_name = this->testbench_body(vhdl,counter);
     60    string test_name = this->testbench_body(vhdl,counter, reset_name);
    6261
    6362    vhdl->set_body("");
    6463    vhdl->set_body("------------------------------------------------------");
    65     vhdl->set_body("-- process clock");
     64    vhdl->set_body("-- reset");
    6665    vhdl->set_body("------------------------------------------------------");
    6766    vhdl->set_body("");
    68     vhdl->set_body(clock+" <= not "+clock+" after 50 ns;");
     67    vhdl->set_body("-- if the systemC simulate have multiple reset, we make the last");
     68    vhdl->set_body(reset_name+" <= '1' after 150 ns;");   
     69
    6970    vhdl->set_body("");
    70     vhdl->set_body("process ("+clock+")");
     71    vhdl->set_body("------------------------------------------------------");
     72    vhdl->set_body("-- process clock_name");
     73    vhdl->set_body("------------------------------------------------------");
     74    vhdl->set_body("");
     75    vhdl->set_body(clock_name+" <= not "+clock_name+" after 50 ns;");
     76    vhdl->set_body("");
     77    vhdl->set_body("process ("+clock_name+")");
    7178    vhdl->set_body("begin");
    72     vhdl->set_body("\tif "+clock+"'event and "+clock+" = '1' then");
    73     vhdl->set_body("\t\t"+counter+" <= "+counter+"+1;");
     79    vhdl->set_body("\tif ("+clock_name+"'event and "+clock_name+" = '1') then");
    7480    vhdl->set_body("");
    75     vhdl->set_body("\t\tassert     ("+test_name+" = '1') report \"Test KO\" severity FAILURE;");
    76     vhdl->set_body("\t\tassert not ("+counter+" = "+toString(cycle)+") report \"Test OK\" severity FAILURE;");
     81    vhdl->set_body("\t\tif ("+reset_name+" = '0') then");
    7782    vhdl->set_body("");
     83    vhdl->set_body("\t\t\t"+counter+" <= "+toString(reset->get_reset_cycle(true))+";");
     84    vhdl->set_body("");
     85    vhdl->set_body("\t\telse");
     86    vhdl->set_body("");
     87    vhdl->set_body("\t\t\t"+counter+" <= "+counter+"+1;");
     88    vhdl->set_body("");
     89    vhdl->set_body("\t\t\tassert not ("+counter+" = "+toString(cycle)+") report \"Test OK\" severity FAILURE;");
     90    vhdl->set_body("\t\t\tassert not ("+test_name+" = '0') report \"Test KO\" severity FAILURE;");
     91
     92#ifdef VHDL_TESTBENCH_ASSERT
     93    vhdl->set_body("\t\t\t-- Assert ...");
     94    for (uint32_t cpt=0; cpt<=cycle; cpt++)
     95      vhdl->set_body("\t\t\tassert not ("+counter+" = "+toString(cpt)+") report \"===== Test number "+toString(cpt)+" =====\" severity NOTE;");
     96#endif
     97
     98    vhdl->set_body("");
     99    vhdl->set_body("\t\tend if;");
    78100    vhdl->set_body("\tend if;");
    79101    vhdl->set_body("end process;");
    80102
    81     vhdl->generate_file();
     103
     104    vhdl->generate_file(false,true);
    82105
    83106    delete vhdl;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp

    r40 r42  
     1#ifdef POSITION
    12/*
    23 * $Id$
     
    2930  };
    3031
    31 #ifdef POSITION
    3232  XML Interfaces::toXML_mapping (void)
    3333  {
     
    4747    return xml;
    4848  };
    49 #endif
    5049}; // end namespace behavioural         
    5150}; // end namespace morpheo             
     51#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp

    r40 r42  
    1818    _direction     (direction    ),
    1919    _size          (size         ),
    20     _presence_port (presence_port)
     20    _presence_port ((direction==INTERNAL)?PORT_VHDL_NO_TESTBENCH_NO:presence_port)
    2121  {
    2222    log_printf(FUNC,Behavioural,"Signal","Begin");
     23    _is_allocate   = false;
     24    _is_map        = false;
     25    _signal        = NULL;
     26    _sc_signal     = NULL;
     27    _sc_signal_map = NULL;
     28    _type_info     = UNKNOW;
    2329#ifdef VHDL_TESTBENCH
    24     _signal     = NULL;
    25     _type_info  = UNKNOW;
    26     _list_value = new list<string>;
     30    _list_value    = new list<string>;
    2731#endif
    2832    log_printf(FUNC,Behavioural,"Signal","End");
     
    3640  {
    3741    log_printf(FUNC,Behavioural,"Signal (copy)","Begin");
     42    _is_allocate= signal._is_allocate;
     43    _is_map     = signal._is_map    ;
     44    _sc_signal     = signal._sc_signal    ;
     45    _sc_signal_map = signal._sc_signal_map;
     46    _type_info  = signal._type_info ;
    3847#ifdef VHDL_TESTBENCH
    39     _signal     = signal._signal    ;
    40     _type_info  = signal._type_info ;
    4148    _list_value = signal._list_value;
    4249#endif
     
    4754  {
    4855    log_printf(FUNC,Behavioural,"~Signal","Begin");
     56
     57//     if (_is_allocate == true)
     58//       switch (_direction)
     59//      {
     60//      case IN :
     61//        {
     62//          switch (_type_info)
     63//            {
     64//            case BOOL     : {delete (static_cast<sc_in  <bool    > *>(_sc_signal)); break;}
     65//            case UINT8_T  : {delete (static_cast<sc_in  <uint8_t > *>(_sc_signal)); break;}
     66//            case UINT16_T : {delete (static_cast<sc_in  <uint16_t> *>(_sc_signal)); break;}
     67//            case UINT32_T : {delete (static_cast<sc_in  <uint32_t> *>(_sc_signal)); break;}
     68//            case UINT64_T : {delete (static_cast<sc_in  <uint64_t> *>(_sc_signal)); break;}
     69//            default       : {throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow.")); break;}
     70//            }
     71//          break;
     72//        }
     73//      case OUT :
     74//        {
     75//          switch (_type_info)
     76//            {
     77//            case BOOL     : {delete (static_cast<sc_out <bool    > *>(_sc_signal)); break;}
     78//            case UINT8_T  : {delete (static_cast<sc_out <uint8_t > *>(_sc_signal)); break;}
     79//            case UINT16_T : {delete (static_cast<sc_out <uint16_t> *>(_sc_signal)); break;}
     80//            case UINT32_T : {delete (static_cast<sc_out <uint32_t> *>(_sc_signal)); break;}
     81//            case UINT64_T : {delete (static_cast<sc_out <uint64_t> *>(_sc_signal)); break;}
     82//            default       : {throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow.")); break;}
     83//            }
     84//          break;
     85//        }
     86//      case INTERNAL :
     87//        {
     88//          switch (_type_info)
     89//            {
     90//            case BOOL     : {delete (static_cast<sc_sc_signal <bool    > *>(_sc_signal)); break;}
     91//            case UINT8_T  : {delete (static_cast<sc_sc_signal <uint8_t > *>(_sc_signal)); break;}
     92//            case UINT16_T : {delete (static_cast<sc_sc_signal <uint16_t> *>(_sc_signal)); break;}
     93//            case UINT32_T : {delete (static_cast<sc_sc_signal <uint32_t> *>(_sc_signal)); break;}
     94//            case UINT64_T : {delete (static_cast<sc_sc_signal <uint64_t> *>(_sc_signal)); break;}
     95//            default       : {throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow.")); break;}
     96//            }
     97//          break;
     98//        }
     99//      default       : {throw (ErrorMorpheo ("Signal \""+_name+"\" : direction unknow.")); break;}
     100//      }
     101
    49102#ifdef VHDL_TESTBENCH
    50103    delete _list_value;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_clock.cpp

    r41 r42  
    1313namespace behavioural          {
    1414
    15   string Signal::get_clock (void)
     15  Signal * Signal::get_clock (void)
    1616  {
    1717    if ((_presence_port == CLOCK_VHDL_YES) or
    1818        (_presence_port == CLOCK_VHDL_NO ))
    19       return _name;
     19      return this;
    2020    else
    21       return "";
     21      return NULL;
    2222  };
    2323
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_name_vhdl.cpp

    r41 r42  
    1 #ifdef VHDL_TESTBENCH
     1#  ifdef VHDL_TESTBENCH
    22/*
    33 * $Id$
     
    1717    if ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
    1818        (_presence_port == PORT_VHDL_YES_TESTBENCH_NO ) or
    19         (_presence_port == CLOCK_VHDL_YES))
     19        (_presence_port == CLOCK_VHDL_YES)              or
     20        (_presence_port == RESET_VHDL_YES))
    2021      list_signal->push_back(_name);
    2122  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp

    r40 r42  
    2121                  << toString(x._presence_port);
    2222
    23 // #ifdef VHDL_TESTBENCH
    24 //     if (x._list_value->empty()== false)
    25 //       {
    26 //      list<string>::iterator i = x._list_value->begin();
    27 
    28 //      while (i != x._list_value->end())
    29 //        {
    30 //          output_stream << "\n\t" << *i ;
    31 //          ++i;
    32 //        }
    33 //       }
    34 // #endif
    35 
    3623    log_printf(FUNC,Behavioural,"operator<<","End");
    3724
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_set_port.cpp

    r41 r42  
    1919    if ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
    2020        (_presence_port == PORT_VHDL_YES_TESTBENCH_NO ) or
    21         (_presence_port == CLOCK_VHDL_YES))
     21        (_presence_port == CLOCK_VHDL_YES)              or
     22        (_presence_port == RESET_VHDL_YES))
    2223      vhdl->set_port (_name,_direction,_size);
    2324
     
    3031    log_printf(FUNC,Behavioural,"set_signal (Vhdl)","Begin");
    3132   
    32     if ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
    33         (_presence_port == PORT_VHDL_NO_TESTBENCH_YES )//  or
    34 //      (_presence_port == CLOCK_VHDL_YES) or
    35 //      (_presence_port == CLOCK_VHDL_NO )
     33    if (   (_presence_port == PORT_VHDL_YES_TESTBENCH_YES)
     34        or (_presence_port == PORT_VHDL_NO_TESTBENCH_YES )
     35//      or (_presence_port == CLOCK_VHDL_YES)
     36//      or (_presence_port == CLOCK_VHDL_NO )
     37//      or (_presence_port == RESET_VHDL_YES)
     38//      or (_presence_port == RESET_VHDL_NO )
    3639        )
    3740      vhdl->set_signal (_name        ,_size);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_testbench.cpp

    r41 r42  
    1818
    1919    if ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
    20         (_presence_port == PORT_VHDL_NO_TESTBENCH_YES ))
     20        (_presence_port == PORT_VHDL_NO_TESTBENCH_YES ) or
     21        (_presence_port == RESET_VHDL_YES             ) or
     22        (_presence_port == RESET_VHDL_NO              ) )
    2123      {
    2224        string str;
     
    3234                case IN    : {str =             toBase2 (value); break;}
    3335                case OUT   : {str =             toBase2 (value); break;}
    34 //              case INOUT : {break;}
     36                default    : {break;}
    3537                }
    3638              break;
     
    4446                case IN    : {str =             toBase2 (value,_size); break;}
    4547                case OUT   : {str =             toBase2 (value,_size); break;}
    46 //              case INOUT : {break;}
     48                default    : {break;}
    4749                }
    4850              break;
     
    5658                case IN    : {str =             toBase2 (value,_size); break;}
    5759                case OUT   : {str =             toBase2 (value,_size); break;}
    58 //              case INOUT : {break;}           
     60                default    : {break;}           
    5961                }
    6062              break;
     
    6870                case IN    : {str =             toBase2 (value,_size); break;}
    6971                case OUT   : {str =             toBase2 (value,_size); break;}
    70 //              case INOUT : {break;}
     72                default    : {break;}
    7173                }
    7274              break;
     
    8082                case IN    : {str =             toBase2 (value,_size); break;}
    8183                case OUT   : {str =             toBase2 (value,_size); break;}
    82 //              case INOUT : {break;}
     84                default    : {break;}
    8385                }
    8486              break;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_testbench_body.cpp

    r41 r42  
    1313
    1414  void Signal::testbench_body (Vhdl * & vhdl,
    15                                string   counter_name)
     15                               string   counter_name,
     16                               string   reset_name  )
    1617  {
    1718    log_printf(FUNC,Behavioural,"testbench_body","Begin");
    1819
    1920    // _list_value is empty if we don't trace
    20     if (_list_value->empty()== false)
    21       {
    22         string separator;
    23         if (_size == 1)
    24           separator = "\'";
    25         else
    26           separator = "\"";
    2721
    28         string signame = (_direction==OUT)?(_name+"_test"):_name;
    29 
    30         vhdl->set_body ("");
    31         vhdl->set_body ("with "+counter_name+" select");
    32         vhdl->set_body ("\t"+signame+" <=");
    33        
    34         uint32_t cpt = 0;
    35         list<string>::iterator i = _list_value->begin();
    36 
    37         while (i != _list_value->end())
    38           {
    39             list<string>::iterator j = i;
    40 
    41             ++i;
    42            
    43             if (i != _list_value->end())
     22    if ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
     23        (_presence_port == PORT_VHDL_NO_TESTBENCH_YES ))
     24      if (_list_value->empty()== false)
     25        {
     26          string separator;
     27          if (_size == 1)
     28            separator = "\'";
     29          else
     30            separator = "\"";
     31         
     32          string signame = (_direction==OUT)?(_name+"_test"):_name;
     33         
     34          vhdl->set_body ("");
     35          vhdl->set_body ("with "+counter_name+" select");
     36          vhdl->set_body ("\t"+signame+" <=");
     37         
     38          uint32_t cpt = 0;
     39          list<string>::iterator i = _list_value->begin();
     40         
     41          while (i != _list_value->end())
     42            {
     43              list<string>::iterator j = i;
     44             
     45              ++i;
     46             
    4447              vhdl->set_body ("\t"+separator+*j+separator+" when "+toString(cpt++)+",");
    45             else
    46               vhdl->set_body ("\t"+separator+*j+separator+" when others;");
    47           }
    48       }
    49 
     48            }
     49         
     50          if (_size == 1)
     51            vhdl->set_body ("\t'0' when others;");
     52          else
     53            vhdl->set_body ("\t(others => '0') when others;");
     54        }
     55 
    5056    log_printf(FUNC,Behavioural,"testbench_body","End");
    5157  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_testbench_test_ok.cpp

    r41 r42  
    1818
    1919    if (_direction == OUT)
    20       vhdl->set_body ("and "+_name+" = "+_name+"_test");
     20      vhdl->set_body ("\tand "+_name+" = "+_name+"_test");
    2121
    2222    log_printf(FUNC,Behavioural,"testbench_test_ok","End");
Note: See TracChangeset for help on using the changeset viewer.