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

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

Interface et vhdl_testbench : l'appel aux fonction add_input et add_ouput est maintenant réalisé par la classe Interface (et autre).

2 remarques :

  • tester avec des sous composants (en particulier les sorties d'un est directement relié au sortie d'un autre)
  • Signal_testbench.cpp -> l'optimisé (par exemple pointeur de fonction afin d'éviter le test et le switch)
File size: 2.3 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        switch (_type_info)
23          {
24          case BOOL     : 
25            {
26              switch (_direction)
27                {
28                case IN    : {vhdl_testbench->add_input (static_cast<sc_in  <bool    > *>(_signal)->read()); break; }
29                case OUT   : {vhdl_testbench->add_output(static_cast<sc_out <bool    > *>(_signal)->read()); break; }
30                case INOUT : {break;}
31                }
32              break;
33            }
34          case UINT8_T  :
35            {
36              switch (_direction)
37                {
38                case IN    : {vhdl_testbench->add_input (static_cast<sc_in  <uint8_t > *>(_signal)->read()); break; }
39                case OUT   : {vhdl_testbench->add_output(static_cast<sc_out <uint8_t > *>(_signal)->read()); break; }
40                case INOUT : {break;}
41                }
42              break;
43            }
44          case UINT16_T :
45            {
46              switch (_direction)
47                {
48                case IN    : {vhdl_testbench->add_input (static_cast<sc_in  <uint16_t> *>(_signal)->read()); break; }
49                case OUT   : {vhdl_testbench->add_output(static_cast<sc_out <uint16_t> *>(_signal)->read()); break; }
50                case INOUT : {break;}
51                }
52              break;
53            }
54          case UINT32_T :
55            {
56              switch (_direction)
57                {
58                case IN    : {vhdl_testbench->add_input (static_cast<sc_in  <uint32_t> *>(_signal)->read()); break; }
59                case OUT   : {vhdl_testbench->add_output(static_cast<sc_out <uint32_t> *>(_signal)->read()); break; }
60                case INOUT : {break;}
61                }
62              break;
63            }
64          case UINT64_T :
65            {
66              switch (_direction)
67                {
68                case IN    : {vhdl_testbench->add_input (static_cast<sc_in  <uint64_t> *>(_signal)->read()); break; }
69                case OUT   : {vhdl_testbench->add_output(static_cast<sc_out <uint64_t> *>(_signal)->read()); break; }
70                case INOUT : {break;}
71                }
72              break;
73            }
74          default       :
75            throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow."));
76          }
77
78      }
79
80    log_printf(FUNC,Behavioural,"testbench","End");
81  };
82
83}; // end namespace behavioural         
84}; // end namespace morpheo             
85#endif
Note: See TracBrowser for help on using the repository browser.