source: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_testbench.cpp @ 40

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

Interface et Signal, c'est deux classes enregistres la valeurs des signaux à chaque cycle ... étape préparatoire avan le changement de la classe Vhdl_Testbench

File size: 2.7 KB
Line 
1#ifdef VHDL_TESTBENCH
2/*
3 * $Id$
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/include/Signal.h"
10
11namespace morpheo              {
12namespace behavioural          {
13
14  // à optimisé -> pointeur de fonction afin d'éviter le test et le switch
15  void Signal::testbench (Vhdl_Testbench * & vhdl_testbench)
16  {
17    log_printf(FUNC,Behavioural,"testbench","Begin");
18
19    if ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
20        (_presence_port == PORT_VHDL_NO_TESTBENCH_YES))
21      {
22        string str;
23
24        switch (_type_info)
25          {
26          case BOOL     : 
27            {
28              bool value = read <bool> ();
29
30              switch (_direction)
31                {
32                case IN    : {vhdl_testbench->add_input (value);
33                              str =             toBase2 (value); break;}
34                case OUT   : {vhdl_testbench->add_output(value); 
35                              str =             toBase2 (value); break;}
36                case INOUT : {break;}
37                }
38              break;
39            }
40          case UINT8_T  :
41            {
42              uint8_t value = read <uint8_t> ();
43
44              switch (_direction)
45                {
46                case IN    : {vhdl_testbench->add_input (value); 
47                              str =             toBase2 (value,_size); break;}
48                case OUT   : {vhdl_testbench->add_output(value); 
49                              str =             toBase2 (value,_size); break;}
50                case INOUT : {break;}
51                }
52              break;
53            }
54          case UINT16_T :
55            {
56              uint16_t value = read <uint16_t> ();
57
58              switch (_direction)
59                {
60                case IN    : {vhdl_testbench->add_input (value);
61                              str =             toBase2 (value,_size); break;}
62                case OUT   : {vhdl_testbench->add_output(value);
63                              str =             toBase2 (value,_size); break;}
64                case INOUT : {break;}           
65                }
66              break;
67            }
68          case UINT32_T :
69            {
70              uint32_t value = read <uint32_t> ();
71
72              switch (_direction)
73                {
74                case IN    : {vhdl_testbench->add_input (value); 
75                              str =             toBase2 (value,_size); break;}
76                case OUT   : {vhdl_testbench->add_output(value); 
77                              str =             toBase2 (value,_size); break;}
78                case INOUT : {break;}
79                }
80              break;
81            }
82          case UINT64_T :
83            {
84              uint64_t value = read <uint64_t> ();
85
86              switch (_direction)
87                {
88                case IN    : {vhdl_testbench->add_input (value); 
89                              str =             toBase2 (value,_size); break;}
90                case OUT   : {vhdl_testbench->add_output(value); 
91                              str =             toBase2 (value,_size); break;}
92                case INOUT : {break;}
93                }
94              break;
95            }
96          default       :
97            throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow."));
98          }
99
100        _list_value->push_back(str);
101      }
102
103    log_printf(FUNC,Behavioural,"testbench","End");
104  };
105
106}; // end namespace behavioural         
107}; // end namespace morpheo             
108#endif
Note: See TracBrowser for help on using the repository browser.