source: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp @ 43

Last change on this file since 43 was 42, checked in by rosiere, 17 years ago

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 size: 3.8 KB
Line 
1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/include/Signal.h"
9
10namespace morpheo              {
11namespace behavioural          {
12
13  Signal::Signal  (string          name         ,
14                   direction_t     direction    ,
15                   uint32_t        size         ,
16                   presence_port_t presence_port):
17    _name          (name         ),
18    _direction     (direction    ),
19    _size          (size         ),
20    _presence_port ((direction==INTERNAL)?PORT_VHDL_NO_TESTBENCH_NO:presence_port)
21  {
22    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;
29#ifdef VHDL_TESTBENCH
30    _list_value    = new list<string>;
31#endif
32    log_printf(FUNC,Behavioural,"Signal","End");
33  };
34
35  Signal::Signal  (const Signal & signal):
36    _name          (signal._name         ),
37    _direction     (signal._direction    ),
38    _size          (signal._size         ),
39    _presence_port (signal._presence_port)
40  {
41    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 ;
47#ifdef VHDL_TESTBENCH
48    _list_value = signal._list_value;
49#endif
50    log_printf(FUNC,Behavioural,"Signal (copy)","End");
51  };
52
53  Signal::~Signal ()
54  {
55    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
102#ifdef VHDL_TESTBENCH
103    delete _list_value;
104#endif
105    log_printf(FUNC,Behavioural,"~Signal","End");
106  };
107
108}; // end namespace behavioural         
109}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.