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

Last change on this file since 6 was 6, checked in by rosiere, 17 years ago

Banc de registres

  • ajout de 2 ports additionnels inutiles (reset et ack) mais nécessaire pour uniformisé les différentes version du banc de registres
File size: 2.2 KB
Line 
1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Generic/RegisterFile/include/RegisterFile.h"
9
10namespace morpheo                    {
11namespace behavioural                {
12namespace generic                    {
13namespace registerfile               {
14
15#ifdef SYSTEMC
16  RegisterFile::RegisterFile (sc_module_name name,
17#else
18  RegisterFile::RegisterFile (string name        ,
19#endif
20#ifdef STATISTICS
21                              morpheo::behavioural::Parameters_Statistics             param_statistics,
22#endif
23                              morpheo::behavioural::generic::registerfile::Parameters param ):
24                              _name   (name)
25                              ,_param (param)
26  {
27#ifdef STATISTICS
28    _stat = new Statistics (static_cast<string>(_name),
29                            param_statistics          ,
30                            param);
31#endif
32
33#ifdef VHDL_TESTBENCH
34    _vhdl_testbench = new Vhdl_Testbench (_name);
35    vhdl_testbench_port           (*_vhdl_testbench);
36    _vhdl_testbench->set_clock    ("in_CLOCK",true);
37#endif
38
39#ifdef VHDL
40    // generate the vhdl
41    vhdl();
42#endif
43
44#ifdef SYSTEMC
45    allocation ();
46
47    SC_METHOD (transition);
48    dont_initialize ();
49    sensitive_pos << *(in_CLOCK);
50   
51    SC_METHOD (genMealy_read);
52    dont_initialize ();
53    sensitive_neg << *(in_CLOCK);
54    for (uint32_t i=0; i<_param._nb_port_read; i++)
55      sensitive << *(in_READ_VAL     [i])
56                << *(in_READ_ADDRESS [i]);
57
58#ifdef SYSTEMCASS_SPECIFIC
59    // List dependency information
60    for (uint32_t i=0; i<_param._nb_port_read; i++)
61      {
62        (*(out_READ_DATA [i])) (*( in_READ_VAL     [i]));
63        (*(out_READ_DATA [i])) (*( in_READ_ADDRESS [i]));
64      }
65#endif   
66
67    for (uint32_t i=0; i<_param._nb_port_read ; i++)
68      PORT_WRITE(out_READ_ACK  [i], 1);
69    for (uint32_t i=0; i<_param._nb_port_write; i++)
70      PORT_WRITE(out_WRITE_ACK [i], 1);
71#endif
72  };
73 
74  RegisterFile::~RegisterFile (void)
75  {
76#ifdef SYSTEMC
77    deallocation ();
78#endif
79
80#ifdef VHDL_TESTBENCH
81    // generate the test bench
82    _vhdl_testbench->generate_file();
83    delete _vhdl_testbench;
84#endif
85
86#ifdef STATISTICS
87    _stat->generate_file(statistics(0));
88    delete _stat;
89#endif
90  };
91
92}; // end namespace registerfile
93}; // end namespace generic
94}; // end namespace behavioural         
95}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.