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

Last change on this file since 145 was 145, checked in by rosiere, 14 years ago

1) add test with SPECINT2K
2) new config of Selftest
3) modif RAT to support multiple depth_save ... but not finish (need fix Update Prediction Table)
4) add Function_pointer but need fix

  • Property svn:keywords set to Id
File size: 5.0 KB
Line 
1#ifndef morpheo_behavioural_generic_registerfile_registerfile_monolithic_RegisterFile_Monolithic
2#define morpheo_behavioural_generic_registerfile_registerfile_monolithic_RegisterFile_Monolithic
3
4/*
5 * $Id: RegisterFile_Monolithic.h 145 2010-10-13 18:15:51Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#ifdef SYSTEMC
12#include "systemc.h"
13#endif
14
15#include "Common/include/Debug.h"
16#include "Common/include/ToString.h"
17#include <iostream>
18
19#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h"
20#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h"
21#ifdef STATISTICS
22#include "Behavioural/include/Stat.h"
23#endif
24// #include "Behavioural/include/Component.h"
25#ifdef VHDL
26#include "Behavioural/include/Vhdl.h"
27#endif
28#include "Behavioural/include/Usage.h"
29
30
31
32namespace morpheo                    {
33namespace behavioural                {
34
35  class Component;
36  class Interfaces;
37
38namespace generic                    {
39namespace registerfile               {
40namespace registerfile_monolithic    {
41
42// #define VHDL_GAISLER
43
44  typedef enum {RW_READ, RW_WRITE} rw_t;
45
46  class RegisterFile_Monolithic
47#if SYSTEMC
48    : public sc_module
49#endif
50  {
51    // -----[ fields ]----------------------------------------------------
52    // Parameters
53  protected : const std::string       _name;
54  protected : const Parameters * _param;
55  private   : const Tusage_t     _usage;
56
57#ifdef STATISTICS
58  public    : Stat                           * _stat;
59   
60  // private   : counter_t                      * _stat_nb_read;
61  // private   : counter_t                      * _stat_nb_write;
62  private   : counters_t                     * _stat_port_read;
63  private   : counters_t                     * _stat_port_write;
64  private   : counters_t                     * _stat_port_read_write;
65#endif
66
67  public    : Component                      * _component;
68  private   : Interfaces                     * _interfaces;
69
70#ifdef SYSTEMC
71    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
72    // Interface
73  public    : SC_CLOCK                      *  in_CLOCK        ;
74  public    : SC_IN       (Tcontrol_t)      *  in_NRESET       ;
75
76    // ----- Interface Read
77  public    : SC_IN       (Tcontrol_t)     **  in_READ_VAL     ;
78  public    : SC_OUT      (Tcontrol_t)     ** out_READ_ACK     ;
79  public    : SC_IN       (Taddress_t)     **  in_READ_ADDRESS ;
80  public    : SC_OUT      (Tdata_t)        ** out_READ_DATA    ;
81
82    // ----- Interface Write
83  public    : SC_IN       (Tcontrol_t)     **  in_WRITE_VAL    ;
84  public    : SC_OUT      (Tcontrol_t)     ** out_WRITE_ACK    ;
85  public    : SC_IN       (Taddress_t)     **  in_WRITE_ADDRESS;
86  public    : SC_IN       (Tdata_t)        **  in_WRITE_DATA   ;
87
88    // ----- Interface Read_Write
89  public    : SC_IN       (Tcontrol_t)     **  in_READ_WRITE_VAL    ;
90  public    : SC_OUT      (Tcontrol_t)     ** out_READ_WRITE_ACK    ;
91  public    : SC_IN       (Tcontrol_t)     **  in_READ_WRITE_RW     ;
92  public    : SC_IN       (Taddress_t)     **  in_READ_WRITE_ADDRESS;
93  public    : SC_OUT      (Tdata_t)        ** out_READ_WRITE_RDATA  ;
94  public    : SC_IN       (Tdata_t)        **  in_READ_WRITE_WDATA  ;
95
96    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
97  private   : Tdata_t * reg_DATA;
98
99    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100#endif
101
102    // -----[ methods ]---------------------------------------------------
103
104#ifdef SYSTEMC
105    SC_HAS_PROCESS (RegisterFile_Monolithic);
106#endif                                         
107  public  : RegisterFile_Monolithic
108  (
109#ifdef SYSTEMC
110   sc_module_name                              name
111#else                                         
112   std::string                                      name
113#endif                                         
114#ifdef STATISTICS
115   ,morpheo::behavioural::Parameters_Statistics * param_statistics
116#endif
117   ,Parameters                                  * param
118   ,morpheo::behavioural::Tusage_t                usage
119   );
120
121  public  :          ~RegisterFile_Monolithic  (void);
122                                               
123  private : void     allocation                (void);
124  private : void     deallocation              (void);
125                                               
126#ifdef SYSTEMC                                 
127  public  : void     constant                  (void);
128  public  : void     transition                (void);
129//public  : void     genMoore                  (void) {/* empty */};
130  public  : void     genMealy_read             (void);
131#endif                                         
132
133#ifdef STATISTICS
134  public  : void     statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
135#endif                                         
136
137#if VHDL                                       
138  private : void     vhdl                      (void);
139  private : void     vhdl_declaration          (Vhdl * & vhdl);
140  private : void     vhdl_body                 (Vhdl * & vhdl);
141#endif                                         
142                                               
143#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
144  private : void     end_cycle                 (void);
145#endif
146  };
147
148}; // end namespace registerfile_monolithic
149}; // end namespace registerfile
150}; // end namespace generic
151}; // end namespace behavioural         
152}; // end namespace morpheo             
153
154#endif
Note: See TracBrowser for help on using the repository browser.