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

Last change on this file since 113 was 113, checked in by rosiere, 15 years ago

1) Add modelsim simulation systemC
2) Modelsim cosimulation systemC / VHDL is not finish !!!! (cf execute_queue and write_unit)
3) Add multi architecture
5) Add template for comparator, multiplier and divider
6) Change Message
Warning) Various test macro have change, many selftest can't compile

  • Property svn:keywords set to Id
File size: 2.3 KB
RevLine 
[38]1#ifdef VHDL_TESTBENCH
2/*
3 * $Id: Signal_testbench.cpp 113 2009-04-14 18:39:12Z rosiere $
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
[41]15  void Signal::testbench (void)
[38]16  {
17    log_printf(FUNC,Behavioural,"testbench","Begin");
18
19    if ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
[42]20        (_presence_port == PORT_VHDL_NO_TESTBENCH_YES ) or
21        (_presence_port == RESET_VHDL_YES             ) or
22        (_presence_port == RESET_VHDL_NO              ) )
[38]23      {
[75]24        std::string str;
[40]25
[38]26        switch (_type_info)
27          {
28          case BOOL     : 
29            {
[40]30              bool value = read <bool> ();
31
[38]32              switch (_direction)
33                {
[41]34                case IN    : {str =             toBase2 (value); break;}
35                case OUT   : {str =             toBase2 (value); break;}
[42]36                default    : {break;}
[38]37                }
38              break;
39            }
40          case UINT8_T  :
41            {
[40]42              uint8_t value = read <uint8_t> ();
43
[38]44              switch (_direction)
45                {
[113]46                case IN    : {str =             toBase2 (value,get_size()); break;}
47                case OUT   : {str =             toBase2 (value,get_size()); break;}
[42]48                default    : {break;}
[38]49                }
50              break;
51            }
52          case UINT16_T :
53            {
[40]54              uint16_t value = read <uint16_t> ();
55
[38]56              switch (_direction)
57                {
[113]58                case IN    : {str =             toBase2 (value,get_size()); break;}
59                case OUT   : {str =             toBase2 (value,get_size()); break;}
[42]60                default    : {break;}           
[38]61                }
62              break;
63            }
64          case UINT32_T :
65            {
[40]66              uint32_t value = read <uint32_t> ();
67
[38]68              switch (_direction)
69                {
[113]70                case IN    : {str =             toBase2 (value,get_size()); break;}
71                case OUT   : {str =             toBase2 (value,get_size()); break;}
[42]72                default    : {break;}
[38]73                }
74              break;
75            }
76          case UINT64_T :
77            {
[40]78              uint64_t value = read <uint64_t> ();
79
[38]80              switch (_direction)
81                {
[113]82                case IN    : {str =             toBase2 (value,get_size()); break;}
83                case OUT   : {str =             toBase2 (value,get_size()); break;}
[42]84                default    : {break;}
[38]85                }
86              break;
87            }
88          default       :
89            throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow."));
90          }
91
[40]92        _list_value->push_back(str);
[38]93      }
94
95    log_printf(FUNC,Behavioural,"testbench","End");
96  };
97
98}; // end namespace behavioural         
99}; // end namespace morpheo             
100#endif
Note: See TracBrowser for help on using the repository browser.