Changeset 468 for trunk/platforms
- Timestamp:
- Jul 24, 2013, 8:47:40 AM (11 years ago)
- Location:
- trunk/platforms
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/platforms/tsar_generic_iob/top.cpp
r450 r468 802 802 // Horizontal inter-clusters INT network DSPIN 803 803 DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_h_inc = 804 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_inc", XMAX-1, YMAX, 2);804 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_inc", XMAX-1, YMAX, 3); 805 805 DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_h_dec = 806 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_dec", XMAX-1, YMAX, 2);806 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_dec", XMAX-1, YMAX, 3); 807 807 DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_h_inc = 808 808 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_h_inc", XMAX-1, YMAX, 2); … … 812 812 // Vertical inter-clusters INT network DSPIN 813 813 DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_v_inc = 814 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_inc", XMAX, YMAX-1, 2);814 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_inc", XMAX, YMAX-1, 3); 815 815 DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_v_dec = 816 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_dec", XMAX, YMAX-1, 2);816 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_dec", XMAX, YMAX-1, 3); 817 817 DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_v_inc = 818 818 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_v_inc", XMAX, YMAX-1, 2); … … 822 822 // Mesh boundaries INT network DSPIN 823 823 DspinSignals<dspin_int_cmd_width>**** signal_dspin_false_int_cmd_in = 824 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_in", XMAX, YMAX, 2, 4);824 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_in", XMAX, YMAX, 4, 3); 825 825 DspinSignals<dspin_int_cmd_width>**** signal_dspin_false_int_cmd_out = 826 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_out", XMAX, YMAX, 2, 4);826 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_out", XMAX, YMAX, 4, 3); 827 827 DspinSignals<dspin_int_rsp_width>**** signal_dspin_false_int_rsp_in = 828 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_in", XMAX, YMAX, 2, 4);828 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_in", XMAX, YMAX, 4, 2); 829 829 DspinSignals<dspin_int_rsp_width>**** signal_dspin_false_int_rsp_out = 830 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_out", XMAX, YMAX, 2, 4);830 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_out", XMAX, YMAX, 4, 2); 831 831 832 832 … … 1152 1152 for (size_t y = 0; y < YMAX; y++) 1153 1153 { 1154 for (size_t k = 0; k < 3; k++) 1155 { 1156 clusters[x][y]->p_dspin_int_cmd_out[EAST][k] (signal_dspin_int_cmd_h_inc[x][y][k]); 1157 clusters[x+1][y]->p_dspin_int_cmd_in[WEST][k] (signal_dspin_int_cmd_h_inc[x][y][k]); 1158 clusters[x][y]->p_dspin_int_cmd_in[EAST][k] (signal_dspin_int_cmd_h_dec[x][y][k]); 1159 clusters[x+1][y]->p_dspin_int_cmd_out[WEST][k] (signal_dspin_int_cmd_h_dec[x][y][k]); 1160 } 1161 1154 1162 for (size_t k = 0; k < 2; k++) 1155 1163 { 1156 clusters[x][y]->p_dspin_int_cmd_out[k][EAST] (signal_dspin_int_cmd_h_inc[x][y][k]); 1157 clusters[x+1][y]->p_dspin_int_cmd_in[k][WEST] (signal_dspin_int_cmd_h_inc[x][y][k]); 1158 clusters[x][y]->p_dspin_int_cmd_in[k][EAST] (signal_dspin_int_cmd_h_dec[x][y][k]); 1159 clusters[x+1][y]->p_dspin_int_cmd_out[k][WEST] (signal_dspin_int_cmd_h_dec[x][y][k]); 1160 clusters[x][y]->p_dspin_int_rsp_out[k][EAST] (signal_dspin_int_rsp_h_inc[x][y][k]); 1161 clusters[x+1][y]->p_dspin_int_rsp_in[k][WEST] (signal_dspin_int_rsp_h_inc[x][y][k]); 1162 clusters[x][y]->p_dspin_int_rsp_in[k][EAST] (signal_dspin_int_rsp_h_dec[x][y][k]); 1163 clusters[x+1][y]->p_dspin_int_rsp_out[k][WEST] (signal_dspin_int_rsp_h_dec[x][y][k]); 1164 clusters[x][y]->p_dspin_int_rsp_out[EAST][k] (signal_dspin_int_rsp_h_inc[x][y][k]); 1165 clusters[x+1][y]->p_dspin_int_rsp_in[WEST][k] (signal_dspin_int_rsp_h_inc[x][y][k]); 1166 clusters[x][y]->p_dspin_int_rsp_in[EAST][k] (signal_dspin_int_rsp_h_dec[x][y][k]); 1167 clusters[x+1][y]->p_dspin_int_rsp_out[WEST][k] (signal_dspin_int_rsp_h_dec[x][y][k]); 1164 1168 } 1165 1169 … … 1185 1189 for (size_t x = 0; x < XMAX; x++) 1186 1190 { 1191 for (size_t k = 0; k < 3; k++) 1192 { 1193 clusters[x][y]->p_dspin_int_cmd_out[NORTH][k] (signal_dspin_int_cmd_v_inc[x][y][k]); 1194 clusters[x][y+1]->p_dspin_int_cmd_in[SOUTH][k] (signal_dspin_int_cmd_v_inc[x][y][k]); 1195 clusters[x][y]->p_dspin_int_cmd_in[NORTH][k] (signal_dspin_int_cmd_v_dec[x][y][k]); 1196 clusters[x][y+1]->p_dspin_int_cmd_out[SOUTH][k] (signal_dspin_int_cmd_v_dec[x][y][k]); 1197 } 1198 1187 1199 for (size_t k = 0; k < 2; k++) 1188 1200 { 1189 clusters[x][y]->p_dspin_int_cmd_out[k][NORTH] (signal_dspin_int_cmd_v_inc[x][y][k]); 1190 clusters[x][y+1]->p_dspin_int_cmd_in[k][SOUTH] (signal_dspin_int_cmd_v_inc[x][y][k]); 1191 clusters[x][y]->p_dspin_int_cmd_in[k][NORTH] (signal_dspin_int_cmd_v_dec[x][y][k]); 1192 clusters[x][y+1]->p_dspin_int_cmd_out[k][SOUTH] (signal_dspin_int_cmd_v_dec[x][y][k]); 1193 clusters[x][y]->p_dspin_int_rsp_out[k][NORTH] (signal_dspin_int_rsp_v_inc[x][y][k]); 1194 clusters[x][y+1]->p_dspin_int_rsp_in[k][SOUTH] (signal_dspin_int_rsp_v_inc[x][y][k]); 1195 clusters[x][y]->p_dspin_int_rsp_in[k][NORTH] (signal_dspin_int_rsp_v_dec[x][y][k]); 1196 clusters[x][y+1]->p_dspin_int_rsp_out[k][SOUTH] (signal_dspin_int_rsp_v_dec[x][y][k]); 1201 clusters[x][y]->p_dspin_int_rsp_out[NORTH][k] (signal_dspin_int_rsp_v_inc[x][y][k]); 1202 clusters[x][y+1]->p_dspin_int_rsp_in[SOUTH][k] (signal_dspin_int_rsp_v_inc[x][y][k]); 1203 clusters[x][y]->p_dspin_int_rsp_in[NORTH][k] (signal_dspin_int_rsp_v_dec[x][y][k]); 1204 clusters[x][y+1]->p_dspin_int_rsp_out[SOUTH][k] (signal_dspin_int_rsp_v_dec[x][y][k]); 1197 1205 } 1198 1206 … … 1214 1222 for (size_t y = 0; y < YMAX; y++) 1215 1223 { 1224 for (size_t k = 0; k < 3; k++) 1225 { 1226 clusters[0][y]->p_dspin_int_cmd_in[WEST][k] (signal_dspin_false_int_cmd_in[0][y][WEST][k]); 1227 clusters[0][y]->p_dspin_int_cmd_out[WEST][k] (signal_dspin_false_int_cmd_out[0][y][WEST][k]); 1228 clusters[XMAX-1][y]->p_dspin_int_cmd_in[EAST][k] (signal_dspin_false_int_cmd_in[XMAX-1][y][EAST][k]); 1229 clusters[XMAX-1][y]->p_dspin_int_cmd_out[EAST][k] (signal_dspin_false_int_cmd_out[XMAX-1][y][EAST][k]); 1230 } 1231 1216 1232 for (size_t k = 0; k < 2; k++) 1217 1233 { 1218 clusters[0][y]->p_dspin_int_cmd_in[k][WEST] (signal_dspin_false_int_cmd_in[0][y][k][WEST]); 1219 clusters[0][y]->p_dspin_int_cmd_out[k][WEST] (signal_dspin_false_int_cmd_out[0][y][k][WEST]); 1220 clusters[0][y]->p_dspin_int_rsp_in[k][WEST] (signal_dspin_false_int_rsp_in[0][y][k][WEST]); 1221 clusters[0][y]->p_dspin_int_rsp_out[k][WEST] (signal_dspin_false_int_rsp_out[0][y][k][WEST]); 1222 1223 clusters[XMAX-1][y]->p_dspin_int_cmd_in[k][EAST] (signal_dspin_false_int_cmd_in[XMAX-1][y][k][EAST]); 1224 clusters[XMAX-1][y]->p_dspin_int_cmd_out[k][EAST] (signal_dspin_false_int_cmd_out[XMAX-1][y][k][EAST]); 1225 clusters[XMAX-1][y]->p_dspin_int_rsp_in[k][EAST] (signal_dspin_false_int_rsp_in[XMAX-1][y][k][EAST]); 1226 clusters[XMAX-1][y]->p_dspin_int_rsp_out[k][EAST] (signal_dspin_false_int_rsp_out[XMAX-1][y][k][EAST]); 1234 clusters[0][y]->p_dspin_int_rsp_in[WEST][k] (signal_dspin_false_int_rsp_in[0][y][WEST][k]); 1235 clusters[0][y]->p_dspin_int_rsp_out[WEST][k] (signal_dspin_false_int_rsp_out[0][y][WEST][k]); 1236 clusters[XMAX-1][y]->p_dspin_int_rsp_in[EAST][k] (signal_dspin_false_int_rsp_in[XMAX-1][y][EAST][k]); 1237 clusters[XMAX-1][y]->p_dspin_int_rsp_out[EAST][k] (signal_dspin_false_int_rsp_out[XMAX-1][y][EAST][k]); 1227 1238 } 1228 1239 … … 1243 1254 for (size_t x = 0; x < XMAX; x++) 1244 1255 { 1256 for (size_t k = 0; k < 3; k++) 1257 { 1258 clusters[x][0]->p_dspin_int_cmd_in[SOUTH][k] (signal_dspin_false_int_cmd_in[x][0][SOUTH][k]); 1259 clusters[x][0]->p_dspin_int_cmd_out[SOUTH][k] (signal_dspin_false_int_cmd_out[x][0][SOUTH][k]); 1260 clusters[x][YMAX-1]->p_dspin_int_cmd_in[NORTH][k] (signal_dspin_false_int_cmd_in[x][YMAX-1][NORTH][k]); 1261 clusters[x][YMAX-1]->p_dspin_int_cmd_out[NORTH][k] (signal_dspin_false_int_cmd_out[x][YMAX-1][NORTH][k]); 1262 } 1263 1245 1264 for (size_t k = 0; k < 2; k++) 1246 1265 { 1247 clusters[x][0]->p_dspin_int_cmd_in[k][SOUTH] (signal_dspin_false_int_cmd_in[x][0][k][SOUTH]); 1248 clusters[x][0]->p_dspin_int_cmd_out[k][SOUTH] (signal_dspin_false_int_cmd_out[x][0][k][SOUTH]); 1249 clusters[x][0]->p_dspin_int_rsp_in[k][SOUTH] (signal_dspin_false_int_rsp_in[x][0][k][SOUTH]); 1250 clusters[x][0]->p_dspin_int_rsp_out[k][SOUTH] (signal_dspin_false_int_rsp_out[x][0][k][SOUTH]); 1251 1252 clusters[x][YMAX-1]->p_dspin_int_cmd_in[k][NORTH] (signal_dspin_false_int_cmd_in[x][YMAX-1][k][NORTH]); 1253 clusters[x][YMAX-1]->p_dspin_int_cmd_out[k][NORTH] (signal_dspin_false_int_cmd_out[x][YMAX-1][k][NORTH]); 1254 clusters[x][YMAX-1]->p_dspin_int_rsp_in[k][NORTH] (signal_dspin_false_int_rsp_in[x][YMAX-1][k][NORTH]); 1255 clusters[x][YMAX-1]->p_dspin_int_rsp_out[k][NORTH] (signal_dspin_false_int_rsp_out[x][YMAX-1][k][NORTH]); 1266 clusters[x][0]->p_dspin_int_rsp_in[SOUTH][k] (signal_dspin_false_int_rsp_in[x][0][SOUTH][k]); 1267 clusters[x][0]->p_dspin_int_rsp_out[SOUTH][k] (signal_dspin_false_int_rsp_out[x][0][SOUTH][k]); 1268 clusters[x][YMAX-1]->p_dspin_int_rsp_in[NORTH][k] (signal_dspin_false_int_rsp_in[x][YMAX-1][NORTH][k]); 1269 clusters[x][YMAX-1]->p_dspin_int_rsp_out[NORTH][k] (signal_dspin_false_int_rsp_out[x][YMAX-1][NORTH][k]); 1256 1270 } 1257 1271 … … 1283 1297 for (size_t a = 0; a < 4; a++) 1284 1298 { 1299 for (size_t k = 0; k < 3; k++) 1300 { 1301 signal_dspin_false_int_cmd_in[x][y][a][k].write = false; 1302 signal_dspin_false_int_cmd_in[x][y][a][k].read = true; 1303 signal_dspin_false_int_cmd_out[x][y][a][k].write = false; 1304 signal_dspin_false_int_cmd_out[x][y][a][k].read = true; 1305 } 1306 1285 1307 for (size_t k = 0; k < 2; k++) 1286 1308 { 1287 signal_dspin_false_int_cmd_in[x][y][k][a].write = false; 1288 signal_dspin_false_int_cmd_in[x][y][k][a].read = true; 1289 signal_dspin_false_int_cmd_out[x][y][k][a].write = false; 1290 signal_dspin_false_int_cmd_out[x][y][k][a].read = true; 1291 1292 signal_dspin_false_int_rsp_in[x][y][k][a].write = false; 1293 signal_dspin_false_int_rsp_in[x][y][k][a].read = true; 1294 signal_dspin_false_int_rsp_out[x][y][k][a].write = false; 1295 signal_dspin_false_int_rsp_out[x][y][k][a].read = true; 1309 signal_dspin_false_int_rsp_in[x][y][a][k].write = false; 1310 signal_dspin_false_int_rsp_in[x][y][a][k].read = true; 1311 signal_dspin_false_int_rsp_out[x][y][a][k].write = false; 1312 signal_dspin_false_int_rsp_out[x][y][a][k].read = true; 1296 1313 } 1297 1314 -
trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/metadata/tsar_iob_cluster.sd
r450 r468 108 108 Port('caba:clock_in', 'p_clk', auto = 'clock'), 109 109 110 Port('caba:dspin_output', 'p_int_cmd_out', [ 2, 4],110 Port('caba:dspin_output', 'p_int_cmd_out', [4, 3], 111 111 dspin_data_size = parameter.Reference('dspin_int_cmd_width')), 112 Port('caba:dspin_input', 'p_int_cmd_in', [ 2, 4],112 Port('caba:dspin_input', 'p_int_cmd_in', [4, 3], 113 113 dspin_data_size = parameter.Reference('dspin_int_cmd_width')), 114 Port('caba:dspin_output', 'p_int_rsp_out', [ 2, 4],114 Port('caba:dspin_output', 'p_int_rsp_out', [4, 2], 115 115 dspin_data_size = parameter.Reference('dspin_int_rsp_width')), 116 Port('caba:dspin_input', 'p_int_rsp_in', [ 2, 4],116 Port('caba:dspin_input', 'p_int_rsp_in', [4, 2], 117 117 dspin_data_size = parameter.Reference('dspin_int_rsp_width')), 118 118 119 Port('caba:dspin_output', 'p_ ext_cmd_out', [2,4],119 Port('caba:dspin_output', 'p_ram_cmd_out', [4], 120 120 dspin_data_size = parameter.Reference('dspin_ram_cmd_width')), 121 Port('caba:dspin_input', 'p_ ext_cmd_in', [2,4],121 Port('caba:dspin_input', 'p_ram_cmd_in', [4], 122 122 dspin_data_size = parameter.Reference('dspin_ram_cmd_width')), 123 Port('caba:dspin_output', 'p_ ext_rsp_out', [2,4],123 Port('caba:dspin_output', 'p_ram_rsp_out', [4], 124 124 dspin_data_size = parameter.Reference('dspin_ram_rsp_width')), 125 Port('caba:dspin_input', 'p_ ext_rsp_in', [2,4],125 Port('caba:dspin_input', 'p_ram_rsp_in', [4], 126 126 dspin_data_size = parameter.Reference('dspin_ram_rsp_width')), 127 127 ], -
trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h
r450 r468 77 77 DspinSignals<dspin_int_cmd_width> signal_int_dspin_m2p_l2g_c; 78 78 DspinSignals<dspin_int_cmd_width> signal_int_dspin_m2p_g2l_c; 79 DspinSignals<dspin_int_cmd_width> signal_int_dspin_clack_l2g_c; 80 DspinSignals<dspin_int_cmd_width> signal_int_dspin_clack_g2l_c; 79 81 DspinSignals<dspin_int_rsp_width> signal_int_dspin_rsp_l2g_d; 80 82 DspinSignals<dspin_int_rsp_width> signal_int_dspin_rsp_g2l_d; … … 111 113 // Coherence DSPIN signals between DSPIN local crossbars and CC components 112 114 DspinSignals<dspin_int_cmd_width> signal_int_dspin_m2p_memc; 115 DspinSignals<dspin_int_cmd_width> signal_int_dspin_clack_memc; 113 116 DspinSignals<dspin_int_rsp_width> signal_int_dspin_p2m_memc; 114 117 DspinSignals<dspin_int_cmd_width> signal_int_dspin_m2p_proc[8]; 118 DspinSignals<dspin_int_cmd_width> signal_int_dspin_clack_proc[8]; 115 119 DspinSignals<dspin_int_rsp_width> signal_int_dspin_p2m_proc[8]; 116 120 … … 179 183 DspinLocalCrossbar<dspin_int_cmd_width>* int_xbar_m2p_c; 180 184 DspinLocalCrossbar<dspin_int_rsp_width>* int_xbar_p2m_c; 185 DspinLocalCrossbar<dspin_int_cmd_width>* int_xbar_clack_c; 181 186 182 187 VirtualDspinRouter<dspin_int_cmd_width>* int_router_cmd; -
trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/src/tsar_iob_cluster.cpp
r450 r468 89 89 90 90 // Vectors of DSPIN ports for inter-cluster communications 91 p_dspin_int_cmd_in = alloc_elems<DspinInput<dspin_int_cmd_width> >("p_int_cmd_in", 2, 4);92 p_dspin_int_cmd_out = alloc_elems<DspinOutput<dspin_int_cmd_width> >("p_int_cmd_out", 2, 4);93 p_dspin_int_rsp_in = alloc_elems<DspinInput<dspin_int_rsp_width> >("p_int_rsp_in", 2, 4);94 p_dspin_int_rsp_out = alloc_elems<DspinOutput<dspin_int_rsp_width> >("p_int_rsp_out", 2, 4);91 p_dspin_int_cmd_in = alloc_elems<DspinInput<dspin_int_cmd_width> >("p_int_cmd_in", 4, 3); 92 p_dspin_int_cmd_out = alloc_elems<DspinOutput<dspin_int_cmd_width> >("p_int_cmd_out", 4, 3); 93 p_dspin_int_rsp_in = alloc_elems<DspinInput<dspin_int_rsp_width> >("p_int_rsp_in", 4, 2); 94 p_dspin_int_rsp_out = alloc_elems<DspinOutput<dspin_int_rsp_width> >("p_int_rsp_out", 4, 2); 95 95 96 96 p_dspin_ram_cmd_in = alloc_elems<DspinInput<dspin_ram_cmd_width> >("p_ext_cmd_in", 4); … … 171 171 8, // TRANSACTION TABLE DEPTH 172 172 8, // UPDATE TABLE DEPTH 173 8, // INVALIDATE TABLE DEPTH 173 174 debug_start_cycle, 174 175 memc_debug_ok ); … … 303 304 false ); // no broacast 304 305 306 std::ostringstream s_int_xbar_clack_c; 307 s_int_xbar_clack_c << "int_xbar_clack_c_" << x_id << "_" << y_id; 308 int_xbar_clack_c = new DspinLocalCrossbar<dspin_int_cmd_width>( 309 s_int_xbar_clack_c.str().c_str(), 310 mt_int, // mapping table 311 x_id, y_id, // cluster coordinates 312 x_width, y_width, l_width, 313 1, // number of local sources 314 nb_procs, // number of local targets 315 1, 1, // fifo depths 316 true, // CMD 317 false, // don't use local routing table 318 false); // broadcast 319 305 320 ////////////// INT ROUTER(S) 306 321 std::ostringstream s_int_router_cmd; … … 310 325 x_id,y_id, // coordinate in the mesh 311 326 x_width, y_width, // x & y fields width 327 3, // nb virtual channels 312 328 4,4); // input & output fifo depths 313 329 … … 318 334 x_id,y_id, // coordinates in mesh 319 335 x_width, y_width, // x & y fields width 336 2, // nb virtual channels 320 337 4,4); // input & output fifo depths 321 338 … … 459 476 int_router_rsp->p_clk (this->p_clk); 460 477 int_router_rsp->p_resetn (this->p_resetn); 461 for (int x = 0; x < 2; x++) 462 { 463 for(int y = 0; y < 4; y++) 478 479 for (int i = 0; i < 4; i++) 480 { 481 for(int k = 0; k < 3; k++) 464 482 { 465 int_router_cmd->p_out[x][y] (this->p_dspin_int_cmd_out[x][y]); 466 int_router_cmd->p_in[x][y] (this->p_dspin_int_cmd_in[x][y]); 467 int_router_rsp->p_out[x][y] (this->p_dspin_int_rsp_out[x][y]); 468 int_router_rsp->p_in[x][y] (this->p_dspin_int_rsp_in[x][y]); 483 int_router_cmd->p_out[i][k] (this->p_dspin_int_cmd_out[i][k]); 484 int_router_cmd->p_in[i][k] (this->p_dspin_int_cmd_in[i][k]); 469 485 } 486 487 for(int k = 0; k < 2; k++) 488 { 489 int_router_rsp->p_out[i][k] (this->p_dspin_int_rsp_out[i][k]); 490 int_router_rsp->p_in[i][k] (this->p_dspin_int_rsp_in[i][k]); 491 } 470 492 } 471 493 472 494 // local ports 473 int_router_cmd->p_out[0][4] (signal_int_dspin_cmd_g2l_d); 474 int_router_cmd->p_out[1][4] (signal_int_dspin_m2p_g2l_c); 475 int_router_cmd->p_in[0][4] (signal_int_dspin_cmd_l2g_d); 476 int_router_cmd->p_in[1][4] (signal_int_dspin_m2p_l2g_c); 495 int_router_cmd->p_out[4][0] (signal_int_dspin_cmd_g2l_d); 496 int_router_cmd->p_out[4][1] (signal_int_dspin_m2p_g2l_c); 497 int_router_cmd->p_out[4][2] (signal_int_dspin_clack_g2l_c); 498 int_router_cmd->p_in[4][0] (signal_int_dspin_cmd_l2g_d); 499 int_router_cmd->p_in[4][1] (signal_int_dspin_m2p_l2g_c); 500 int_router_cmd->p_in[4][2] (signal_int_dspin_clack_l2g_c); 477 501 478 int_router_rsp->p_out[ 0][4] (signal_int_dspin_rsp_g2l_d);479 int_router_rsp->p_out[ 1][4] (signal_int_dspin_p2m_g2l_c);480 int_router_rsp->p_in[ 0][4] (signal_int_dspin_rsp_l2g_d);481 int_router_rsp->p_in[ 1][4] (signal_int_dspin_p2m_l2g_c);502 int_router_rsp->p_out[4][0] (signal_int_dspin_rsp_g2l_d); 503 int_router_rsp->p_out[4][1] (signal_int_dspin_p2m_g2l_c); 504 int_router_rsp->p_in[4][0] (signal_int_dspin_rsp_l2g_d); 505 int_router_rsp->p_in[4][1] (signal_int_dspin_p2m_l2g_c); 482 506 483 507 ///////////////////// CMD DSPIN local crossbar direct … … 541 565 int_xbar_p2m_c->p_local_in[p] (signal_int_dspin_p2m_proc[p]); 542 566 567 ////////////////////// CLACK DSPIN local crossbar coherence 568 int_xbar_clack_c->p_clk (this->p_clk); 569 int_xbar_clack_c->p_resetn (this->p_resetn); 570 int_xbar_clack_c->p_global_out (signal_int_dspin_clack_l2g_c); 571 int_xbar_clack_c->p_global_in (signal_int_dspin_clack_g2l_c); 572 int_xbar_clack_c->p_local_in[0] (signal_int_dspin_clack_memc); 573 for (size_t p = 0; p < nb_procs; p++) 574 int_xbar_clack_c->p_local_out[p] (signal_int_dspin_clack_proc[p]); 575 543 576 //////////////////////////////////// Processors 544 577 for (size_t p = 0; p < nb_procs; p++) … … 547 580 proc[p]->p_resetn (this->p_resetn); 548 581 proc[p]->p_vci (signal_int_vci_ini_proc[p]); 549 proc[p]->p_dspin_in (signal_int_dspin_m2p_proc[p]); 550 proc[p]->p_dspin_out (signal_int_dspin_p2m_proc[p]); 582 proc[p]->p_dspin_m2p (signal_int_dspin_m2p_proc[p]); 583 proc[p]->p_dspin_p2m (signal_int_dspin_p2m_proc[p]); 584 proc[p]->p_dspin_clack (signal_int_dspin_clack_proc[p]); 551 585 proc[p]->p_irq[0] (signal_proc_it[p]); 552 586 for ( size_t j = 1 ; j < 6 ; j++) … … 563 597 564 598 ///////////////////////////////////// XICU 565 xicu->p_clk 566 xicu->p_resetn 567 xicu->p_vci 599 xicu->p_clk (this->p_clk); 600 xicu->p_resetn (this->p_resetn); 601 xicu->p_vci (signal_int_vci_tgt_xicu); 568 602 for ( size_t p=0 ; p<nb_procs ; p++) 569 603 { 570 xicu->p_irq[p] 604 xicu->p_irq[p] (signal_proc_it[p]); 571 605 } 572 606 for ( size_t i=0 ; i<4 ; i++) … … 590 624 591 625 ///////////////////////////////////// MEMC 592 memc->p_clk (this->p_clk); 593 memc->p_resetn (this->p_resetn); 594 memc->p_vci_ixr (signal_ram_vci_ini_memc); 595 memc->p_vci_tgt (signal_int_vci_tgt_memc); 596 memc->p_dspin_in (signal_int_dspin_p2m_memc); 597 memc->p_dspin_out (signal_int_dspin_m2p_memc); 626 memc->p_clk (this->p_clk); 627 memc->p_resetn (this->p_resetn); 628 memc->p_vci_ixr (signal_ram_vci_ini_memc); 629 memc->p_vci_tgt (signal_int_vci_tgt_memc); 630 memc->p_dspin_p2m (signal_int_dspin_p2m_memc); 631 memc->p_dspin_m2p (signal_int_dspin_m2p_memc); 632 memc->p_dspin_clack (signal_int_dspin_clack_memc); 598 633 599 634 // wrapper to INT network … … 612 647 613 648 //////////////////////////////////// XRAM 614 xram->p_clk 615 xram->p_resetn 616 xram->p_vci 649 xram->p_clk (this->p_clk); 650 xram->p_resetn (this->p_resetn); 651 xram->p_vci (signal_ram_vci_tgt_xram); 617 652 618 653 // wrapper to RAM network … … 624 659 625 660 /////////////////////////////////// MDMA 626 mdma->p_clk 661 mdma->p_clk (this->p_clk); 627 662 mdma->p_resetn (this->p_resetn); 628 mdma->p_vci_target 629 mdma->p_vci_initiator 663 mdma->p_vci_target (signal_int_vci_tgt_mdma); 664 mdma->p_vci_initiator (signal_int_vci_ini_mdma); 630 665 for (size_t i=0 ; i<nb_dmas ; i++) 631 666 mdma->p_irq[i] (signal_irq_mdma[i]); -
trunk/platforms/tsar_generic_xbar
-
Property
svn:mergeinfo
set to
/branches/v5/platforms/tsar_generic_xbar merged eligible
-
Property
svn:mergeinfo
set to
-
trunk/platforms/tsar_generic_xbar/Makefile
r450 r468 1 1 simul.x: top.cpp top.desc 2 soclib-cc - j3-P -p top.desc -I. -o simul.x2 soclib-cc -t mysystemcass -j8 -P -p top.desc -I. -o simul.x 3 3 4 4 clean: 5 5 soclib-cc -x -p top.desc -I. 6 rm -rf *.o *.x t ty*6 rm -rf *.o *.x term* -
trunk/platforms/tsar_generic_xbar/soclib.conf
r379 r468 1 import os; 1 2 2 config.addDescPath("/Users/alain/soc/tsar-trunk-svn-2013/") 3 desc_path = os.environ['HOME'] + "/Workspace/repo/tsar/trunk" 4 5 config.mylibsystemcass.cflags += ['-fpermissive'] 6 config.addDescPath(desc_path) 7 8 # vim: filetype=python -
trunk/platforms/tsar_generic_xbar/top.cpp
r465 r468 151 151 //////////////////////i///////////////////////////////////// 152 152 153 154 153 #ifdef USE_ALMOS 155 154 #include "almos/hard_config.h" … … 157 156 #endif 158 157 #ifdef USE_GIET 158 #include "giet_vm/hard_config.h" 159 159 #define PREFIX_OS "giet_vm/" 160 #include "giet_vm/hard_config.h"161 160 #endif 162 161 … … 190 189 #ifdef USE_GIET 191 190 #define BDEV_SECTOR_SIZE 512 192 #define BDEV_IMAGE_NAME "giet_vm/display/images.raw"191 #define BDEV_IMAGE_NAME PREFIX_OS"display/images.raw" 193 192 #endif 194 193 #ifdef USE_ALMOS … … 196 195 #define BDEV_IMAGE_NAME PREFIX_OS"hdd-img.bin" 197 196 #endif 198 199 197 200 198 #define NIC_RX_NAME PREFIX_OS"nic/rx_packets.txt" … … 212 210 213 211 #ifdef USE_ALMOS 214 #define soft_name PREFIX_OS"bootloader.bin",\215 PREFIX_OS"kernel-soclib.bin@0xbfc10000:D",\216 PREFIX_OS"arch-info.bib@0xBFC08000:D"212 #define soft_name PREFIX_OS"bootloader.bin",\ 213 PREFIX_OS"kernel-soclib.bin@0xbfc10000:D",\ 214 PREFIX_OS"arch-info.bib@0xBFC08000:D" 217 215 #endif 218 216 #ifdef USE_GIET 219 #define soft_pathname 217 #define soft_pathname PREFIX_OS"soft.elf" 220 218 #endif 221 219 … … 285 283 286 284 #ifdef USE_GIET 287 char soft_name[256] = soft_pathname; 288 #endif 289 size_t ncycles = 1000000000;// simulated cycles285 char soft_name[256] = soft_pathname; // pathname to binary code 286 #endif 287 uint64_t ncycles = 100000000000; // simulated cycles 290 288 char disk_name[256] = BDEV_IMAGE_NAME; // pathname to the disk image 291 289 char nic_rx_name[256] = NIC_RX_NAME; // pathname to the rx packets file … … 299 297 uint32_t frozen_cycles = MAX_FROZEN_CYCLES; // monitoring frozen processor 300 298 size_t cluster_io_id = 0; // index of cluster containing IOs 301 struct timeval t1,t2;299 struct timeval t1,t2; 302 300 uint64_t ms1,ms2; 303 301 … … 541 539 // Horizontal inter-clusters DSPIN signals 542 540 DspinSignals<dspin_cmd_width>*** signal_dspin_h_cmd_inc = 543 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_h_cmd_inc", XMAX-1, YMAX, 2);541 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_h_cmd_inc", XMAX-1, YMAX, 3); 544 542 DspinSignals<dspin_cmd_width>*** signal_dspin_h_cmd_dec = 545 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_h_cmd_dec", XMAX-1, YMAX, 2);543 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_h_cmd_dec", XMAX-1, YMAX, 3); 546 544 DspinSignals<dspin_rsp_width>*** signal_dspin_h_rsp_inc = 547 545 alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_h_rsp_inc", XMAX-1, YMAX, 2); … … 551 549 // Vertical inter-clusters DSPIN signals 552 550 DspinSignals<dspin_cmd_width>*** signal_dspin_v_cmd_inc = 553 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_v_cmd_inc", XMAX, YMAX-1, 2);551 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_v_cmd_inc", XMAX, YMAX-1, 3); 554 552 DspinSignals<dspin_cmd_width>*** signal_dspin_v_cmd_dec = 555 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_v_cmd_dec", XMAX, YMAX-1, 2);553 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_v_cmd_dec", XMAX, YMAX-1, 3); 556 554 DspinSignals<dspin_rsp_width>*** signal_dspin_v_rsp_inc = 557 555 alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_v_rsp_inc", XMAX, YMAX-1, 2); … … 561 559 // Mesh boundaries DSPIN signals 562 560 DspinSignals<dspin_cmd_width>**** signal_dspin_false_cmd_in = 563 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_false_cmd_in" , XMAX, YMAX, 2, 4);561 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_false_cmd_in" , XMAX, YMAX, 4, 3); 564 562 DspinSignals<dspin_cmd_width>**** signal_dspin_false_cmd_out = 565 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_false_cmd_out", XMAX, YMAX, 2, 4);563 alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_false_cmd_out", XMAX, YMAX, 4, 3); 566 564 DspinSignals<dspin_rsp_width>**** signal_dspin_false_rsp_in = 567 alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_false_rsp_in" , XMAX, YMAX, 2, 4);565 alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_false_rsp_in" , XMAX, YMAX, 4, 2); 568 566 DspinSignals<dspin_rsp_width>**** signal_dspin_false_rsp_out = 569 alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_false_rsp_out", XMAX, YMAX, 2, 4);567 alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_false_rsp_out", XMAX, YMAX, 4, 2); 570 568 571 569 … … 680 678 for (size_t x = 0; x < (XMAX-1); x++){ 681 679 for (size_t y = 0; y < YMAX; y++){ 682 for (size_t k = 0; k < 2; k++){680 for (size_t k = 0; k < 3; k++){ 683 681 clusters[x][y]->p_cmd_out[EAST][k] (signal_dspin_h_cmd_inc[x][y][k]); 684 682 clusters[x+1][y]->p_cmd_in[WEST][k] (signal_dspin_h_cmd_inc[x][y][k]); 685 683 clusters[x][y]->p_cmd_in[EAST][k] (signal_dspin_h_cmd_dec[x][y][k]); 686 684 clusters[x+1][y]->p_cmd_out[WEST][k] (signal_dspin_h_cmd_dec[x][y][k]); 685 } 686 687 for (size_t k = 0; k < 2; k++){ 687 688 clusters[x][y]->p_rsp_out[EAST][k] (signal_dspin_h_rsp_inc[x][y][k]); 688 689 clusters[x+1][y]->p_rsp_in[WEST][k] (signal_dspin_h_rsp_inc[x][y][k]); … … 699 700 for (size_t y = 0; y < (YMAX-1); y++){ 700 701 for (size_t x = 0; x < XMAX; x++){ 701 for (size_t k = 0; k < 2; k++){702 for (size_t k = 0; k < 3; k++){ 702 703 clusters[x][y]->p_cmd_out[NORTH][k] (signal_dspin_v_cmd_inc[x][y][k]); 703 704 clusters[x][y+1]->p_cmd_in[SOUTH][k] (signal_dspin_v_cmd_inc[x][y][k]); 704 705 clusters[x][y]->p_cmd_in[NORTH][k] (signal_dspin_v_cmd_dec[x][y][k]); 705 706 clusters[x][y+1]->p_cmd_out[SOUTH][k] (signal_dspin_v_cmd_dec[x][y][k]); 707 } 708 709 for (size_t k = 0; k < 2; k++){ 706 710 clusters[x][y]->p_rsp_out[NORTH][k] (signal_dspin_v_rsp_inc[x][y][k]); 707 711 clusters[x][y+1]->p_rsp_in[SOUTH][k] (signal_dspin_v_rsp_inc[x][y][k]); … … 717 721 for (size_t y = 0; y < YMAX; y++) 718 722 { 723 for (size_t k = 0; k < 3; k++) 724 { 725 clusters[0][y]->p_cmd_in[WEST][k] (signal_dspin_false_cmd_in[0][y][WEST][k]); 726 clusters[0][y]->p_cmd_out[WEST][k] (signal_dspin_false_cmd_out[0][y][WEST][k]); 727 clusters[XMAX-1][y]->p_cmd_in[EAST][k] (signal_dspin_false_cmd_in[XMAX-1][y][EAST][k]); 728 clusters[XMAX-1][y]->p_cmd_out[EAST][k] (signal_dspin_false_cmd_out[XMAX-1][y][EAST][k]); 729 } 730 719 731 for (size_t k = 0; k < 2; k++) 720 732 { 721 clusters[0][y]->p_cmd_in[WEST][k] (signal_dspin_false_cmd_in[0][y][k][WEST]); 722 clusters[0][y]->p_cmd_out[WEST][k] (signal_dspin_false_cmd_out[0][y][k][WEST]); 723 clusters[0][y]->p_rsp_in[WEST][k] (signal_dspin_false_rsp_in[0][y][k][WEST]); 724 clusters[0][y]->p_rsp_out[WEST][k] (signal_dspin_false_rsp_out[0][y][k][WEST]); 725 726 clusters[XMAX-1][y]->p_cmd_in[EAST][k] (signal_dspin_false_cmd_in[XMAX-1][y][k][EAST]); 727 clusters[XMAX-1][y]->p_cmd_out[EAST][k] (signal_dspin_false_cmd_out[XMAX-1][y][k][EAST]); 728 clusters[XMAX-1][y]->p_rsp_in[EAST][k] (signal_dspin_false_rsp_in[XMAX-1][y][k][EAST]); 729 clusters[XMAX-1][y]->p_rsp_out[EAST][k] (signal_dspin_false_rsp_out[XMAX-1][y][k][EAST]); 733 clusters[0][y]->p_rsp_in[WEST][k] (signal_dspin_false_rsp_in[0][y][WEST][k]); 734 clusters[0][y]->p_rsp_out[WEST][k] (signal_dspin_false_rsp_out[0][y][WEST][k]); 735 clusters[XMAX-1][y]->p_rsp_in[EAST][k] (signal_dspin_false_rsp_in[XMAX-1][y][EAST][k]); 736 clusters[XMAX-1][y]->p_rsp_out[EAST][k] (signal_dspin_false_rsp_out[XMAX-1][y][EAST][k]); 730 737 } 731 738 } … … 734 741 for (size_t x = 0; x < XMAX; x++) 735 742 { 743 for (size_t k = 0; k < 3; k++) 744 { 745 clusters[x][0]->p_cmd_in[SOUTH][k] (signal_dspin_false_cmd_in[x][0][SOUTH][k]); 746 clusters[x][0]->p_cmd_out[SOUTH][k] (signal_dspin_false_cmd_out[x][0][SOUTH][k]); 747 clusters[x][YMAX-1]->p_cmd_in[NORTH][k] (signal_dspin_false_cmd_in[x][YMAX-1][NORTH][k]); 748 clusters[x][YMAX-1]->p_cmd_out[NORTH][k] (signal_dspin_false_cmd_out[x][YMAX-1][NORTH][k]); 749 } 750 736 751 for (size_t k = 0; k < 2; k++) 737 752 { 738 clusters[x][0]->p_cmd_in[SOUTH][k] (signal_dspin_false_cmd_in[x][0][k][SOUTH]); 739 clusters[x][0]->p_cmd_out[SOUTH][k] (signal_dspin_false_cmd_out[x][0][k][SOUTH]); 740 clusters[x][0]->p_rsp_in[SOUTH][k] (signal_dspin_false_rsp_in[x][0][k][SOUTH]); 741 clusters[x][0]->p_rsp_out[SOUTH][k] (signal_dspin_false_rsp_out[x][0][k][SOUTH]); 742 743 clusters[x][YMAX-1]->p_cmd_in[NORTH][k] (signal_dspin_false_cmd_in[x][YMAX-1][k][NORTH]); 744 clusters[x][YMAX-1]->p_cmd_out[NORTH][k] (signal_dspin_false_cmd_out[x][YMAX-1][k][NORTH]); 745 clusters[x][YMAX-1]->p_rsp_in[NORTH][k] (signal_dspin_false_rsp_in[x][YMAX-1][k][NORTH]); 746 clusters[x][YMAX-1]->p_rsp_out[NORTH][k] (signal_dspin_false_rsp_out[x][YMAX-1][k][NORTH]); 753 clusters[x][0]->p_rsp_in[SOUTH][k] (signal_dspin_false_rsp_in[x][0][SOUTH][k]); 754 clusters[x][0]->p_rsp_out[SOUTH][k] (signal_dspin_false_rsp_out[x][0][SOUTH][k]); 755 clusters[x][YMAX-1]->p_rsp_in[NORTH][k] (signal_dspin_false_rsp_in[x][YMAX-1][NORTH][k]); 756 clusters[x][YMAX-1]->p_rsp_out[NORTH][k] (signal_dspin_false_rsp_out[x][YMAX-1][NORTH][k]); 747 757 } 748 758 } … … 761 771 for (size_t x = 0; x < XMAX ; x++){ 762 772 for (size_t y = 0; y < YMAX ; y++){ 763 for (size_t k = 0; k < 2; k++){ 764 for (size_t a = 0; a < 4; a++){ 765 signal_dspin_false_cmd_in [x][y][k][a].write = false; 766 signal_dspin_false_cmd_in [x][y][k][a].read = true; 767 signal_dspin_false_cmd_out[x][y][k][a].write = false; 768 signal_dspin_false_cmd_out[x][y][k][a].read = true; 769 770 signal_dspin_false_rsp_in [x][y][k][a].write = false; 771 signal_dspin_false_rsp_in [x][y][k][a].read = true; 772 signal_dspin_false_rsp_out[x][y][k][a].write = false; 773 signal_dspin_false_rsp_out[x][y][k][a].read = true; 773 for (size_t a = 0; a < 4; a++){ 774 for (size_t k = 0; k < 3; k++){ 775 signal_dspin_false_cmd_in [x][y][a][k].write = false; 776 signal_dspin_false_cmd_in [x][y][a][k].read = true; 777 signal_dspin_false_cmd_out[x][y][a][k].write = false; 778 signal_dspin_false_cmd_out[x][y][a][k].read = true; 779 } 780 781 for (size_t k = 0; k < 2; k++){ 782 signal_dspin_false_rsp_in [x][y][a][k].write = false; 783 signal_dspin_false_rsp_in [x][y][a][k].read = true; 784 signal_dspin_false_rsp_out[x][y][a][k].write = false; 785 signal_dspin_false_rsp_out[x][y][a][k].read = true; 774 786 } 775 787 } … … 786 798 } 787 799 788 for ( size_t n = 1; n < ncycles; n++)800 for (uint64_t n = 1; n < ncycles; n++) 789 801 { 790 802 // Monitor a specific address for L1 & L2 caches … … 811 823 } 812 824 } 813 814 825 815 826 if (debug_ok and (n > debug_from) and (n % debug_period == 0)) -
trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/metadata/tsar_xbar_cluster.sd
r437 r468 57 57 Uses('caba:virtual_dspin_router', 58 58 flit_width = parameter.Reference('dspin_rsp_width')), 59 59 60 60 Uses('caba:vci_multi_tty', 61 61 cell_size = parameter.Reference('vci_data_width_int')), … … 85 85 Port('caba:bit_in', 'p_resetn', auto = 'resetn'), 86 86 Port('caba:clock_in', 'p_clk', auto = 'clock'), 87 Port('caba:dspin_output', 'p_cmd_out', [ 2, 4],87 Port('caba:dspin_output', 'p_cmd_out', [4, 3], 88 88 dspin_data_size = parameter.Reference('dspin_cmd_width')), 89 Port('caba:dspin_input', 'p_cmd_in', [ 2, 4],89 Port('caba:dspin_input', 'p_cmd_in', [4, 3], 90 90 dspin_data_size = parameter.Reference('dspin_cmd_width')), 91 Port('caba:dspin_output', 'p_rsp_out', [ 2, 4],91 Port('caba:dspin_output', 'p_rsp_out', [4, 2], 92 92 dspin_data_size = parameter.Reference('dspin_rsp_width')), 93 Port('caba:dspin_input', 'p_rsp_in', [ 2, 4],93 Port('caba:dspin_input', 'p_rsp_in', [4, 2], 94 94 dspin_data_size = parameter.Reference('dspin_rsp_width')), 95 95 ], -
trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/include/tsar_xbar_cluster.h
r436 r468 69 69 DspinSignals<dspin_cmd_width> signal_dspin_m2p_l2g_c; 70 70 DspinSignals<dspin_cmd_width> signal_dspin_m2p_g2l_c; 71 DspinSignals<dspin_cmd_width> signal_dspin_clack_l2g_c; 72 DspinSignals<dspin_cmd_width> signal_dspin_clack_g2l_c; 71 73 DspinSignals<dspin_rsp_width> signal_dspin_rsp_l2g_d; 72 74 DspinSignals<dspin_rsp_width> signal_dspin_rsp_g2l_d; … … 115 117 // Coherence DSPIN signals to local crossbar 116 118 DspinSignals<dspin_cmd_width> signal_dspin_m2p_memc; 119 DspinSignals<dspin_cmd_width> signal_dspin_clack_memc; 117 120 DspinSignals<dspin_rsp_width> signal_dspin_p2m_memc; 118 121 DspinSignals<dspin_cmd_width> signal_dspin_m2p_proc[8]; 122 DspinSignals<dspin_cmd_width> signal_dspin_clack_proc[8]; 119 123 DspinSignals<dspin_rsp_width> signal_dspin_p2m_proc[8]; 120 124 … … 198 202 DspinLocalCrossbar<dspin_cmd_width>* xbar_m2p_c; 199 203 DspinLocalCrossbar<dspin_rsp_width>* xbar_p2m_c; 204 DspinLocalCrossbar<dspin_cmd_width>* xbar_clack_c; 200 205 201 206 VirtualDspinRouter<dspin_cmd_width>* router_cmd; -
trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp
r465 r468 85 85 { 86 86 // Vectors of ports definition 87 p_cmd_in = alloc_elems<DspinInput<dspin_cmd_width> >("p_cmd_in", 4, 2);88 p_cmd_out = alloc_elems<DspinOutput<dspin_cmd_width> >("p_cmd_out", 4, 2);87 p_cmd_in = alloc_elems<DspinInput<dspin_cmd_width> >("p_cmd_in", 4, 3); 88 p_cmd_out = alloc_elems<DspinOutput<dspin_cmd_width> >("p_cmd_out", 4, 3); 89 89 p_rsp_in = alloc_elems<DspinInput<dspin_rsp_width> >("p_rsp_in", 4, 2); 90 90 p_rsp_out = alloc_elems<DspinOutput<dspin_rsp_width> >("p_rsp_out", 4, 2); … … 148 148 8, // TRANSACTION TABLE DEPTH 149 149 8, // UPDATE TABLE DEPTH 150 8, // INVALIDATE TABLE DEPTH 150 151 debug_start_cycle, 151 152 memc_debug_ok ); … … 269 270 270 271 ///////////////////////////////////////////////////////////////////////////// 272 xbar_clack_c = new DspinLocalCrossbar<dspin_cmd_width>( 273 "xbar_clack_c", 274 mtd, // mapping table 275 x_id, y_id, // cluster coordinates 276 x_width, y_width, l_width, 277 1, // number of local sources 278 nb_procs, // number of local targets 279 1, 1, // fifo depths 280 true, // CMD 281 false, // don't use local routing table 282 false); // broadcast 283 284 ///////////////////////////////////////////////////////////////////////////// 271 285 router_cmd = new VirtualDspinRouter<dspin_cmd_width>( 272 286 "router_cmd", 273 287 x_id,y_id, // coordinate in the mesh 274 288 x_width, y_width, // x & y fields width 275 2, // nb virtual channels289 3, // nb virtual channels 276 290 4,4); // input & output fifo depths 277 291 … … 385 399 for(int i = 0; i < 4; i++) 386 400 { 387 for (int k = 0; k < 2; k++)401 for (int k = 0; k < 3; k++) 388 402 { 389 403 router_cmd->p_out[i][k] (this->p_cmd_out[i][k]); 390 404 router_cmd->p_in[i][k] (this->p_cmd_in[i][k]); 405 } 406 407 for (int k = 0; k < 2; k++) 408 { 391 409 router_rsp->p_out[i][k] (this->p_rsp_out[i][k]); 392 410 router_rsp->p_in[i][k] (this->p_rsp_in[i][k]); … … 396 414 router_cmd->p_out[4][0] (signal_dspin_cmd_g2l_d); 397 415 router_cmd->p_out[4][1] (signal_dspin_m2p_g2l_c); 416 router_cmd->p_out[4][2] (signal_dspin_clack_g2l_c); 398 417 router_cmd->p_in[4][0] (signal_dspin_cmd_l2g_d); 399 418 router_cmd->p_in[4][1] (signal_dspin_m2p_l2g_c); 419 router_cmd->p_in[4][2] (signal_dspin_clack_l2g_c); 400 420 401 421 router_rsp->p_out[4][0] (signal_dspin_rsp_g2l_d); … … 403 423 router_rsp->p_in[4][0] (signal_dspin_rsp_l2g_d); 404 424 router_rsp->p_in[4][1] (signal_dspin_p2m_l2g_c); 425 405 426 406 427 std::cout << " - CMD & RSP routers connected" << std::endl; … … 473 494 std::cout << " - M2P Coherence crossbar connected" << std::endl; 474 495 496 ////////////////////// CLACK DSPIN local crossbar coherence 497 xbar_clack_c->p_clk (this->p_clk); 498 xbar_clack_c->p_resetn (this->p_resetn); 499 xbar_clack_c->p_global_out (signal_dspin_clack_l2g_c); 500 xbar_clack_c->p_global_in (signal_dspin_clack_g2l_c); 501 xbar_clack_c->p_local_in[0] (signal_dspin_clack_memc); 502 for (size_t p = 0; p < nb_procs; p++) 503 xbar_clack_c->p_local_out[p] (signal_dspin_clack_proc[p]); 504 505 std::cout << " - Clack Coherence crossbar connected" << std::endl; 506 475 507 ////////////////////////// P2M DSPIN local crossbar coherence 476 508 xbar_p2m_c->p_clk (this->p_clk); … … 491 523 proc[p]->p_resetn (this->p_resetn); 492 524 proc[p]->p_vci (signal_vci_ini_proc[p]); 493 proc[p]->p_dspin_in (signal_dspin_m2p_proc[p]); 494 proc[p]->p_dspin_out (signal_dspin_p2m_proc[p]); 525 proc[p]->p_dspin_m2p (signal_dspin_m2p_proc[p]); 526 proc[p]->p_dspin_p2m (signal_dspin_p2m_proc[p]); 527 proc[p]->p_dspin_clack (signal_dspin_clack_proc[p]); 495 528 proc[p]->p_irq[0] (signal_proc_it[p]); 496 529 for ( size_t j = 1 ; j < 6 ; j++) … … 549 582 memc->p_vci_ixr (signal_vci_xram); 550 583 memc->p_vci_tgt (signal_vci_tgt_memc); 551 memc->p_dspin_in (signal_dspin_p2m_memc); 552 memc->p_dspin_out (signal_dspin_m2p_memc); 584 memc->p_dspin_p2m (signal_dspin_p2m_memc); 585 memc->p_dspin_m2p (signal_dspin_m2p_memc); 586 memc->p_dspin_clack (signal_dspin_clack_memc); 553 587 554 588 // wrapper MEMC
Note: See TracChangeset
for help on using the changeset viewer.