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/include
Files:
1 deleted
8 edited
1 moved

Legend:

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

    r38 r42  
    1 #ifdef POSITION
    2 #ifndef morpheo_behavioural_Position_h
    3 #define morpheo_behavioural_Position_h
     1#ifndef morpheo_behavioural_Component_h
     2#define morpheo_behavioural_Component_h
    43
    54/*
     
    1312#include <iostream>
    1413#include <list>
     14#include <map>
     15#ifdef VHDL
     16#include "Behavioural/include/Vhdl.h"
     17#endif
     18//#include "Behavioural/include/Description.h"
    1519#include "Behavioural/include/Entity.h"
    1620#include "Include/ToString.h"
     
    2226namespace behavioural          {
    2327
    24   class Position
     28  class Component
    2529  {
    2630    // -----[ fields ]----------------------------------------------------
     
    2933   
    3034    // -----[ methods ]---------------------------------------------------
    31   public    :                       Position          (void);
    32   public    :                       Position          (const Position & position);
    33   public    :                       ~Position         ();
     35  public    :                       Component         (void);
     36  public    :                       Component         (const Component & component);
     37  public    :                       ~Component        ();
    3438
    35   public    : Entity *              set_entity        (string        name   ,
    36                                                        string        type   ,
    37                                                        schema_t      schema );
     39  public    : Entity *              set_entity        (string        name   
     40                                                       ,string        type 
     41#ifdef POSITION
     42                                                       ,schema_t      schema
     43#endif
     44                                                       );
    3845  private   : string                get_entity        (void);
    3946
    40   public    : void                  set_component     (Position * position,
    41                                                        uint32_t   pos_x  ,
    42                                                        uint32_t   pos_y  ,
    43                                                        uint32_t   size_x ,
    44                                                        uint32_t   size_y );
     47  public    : void                  set_component     (Component * component
     48#ifdef POSITION
     49                                                       ,uint32_t   pos_x 
     50                                                       ,uint32_t   pos_y 
     51                                                       ,uint32_t   size_x
     52                                                       ,uint32_t   size_y
     53#endif
     54                                                       );
    4555
    4656  private   : string                get_component     (void);
    47 
    48   public    : void                  port_map          (string component1,
    49                                                        string signal1   ,
    50                                                        string component2,
    51                                                        string signal2   );
    52 
    53   public    : XML                   toXML             (void);
    5457
    5558  private   : Entity *              find_entity       (string name);
     
    5760                                                       Entity * entity);
    5861
     62#ifdef VHDL
     63  public    : void                  vhdl_instance     (Vhdl * & vhdl);
     64#endif
     65
     66  public    : void                  port_map          (string component_src ,
     67                                                       string port_src      ,
     68                                                       string component_dest,
     69                                                       string port_dest    );
     70
     71#ifdef POSITION
     72  public    : void                  interface_map     (string component_src ,
     73                                                       string port_dest,
     74                                                       string component_dest,
     75                                                       string port_dest     );
     76
     77  public    : XML                   toXML             (void);
     78
    5979  public    : void                  generate_file     (void);
    60    
     80#endif   
    6181  public    : friend ostream&       operator<<        (ostream& output_stream,
    62                                                        morpheo::behavioural::Position & x);
     82                                                       morpheo::behavioural::Component & x);
    6383  };
    6484
     
    6787
    6888#endif
    69 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h

    r41 r42  
    77namespace behavioural          {
    88
    9 typedef enum { IN, OUT } direction_t;
    10   //typedef enum { IN, OUT, INOUT } direction_t;
     9typedef enum {INTERNAL, IN, OUT } direction_t;
     10//typedef enum { IN, OUT, INOUT } direction_t;
    1111
    1212}; // end namespace behavioural         
     
    1616    switch (x)
    1717      {
    18       case morpheo::behavioural::IN    : return "in"    ; break;
    19       case morpheo::behavioural::OUT   : return "out"   ; break;
    20 //    case morpheo::behavioural::INOUT : return "inout" ; break;
     18      case morpheo::behavioural::INTERNAL : return "internal" ; break;
     19      case morpheo::behavioural::IN       : return "in"       ; break;
     20      case morpheo::behavioural::OUT      : return "out"      ; break;
     21//    case morpheo::behavioural::INOUT    : return "inout"    ; break;
    2122      default    : return ""      ; break;
    2223      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Entity.h

    r38 r42  
    1 #ifdef POSITION
    21#ifndef morpheo_behavioural_Entity_h
    32#define morpheo_behavioural_Entity_h
     
    1312#include <iostream>
    1413#include <list>
     14//#include "Behavioural/include/Description.h"
    1515#include "Behavioural/include/Interfaces.h"
    1616#include "Behavioural/include/Schema.h"
     
    2626  class Entity
    2727  {
    28     friend class Position;
    29     friend class Interface;
    30 
    3128    // -----[ fields ]----------------------------------------------------
    3229  private   : const string          _name         ;
    3330  private   : const string          _type         ;
     31#ifdef POSITION
    3432  private   : const schema_t        _schema       ;
     33#endif
    3534  private   : Interfaces          * _interfaces   ;
     35
     36#ifdef POSITION
    3637  private   : string                _comment      ;
    3738
     
    4142  private   :       uint32_t        _map_pos_x    ;
    4243  private   :       uint32_t        _map_pos_y    ;
     44#endif
    4345
    4446    // -----[ methods ]---------------------------------------------------
    45   public    :                       Entity            (string        name   ,
    46                                                        string        type   ,
    47                                                        schema_t      schema );
     47  public    :                       Entity            ( string        name   
     48                                                       ,string        type   
     49#ifdef POSITION
     50                                                       ,schema_t      schema
     51#endif
     52                                                        );
    4853  public    :                        Entity           (const Entity & entity);
    4954  public    :                       ~Entity           ();
    5055
     56  public    : string                get_name          (void);
     57  public    : string                get_type          (void);
     58
     59#ifdef POSITION
    5160  public    : void                  set_comment       (string comment);
    5261  private   : string                get_comment       (void          );
    53 
     62#endif
    5463  public    : Interfaces *          set_interfaces    (void);
    5564  private   : string                get_interfaces    (void);
     65  public    : Interfaces *          get_interfaces_list(void);
    5666
    5767  public    : Interface  *          find_interface    (string name);
     68  public    : Signal     *          find_signal       (string name);
     69  public    : bool                  find_signal       (Signal * signal);
    5870
     71#ifdef POSITION
    5972  public    : void                  mapping           (uint32_t pos_x,
    6073                                                       uint32_t pos_y,
    6174                                                       uint32_t size_x ,
    6275                                                       uint32_t size_y );
     76#endif
    6377
     78#ifdef POSITION
    6479  public    : XML                   toXML             (void);
    6580  public    : XML                   toXML_mapping     (void);
    66 
     81#endif
    6782  public    : friend ostream&       operator<<        (ostream& output_stream,
    6883                                                       morpheo::behavioural::Entity & x);
     
    7388
    7489#endif
    75 #endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Environnement.h

    r40 r42  
    1010#  error "To have the vhdl's test bench, you must set flags VHDL"
    1111#endif
     12
     13#if (defined(VHDL_TESTBENCH_ASSERT) and not defined(VHDL_TESTBENCH))
     14#  error "To have an assert in vhdl's test bench, you must set flags VHDL_TESTBENCH"
     15#endif
     16
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h

    r41 r42  
    3333  class Interface
    3434  {
    35     friend class Interfaces;
    36 
    3735    // -----[ fields ]----------------------------------------------------
    3836  protected : const string          _name         ;
     37#ifdef POSITION
    3938  protected : const direction_t     _direction    ;
    4039  protected : const localisation_t  _localisation ;
    4140  protected :       string          _comment      ;
     41#endif
    4242
    4343  protected : list<Signal *>      * _list_signal  ;
     
    5454   
    5555    // -----[ methods ]---------------------------------------------------
    56   public    :                       Interface            (string         name        ,
    57                                                           direction_t    direction   ,
    58                                                           localisation_t localisation);
     56  public    :                       Interface            (string         name       
     57#ifdef POSITION
     58                                                          ,direction_t    direction   
     59                                                          ,localisation_t localisation
     60#endif
     61                                                          );
    5962
    6063  public    :                       Interface            (const Interface    & interface);
    6164  public    :                       ~Interface           ();
    6265
     66  public    : string                get_name             ();
     67
     68#ifdef POSITION
    6369  public    : void                  set_comment          (string comment);
    6470  protected : string                get_comment          (void          );
     71#endif
    6572
    6673  protected : string                signal_name          (string      name_interface,
    6774                                                          string      name_signal   ,
    6875                                                          direction_t direction     );
     76
     77  public    : Signal *              find_signal          (string name);
     78  public    : bool                  find_signal          (Signal * signal);
    6979
    7080  protected : string                get_signal           (void);
     
    7383                                                          uint32_t        size     ,
    7484                                                          presence_port_t presence_port = PORT_VHDL_YES_TESTBENCH_YES);
     85  public    : list<Signal *>      * get_signal_list      (void);
    7586
    7687#ifdef SYSTEMC
     
    8596        throw ErrorMorpheo ("Signal \""+name+"\" is a clock, bad presence_port.");
    8697
    87       Signal    * sig    = set_signal (name, IN , size, presence_port);
    88       sc_in_clk * signal = new sc_in_clk (sig->_name.c_str());
     98      Signal    * sig  = set_signal (name, IN , size, presence_port);
     99      sc_in_clk * port = new sc_in_clk (sig->_name.c_str());
     100
     101      sig->alloc<bool> (static_cast<void *>(port));
    89102
    90103      log_printf(FUNC,Behavioural,"set_signal_clk","End");
    91104
    92       return signal;
     105      return port;
    93106    };
    94107
     
    104117        throw ErrorMorpheo ("Signal \""+name+"\" is not a clock, bad presence_port.");
    105118
    106       Signal * sig = set_signal (name, IN , size, presence_port);
     119      Signal    * sig = set_signal (name, IN , size, presence_port);
    107120      sc_in <T> * port = new sc_in <T> (sig->_name.c_str());
    108 #ifdef VHDL_TESTBENCH
     121
    109122      sig->alloc<T> (static_cast<void *>(port));
    110 #endif
    111123
    112124      log_printf(FUNC,Behavioural,"set_signal_in","End");
     
    128140      Signal * sig = set_signal (name, OUT , size, presence_port);
    129141      sc_out <T> * port = new sc_out <T> (sig->_name.c_str());
    130 #ifdef VHDL_TESTBENCH
     142
    131143      sig->alloc<T> (static_cast<void *>(port));
    132 #endif
    133144
    134145      log_printf(FUNC,Behavioural,"set_signal_out","End");
     
    136147      return port;
    137148    };
     149
     150  public    : template <typename T>
     151              sc_signal <T> *       set_signal_internal (string   name,
     152                                                         uint32_t size)
     153    {
     154      log_printf(FUNC,Behavioural,"set_signal_internal","Begin");
     155
     156      Signal * sig = set_signal (name, INTERNAL , size, PORT_VHDL_NO_TESTBENCH_NO);
     157      sc_signal <T> * port = new sc_signal <T> (sig->_name.c_str());
     158
     159      sig->alloc<T> (static_cast<void *>(port));
     160
     161      log_printf(FUNC,Behavioural,"set_signal_internal","End");
     162
     163      return port;
     164    };
     165
    138166#endif
    139167
    140168#ifdef VHDL
    141169  public    : void                  set_port             (Vhdl * & vhdl);
    142 #ifdef VHDL_TESTBENCH
     170#  ifdef VHDL_TESTBENCH
    143171  public    : void                  set_signal           (Vhdl * & vhdl);
    144172  public    : void                  get_signal           (list<string> * & list_signal);
    145 #endif
     173#  endif
    146174#endif
    147175#ifdef VHDL_TESTBENCH
    148176  public    : uint32_t              get_cycle            (void);
    149   public    : string                get_clock            (void);
     177  public    : Signal *              get_clock            (void);
     178  public    : Signal *              get_reset            (void);
    150179
    151180  public    : void                  testbench            (void);
    152181  public    : void                  testbench_cycle      (void);
    153182  public    : void                  testbench_body       (Vhdl           * & vhdl          ,
    154                                                           string             counter_name  );
     183                                                          string             counter_name  ,
     184                                                          string             reset_name    );
    155185  public    : string                testbench_test       (Vhdl           * & vhdl        ,
    156                                                           string             counter_name);
     186                                                          string             counter_name,
     187                                                          string             reset_name);
    157188  public    : string                testbench_test_ok    (Vhdl           * & vhdl        );
    158189  protected : string                testbench_test_name   (Vhdl           * & vhdl);
    159190  protected : string                testbench_test_ok_name(Vhdl           * & vhdl);
    160 
    161 #endif
    162 
    163 #ifdef POSITION
    164   public    : void                  port_map             (void * entity,
     191  protected : string                testbench_test_transaction_name(Vhdl           * & vhdl);
     192#endif
     193
     194#ifdef POSITION
     195  public    : void                  interface_map        (void * entity,
    165196                                                          void * interface);
    166 #endif
    167 
    168197  public    : XML                   toXML                (void);
    169 #ifdef POSITION
    170198  public    : XML                   toXML_mapping        (void);
    171199#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface_fifo.h

    r41 r42  
    2424  private   : bool                  _test_exhaustive;
    2525  private   : list<uint32_t>      * _list_cycle   ;
    26 
    2726#endif
    2827
    2928   // -----[ methods ]---------------------------------------------------
    30   public    :                       Interface_fifo       (string         name        ,
    31                                                           direction_t    direction   ,
    32                                                           localisation_t localisation);
     29  public    :                       Interface_fifo       (string         name       
     30#ifdef POSITION
     31                                                          ,direction_t    direction   
     32                                                          ,localisation_t localisation
     33#endif
     34                                                          );
    3335   
    3436  public    :                       Interface_fifo       (const Interface_fifo & interface_fifo);
     
    7981  public    : bool                  testbench_transaction(void);
    8082  public    : void                  testbench_cycle      (void);
    81   public    : string                testbench_test       (Vhdl           * & vhdl        ,
    82                                                           string             counter_name);
     83  public    : string                testbench_test       (Vhdl   * & vhdl        ,
     84                                                          string     counter_name,
     85                                                          string     reset_name  );
     86
     87  public    : string                testbench_test_transaction (Vhdl * & vhdl);
    8388#endif
    8489  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h

    r41 r42  
    3535  public    :                       ~Interfaces           ();
    3636
    37   public    : Interface_fifo *      set_interface         (string         name        ,
    38                                                            direction_t    direction   ,
    39                                                            localisation_t localisation);
     37  public    : Interface_fifo *      set_interface         (string         name       
     38#ifdef POSITION
     39                                                           ,direction_t    direction   
     40                                                           ,localisation_t localisation
     41#endif
     42                                                           );
     43#ifdef POSITION
    4044  public    : Interface_fifo *      set_interface         (string         name        ,
    4145                                                           direction_t    direction   ,
    4246                                                           localisation_t localisation,
    4347                                                           string         comment     );
     48#endif
    4449  private   : string                get_interface         (void);
     50  public    :list<Interface_fifo*>* get_interface_list    (void);
    4551
    4652#ifdef VHDL
     
    5359#ifdef VHDL_TESTBENCH
    5460  private   : uint32_t              get_cycle             (void);
    55   private   : string                get_clock             (void);
     61  private   : Signal *              get_clock             (void);
     62  private   : Signal *              get_reset             (void);
    5663
    5764  private   : void                  testbench_generate_file (void);
    5865  public    : void                  testbench             (void);
    5966  private   : string                testbench_body        (Vhdl           * & vhdl          ,
    60                                                            string             counter_name  );
     67                                                           string             counter_name  ,
     68                                                           string             reset_name    );
    6169#endif
    6270
    6371  public    : Interface_fifo  *     find_interface        (string name);
     72  public    : Signal          *     find_signal           (string name);
     73  public    : bool                  find_signal           (Signal * signal);
    6474
     75#ifdef POSITION
    6576  public    : XML                   toXML                 (void);
    66 #ifdef POSITION
    6777  public    : XML                   toXML_mapping         (void);
    6878#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Localisation.h

    r31 r42  
     1#ifdef POSITION
    12#ifndef morpheo_behavioural_Localisation_h
    23#define morpheo_behavioural_Localisation_h
     
    2627
    2728#endif
     29#endif
  • 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.