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

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

Documentation pour chaque composant.
Documentation : ajout d'un poster et d'un article.
RegisterFile_Multi_Banked_Glue - non encore stable.

File size: 3.8 KB
Line 
1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h"
9
10namespace morpheo {
11namespace behavioural {
12namespace generic {
13namespace registerfile{
14namespace registerfile_multi_banked {
15namespace registerfile_multi_banked_glue {
16
17  Parameters::Parameters (uint32_t    nb_port_read         ,
18                          uint32_t    nb_port_write        ,
19                          uint32_t    size_address         ,
20                          uint32_t    size_word            ,
21                          uint32_t    nb_bank              ,
22                          uint32_t    nb_port_read_by_bank ,
23                          uint32_t    nb_port_write_by_bank,
24                          Tcrossbar_t crossbar             ):
25    _nb_port_read          (nb_port_read         ),
26    _nb_port_write         (nb_port_write        ),
27    _size_address          (size_address         ),
28    _size_word             (size_word            ),
29    _nb_bank               (nb_bank              ),
30    _nb_port_read_by_bank  (nb_port_read_by_bank ),
31    _nb_port_write_by_bank (nb_port_write_by_bank),
32    _crossbar              (crossbar             ),
33    _shift_address         (_size_address-static_cast<uint32_t>(ceil(log2(_nb_bank))))
34  {
35    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","Begin");
36
37    if (_crossbar == PARTIAL_CROSSBAR)
38      {
39        // All port_src is connected with one port_dest on each bank
40       
41        _link_port_read_in_to_out          = new uint32_t [_nb_port_read ];
42        _link_port_read_in_to_select       = new uint32_t [_nb_port_read ];
43        _link_port_write_in_to_out         = new uint32_t [_nb_port_write];
44        _link_port_write_in_to_select      = new uint32_t [_nb_port_write];
45        uint32_t _nb_port_select_by_bank_read_port  [_nb_port_read_by_bank ];
46        uint32_t _nb_port_select_by_bank_write_port [_nb_port_write_by_bank];
47       
48        // init
49        for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
50          _nb_port_select_by_bank_read_port  [i] = 0;
51       
52        for (uint32_t i=0; i<_nb_port_read         ;i++)
53          {
54            uint32_t x = i%_nb_port_read_by_bank;
55            _link_port_read_in_to_out          [i] = x;
56            _link_port_read_in_to_select       [i] = _nb_port_select_by_bank_read_port [x];
57            _nb_port_select_by_bank_read_port  [x] ++;
58          }
59
60        // init
61        for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
62          _nb_port_select_by_bank_write_port [i] = 0;
63       
64        for (uint32_t i=0; i<_nb_port_write         ;i++)
65          {
66            uint32_t x = i%_nb_port_write_by_bank;
67            _link_port_write_in_to_out         [i] = x;
68            _link_port_write_in_to_select      [i] = _nb_port_select_by_bank_write_port [x];
69            _nb_port_select_by_bank_write_port [x] ++;
70          }
71      }
72    // else : don't allocate
73
74    test();
75    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End");
76  };
77 
78  Parameters::Parameters (Parameters & param):
79    _nb_port_read          (param._nb_port_read         ),
80    _nb_port_write         (param._nb_port_write        ),
81    _size_address          (param._size_address         ),
82    _size_word             (param._size_word            ),
83    _nb_bank               (param._nb_bank              ),
84    _nb_port_read_by_bank  (param._nb_port_read_by_bank ),
85    _nb_port_write_by_bank (param._nb_port_write_by_bank),
86    _crossbar              (param._crossbar             ),
87    _shift_address         (param._shift_address        )
88   {
89    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","Begin");
90    test();
91    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","End");
92  };
93
94  Parameters::~Parameters () 
95  {
96    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~Parameters","Begin");
97    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~Parameters","End");
98  };
99
100}; // end namespace registerfile_multi_banked_glue
101}; // end namespace registerfile_multi_banked
102}; // end namespace registerfile
103}; // end namespace generic
104}; // end namespace behavioural
105}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.