source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h @ 10

Last change on this file since 10 was 10, checked in by rosiere, 17 years ago
File size: 4.1 KB
Line 
1#ifndef morpheo_behavioural_generic_registerfile_multi_banked_RegisterFile_Multi_Banked_h
2#define morpheo_behavioural_generic_registerfile_multi_banked_RegisterFile_Multi_Banked_h
3
4/*
5 * $Id$
6 *
7 * [ Description ]
8 *
9 */
10
11#ifdef SYSTEMC
12#include "systemc.h"
13#endif
14
15#include <iostream>
16#include "Include/ToString.h"
17#include "Include/Debug.h"
18
19#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Parameters.h"
20#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Types.h"
21#ifdef STATISTICS
22#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Statistics.h"
23#endif
24#ifdef VHDL
25#include "Behavioural/include/Vhdl.h"
26#endif
27#ifdef VHDL_TESTBENCH
28#include "Behavioural/include/Vhdl_Testbench.h"
29#endif
30
31using namespace std;
32
33namespace morpheo {
34namespace behavioural {
35namespace generic {
36namespace registerfile_multi_banked {
37
38
39  class RegisterFile_Multi_Banked
40#if SYSTEMC
41    : public sc_module
42#endif
43  {
44    // -----[ fields ]----------------------------------------------------
45    // Parameters
46  protected : const string     _name;
47
48  protected : const Parameters _param;
49//#ifdef STATISTICS
50//  protected : const morpheo::behavioural::Parameters_Statistics _param_statistics;
51//#endif
52
53#ifdef STATISTICS
54  private   : Statistics                     * _stat;
55#endif
56
57#ifdef VHDL_TESTBENCH
58  private   : Vhdl_Testbench                 * _vhdl_testbench;
59#endif
60
61#ifdef SYSTEMC
62    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63    // Interface
64  public    : SC_CLOCK                      *  in_CLOCK        ;
65  public    : SC_IN       (Tcontrol_t)      *  in_NRESET       ;
66
67    // ----- Interface Read
68  public    : SC_IN       (Tcontrol_t)     **  in_READ_VAL     ;
69  public    : SC_OUT      (Tcontrol_t)     ** out_READ_ACK     ;
70  public    : SC_IN       (Taddress_t)     **  in_READ_ADDRESS ;
71  public    : SC_OUT      (Tdata_t)        ** out_READ_DATA    ;
72
73    // ----- Interface Write
74  public    : SC_IN       (Tcontrol_t)     **  in_WRITE_VAL    ;
75  public    : SC_OUT      (Tcontrol_t)     ** out_WRITE_ACK    ;
76  public    : SC_IN       (Taddress_t)     **  in_WRITE_ADDRESS;
77  public    : SC_IN       (Tdata_t)        **  in_WRITE_DATA   ;
78
79    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
80
81    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
82
83    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
84#endif
85
86    // -----[ methods ]---------------------------------------------------
87
88#ifdef SYSTEMC
89    SC_HAS_PROCESS (RegisterFile_Multi_Banked);
90#endif
91  public  :          RegisterFile_Multi_Banked              (
92#ifdef SYSTEMC
93                                                             sc_module_name                              name,
94#else                                         
95                                                             string                                      name,
96#endif                                         
97#ifdef STATISTICS
98                                                             morpheo::behavioural::Parameters_Statistics param_statistics,
99#endif
100                                                             Parameters                                  param );
101   
102  public  :          RegisterFile_Multi_Banked              (Parameters param );
103  public  :          ~RegisterFile_Multi_Banked             (void);
104                                               
105#ifdef SYSTEMC                                 
106  private : void     allocation                (void);
107  private : void     deallocation              (void);
108                                               
109//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
110  public  : void     transition                (void);
111//#endif
112#endif                                         
113#ifdef STATISTICS
114  public  : string   statistics                (uint32_t depth);
115#endif
116                                               
117#if VHDL                                       
118  public  : void     vhdl                      (void);
119  private : void     vhdl_port                 (Vhdl & vhdl);
120  private : void     vhdl_declaration          (Vhdl & vhdl);
121  private : void     vhdl_body                 (Vhdl & vhdl);
122#endif                                         
123                                               
124#ifdef VHDL_TESTBENCH                         
125  private : void     vhdl_testbench_transition (void);
126#endif
127  public  : void     vhdl_testbench_label      (string label);
128  };
129
130}; // end namespace registerfile_multi_banked
131}; // end namespace generic
132}; // end namespace behavioural
133}; // end namespace morpheo             
134
135#endif
Note: See TracBrowser for help on using the repository browser.