source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp @ 75

Last change on this file since 75 was 75, checked in by rosiere, 16 years ago

Update all component (except front_end) to :

  • new statistics model
  • no namespace std
File size: 5.2 KB
RevLine 
[53]1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
9
10namespace morpheo                    {
11namespace behavioural {
12namespace generic {
13namespace registerfile {
14namespace registerfile_multi_banked {
15
16
17#ifdef SYSTEMC
18  RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (sc_module_name name,
19#else
20  RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (string name,
21#endif
22#ifdef STATISTICS
[57]23                              morpheo::behavioural::Parameters_Statistics * param_statistics,
[53]24#endif
[57]25                              morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param ):
[53]26                              _name              (name)
27                              ,_param            (param)
28  {
29    log_printf(FUNC,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Begin");
30
31#ifdef SYSTEMC
32    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Allocation");
33
34    allocation ();
35#endif
36
37#ifdef STATISTICS
38    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Allocation of statistics");
39
40    // Allocation of statistics
[75]41    statistics_declaration(param_statistics);
[53]42#endif
43
44#ifdef VHDL
45    // generate the vhdl
46    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Generate the vhdl");
47
48    vhdl();
49#endif
50
51#ifdef SYSTEMC
52    // Function pointer
[57]53    if (_param->_crossbar == FULL_CROSSBAR)                             
[53]54      {
55        function_transition     = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   full_crossbar_transition;
56        function_genMealy_read  = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   full_crossbar_genMealy_read;
57        function_genMealy_write = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   full_crossbar_genMealy_write;
58      }
59    else
60      {
61        function_transition     = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   partial_crossbar_transition;
62        function_genMealy_read  = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   partial_crossbar_genMealy_read;
63        function_genMealy_write = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   partial_crossbar_genMealy_write;
64      }
65
66    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Method - transition");
67
68    SC_METHOD (transition);
69    dont_initialize ();
[67]70    sensitive << (*(in_CLOCK)).pos();
[53]71
72#ifdef SYSTEMCASS_SPECIFIC
73    // List dependency information
74#endif   
75
76    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Method - genMealy_write");
77
78    SC_METHOD (genMealy_read);
79    dont_initialize ();
[67]80    sensitive << (*(in_CLOCK)).neg();
[57]81    for (uint32_t i=0; i<_param->_nb_port_read; i++)
[62]82      {
83        sensitive << *( in_READ_VAL     [i]);
84        if (_param->_have_port_address == true)
85          sensitive << *( in_READ_ADDRESS [i]);
86      }
[53]87
88#ifdef SYSTEMCASS_SPECIFIC
89    // List dependency information
[57]90    for (uint32_t i=0; i<_param->_nb_port_read; i++)
[53]91      {
92        (*(out_READ_ACK  [i])) (*( in_READ_VAL     [i]));
[62]93        if (_param->_have_port_address == true)
[53]94        (*(out_READ_ACK  [i])) (*( in_READ_ADDRESS [i]));
95        (*(out_READ_DATA [i])) (*( in_READ_VAL     [i]));
[62]96        if (_param->_have_port_address == true)
[53]97        (*(out_READ_DATA [i])) (*( in_READ_ADDRESS [i]));
98      }
[57]99//     for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
100//       { 
101//      (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_VAL     [i]));
102//      (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_RW      [i]));
103//      (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i]));
104//       }
[53]105#endif   
106
107    SC_METHOD (genMealy_write);
108    dont_initialize ();
[67]109    sensitive<< (*(in_CLOCK)).neg();
[57]110    for (uint32_t i=0; i<_param->_nb_port_write; i++)
[62]111      {
112        sensitive << *( in_WRITE_VAL     [i])
113                  << *( in_WRITE_DATA    [i]);
114        if (_param->_have_port_address == true)
115          sensitive << *( in_WRITE_ADDRESS [i]);
116      }
[53]117
118#ifdef SYSTEMCASS_SPECIFIC
119    // List dependency information
[57]120    for (uint32_t i=0; i<_param->_nb_port_write; i++)
[53]121      {
122        (*(out_WRITE_ACK  [i])) (*( in_WRITE_VAL     [i]));
[62]123        if (_param->_have_port_address == true)
[53]124        (*(out_WRITE_ACK  [i])) (*( in_WRITE_ADDRESS [i]));
125        (*(out_WRITE_ACK  [i])) (*( in_WRITE_DATA    [i]));
126      }
127#endif   
128
129#endif
130    log_printf(FUNC,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","End");
131  };
132 
133  RegisterFile_Multi_Banked::~RegisterFile_Multi_Banked (void)
134  {
135    log_printf(FUNC,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Begin");
136
137#ifdef STATISTICS
138    log_printf(INFO,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Generate Statistics file");
139   
140    delete _stat;
141#endif
142
143#ifdef SYSTEMC
144    log_printf(INFO,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Deallocation");
145
146    deallocation ();
147#endif
148
149    log_printf(FUNC,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","End");
150  };
151
152}; // end namespace registerfile_multi_banked
153}; // end namespace registerfile
154}; // end namespace generic
155}; // end namespace behavioural
156}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.