Changeset 448 for branches


Ignore:
Timestamp:
Jul 18, 2013, 5:51:18 PM (11 years ago)
Author:
cfuguet
Message:

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

Location:
branches/v5/platforms/tsar_generic_xbar
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/v5/platforms/tsar_generic_xbar/top.cpp

    r447 r448  
    505505   DspinSignals<dspin_rsp_width>*** signal_dspin_h_rsp_dec =
    506506      alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_h_rsp_dec", XMAX-1, YMAX, 2);
     507   DspinSignals<dspin_cmd_width>**  signal_dspin_h_clack_inc =
     508      alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_h_clack_inc", XMAX-1, YMAX);
     509   DspinSignals<dspin_cmd_width>**  signal_dspin_h_clack_dec =
     510      alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_h_clack_dec", XMAX-1, YMAX);
    507511
    508512   // Vertical inter-clusters DSPIN signals
     
    515519   DspinSignals<dspin_rsp_width>*** signal_dspin_v_rsp_dec =
    516520      alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_v_rsp_dec", XMAX, YMAX-1, 2);
     521   DspinSignals<dspin_cmd_width>**  signal_dspin_v_clack_inc =
     522      alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_v_clack_inc", XMAX, YMAX-1);
     523   DspinSignals<dspin_cmd_width>**  signal_dspin_v_clack_dec =
     524      alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_v_clack_dec", XMAX, YMAX-1);
    517525
    518526   // Mesh boundaries DSPIN signals
     
    525533   DspinSignals<dspin_rsp_width>**** signal_dspin_false_rsp_out =
    526534      alloc_elems<DspinSignals<dspin_rsp_width> >("signal_dspin_false_rsp_out", XMAX, YMAX, 2, 4);
     535   DspinSignals<dspin_cmd_width>***  signal_dspin_false_clack_in =
     536      alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_false_clack_in", XMAX, YMAX, 4);
     537   DspinSignals<dspin_cmd_width>***  signal_dspin_false_clack_out =
     538      alloc_elems<DspinSignals<dspin_cmd_width> >("signal_dspin_false_clack_out", XMAX, YMAX, 4);
    527539
    528540
     
    653665               clusters[x+1][y]->p_rsp_out[k][WEST]    (signal_dspin_h_rsp_dec[x][y][k]);
    654666            }
     667            clusters[x][y]->p_clack_out[EAST]      (signal_dspin_h_clack_inc[x][y]);
     668            clusters[x+1][y]->p_clack_in[WEST]     (signal_dspin_h_clack_inc[x][y]);
     669            clusters[x][y]->p_clack_in[EAST]       (signal_dspin_h_clack_dec[x][y]);
     670            clusters[x+1][y]->p_clack_out[WEST]    (signal_dspin_h_clack_dec[x][y]);
    655671         }
    656672      }
     
    672688               clusters[x][y+1]->p_rsp_out[k][SOUTH]   (signal_dspin_v_rsp_dec[x][y][k]);
    673689            }
     690            clusters[x][y]->p_clack_out[NORTH]     (signal_dspin_v_clack_inc[x][y]);
     691            clusters[x][y+1]->p_clack_in[SOUTH]    (signal_dspin_v_clack_inc[x][y]);
     692            clusters[x][y]->p_clack_in[NORTH]      (signal_dspin_v_clack_dec[x][y]);
     693            clusters[x][y+1]->p_clack_out[SOUTH]   (signal_dspin_v_clack_dec[x][y]);
    674694         }
    675695      }
     
    682702      for (size_t k = 0; k < 2; k++)
    683703      {
    684          clusters[0][y]->p_cmd_in[k][WEST]             (signal_dspin_false_cmd_in[0][y][k][WEST]);
    685          clusters[0][y]->p_cmd_out[k][WEST]            (signal_dspin_false_cmd_out[0][y][k][WEST]);
    686          clusters[0][y]->p_rsp_in[k][WEST]             (signal_dspin_false_rsp_in[0][y][k][WEST]);
    687          clusters[0][y]->p_rsp_out[k][WEST]            (signal_dspin_false_rsp_out[0][y][k][WEST]);
     704         clusters[0][y]->p_cmd_in[k][WEST]        (signal_dspin_false_cmd_in[0][y][k][WEST]);
     705         clusters[0][y]->p_cmd_out[k][WEST]       (signal_dspin_false_cmd_out[0][y][k][WEST]);
     706         clusters[0][y]->p_rsp_in[k][WEST]        (signal_dspin_false_rsp_in[0][y][k][WEST]);
     707         clusters[0][y]->p_rsp_out[k][WEST]       (signal_dspin_false_rsp_out[0][y][k][WEST]);
    688708
    689709         clusters[XMAX-1][y]->p_cmd_in[k][EAST]   (signal_dspin_false_cmd_in[XMAX-1][y][k][EAST]);
     
    692712         clusters[XMAX-1][y]->p_rsp_out[k][EAST]  (signal_dspin_false_rsp_out[XMAX-1][y][k][EAST]);
    693713      }
     714
     715      clusters[0][y]->p_clack_in[WEST]       (signal_dspin_false_clack_in[0][y][WEST]);
     716      clusters[0][y]->p_clack_out[WEST]      (signal_dspin_false_clack_out[0][y][WEST]);
     717
     718      clusters[XMAX-1][y]->p_clack_in[EAST]  (signal_dspin_false_clack_in[XMAX-1][y][EAST]);
     719      clusters[XMAX-1][y]->p_clack_out[EAST] (signal_dspin_false_clack_out[XMAX-1][y][EAST]);
    694720   }
    695721
     
    699725      for (size_t k = 0; k < 2; k++)
    700726      {
    701          clusters[x][0]->p_cmd_in[k][SOUTH]            (signal_dspin_false_cmd_in[x][0][k][SOUTH]);
    702          clusters[x][0]->p_cmd_out[k][SOUTH]           (signal_dspin_false_cmd_out[x][0][k][SOUTH]);
    703          clusters[x][0]->p_rsp_in[k][SOUTH]            (signal_dspin_false_rsp_in[x][0][k][SOUTH]);
    704          clusters[x][0]->p_rsp_out[k][SOUTH]           (signal_dspin_false_rsp_out[x][0][k][SOUTH]);
     727         clusters[x][0]->p_cmd_in[k][SOUTH]       (signal_dspin_false_cmd_in[x][0][k][SOUTH]);
     728         clusters[x][0]->p_cmd_out[k][SOUTH]      (signal_dspin_false_cmd_out[x][0][k][SOUTH]);
     729         clusters[x][0]->p_rsp_in[k][SOUTH]       (signal_dspin_false_rsp_in[x][0][k][SOUTH]);
     730         clusters[x][0]->p_rsp_out[k][SOUTH]      (signal_dspin_false_rsp_out[x][0][k][SOUTH]);
    705731
    706732         clusters[x][YMAX-1]->p_cmd_in[k][NORTH]  (signal_dspin_false_cmd_in[x][YMAX-1][k][NORTH]);
     
    709735         clusters[x][YMAX-1]->p_rsp_out[k][NORTH] (signal_dspin_false_rsp_out[x][YMAX-1][k][NORTH]);
    710736      }
     737
     738      clusters[x][0]->p_clack_in[SOUTH]       (signal_dspin_false_clack_in[x][0][SOUTH]);
     739      clusters[x][0]->p_clack_out[SOUTH]      (signal_dspin_false_clack_out[x][0][SOUTH]);
     740
     741      clusters[x][YMAX-1]->p_clack_in[NORTH]  (signal_dspin_false_clack_in[x][YMAX-1][NORTH]);
     742      clusters[x][YMAX-1]->p_clack_out[NORTH] (signal_dspin_false_clack_out[x][YMAX-1][NORTH]);
    711743   }
    712744   std::cout << "North, South, West, East connections established" << std::endl;
     
    736768               signal_dspin_false_rsp_out[x][y][k][a].read  = true;
    737769            }
     770         }
     771      }
     772   }
     773   // clack network boundaries signals
     774   for (size_t x = 0; x < XMAX ; x++){
     775      for (size_t y = 0; y < YMAX ; y++){
     776         for (size_t k = 0; k < 4; k++){
     777            signal_dspin_false_clack_in [x][y][k].write = false;
     778            signal_dspin_false_clack_in [x][y][k].read  = true;
     779            signal_dspin_false_clack_out[x][y][k].write = false;
     780            signal_dspin_false_clack_out[x][y][k].read  = true;
    738781         }
    739782      }
  • branches/v5/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/metadata/tsar_xbar_cluster.sd

    r437 r448  
    5757        Uses('caba:virtual_dspin_router',
    5858              flit_width      = parameter.Reference('dspin_rsp_width')),
     59
     60        Uses('caba:dspin_router',
     61              flit_width      = parameter.Reference('dspin_cmd_width')),
    5962           
    6063        Uses('caba:vci_multi_tty',
  • branches/v5/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/include/tsar_xbar_cluster.h

    r447 r448  
    2727#include "vci_dspin_target_wrapper.h"
    2828#include "virtual_dspin_router.h"
     29#include "dspin_router.h"
    2930#include "vci_multi_tty.h"
    3031#include "vci_multi_nic.h"
     
    5455    soclib::caba::DspinOutput<dspin_rsp_width>      **p_rsp_out;
    5556    soclib::caba::DspinInput<dspin_rsp_width>       **p_rsp_in;
     57    soclib::caba::DspinOutput<dspin_cmd_width>      *p_clack_out;
     58    soclib::caba::DspinInput<dspin_cmd_width>       *p_clack_in;
    5659
    5760    // interrupt signals
     
    206209    VirtualDspinRouter<dspin_cmd_width>*          router_cmd;
    207210    VirtualDspinRouter<dspin_rsp_width>*          router_rsp;
     211    DspinRouter<dspin_cmd_width>*                 router_clack;
    208212
    209213    TsarXbarCluster( sc_module_name                     insname,
  • branches/v5/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp

    r447 r448  
    8989    p_rsp_in        = alloc_elems<DspinInput<dspin_rsp_width> >("p_rsp_in", 2, 4);
    9090    p_rsp_out       = alloc_elems<DspinOutput<dspin_rsp_width> >("p_rsp_out", 2, 4);
     91    p_clack_in      = alloc_elems<DspinInput<dspin_cmd_width> >("p_clack_in", 4);
     92    p_clack_out     = alloc_elems<DspinOutput<dspin_cmd_width> >("p_clack_out", 4);
    9193
    9294    /////////////////////////////////////////////////////////////////////////////
     
    296298                     4,4);                         // input & output fifo depths
    297299
     300    /////////////////////////////////////////////////////////////////////////////
     301    router_clack = new DspinRouter<dspin_cmd_width>(
     302                     "router_clack",
     303                     x_id,y_id,                    // coordinates in mesh
     304                     x_width, y_width,             // x & y fields width
     305                     4,4);                         // input & output fifo depths
     306
    298307    // IO cluster components
    299308    if ( io )
     
    394403    router_rsp->p_clk                        (this->p_clk);
    395404    router_rsp->p_resetn                     (this->p_resetn);
     405    router_clack->p_clk                      (this->p_clk);
     406    router_clack->p_resetn                   (this->p_resetn);
     407
    396408    for (int x = 0; x < 2; x++)
    397409    {
     
    405417    }
    406418
     419    for(int x = 0; x < 4; x++)
     420    {
     421       router_clack->p_out[x]                (this->p_clack_out[x]);
     422       router_clack->p_in[x]                 (this->p_clack_in[x]);
     423    }
     424
    407425    router_cmd->p_out[0][4]                  (signal_dspin_cmd_g2l_d);
    408426    router_cmd->p_out[1][4]                  (signal_dspin_m2p_g2l_c);
     
    414432    router_rsp->p_in[0][4]                   (signal_dspin_rsp_l2g_d);
    415433    router_rsp->p_in[1][4]                   (signal_dspin_p2m_l2g_c);
     434
     435    router_clack->p_out[4]                   (signal_dspin_clack_g2l_c);
     436    router_clack->p_in[4]                    (signal_dspin_clack_l2g_c);
     437
    416438
    417439    std::cout << "  - CMD & RSP routers connected" << std::endl;
Note: See TracChangeset for help on using the changeset viewer.