Ignore:
Timestamp:
Jul 2, 2015, 3:17:14 PM (9 years ago)
Author:
alain
Message:

Introducing the BDV / SDC / HBA switch in the tsar_generic_iob plat-form

Location:
trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/metadata/tsar_iob_cluster.sd

    r972 r1002  
    8080              dspin_rsp_width    = parameter.Reference('dspin_int_rsp_width')),
    8181
    82         Uses('caba:virtual_dspin_router',
     82        Uses('caba:dspin_router',
    8383              flit_width         = parameter.Reference('dspin_int_cmd_width')),
    8484
    85         Uses('caba:virtual_dspin_router',
     85        Uses('caba:dspin_router',
    8686              flit_width         = parameter.Reference('dspin_int_rsp_width')),
    8787
  • trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h

    r972 r1002  
    2727#include "vci_dspin_target_wrapper.h"
    2828#include "dspin_router.h"
    29 #include "virtual_dspin_router.h"
    3029#include "vci_mwmr_dma.h"
    3130#include "vci_mem_cache.h"
     
    6261
    6362    // These arrays of ports are used to connect the INT & RAM networks in top cell
    64     soclib::caba::DspinOutput<dspin_int_cmd_width>**   p_dspin_int_cmd_out;
    65     soclib::caba::DspinInput<dspin_int_cmd_width>**    p_dspin_int_cmd_in;
    66     soclib::caba::DspinOutput<dspin_int_rsp_width>**   p_dspin_int_rsp_out;
    67     soclib::caba::DspinInput<dspin_int_rsp_width>**    p_dspin_int_rsp_in;
     63    soclib::caba::DspinOutput<dspin_int_cmd_width>*    p_dspin_int_cmd_out;
     64    soclib::caba::DspinInput<dspin_int_cmd_width>*     p_dspin_int_cmd_in;
     65    soclib::caba::DspinOutput<dspin_int_rsp_width>*    p_dspin_int_rsp_out;
     66    soclib::caba::DspinInput<dspin_int_rsp_width>*     p_dspin_int_rsp_in;
     67    soclib::caba::DspinOutput<dspin_int_cmd_width>*    p_dspin_int_m2p_out;
     68    soclib::caba::DspinInput<dspin_int_cmd_width>*     p_dspin_int_m2p_in;
     69    soclib::caba::DspinOutput<dspin_int_rsp_width>*    p_dspin_int_p2m_out;
     70    soclib::caba::DspinInput<dspin_int_rsp_width>*     p_dspin_int_p2m_in;
     71    soclib::caba::DspinOutput<dspin_int_cmd_width>*    p_dspin_int_cla_out;
     72    soclib::caba::DspinInput<dspin_int_cmd_width>*     p_dspin_int_cla_in;
    6873
    6974    soclib::caba::DspinOutput<dspin_ram_cmd_width>*    p_dspin_ram_cmd_out;
     
    8792    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_l2g_d;
    8893    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_g2l_d;
     94
     95    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_l2g_d;
     96    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_g2l_d;
     97
    8998    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_l2g_c;
    9099    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_g2l_c;
    91     DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_l2g_c;
    92     DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_g2l_c;
    93     DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_l2g_d;
    94     DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_g2l_d;
     100
    95101    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_p2m_l2g_c;
    96102    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_p2m_g2l_c;
     103
     104    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cla_l2g_c;
     105    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cla_g2l_c;
    97106
    98107    // INT network VCI signals between VCI components and VCI local crossbar
     
    111120    // Coherence DSPIN signals between DSPIN local crossbars and CC components
    112121    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_memc;
    113     DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_memc;
     122    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cla_memc;
    114123    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_p2m_memc;
    115124    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_proc[8];
    116     DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_proc[8];
     125    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cla_proc[8];
    117126    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_p2m_proc[8];
    118127
     
    174183    DspinLocalCrossbar<dspin_int_cmd_width>*          int_xbar_clack_c;
    175184
    176     VirtualDspinRouter<dspin_int_cmd_width>*          int_router_cmd;
    177     VirtualDspinRouter<dspin_int_rsp_width>*          int_router_rsp;
     185    DspinRouter<dspin_int_cmd_width>*                 int_router_cmd;
     186    DspinRouter<dspin_int_rsp_width>*                 int_router_rsp;
     187    DspinRouter<dspin_int_cmd_width>*                 int_router_m2p;
     188    DspinRouter<dspin_int_rsp_width>*                 int_router_p2m;
     189    DspinRouter<dspin_int_cmd_width>*                 int_router_cla;
    178190
    179191    VciSimpleRam<vci_param_ext>*                      xram;
  • trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/src/tsar_iob_cluster.cpp

    r972 r1002  
    9797
    9898    // Vectors of DSPIN ports for inter-cluster communications
    99     p_dspin_int_cmd_in  = alloc_elems<DspinInput<dspin_int_cmd_width> >("p_int_cmd_in", 4, 3);
    100     p_dspin_int_cmd_out = alloc_elems<DspinOutput<dspin_int_cmd_width> >("p_int_cmd_out", 4, 3);
    101     p_dspin_int_rsp_in  = alloc_elems<DspinInput<dspin_int_rsp_width> >("p_int_rsp_in", 4, 2);
    102     p_dspin_int_rsp_out = alloc_elems<DspinOutput<dspin_int_rsp_width> >("p_int_rsp_out", 4, 2);
     99    p_dspin_int_cmd_in  = alloc_elems<DspinInput<dspin_int_cmd_width> >("p_int_cmd_in", 4);
     100    p_dspin_int_cmd_out = alloc_elems<DspinOutput<dspin_int_cmd_width> >("p_int_cmd_out", 4);
     101
     102    p_dspin_int_rsp_in  = alloc_elems<DspinInput<dspin_int_rsp_width> >("p_int_rsp_in", 4);
     103    p_dspin_int_rsp_out = alloc_elems<DspinOutput<dspin_int_rsp_width> >("p_int_rsp_out", 4);
     104
     105    p_dspin_int_m2p_in  = alloc_elems<DspinInput<dspin_int_cmd_width> >("p_int_m2p_in", 4);
     106    p_dspin_int_m2p_out = alloc_elems<DspinOutput<dspin_int_cmd_width> >("p_int_m2p_out", 4);
     107
     108    p_dspin_int_p2m_in  = alloc_elems<DspinInput<dspin_int_rsp_width> >("p_int_p2m_in", 4);
     109    p_dspin_int_p2m_out = alloc_elems<DspinOutput<dspin_int_rsp_width> >("p_int_p2m_out", 4);
     110
     111    p_dspin_int_cla_in  = alloc_elems<DspinInput<dspin_int_cmd_width> >("p_int_cla_in", 4);
     112    p_dspin_int_cla_out = alloc_elems<DspinOutput<dspin_int_cmd_width> >("p_int_cla_out", 4);
    103113
    104114    p_dspin_ram_cmd_in  = alloc_elems<DspinInput<dspin_ram_cmd_width> >("p_ext_cmd_in", 4);
    105115    p_dspin_ram_cmd_out = alloc_elems<DspinOutput<dspin_ram_cmd_width> >("p_ext_cmd_out", 4);
     116
    106117    p_dspin_ram_rsp_in  = alloc_elems<DspinInput<dspin_ram_rsp_width> >("p_ext_rsp_in", 4);
    107118    p_dspin_ram_rsp_out = alloc_elems<DspinOutput<dspin_ram_rsp_width> >("p_ext_rsp_out", 4);
     
    114125    }
    115126
    116     /////////////////////////////////////////////////////////////////////////////
     127    //////////////////////////////////////////////////////////////////////////////////
    117128    //    Hardware components
    118     /////////////////////////////////////////////////////////////////////////////
    119 
    120     ////////////  PROCS
     129    //////////////////////////////////////////////////////////////////////////////////
     130
     131    ////////////  PROCS  /////////////////////////////////////////////////////////////
    121132    for (size_t p = 0; p < nb_procs; p++)
    122133    {
     
    147158    }
    148159
    149     ///////////  MEMC
     160    ////////////  MEMC   /////////////////////////////////////////////////////////////
    150161    std::ostringstream s_memc;
    151162    s_memc << "memc_" << x_id << "_" << y_id;
     
    178189                     x_width + y_width + l_width);
    179190
    180     ///////////   XICU
     191    ///////////   XICU  //////////////////////////////////////////////////////////////
    181192    std::ostringstream s_xicu;
    182193    s_xicu << "xicu_" << x_id << "_" << y_id;
     
    190201                     xcu_nb_out);                         // number of output IRQs
    191202
    192     ////////////  MWMR controller and coprocessor
     203    ////////////  MWMR controller and COPROC  ////////////////////////////////////////
    193204    std::ostringstream s_mwmr;
    194205    std::ostringstream s_copro;
     
    244255    }
    245256
    246     ///////////  Direct LOCAL_XBAR(S)
     257    ///////////  VCI INT_CMD/RSP LOCAL_XBAR  //////////////////////////////////////
    247258    size_t nb_direct_initiators = is_io ? nb_procs + 2 : nb_procs + 1;
    248259    size_t nb_direct_targets    = is_io ? 4 : 3;
     
    276287                     x_width + y_width + l_width);
    277288
    278     ////////////  Coherence LOCAL_XBAR(S)
     289    ////////////  DSPIN INT_M2P LOCAL_XBAR  ////////////////////////////////////////
    279290    std::ostringstream s_int_xbar_m2p_c;
    280291    s_int_xbar_m2p_c << "int_xbar_m2p_c_" << x_id << "_" << y_id;
     
    291302                     true );                       // broacast
    292303
     304    ////////////  DSPIN INT_P2M LOCAL_XBAR  ////////////////////////////////////////
    293305    std::ostringstream s_int_xbar_p2m_c;
    294306    s_int_xbar_p2m_c << "int_xbar_p2m_c_" << x_id << "_" << y_id;
     
    305317                     false );                      // no broacast
    306318
     319    ////////////  DSPIN INT_CLA LOCAL_XBAR  ////////////////////////////////////////
    307320    std::ostringstream s_int_xbar_clack_c;
    308321    s_int_xbar_clack_c << "int_xbar_clack_c_" << x_id << "_" << y_id;
     
    319332                     false);                       // broadcast
    320333
    321     //////////////  INT ROUTER(S)
     334    ////////////  DSPIN INT_CMD ROUTER ////////////////////////////////////////////
    322335    std::ostringstream s_int_router_cmd;
    323     s_int_router_cmd << "router_cmd_" << x_id << "_" << y_id;
    324     int_router_cmd = new VirtualDspinRouter<dspin_int_cmd_width>(
     336    s_int_router_cmd << "int_router_cmd_" << x_id << "_" << y_id;
     337    int_router_cmd = new DspinRouter<dspin_int_cmd_width>(
    325338                     s_int_router_cmd.str().c_str(),
    326339                     x_id,y_id,                    // coordinate in the mesh
    327340                     x_width, y_width,             // x & y fields width
    328                      3,                            // nb virtual channels
    329341                     4,4);                         // input & output fifo depths
    330342
     343    ////////////  DSPIN INT_RSP ROUTER ////////////////////////////////////////////
    331344    std::ostringstream s_int_router_rsp;
    332     s_int_router_rsp << "router_rsp_" << x_id << "_" << y_id;
    333     int_router_rsp = new VirtualDspinRouter<dspin_int_rsp_width>(
     345    s_int_router_rsp << "int_router_rsp_" << x_id << "_" << y_id;
     346    int_router_rsp = new DspinRouter<dspin_int_rsp_width>(
    334347                     s_int_router_rsp.str().c_str(),
    335                      x_id,y_id,                    // router coordinates in mesh
     348                     x_id,y_id,                    // coordinates in mesh
    336349                     x_width, y_width,             // x & y fields width
    337                      2,                            // nb virtual channels
    338350                     4,4);                         // input & output fifo depths
    339351
    340     //////////////  XRAM
     352    ////////////  DSPIN INT_M2P ROUTER ////////////////////////////////////////////
     353    std::ostringstream s_int_router_m2p;
     354    s_int_router_m2p << "int_router_m2p_" << x_id << "_" << y_id;
     355    int_router_m2p = new DspinRouter<dspin_int_cmd_width>(
     356                     s_int_router_m2p.str().c_str(),
     357                     x_id,y_id,                    // coordinate in the mesh
     358                     x_width, y_width,             // x & y fields width
     359                     4,4,                          // input & output fifo depths
     360                     true);                        // broadcast supported
     361
     362    ////////////  DSPIN INT_P2M ROUTER ////////////////////////////////////////////
     363    std::ostringstream s_int_router_p2m;
     364    s_int_router_p2m << "int_router_p2m_" << x_id << "_" << y_id;
     365    int_router_p2m = new DspinRouter<dspin_int_rsp_width>(
     366                     s_int_router_p2m.str().c_str(),
     367                     x_id,y_id,                    // coordinates in mesh
     368                     x_width, y_width,             // x & y fields width
     369                     4,4);                         // input & output fifo depths
     370
     371    ////////////  DSPIN INT_CLA ROUTER ////////////////////////////////////////////
     372    std::ostringstream s_int_router_cla;
     373    s_int_router_cla << "int_router_cla_" << x_id << "_" << y_id;
     374    int_router_cla = new DspinRouter<dspin_int_cmd_width>(
     375                     s_int_router_cla.str().c_str(),
     376                     x_id,y_id,                    // coordinate in the mesh
     377                     x_width, y_width,             // x & y fields width
     378                     4,4);                         // input & output fifo depths
     379
     380    //////////////  XRAM  /////////////////////////////////////////////////////////
    341381    std::ostringstream s_xram;
    342382    s_xram << "xram_" << x_id << "_" << y_id;
     
    356396                     x_width + y_width + l_width);
    357397
    358     /////////////  RAM ROUTER(S)
     398    ////////////  DSPIN RAM_CMD ROUTER  ///////////////////////////////////////////
    359399    std::ostringstream s_ram_router_cmd;
    360400    s_ram_router_cmd << "ram_router_cmd_" << x_id << "_" << y_id;
     
    366406                     4, 4);                          // input & output fifo depths
    367407
     408    ////////////  DSPIN RAM_RSP ROUTER  ///////////////////////////////////////////
    368409    std::ostringstream s_ram_router_rsp;
    369410    s_ram_router_rsp << "ram_router_rsp_" << x_id << "_" << y_id;
     
    376417
    377418
    378     ////////////////////// I/O  CLUSTER ONLY    ///////////////////////
     419    ////////////////////// I/O  CLUSTER ONLY    ///////////////////////////////////
    379420    if ( is_io )
    380421    {
    381         ///////////  IO_BRIDGE
     422        ///////////  IO_BRIDGE ////////////////////////////////////////////////////
    382423        std::ostringstream s_iob;
    383424        s_iob << "iob_" << x_id << "_" << y_id;
     
    406447                     vci_param_int::S);
    407448
     449        ////////////  DSPIN RAM_CMD LOCAL_XBAR  ///////////////////////////////////
    408450        std::ostringstream s_ram_xbar_cmd;
    409451        s_ram_xbar_cmd << "s_ram_xbar_cmd_" << x_id << "_" << y_id;
     
    419461              false);                       // support broadcast ?
    420462
     463        ////////////  DSPIN RAM_RSP LOCAL_XBAR  ///////////////////////////////////
    421464        std::ostringstream s_ram_xbar_rsp;
    422465        s_ram_xbar_rsp << "s_ram_xbar_rsp_" << x_id << "_" << y_id;
     
    431474              true,                         // use routing table ?
    432475              false);                       // support broadcast ?
     476
    433477    } // end if IO
    434478
     
    440484    //                      : local srcid[memc] = nb_procs
    441485
    442     //////////////////////// internal CMD & RSP routers
    443     int_router_cmd->p_clk                        (this->p_clk);
    444     int_router_cmd->p_resetn                     (this->p_resetn);
    445     int_router_rsp->p_clk                        (this->p_clk);
    446     int_router_rsp->p_resetn                     (this->p_resetn);
    447 
    448     for (int i = 0; i < 4; i++)
    449     {
    450         for(int k = 0; k < 3; k++)
    451         {
    452             int_router_cmd->p_out[i][k]          (this->p_dspin_int_cmd_out[i][k]);
    453             int_router_cmd->p_in[i][k]           (this->p_dspin_int_cmd_in[i][k]);
    454         }
    455 
    456         for(int k = 0; k < 2; k++)
    457         {
    458             int_router_rsp->p_out[i][k]          (this->p_dspin_int_rsp_out[i][k]);
    459             int_router_rsp->p_in[i][k]           (this->p_dspin_int_rsp_in[i][k]);
    460         }
    461     }
    462 
    463     // local ports
    464     int_router_cmd->p_out[4][0]                  (signal_int_dspin_cmd_g2l_d);
    465     int_router_cmd->p_out[4][1]                  (signal_int_dspin_m2p_g2l_c);
    466     int_router_cmd->p_out[4][2]                  (signal_int_dspin_clack_g2l_c);
    467     int_router_cmd->p_in[4][0]                   (signal_int_dspin_cmd_l2g_d);
    468     int_router_cmd->p_in[4][1]                   (signal_int_dspin_m2p_l2g_c);
    469     int_router_cmd->p_in[4][2]                   (signal_int_dspin_clack_l2g_c);
    470 
    471     int_router_rsp->p_out[4][0]                  (signal_int_dspin_rsp_g2l_d);
    472     int_router_rsp->p_out[4][1]                  (signal_int_dspin_p2m_g2l_c);
    473     int_router_rsp->p_in[4][0]                   (signal_int_dspin_rsp_l2g_d);
    474     int_router_rsp->p_in[4][1]                   (signal_int_dspin_p2m_l2g_c);
    475 
    476     ///////////////////// CMD DSPIN  local crossbar direct
    477     int_xbar_d->p_clk                                 (this->p_clk);
    478     int_xbar_d->p_resetn                              (this->p_resetn);
    479     int_xbar_d->p_initiator_to_up                     (signal_int_vci_l2g);
    480     int_xbar_d->p_target_to_up                        (signal_int_vci_g2l);
    481 
    482     int_xbar_d->p_to_target[int_memc_tgt_id]          (signal_int_vci_tgt_memc);
    483     int_xbar_d->p_to_target[int_xicu_tgt_id]          (signal_int_vci_tgt_xicu);
    484     int_xbar_d->p_to_target[int_mwmr_tgt_id]          (signal_int_vci_tgt_mwmr);
    485     int_xbar_d->p_to_initiator[int_mwmr_ini_id]       (signal_int_vci_ini_mwmr);
    486     for (size_t p = 0; p < nb_procs; p++)
    487        int_xbar_d->p_to_initiator[int_proc_ini_id + p] (signal_int_vci_ini_proc[p]);
    488 
    489     if ( is_io )
    490     {
    491        int_xbar_d->p_to_target[int_iobx_tgt_id]        (signal_int_vci_tgt_iobx);
    492        int_xbar_d->p_to_initiator[int_iobx_ini_id]     (signal_int_vci_ini_iobx);
    493     }
    494 
    495     int_wi_gate_d->p_clk                         (this->p_clk);
    496     int_wi_gate_d->p_resetn                      (this->p_resetn);
    497     int_wi_gate_d->p_vci                         (signal_int_vci_l2g);
    498     int_wi_gate_d->p_dspin_cmd                   (signal_int_dspin_cmd_l2g_d);
    499     int_wi_gate_d->p_dspin_rsp                   (signal_int_dspin_rsp_g2l_d);
    500 
    501     int_wt_gate_d->p_clk                         (this->p_clk);
    502     int_wt_gate_d->p_resetn                      (this->p_resetn);
    503     int_wt_gate_d->p_vci                         (signal_int_vci_g2l);
    504     int_wt_gate_d->p_dspin_cmd                   (signal_int_dspin_cmd_g2l_d);
    505     int_wt_gate_d->p_dspin_rsp                   (signal_int_dspin_rsp_l2g_d);
    506 
    507     ////////////////////// M2P DSPIN local crossbar coherence
    508     int_xbar_m2p_c->p_clk                        (this->p_clk);
    509     int_xbar_m2p_c->p_resetn                     (this->p_resetn);
    510     int_xbar_m2p_c->p_global_out                 (signal_int_dspin_m2p_l2g_c);
    511     int_xbar_m2p_c->p_global_in                  (signal_int_dspin_m2p_g2l_c);
    512     int_xbar_m2p_c->p_local_in[0]                (signal_int_dspin_m2p_memc);
    513     for (size_t p = 0; p < nb_procs; p++)
    514         int_xbar_m2p_c->p_local_out[p]           (signal_int_dspin_m2p_proc[p]);
    515 
    516     ////////////////////////// P2M DSPIN local crossbar coherence
    517     int_xbar_p2m_c->p_clk                        (this->p_clk);
    518     int_xbar_p2m_c->p_resetn                     (this->p_resetn);
    519     int_xbar_p2m_c->p_global_out                 (signal_int_dspin_p2m_l2g_c);
    520     int_xbar_p2m_c->p_global_in                  (signal_int_dspin_p2m_g2l_c);
    521     int_xbar_p2m_c->p_local_out[0]               (signal_int_dspin_p2m_memc);
    522     for (size_t p = 0; p < nb_procs; p++)
    523         int_xbar_p2m_c->p_local_in[p]            (signal_int_dspin_p2m_proc[p]);
    524 
    525     ////////////////////// CLACK DSPIN local crossbar coherence
    526     int_xbar_clack_c->p_clk                      (this->p_clk);
    527     int_xbar_clack_c->p_resetn                   (this->p_resetn);
    528     int_xbar_clack_c->p_global_out               (signal_int_dspin_clack_l2g_c);
    529     int_xbar_clack_c->p_global_in                (signal_int_dspin_clack_g2l_c);
    530     int_xbar_clack_c->p_local_in[0]              (signal_int_dspin_clack_memc);
    531     for (size_t p = 0; p < nb_procs; p++)
    532         int_xbar_clack_c->p_local_out[p]         (signal_int_dspin_clack_proc[p]);
    533 
    534486    //////////////////////////////////// Processors
    535487    for (size_t p = 0; p < nb_procs; p++)
     
    537489        proc[p]->p_clk                           (this->p_clk);
    538490        proc[p]->p_resetn                        (this->p_resetn);
     491
    539492        proc[p]->p_vci                           (signal_int_vci_ini_proc[p]);
    540493        proc[p]->p_dspin_m2p                     (signal_int_dspin_m2p_proc[p]);
    541494        proc[p]->p_dspin_p2m                     (signal_int_dspin_p2m_proc[p]);
    542         proc[p]->p_dspin_clack                   (signal_int_dspin_clack_proc[p]);
     495        proc[p]->p_dspin_clack                   (signal_int_dspin_cla_proc[p]);
    543496
    544497        for ( size_t j = 0 ; j < 6 ; j++)
     
    549502    }
    550503
     504    std::cout << "  - processors connected" << std::endl;
     505
    551506    ///////////////////////////////////// XICU
    552507    xicu->p_clk                                  (this->p_clk);
     
    563518        else                     xicu->p_hwi[i]  (signal_false);
    564519    }
     520
     521    std::cout << "  - xcu connected" << std::endl;
    565522
    566523    ///////////////////////////////////// MEMC
     
    571528    memc->p_dspin_p2m                            (signal_int_dspin_p2m_memc);
    572529    memc->p_dspin_m2p                            (signal_int_dspin_m2p_memc);
    573     memc->p_dspin_clack                          (signal_int_dspin_clack_memc);
     530    memc->p_dspin_clack                          (signal_int_dspin_cla_memc);
    574531    memc->p_irq                                  (signal_irq_memc);
    575532
     
    581538    memc_ram_wi->p_vci                           (signal_ram_vci_ini_memc);
    582539
     540    std::cout << "  - memc connected" << std::endl;
     541
    583542    //////////////////////////////////// XRAM
    584543    xram->p_clk                                  (this->p_clk);
     
    592551    xram_ram_wt->p_dspin_rsp                     (signal_ram_dspin_rsp_xram_t);
    593552    xram_ram_wt->p_vci                           (signal_ram_vci_tgt_xram);
     553
     554    std::cout << "  - xram connected" << std::endl;
    594555
    595556    /////////////////////////////////// GCD coprocessor
     
    633594    }
    634595
     596    std::cout << "  - coproc connected" << std::endl;
     597
    635598    /////////////////////////////////// CPY coprocessor
    636599    if ( coproc_type == MWR_COPROC_CPY )
     
    652615    }
    653616
    654     //////////////////////////// RAM network CMD & RSP routers
     617    //////////////////////////// RAM NETWORK ROUTERS
    655618    ram_router_cmd->p_clk                        (this->p_clk);
    656619    ram_router_cmd->p_resetn                     (this->p_resetn);
    657620    ram_router_rsp->p_clk                        (this->p_clk);
    658621    ram_router_rsp->p_resetn                     (this->p_resetn);
     622
    659623    for( size_t n=0 ; n<4 ; n++)
    660624    {
     
    678642       ram_router_rsp->p_out[4]                  (signal_ram_dspin_rsp_memc_i);
    679643    }
     644
     645    ///////////////////////////// INT NETWORK ROUTERS
     646    int_router_cmd->p_clk                        (this->p_clk);
     647    int_router_cmd->p_resetn                     (this->p_resetn);
     648    int_router_rsp->p_clk                        (this->p_clk);
     649    int_router_rsp->p_resetn                     (this->p_resetn);
     650    int_router_m2p->p_clk                        (this->p_clk);
     651    int_router_m2p->p_resetn                     (this->p_resetn);
     652    int_router_p2m->p_clk                        (this->p_clk);
     653    int_router_p2m->p_resetn                     (this->p_resetn);
     654    int_router_cla->p_clk                        (this->p_clk);
     655    int_router_cla->p_resetn                     (this->p_resetn);
     656
     657    // loop on N/S/E/W ports
     658    for (size_t i = 0; i < 4; i++)
     659    {
     660        int_router_cmd->p_out[i]                 (this->p_dspin_int_cmd_out[i]);
     661        int_router_cmd->p_in[i]                  (this->p_dspin_int_cmd_in[i]);
     662
     663        int_router_rsp->p_out[i]                 (this->p_dspin_int_rsp_out[i]);
     664        int_router_rsp->p_in[i]                  (this->p_dspin_int_rsp_in[i]);
     665
     666        int_router_m2p->p_out[i]                 (this->p_dspin_int_m2p_out[i]);
     667        int_router_m2p->p_in[i]                  (this->p_dspin_int_m2p_in[i]);
     668
     669        int_router_p2m->p_out[i]                 (this->p_dspin_int_p2m_out[i]);
     670        int_router_p2m->p_in[i]                  (this->p_dspin_int_p2m_in[i]);
     671
     672        int_router_cla->p_out[i]                 (this->p_dspin_int_cla_out[i]);
     673        int_router_cla->p_in[i]                  (this->p_dspin_int_cla_in[i]);
     674    }
     675
     676    int_router_cmd->p_out[4]                     (signal_int_dspin_cmd_g2l_d);
     677    int_router_cmd->p_in[4]                      (signal_int_dspin_cmd_l2g_d);
     678
     679    int_router_rsp->p_out[4]                     (signal_int_dspin_rsp_g2l_d);
     680    int_router_rsp->p_in[4]                      (signal_int_dspin_rsp_l2g_d);
     681
     682    int_router_m2p->p_out[4]                     (signal_int_dspin_m2p_g2l_c);
     683    int_router_m2p->p_in[4]                      (signal_int_dspin_m2p_l2g_c);
     684
     685    int_router_p2m->p_out[4]                     (signal_int_dspin_p2m_g2l_c);
     686    int_router_p2m->p_in[4]                      (signal_int_dspin_p2m_l2g_c);
     687
     688    int_router_cla->p_out[4]                     (signal_int_dspin_cla_g2l_c);
     689    int_router_cla->p_in[4]                      (signal_int_dspin_cla_l2g_c);
     690
     691    std::cout << "  - internal routers connected" << std::endl;
     692
     693
     694    ///////////////////// CMD DSPIN  local crossbar direct
     695    int_xbar_d->p_clk                            (this->p_clk);
     696    int_xbar_d->p_resetn                         (this->p_resetn);
     697    int_xbar_d->p_initiator_to_up                (signal_int_vci_l2g);
     698    int_xbar_d->p_target_to_up                   (signal_int_vci_g2l);
     699
     700    int_xbar_d->p_to_target[int_memc_tgt_id]     (signal_int_vci_tgt_memc);
     701    int_xbar_d->p_to_target[int_xicu_tgt_id]     (signal_int_vci_tgt_xicu);
     702    int_xbar_d->p_to_target[int_mwmr_tgt_id]     (signal_int_vci_tgt_mwmr);
     703    int_xbar_d->p_to_initiator[int_mwmr_ini_id]  (signal_int_vci_ini_mwmr);
     704    for (size_t p = 0; p < nb_procs; p++)
     705       int_xbar_d->p_to_initiator[int_proc_ini_id + p] (signal_int_vci_ini_proc[p]);
     706
     707    if ( is_io )
     708    {
     709       int_xbar_d->p_to_target[int_iobx_tgt_id]        (signal_int_vci_tgt_iobx);
     710       int_xbar_d->p_to_initiator[int_iobx_ini_id]     (signal_int_vci_ini_iobx);
     711    }
     712
     713    int_wi_gate_d->p_clk                         (this->p_clk);
     714    int_wi_gate_d->p_resetn                      (this->p_resetn);
     715    int_wi_gate_d->p_vci                         (signal_int_vci_l2g);
     716    int_wi_gate_d->p_dspin_cmd                   (signal_int_dspin_cmd_l2g_d);
     717    int_wi_gate_d->p_dspin_rsp                   (signal_int_dspin_rsp_g2l_d);
     718
     719    int_wt_gate_d->p_clk                         (this->p_clk);
     720    int_wt_gate_d->p_resetn                      (this->p_resetn);
     721    int_wt_gate_d->p_vci                         (signal_int_vci_g2l);
     722    int_wt_gate_d->p_dspin_cmd                   (signal_int_dspin_cmd_g2l_d);
     723    int_wt_gate_d->p_dspin_rsp                   (signal_int_dspin_rsp_l2g_d);
     724
     725    ////////////////////// M2P DSPIN local crossbar coherence
     726    int_xbar_m2p_c->p_clk                        (this->p_clk);
     727    int_xbar_m2p_c->p_resetn                     (this->p_resetn);
     728    int_xbar_m2p_c->p_global_out                 (signal_int_dspin_m2p_l2g_c);
     729    int_xbar_m2p_c->p_global_in                  (signal_int_dspin_m2p_g2l_c);
     730    int_xbar_m2p_c->p_local_in[0]                (signal_int_dspin_m2p_memc);
     731    for (size_t p = 0; p < nb_procs; p++)
     732        int_xbar_m2p_c->p_local_out[p]           (signal_int_dspin_m2p_proc[p]);
     733
     734    ////////////////////////// P2M DSPIN local crossbar coherence
     735    int_xbar_p2m_c->p_clk                        (this->p_clk);
     736    int_xbar_p2m_c->p_resetn                     (this->p_resetn);
     737    int_xbar_p2m_c->p_global_out                 (signal_int_dspin_p2m_l2g_c);
     738    int_xbar_p2m_c->p_global_in                  (signal_int_dspin_p2m_g2l_c);
     739    int_xbar_p2m_c->p_local_out[0]               (signal_int_dspin_p2m_memc);
     740    for (size_t p = 0; p < nb_procs; p++)
     741        int_xbar_p2m_c->p_local_in[p]            (signal_int_dspin_p2m_proc[p]);
     742
     743    ////////////////////// CLACK DSPIN local crossbar coherence
     744    int_xbar_clack_c->p_clk                      (this->p_clk);
     745    int_xbar_clack_c->p_resetn                   (this->p_resetn);
     746    int_xbar_clack_c->p_global_out               (signal_int_dspin_cla_l2g_c);
     747    int_xbar_clack_c->p_global_in                (signal_int_dspin_cla_g2l_c);
     748    int_xbar_clack_c->p_local_in[0]              (signal_int_dspin_cla_memc);
     749    for (size_t p = 0; p < nb_procs; p++)
     750        int_xbar_clack_c->p_local_out[p]         (signal_int_dspin_cla_proc[p]);
     751
    680752
    681753    ///////////////////////// IOB exists only in cluster_iob0 & cluster_iob1.
Note: See TracChangeset for help on using the changeset viewer.