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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h

    r41 r42  
    4444                PORT_VHDL_NO_TESTBENCH_NO  ,
    4545                CLOCK_VHDL_YES             ,
    46                 CLOCK_VHDL_NO              } presence_port_t;
     46                CLOCK_VHDL_NO              ,
     47                RESET_VHDL_YES             ,
     48                RESET_VHDL_NO              } presence_port_t;
    4749
    4850  class Signal
     
    5658  private   : const presence_port_t _presence_port;
    5759
     60  private   : Signal *              _signal       ;
     61  private   : bool                  _is_allocate  ;
     62  private   : void *                _sc_signal    ;
     63  private   : bool                  _is_map       ;
     64  private   : void *                _sc_signal_map;
     65  private   : type_info_t           _type_info    ;
     66
    5867#ifdef VHDL_TESTBENCH
    59   private   : void *                _signal       ;
    60   private   : type_info_t           _type_info    ;
    61 
    6268  private   : list<string>        * _list_value   ;
    6369#endif
     
    7177  public    :                   ~Signal         ();
    7278
    73 #ifdef VHDL_TESTBENCH
     79  public    : string            get_name        (void);
     80  public    : uint32_t          get_size        (void);
     81  public    : Signal *          get_signal_link (void);
     82
     83  public    : bool              presence_vhdl      (void);
     84  public    : bool              presence_testbench (void);
     85
     86  public    : void              mapping         (Signal * signal);
     87  public    : void              link            (Signal * signal);
     88
     89#ifdef SYSTEMC         
    7490  public    :template <typename T>
    7591             T                  read (void)
     
    88104      switch (_type_info)
    89105        {
    90         case BOOL     : return (static_cast<sc_in  <bool    > *>(_signal)->read());
    91         case UINT8_T  : return (static_cast<sc_in  <uint8_t > *>(_signal)->read());
    92         case UINT16_T : return (static_cast<sc_in  <uint16_t> *>(_signal)->read());
    93         case UINT32_T : return (static_cast<sc_in  <uint32_t> *>(_signal)->read());
    94         case UINT64_T : return (static_cast<sc_in  <uint64_t> *>(_signal)->read());
     106        case BOOL     : return (static_cast<sc_in  <bool    > *>(_sc_signal_map)->read());
     107        case UINT8_T  : return (static_cast<sc_in  <uint8_t > *>(_sc_signal_map)->read());
     108        case UINT16_T : return (static_cast<sc_in  <uint16_t> *>(_sc_signal_map)->read());
     109        case UINT32_T : return (static_cast<sc_in  <uint32_t> *>(_sc_signal_map)->read());
     110        case UINT64_T : return (static_cast<sc_in  <uint64_t> *>(_sc_signal_map)->read());
    95111        default       : throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow."));
    96112        }
     
    102118      switch (_type_info)
    103119        {
    104         case BOOL     : return (static_cast<sc_out <bool    > *>(_signal)->read());
    105         case UINT8_T  : return (static_cast<sc_out <uint8_t > *>(_signal)->read());
    106         case UINT16_T : return (static_cast<sc_out <uint16_t> *>(_signal)->read());
    107         case UINT32_T : return (static_cast<sc_out <uint32_t> *>(_signal)->read());
    108         case UINT64_T : return (static_cast<sc_out <uint64_t> *>(_signal)->read());
     120        case BOOL     : return (static_cast<sc_out <bool    > *>(_sc_signal_map)->read());
     121        case UINT8_T  : return (static_cast<sc_out <uint8_t > *>(_sc_signal_map)->read());
     122        case UINT16_T : return (static_cast<sc_out <uint16_t> *>(_sc_signal_map)->read());
     123        case UINT32_T : return (static_cast<sc_out <uint32_t> *>(_sc_signal_map)->read());
     124        case UINT64_T : return (static_cast<sc_out <uint64_t> *>(_sc_signal_map)->read());
    109125        default       : throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow."));
    110126        }
     
    117133        throw (ErrorMorpheo ("Signal \""+_name+"\" : already allocate."));
    118134
    119       _signal    = port;
     135      _is_allocate = true;
     136      _sc_signal      = port;
     137      _sc_signal_map  = port;
    120138
    121139      if (typeid(T) == typeid(bool    ))
     
    136154        _type_info = UNKNOW;
    137155    }
    138 
    139   public    : void              testbench        (void);
    140   public    : void              testbench_body   (Vhdl           * & vhdl          ,
    141                                                   string             counter_name  );
    142   public    : void              testbench_test_ok(Vhdl           * & vhdl          );
    143 #endif
     156#endif
     157
    144158#ifdef VHDL
    145159  public    : void              set_port        (Vhdl * & vhdl);
    146160#  ifdef VHDL_TESTBENCH
    147   public    : string            get_clock       (void);
     161  public    : Signal *          get_clock       (void);
     162  public    : Signal *          get_reset       (void);
     163  public    : uint32_t          get_reset_cycle (bool active_low);
     164
    148165  public    : void              set_signal      (Vhdl * & vhdl);
    149166  public    : void              get_name_vhdl   (list<string> * & list_signal);
     167
     168  public    : void              testbench        (void);
     169  public    : void              testbench_body   (Vhdl           * & vhdl          ,
     170                                                  string             counter_name  ,
     171                                                  string             reset_name    );
     172  public    : void              testbench_test_ok(Vhdl           * & vhdl          );
    150173#  endif
    151174#endif
     
    162185    switch (x)
    163186      {
    164       case morpheo::behavioural::PORT_VHDL_YES_TESTBENCH_YES : return "Port is in VHDL's model and TestBench's model" ; break;
    165       case morpheo::behavioural::PORT_VHDL_YES_TESTBENCH_NO  : return "Port is in VHDL's model                      " ; break;
    166       case morpheo::behavioural::PORT_VHDL_NO_TESTBENCH_YES  : return "Port is in                  TestBench's model" ; break;
    167       case morpheo::behavioural::PORT_VHDL_NO_TESTBENCH_NO   : return "Port is in none model                        " ; break;
     187      case morpheo::behavioural::PORT_VHDL_YES_TESTBENCH_YES : return "Port  is in VHDL's model and TestBench's model" ; break;
     188      case morpheo::behavioural::PORT_VHDL_YES_TESTBENCH_NO  : return "Port  is in VHDL's model                      " ; break;
     189      case morpheo::behavioural::PORT_VHDL_NO_TESTBENCH_YES  : return "Port  is in                  TestBench's model" ; break;
     190      case morpheo::behavioural::PORT_VHDL_NO_TESTBENCH_NO   : return "Port  is in none model                        " ; break;
     191      case morpheo::behavioural::CLOCK_VHDL_YES              : return "Clock is in VHDL's model                     " ; break;
     192      case morpheo::behavioural::CLOCK_VHDL_NO               : return "Clock is not in VHDL's model                 " ; break;
     193      case morpheo::behavioural::RESET_VHDL_YES              : return "Reset is in VHDL's model                     " ; break;
     194      case morpheo::behavioural::RESET_VHDL_NO               : return "Reset is not in VHDL's model                 " ; break;
    168195      default                                                : return "";                                               break;
    169196      }
Note: See TracChangeset for help on using the changeset viewer.