source: trunk/platforms/caba-tsar-ring/top.cpp @ 72

Last change on this file since 72 was 3, checked in by nipo, 15 years ago

Import platforms

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to "Author Date Id Rev URL Revision"
  • Property svn:mime-type set to text/plain
File size: 33.2 KB
Line 
1
2#include <systemc>
3#include <sys/time.h>
4#include <iostream>
5#include <cstdlib>
6#include <cstdarg>
7
8#include "mapping_table.h"
9#include "mips.h"
10#include "ississ2.h"
11#include "iss_simhelper.h"
12#include "vci_simple_ram.h"
13#include "vci_multi_tty.h"
14#include "vci_mem_cache.h"
15#include "vci_cc_xcache_wrapper.h"
16#include "vci_local_ring_network.h"
17#include "ring_gateway.h"
18#include "vci_simple_ring_network.h"
19
20#ifdef USE_GDB_SERVER
21#include "iss/gdbserver.h"
22#endif
23
24#include "segmentation.h"
25
26int _main(int argc, char *argv[])
27{
28        using namespace sc_core;
29        // Avoid repeating these everywhere
30        using soclib::common::IntTab;
31        using soclib::common::Segment;
32
33        // Define VCI parameters
34        typedef soclib::caba::VciParams<4,8,32,1,1,1,8,4,4,1> vci_param;
35        typedef soclib::common::IssIss2<soclib::common::IssSimhelper<soclib::common::MipsElIss> > proc_iss;
36
37        // Mapping table
38
39        soclib::common::MappingTable maptabp(32, IntTab(2,10), IntTab(2,3), 0x00C00000);
40
41        maptabp.add(Segment("reset", RESET_BASE, RESET_SIZE, IntTab(2,1), true));
42        maptabp.add(Segment("excep", EXCEP_BASE, EXCEP_SIZE, IntTab(2,1), true));
43        maptabp.add(Segment("tty"  , TTY_BASE  , TTY_SIZE  , IntTab(3,1), false));
44
45        maptabp.add(Segment("mc_r0" , MC0_R_BASE , MC0_R_SIZE , IntTab(0,0), false, true, IntTab(0,0)));
46        maptabp.add(Segment("mc_m0" , MC0_M_BASE , MC0_M_SIZE , IntTab(0,0), true ));
47        maptabp.add(Segment("mc_r1" , MC1_R_BASE , MC1_R_SIZE , IntTab(1,0), false, true, IntTab(1,0)));
48        maptabp.add(Segment("mc_m1" , MC1_M_BASE , MC1_M_SIZE , IntTab(1,0), true ));
49        maptabp.add(Segment("mc_r2" , MC2_R_BASE , MC2_R_SIZE , IntTab(2,0), false, true, IntTab(2,0)));
50        maptabp.add(Segment("mc_m2" , MC2_M_BASE , MC2_M_SIZE , IntTab(2,0), true ));
51        maptabp.add(Segment("mc_r3" , MC3_R_BASE , MC3_R_SIZE , IntTab(3,0), false, true, IntTab(3,0)));
52        maptabp.add(Segment("mc_m3" , MC3_M_BASE , MC3_M_SIZE , IntTab(3,0), true ));
53
54        std::cout << maptabp << std::endl;
55
56        soclib::common::MappingTable maptabc(32, IntTab(2,10), IntTab(2,3), 0x00C00000);
57
58        maptabc.add(Segment("proc0" , PROC0_BASE , PROC0_SIZE , IntTab(0,0), false, true, IntTab(0,0)));
59        maptabc.add(Segment("proc1" , PROC1_BASE , PROC1_SIZE , IntTab(0,1), false, true, IntTab(0,1)));
60        maptabc.add(Segment("proc2" , PROC2_BASE , PROC2_SIZE , IntTab(0,2), false, true, IntTab(0,2)));
61        maptabc.add(Segment("proc3" , PROC3_BASE , PROC3_SIZE , IntTab(0,3), false, true, IntTab(0,3)));
62        maptabc.add(Segment("proc4" , PROC4_BASE , PROC4_SIZE , IntTab(1,0), false, true, IntTab(1,0)));
63        maptabc.add(Segment("proc5" , PROC5_BASE , PROC5_SIZE , IntTab(1,1), false, true, IntTab(1,1)));
64        maptabc.add(Segment("proc6" , PROC6_BASE , PROC6_SIZE , IntTab(1,2), false, true, IntTab(1,2)));
65        maptabc.add(Segment("proc7" , PROC7_BASE , PROC7_SIZE , IntTab(1,3), false, true, IntTab(1,3)));
66        maptabc.add(Segment("proc8" , PROC8_BASE , PROC8_SIZE , IntTab(2,0), false, true, IntTab(2,0)));
67        maptabc.add(Segment("proc9" , PROC9_BASE , PROC9_SIZE , IntTab(2,1), false, true, IntTab(2,1)));
68        maptabc.add(Segment("proc10" , PROC10_BASE , PROC10_SIZE , IntTab(2,2), false, true, IntTab(2,2)));
69        maptabc.add(Segment("proc11" , PROC11_BASE , PROC11_SIZE , IntTab(2,3), false, true, IntTab(2,3)));
70        maptabc.add(Segment("proc12" , PROC12_BASE , PROC12_SIZE , IntTab(3,0), false, true, IntTab(3,0)));
71        maptabc.add(Segment("proc13" , PROC13_BASE , PROC13_SIZE , IntTab(3,1), false, true, IntTab(3,1)));
72        maptabc.add(Segment("proc14" , PROC14_BASE , PROC14_SIZE , IntTab(3,2), false, true, IntTab(3,2)));
73        maptabc.add(Segment("proc15" , PROC15_BASE , PROC15_SIZE , IntTab(3,3), false, true, IntTab(3,3)));
74
75        std::cout << maptabc << std::endl;
76
77        soclib::common::MappingTable maptabx(32, IntTab(8,4), IntTab(4,4), 0x00C00000);
78        maptabx.add(Segment("xram0" , MC0_M_BASE , MC0_M_SIZE , IntTab(0,0), false));
79        maptabx.add(Segment("xram1" , MC1_M_BASE , MC1_M_SIZE , IntTab(0,0), false));
80        maptabx.add(Segment("xram2" , MC2_M_BASE , MC2_M_SIZE , IntTab(0,0), false));
81        maptabx.add(Segment("xram3" , MC3_M_BASE , MC3_M_SIZE , IntTab(0,0), false));
82        std::cout << maptabx << std::endl;
83
84
85        // Signals
86
87        sc_clock        signal_clk("clk");
88        sc_signal<bool> signal_resetn("resetn");
89   
90        sc_signal<bool> signal_proc0_it0("proc0_it0");
91        sc_signal<bool> signal_proc0_it1("proc0_it1");
92        sc_signal<bool> signal_proc0_it2("proc0_it2");
93        sc_signal<bool> signal_proc0_it3("proc0_it3");
94        sc_signal<bool> signal_proc0_it4("proc0_it4");
95        sc_signal<bool> signal_proc0_it5("proc0_it5");
96
97        sc_signal<bool> signal_proc1_it0("proc1_it0");
98        sc_signal<bool> signal_proc1_it1("proc1_it1");
99        sc_signal<bool> signal_proc1_it2("proc1_it2");
100        sc_signal<bool> signal_proc1_it3("proc1_it3");
101        sc_signal<bool> signal_proc1_it4("proc1_it4");
102        sc_signal<bool> signal_proc1_it5("proc1_it5");
103
104        sc_signal<bool> signal_proc2_it0("proc2_it0");
105        sc_signal<bool> signal_proc2_it1("proc2_it1");
106        sc_signal<bool> signal_proc2_it2("proc2_it2");
107        sc_signal<bool> signal_proc2_it3("proc2_it3");
108        sc_signal<bool> signal_proc2_it4("proc2_it4");
109        sc_signal<bool> signal_proc2_it5("proc2_it5");
110
111        sc_signal<bool> signal_proc3_it0("proc3_it0");
112        sc_signal<bool> signal_proc3_it1("proc3_it1");
113        sc_signal<bool> signal_proc3_it2("proc3_it2");
114        sc_signal<bool> signal_proc3_it3("proc3_it3");
115        sc_signal<bool> signal_proc3_it4("proc3_it4");
116        sc_signal<bool> signal_proc3_it5("proc3_it5");
117
118        sc_signal<bool> signal_proc4_it0("proc4_it0");
119        sc_signal<bool> signal_proc4_it1("proc4_it1");
120        sc_signal<bool> signal_proc4_it2("proc4_it2");
121        sc_signal<bool> signal_proc4_it3("proc4_it3");
122        sc_signal<bool> signal_proc4_it4("proc4_it4");
123        sc_signal<bool> signal_proc4_it5("proc4_it5");
124
125        sc_signal<bool> signal_proc5_it0("proc5_it0");
126        sc_signal<bool> signal_proc5_it1("proc5_it1");
127        sc_signal<bool> signal_proc5_it2("proc5_it2");
128        sc_signal<bool> signal_proc5_it3("proc5_it3");
129        sc_signal<bool> signal_proc5_it4("proc5_it4");
130        sc_signal<bool> signal_proc5_it5("proc5_it5");
131
132        sc_signal<bool> signal_proc6_it0("proc6_it0");
133        sc_signal<bool> signal_proc6_it1("proc6_it1");
134        sc_signal<bool> signal_proc6_it2("proc6_it2");
135        sc_signal<bool> signal_proc6_it3("proc6_it3");
136        sc_signal<bool> signal_proc6_it4("proc6_it4");
137        sc_signal<bool> signal_proc6_it5("proc6_it5");
138
139        sc_signal<bool> signal_proc7_it0("proc7_it0");
140        sc_signal<bool> signal_proc7_it1("proc7_it1");
141        sc_signal<bool> signal_proc7_it2("proc7_it2");
142        sc_signal<bool> signal_proc7_it3("proc7_it3");
143        sc_signal<bool> signal_proc7_it4("proc7_it4");
144        sc_signal<bool> signal_proc7_it5("proc7_it5");
145
146        sc_signal<bool> signal_proc8_it0("proc8_it0");
147        sc_signal<bool> signal_proc8_it1("proc8_it1");
148        sc_signal<bool> signal_proc8_it2("proc8_it2");
149        sc_signal<bool> signal_proc8_it3("proc8_it3");
150        sc_signal<bool> signal_proc8_it4("proc8_it4");
151        sc_signal<bool> signal_proc8_it5("proc8_it5");
152
153        sc_signal<bool> signal_proc9_it0("proc9_it0");
154        sc_signal<bool> signal_proc9_it1("proc9_it1");
155        sc_signal<bool> signal_proc9_it2("proc9_it2");
156        sc_signal<bool> signal_proc9_it3("proc9_it3");
157        sc_signal<bool> signal_proc9_it4("proc9_it4");
158        sc_signal<bool> signal_proc9_it5("proc9_it5");
159
160        sc_signal<bool> signal_proc10_it0("proc10_it0");
161        sc_signal<bool> signal_proc10_it1("proc10_it1");
162        sc_signal<bool> signal_proc10_it2("proc10_it2");
163        sc_signal<bool> signal_proc10_it3("proc10_it3");
164        sc_signal<bool> signal_proc10_it4("proc10_it4");
165        sc_signal<bool> signal_proc10_it5("proc10_it5");
166
167        sc_signal<bool> signal_proc11_it0("proc11_it0");
168        sc_signal<bool> signal_proc11_it1("proc11_it1");
169        sc_signal<bool> signal_proc11_it2("proc11_it2");
170        sc_signal<bool> signal_proc11_it3("proc11_it3");
171        sc_signal<bool> signal_proc11_it4("proc11_it4");
172        sc_signal<bool> signal_proc11_it5("proc11_it5");
173
174        sc_signal<bool> signal_proc12_it0("proc12_it0");
175        sc_signal<bool> signal_proc12_it1("proc12_it1");
176        sc_signal<bool> signal_proc12_it2("proc12_it2");
177        sc_signal<bool> signal_proc12_it3("proc12_it3");
178        sc_signal<bool> signal_proc12_it4("proc12_it4");
179        sc_signal<bool> signal_proc12_it5("proc12_it5");
180
181        sc_signal<bool> signal_proc13_it0("proc13_it0");
182        sc_signal<bool> signal_proc13_it1("proc13_it1");
183        sc_signal<bool> signal_proc13_it2("proc13_it2");
184        sc_signal<bool> signal_proc13_it3("proc13_it3");
185        sc_signal<bool> signal_proc13_it4("proc13_it4");
186        sc_signal<bool> signal_proc13_it5("proc13_it5");
187
188        sc_signal<bool> signal_proc14_it0("proc14_it0");
189        sc_signal<bool> signal_proc14_it1("proc14_it1");
190        sc_signal<bool> signal_proc14_it2("proc14_it2");
191        sc_signal<bool> signal_proc14_it3("proc14_it3");
192        sc_signal<bool> signal_proc14_it4("proc14_it4");
193        sc_signal<bool> signal_proc14_it5("proc14_it5");
194
195        sc_signal<bool> signal_proc15_it0("proc15_it0");
196        sc_signal<bool> signal_proc15_it1("proc15_it1");
197        sc_signal<bool> signal_proc15_it2("proc15_it2");
198        sc_signal<bool> signal_proc15_it3("proc15_it3");
199        sc_signal<bool> signal_proc15_it4("proc15_it4");
200        sc_signal<bool> signal_proc15_it5("proc15_it5");
201
202
203        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc0("vci_ini_proc0");
204        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc0("vci_tgt_proc0");
205
206        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc1("vci_ini_proc1");
207        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc1("vci_tgt_proc1");
208
209        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc2("vci_ini_proc2");
210        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc2("vci_tgt_proc2");
211
212        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc3("vci_ini_proc3");
213        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc3("vci_tgt_proc3");
214
215        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc4("vci_ini_proc4");
216        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc4("vci_tgt_proc4");
217
218        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc5("vci_ini_proc5");
219        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc5("vci_tgt_proc5");
220
221        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc6("vci_ini_proc6");
222        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc6("vci_tgt_proc6");
223
224        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc7("vci_ini_proc7");
225        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc7("vci_tgt_proc7");
226
227        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc8("vci_ini_proc8");
228        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc8("vci_tgt_proc8");
229
230        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc9("vci_ini_proc9");
231        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc9("vci_tgt_proc9");
232
233        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc10("vci_ini_proc10");
234        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc10("vci_tgt_proc10");
235
236        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc11("vci_ini_proc11");
237        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc11("vci_tgt_proc11");
238
239        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc12("vci_ini_proc12");
240        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc12("vci_tgt_proc12");
241
242        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc13("vci_ini_proc13");
243        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc13("vci_tgt_proc13");
244
245        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc14("vci_ini_proc14");
246        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc14("vci_tgt_proc14");
247
248        soclib::caba::VciSignals<vci_param> signal_vci_ini_proc15("vci_ini_proc15");
249        soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc15("vci_tgt_proc15");
250
251        soclib::caba::VciSignals<vci_param> signal_vci_tgt_tty("vci_tgt_tty");
252
253        soclib::caba::VciSignals<vci_param> signal_vci_tgt_rom("vci_tgt_rom");
254
255        soclib::caba::VciSignals<vci_param> signal_vci_tgt_xram("vci_tgt_xram");
256
257        soclib::caba::VciSignals<vci_param> signal_vci_ixr_memc0("vci_ixr_memc0");
258        soclib::caba::VciSignals<vci_param> signal_vci_ini_memc0("vci_ini_memc0");
259        soclib::caba::VciSignals<vci_param> signal_vci_tgt_memc0("vci_tgt_memc0");
260
261        soclib::caba::VciSignals<vci_param> signal_vci_ixr_memc1("vci_ixr_memc1");
262        soclib::caba::VciSignals<vci_param> signal_vci_ini_memc1("vci_ini_memc1");
263        soclib::caba::VciSignals<vci_param> signal_vci_tgt_memc1("vci_tgt_memc1");
264
265        soclib::caba::VciSignals<vci_param> signal_vci_ixr_memc2("vci_ixr_memc2");
266        soclib::caba::VciSignals<vci_param> signal_vci_ini_memc2("vci_ini_memc2");
267        soclib::caba::VciSignals<vci_param> signal_vci_tgt_memc2("vci_tgt_memc2");
268
269        soclib::caba::VciSignals<vci_param> signal_vci_ixr_memc3("vci_ixr_memc3");
270        soclib::caba::VciSignals<vci_param> signal_vci_ini_memc3("vci_ini_memc3");
271        soclib::caba::VciSignals<vci_param> signal_vci_tgt_memc3("vci_tgt_memc3");
272
273        sc_signal<bool> signal_tty_irq0("signal_tty_irq0");
274        sc_signal<bool> signal_tty_irq1("signal_tty_irq1");
275        sc_signal<bool> signal_tty_irq2("signal_tty_irq2");
276        sc_signal<bool> signal_tty_irq3("signal_tty_irq3");
277        sc_signal<bool> signal_tty_irq4("signal_tty_irq4");
278        sc_signal<bool> signal_tty_irq5("signal_tty_irq5");
279        sc_signal<bool> signal_tty_irq6("signal_tty_irq6");
280        sc_signal<bool> signal_tty_irq7("signal_tty_irq7");
281        sc_signal<bool> signal_tty_irq8("signal_tty_irq8");
282        sc_signal<bool> signal_tty_irq9("signal_tty_irq9");
283        sc_signal<bool> signal_tty_irq10("signal_tty_irq10");
284        sc_signal<bool> signal_tty_irq11("signal_tty_irq11");
285        sc_signal<bool> signal_tty_irq12("signal_tty_irq12");
286        sc_signal<bool> signal_tty_irq13("signal_tty_irq13");
287        sc_signal<bool> signal_tty_irq14("signal_tty_irq14");
288        sc_signal<bool> signal_tty_irq15("signal_tty_irq15");
289
290        // Components
291        // VCI ports indexation : 3 initiateurs et 5 cibles
292
293        // INIT0 : proc0_ini
294        // INIT1 : memc_ini
295        // INIT2 : memc_ixr
296
297        // TGT 0 : rom_tgt
298        // TGT 1 : tty_tgt
299        // TGT 2 : xram_tgt
300        // TGT 3 : memc_tgt
301        // TGT 4 : proc0_tgt
302
303        soclib::common::Loader loader("soft/bin.soft");
304
305        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
306        proc0("proc0", 0, maptabp,maptabc,IntTab(0,0),IntTab(0,0),4,64,16,4,64,16,CLEANUP_OFFSET);
307
308        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
309        proc1("proc1", 1, maptabp,maptabc,IntTab(0,1),IntTab(0,1),4,64,16,4,64,16,CLEANUP_OFFSET);
310
311        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
312        proc2("proc2", 2, maptabp,maptabc,IntTab(0,2),IntTab(0,2),4,64,16,4,64,16,CLEANUP_OFFSET);
313
314        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
315        proc3("proc3", 3, maptabp,maptabc,IntTab(0,3),IntTab(0,3),4,64,16,4,64,16,CLEANUP_OFFSET);
316
317        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
318        proc4("proc4", 4, maptabp,maptabc,IntTab(1,0),IntTab(1,0),4,64,16,4,64,16,CLEANUP_OFFSET);
319
320        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
321        proc5("proc5", 5, maptabp,maptabc,IntTab(1,1),IntTab(1,1),4,64,16,4,64,16,CLEANUP_OFFSET);
322
323        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
324        proc6("proc6", 6, maptabp,maptabc,IntTab(1,2),IntTab(1,2),4,64,16,4,64,16,CLEANUP_OFFSET);
325
326        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
327        proc7("proc7", 7, maptabp,maptabc,IntTab(1,3),IntTab(1,3),4,64,16,4,64,16,CLEANUP_OFFSET);
328
329        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
330        proc8("proc8", 8, maptabp,maptabc,IntTab(2,0),IntTab(2,0),4,64,16,4,64,16,CLEANUP_OFFSET);
331
332        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
333        proc9("proc9", 9, maptabp,maptabc,IntTab(2,1),IntTab(2,1),4,64,16,4,64,16,CLEANUP_OFFSET);
334
335        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
336        proc10("proc10", 10, maptabp,maptabc,IntTab(2,2),IntTab(2,2),4,64,16,4,64,16,CLEANUP_OFFSET);
337
338        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
339        proc11("proc11", 11, maptabp,maptabc,IntTab(2,3),IntTab(2,3),4,64,16,4,64,16,CLEANUP_OFFSET);
340
341        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
342        proc12("proc12", 12, maptabp,maptabc,IntTab(3,0),IntTab(3,0),4,64,16,4,64,16,CLEANUP_OFFSET);
343
344        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
345        proc13("proc13", 13, maptabp,maptabc,IntTab(3,1),IntTab(3,1),4,64,16,4,64,16,CLEANUP_OFFSET);
346
347        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
348        proc14("proc14", 14, maptabp,maptabc,IntTab(3,2),IntTab(3,2),4,64,16,4,64,16,CLEANUP_OFFSET);
349
350        soclib::caba::VciCcXcacheWrapper<vci_param, proc_iss >
351        proc15("proc15", 15, maptabp,maptabc,IntTab(3,3),IntTab(3,3),4,64,16,4,64,16,CLEANUP_OFFSET);
352
353        soclib::caba::VciSimpleRam<vci_param>
354        rom("rom", IntTab(2,1), maptabp, loader);
355
356        soclib::caba::VciSimpleRam<vci_param>
357        xram("xram",IntTab(0,0),maptabx, loader);
358
359        soclib::caba::VciMemCache<vci_param>
360        memc0("memc0",maptabp,maptabc,maptabx,IntTab(0,0),IntTab(0,0),IntTab(0,0),16,256,16);
361
362        soclib::caba::VciMemCache<vci_param>
363        memc1("memc1",maptabp,maptabc,maptabx,IntTab(1,0),IntTab(1,0),IntTab(1,0),16,256,16);
364
365        soclib::caba::VciMemCache<vci_param>
366        memc2("memc2",maptabp,maptabc,maptabx,IntTab(2,0),IntTab(2,0),IntTab(2,0),16,256,16);
367
368        soclib::caba::VciMemCache<vci_param>
369        memc3("memc3",maptabp,maptabc,maptabx,IntTab(3,0),IntTab(3,0),IntTab(3,0),16,256,16);
370       
371        soclib::caba::VciMultiTty<vci_param>
372        tty("tty",IntTab(3,1),maptabp,"tty0","tty1","tty2","tty3","tty4","tty5","tty6","tty7","tty8","tty9","tty10","tty11","tty12","tty13","tty14","tty15",NULL);
373
374//--
375        soclib::caba::GateSignals gate_PN0[2];
376        soclib::caba::GateSignals gate_PN1[2];
377        soclib::caba::GateSignals gate_PN2[2];
378        soclib::caba::GateSignals gate_PN3[2];
379
380        soclib::caba::GateSignals gate_CN0[2];
381        soclib::caba::GateSignals gate_CN1[2];
382        soclib::caba::GateSignals gate_CN2[2];
383        soclib::caba::GateSignals gate_CN3[2];
384       
385//--
386        soclib::caba::VciLocalRingNetwork<vci_param>
387        clusterPN0("clusterPN0",maptabp, IntTab(0), 2, 18, 4, 1 );
388
389        soclib::caba::VciLocalRingNetwork<vci_param>
390        clusterPN1("clusterPN1",maptabp, IntTab(1), 2, 18, 4, 1 );
391
392        soclib::caba::VciLocalRingNetwork<vci_param>
393        clusterPN2("clusterPN2",maptabp, IntTab(2), 2, 18, 4, 2 );
394
395        soclib::caba::VciLocalRingNetwork<vci_param>
396        clusterPN3("clusterPN3",maptabp, IntTab(3), 2, 18, 4, 2 );
397//--
398        soclib::caba::RingSignals rsig[4];
399
400        soclib::caba::RingGateway
401        routergatePN0("routergatePN0",maptabp, IntTab(0), true , true, true, 18);
402
403        soclib::caba::RingGateway
404        routergatePN1("routergatePN1",maptabp, IntTab(1), false, false, true, 18);
405
406        soclib::caba::RingGateway
407        routergatePN2("routergatePN2",maptabp, IntTab(2), false, false, true, 18);
408
409        soclib::caba::RingGateway
410        routergatePN3("routergatePN3",maptabp, IntTab(3), false, false, true, 18);
411
412        routergatePN0.p_clk(signal_clk); 
413        routergatePN0.p_resetn(signal_resetn); 
414        routergatePN0.p_ring_in(rsig[0]);
415        routergatePN0.p_ring_out(rsig[1]);
416        routergatePN0.p_gate_initiator(gate_PN0[0]);
417        routergatePN0.p_gate_target(gate_PN0[1]);
418
419        routergatePN1.p_clk(signal_clk); 
420        routergatePN1.p_resetn(signal_resetn); 
421        routergatePN1.p_ring_in(rsig[1]);
422        routergatePN1.p_ring_out(rsig[2]);
423        routergatePN1.p_gate_initiator(gate_PN1[0]);
424        routergatePN1.p_gate_target(gate_PN1[1]);
425
426        routergatePN2.p_clk(signal_clk); 
427        routergatePN2.p_resetn(signal_resetn); 
428        routergatePN2.p_ring_in(rsig[2]);
429        routergatePN2.p_ring_out(rsig[3]);
430        routergatePN2.p_gate_initiator(gate_PN2[0]);
431        routergatePN2.p_gate_target(gate_PN2[1]);
432
433        routergatePN3.p_clk(signal_clk); 
434        routergatePN3.p_resetn(signal_resetn); 
435        routergatePN3.p_ring_in(rsig[3]);
436        routergatePN3.p_ring_out(rsig[0]);
437        routergatePN3.p_gate_initiator(gate_PN3[0]);
438        routergatePN3.p_gate_target(gate_PN3[1]);
439
440//--
441        soclib::caba::VciLocalRingNetwork<vci_param>
442        clusterCN0("clusterCN0",maptabc, IntTab(0), 2, 2, 1, 4 );
443
444        soclib::caba::VciLocalRingNetwork<vci_param>
445        clusterCN1("clusterCN1",maptabc, IntTab(1), 2, 2, 1, 4 );
446
447        soclib::caba::VciLocalRingNetwork<vci_param>
448        clusterCN2("clusterCN2",maptabc, IntTab(2), 2, 2, 1, 4 );
449
450        soclib::caba::VciLocalRingNetwork<vci_param>
451        clusterCN3("clusterCN3",maptabc, IntTab(3), 2, 2, 1, 4 );       
452//--
453        soclib::caba::RingSignals rsigc[4];
454
455        soclib::caba::RingGateway
456        routergateCN0("routergateCN0",maptabp, IntTab(0), true , true, true, 2);
457
458        soclib::caba::RingGateway
459        routergateCN1("routergateCN1",maptabp, IntTab(1), false, false, true, 2);
460
461        soclib::caba::RingGateway
462        routergateCN2("routergateCN2",maptabp, IntTab(2), false, false, true, 2);
463
464        soclib::caba::RingGateway
465        routergateCN3("routergateCN3",maptabp, IntTab(3), false, false, true, 2);
466
467        routergateCN0.p_clk(signal_clk); 
468        routergateCN0.p_resetn(signal_resetn); 
469        routergateCN0.p_ring_in(rsigc[0]);
470        routergateCN0.p_ring_out(rsigc[1]);
471        routergateCN0.p_gate_initiator(gate_CN0[0]);
472        routergateCN0.p_gate_target(gate_CN0[1]);
473       
474        routergateCN1.p_clk(signal_clk); 
475        routergateCN1.p_resetn(signal_resetn); 
476        routergateCN1.p_ring_in(rsigc[1]);
477        routergateCN1.p_ring_out(rsigc[2]);
478        routergateCN1.p_gate_initiator(gate_CN1[0]);
479        routergateCN1.p_gate_target(gate_CN1[1]);
480       
481        routergateCN2.p_clk(signal_clk); 
482        routergateCN2.p_resetn(signal_resetn); 
483        routergateCN2.p_ring_in(rsigc[2]);
484        routergateCN2.p_ring_out(rsigc[3]);
485        routergateCN2.p_gate_initiator(gate_CN2[0]);
486        routergateCN2.p_gate_target(gate_CN2[1]);
487
488        routergateCN3.p_clk(signal_clk); 
489        routergateCN3.p_resetn(signal_resetn); 
490        routergateCN3.p_ring_in(rsigc[3]);
491        routergateCN3.p_ring_out(rsigc[0]);
492        routergateCN3.p_gate_initiator(gate_CN3[0]);
493        routergateCN3.p_gate_target(gate_CN3[1]);
494       
495
496//--
497        soclib::caba::VciSimpleRingNetwork<vci_param>
498        xring("xring",maptabx, IntTab(), 2, 4, 1);
499
500        // Net-List
501 
502        proc0.p_clk(signal_clk); 
503        proc0.p_resetn(signal_resetn); 
504        proc0.p_irq[0](signal_proc0_it0);
505        proc0.p_irq[1](signal_proc0_it1);
506        proc0.p_irq[2](signal_proc0_it2);
507        proc0.p_irq[3](signal_proc0_it3);
508        proc0.p_irq[4](signal_proc0_it4);
509        proc0.p_irq[5](signal_proc0_it5);
510        proc0.p_vci_ini(signal_vci_ini_proc0);
511        proc0.p_vci_tgt(signal_vci_tgt_proc0);
512
513        proc1.p_clk(signal_clk); 
514        proc1.p_resetn(signal_resetn); 
515        proc1.p_irq[0](signal_proc1_it0);
516        proc1.p_irq[1](signal_proc1_it1);
517        proc1.p_irq[2](signal_proc1_it2);
518        proc1.p_irq[3](signal_proc1_it3);
519        proc1.p_irq[4](signal_proc1_it4);
520        proc1.p_irq[5](signal_proc1_it5);
521        proc1.p_vci_ini(signal_vci_ini_proc1);
522        proc1.p_vci_tgt(signal_vci_tgt_proc1);
523
524        proc2.p_clk(signal_clk); 
525        proc2.p_resetn(signal_resetn); 
526        proc2.p_irq[0](signal_proc2_it0);
527        proc2.p_irq[1](signal_proc2_it1);
528        proc2.p_irq[2](signal_proc2_it2);
529        proc2.p_irq[3](signal_proc2_it3);
530        proc2.p_irq[4](signal_proc2_it4);
531        proc2.p_irq[5](signal_proc2_it5);
532        proc2.p_vci_ini(signal_vci_ini_proc2);
533        proc2.p_vci_tgt(signal_vci_tgt_proc2);
534
535        proc3.p_clk(signal_clk); 
536        proc3.p_resetn(signal_resetn); 
537        proc3.p_irq[0](signal_proc3_it0);
538        proc3.p_irq[1](signal_proc3_it1);
539        proc3.p_irq[2](signal_proc3_it2);
540        proc3.p_irq[3](signal_proc3_it3);
541        proc3.p_irq[4](signal_proc3_it4);
542        proc3.p_irq[5](signal_proc3_it5);
543        proc3.p_vci_ini(signal_vci_ini_proc3);
544        proc3.p_vci_tgt(signal_vci_tgt_proc3);
545
546        proc4.p_clk(signal_clk); 
547        proc4.p_resetn(signal_resetn); 
548        proc4.p_irq[0](signal_proc4_it0);
549        proc4.p_irq[1](signal_proc4_it1);
550        proc4.p_irq[2](signal_proc4_it2);
551        proc4.p_irq[3](signal_proc4_it3);
552        proc4.p_irq[4](signal_proc4_it4);
553        proc4.p_irq[5](signal_proc4_it5);
554        proc4.p_vci_ini(signal_vci_ini_proc4);
555        proc4.p_vci_tgt(signal_vci_tgt_proc4);
556
557        proc5.p_clk(signal_clk); 
558        proc5.p_resetn(signal_resetn); 
559        proc5.p_irq[0](signal_proc5_it0);
560        proc5.p_irq[1](signal_proc5_it1);
561        proc5.p_irq[2](signal_proc5_it2);
562        proc5.p_irq[3](signal_proc5_it3);
563        proc5.p_irq[4](signal_proc5_it4);
564        proc5.p_irq[5](signal_proc5_it5);
565        proc5.p_vci_ini(signal_vci_ini_proc5);
566        proc5.p_vci_tgt(signal_vci_tgt_proc5);
567
568        proc6.p_clk(signal_clk); 
569        proc6.p_resetn(signal_resetn); 
570        proc6.p_irq[0](signal_proc6_it0);
571        proc6.p_irq[1](signal_proc6_it1);
572        proc6.p_irq[2](signal_proc6_it2);
573        proc6.p_irq[3](signal_proc6_it3);
574        proc6.p_irq[4](signal_proc6_it4);
575        proc6.p_irq[5](signal_proc6_it5);
576        proc6.p_vci_ini(signal_vci_ini_proc6);
577        proc6.p_vci_tgt(signal_vci_tgt_proc6);
578
579        proc7.p_clk(signal_clk); 
580        proc7.p_resetn(signal_resetn); 
581        proc7.p_irq[0](signal_proc7_it0);
582        proc7.p_irq[1](signal_proc7_it1);
583        proc7.p_irq[2](signal_proc7_it2);
584        proc7.p_irq[3](signal_proc7_it3);
585        proc7.p_irq[4](signal_proc7_it4);
586        proc7.p_irq[5](signal_proc7_it5);
587        proc7.p_vci_ini(signal_vci_ini_proc7);
588        proc7.p_vci_tgt(signal_vci_tgt_proc7);
589
590        proc8.p_clk(signal_clk); 
591        proc8.p_resetn(signal_resetn); 
592        proc8.p_irq[0](signal_proc8_it0);
593        proc8.p_irq[1](signal_proc8_it1);
594        proc8.p_irq[2](signal_proc8_it2);
595        proc8.p_irq[3](signal_proc8_it3);
596        proc8.p_irq[4](signal_proc8_it4);
597        proc8.p_irq[5](signal_proc8_it5);
598        proc8.p_vci_ini(signal_vci_ini_proc8);
599        proc8.p_vci_tgt(signal_vci_tgt_proc8);
600
601        proc9.p_clk(signal_clk); 
602        proc9.p_resetn(signal_resetn); 
603        proc9.p_irq[0](signal_proc9_it0);
604        proc9.p_irq[1](signal_proc9_it1);
605        proc9.p_irq[2](signal_proc9_it2);
606        proc9.p_irq[3](signal_proc9_it3);
607        proc9.p_irq[4](signal_proc9_it4);
608        proc9.p_irq[5](signal_proc9_it5);
609        proc9.p_vci_ini(signal_vci_ini_proc9);
610        proc9.p_vci_tgt(signal_vci_tgt_proc9);
611
612        proc10.p_clk(signal_clk); 
613        proc10.p_resetn(signal_resetn); 
614        proc10.p_irq[0](signal_proc10_it0);
615        proc10.p_irq[1](signal_proc10_it1);
616        proc10.p_irq[2](signal_proc10_it2);
617        proc10.p_irq[3](signal_proc10_it3);
618        proc10.p_irq[4](signal_proc10_it4);
619        proc10.p_irq[5](signal_proc10_it5);
620        proc10.p_vci_ini(signal_vci_ini_proc10);
621        proc10.p_vci_tgt(signal_vci_tgt_proc10);
622
623        proc11.p_clk(signal_clk); 
624        proc11.p_resetn(signal_resetn); 
625        proc11.p_irq[0](signal_proc11_it0);
626        proc11.p_irq[1](signal_proc11_it1);
627        proc11.p_irq[2](signal_proc11_it2);
628        proc11.p_irq[3](signal_proc11_it3);
629        proc11.p_irq[4](signal_proc11_it4);
630        proc11.p_irq[5](signal_proc11_it5);
631        proc11.p_vci_ini(signal_vci_ini_proc11);
632        proc11.p_vci_tgt(signal_vci_tgt_proc11);
633
634        proc12.p_clk(signal_clk); 
635        proc12.p_resetn(signal_resetn); 
636        proc12.p_irq[0](signal_proc12_it0);
637        proc12.p_irq[1](signal_proc12_it1);
638        proc12.p_irq[2](signal_proc12_it2);
639        proc12.p_irq[3](signal_proc12_it3);
640        proc12.p_irq[4](signal_proc12_it4);
641        proc12.p_irq[5](signal_proc12_it5);
642        proc12.p_vci_ini(signal_vci_ini_proc12);
643        proc12.p_vci_tgt(signal_vci_tgt_proc12);
644
645        proc13.p_clk(signal_clk); 
646        proc13.p_resetn(signal_resetn); 
647        proc13.p_irq[0](signal_proc13_it0);
648        proc13.p_irq[1](signal_proc13_it1);
649        proc13.p_irq[2](signal_proc13_it2);
650        proc13.p_irq[3](signal_proc13_it3);
651        proc13.p_irq[4](signal_proc13_it4);
652        proc13.p_irq[5](signal_proc13_it5);
653        proc13.p_vci_ini(signal_vci_ini_proc13);
654        proc13.p_vci_tgt(signal_vci_tgt_proc13);
655
656        proc14.p_clk(signal_clk); 
657        proc14.p_resetn(signal_resetn); 
658        proc14.p_irq[0](signal_proc14_it0);
659        proc14.p_irq[1](signal_proc14_it1);
660        proc14.p_irq[2](signal_proc14_it2);
661        proc14.p_irq[3](signal_proc14_it3);
662        proc14.p_irq[4](signal_proc14_it4);
663        proc14.p_irq[5](signal_proc14_it5);
664        proc14.p_vci_ini(signal_vci_ini_proc14);
665        proc14.p_vci_tgt(signal_vci_tgt_proc14);
666
667        proc15.p_clk(signal_clk); 
668        proc15.p_resetn(signal_resetn); 
669        proc15.p_irq[0](signal_proc15_it0);
670        proc15.p_irq[1](signal_proc15_it1);
671        proc15.p_irq[2](signal_proc15_it2);
672        proc15.p_irq[3](signal_proc15_it3);
673        proc15.p_irq[4](signal_proc15_it4);
674        proc15.p_irq[5](signal_proc15_it5);
675        proc15.p_vci_ini(signal_vci_ini_proc15);
676        proc15.p_vci_tgt(signal_vci_tgt_proc15);
677
678
679
680        rom.p_clk(signal_clk);
681        rom.p_resetn(signal_resetn);
682        rom.p_vci(signal_vci_tgt_rom);
683
684        tty.p_clk(signal_clk);
685        tty.p_resetn(signal_resetn);
686        tty.p_vci(signal_vci_tgt_tty);
687        tty.p_irq[0](signal_tty_irq0);
688        tty.p_irq[1](signal_tty_irq1);
689        tty.p_irq[2](signal_tty_irq2);
690        tty.p_irq[3](signal_tty_irq3);
691        tty.p_irq[4](signal_tty_irq4);
692        tty.p_irq[5](signal_tty_irq5);
693        tty.p_irq[6](signal_tty_irq6);
694        tty.p_irq[7](signal_tty_irq7);
695        tty.p_irq[8](signal_tty_irq8);
696        tty.p_irq[9](signal_tty_irq9);
697        tty.p_irq[10](signal_tty_irq10);
698        tty.p_irq[11](signal_tty_irq11);
699        tty.p_irq[12](signal_tty_irq12);
700        tty.p_irq[13](signal_tty_irq13);
701        tty.p_irq[14](signal_tty_irq14);
702        tty.p_irq[15](signal_tty_irq15); 
703
704        memc0.p_clk(signal_clk);
705        memc0.p_resetn(signal_resetn);
706        memc0.p_vci_tgt(signal_vci_tgt_memc0); 
707        memc0.p_vci_ini(signal_vci_ini_memc0);
708        memc0.p_vci_ixr(signal_vci_ixr_memc0);
709
710        memc1.p_clk(signal_clk);
711        memc1.p_resetn(signal_resetn);
712        memc1.p_vci_tgt(signal_vci_tgt_memc1); 
713        memc1.p_vci_ini(signal_vci_ini_memc1);
714        memc1.p_vci_ixr(signal_vci_ixr_memc1);
715
716        memc2.p_clk(signal_clk);
717        memc2.p_resetn(signal_resetn);
718        memc2.p_vci_tgt(signal_vci_tgt_memc2); 
719        memc2.p_vci_ini(signal_vci_ini_memc2);
720        memc2.p_vci_ixr(signal_vci_ixr_memc2);
721
722        memc3.p_clk(signal_clk);
723        memc3.p_resetn(signal_resetn);
724        memc3.p_vci_tgt(signal_vci_tgt_memc3); 
725        memc3.p_vci_ini(signal_vci_ini_memc3);
726        memc3.p_vci_ixr(signal_vci_ixr_memc3);
727
728        xram.p_clk(signal_clk);
729        xram.p_resetn(signal_resetn);
730        xram.p_vci(signal_vci_tgt_xram);       
731
732        ///////////////////////////////////////////////////////
733        // Réseau vers la XRAM
734        ///////////////////////////////////////////////////////
735
736        xring.p_clk(signal_clk);
737        xring.p_resetn(signal_resetn);
738
739        xring.p_to_initiator[0](signal_vci_ixr_memc0);
740        xring.p_to_initiator[1](signal_vci_ixr_memc1);
741        xring.p_to_initiator[2](signal_vci_ixr_memc2);
742        xring.p_to_initiator[3](signal_vci_ixr_memc3);
743
744        xring.p_to_target[0](signal_vci_tgt_xram);
745
746        ///////////////////////////////////////////////////////
747        // Réseau des commandes primaires
748        ///////////////////////////////////////////////////////
749
750        clusterPN0.p_clk(signal_clk);
751        clusterPN0.p_resetn(signal_resetn);
752
753        clusterPN0.p_to_initiator[0](signal_vci_ini_proc0);
754        clusterPN0.p_to_initiator[1](signal_vci_ini_proc1);
755        clusterPN0.p_to_initiator[2](signal_vci_ini_proc2);
756        clusterPN0.p_to_initiator[3](signal_vci_ini_proc3);
757
758        clusterPN0.p_to_target[0](signal_vci_tgt_memc0);
759
760        clusterPN0.p_gate_initiator(gate_PN0[1]);
761        clusterPN0.p_gate_target(gate_PN0[0]);
762
763        clusterPN1.p_clk(signal_clk);
764        clusterPN1.p_resetn(signal_resetn);
765
766        clusterPN1.p_to_initiator[0](signal_vci_ini_proc4);
767        clusterPN1.p_to_initiator[1](signal_vci_ini_proc5);
768        clusterPN1.p_to_initiator[2](signal_vci_ini_proc6);
769        clusterPN1.p_to_initiator[3](signal_vci_ini_proc7);
770
771        clusterPN1.p_to_target[0](signal_vci_tgt_memc1);
772
773        clusterPN1.p_gate_initiator(gate_PN1[1]);
774        clusterPN1.p_gate_target(gate_PN1[0]);
775
776        clusterPN2.p_clk(signal_clk);
777        clusterPN2.p_resetn(signal_resetn);
778
779        clusterPN2.p_to_initiator[0](signal_vci_ini_proc8);
780        clusterPN2.p_to_initiator[1](signal_vci_ini_proc9);
781        clusterPN2.p_to_initiator[2](signal_vci_ini_proc10);
782        clusterPN2.p_to_initiator[3](signal_vci_ini_proc11);
783       
784        clusterPN2.p_to_target[0](signal_vci_tgt_memc2);
785        clusterPN2.p_to_target[1](signal_vci_tgt_rom);
786
787        clusterPN2.p_gate_initiator(gate_PN2[1]);
788        clusterPN2.p_gate_target(gate_PN2[0]);
789       
790        clusterPN3.p_clk(signal_clk);
791        clusterPN3.p_resetn(signal_resetn);
792
793        clusterPN3.p_to_initiator[0](signal_vci_ini_proc12);
794        clusterPN3.p_to_initiator[1](signal_vci_ini_proc13);
795        clusterPN3.p_to_initiator[2](signal_vci_ini_proc14);
796        clusterPN3.p_to_initiator[3](signal_vci_ini_proc15);
797
798        clusterPN3.p_to_target[0](signal_vci_tgt_memc3);
799        clusterPN3.p_to_target[1](signal_vci_tgt_tty);
800
801        clusterPN3.p_gate_initiator(gate_PN3[1]);
802        clusterPN3.p_gate_target(gate_PN3[0]);
803       
804        ///////////////////////////////////////////////////////
805        // Réseau des commandes de cohérence
806        ///////////////////////////////////////////////////////
807        clusterCN0.p_clk(signal_clk);
808        clusterCN0.p_resetn(signal_resetn);
809
810        clusterCN0.p_to_initiator[0](signal_vci_ini_memc0);
811
812        clusterCN0.p_to_target[0](signal_vci_tgt_proc0);
813        clusterCN0.p_to_target[1](signal_vci_tgt_proc1);
814        clusterCN0.p_to_target[2](signal_vci_tgt_proc2);
815        clusterCN0.p_to_target[3](signal_vci_tgt_proc3);
816
817        clusterCN0.p_gate_initiator(gate_CN0[1]);
818        clusterCN0.p_gate_target(gate_CN0[0]);
819
820        clusterCN1.p_clk(signal_clk);
821        clusterCN1.p_resetn(signal_resetn);
822
823        clusterCN1.p_to_initiator[0](signal_vci_ini_memc1);
824
825        clusterCN1.p_to_target[0](signal_vci_tgt_proc4);
826        clusterCN1.p_to_target[1](signal_vci_tgt_proc5);
827        clusterCN1.p_to_target[2](signal_vci_tgt_proc6);
828        clusterCN1.p_to_target[3](signal_vci_tgt_proc7);
829
830        clusterCN1.p_gate_initiator(gate_CN1[1]);
831        clusterCN1.p_gate_target(gate_CN1[0]);
832       
833        clusterCN2.p_clk(signal_clk);
834        clusterCN2.p_resetn(signal_resetn);
835
836        clusterCN2.p_to_initiator[0](signal_vci_ini_memc2);
837
838        clusterCN2.p_to_target[0](signal_vci_tgt_proc8);
839        clusterCN2.p_to_target[1](signal_vci_tgt_proc9);
840        clusterCN2.p_to_target[2](signal_vci_tgt_proc10);
841        clusterCN2.p_to_target[3](signal_vci_tgt_proc11);
842
843        clusterCN2.p_gate_initiator(gate_CN2[1]);
844        clusterCN2.p_gate_target(gate_CN2[0]);
845
846        clusterCN3.p_clk(signal_clk);
847        clusterCN3.p_resetn(signal_resetn);
848
849        clusterCN3.p_to_initiator[0](signal_vci_ini_memc3);
850
851        clusterCN3.p_to_target[0](signal_vci_tgt_proc12);
852        clusterCN3.p_to_target[1](signal_vci_tgt_proc13);
853        clusterCN3.p_to_target[2](signal_vci_tgt_proc14);
854        clusterCN3.p_to_target[3](signal_vci_tgt_proc15);
855
856        clusterCN3.p_gate_initiator(gate_CN3[1]);
857        clusterCN3.p_gate_target(gate_CN3[0]);
858
859        ////////////////////////////////////////////////////////
860        ////////////////////////////////////////////////////////
861
862        int ncycles;
863
864#ifndef SOCVIEW
865        if (argc == 2) {
866                ncycles = std::atoi(argv[1]);
867        } else {
868                std::cerr
869                        << std::endl
870                        << "The number of simulation cycles must "
871                           "be defined in the command line"
872                        << std::endl;
873                exit(1);
874        }
875
876        sc_start(sc_core::sc_time(0, SC_NS));
877        signal_resetn = false;
878
879        sc_start(sc_core::sc_time(1, SC_NS));
880        signal_resetn = true;
881
882        for (int i = 0; i < ncycles ; i+=100000) {
883                sc_start(sc_core::sc_time(100000, SC_NS));
884               
885        }
886
887//      std::cout << "Hit ENTER to end simulation" << std::endl;
888//      char buf[1];
889//
890//      std::cin.getline(buf,1);
891        return EXIT_SUCCESS;
892#else
893        ncycles = 1;
894        sc_start(sc_core::sc_time(0, SC_NS));
895        signal_resetn = false;
896        sc_start(sc_core::sc_time(1, SC_NS));
897        signal_resetn = true;
898
899        debug();
900        return EXIT_SUCCESS;
901#endif
902}
903
904int sc_main (int argc, char *argv[])
905{
906        try {
907                return _main(argc, argv);
908        } catch (std::exception &e) {
909                std::cout << e.what() << std::endl;
910        } catch (...) {
911                std::cout << "Unknown exception occured" << std::endl;
912                throw;
913        }
914        return 1;
915}
Note: See TracBrowser for help on using the repository browser.