source: trunk/IPs/systemC/Environment/include/Environment_Parameters.h @ 85

Last change on this file since 85 was 81, checked in by rosiere, 16 years ago
  • Finish Environment (and test)
  • Continue predictor_unit
  • Add external tools
  • svn keyword "Id" set
  • Property svn:keywords set to Id
File size: 8.4 KB
Line 
1#ifndef ENVIRONMENT_PARAMETERS_H
2#define ENVIRONMENT_PARAMETERS_H
3
4#include "../Cache/include/Cache_Parameters.h"
5#include "../Data/include/Data_Parameters.h"
6#include "../Queue/include/Parameters.h"
7#include "../TTY/include/TTY_Parameters.h"
8#include "../RamLock/include/RamLock_Parameters.h"
9#include "../Sim2OS/include/Sim2OS_Parameters.h"
10
11namespace environment {
12
13  class Parameters
14  {
15  public : uint32_t    nb_iport;
16  public : uint32_t    nb_dport;
17  public : uint32_t    nb_entity;
18  public : uint32_t  * icache_dedicated_nb_port;
19  public : uint32_t  * dcache_dedicated_nb_port;
20
21  public : uint32_t  * iaccess_nb_context    ;
22  public : uint32_t  * iaccess_nb_packet     ;
23  public : uint32_t  * iaccess_size_address  ;
24  public : uint32_t  * iaccess_nb_instruction;
25  public : uint32_t  * iaccess_size_instruction;
26
27  public : uint32_t  * daccess_nb_context    ;
28  public : uint32_t  * daccess_nb_packet     ;
29  public : uint32_t  * daccess_size_address  ;
30  public : uint32_t  * daccess_size_data     ;
31
32    // Parameters cache
33  public : cache::Parameters                     * param_cache;
34    // Parameters tty
35  public : uint32_t                                nb_component_tty;
36  public : uint32_t                              * tty_address;
37  public : tty::Parameters                      ** param_tty;
38    // Parameters ramlock
39  public : uint32_t                                nb_component_ramlock;
40  public : uint32_t                              * ramlock_address;
41  public : ramlock::Parameters                  ** param_ramlock;
42    // Parameters sim2OS
43  public : uint32_t                                sim2os_address;
44  public : uint32_t                                sim2os_size;
45  public : sim2os::Parameters                    * param_sim2os;
46    // Parameters data
47  public : data::Parameters                      * param_data;
48
49    // Parameters buffer_respons
50  public : queue::Parameters                    ** param_buffer_irsp;
51  public : queue::Parameters                    ** param_buffer_drsp;
52
53  public : Parameters (// General
54                       uint32_t    nb_cache_dedicated,
55                       
56                       uint32_t  * iaccess_nb_context,
57                       uint32_t  * iaccess_nb_instruction,
58                       uint32_t  * iaccess_nb_packet,
59                       uint32_t  * iaccess_size_address,
60                       uint32_t  * iaccess_size_instruction,
61
62                       uint32_t  * daccess_nb_context,
63                       uint32_t  * daccess_nb_packet,
64                       uint32_t  * daccess_size_address,
65                       uint32_t  * daccess_size_data,
66
67                       // buffer
68                       uint32_t  * buffer_irsp_size,
69                       uint32_t  * buffer_drsp_size,
70                       
71                       // Cache
72                       uint32_t  * icache_dedicated_nb_level     ,
73                       uint32_t  * icache_dedicated_nb_port      ,
74                       uint32_t ** icache_dedicated_nb_line      ,
75                       uint32_t ** icache_dedicated_size_line    ,
76                       uint32_t ** icache_dedicated_size_word    ,
77                       uint32_t ** icache_dedicated_associativity,
78                       uint32_t ** icache_dedicated_hit_latence  ,
79                       uint32_t ** icache_dedicated_miss_penality,
80                       uint32_t  * dcache_dedicated_nb_level     ,
81                       uint32_t  * dcache_dedicated_nb_port      ,
82                       uint32_t ** dcache_dedicated_nb_line      ,
83                       uint32_t ** dcache_dedicated_size_line    ,
84                       uint32_t ** dcache_dedicated_size_word    ,
85                       uint32_t ** dcache_dedicated_associativity,
86                       uint32_t ** dcache_dedicated_hit_latence  ,
87                       uint32_t ** dcache_dedicated_miss_penality,
88                       uint32_t    cache_shared_nb_level         ,
89//                     uint32_t    cache_shared_nb_port          ,
90                       uint32_t  * cache_shared_nb_line          ,
91                       uint32_t  * cache_shared_size_line        ,
92                       uint32_t  * cache_shared_size_word        ,
93                       uint32_t  * cache_shared_associativity    ,
94                       uint32_t  * cache_shared_hit_latence      ,
95                       uint32_t  * cache_shared_miss_penality    ,
96
97                       // TTY
98                       uint32_t       nb_component_tty,
99                       uint32_t     * tty_address,
100                       uint32_t     * nb_tty,
101                       std::string ** name_tty,
102                       bool           with_xtty,
103
104                       // RAMLOCK
105                       uint32_t       nb_component_ramlock,
106                       uint32_t     * ramlock_address,
107                       uint32_t     * nb_lock,
108
109                       // SIM2OS
110                       uint32_t       sim2os_address,
111                       uint32_t       sim2os_size,
112                       SOCLIB_SEGMENT_TABLE * segment_table
113                       )
114    {
115      this->nb_entity                = nb_cache_dedicated;
116
117      this->icache_dedicated_nb_port = icache_dedicated_nb_port;
118      this->dcache_dedicated_nb_port = dcache_dedicated_nb_port;
119
120      this->iaccess_nb_context       = iaccess_nb_context      ;
121      this->iaccess_nb_instruction   = iaccess_nb_instruction  ;
122      this->iaccess_nb_packet        = iaccess_nb_packet       ;
123      this->iaccess_size_address     = iaccess_size_address    ;
124      this->iaccess_size_instruction = iaccess_size_instruction;
125      this->daccess_nb_context       = daccess_nb_context      ;
126      this->daccess_nb_packet        = daccess_nb_packet       ;
127      this->daccess_size_address     = daccess_size_address    ;
128      this->daccess_size_data        = daccess_size_data       ;
129
130      param_cache = new cache::Parameters
131        (nb_cache_dedicated            ,
132         icache_dedicated_nb_level     ,
133         icache_dedicated_nb_port      ,
134         icache_dedicated_nb_line      ,
135         icache_dedicated_size_line    ,
136         icache_dedicated_size_word    ,
137         icache_dedicated_associativity,
138         icache_dedicated_hit_latence  ,
139         icache_dedicated_miss_penality,
140         dcache_dedicated_nb_level     ,
141         dcache_dedicated_nb_port      ,
142         dcache_dedicated_nb_line      ,
143         dcache_dedicated_size_line    ,
144         dcache_dedicated_size_word    ,
145         dcache_dedicated_associativity,
146         dcache_dedicated_hit_latence  ,
147         dcache_dedicated_miss_penality,
148         cache_shared_nb_level         ,
149//       cache_shared_nb_port          ,
150         cache_shared_nb_line          ,
151         cache_shared_size_line        ,
152         cache_shared_size_word        ,
153         cache_shared_associativity    ,
154         cache_shared_hit_latence      ,
155         cache_shared_miss_penality   
156         );
157
158      nb_iport = 0;
159      nb_dport = 0;
160      for (uint32_t i=0; i<nb_cache_dedicated; i++)
161        {
162          nb_iport += icache_dedicated_nb_port [i];
163          nb_dport += dcache_dedicated_nb_port [i];
164        }
165
166      this->nb_component_tty = nb_component_tty;
167      this->tty_address      = tty_address;
168     
169      param_tty = new tty::Parameters * [nb_component_tty];
170      for (uint32_t i=0; i<nb_component_tty; i++)
171        {
172          uint32_t tty_size = nb_tty [i] * 16; // 4 32bit-register by tty
173
174//        std::ostringstream str("");
175//        str << "tty_" << i;
176          segment_table->addSegment("tty",tty_address[i],tty_size,0,0,true);
177
178          param_tty [i] = new tty::Parameters (nb_tty    [i],
179                                               name_tty  [i],
180                                               with_xtty    );
181        }
182
183      this->nb_component_ramlock = nb_component_ramlock;
184      this->ramlock_address      = ramlock_address;
185     
186      param_ramlock = new ramlock::Parameters * [nb_component_ramlock];
187      for (uint32_t i=0; i<nb_component_ramlock; i++)
188        {
189          uint32_t ramlock_size = nb_lock[i]; // registre 8 bits because it's min size access
190//        std::ostringstream str ("");
191//        str << "ramlock" << i;
192          segment_table->addSegment("ramlock",ramlock_address[i],ramlock_size,0,0,true);
193
194          param_ramlock [i] = new ramlock::Parameters (nb_lock [i]);
195        }
196
197      this->sim2os_address       = sim2os_address      ;
198      this->sim2os_size          = sim2os_size         ;
199
200      segment_table->addSegment("sim2os",sim2os_address,sim2os_size,0,0,true);
201      param_sim2os = new sim2os::Parameters (segment_table);
202
203      param_data   = new data::Parameters (16,0,0, segment_table);
204
205      param_buffer_irsp = new queue::Parameters * [nb_entity];
206      for (uint32_t i=0; i<nb_entity; i++)
207        param_buffer_irsp [i] = new queue::Parameters (buffer_irsp_size [i]);
208
209      param_buffer_drsp = new queue::Parameters * [nb_entity];
210      for (uint32_t i=0; i<nb_entity; i++)
211        param_buffer_drsp [i] = new queue::Parameters (buffer_drsp_size [i]);
212    }
213
214  public : ~Parameters (void)
215    {
216      for (uint32_t i=0; i<nb_entity; i++)
217        delete param_buffer_irsp [i];
218      delete [] param_buffer_irsp;
219
220      for (uint32_t i=0; i<nb_entity; i++)
221        delete param_buffer_drsp [i];
222      delete [] param_buffer_drsp;
223
224      delete param_data  ;
225      delete param_sim2os;
226      for (uint32_t i=0; i<nb_component_ramlock; i++)
227        delete param_ramlock [i];
228      delete [] param_ramlock;
229      for (uint32_t i=0; i<nb_component_tty; i++)
230        delete param_tty [i];
231      delete [] param_tty;
232      delete param_cache;
233    }
234  };
235
236};
237#endif
Note: See TracBrowser for help on using the repository browser.