Changeset 468 for trunk/platforms


Ignore:
Timestamp:
Jul 24, 2013, 8:47:40 AM (11 years ago)
Author:
cfuguet
Message:


Merging vci_mem_cache from branches/v5 to trunk [441-467]

=-----------------------------------------------------------------------
r441 | cfuguet | 2013-07-17 10:54:07 +0200 (Wed, 17 Jul 2013) | 14 lines

Modifications in branches/v5/vci_mem_cache:

  • Changing name of CC DSPIN ports: + p_dspin_in => p_dspin_p2m + p_dspin_out => p_dspin_m2p
  • Splitting the Update Table in two tables: + UPT (Update Table): Stores the MULTI-UPDATE transactions + IVT (Invalidate Table): Stores the MULTI/BROADCAST INVALIDATE

transactions

Each table has its own allocator FSM: r_alloc_upt and r_alloc_ivt

=-----------------------------------------------------------------------
r442 | cfuguet | 2013-07-17 12:13:51 +0200 (Wed, 17 Jul 2013) | 13 lines

Modifications in branches/v5/modules/vci_mem_cache:

  • Introducing third port for the CLACK network.
  • CLEANUP FSM is no more a CC_SEND FSM client.
  • CLEANUP FSM controls directly the p_dspin_clack port

=-----------------------------------------------------------------------
r445 | cfuguet | 2013-07-18 10:49:36 +0200 (Thu, 18 Jul 2013) | 7 lines

Bugfix in vci_mem_cache:

  • Adding missing "strings" for print_trace() function
  • Adding alloc_ivt fsm (Invalidate Table) in the

print_trace() function

=-----------------------------------------------------------------------
r455 | cfuguet | 2013-07-19 10:16:17 +0200 (Fri, 19 Jul 2013) | 8 lines

Merged

/trunk/modules/vci_mem_cache:449 with
/branches/v5/modules/vci_mem_cache:446.

This merge introduces into the branch the last modifications concerning
the VCI memory cache configuration interface


Merging vci_cc_vcache_wrapper from branches/v5 to trunk [444-467]

=-----------------------------------------------------------------------
r444 | cfuguet | 2013-07-17 14:46:46 +0200 (Wed, 17 Jul 2013) | 7 lines

Modifications in branches/v5/modules/vci_cc_vcache_wrapper:

  • Renaming FROM_MC DSPIN flits fields in M2P
  • Renaming FROM_L1 DSPIN flits fields in P2M
  • Renaming CLEANUP_ACK DSPIN flits fields in CLACK

=-----------------------------------------------------------------------
r446 | cfuguet | 2013-07-18 11:37:47 +0200 (Thu, 18 Jul 2013) | 13 lines

Modifications in vci_cc_vcache_wrapper:

  • Merging the states DCACHE/ICACHE_CC_BROADCAST and DCACHE/ICACHE_CC_INVAL. This is because, the BROADCAST INVALIDATE and the MULTICAST INVALIDATE are both acknowledged by a CLEANUP.
  • Adding third port for the clack coherence network.
  • Renaming the port dspin_in to dspin_m2p and the port dspin_out to dspin_p2m

=-----------------------------------------------------------------------
r454 | haoliu | 2013-07-19 10:15:13 +0200 (Fri, 19 Jul 2013) | 2 lines

modified CC_RECEIVE FSM and CC_CHECK FSM (icache and dcache) for new
version V5

=-----------------------------------------------------------------------
r461 | cfuguet | 2013-07-19 15:49:43 +0200 (Fri, 19 Jul 2013) | 9 lines

Bugfix in vci_cc_vcache_wrapper:

  • In the states DCACHE/ICACHE CC_UPDT the FSM returns to the state CC_CHECK only when the cc_send_req is occupied.

We must not return to the CC_CHECK state if not ROK of the
DATA FIFO because the counter word counter will be reset.

=-----------------------------------------------------------------------
r462 | cfuguet | 2013-07-19 16:26:26 +0200 (Fri, 19 Jul 2013) | 8 lines

Modification in vci_cc_vcache_wrapper:

  • Optimization in DCACHE/ICACHE CC_CHECK state. We can handle a CLACK and a CC request if the latter does a MISS match. This is because the CC request doing MISS match does not need to access the directory

=-----------------------------------------------------------------------
r463 | cfuguet | 2013-07-19 16:52:06 +0200 (Fri, 19 Jul 2013) | 12 lines

Modification in vci_cc_vcache_wrapper:

  • Optimization in DCACHE/ICACHE CC_CHECK state. If pending request to CC_SEND, we wait in the CC_CHECK state. Doing this, during the wait, we can handle incoming CLACK avoiding any deadlock situation.

The states CC_UPDT and CC_INVAL do not need to test anymore if
there is a pending request to CC_SEND.


Merging tsar_generic_xbar from branches/v5 to trunk [447-467]

=-----------------------------------------------------------------------
r447 | cfuguet | 2013-07-18 16:12:05 +0200 (Thu, 18 Jul 2013) | 8 lines

Adding tsar_generic_xbar platform in branches/v5/platforms:

  • This platform contains a third local crossbar interconnect for the CLACK network.
  • It works only in a monocluster topology

=-----------------------------------------------------------------------
r448 | cfuguet | 2013-07-18 17:51:18 +0200 (Thu, 18 Jul 2013) | 9 lines

Modification in branches/v5/platforms/tsar_generic_xbar:

  • Adding a DSPIN router to the platform to allow the inter-cluster communication for the CLACK commands.

With this modification, the tsar_generic_xbar platform can be used
for multi-cluster simulations

=-----------------------------------------------------------------------
r466 | cfuguet | 2013-07-23 17:01:49 +0200 (Tue, 23 Jul 2013) | 9 lines

Modifications in branches/v5 vci_mem_cache:

  • Replacing the third router CLACK by a third virtual channel in the new virtual_dspin_router supporting several virtual channels.

The third channel has been added in the COMMAND router.

=-----------------------------------------------------------------------
r467 | cfuguet | 2013-07-23 17:23:13 +0200 (Tue, 23 Jul 2013) | 5 lines

Modifications in branches/v5 tsar_generic_xbar:

  • Adding preprocessor conditional statements for ALMOS support


Merging dspin_dhccp_param from branches/v5 to trunk [377-467]

=-----------------------------------------------------------------------
r442 | cfuguet | 2013-07-17 12:13:51 +0200 (Wed, 17 Jul 2013) | 13 lines

Modifications in branches/v5/communication/dspin_dhccp_param:

  • Renaming FROM_MC fields in M2P
  • Renaming FROM_L1 fields in P2M
  • Renaming CLEANUP_ACK fields in CLACK
Location:
trunk/platforms
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/tsar_generic_iob/top.cpp

    r450 r468  
    802802   // Horizontal inter-clusters INT network DSPIN
    803803   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);
    805805   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);
    807807   DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_h_inc =
    808808      alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_h_inc", XMAX-1, YMAX, 2);
     
    812812   // Vertical inter-clusters INT network DSPIN
    813813   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);
    815815   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);
    817817   DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_v_inc =
    818818      alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_v_inc", XMAX, YMAX-1, 2);
     
    822822   // Mesh boundaries INT network DSPIN
    823823   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);
    825825   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);
    827827   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);
    829829   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);
    831831
    832832
     
    11521152         for (size_t y = 0; y < YMAX; y++)
    11531153         {
     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
    11541162            for (size_t k = 0; k < 2; k++)
    11551163            {
    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]);
    11641168            }
    11651169
     
    11851189         for (size_t x = 0; x < XMAX; x++)
    11861190         {
     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
    11871199            for (size_t k = 0; k < 2; k++)
    11881200            {
    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]);
    11971205            }
    11981206
     
    12141222   for (size_t y = 0; y < YMAX; y++)
    12151223   {
     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
    12161232      for (size_t k = 0; k < 2; k++)
    12171233      {
    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]);
    12271238      }
    12281239
     
    12431254   for (size_t x = 0; x < XMAX; x++)
    12441255   {
     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
    12451264      for (size_t k = 0; k < 2; k++)
    12461265      {
    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]);
    12561270      }
    12571271
     
    12831297         for (size_t a = 0; a < 4; a++)
    12841298         {
     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
    12851307            for (size_t k = 0; k < 2; k++)
    12861308            {
    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;
    12961313            }
    12971314
  • trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/metadata/tsar_iob_cluster.sd

    r450 r468  
    108108                Port('caba:clock_in', 'p_clk', auto = 'clock'),
    109109
    110                 Port('caba:dspin_output', 'p_int_cmd_out', [2, 4],
     110                Port('caba:dspin_output', 'p_int_cmd_out', [4, 3],
    111111              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],
    113113              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],
    115115              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],
    117117              dspin_data_size = parameter.Reference('dspin_int_rsp_width')),
    118118
    119                 Port('caba:dspin_output', 'p_ext_cmd_out', [2, 4],
     119                Port('caba:dspin_output', 'p_ram_cmd_out', [4],
    120120              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],
    122122              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],
    124124              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],
    126126              dspin_data_size = parameter.Reference('dspin_ram_rsp_width')),
    127127                ],
  • trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h

    r450 r468  
    7777        DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_l2g_c;
    7878        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;
    7981        DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_l2g_d;
    8082        DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_g2l_d;
     
    111113        // Coherence DSPIN signals between DSPIN local crossbars and CC components
    112114        DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_memc;
     115        DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_memc;
    113116        DspinSignals<dspin_int_rsp_width>     signal_int_dspin_p2m_memc;
    114117        DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_proc[8];
     118        DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_proc[8];
    115119        DspinSignals<dspin_int_rsp_width>     signal_int_dspin_p2m_proc[8];
    116120
     
    179183    DspinLocalCrossbar<dspin_int_cmd_width>*          int_xbar_m2p_c;
    180184    DspinLocalCrossbar<dspin_int_rsp_width>*          int_xbar_p2m_c;
     185    DspinLocalCrossbar<dspin_int_cmd_width>*          int_xbar_clack_c;
    181186
    182187    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  
    8989
    9090    // 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);
    9595
    9696    p_dspin_ram_cmd_in  = alloc_elems<DspinInput<dspin_ram_cmd_width> >("p_ext_cmd_in", 4);
     
    171171                     8,                                  // TRANSACTION TABLE DEPTH
    172172                     8,                                  // UPDATE TABLE DEPTH
     173                     8,                                  // INVALIDATE TABLE DEPTH
    173174                     debug_start_cycle,
    174175                     memc_debug_ok );
     
    303304                     false );                      // no broacast
    304305
     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
    305320    //////////////  INT ROUTER(S)
    306321    std::ostringstream s_int_router_cmd;
     
    310325                     x_id,y_id,                    // coordinate in the mesh
    311326                     x_width, y_width,             // x & y fields width
     327                     3,                            // nb virtual channels
    312328                     4,4);                         // input & output fifo depths
    313329
     
    318334                     x_id,y_id,                    // coordinates in mesh
    319335                     x_width, y_width,             // x & y fields width
     336                     2,                            // nb virtual channels
    320337                     4,4);                         // input & output fifo depths
    321338
     
    459476    int_router_rsp->p_clk                        (this->p_clk);
    460477    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++)
    464482        {
    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]);
    469485        }
     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        }
    470492    }
    471493
    472494    // 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);
    477501   
    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);
    482506
    483507    ///////////////////// CMD DSPIN  local crossbar direct
     
    541565        int_xbar_p2m_c->p_local_in[p]            (signal_int_dspin_p2m_proc[p]);
    542566
     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
    543576    //////////////////////////////////// Processors
    544577    for (size_t p = 0; p < nb_procs; p++)
     
    547580        proc[p]->p_resetn                        (this->p_resetn);
    548581        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]);
    551585        proc[p]->p_irq[0]                        (signal_proc_it[p]);
    552586        for ( size_t j = 1 ; j < 6 ; j++)
     
    563597
    564598    ///////////////////////////////////// XICU
    565     xicu->p_clk                                   (this->p_clk);
    566     xicu->p_resetn                                (this->p_resetn);
    567     xicu->p_vci                                   (signal_int_vci_tgt_xicu);
     599    xicu->p_clk                                  (this->p_clk);
     600    xicu->p_resetn                               (this->p_resetn);
     601    xicu->p_vci                                  (signal_int_vci_tgt_xicu);
    568602    for ( size_t p=0 ; p<nb_procs ; p++)
    569603    {
    570         xicu->p_irq[p]                            (signal_proc_it[p]);
     604        xicu->p_irq[p]                           (signal_proc_it[p]);
    571605    }
    572606    for ( size_t i=0 ; i<4 ; i++)
     
    590624
    591625    ///////////////////////////////////// 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);
    598633
    599634    // wrapper to INT network
     
    612647
    613648    //////////////////////////////////// XRAM
    614     xram->p_clk                                   (this->p_clk);
    615     xram->p_resetn                                (this->p_resetn);
    616     xram->p_vci                                         (signal_ram_vci_tgt_xram);
     649    xram->p_clk                                  (this->p_clk);
     650    xram->p_resetn                               (this->p_resetn);
     651    xram->p_vci                                  (signal_ram_vci_tgt_xram);
    617652
    618653    // wrapper to RAM network
     
    624659
    625660    /////////////////////////////////// MDMA
    626     mdma->p_clk                                   (this->p_clk);
     661    mdma->p_clk                                  (this->p_clk);
    627662    mdma->p_resetn                               (this->p_resetn);
    628     mdma->p_vci_target                            (signal_int_vci_tgt_mdma);
    629     mdma->p_vci_initiator                         (signal_int_vci_ini_mdma);
     663    mdma->p_vci_target                           (signal_int_vci_tgt_mdma);
     664    mdma->p_vci_initiator                        (signal_int_vci_ini_mdma);
    630665    for (size_t i=0 ; i<nb_dmas ; i++)
    631666        mdma->p_irq[i]                           (signal_irq_mdma[i]);
  • trunk/platforms/tsar_generic_xbar

  • trunk/platforms/tsar_generic_xbar/Makefile

    r450 r468  
    11simul.x: top.cpp top.desc
    2         soclib-cc -j3 -P -p top.desc -I. -o simul.x
     2        soclib-cc -t mysystemcass -j8 -P -p top.desc -I. -o simul.x
    33
    44clean:
    55        soclib-cc -x -p top.desc -I.
    6         rm -rf *.o *.x tty*
     6        rm -rf *.o *.x term*
  • trunk/platforms/tsar_generic_xbar/soclib.conf

    r379 r468  
     1import os;
    12
    2 config.addDescPath("/Users/alain/soc/tsar-trunk-svn-2013/")
     3desc_path = os.environ['HOME'] + "/Workspace/repo/tsar/trunk"
     4
     5config.mylibsystemcass.cflags += ['-fpermissive']
     6config.addDescPath(desc_path)
     7
     8# vim: filetype=python
  • trunk/platforms/tsar_generic_xbar/top.cpp

    r465 r468  
    151151//////////////////////i/////////////////////////////////////
    152152
    153 
    154153#ifdef USE_ALMOS
    155154#include "almos/hard_config.h"
     
    157156#endif
    158157#ifdef USE_GIET
     158#include "giet_vm/hard_config.h"
    159159#define PREFIX_OS "giet_vm/"
    160 #include "giet_vm/hard_config.h"
    161160#endif
    162161
     
    190189#ifdef USE_GIET
    191190#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"
    193192#endif
    194193#ifdef USE_ALMOS
     
    196195#define BDEV_IMAGE_NAME       PREFIX_OS"hdd-img.bin"
    197196#endif
    198 
    199197
    200198#define NIC_RX_NAME           PREFIX_OS"nic/rx_packets.txt"
     
    212210
    213211#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"
    217215#endif
    218216#ifdef USE_GIET
    219 #define soft_pathname        PREFIX_OS"soft.elf"
     217#define soft_pathname   PREFIX_OS"soft.elf"
    220218#endif
    221219
     
    285283
    286284#ifdef USE_GIET
    287    char     soft_name[256]   = soft_pathname;          // pathname to binary code
    288 #endif
    289    size_t   ncycles          = 1000000000;         // simulated cycles
     285   char     soft_name[256]   = soft_pathname;      // pathname to binary code
     286#endif
     287   uint64_t ncycles          = 100000000000;       // simulated cycles
    290288   char     disk_name[256]   = BDEV_IMAGE_NAME;    // pathname to the disk image
    291289   char     nic_rx_name[256] = NIC_RX_NAME;        // pathname to the rx packets file
     
    299297   uint32_t frozen_cycles    = MAX_FROZEN_CYCLES;  // monitoring frozen processor
    300298   size_t   cluster_io_id    = 0;                  // index of cluster containing IOs
    301    struct timeval t1,t2;
     299   struct   timeval t1,t2;
    302300   uint64_t ms1,ms2;
    303301
     
    541539   // Horizontal inter-clusters DSPIN signals
    542540   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);
    544542   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);
    546544   DspinSignals<dspin_rsp_width>*** signal_dspin_h_rsp_inc =
    547545      alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_h_rsp_inc", XMAX-1, YMAX, 2);
     
    551549   // Vertical inter-clusters DSPIN signals
    552550   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);
    554552   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);
    556554   DspinSignals<dspin_rsp_width>*** signal_dspin_v_rsp_inc =
    557555      alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_v_rsp_inc", XMAX, YMAX-1, 2);
     
    561559   // Mesh boundaries DSPIN signals
    562560   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);
    564562   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);
    566564   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);
    568566   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);
    570568
    571569
     
    680678      for (size_t x = 0; x < (XMAX-1); x++){
    681679         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++){
    683681               clusters[x][y]->p_cmd_out[EAST][k]      (signal_dspin_h_cmd_inc[x][y][k]);
    684682               clusters[x+1][y]->p_cmd_in[WEST][k]     (signal_dspin_h_cmd_inc[x][y][k]);
    685683               clusters[x][y]->p_cmd_in[EAST][k]       (signal_dspin_h_cmd_dec[x][y][k]);
    686684               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++){
    687688               clusters[x][y]->p_rsp_out[EAST][k]      (signal_dspin_h_rsp_inc[x][y][k]);
    688689               clusters[x+1][y]->p_rsp_in[WEST][k]     (signal_dspin_h_rsp_inc[x][y][k]);
     
    699700      for (size_t y = 0; y < (YMAX-1); y++){
    700701         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++){
    702703               clusters[x][y]->p_cmd_out[NORTH][k]     (signal_dspin_v_cmd_inc[x][y][k]);
    703704               clusters[x][y+1]->p_cmd_in[SOUTH][k]    (signal_dspin_v_cmd_inc[x][y][k]);
    704705               clusters[x][y]->p_cmd_in[NORTH][k]      (signal_dspin_v_cmd_dec[x][y][k]);
    705706               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++){
    706710               clusters[x][y]->p_rsp_out[NORTH][k]     (signal_dspin_v_rsp_inc[x][y][k]);
    707711               clusters[x][y+1]->p_rsp_in[SOUTH][k]    (signal_dspin_v_rsp_inc[x][y][k]);
     
    717721   for (size_t y = 0; y < YMAX; y++)
    718722   {
     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
    719731      for (size_t k = 0; k < 2; k++)
    720732      {
    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]);
    730737      }
    731738   }
     
    734741   for (size_t x = 0; x < XMAX; x++)
    735742   {
     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
    736751      for (size_t k = 0; k < 2; k++)
    737752      {
    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]);
    747757      }
    748758   }
     
    761771   for (size_t x = 0; x < XMAX ; x++){
    762772      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;
    774786            }
    775787         }
     
    786798   }
    787799
    788    for (size_t n = 1; n < ncycles; n++)
     800   for (uint64_t n = 1; n < ncycles; n++)
    789801   {
    790802      // Monitor a specific address for L1 & L2 caches
     
    811823         }
    812824      }
    813 
    814825
    815826      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  
    5757        Uses('caba:virtual_dspin_router',
    5858              flit_width      = parameter.Reference('dspin_rsp_width')),
    59            
     59
    6060        Uses('caba:vci_multi_tty',
    6161              cell_size       = parameter.Reference('vci_data_width_int')),
     
    8585                Port('caba:bit_in', 'p_resetn', auto = 'resetn'),
    8686                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],
    8888              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],
    9090              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],
    9292              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],
    9494              dspin_data_size = parameter.Reference('dspin_rsp_width')),
    9595                ],
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/include/tsar_xbar_cluster.h

    r436 r468  
    6969    DspinSignals<dspin_cmd_width>   signal_dspin_m2p_l2g_c;
    7070    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;
    7173    DspinSignals<dspin_rsp_width>   signal_dspin_rsp_l2g_d;
    7274    DspinSignals<dspin_rsp_width>   signal_dspin_rsp_g2l_d;
     
    115117    // Coherence DSPIN signals to local crossbar
    116118    DspinSignals<dspin_cmd_width>     signal_dspin_m2p_memc;
     119    DspinSignals<dspin_cmd_width>     signal_dspin_clack_memc;
    117120    DspinSignals<dspin_rsp_width>     signal_dspin_p2m_memc;
    118121    DspinSignals<dspin_cmd_width>     signal_dspin_m2p_proc[8];
     122    DspinSignals<dspin_cmd_width>     signal_dspin_clack_proc[8];
    119123    DspinSignals<dspin_rsp_width>     signal_dspin_p2m_proc[8];
    120124
     
    198202    DspinLocalCrossbar<dspin_cmd_width>*          xbar_m2p_c;
    199203    DspinLocalCrossbar<dspin_rsp_width>*          xbar_p2m_c;
     204    DspinLocalCrossbar<dspin_cmd_width>*          xbar_clack_c;
    200205
    201206    VirtualDspinRouter<dspin_cmd_width>*          router_cmd;
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp

    r465 r468  
    8585{
    8686    // 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);
    8989    p_rsp_in        = alloc_elems<DspinInput<dspin_rsp_width> >("p_rsp_in", 4, 2);
    9090    p_rsp_out       = alloc_elems<DspinOutput<dspin_rsp_width> >("p_rsp_out", 4, 2);
     
    148148                     8,                                  // TRANSACTION TABLE DEPTH
    149149                     8,                                  // UPDATE TABLE DEPTH
     150                     8,                                  // INVALIDATE TABLE DEPTH
    150151                     debug_start_cycle,
    151152                     memc_debug_ok );
     
    269270
    270271    /////////////////////////////////////////////////////////////////////////////
     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    /////////////////////////////////////////////////////////////////////////////
    271285    router_cmd = new VirtualDspinRouter<dspin_cmd_width>(
    272286                     "router_cmd",
    273287                     x_id,y_id,                    // coordinate in the mesh
    274288                     x_width, y_width,             // x & y fields width
    275                      2,                            // nb virtual channels
     289                     3,                            // nb virtual channels
    276290                     4,4);                         // input & output fifo depths
    277291
     
    385399    for(int i = 0; i < 4; i++)
    386400    {
    387         for (int k = 0; k < 2; k++)
     401        for (int k = 0; k < 3; k++)
    388402        {
    389403            router_cmd->p_out[i][k]          (this->p_cmd_out[i][k]);
    390404            router_cmd->p_in[i][k]           (this->p_cmd_in[i][k]);
     405        }
     406
     407        for (int k = 0; k < 2; k++)
     408        {
    391409            router_rsp->p_out[i][k]          (this->p_rsp_out[i][k]);
    392410            router_rsp->p_in[i][k]           (this->p_rsp_in[i][k]);
     
    396414    router_cmd->p_out[4][0]                  (signal_dspin_cmd_g2l_d);
    397415    router_cmd->p_out[4][1]                  (signal_dspin_m2p_g2l_c);
     416    router_cmd->p_out[4][2]                  (signal_dspin_clack_g2l_c);
    398417    router_cmd->p_in[4][0]                   (signal_dspin_cmd_l2g_d);
    399418    router_cmd->p_in[4][1]                   (signal_dspin_m2p_l2g_c);
     419    router_cmd->p_in[4][2]                   (signal_dspin_clack_l2g_c);
    400420
    401421    router_rsp->p_out[4][0]                  (signal_dspin_rsp_g2l_d);
     
    403423    router_rsp->p_in[4][0]                   (signal_dspin_rsp_l2g_d);
    404424    router_rsp->p_in[4][1]                   (signal_dspin_p2m_l2g_c);
     425
    405426
    406427    std::cout << "  - CMD & RSP routers connected" << std::endl;
     
    473494    std::cout << "  - M2P Coherence crossbar connected" << std::endl;
    474495
     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
    475507    ////////////////////////// P2M DSPIN local crossbar coherence
    476508    xbar_p2m_c->p_clk                            (this->p_clk);
     
    491523        proc[p]->p_resetn                   (this->p_resetn);
    492524        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]);
    495528        proc[p]->p_irq[0]                   (signal_proc_it[p]);
    496529        for ( size_t j = 1 ; j < 6 ; j++)
     
    549582    memc->p_vci_ixr                    (signal_vci_xram);
    550583    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);
    553587
    554588    // wrapper MEMC
Note: See TracChangeset for help on using the changeset viewer.