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

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

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

File size: 7.9 KB
Line 
1#ifdef SYSTEMC
2/*
3 * $Id$
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace generic {
14namespace registerfile{
15namespace registerfile_multi_banked {
16namespace registerfile_multi_banked_glue {
17
18
19  void RegisterFile_Multi_Banked_Glue::allocation (void)
20  {
21    string rename;
22
23    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"allocation","Begin");
24
25#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
26    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
27#endif
28
29    in_READ_IN_VAL       = new SC_IN (Tcontrol_t)           * [_param._nb_port_read];
30   out_READ_IN_ACK       = new SC_OUT(Tcontrol_t)           * [_param._nb_port_read];
31    in_READ_IN_ADDRESS   = new SC_IN (Taddress_t)           * [_param._nb_port_read];
32   out_READ_IN_DATA      = new SC_OUT(Tdata_t   )           * [_param._nb_port_read];
33
34   for (uint32_t i=0; i<_param._nb_port_read; i++)
35     {
36       rename = " in_READ_IN_VAL_"+toString(i)+"      ";
37        in_READ_IN_VAL       [i] = new SC_IN (Tcontrol_t) (rename.c_str());
38
39       rename = "out_READ_IN_ACK_"+toString(i)+"      ";
40       out_READ_IN_ACK       [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
41
42       rename = " in_READ_IN_ADDRESS_"+toString(i)+"  ";
43        in_READ_IN_ADDRESS   [i] = new SC_IN (Taddress_t) (rename.c_str());
44
45       rename = "out_READ_IN_DATA_"+toString(i)+"     ";
46       out_READ_IN_DATA      [i] = new SC_OUT(Tdata_t   ) (rename.c_str());
47     }
48                                                     
49   out_READ_SELECT_VAL  = new SC_OUT(Tcontrol_t) *** [_param._nb_bank];
50    in_READ_SELECT_ACK  = new SC_IN (Tcontrol_t) *** [_param._nb_bank];
51
52    for (uint32_t i=0; i<_param._nb_bank; i++)
53      {
54        out_READ_SELECT_VAL [i] = new SC_OUT(Tcontrol_t)  ** [_param._nb_port_read_by_bank];
55         in_READ_SELECT_ACK [i] = new SC_IN (Tcontrol_t)  ** [_param._nb_port_read_by_bank];
56
57         for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
58           {
59             out_READ_SELECT_VAL [i][j] = new SC_OUT(Tcontrol_t)   * [_param._nb_port_select_by_bank_read_port [j]];
60              in_READ_SELECT_ACK [i][j] = new SC_IN (Tcontrol_t)   * [_param._nb_port_select_by_bank_read_port [j]];
61             
62             for (uint32_t k=0; k<_param._nb_port_select_by_bank_read_port [j]; k++)
63               {
64                 rename="out_READ_SELECT_VAL_"+toString(i)+"_"+toString(j)+"_"+toString(k)+" ";
65                 out_READ_SELECT_VAL [i][j][k] = new SC_OUT(Tcontrol_t) (rename.c_str());
66                 
67                 rename=" in_READ_SELECT_ACK_"+toString(i)+"_"+toString(j)+"_"+toString(k)+" ";
68                  in_READ_SELECT_ACK [i][j][k] = new SC_IN (Tcontrol_t) (rename.c_str());
69               }
70           }
71      }
72
73   out_READ_OUT_VAL         = new SC_OUT(Tcontrol_t)          ** [_param._nb_bank];
74    in_READ_OUT_ACK         = new SC_IN (Tcontrol_t)          ** [_param._nb_bank];
75   out_READ_OUT_ADDRESS     = new SC_OUT(Taddress_t)          ** [_param._nb_bank];
76    in_READ_OUT_DATA        = new SC_IN (Tdata_t   )          ** [_param._nb_bank];
77
78    for (uint32_t i=0; i<_param._nb_bank; i++)
79      {
80        out_READ_OUT_VAL      [i] = new SC_OUT(Tcontrol_t)          * [_param._nb_port_read_by_bank];
81         in_READ_OUT_ACK      [i] = new SC_IN (Tcontrol_t)          * [_param._nb_port_read_by_bank];
82        out_READ_OUT_ADDRESS  [i] = new SC_OUT(Taddress_t)          * [_param._nb_port_read_by_bank];
83         in_READ_OUT_DATA     [i] = new SC_IN (Tdata_t   )          * [_param._nb_port_read_by_bank];
84
85        for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
86          {
87
88            rename="out_READ_OUT_VAL_"+toString(i)+"_"+toString(j)+"      ";
89            out_READ_OUT_VAL      [i][j] = new SC_OUT(Tcontrol_t) (rename.c_str());
90
91            rename=" in_READ_OUT_ACK_"+toString(i)+"_"+toString(j)+"      ";
92             in_READ_OUT_ACK      [i][j] = new SC_IN (Tcontrol_t) (rename.c_str());
93
94            rename="out_READ_OUT_ADDRESS_"+toString(i)+"_"+toString(j)+"  ";
95            out_READ_OUT_ADDRESS  [i][j] = new SC_OUT(Taddress_t) (rename.c_str());
96
97            rename=" in_READ_OUT_DATA_"+toString(i)+"_"+toString(j)+"     ";
98             in_READ_OUT_DATA     [i][j] = new SC_IN (Tdata_t   ) (rename.c_str());
99          }
100      }
101
102    in_WRITE_IN_VAL      = new SC_IN (Tcontrol_t)           * [_param._nb_port_write];
103   out_WRITE_IN_ACK      = new SC_OUT(Tcontrol_t)           * [_param._nb_port_write];
104    in_WRITE_IN_ADDRESS  = new SC_IN (Taddress_t)           * [_param._nb_port_write];
105    in_WRITE_IN_DATA     = new SC_IN (Tdata_t   )           * [_param._nb_port_write];
106
107   for (uint32_t i=0; i<_param._nb_port_write; i++)
108     {
109       rename = " in_WRITE_IN_VAL_"+toString(i)+"     ";
110        in_WRITE_IN_VAL      [i] = new SC_IN (Tcontrol_t) (rename.c_str());
111
112       rename = "out_WRITE_IN_ACK_"+toString(i)+"     ";
113       out_WRITE_IN_ACK      [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
114
115       rename = " in_WRITE_IN_ADDRESS_"+toString(i)+" ";
116        in_WRITE_IN_ADDRESS  [i] = new SC_IN (Taddress_t) (rename.c_str());
117
118       rename = " in_WRITE_IN_DATA_"+toString(i)+"    ";
119        in_WRITE_IN_DATA     [i] = new SC_IN (Tdata_t   ) (rename.c_str());
120     }
121   
122   out_WRITE_SELECT_VAL  = new SC_OUT(Tcontrol_t) *** [_param._nb_bank];
123    in_WRITE_SELECT_ACK  = new SC_IN (Tcontrol_t) *** [_param._nb_bank];
124
125    for (uint32_t i=0; i<_param._nb_bank; i++)
126      {
127        out_WRITE_SELECT_VAL [i] = new SC_OUT(Tcontrol_t)  ** [_param._nb_port_write_by_bank];
128         in_WRITE_SELECT_ACK [i] = new SC_IN (Tcontrol_t)  ** [_param._nb_port_write_by_bank];
129
130         for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
131           {
132             out_WRITE_SELECT_VAL [i][j] = new SC_OUT(Tcontrol_t)   * [_param._nb_port_select_by_bank_write_port [j]];
133              in_WRITE_SELECT_ACK [i][j] = new SC_IN (Tcontrol_t)   * [_param._nb_port_select_by_bank_write_port [j]];
134             
135             for (uint32_t k=0; k<_param._nb_port_select_by_bank_write_port [j]; k++)
136               {
137                 rename="out_WRITE_SELECT_VAL_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"";
138                 out_WRITE_SELECT_VAL [i][j][k] = new SC_OUT(Tcontrol_t) (rename.c_str());
139                 
140                 rename=" in_WRITE_SELECT_ACK_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"";
141                  in_WRITE_SELECT_ACK [i][j][k] = new SC_IN (Tcontrol_t) (rename.c_str());
142               }
143           }
144      }
145   
146   out_WRITE_OUT_VAL     = new SC_OUT(Tcontrol_t)          ** [_param._nb_bank];
147    in_WRITE_OUT_ACK     = new SC_IN (Tcontrol_t)          ** [_param._nb_bank];
148   out_WRITE_OUT_ADDRESS = new SC_OUT(Taddress_t)          ** [_param._nb_bank];
149   out_WRITE_OUT_DATA    = new SC_OUT(Tdata_t   )          ** [_param._nb_bank];
150
151    for (uint32_t i=0; i<_param._nb_bank; i++)
152      {
153        out_WRITE_OUT_VAL     [i] = new SC_OUT(Tcontrol_t)          * [_param._nb_port_write_by_bank];
154         in_WRITE_OUT_ACK     [i] = new SC_IN (Tcontrol_t)          * [_param._nb_port_write_by_bank];
155        out_WRITE_OUT_ADDRESS [i] = new SC_OUT(Taddress_t)          * [_param._nb_port_write_by_bank];
156        out_WRITE_OUT_DATA    [i] = new SC_OUT(Tdata_t   )          * [_param._nb_port_write_by_bank];
157
158        for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
159          {
160            rename = "out_WRITE_OUT_VAL_"+toString(i)+"_"+toString(j)+"     ";
161            out_WRITE_OUT_VAL     [i][j] = new SC_OUT(Tcontrol_t) (rename.c_str());
162
163            rename = " in_WRITE_OUT_ACK_"+toString(i)+"_"+toString(j)+"     ";
164             in_WRITE_OUT_ACK     [i][j] = new SC_IN (Tcontrol_t) (rename.c_str());
165
166            rename = "out_WRITE_OUT_ADDRESS_"+toString(i)+"_"+toString(j)+" ";
167            out_WRITE_OUT_ADDRESS [i][j] = new SC_OUT(Taddress_t) (rename.c_str());
168
169            rename = "out_WRITE_OUT_DATA_"+toString(i)+"_"+toString(j)+"    ";
170            out_WRITE_OUT_DATA    [i][j] = new SC_OUT(Tdata_t   ) (rename.c_str());
171          }
172      }
173
174    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
175
176    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"allocation","End");
177  };
178
179}; // end namespace registerfile_multi_banked_glue
180}; // end namespace registerfile_multi_banked
181}; // end namespace registerfile
182}; // end namespace generic
183
184}; // end namespace behavioural
185}; // end namespace morpheo             
186#endif
Note: See TracBrowser for help on using the repository browser.