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

Last change on this file since 146 was 146, checked in by rosiere, 13 years ago

1) Integration of RegisterFile_Internal_Banked in RegisterFile?
2) Erase "read_write" interface in RegisterFile_Monolithic component
3) Add smith predictor parameters in Load_store_pointer_unit.
4) Fix not statistics flags

  • Property svn:keywords set to Id
File size: 4.1 KB
Line 
1#ifndef morpheo_behavioural_generic_registerfile_RegisterFile_h
2#define morpheo_behavioural_generic_registerfile_RegisterFile_h
3
4/*
5 * $Id: RegisterFile.h 146 2011-02-01 20:57:54Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#ifdef SYSTEMC
12#include "systemc.h"
13#endif
14
15#include <iostream>
16#include "Common/include/ToString.h"
17#include "Common/include/Debug.h"
18
19#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
20#include "Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/include/RegisterFile_Internal_Banked.h"
21#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
22
23#include "Behavioural/Generic/RegisterFile/include/Parameters.h"
24#include "Behavioural/Generic/RegisterFile/include/Types.h"
25#ifdef STATISTICS
26#include "Behavioural/include/Stat.h"
27#endif
28#include "Behavioural/include/Component.h"
29#ifdef VHDL
30#include "Behavioural/include/Vhdl.h"
31#endif
32#include "Behavioural/include/Usage.h"
33
34namespace morpheo {
35namespace behavioural {
36namespace generic {
37namespace registerfile {
38
39
40  class RegisterFile
41#if SYSTEMC
42    : public sc_module
43#endif
44  {
45    // -----[ fields ]----------------------------------------------------
46    // Parameters
47  protected : const std::string  _name;
48  protected : const Parameters * _param;
49  private   : const Tusage_t     _usage;
50
51#ifdef STATISTICS
52  public    : Stat                           * _stat;
53#endif
54
55  public    : Component                      * _component;
56  private   : Interfaces                     * _interfaces;
57
58#ifdef SYSTEMC
59    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60    // Interface
61  public    : SC_CLOCK                      *  in_CLOCK        ;
62  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
63
64    // ----- Interface Read
65  public    : SC_IN       (Tcontrol_t)     **  in_READ_VAL     ;
66  public    : SC_OUT      (Tcontrol_t)     ** out_READ_ACK     ;
67  public    : SC_IN       (Taddress_t)     **  in_READ_ADDRESS ;
68  public    : SC_OUT      (Tdata_t)        ** out_READ_DATA    ;
69
70    // ----- Interface Write
71  public    : SC_IN       (Tcontrol_t)     **  in_WRITE_VAL    ;
72  public    : SC_OUT      (Tcontrol_t)     ** out_WRITE_ACK    ;
73  public    : SC_IN       (Taddress_t)     **  in_WRITE_ADDRESS;
74  public    : SC_IN       (Tdata_t)        **  in_WRITE_DATA   ;
75
76#endif
77
78    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
79  protected : morpheo::behavioural::generic::registerfile::registerfile_monolithic     ::RegisterFile_Monolithic     ::RegisterFile_Monolithic      * component_RegisterFile_Monolithic;
80  protected : morpheo::behavioural::generic::registerfile::registerfile_internal_banked::RegisterFile_Internal_Banked::RegisterFile_Internal_Banked * component_RegisterFile_Internal_Banked;
81  protected : morpheo::behavioural::generic::registerfile::registerfile_multi_banked   ::RegisterFile_Multi_Banked   ::RegisterFile_Multi_Banked    * component_RegisterFile_Multi_Banked;
82
83    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
84
85    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86
87    // -----[ methods ]---------------------------------------------------
88
89#ifdef SYSTEMC
90    SC_HAS_PROCESS (RegisterFile);
91#endif
92  public  :          RegisterFile              (
93#ifdef SYSTEMC
94                                                sc_module_name                              name,
95#else                                         
96                                                std::string                                      name,
97#endif                                         
98#ifdef STATISTICS
99                                                morpheo::behavioural::Parameters_Statistics * param_statistics,
100#endif
101                                                Parameters                                  * param ,
102                                                Tusage_t usage);
103   
104  public  :          ~RegisterFile             (void);
105                                               
106#ifdef SYSTEMC                                 
107  private : void     allocation                (
108#ifdef STATISTICS
109                                                morpheo::behavioural::Parameters_Statistics * param_statistics
110#else
111                                                void
112#endif
113                                                );
114  private : void     deallocation              (void);
115#endif                                         
116  };
117
118}; // end namespace registerfile
119}; // end namespace generic
120
121}; // end namespace behavioural
122}; // end namespace morpheo             
123
124#endif
Note: See TracBrowser for help on using the repository browser.