source: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl_Testbench.h @ 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: 3.2 KB
Line 
1#ifdef VHDL_TESTBENCH
2
3#ifndef morpheo_behavioural_Vhdl_Testbench_h
4#define morpheo_behavioural_Vhdl_Testbench_h
5
6/*
7 * $Id$
8 *
9 * [ Description ]
10 *
11 */
12
13#include "Behavioural/include/Environnement.h"
14#include "Behavioural/include/Vhdl.h"
15#include "Include/ToString.h"
16#include "Include/ToBase2.h"
17#include <stdint.h>
18#include <iostream>
19#include <list>
20
21using namespace std;
22
23namespace morpheo              {
24namespace behavioural          {
25
26  class Vhdl_Testbench
27  {
28    class label_t
29    {
30    public : const uint32_t _cycle;
31    public : const string   _label;
32
33      label_t (uint32_t cycle,
34               string   label) :
35        _cycle (cycle),
36        _label (label)
37      {};
38    };
39
40    // -----[ fields ]----------------------------------------------------
41  private   : const string     _name       ;
42  private   : const bool       _exhaustive ;
43
44  private   : string           _clock_name ;
45  private   : uint32_t         _num_cycle  ;
46
47  private   : uint32_t         _size_input ;
48  private   : uint32_t         _size_output;
49
50  private   : list<string>     _list_input ;
51  private   : list<string>     _list_input_cycle;
52  private   : list<uint32_t>   _list_input_size ;
53
54  private   : list<string>     _list_output;
55  private   : list<string>     _list_output_cycle;
56  private   : list<uint32_t>   _list_output_size ;
57
58  private   : list<bool>       _list_test;
59  private   : list<string>     _list_port;
60  private   : list<label_t>    _list_label;
61
62  private   : list<uint32_t>::iterator   _num_input ;
63  private   : list<uint32_t>::iterator   _num_output;
64
65  private   : Vhdl           * _vhdl;
66   
67    // -----[ methods ]---------------------------------------------------
68  public    :                  Vhdl_Testbench              (string   name,
69                                                            bool     exhaustive=true);
70  public    : virtual          ~Vhdl_Testbench             ();
71                                                           
72  public    : void             generate_file               (void);
73
74  public    : void             set_port                    (string      name      ,
75                                                            direction_t direction ,
76                                                            uint32_t    size      );
77  public    : void             set_clock                   (string      name      ,
78                                                            bool        model_have_clock);
79  public    : void             new_cycle                   (void);
80
81  private   : uint32_t         get_input                   (void);
82  private   : void             set_input                   (void);
83  public    : void             add_input                   (uint32_t    value     );
84
85  private   : uint32_t         get_output                  (void);
86  private   : void             set_output                  (void);
87  public    : void             add_output                  (uint32_t    value     );
88
89  private   : uint32_t         get_test                    (void);
90  public    : void             add_test                    (bool        must_test );
91
92  private   : void             get_label                   (void);
93  public    : void             add_label                   (string      label     );
94
95  private   : void             generate_process_clock      (uint32_t    counter   );
96  private   : void             generate_instance           (void);
97  };
98
99}; // end namespace behavioural         
100}; // end namespace morpheo             
101
102#endif
103#endif
Note: See TracBrowser for help on using the repository browser.