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

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

Interface normalisé
Début du banc de registres multi niveaux

File size: 4.5 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         (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  = new uint32_t [_nb_port_read ];
42        for (uint32_t i=0; i<_nb_port_read ; i++)
43          _link_port_read  [i] = i%_nb_port_read_by_bank;
44
45        _link_port_write = new uint32_t [_nb_port_write];
46        for (uint32_t i=0; i<_nb_port_write; i++)
47          _link_port_write [i] = i%_nb_port_write_by_bank;
48      }
49    // else : don't allocate
50
51    _nb_port_select_by_bank_read_port  = new uint32_t [_nb_port_read_by_bank ];
52   
53    if (_crossbar == FULL_CROSSBAR)
54      // All port_src is connected with all port_dest on each bank
55      for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
56        _nb_port_select_by_bank_read_port [i] = _nb_port_read;
57    else
58      // All port_src is connected with one port_dest on each bank
59      {
60        for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
61          _nb_port_select_by_bank_read_port [i] = 0;
62
63        for (uint32_t i=0; i<_nb_port_read         ;i++)
64          _nb_port_select_by_bank_read_port [_link_port_read [i]] ++;
65      }
66   
67    _nb_port_select_by_bank_write_port = new uint32_t [_nb_port_write_by_bank];
68
69    if (_crossbar == FULL_CROSSBAR)
70      // All port_src is connected with all port_dest on each bank
71      for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
72        _nb_port_select_by_bank_write_port [i] = _nb_port_write;
73    else
74      // All port_src is connected with one port_dest on each bank
75      {
76        for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
77          _nb_port_select_by_bank_write_port [i] = 0;
78
79        for (uint32_t i=0; i<_nb_port_write         ;i++)
80          _nb_port_select_by_bank_write_port [_link_port_write[i]] ++;
81      }
82   
83    test();
84    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End");
85  };
86 
87  Parameters::Parameters (Parameters & param):
88    _nb_port_read          (param._nb_port_read         ),
89    _nb_port_write         (param._nb_port_write        ),
90    _size_address          (param._size_address         ),
91    _size_word             (param._size_word            ),
92    _nb_bank               (param._nb_bank              ),
93    _nb_port_read_by_bank  (param._nb_port_read_by_bank ),
94    _nb_port_write_by_bank (param._nb_port_write_by_bank),
95    _crossbar              (param._crossbar             ),
96    _shift_address         (param._shift_address        )
97   {
98    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","Begin");
99
100    _nb_port_select_by_bank_read_port  = new uint32_t [_nb_port_read_by_bank ];
101    for (uint32_t i=0; i<_nb_port_read_by_bank; i++)
102      _nb_port_select_by_bank_read_port [i] = param._nb_port_select_by_bank_read_port [i];
103   
104    _nb_port_select_by_bank_write_port = new uint32_t [_nb_port_write_by_bank ];
105    for (uint32_t i=0; i<_nb_port_write_by_bank; i++)
106      _nb_port_select_by_bank_write_port[i] = param._nb_port_select_by_bank_write_port [i];
107   
108    test();
109    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","End");
110  };
111
112  Parameters::~Parameters () 
113  {
114    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~Parameters","Begin");
115    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~Parameters","End");
116  };
117
118}; // end namespace registerfile_multi_banked_glue
119}; // end namespace registerfile_multi_banked
120}; // end namespace registerfile
121}; // end namespace generic
122}; // end namespace behavioural
123}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.