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 "mips32.h" |
---|
10 | #include "iss2_simhelper.h" |
---|
11 | #include "vci_simple_ram.h" |
---|
12 | #include "vci_multi_tty.h" |
---|
13 | #include "vci_mem_cache_v3.h" |
---|
14 | #include "vci_cc_xcache_wrapper_v1.h" |
---|
15 | #include "vci_local_ring_fast.h" |
---|
16 | #include "vci_simple_ring_fast.h" |
---|
17 | #include "virtual_dspin_router.h" |
---|
18 | |
---|
19 | #ifdef USE_GDB_SERVER |
---|
20 | #include "iss/gdbserver.h" |
---|
21 | #endif |
---|
22 | |
---|
23 | #include "segmentation.h" |
---|
24 | |
---|
25 | #define X_MAX 2 |
---|
26 | #define Y_MAX 2 |
---|
27 | #define N_PROCS 16 |
---|
28 | #define N_CLUSTERS X_MAX*Y_MAX |
---|
29 | // Router ports index |
---|
30 | #define NORTH 0 |
---|
31 | #define SOUTH 1 |
---|
32 | #define EAST 2 |
---|
33 | #define WEST 3 |
---|
34 | #define LOCAL 4 |
---|
35 | |
---|
36 | // DSPIN flit widths |
---|
37 | #define cmd_width 40 |
---|
38 | #define rsp_width 33 |
---|
39 | |
---|
40 | // VCI address format |
---|
41 | #define adr_width 32 |
---|
42 | #define x_width 1 //4 |
---|
43 | #define y_width 1 //4 |
---|
44 | #define l_width 4 |
---|
45 | |
---|
46 | // cluster index (from coordinates) |
---|
47 | #define cluster(x,y) (y + Y_MAX*x) |
---|
48 | int _main(int argc, char *argv[]) |
---|
49 | { |
---|
50 | using namespace sc_core; |
---|
51 | // Avoid repeating these everywhere |
---|
52 | using soclib::common::IntTab; |
---|
53 | using soclib::common::Segment; |
---|
54 | using namespace soclib::caba; |
---|
55 | |
---|
56 | // Define VCI parameters |
---|
57 | typedef soclib::caba::VciParams<4,8,32,2,1,1,8,4,4,1> vci_param; |
---|
58 | typedef soclib::common::Iss2Simhelper<soclib::common::Mips32ElIss> proc_iss; |
---|
59 | |
---|
60 | // Mapping table |
---|
61 | |
---|
62 | soclib::common::MappingTable maptabp(32, IntTab(2,10), IntTab(2,6), 0x00F00000); |
---|
63 | |
---|
64 | maptabp.add(Segment("text" , TEXT_BASE , TEXT_SIZE , IntTab(0,0), true)); |
---|
65 | maptabp.add(Segment("data0" , DATA0_BASE , DATA0_SIZE , IntTab(0,0), true)); |
---|
66 | maptabp.add(Segment("data1" , DATA1_BASE , DATA1_SIZE , IntTab(1,0), true)); |
---|
67 | maptabp.add(Segment("data2" , DATA2_BASE , DATA2_SIZE , IntTab(2,0), true)); |
---|
68 | maptabp.add(Segment("data3" , DATA3_BASE , DATA3_SIZE , IntTab(3,0), true)); |
---|
69 | maptabp.add(Segment("reset" , RESET_BASE , RESET_SIZE , IntTab(2,0), true)); |
---|
70 | maptabp.add(Segment("excep" , EXCEP_BASE , EXCEP_SIZE , IntTab(2,0), true)); |
---|
71 | maptabp.add(Segment("tty" , TTY_BASE , TTY_SIZE , IntTab(3,1), false)); |
---|
72 | |
---|
73 | std::cout << maptabp << std::endl; |
---|
74 | |
---|
75 | soclib::common::MappingTable maptabc(32, IntTab(2,10), IntTab(2,6), 0x00F00000); |
---|
76 | |
---|
77 | maptabc.add(Segment("proc0" , PROC0_BASE , PROC0_SIZE , IntTab(0,0), false, true, IntTab(0,0))); |
---|
78 | maptabc.add(Segment("proc1" , PROC1_BASE , PROC1_SIZE , IntTab(0,1), false, true, IntTab(0,1))); |
---|
79 | maptabc.add(Segment("proc2" , PROC2_BASE , PROC2_SIZE , IntTab(0,2), false, true, IntTab(0,2))); |
---|
80 | maptabc.add(Segment("proc3" , PROC3_BASE , PROC3_SIZE , IntTab(0,3), false, true, IntTab(0,3))); |
---|
81 | maptabc.add(Segment("proc4" , PROC4_BASE , PROC4_SIZE , IntTab(1,0), false, true, IntTab(1,0))); |
---|
82 | maptabc.add(Segment("proc5" , PROC5_BASE , PROC5_SIZE , IntTab(1,1), false, true, IntTab(1,1))); |
---|
83 | maptabc.add(Segment("proc6" , PROC6_BASE , PROC6_SIZE , IntTab(1,2), false, true, IntTab(1,2))); |
---|
84 | maptabc.add(Segment("proc7" , PROC7_BASE , PROC7_SIZE , IntTab(1,3), false, true, IntTab(1,3))); |
---|
85 | maptabc.add(Segment("proc8" , PROC8_BASE , PROC8_SIZE , IntTab(2,0), false, true, IntTab(2,0))); |
---|
86 | maptabc.add(Segment("proc9" , PROC9_BASE , PROC9_SIZE , IntTab(2,1), false, true, IntTab(2,1))); |
---|
87 | maptabc.add(Segment("proc10" , PROC10_BASE , PROC10_SIZE , IntTab(2,2), false, true, IntTab(2,2))); |
---|
88 | maptabc.add(Segment("proc11" , PROC11_BASE , PROC11_SIZE , IntTab(2,3), false, true, IntTab(2,3))); |
---|
89 | maptabc.add(Segment("proc12" , PROC12_BASE , PROC12_SIZE , IntTab(3,0), false, true, IntTab(3,0))); |
---|
90 | maptabc.add(Segment("proc13" , PROC13_BASE , PROC13_SIZE , IntTab(3,1), false, true, IntTab(3,1))); |
---|
91 | maptabc.add(Segment("proc14" , PROC14_BASE , PROC14_SIZE , IntTab(3,2), false, true, IntTab(3,2))); |
---|
92 | maptabc.add(Segment("proc15" , PROC15_BASE , PROC15_SIZE , IntTab(3,3), false, true, IntTab(3,3))); |
---|
93 | maptabc.add(Segment("reset" , RESET_BASE , RESET_SIZE , IntTab(2,4), false, false)); |
---|
94 | maptabc.add(Segment("excep" , EXCEP_BASE , EXCEP_SIZE , IntTab(2,4), false, false)); |
---|
95 | maptabc.add(Segment("text" , TEXT_BASE , TEXT_SIZE , IntTab(0,4), false, false)); |
---|
96 | maptabc.add(Segment("data0" , DATA0_BASE , DATA0_SIZE , IntTab(0,4), false,false)); |
---|
97 | maptabc.add(Segment("data1" , DATA1_BASE , DATA1_SIZE , IntTab(1,4), false,false)); |
---|
98 | maptabc.add(Segment("data2" , DATA2_BASE , DATA2_SIZE , IntTab(2,4), false,false)); |
---|
99 | maptabc.add(Segment("data3" , DATA3_BASE , DATA3_SIZE , IntTab(3,4), false,false)); |
---|
100 | |
---|
101 | std::cout << maptabc << std::endl; |
---|
102 | |
---|
103 | soclib::common::MappingTable maptabx(32, IntTab(8), IntTab(8), 0x00F00000); |
---|
104 | maptabx.add(Segment("reset" , RESET_BASE , RESET_SIZE , IntTab(0), false)); |
---|
105 | maptabx.add(Segment("excep" , EXCEP_BASE , EXCEP_SIZE , IntTab(0), false)); |
---|
106 | maptabx.add(Segment("text" , TEXT_BASE , TEXT_SIZE , IntTab(0), false)); |
---|
107 | maptabx.add(Segment("data0" , DATA0_BASE , DATA0_SIZE , IntTab(0), false)); |
---|
108 | maptabx.add(Segment("data1" , DATA1_BASE , DATA1_SIZE , IntTab(0), false)); |
---|
109 | maptabx.add(Segment("data2" , DATA2_BASE , DATA2_SIZE , IntTab(0), false)); |
---|
110 | maptabx.add(Segment("data3" , DATA3_BASE , DATA3_SIZE , IntTab(0), false)); |
---|
111 | |
---|
112 | std::cout << maptabx << std::endl; |
---|
113 | |
---|
114 | // Signals |
---|
115 | |
---|
116 | sc_clock signal_clk("clk"); |
---|
117 | sc_signal<bool> signal_resetn("resetn"); |
---|
118 | |
---|
119 | sc_signal<bool> signal_proc0_it0("proc0_it0"); |
---|
120 | sc_signal<bool> signal_proc0_it1("proc0_it1"); |
---|
121 | sc_signal<bool> signal_proc0_it2("proc0_it2"); |
---|
122 | sc_signal<bool> signal_proc0_it3("proc0_it3"); |
---|
123 | sc_signal<bool> signal_proc0_it4("proc0_it4"); |
---|
124 | sc_signal<bool> signal_proc0_it5("proc0_it5"); |
---|
125 | |
---|
126 | sc_signal<bool> signal_proc1_it0("proc1_it0"); |
---|
127 | sc_signal<bool> signal_proc1_it1("proc1_it1"); |
---|
128 | sc_signal<bool> signal_proc1_it2("proc1_it2"); |
---|
129 | sc_signal<bool> signal_proc1_it3("proc1_it3"); |
---|
130 | sc_signal<bool> signal_proc1_it4("proc1_it4"); |
---|
131 | sc_signal<bool> signal_proc1_it5("proc1_it5"); |
---|
132 | |
---|
133 | sc_signal<bool> signal_proc2_it0("proc2_it0"); |
---|
134 | sc_signal<bool> signal_proc2_it1("proc2_it1"); |
---|
135 | sc_signal<bool> signal_proc2_it2("proc2_it2"); |
---|
136 | sc_signal<bool> signal_proc2_it3("proc2_it3"); |
---|
137 | sc_signal<bool> signal_proc2_it4("proc2_it4"); |
---|
138 | sc_signal<bool> signal_proc2_it5("proc2_it5"); |
---|
139 | |
---|
140 | sc_signal<bool> signal_proc3_it0("proc3_it0"); |
---|
141 | sc_signal<bool> signal_proc3_it1("proc3_it1"); |
---|
142 | sc_signal<bool> signal_proc3_it2("proc3_it2"); |
---|
143 | sc_signal<bool> signal_proc3_it3("proc3_it3"); |
---|
144 | sc_signal<bool> signal_proc3_it4("proc3_it4"); |
---|
145 | sc_signal<bool> signal_proc3_it5("proc3_it5"); |
---|
146 | |
---|
147 | sc_signal<bool> signal_proc4_it0("proc4_it0"); |
---|
148 | sc_signal<bool> signal_proc4_it1("proc4_it1"); |
---|
149 | sc_signal<bool> signal_proc4_it2("proc4_it2"); |
---|
150 | sc_signal<bool> signal_proc4_it3("proc4_it3"); |
---|
151 | sc_signal<bool> signal_proc4_it4("proc4_it4"); |
---|
152 | sc_signal<bool> signal_proc4_it5("proc4_it5"); |
---|
153 | |
---|
154 | sc_signal<bool> signal_proc5_it0("proc5_it0"); |
---|
155 | sc_signal<bool> signal_proc5_it1("proc5_it1"); |
---|
156 | sc_signal<bool> signal_proc5_it2("proc5_it2"); |
---|
157 | sc_signal<bool> signal_proc5_it3("proc5_it3"); |
---|
158 | sc_signal<bool> signal_proc5_it4("proc5_it4"); |
---|
159 | sc_signal<bool> signal_proc5_it5("proc5_it5"); |
---|
160 | |
---|
161 | sc_signal<bool> signal_proc6_it0("proc6_it0"); |
---|
162 | sc_signal<bool> signal_proc6_it1("proc6_it1"); |
---|
163 | sc_signal<bool> signal_proc6_it2("proc6_it2"); |
---|
164 | sc_signal<bool> signal_proc6_it3("proc6_it3"); |
---|
165 | sc_signal<bool> signal_proc6_it4("proc6_it4"); |
---|
166 | sc_signal<bool> signal_proc6_it5("proc6_it5"); |
---|
167 | |
---|
168 | sc_signal<bool> signal_proc7_it0("proc7_it0"); |
---|
169 | sc_signal<bool> signal_proc7_it1("proc7_it1"); |
---|
170 | sc_signal<bool> signal_proc7_it2("proc7_it2"); |
---|
171 | sc_signal<bool> signal_proc7_it3("proc7_it3"); |
---|
172 | sc_signal<bool> signal_proc7_it4("proc7_it4"); |
---|
173 | sc_signal<bool> signal_proc7_it5("proc7_it5"); |
---|
174 | |
---|
175 | sc_signal<bool> signal_proc8_it0("proc8_it0"); |
---|
176 | sc_signal<bool> signal_proc8_it1("proc8_it1"); |
---|
177 | sc_signal<bool> signal_proc8_it2("proc8_it2"); |
---|
178 | sc_signal<bool> signal_proc8_it3("proc8_it3"); |
---|
179 | sc_signal<bool> signal_proc8_it4("proc8_it4"); |
---|
180 | sc_signal<bool> signal_proc8_it5("proc8_it5"); |
---|
181 | |
---|
182 | sc_signal<bool> signal_proc9_it0("proc9_it0"); |
---|
183 | sc_signal<bool> signal_proc9_it1("proc9_it1"); |
---|
184 | sc_signal<bool> signal_proc9_it2("proc9_it2"); |
---|
185 | sc_signal<bool> signal_proc9_it3("proc9_it3"); |
---|
186 | sc_signal<bool> signal_proc9_it4("proc9_it4"); |
---|
187 | sc_signal<bool> signal_proc9_it5("proc9_it5"); |
---|
188 | |
---|
189 | sc_signal<bool> signal_proc10_it0("proc10_it0"); |
---|
190 | sc_signal<bool> signal_proc10_it1("proc10_it1"); |
---|
191 | sc_signal<bool> signal_proc10_it2("proc10_it2"); |
---|
192 | sc_signal<bool> signal_proc10_it3("proc10_it3"); |
---|
193 | sc_signal<bool> signal_proc10_it4("proc10_it4"); |
---|
194 | sc_signal<bool> signal_proc10_it5("proc10_it5"); |
---|
195 | |
---|
196 | sc_signal<bool> signal_proc11_it0("proc11_it0"); |
---|
197 | sc_signal<bool> signal_proc11_it1("proc11_it1"); |
---|
198 | sc_signal<bool> signal_proc11_it2("proc11_it2"); |
---|
199 | sc_signal<bool> signal_proc11_it3("proc11_it3"); |
---|
200 | sc_signal<bool> signal_proc11_it4("proc11_it4"); |
---|
201 | sc_signal<bool> signal_proc11_it5("proc11_it5"); |
---|
202 | |
---|
203 | sc_signal<bool> signal_proc12_it0("proc12_it0"); |
---|
204 | sc_signal<bool> signal_proc12_it1("proc12_it1"); |
---|
205 | sc_signal<bool> signal_proc12_it2("proc12_it2"); |
---|
206 | sc_signal<bool> signal_proc12_it3("proc12_it3"); |
---|
207 | sc_signal<bool> signal_proc12_it4("proc12_it4"); |
---|
208 | sc_signal<bool> signal_proc12_it5("proc12_it5"); |
---|
209 | |
---|
210 | sc_signal<bool> signal_proc13_it0("proc13_it0"); |
---|
211 | sc_signal<bool> signal_proc13_it1("proc13_it1"); |
---|
212 | sc_signal<bool> signal_proc13_it2("proc13_it2"); |
---|
213 | sc_signal<bool> signal_proc13_it3("proc13_it3"); |
---|
214 | sc_signal<bool> signal_proc13_it4("proc13_it4"); |
---|
215 | sc_signal<bool> signal_proc13_it5("proc13_it5"); |
---|
216 | |
---|
217 | sc_signal<bool> signal_proc14_it0("proc14_it0"); |
---|
218 | sc_signal<bool> signal_proc14_it1("proc14_it1"); |
---|
219 | sc_signal<bool> signal_proc14_it2("proc14_it2"); |
---|
220 | sc_signal<bool> signal_proc14_it3("proc14_it3"); |
---|
221 | sc_signal<bool> signal_proc14_it4("proc14_it4"); |
---|
222 | sc_signal<bool> signal_proc14_it5("proc14_it5"); |
---|
223 | |
---|
224 | sc_signal<bool> signal_proc15_it0("proc15_it0"); |
---|
225 | sc_signal<bool> signal_proc15_it1("proc15_it1"); |
---|
226 | sc_signal<bool> signal_proc15_it2("proc15_it2"); |
---|
227 | sc_signal<bool> signal_proc15_it3("proc15_it3"); |
---|
228 | sc_signal<bool> signal_proc15_it4("proc15_it4"); |
---|
229 | sc_signal<bool> signal_proc15_it5("proc15_it5"); |
---|
230 | |
---|
231 | //--- Dspin router |
---|
232 | DspinSignals<cmd_width>*** signal_dspin_false_cmd_in = alloc_elems<DspinSignals<cmd_width> >("signal_dspin_false_cmd_in", (Y_MAX*X_MAX), 2, 2); |
---|
233 | DspinSignals<cmd_width>*** signal_dspin_false_cmd_out = alloc_elems<DspinSignals<cmd_width> >("signal_dspin_false_cmd_out", (Y_MAX*X_MAX), 2, 2); |
---|
234 | DspinSignals<rsp_width>*** signal_dspin_false_rsp_in = alloc_elems<DspinSignals<rsp_width> >("signal_dspin_false_rsp_in", (Y_MAX*X_MAX), 2, 2); |
---|
235 | DspinSignals<rsp_width>*** signal_dspin_false_rsp_out = alloc_elems<DspinSignals<rsp_width> >("signal_dspin_false_rsp_out", (Y_MAX*X_MAX), 2, 2); |
---|
236 | |
---|
237 | |
---|
238 | // DSPIN signals between local ring & global interconnects |
---|
239 | DspinSignals<cmd_width>** signal_dspin_cmd_l2g_d = |
---|
240 | alloc_elems<DspinSignals<cmd_width> >("signal_dspin_cmd_l2g_d", X_MAX, Y_MAX); |
---|
241 | DspinSignals<cmd_width>** signal_dspin_cmd_g2l_d = |
---|
242 | alloc_elems<DspinSignals<cmd_width> >("signal_dspin_cmd_g2l_d", X_MAX, Y_MAX); |
---|
243 | |
---|
244 | DspinSignals<cmd_width>** signal_dspin_cmd_l2g_c = |
---|
245 | alloc_elems<DspinSignals<cmd_width> >("signal_dspin_cmd_l2g_c", X_MAX, Y_MAX); |
---|
246 | DspinSignals<cmd_width>** signal_dspin_cmd_g2l_c = |
---|
247 | alloc_elems<DspinSignals<cmd_width> >("signal_dspin_cmd_g2l_c", X_MAX, Y_MAX); |
---|
248 | |
---|
249 | DspinSignals<rsp_width>** signal_dspin_rsp_l2g_d = |
---|
250 | alloc_elems<DspinSignals<rsp_width> >("signal_dspin_rsp_l2g_d", X_MAX, Y_MAX); |
---|
251 | DspinSignals<rsp_width>** signal_dspin_rsp_g2l_d = |
---|
252 | alloc_elems<DspinSignals<rsp_width> >("signal_dspin_rsp_g2l_d", X_MAX, Y_MAX); |
---|
253 | |
---|
254 | DspinSignals<rsp_width>** signal_dspin_rsp_l2g_c = |
---|
255 | alloc_elems<DspinSignals<rsp_width> >("signal_dspin_rsp_l2g_c", X_MAX, Y_MAX); |
---|
256 | DspinSignals<rsp_width>** signal_dspin_rsp_g2l_c = |
---|
257 | alloc_elems<DspinSignals<rsp_width> >("signal_dspin_rsp_g2l_c", X_MAX, Y_MAX); |
---|
258 | |
---|
259 | // Horizontal inter-clusters DSPIN signals |
---|
260 | DspinSignals<cmd_width>*** signal_dspin_h_cmd_inc = |
---|
261 | alloc_elems<DspinSignals<cmd_width> >("signal_dspin_h_cmd_inc", X_MAX-1, Y_MAX, 2); |
---|
262 | DspinSignals<cmd_width>*** signal_dspin_h_cmd_dec = |
---|
263 | alloc_elems<DspinSignals<cmd_width> >("signal_dspin_h_cmd_dec", X_MAX-1, Y_MAX, 2); |
---|
264 | DspinSignals<rsp_width>*** signal_dspin_h_rsp_inc = |
---|
265 | alloc_elems<DspinSignals<rsp_width> >("signal_dspin_h_rsp_inc", X_MAX-1, Y_MAX, 2); |
---|
266 | DspinSignals<rsp_width>*** signal_dspin_h_rsp_dec = |
---|
267 | alloc_elems<DspinSignals<rsp_width> >("signal_dspin_h_rsp_dec", X_MAX-1, Y_MAX, 2); |
---|
268 | |
---|
269 | // Vertical inter-clusters DSPIN signals |
---|
270 | DspinSignals<cmd_width>*** signal_dspin_v_cmd_inc = |
---|
271 | alloc_elems<DspinSignals<cmd_width> >("signal_dspin_v_cmd_inc", X_MAX, Y_MAX-1, 2); |
---|
272 | DspinSignals<cmd_width>*** signal_dspin_v_cmd_dec = |
---|
273 | alloc_elems<DspinSignals<cmd_width> >("signal_dspin_v_cmd_dec", X_MAX, Y_MAX-1, 2); |
---|
274 | DspinSignals<rsp_width>*** signal_dspin_v_rsp_inc = |
---|
275 | alloc_elems<DspinSignals<rsp_width> >("signal_dspin_v_rsp_inc", X_MAX, Y_MAX-1, 2); |
---|
276 | DspinSignals<rsp_width>*** signal_dspin_v_rsp_dec = |
---|
277 | alloc_elems<DspinSignals<rsp_width> >("signal_dspin_v_rsp_dec", X_MAX, Y_MAX-1, 2); |
---|
278 | |
---|
279 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc0("vci_ini_rw_proc0"); |
---|
280 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc0("vci_ini_c_proc0"); |
---|
281 | |
---|
282 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc0("vci_tgt_proc0"); |
---|
283 | |
---|
284 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc1("vci_ini_rw_proc1"); |
---|
285 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc1("vci_ini_c_proc1"); |
---|
286 | |
---|
287 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc1("vci_tgt_proc1"); |
---|
288 | |
---|
289 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc2("vci_ini_rw_proc2"); |
---|
290 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc2("vci_ini_c_proc2"); |
---|
291 | |
---|
292 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc2("vci_tgt_proc2"); |
---|
293 | |
---|
294 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc3("vci_ini_rw_proc3"); |
---|
295 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc3("vci_ini_c_proc3"); |
---|
296 | |
---|
297 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc3("vci_tgt_proc3"); |
---|
298 | |
---|
299 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc4("vci_ini_rw_proc4"); |
---|
300 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc4("vci_ini_c_proc4"); |
---|
301 | |
---|
302 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc4("vci_tgt_proc4"); |
---|
303 | |
---|
304 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc5("vci_ini_rw_proc5"); |
---|
305 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc5("vci_ini_c_proc5"); |
---|
306 | |
---|
307 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc5("vci_tgt_proc5"); |
---|
308 | |
---|
309 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc6("vci_ini_rw_proc6"); |
---|
310 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc6("vci_ini_c_proc6"); |
---|
311 | |
---|
312 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc6("vci_tgt_proc6"); |
---|
313 | |
---|
314 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc7("vci_ini_rw_proc7"); |
---|
315 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc7("vci_ini_c_proc7"); |
---|
316 | |
---|
317 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc7("vci_tgt_proc7"); |
---|
318 | |
---|
319 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc8("vci_ini_rw_proc8"); |
---|
320 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc8("vci_ini_c_proc8"); |
---|
321 | |
---|
322 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc8("vci_tgt_proc8"); |
---|
323 | |
---|
324 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc9("vci_ini_rw_proc9"); |
---|
325 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc9("vci_ini_c_proc9"); |
---|
326 | |
---|
327 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc9("vci_tgt_proc9"); |
---|
328 | |
---|
329 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc10("vci_ini_rw_proc10"); |
---|
330 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc10("vci_ini_c_proc10"); |
---|
331 | |
---|
332 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc10("vci_tgt_proc10"); |
---|
333 | |
---|
334 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc11("vci_ini_rw_proc11"); |
---|
335 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc11("vci_ini_c_proc11"); |
---|
336 | |
---|
337 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc11("vci_tgt_proc11"); |
---|
338 | |
---|
339 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc12("vci_ini_rw_proc12"); |
---|
340 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc12("vci_ini_c_proc12"); |
---|
341 | |
---|
342 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc12("vci_tgt_proc12"); |
---|
343 | |
---|
344 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc13("vci_ini_rw_proc13"); |
---|
345 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc13("vci_ini_c_proc13"); |
---|
346 | |
---|
347 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc13("vci_tgt_proc13"); |
---|
348 | |
---|
349 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc14("vci_ini_rw_proc14"); |
---|
350 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc14("vci_ini_c_proc14"); |
---|
351 | |
---|
352 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc14("vci_tgt_proc14"); |
---|
353 | |
---|
354 | soclib::caba::VciSignals<vci_param> signal_vci_ini_rw_proc15("vci_ini_rw_proc15"); |
---|
355 | soclib::caba::VciSignals<vci_param> signal_vci_ini_c_proc15("vci_ini_c_proc15"); |
---|
356 | |
---|
357 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_proc15("vci_tgt_proc15"); |
---|
358 | |
---|
359 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_tty("vci_tgt_tty"); |
---|
360 | |
---|
361 | |
---|
362 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_xram("vci_tgt_xram"); |
---|
363 | |
---|
364 | soclib::caba::VciSignals<vci_param> signal_vci_ixr_memc0("vci_ixr_memc0"); |
---|
365 | soclib::caba::VciSignals<vci_param> signal_vci_ini_memc0("vci_ini_memc0"); |
---|
366 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_memc0("vci_tgt_memc0"); |
---|
367 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_cleanup_memc0("vci_tgt_cleanup_memc0"); |
---|
368 | |
---|
369 | soclib::caba::VciSignals<vci_param> signal_vci_ixr_memc1("vci_ixr_memc1"); |
---|
370 | soclib::caba::VciSignals<vci_param> signal_vci_ini_memc1("vci_ini_memc1"); |
---|
371 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_memc1("vci_tgt_memc1"); |
---|
372 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_cleanup_memc1("vci_tgt_cleanup_memc1"); |
---|
373 | |
---|
374 | soclib::caba::VciSignals<vci_param> signal_vci_ixr_memc2("vci_ixr_memc2"); |
---|
375 | soclib::caba::VciSignals<vci_param> signal_vci_ini_memc2("vci_ini_memc2"); |
---|
376 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_memc2("vci_tgt_memc2"); |
---|
377 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_cleanup_memc2("vci_tgt_cleanup_memc2"); |
---|
378 | |
---|
379 | soclib::caba::VciSignals<vci_param> signal_vci_ixr_memc3("vci_ixr_memc3"); |
---|
380 | soclib::caba::VciSignals<vci_param> signal_vci_ini_memc3("vci_ini_memc3"); |
---|
381 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_memc3("vci_tgt_memc3"); |
---|
382 | soclib::caba::VciSignals<vci_param> signal_vci_tgt_cleanup_memc3("vci_tgt_cleanup_memc3"); |
---|
383 | |
---|
384 | sc_signal<bool> signal_tty_irq0("signal_tty_irq0"); |
---|
385 | sc_signal<bool> signal_tty_irq1("signal_tty_irq1"); |
---|
386 | sc_signal<bool> signal_tty_irq2("signal_tty_irq2"); |
---|
387 | sc_signal<bool> signal_tty_irq3("signal_tty_irq3"); |
---|
388 | sc_signal<bool> signal_tty_irq4("signal_tty_irq4"); |
---|
389 | sc_signal<bool> signal_tty_irq5("signal_tty_irq5"); |
---|
390 | sc_signal<bool> signal_tty_irq6("signal_tty_irq6"); |
---|
391 | sc_signal<bool> signal_tty_irq7("signal_tty_irq7"); |
---|
392 | sc_signal<bool> signal_tty_irq8("signal_tty_irq8"); |
---|
393 | sc_signal<bool> signal_tty_irq9("signal_tty_irq9"); |
---|
394 | sc_signal<bool> signal_tty_irq10("signal_tty_irq10"); |
---|
395 | sc_signal<bool> signal_tty_irq11("signal_tty_irq11"); |
---|
396 | sc_signal<bool> signal_tty_irq12("signal_tty_irq12"); |
---|
397 | sc_signal<bool> signal_tty_irq13("signal_tty_irq13"); |
---|
398 | sc_signal<bool> signal_tty_irq14("signal_tty_irq14"); |
---|
399 | sc_signal<bool> signal_tty_irq15("signal_tty_irq15"); |
---|
400 | |
---|
401 | soclib::common::Loader loader("soft/bin.soft"); |
---|
402 | |
---|
403 | // init_rw init_c tgt |
---|
404 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
405 | proc0("proc0", 0, maptabp, maptabc, IntTab(0,0),IntTab(0,0),IntTab(0,0),4,4,16,4,4,16); |
---|
406 | |
---|
407 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
408 | proc1("proc1", 1, maptabp, maptabc, IntTab(0,1),IntTab(0,1),IntTab(0,1),4,4,16,4,4,16); |
---|
409 | |
---|
410 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
411 | proc2("proc2", 2, maptabp, maptabc, IntTab(0,2),IntTab(0,2),IntTab(0,2),4,4,16,4,4,16); |
---|
412 | |
---|
413 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
414 | proc3("proc3", 3, maptabp, maptabc, IntTab(0,3),IntTab(0,3),IntTab(0,3),4,4,16,4,4,16); |
---|
415 | |
---|
416 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
417 | proc4("proc4", 4, maptabp, maptabc, IntTab(1,0),IntTab(1,0),IntTab(1,0),4,4,16,4,4,16); |
---|
418 | |
---|
419 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
420 | proc5("proc5", 5, maptabp, maptabc, IntTab(1,1),IntTab(1,1),IntTab(1,1),4,4,16,4,4,16); |
---|
421 | |
---|
422 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
423 | proc6("proc6", 6, maptabp, maptabc, IntTab(1,2),IntTab(1,2),IntTab(1,2),4,4,16,4,4,16); |
---|
424 | |
---|
425 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
426 | proc7("proc7", 7, maptabp, maptabc, IntTab(1,3),IntTab(1,3),IntTab(1,3),4,4,16,4,4,16); |
---|
427 | |
---|
428 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
429 | proc8("proc8", 8, maptabp, maptabc, IntTab(2,0),IntTab(2,0),IntTab(2,0),4,4,16,4,4,16); |
---|
430 | |
---|
431 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
432 | proc9("proc9", 9, maptabp, maptabc, IntTab(2,1),IntTab(2,1),IntTab(2,1),4,4,16,4,4,16); |
---|
433 | |
---|
434 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
435 | proc10("proc10", 10, maptabp, maptabc, IntTab(2,2),IntTab(2,2),IntTab(2,2),4,4,16,4,4,16); |
---|
436 | |
---|
437 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
438 | proc11("proc11", 11, maptabp, maptabc, IntTab(2,3),IntTab(2,3),IntTab(2,3),4,4,16,4,4,16); |
---|
439 | |
---|
440 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
441 | proc12("proc12", 12, maptabp, maptabc, IntTab(3,0),IntTab(3,0),IntTab(3,0),4,4,16,4,4,16); |
---|
442 | |
---|
443 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
444 | proc13("proc13", 13, maptabp, maptabc, IntTab(3,1),IntTab(3,1),IntTab(3,1),4,4,16,4,4,16); |
---|
445 | |
---|
446 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
447 | proc14("proc14", 14, maptabp, maptabc, IntTab(3,2),IntTab(3,2),IntTab(3,2),4,4,16,4,4,16); |
---|
448 | |
---|
449 | soclib::caba::VciCcXCacheWrapperV1<vci_param, proc_iss > |
---|
450 | proc15("proc15", 15, maptabp, maptabc, IntTab(3,3),IntTab(3,3),IntTab(3,3),4,4,16,4,4,16); |
---|
451 | |
---|
452 | |
---|
453 | soclib::caba::VciSimpleRam<vci_param> |
---|
454 | xram("xram",IntTab(0),maptabx, loader); |
---|
455 | |
---|
456 | // x_init c_init p_tgt c_tgt |
---|
457 | soclib::caba::VciMemCacheV3<vci_param> |
---|
458 | // memc0("memc0",maptabp,maptabc,maptabx,IntTab(0),IntTab(0,4),IntTab(0,0), IntTab(0,4), 16,256,16); |
---|
459 | memc0("memc0",maptabp,maptabc,maptabx,IntTab(0),IntTab(0,4),IntTab(0,0), IntTab(0,4), 4,16,16); |
---|
460 | |
---|
461 | soclib::caba::VciMemCacheV3<vci_param> |
---|
462 | memc1("memc1",maptabp,maptabc,maptabx,IntTab(1),IntTab(1,4),IntTab(1,0), IntTab(1,4), 4,16,16); |
---|
463 | |
---|
464 | soclib::caba::VciMemCacheV3<vci_param> |
---|
465 | memc2("memc2",maptabp,maptabc,maptabx,IntTab(2),IntTab(2,4),IntTab(2,0), IntTab(2,4), 4,16,16); |
---|
466 | |
---|
467 | soclib::caba::VciMemCacheV3<vci_param> |
---|
468 | memc3("memc3",maptabp,maptabc,maptabx,IntTab(3),IntTab(3,4),IntTab(3,0), IntTab(3,4), 4,16,16); |
---|
469 | |
---|
470 | soclib::caba::VciMultiTty<vci_param> |
---|
471 | tty("tty",IntTab(3,1),maptabp,"tty0","tty1","tty2","tty3","tty4","tty5","tty6","tty7","tty8","tty9","tty10","tty11","tty12","tty13","tty14","tty15",NULL); |
---|
472 | |
---|
473 | |
---|
474 | soclib::caba::VciLocalRingFast<vci_param, 40, 33> |
---|
475 | clusterPN0("clusterPN0",maptabp, IntTab(0), 2, 18, 4, 1 ); |
---|
476 | |
---|
477 | soclib::caba::VciLocalRingFast<vci_param, 40, 33> |
---|
478 | clusterPN1("clusterPN1",maptabp, IntTab(1), 2, 18, 4, 1 ); |
---|
479 | |
---|
480 | soclib::caba::VciLocalRingFast<vci_param, 40, 33> |
---|
481 | clusterPN2("clusterPN2",maptabp, IntTab(2), 2, 18, 4, 1 ); |
---|
482 | |
---|
483 | soclib::caba::VciLocalRingFast<vci_param, 40, 33> |
---|
484 | clusterPN3("clusterPN3",maptabp, IntTab(3), 2, 18, 4, 2 ); |
---|
485 | |
---|
486 | soclib::caba::VciLocalRingFast<vci_param, 40, 33> |
---|
487 | clusterCN0("clusterCN0",maptabc, IntTab(0), 2, 2, 5, 5 ); |
---|
488 | |
---|
489 | soclib::caba::VciLocalRingFast<vci_param, 40, 33> |
---|
490 | clusterCN1("clusterCN1",maptabc, IntTab(1), 2, 2, 5, 5 ); |
---|
491 | |
---|
492 | soclib::caba::VciLocalRingFast<vci_param, 40, 33> |
---|
493 | clusterCN2("clusterCN2",maptabc, IntTab(2), 2, 2, 5, 5 ); |
---|
494 | |
---|
495 | soclib::caba::VciLocalRingFast<vci_param, 40, 33> |
---|
496 | clusterCN3("clusterCN3",maptabc, IntTab(3), 2, 2, 5, 5 ); |
---|
497 | |
---|
498 | soclib::caba::VciSimpleRingFast<vci_param, 40, 33> |
---|
499 | xring("xring",maptabx, IntTab(), 2, 4, 1); |
---|
500 | |
---|
501 | // Distributed Global Interconnect : one cmd router & one rsp router per cluster |
---|
502 | VirtualDspinRouter<cmd_width>* cmdrouter = (VirtualDspinRouter<cmd_width>*) |
---|
503 | malloc(sizeof(VirtualDspinRouter<cmd_width>) * X_MAX * Y_MAX); |
---|
504 | VirtualDspinRouter<rsp_width>* rsprouter = (VirtualDspinRouter<rsp_width>*) |
---|
505 | malloc(sizeof(VirtualDspinRouter<rsp_width>) * X_MAX * Y_MAX); |
---|
506 | |
---|
507 | for ( size_t x = 0 ; x < X_MAX ; x++ ) |
---|
508 | { |
---|
509 | for ( size_t y = 0 ; y < Y_MAX ; y++ ) |
---|
510 | { |
---|
511 | |
---|
512 | std::ostringstream str_cmd; |
---|
513 | std::ostringstream str_rsp; |
---|
514 | |
---|
515 | str_cmd << "cmdrouter_" << x << "_" << y; |
---|
516 | str_rsp << "rsprouter_" << x << "_" << y; |
---|
517 | |
---|
518 | new(&cmdrouter[cluster(x,y)]) VirtualDspinRouter<cmd_width>(str_cmd.str().c_str(), |
---|
519 | x,y, // coordinate in the mesh |
---|
520 | x_width, y_width, // x & y fields width |
---|
521 | 4,4); // input & output fifo depths |
---|
522 | new(&rsprouter[cluster(x,y)]) VirtualDspinRouter<rsp_width>(str_rsp.str().c_str(), |
---|
523 | x,y, // coordinates in mesh |
---|
524 | x_width, y_width, // x & y fields width |
---|
525 | 4,4); // input & output fifo depths |
---|
526 | } |
---|
527 | } |
---|
528 | |
---|
529 | proc0.p_clk(signal_clk); |
---|
530 | proc0.p_resetn(signal_resetn); |
---|
531 | proc0.p_irq[0](signal_proc0_it0); |
---|
532 | proc0.p_irq[1](signal_proc0_it1); |
---|
533 | proc0.p_irq[2](signal_proc0_it2); |
---|
534 | proc0.p_irq[3](signal_proc0_it3); |
---|
535 | proc0.p_irq[4](signal_proc0_it4); |
---|
536 | proc0.p_irq[5](signal_proc0_it5); |
---|
537 | proc0.p_vci_ini_rw(signal_vci_ini_rw_proc0); |
---|
538 | proc0.p_vci_ini_c(signal_vci_ini_c_proc0); |
---|
539 | proc0.p_vci_tgt(signal_vci_tgt_proc0); |
---|
540 | |
---|
541 | proc1.p_clk(signal_clk); |
---|
542 | proc1.p_resetn(signal_resetn); |
---|
543 | proc1.p_irq[0](signal_proc1_it0); |
---|
544 | proc1.p_irq[1](signal_proc1_it1); |
---|
545 | proc1.p_irq[2](signal_proc1_it2); |
---|
546 | proc1.p_irq[3](signal_proc1_it3); |
---|
547 | proc1.p_irq[4](signal_proc1_it4); |
---|
548 | proc1.p_irq[5](signal_proc1_it5); |
---|
549 | proc1.p_vci_ini_rw(signal_vci_ini_rw_proc1); |
---|
550 | proc1.p_vci_ini_c(signal_vci_ini_c_proc1); |
---|
551 | proc1.p_vci_tgt(signal_vci_tgt_proc1); |
---|
552 | |
---|
553 | proc2.p_clk(signal_clk); |
---|
554 | proc2.p_resetn(signal_resetn); |
---|
555 | proc2.p_irq[0](signal_proc2_it0); |
---|
556 | proc2.p_irq[1](signal_proc2_it1); |
---|
557 | proc2.p_irq[2](signal_proc2_it2); |
---|
558 | proc2.p_irq[3](signal_proc2_it3); |
---|
559 | proc2.p_irq[4](signal_proc2_it4); |
---|
560 | proc2.p_irq[5](signal_proc2_it5); |
---|
561 | proc2.p_vci_ini_rw(signal_vci_ini_rw_proc2); |
---|
562 | proc2.p_vci_ini_c(signal_vci_ini_c_proc2); |
---|
563 | proc2.p_vci_tgt(signal_vci_tgt_proc2); |
---|
564 | |
---|
565 | proc3.p_clk(signal_clk); |
---|
566 | proc3.p_resetn(signal_resetn); |
---|
567 | proc3.p_irq[0](signal_proc3_it0); |
---|
568 | proc3.p_irq[1](signal_proc3_it1); |
---|
569 | proc3.p_irq[2](signal_proc3_it2); |
---|
570 | proc3.p_irq[3](signal_proc3_it3); |
---|
571 | proc3.p_irq[4](signal_proc3_it4); |
---|
572 | proc3.p_irq[5](signal_proc3_it5); |
---|
573 | proc3.p_vci_ini_rw(signal_vci_ini_rw_proc3); |
---|
574 | proc3.p_vci_ini_c(signal_vci_ini_c_proc3); |
---|
575 | proc3.p_vci_tgt(signal_vci_tgt_proc3); |
---|
576 | |
---|
577 | proc4.p_clk(signal_clk); |
---|
578 | proc4.p_resetn(signal_resetn); |
---|
579 | proc4.p_irq[0](signal_proc4_it0); |
---|
580 | proc4.p_irq[1](signal_proc4_it1); |
---|
581 | proc4.p_irq[2](signal_proc4_it2); |
---|
582 | proc4.p_irq[3](signal_proc4_it3); |
---|
583 | proc4.p_irq[4](signal_proc4_it4); |
---|
584 | proc4.p_irq[5](signal_proc4_it5); |
---|
585 | proc4.p_vci_ini_rw(signal_vci_ini_rw_proc4); |
---|
586 | proc4.p_vci_ini_c(signal_vci_ini_c_proc4); |
---|
587 | proc4.p_vci_tgt(signal_vci_tgt_proc4); |
---|
588 | |
---|
589 | proc5.p_clk(signal_clk); |
---|
590 | proc5.p_resetn(signal_resetn); |
---|
591 | proc5.p_irq[0](signal_proc5_it0); |
---|
592 | proc5.p_irq[1](signal_proc5_it1); |
---|
593 | proc5.p_irq[2](signal_proc5_it2); |
---|
594 | proc5.p_irq[3](signal_proc5_it3); |
---|
595 | proc5.p_irq[4](signal_proc5_it4); |
---|
596 | proc5.p_irq[5](signal_proc5_it5); |
---|
597 | proc5.p_vci_ini_rw(signal_vci_ini_rw_proc5); |
---|
598 | proc5.p_vci_ini_c(signal_vci_ini_c_proc5); |
---|
599 | proc5.p_vci_tgt(signal_vci_tgt_proc5); |
---|
600 | |
---|
601 | proc6.p_clk(signal_clk); |
---|
602 | proc6.p_resetn(signal_resetn); |
---|
603 | proc6.p_irq[0](signal_proc6_it0); |
---|
604 | proc6.p_irq[1](signal_proc6_it1); |
---|
605 | proc6.p_irq[2](signal_proc6_it2); |
---|
606 | proc6.p_irq[3](signal_proc6_it3); |
---|
607 | proc6.p_irq[4](signal_proc6_it4); |
---|
608 | proc6.p_irq[5](signal_proc6_it5); |
---|
609 | proc6.p_vci_ini_rw(signal_vci_ini_rw_proc6); |
---|
610 | proc6.p_vci_ini_c(signal_vci_ini_c_proc6); |
---|
611 | proc6.p_vci_tgt(signal_vci_tgt_proc6); |
---|
612 | |
---|
613 | proc7.p_clk(signal_clk); |
---|
614 | proc7.p_resetn(signal_resetn); |
---|
615 | proc7.p_irq[0](signal_proc7_it0); |
---|
616 | proc7.p_irq[1](signal_proc7_it1); |
---|
617 | proc7.p_irq[2](signal_proc7_it2); |
---|
618 | proc7.p_irq[3](signal_proc7_it3); |
---|
619 | proc7.p_irq[4](signal_proc7_it4); |
---|
620 | proc7.p_irq[5](signal_proc7_it5); |
---|
621 | proc7.p_vci_ini_rw(signal_vci_ini_rw_proc7); |
---|
622 | proc7.p_vci_ini_c(signal_vci_ini_c_proc7); |
---|
623 | proc7.p_vci_tgt(signal_vci_tgt_proc7); |
---|
624 | |
---|
625 | proc8.p_clk(signal_clk); |
---|
626 | proc8.p_resetn(signal_resetn); |
---|
627 | proc8.p_irq[0](signal_proc8_it0); |
---|
628 | proc8.p_irq[1](signal_proc8_it1); |
---|
629 | proc8.p_irq[2](signal_proc8_it2); |
---|
630 | proc8.p_irq[3](signal_proc8_it3); |
---|
631 | proc8.p_irq[4](signal_proc8_it4); |
---|
632 | proc8.p_irq[5](signal_proc8_it5); |
---|
633 | proc8.p_vci_ini_rw(signal_vci_ini_rw_proc8); |
---|
634 | proc8.p_vci_ini_c(signal_vci_ini_c_proc8); |
---|
635 | proc8.p_vci_tgt(signal_vci_tgt_proc8); |
---|
636 | |
---|
637 | proc9.p_clk(signal_clk); |
---|
638 | proc9.p_resetn(signal_resetn); |
---|
639 | proc9.p_irq[0](signal_proc9_it0); |
---|
640 | proc9.p_irq[1](signal_proc9_it1); |
---|
641 | proc9.p_irq[2](signal_proc9_it2); |
---|
642 | proc9.p_irq[3](signal_proc9_it3); |
---|
643 | proc9.p_irq[4](signal_proc9_it4); |
---|
644 | proc9.p_irq[5](signal_proc9_it5); |
---|
645 | proc9.p_vci_ini_rw(signal_vci_ini_rw_proc9); |
---|
646 | proc9.p_vci_ini_c(signal_vci_ini_c_proc9); |
---|
647 | proc9.p_vci_tgt(signal_vci_tgt_proc9); |
---|
648 | |
---|
649 | proc10.p_clk(signal_clk); |
---|
650 | proc10.p_resetn(signal_resetn); |
---|
651 | proc10.p_irq[0](signal_proc10_it0); |
---|
652 | proc10.p_irq[1](signal_proc10_it1); |
---|
653 | proc10.p_irq[2](signal_proc10_it2); |
---|
654 | proc10.p_irq[3](signal_proc10_it3); |
---|
655 | proc10.p_irq[4](signal_proc10_it4); |
---|
656 | proc10.p_irq[5](signal_proc10_it5); |
---|
657 | proc10.p_vci_ini_rw(signal_vci_ini_rw_proc10); |
---|
658 | proc10.p_vci_ini_c(signal_vci_ini_c_proc10); |
---|
659 | proc10.p_vci_tgt(signal_vci_tgt_proc10); |
---|
660 | |
---|
661 | proc11.p_clk(signal_clk); |
---|
662 | proc11.p_resetn(signal_resetn); |
---|
663 | proc11.p_irq[0](signal_proc11_it0); |
---|
664 | proc11.p_irq[1](signal_proc11_it1); |
---|
665 | proc11.p_irq[2](signal_proc11_it2); |
---|
666 | proc11.p_irq[3](signal_proc11_it3); |
---|
667 | proc11.p_irq[4](signal_proc11_it4); |
---|
668 | proc11.p_irq[5](signal_proc11_it5); |
---|
669 | proc11.p_vci_ini_rw(signal_vci_ini_rw_proc11); |
---|
670 | proc11.p_vci_ini_c(signal_vci_ini_c_proc11); |
---|
671 | proc11.p_vci_tgt(signal_vci_tgt_proc11); |
---|
672 | |
---|
673 | proc12.p_clk(signal_clk); |
---|
674 | proc12.p_resetn(signal_resetn); |
---|
675 | proc12.p_irq[0](signal_proc12_it0); |
---|
676 | proc12.p_irq[1](signal_proc12_it1); |
---|
677 | proc12.p_irq[2](signal_proc12_it2); |
---|
678 | proc12.p_irq[3](signal_proc12_it3); |
---|
679 | proc12.p_irq[4](signal_proc12_it4); |
---|
680 | proc12.p_irq[5](signal_proc12_it5); |
---|
681 | proc12.p_vci_ini_rw(signal_vci_ini_rw_proc12); |
---|
682 | proc12.p_vci_ini_c(signal_vci_ini_c_proc12); |
---|
683 | proc12.p_vci_tgt(signal_vci_tgt_proc12); |
---|
684 | |
---|
685 | proc13.p_clk(signal_clk); |
---|
686 | proc13.p_resetn(signal_resetn); |
---|
687 | proc13.p_irq[0](signal_proc13_it0); |
---|
688 | proc13.p_irq[1](signal_proc13_it1); |
---|
689 | proc13.p_irq[2](signal_proc13_it2); |
---|
690 | proc13.p_irq[3](signal_proc13_it3); |
---|
691 | proc13.p_irq[4](signal_proc13_it4); |
---|
692 | proc13.p_irq[5](signal_proc13_it5); |
---|
693 | proc13.p_vci_ini_rw(signal_vci_ini_rw_proc13); |
---|
694 | proc13.p_vci_ini_c(signal_vci_ini_c_proc13); |
---|
695 | proc13.p_vci_tgt(signal_vci_tgt_proc13); |
---|
696 | |
---|
697 | proc14.p_clk(signal_clk); |
---|
698 | proc14.p_resetn(signal_resetn); |
---|
699 | proc14.p_irq[0](signal_proc14_it0); |
---|
700 | proc14.p_irq[1](signal_proc14_it1); |
---|
701 | proc14.p_irq[2](signal_proc14_it2); |
---|
702 | proc14.p_irq[3](signal_proc14_it3); |
---|
703 | proc14.p_irq[4](signal_proc14_it4); |
---|
704 | proc14.p_irq[5](signal_proc14_it5); |
---|
705 | proc14.p_vci_ini_rw(signal_vci_ini_rw_proc14); |
---|
706 | proc14.p_vci_ini_c(signal_vci_ini_c_proc14); |
---|
707 | proc14.p_vci_tgt(signal_vci_tgt_proc14); |
---|
708 | |
---|
709 | proc15.p_clk(signal_clk); |
---|
710 | proc15.p_resetn(signal_resetn); |
---|
711 | proc15.p_irq[0](signal_proc15_it0); |
---|
712 | proc15.p_irq[1](signal_proc15_it1); |
---|
713 | proc15.p_irq[2](signal_proc15_it2); |
---|
714 | proc15.p_irq[3](signal_proc15_it3); |
---|
715 | proc15.p_irq[4](signal_proc15_it4); |
---|
716 | proc15.p_irq[5](signal_proc15_it5); |
---|
717 | proc15.p_vci_ini_rw(signal_vci_ini_rw_proc15); |
---|
718 | proc15.p_vci_ini_c(signal_vci_ini_c_proc15); |
---|
719 | proc15.p_vci_tgt(signal_vci_tgt_proc15); |
---|
720 | |
---|
721 | tty.p_clk(signal_clk); |
---|
722 | tty.p_resetn(signal_resetn); |
---|
723 | tty.p_vci(signal_vci_tgt_tty); |
---|
724 | tty.p_irq[0](signal_tty_irq0); |
---|
725 | tty.p_irq[1](signal_tty_irq1); |
---|
726 | tty.p_irq[2](signal_tty_irq2); |
---|
727 | tty.p_irq[3](signal_tty_irq3); |
---|
728 | tty.p_irq[4](signal_tty_irq4); |
---|
729 | tty.p_irq[5](signal_tty_irq5); |
---|
730 | tty.p_irq[6](signal_tty_irq6); |
---|
731 | tty.p_irq[7](signal_tty_irq7); |
---|
732 | tty.p_irq[8](signal_tty_irq8); |
---|
733 | tty.p_irq[9](signal_tty_irq9); |
---|
734 | tty.p_irq[10](signal_tty_irq10); |
---|
735 | tty.p_irq[11](signal_tty_irq11); |
---|
736 | tty.p_irq[12](signal_tty_irq12); |
---|
737 | tty.p_irq[13](signal_tty_irq13); |
---|
738 | tty.p_irq[14](signal_tty_irq14); |
---|
739 | tty.p_irq[15](signal_tty_irq15); |
---|
740 | |
---|
741 | memc0.p_clk(signal_clk); |
---|
742 | memc0.p_resetn(signal_resetn); |
---|
743 | memc0.p_vci_tgt(signal_vci_tgt_memc0); |
---|
744 | memc0.p_vci_tgt_cleanup(signal_vci_tgt_cleanup_memc0); |
---|
745 | memc0.p_vci_ini(signal_vci_ini_memc0); |
---|
746 | memc0.p_vci_ixr(signal_vci_ixr_memc0); |
---|
747 | |
---|
748 | memc1.p_clk(signal_clk); |
---|
749 | memc1.p_resetn(signal_resetn); |
---|
750 | memc1.p_vci_tgt(signal_vci_tgt_memc1); |
---|
751 | memc1.p_vci_tgt_cleanup(signal_vci_tgt_cleanup_memc1); |
---|
752 | memc1.p_vci_ini(signal_vci_ini_memc1); |
---|
753 | memc1.p_vci_ixr(signal_vci_ixr_memc1); |
---|
754 | |
---|
755 | memc2.p_clk(signal_clk); |
---|
756 | memc2.p_resetn(signal_resetn); |
---|
757 | memc2.p_vci_tgt(signal_vci_tgt_memc2); |
---|
758 | memc2.p_vci_tgt_cleanup(signal_vci_tgt_cleanup_memc2); |
---|
759 | memc2.p_vci_ini(signal_vci_ini_memc2); |
---|
760 | memc2.p_vci_ixr(signal_vci_ixr_memc2); |
---|
761 | |
---|
762 | memc3.p_clk(signal_clk); |
---|
763 | memc3.p_resetn(signal_resetn); |
---|
764 | memc3.p_vci_tgt(signal_vci_tgt_memc3); |
---|
765 | memc3.p_vci_tgt_cleanup(signal_vci_tgt_cleanup_memc3); |
---|
766 | memc3.p_vci_ini(signal_vci_ini_memc3); |
---|
767 | memc3.p_vci_ixr(signal_vci_ixr_memc3); |
---|
768 | |
---|
769 | |
---|
770 | xram.p_clk(signal_clk); |
---|
771 | xram.p_resetn(signal_resetn); |
---|
772 | xram.p_vci(signal_vci_tgt_xram); |
---|
773 | |
---|
774 | /////////////////////////////////////////////////////// |
---|
775 | // Réseau vers la XRAM |
---|
776 | /////////////////////////////////////////////////////// |
---|
777 | |
---|
778 | xring.p_clk(signal_clk); |
---|
779 | xring.p_resetn(signal_resetn); |
---|
780 | |
---|
781 | xring.p_to_initiator[0](signal_vci_ixr_memc0); |
---|
782 | xring.p_to_initiator[1](signal_vci_ixr_memc1); |
---|
783 | xring.p_to_initiator[2](signal_vci_ixr_memc2); |
---|
784 | xring.p_to_initiator[3](signal_vci_ixr_memc3); |
---|
785 | |
---|
786 | xring.p_to_target[0](signal_vci_tgt_xram); |
---|
787 | |
---|
788 | /////////////////////////////////////////////////////// |
---|
789 | // Routers connections |
---|
790 | /////////////////////////////////////////////////////// |
---|
791 | |
---|
792 | for ( size_t x = 0 ; x < X_MAX ; x++ ) |
---|
793 | { |
---|
794 | for ( size_t y = 0 ; y < Y_MAX ; y++ ) |
---|
795 | { |
---|
796 | // cmd DSPIN router |
---|
797 | cmdrouter[cluster(x,y)].p_clk (signal_clk); |
---|
798 | cmdrouter[cluster(x,y)].p_resetn (signal_resetn); |
---|
799 | cmdrouter[cluster(x,y)].p_out[0][LOCAL] (signal_dspin_cmd_g2l_d[x][y]); |
---|
800 | cmdrouter[cluster(x,y)].p_out[1][LOCAL] (signal_dspin_cmd_g2l_c[x][y]); |
---|
801 | cmdrouter[cluster(x,y)].p_in[0][LOCAL] (signal_dspin_cmd_l2g_d[x][y]); |
---|
802 | cmdrouter[cluster(x,y)].p_in[1][LOCAL] (signal_dspin_cmd_l2g_c[x][y]); |
---|
803 | |
---|
804 | // rsp DSPIN router |
---|
805 | rsprouter[cluster(x,y)].p_clk (signal_clk); |
---|
806 | rsprouter[cluster(x,y)].p_resetn (signal_resetn); |
---|
807 | rsprouter[cluster(x,y)].p_out[0][LOCAL] (signal_dspin_rsp_g2l_d[x][y]); |
---|
808 | rsprouter[cluster(x,y)].p_out[1][LOCAL] (signal_dspin_rsp_g2l_c[x][y]); |
---|
809 | rsprouter[cluster(x,y)].p_in[0][LOCAL] (signal_dspin_rsp_l2g_d[x][y]); |
---|
810 | rsprouter[cluster(x,y)].p_in[1][LOCAL] (signal_dspin_rsp_l2g_c[x][y]); |
---|
811 | } |
---|
812 | } |
---|
813 | |
---|
814 | // Inter Clusters horizontal connections |
---|
815 | for ( size_t x = 0 ; x < (X_MAX-1) ; x++ ) |
---|
816 | { |
---|
817 | for ( size_t y = 0 ; y < Y_MAX ; y++ ) |
---|
818 | { |
---|
819 | for ( size_t k = 0 ; k < 2 ; k++ ) |
---|
820 | { |
---|
821 | cmdrouter[cluster(x,y)].p_out[k][EAST] (signal_dspin_h_cmd_inc[x][y][k]); |
---|
822 | cmdrouter[cluster((x+1),y)].p_in[k][WEST] (signal_dspin_h_cmd_inc[x][y][k]); |
---|
823 | |
---|
824 | cmdrouter[cluster(x,y)].p_in[k][EAST] (signal_dspin_h_cmd_dec[x][y][k]); |
---|
825 | cmdrouter[cluster((x+1),y)].p_out[k][WEST] (signal_dspin_h_cmd_dec[x][y][k]); |
---|
826 | |
---|
827 | rsprouter[cluster(x,y)].p_out[k][EAST] (signal_dspin_h_rsp_inc[x][y][k]); |
---|
828 | rsprouter[cluster((x+1),y)].p_in[k][WEST] (signal_dspin_h_rsp_inc[x][y][k]); |
---|
829 | |
---|
830 | rsprouter[cluster(x,y)].p_in[k][EAST] (signal_dspin_h_rsp_dec[x][y][k]); |
---|
831 | rsprouter[cluster((x+1),y)].p_out[k][WEST] (signal_dspin_h_rsp_dec[x][y][k]); |
---|
832 | } |
---|
833 | } |
---|
834 | } |
---|
835 | |
---|
836 | // std::cout << "returned after inter cluster are horizontally connected" << std::endl; |
---|
837 | |
---|
838 | // East & West boundary clusters connections |
---|
839 | |
---|
840 | for ( size_t y = 0 ; y < Y_MAX ; y++ ) |
---|
841 | { |
---|
842 | for ( size_t k = 0 ; k < 2 ; k++ ) |
---|
843 | { |
---|
844 | cmdrouter[cluster(0,y)].p_in[k][WEST] (signal_dspin_false_cmd_in[cluster(0,y)][k][0]); |
---|
845 | cmdrouter[cluster(0,y)].p_out[k][WEST] (signal_dspin_false_cmd_out[cluster(0,y)][k][0]); |
---|
846 | rsprouter[cluster(0,y)].p_in[k][WEST] (signal_dspin_false_rsp_in[cluster(0,y)][k][0]); |
---|
847 | rsprouter[cluster(0,y)].p_out[k][WEST] (signal_dspin_false_rsp_out[cluster(0,y)][k][0]); |
---|
848 | |
---|
849 | cmdrouter[cluster((X_MAX-1),y)].p_in[k][EAST] (signal_dspin_false_cmd_in[cluster((X_MAX-1),y)][k][0]); |
---|
850 | cmdrouter[cluster((X_MAX-1),y)].p_out[k][EAST] (signal_dspin_false_cmd_out[cluster((X_MAX-1),y)][k][0]); |
---|
851 | rsprouter[cluster((X_MAX-1),y)].p_in[k][EAST] (signal_dspin_false_rsp_in[cluster((X_MAX-1),y)][k][0]); |
---|
852 | rsprouter[cluster((X_MAX-1),y)].p_out[k][EAST] (signal_dspin_false_rsp_out[cluster((X_MAX-1),y)][k][0]); |
---|
853 | } |
---|
854 | } |
---|
855 | |
---|
856 | // std::cout << "returned after boundary clusters are horizontally connected" << std::endl; |
---|
857 | |
---|
858 | // Inter Clusters vertical connections |
---|
859 | for ( size_t y = 0 ; y < (Y_MAX-1) ; y++ ) |
---|
860 | { |
---|
861 | for ( size_t x = 0 ; x < X_MAX ; x++ ) |
---|
862 | { |
---|
863 | for ( size_t k = 0 ; k < 2 ; k++ ) |
---|
864 | { |
---|
865 | cmdrouter[cluster(x,y)].p_out[k][NORTH] (signal_dspin_v_cmd_inc[x][y][k]); |
---|
866 | cmdrouter[cluster(x,(y+1))].p_in[k][SOUTH] (signal_dspin_v_cmd_inc[x][y][k]); |
---|
867 | |
---|
868 | cmdrouter[cluster(x,y)].p_in[k][NORTH] (signal_dspin_v_cmd_dec[x][y][k]); |
---|
869 | cmdrouter[cluster(x,(y+1))].p_out[k][SOUTH] (signal_dspin_v_cmd_dec[x][y][k]); |
---|
870 | |
---|
871 | rsprouter[cluster(x,y)].p_out[k][NORTH] (signal_dspin_v_rsp_inc[x][y][k]); |
---|
872 | rsprouter[cluster(x,(y+1))].p_in[k][SOUTH] (signal_dspin_v_rsp_inc[x][y][k]); |
---|
873 | |
---|
874 | rsprouter[cluster(x,y)].p_in[k][NORTH] (signal_dspin_v_rsp_dec[x][y][k]); |
---|
875 | rsprouter[cluster(x,(y+1))].p_out[k][SOUTH] (signal_dspin_v_rsp_dec[x][y][k]); |
---|
876 | } |
---|
877 | } |
---|
878 | } |
---|
879 | |
---|
880 | // North & South boundary clusters connections |
---|
881 | |
---|
882 | for ( size_t x = 0 ; x < X_MAX ; x++ ) |
---|
883 | { |
---|
884 | for ( size_t k = 0 ; k < 2 ; k++ ) |
---|
885 | { |
---|
886 | cmdrouter[cluster(x,0)].p_in[k][SOUTH] (signal_dspin_false_cmd_in[cluster(x,0)][k][1]); |
---|
887 | cmdrouter[cluster(x,0)].p_out[k][SOUTH] (signal_dspin_false_cmd_out[cluster(x,0)][k][1]); |
---|
888 | rsprouter[cluster(x,0)].p_in[k][SOUTH] (signal_dspin_false_rsp_in[cluster(x,0)][k][1]); |
---|
889 | rsprouter[cluster(x,0)].p_out[k][SOUTH] (signal_dspin_false_rsp_out[cluster(x,0)][k][1]); |
---|
890 | |
---|
891 | cmdrouter[cluster(x,(Y_MAX-1))].p_out[k][NORTH] (signal_dspin_false_cmd_out[cluster(x,(Y_MAX-1))][k][1]); |
---|
892 | cmdrouter[cluster(x,(Y_MAX-1))].p_in[k][NORTH] (signal_dspin_false_cmd_in[cluster(x,(Y_MAX-1))][k][1]); |
---|
893 | rsprouter[cluster(x,(Y_MAX-1))].p_out[k][NORTH] (signal_dspin_false_rsp_out[cluster(x,(Y_MAX-1))][k][1]); |
---|
894 | rsprouter[cluster(x,(Y_MAX-1))].p_in[k][NORTH] (signal_dspin_false_rsp_in[cluster(x,(Y_MAX-1))][k][1]); |
---|
895 | } |
---|
896 | } |
---|
897 | |
---|
898 | // std::cout << "returned after boundary clusters are vertically connected" << std::endl; |
---|
899 | |
---|
900 | /////////////////////////////////////////////////////// |
---|
901 | // Réseau des commandes primaires |
---|
902 | /////////////////////////////////////////////////////// |
---|
903 | |
---|
904 | clusterPN0.p_clk(signal_clk); |
---|
905 | clusterPN0.p_resetn(signal_resetn); |
---|
906 | |
---|
907 | clusterPN0.p_to_initiator[0](signal_vci_ini_rw_proc0); |
---|
908 | clusterPN0.p_to_initiator[1](signal_vci_ini_rw_proc1); |
---|
909 | clusterPN0.p_to_initiator[2](signal_vci_ini_rw_proc2); |
---|
910 | clusterPN0.p_to_initiator[3](signal_vci_ini_rw_proc3); |
---|
911 | |
---|
912 | clusterPN0.p_to_target[0](signal_vci_tgt_memc0); |
---|
913 | |
---|
914 | clusterPN0.p_gate_cmd_out(signal_dspin_cmd_l2g_d[0][0]); |
---|
915 | clusterPN0.p_gate_rsp_in(signal_dspin_rsp_g2l_d[0][0]); |
---|
916 | clusterPN0.p_gate_cmd_in(signal_dspin_cmd_g2l_d[0][0]); |
---|
917 | clusterPN0.p_gate_rsp_out(signal_dspin_rsp_l2g_d[0][0]); |
---|
918 | |
---|
919 | clusterPN1.p_clk(signal_clk); |
---|
920 | clusterPN1.p_resetn(signal_resetn); |
---|
921 | |
---|
922 | clusterPN1.p_to_initiator[0](signal_vci_ini_rw_proc4); |
---|
923 | clusterPN1.p_to_initiator[1](signal_vci_ini_rw_proc5); |
---|
924 | clusterPN1.p_to_initiator[2](signal_vci_ini_rw_proc6); |
---|
925 | clusterPN1.p_to_initiator[3](signal_vci_ini_rw_proc7); |
---|
926 | |
---|
927 | clusterPN1.p_to_target[0](signal_vci_tgt_memc1); |
---|
928 | |
---|
929 | clusterPN1.p_gate_cmd_out(signal_dspin_cmd_l2g_d[0][1]); |
---|
930 | clusterPN1.p_gate_rsp_in(signal_dspin_rsp_g2l_d[0][1]); |
---|
931 | clusterPN1.p_gate_cmd_in(signal_dspin_cmd_g2l_d[0][1]); |
---|
932 | clusterPN1.p_gate_rsp_out(signal_dspin_rsp_l2g_d[0][1]); |
---|
933 | |
---|
934 | clusterPN2.p_clk(signal_clk); |
---|
935 | clusterPN2.p_resetn(signal_resetn); |
---|
936 | |
---|
937 | clusterPN2.p_to_initiator[0](signal_vci_ini_rw_proc8); |
---|
938 | clusterPN2.p_to_initiator[1](signal_vci_ini_rw_proc9); |
---|
939 | clusterPN2.p_to_initiator[2](signal_vci_ini_rw_proc10); |
---|
940 | clusterPN2.p_to_initiator[3](signal_vci_ini_rw_proc11); |
---|
941 | |
---|
942 | clusterPN2.p_to_target[0](signal_vci_tgt_memc2); |
---|
943 | |
---|
944 | clusterPN2.p_gate_cmd_out(signal_dspin_cmd_l2g_d[1][0]); |
---|
945 | clusterPN2.p_gate_rsp_in(signal_dspin_rsp_g2l_d[1][0]); |
---|
946 | clusterPN2.p_gate_cmd_in(signal_dspin_cmd_g2l_d[1][0]); |
---|
947 | clusterPN2.p_gate_rsp_out(signal_dspin_rsp_l2g_d[1][0]); |
---|
948 | |
---|
949 | clusterPN3.p_clk(signal_clk); |
---|
950 | clusterPN3.p_resetn(signal_resetn); |
---|
951 | |
---|
952 | clusterPN3.p_to_initiator[0](signal_vci_ini_rw_proc12); |
---|
953 | clusterPN3.p_to_initiator[1](signal_vci_ini_rw_proc13); |
---|
954 | clusterPN3.p_to_initiator[2](signal_vci_ini_rw_proc14); |
---|
955 | clusterPN3.p_to_initiator[3](signal_vci_ini_rw_proc15); |
---|
956 | |
---|
957 | clusterPN3.p_to_target[0](signal_vci_tgt_memc3); |
---|
958 | clusterPN3.p_to_target[1](signal_vci_tgt_tty); |
---|
959 | |
---|
960 | clusterPN3.p_gate_cmd_out(signal_dspin_cmd_l2g_d[1][1]); |
---|
961 | clusterPN3.p_gate_rsp_in(signal_dspin_rsp_g2l_d[1][1]); |
---|
962 | clusterPN3.p_gate_cmd_in(signal_dspin_cmd_g2l_d[1][1]); |
---|
963 | clusterPN3.p_gate_rsp_out(signal_dspin_rsp_l2g_d[1][1]); |
---|
964 | |
---|
965 | // std::cout << "returned after clusterPN3 connected" << std::endl; |
---|
966 | |
---|
967 | /////////////////////////////////////////////////////// |
---|
968 | // Réseau des commandes de cohérence |
---|
969 | /////////////////////////////////////////////////////// |
---|
970 | clusterCN0.p_clk(signal_clk); |
---|
971 | clusterCN0.p_resetn(signal_resetn); |
---|
972 | |
---|
973 | clusterCN0.p_to_initiator[4](signal_vci_ini_memc0); |
---|
974 | clusterCN0.p_to_initiator[0](signal_vci_ini_c_proc0); |
---|
975 | clusterCN0.p_to_initiator[1](signal_vci_ini_c_proc1); |
---|
976 | clusterCN0.p_to_initiator[2](signal_vci_ini_c_proc2); |
---|
977 | clusterCN0.p_to_initiator[3](signal_vci_ini_c_proc3); |
---|
978 | |
---|
979 | clusterCN0.p_to_target[0](signal_vci_tgt_proc0); |
---|
980 | clusterCN0.p_to_target[1](signal_vci_tgt_proc1); |
---|
981 | clusterCN0.p_to_target[2](signal_vci_tgt_proc2); |
---|
982 | clusterCN0.p_to_target[3](signal_vci_tgt_proc3); |
---|
983 | clusterCN0.p_to_target[4](signal_vci_tgt_cleanup_memc0); |
---|
984 | |
---|
985 | clusterCN0.p_gate_cmd_out(signal_dspin_cmd_l2g_c[0][0]); |
---|
986 | clusterCN0.p_gate_rsp_in(signal_dspin_rsp_g2l_c[0][0]); |
---|
987 | clusterCN0.p_gate_cmd_in(signal_dspin_cmd_g2l_c[0][0]); |
---|
988 | clusterCN0.p_gate_rsp_out(signal_dspin_rsp_l2g_c[0][0]); |
---|
989 | |
---|
990 | clusterCN1.p_clk(signal_clk); |
---|
991 | clusterCN1.p_resetn(signal_resetn); |
---|
992 | |
---|
993 | clusterCN1.p_to_initiator[4](signal_vci_ini_memc1); |
---|
994 | clusterCN1.p_to_initiator[0](signal_vci_ini_c_proc4); |
---|
995 | clusterCN1.p_to_initiator[1](signal_vci_ini_c_proc5); |
---|
996 | clusterCN1.p_to_initiator[2](signal_vci_ini_c_proc6); |
---|
997 | clusterCN1.p_to_initiator[3](signal_vci_ini_c_proc7); |
---|
998 | |
---|
999 | clusterCN1.p_to_target[0](signal_vci_tgt_proc4); |
---|
1000 | clusterCN1.p_to_target[1](signal_vci_tgt_proc5); |
---|
1001 | clusterCN1.p_to_target[2](signal_vci_tgt_proc6); |
---|
1002 | clusterCN1.p_to_target[3](signal_vci_tgt_proc7); |
---|
1003 | clusterCN1.p_to_target[4](signal_vci_tgt_cleanup_memc1); |
---|
1004 | |
---|
1005 | clusterCN1.p_gate_cmd_out(signal_dspin_cmd_l2g_c[0][1]); |
---|
1006 | clusterCN1.p_gate_rsp_in(signal_dspin_rsp_g2l_c[0][1]); |
---|
1007 | clusterCN1.p_gate_cmd_in(signal_dspin_cmd_g2l_c[0][1]); |
---|
1008 | clusterCN1.p_gate_rsp_out(signal_dspin_rsp_l2g_c[0][1]); |
---|
1009 | |
---|
1010 | clusterCN2.p_clk(signal_clk); |
---|
1011 | clusterCN2.p_resetn(signal_resetn); |
---|
1012 | |
---|
1013 | clusterCN2.p_to_initiator[4](signal_vci_ini_memc2); |
---|
1014 | clusterCN2.p_to_initiator[0](signal_vci_ini_c_proc8); |
---|
1015 | clusterCN2.p_to_initiator[1](signal_vci_ini_c_proc9); |
---|
1016 | clusterCN2.p_to_initiator[2](signal_vci_ini_c_proc10); |
---|
1017 | clusterCN2.p_to_initiator[3](signal_vci_ini_c_proc11); |
---|
1018 | |
---|
1019 | clusterCN2.p_to_target[0](signal_vci_tgt_proc8); |
---|
1020 | clusterCN2.p_to_target[1](signal_vci_tgt_proc9); |
---|
1021 | clusterCN2.p_to_target[2](signal_vci_tgt_proc10); |
---|
1022 | clusterCN2.p_to_target[3](signal_vci_tgt_proc11); |
---|
1023 | clusterCN2.p_to_target[4](signal_vci_tgt_cleanup_memc2); |
---|
1024 | |
---|
1025 | clusterCN2.p_gate_cmd_out(signal_dspin_cmd_l2g_c[1][0]); |
---|
1026 | clusterCN2.p_gate_rsp_in(signal_dspin_rsp_g2l_c[1][0]); |
---|
1027 | clusterCN2.p_gate_cmd_in(signal_dspin_cmd_g2l_c[1][0]); |
---|
1028 | clusterCN2.p_gate_rsp_out(signal_dspin_rsp_l2g_c[1][0]); |
---|
1029 | |
---|
1030 | clusterCN3.p_clk(signal_clk); |
---|
1031 | clusterCN3.p_resetn(signal_resetn); |
---|
1032 | |
---|
1033 | clusterCN3.p_to_initiator[4](signal_vci_ini_memc3); |
---|
1034 | clusterCN3.p_to_initiator[0](signal_vci_ini_c_proc12); |
---|
1035 | clusterCN3.p_to_initiator[1](signal_vci_ini_c_proc13); |
---|
1036 | clusterCN3.p_to_initiator[2](signal_vci_ini_c_proc14); |
---|
1037 | clusterCN3.p_to_initiator[3](signal_vci_ini_c_proc15); |
---|
1038 | |
---|
1039 | clusterCN3.p_to_target[0](signal_vci_tgt_proc12); |
---|
1040 | clusterCN3.p_to_target[1](signal_vci_tgt_proc13); |
---|
1041 | clusterCN3.p_to_target[2](signal_vci_tgt_proc14); |
---|
1042 | clusterCN3.p_to_target[3](signal_vci_tgt_proc15); |
---|
1043 | clusterCN3.p_to_target[4](signal_vci_tgt_cleanup_memc3); |
---|
1044 | |
---|
1045 | clusterCN3.p_gate_cmd_out(signal_dspin_cmd_l2g_c[1][1]); |
---|
1046 | clusterCN3.p_gate_rsp_in(signal_dspin_rsp_g2l_c[1][1]); |
---|
1047 | clusterCN3.p_gate_cmd_in(signal_dspin_cmd_g2l_c[1][1]); |
---|
1048 | clusterCN3.p_gate_rsp_out(signal_dspin_rsp_l2g_c[1][1]); |
---|
1049 | |
---|
1050 | |
---|
1051 | //////////////////////////////////////////////////////// |
---|
1052 | //////////////////////////////////////////////////////// |
---|
1053 | |
---|
1054 | int ncycles; |
---|
1055 | |
---|
1056 | #ifndef SOCVIEW |
---|
1057 | if (argc == 2) { |
---|
1058 | ncycles = std::atoi(argv[1]); |
---|
1059 | } else { |
---|
1060 | std::cerr |
---|
1061 | << std::endl |
---|
1062 | << "The number of simulation cycles must " |
---|
1063 | "be defined in the command line" |
---|
1064 | << std::endl; |
---|
1065 | exit(1); |
---|
1066 | } |
---|
1067 | |
---|
1068 | sc_start(sc_core::sc_time(0, SC_NS)); |
---|
1069 | signal_resetn = false; |
---|
1070 | |
---|
1071 | for(size_t t = 0; t < X_MAX*Y_MAX; t++) |
---|
1072 | { |
---|
1073 | for (size_t k = 0; k < 2; k++) |
---|
1074 | { |
---|
1075 | for(size_t a = 0; a < 2; a ++) |
---|
1076 | { |
---|
1077 | signal_dspin_false_cmd_in[t][k][a].write = false; |
---|
1078 | signal_dspin_false_cmd_in[t][k][a].read = true; |
---|
1079 | signal_dspin_false_cmd_out[t][k][a].write = false; |
---|
1080 | signal_dspin_false_cmd_out[t][k][a].read = true; |
---|
1081 | |
---|
1082 | signal_dspin_false_rsp_in[t][k][a].write = false; |
---|
1083 | signal_dspin_false_rsp_in[t][k][a].read = true; |
---|
1084 | signal_dspin_false_rsp_out[t][k][a].write = false; |
---|
1085 | signal_dspin_false_rsp_out[t][k][a].read = true; |
---|
1086 | } |
---|
1087 | } |
---|
1088 | } |
---|
1089 | |
---|
1090 | |
---|
1091 | sc_start(sc_core::sc_time(1, SC_NS)); |
---|
1092 | signal_resetn = true; |
---|
1093 | |
---|
1094 | for (int i = 0; i < ncycles ; i+=1) { |
---|
1095 | sc_start(sc_core::sc_time(1, SC_NS)); |
---|
1096 | //std::cout << " +++++++++ cycle : " << std::dec << i << std::endl; |
---|
1097 | //cmdrouter[0].printTrace(1); // channel 0 : Direct, channel 1 : Coherence |
---|
1098 | //cmdrouter[1].printTrace(1); |
---|
1099 | //cmdrouter[2].printTrace(1); |
---|
1100 | //cmdrouter[3].printTrace(1); |
---|
1101 | } |
---|
1102 | |
---|
1103 | std::cout << "Hit ENTER to end simulation" << std::endl; |
---|
1104 | char buf[1]; |
---|
1105 | |
---|
1106 | std::cin.getline(buf,1); |
---|
1107 | return EXIT_SUCCESS; |
---|
1108 | #else |
---|
1109 | ncycles = 1; |
---|
1110 | sc_start(sc_core::sc_time(0, SC_NS)); |
---|
1111 | signal_resetn = false; |
---|
1112 | sc_start(sc_core::sc_time(1, SC_NS)); |
---|
1113 | signal_resetn = true; |
---|
1114 | |
---|
1115 | debug(); |
---|
1116 | return EXIT_SUCCESS; |
---|
1117 | #endif |
---|
1118 | } |
---|
1119 | |
---|
1120 | int sc_main (int argc, char *argv[]) |
---|
1121 | { |
---|
1122 | try { |
---|
1123 | return _main(argc, argv); |
---|
1124 | } catch (std::exception &e) { |
---|
1125 | std::cout << e.what() << std::endl; |
---|
1126 | } catch (...) { |
---|
1127 | std::cout << "Unknown exception occured" << std::endl; |
---|
1128 | throw; |
---|
1129 | } |
---|
1130 | return 1; |
---|
1131 | } |
---|
1132 | |
---|