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

Last change on this file since 10 was 10, checked in by rosiere, 17 years ago
File size: 6.5 KB
Line 
1#ifdef SYSTEMC
2/*
3 * $Id$
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace generic {
14namespace registerfile_multi_banked {
15namespace registerfile_multi_banked_glue {
16
17
18  void RegisterFile_Multi_Banked_Glue::allocation (void)
19  {
20    string rename;
21
22    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"allocation","Begin");
23
24#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
25    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
26#endif
27
28    in_READ_IN_VAL       = new SC_IN (Tcontrol_t)           * [_param._nb_port_read];
29   out_READ_IN_ACK       = new SC_OUT(Tcontrol_t)           * [_param._nb_port_read];
30    in_READ_IN_ADDRESS   = new SC_IN (Taddress_t)           * [_param._nb_port_read];
31   out_READ_IN_DATA      = new SC_OUT(Tdata_t   )           * [_param._nb_port_read];
32    in_READ_SELECT_VAL   = new SC_IN (Tcontrol_t)           * [_param._nb_port_read];
33   out_READ_SELECT_ACK   = new SC_OUT(Tcontrol_t)           * [_param._nb_port_read];
34
35   for (uint32_t i=0; i<_param._nb_port_read; i++)
36     {
37       rename = " in_READ_IN_VAL_"+toString(i)+"      ";
38        in_READ_IN_VAL       [i] = new SC_IN (Tcontrol_t) (rename.c_str());
39
40       rename = "out_READ_IN_ACK_"+toString(i)+"      ";
41       out_READ_IN_ACK       [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
42
43       rename = " in_READ_IN_ADDRESS_"+toString(i)+"  ";
44        in_READ_IN_ADDRESS   [i] = new SC_IN (Taddress_t) (rename.c_str());
45
46       rename = "out_READ_IN_DATA_"+toString(i)+"     ";
47       out_READ_IN_DATA      [i] = new SC_OUT(Tdata_t   ) (rename.c_str());
48
49       rename = " in_READ_SELECT_VAL_"+toString(i)+"  ";
50        in_READ_SELECT_VAL   [i] = new SC_IN (Tcontrol_t) (rename.c_str());
51
52       rename = "out_READ_SELECT_ACK_"+toString(i)+"  ";
53       out_READ_SELECT_ACK   [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
54     }
55                                                     
56   out_READ_OUT_VAL      = new SC_OUT(Tcontrol_t)          ** [_param._nb_bank];
57    in_READ_OUT_ACK      = new SC_IN (Tcontrol_t)          ** [_param._nb_bank];
58   out_READ_OUT_ADDRESS  = new SC_OUT(Taddress_t)          ** [_param._nb_bank];
59    in_READ_OUT_DATA     = new SC_IN (Tdata_t   )          ** [_param._nb_bank];
60
61    for (uint32_t i=0; i<_param._nb_bank; i++)
62      {
63        out_READ_OUT_VAL      [i] = new SC_OUT(Tcontrol_t)          * [_param._nb_port_read_by_bank];
64         in_READ_OUT_ACK      [i] = new SC_IN (Tcontrol_t)          * [_param._nb_port_read_by_bank];
65        out_READ_OUT_ADDRESS  [i] = new SC_OUT(Taddress_t)          * [_param._nb_port_read_by_bank];
66         in_READ_OUT_DATA     [i] = new SC_IN (Tdata_t   )          * [_param._nb_port_read_by_bank];
67
68        for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
69          {
70
71            rename="out_READ_OUT_VAL_"+toString(i)+"_"+toString(j)+"      ";
72            out_READ_OUT_VAL      [i][j] = new SC_OUT(Tcontrol_t) (rename.c_str());
73
74            rename=" in_READ_OUT_ACK_"+toString(i)+"_"+toString(j)+"      ";
75             in_READ_OUT_ACK      [i][j] = new SC_IN (Tcontrol_t) (rename.c_str());
76
77            rename="out_READ_OUT_ADDRESS_"+toString(i)+"_"+toString(j)+"  ";
78            out_READ_OUT_ADDRESS  [i][j] = new SC_OUT(Taddress_t) (rename.c_str());
79
80            rename=" in_READ_OUT_DATA_"+toString(i)+"_"+toString(j)+"     ";
81             in_READ_OUT_DATA     [i][j] = new SC_IN (Tdata_t   ) (rename.c_str());
82          }
83      }
84
85    in_WRITE_IN_VAL      = new SC_IN (Tcontrol_t)           * [_param._nb_port_write];
86   out_WRITE_IN_ACK      = new SC_OUT(Tcontrol_t)           * [_param._nb_port_write];
87    in_WRITE_IN_ADDRESS  = new SC_IN (Taddress_t)           * [_param._nb_port_write];
88    in_WRITE_IN_DATA     = new SC_IN (Tdata_t   )           * [_param._nb_port_write];
89    in_WRITE_SELECT_VAL  = new SC_IN (Tcontrol_t)           * [_param._nb_port_write];
90   out_WRITE_SELECT_ACK  = new SC_OUT(Tcontrol_t)           * [_param._nb_port_write];
91
92   for (uint32_t i=0; i<_param._nb_port_write; i++)
93     {
94       rename = " in_WRITE_IN_VAL_"+toString(i)+"     ";
95        in_WRITE_IN_VAL      [i] = new SC_IN (Tcontrol_t) (rename.c_str());
96
97       rename = "out_WRITE_IN_ACK_"+toString(i)+"     ";
98       out_WRITE_IN_ACK      [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
99
100       rename = " in_WRITE_IN_ADDRESS_"+toString(i)+" ";
101        in_WRITE_IN_ADDRESS  [i] = new SC_IN (Taddress_t) (rename.c_str());
102
103       rename = " in_WRITE_IN_DATA_"+toString(i)+"    ";
104        in_WRITE_IN_DATA     [i] = new SC_IN (Tdata_t   ) (rename.c_str());
105
106       rename = " in_WRITE_SELECT_VAL_"+toString(i)+" ";
107        in_WRITE_SELECT_VAL   [i] = new SC_IN (Tcontrol_t) (rename.c_str());
108
109       rename = "out_WRITE_SELECT_ACK_"+toString(i)+" ";
110       out_WRITE_SELECT_ACK   [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
111     }
112   
113   
114   out_WRITE_OUT_VAL     = new SC_OUT(Tcontrol_t)          ** [_param._nb_bank];
115    in_WRITE_OUT_ACK     = new SC_IN (Tcontrol_t)          ** [_param._nb_bank];
116   out_WRITE_OUT_ADDRESS = new SC_OUT(Taddress_t)          ** [_param._nb_bank];
117   out_WRITE_OUT_DATA    = new SC_OUT(Tdata_t   )          ** [_param._nb_bank];
118
119    for (uint32_t i=0; i<_param._nb_bank; i++)
120      {
121        out_WRITE_OUT_VAL     [i] = new SC_OUT(Tcontrol_t)          * [_param._nb_port_write_by_bank];
122         in_WRITE_OUT_ACK     [i] = new SC_IN (Tcontrol_t)          * [_param._nb_port_write_by_bank];
123        out_WRITE_OUT_ADDRESS [i] = new SC_OUT(Taddress_t)          * [_param._nb_port_write_by_bank];
124        out_WRITE_OUT_DATA    [i] = new SC_OUT(Tdata_t   )          * [_param._nb_port_write_by_bank];
125
126        for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
127          {
128            rename = "out_WRITE_OUT_VAL_"+toString(i)+"_"+toString(j)+"     ";
129            out_WRITE_OUT_VAL     [i][j] = new SC_OUT(Tcontrol_t) (rename.c_str());
130
131            rename = " in_WRITE_OUT_ACK_"+toString(i)+"_"+toString(j)+"     ";
132             in_WRITE_OUT_ACK     [i][j] = new SC_IN (Tcontrol_t) (rename.c_str());
133
134            rename = "out_WRITE_OUT_ADDRESS_"+toString(i)+"_"+toString(j)+" ";
135            out_WRITE_OUT_ADDRESS [i][j] = new SC_OUT(Taddress_t) (rename.c_str());
136
137            rename = "out_WRITE_OUT_DATA_"+toString(i)+"_"+toString(j)+"    ";
138            out_WRITE_OUT_DATA    [i][j] = new SC_OUT(Tdata_t   ) (rename.c_str());
139          }
140      }
141
142    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
143
144    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"allocation","End");
145  };
146
147}; // end namespace registerfile_multi_banked_glue
148}; // end namespace registerfile_multi_banked
149}; // end namespace generic
150
151}; // end namespace behavioural
152}; // end namespace morpheo             
153#endif
Note: See TracBrowser for help on using the repository browser.