Changeset 706 for trunk


Ignore:
Timestamp:
May 30, 2014, 5:07:05 PM (10 years ago)
Author:
meunier
Message:
  • Replaced vci_dspin_local_crossbar with a vci_local_crossbar in tsar_generic_xbar
  • Added the scripts/ directory in tsar_generic_xbar
Location:
trunk/platforms/tsar_generic_xbar
Files:
13 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/tsar_generic_xbar

    • Property svn:ignore set to
      term*

  • trunk/platforms/tsar_generic_xbar/top.cpp

    r663 r706  
    295295   // (Almos supports 32 bits physical addresses)
    296296
    297    #define CLUSTER_IO_INC  (cluster_io_id * (0x80000000ULL / (X_SIZE * Y_SIZE) * 2))
    298    #define MEMC_MAX_SIZE (0x40000000 / (X_SIZE * Y_SIZE))
     297   #define CLUSTER_INC (0x80000000ULL / (X_SIZE * Y_SIZE) * 2)
     298
     299   #define CLUSTER_IO_INC (cluster_io_id * CLUSTER_INC)
     300   #define MEMC_MAX_SIZE (0x40000000 / (X_SIZE * Y_SIZE)) // 0x40000000 : valeur totale souhaitée (ici : 1Go)
    299301
    300302   #define BROM_BASE    0x00BFC00000
    301    #define BROM_SIZE    0x0000100000   // 1 Mbytes
     303   #define BROM_SIZE    0x0000100000 // 1 Mbytes
    302304
    303305   #define MEMC_BASE    0x0000000000
    304306   #define MEMC_SIZE    min(0x04000000, MEMC_MAX_SIZE)
    305307
    306    #define XICU_BASE    MEMC_MAX_SIZE + (XICU_TGTID << 19)
    307    #define XICU_SIZE    0x0000001000   // 4 Kbytes
     308   #define XICU_BASE    (CLUSTER_INC >> 1) + (XICU_TGTID << 19)
     309   #define XICU_SIZE    0x0000001000 // 4 Kbytes
    308310   
    309    #define MDMA_BASE    MEMC_MAX_SIZE + (MDMA_TGTID << 19)
    310    #define MDMA_SIZE    (0x0000001000 * NB_DMA_CHANNELS)  // 4 Kbytes per channel 
    311 
    312    #define BDEV_BASE    MEMC_MAX_SIZE + (BDEV_TGTID << 19) + (CLUSTER_IO_INC)
    313    #define BDEV_SIZE    0x0000001000   // 4 Kbytes
    314 
    315    #define MTTY_BASE    MEMC_MAX_SIZE + (MTTY_TGTID << 19) + (CLUSTER_IO_INC)
    316    #define MTTY_SIZE    0x0000001000   // 4 Kbytes
    317 
    318    #define FBUF_BASE    MEMC_MAX_SIZE + (FBUF_TGTID << 19) + (CLUSTER_IO_INC)
     311   #define MDMA_BASE    (CLUSTER_INC >> 1) + (MDMA_TGTID << 19)
     312   #define MDMA_SIZE    (0x0000001000 * NB_DMA_CHANNELS) // 4 Kbytes per channel 
     313
     314   #define BDEV_BASE    (CLUSTER_INC >> 1) + (BDEV_TGTID << 19) + (CLUSTER_IO_INC)
     315   #define BDEV_SIZE    0x0000001000 // 4 Kbytes
     316
     317   #define MTTY_BASE    (CLUSTER_INC >> 1) + (MTTY_TGTID << 19) + (CLUSTER_IO_INC)
     318   #define MTTY_SIZE    0x0000001000 // 4 Kbytes
     319
     320   #define FBUF_BASE    (CLUSTER_INC >> 1) + (FBUF_TGTID << 19) + (CLUSTER_IO_INC)
    319321   #define FBUF_SIZE    (FBUF_X_SIZE * FBUF_Y_SIZE * 2) // Should be 0x80000
    320322
    321    #define MNIC_BASE    MEMC_MAX_SIZE + (MNIC_TGTID << 19) + (CLUSTER_IO_INC)
     323   #define MNIC_BASE    (CLUSTER_INC >> 1) + (MNIC_TGTID << 19) + (CLUSTER_IO_INC)
    322324   #define MNIC_SIZE    0x0000080000
    323325
    324    #define CDMA_BASE    MEMC_MAX_SIZE + (CDMA_TGTID << 19) + (CLUSTER_IO_INC)
     326   #define CDMA_BASE    (CLUSTER_INC >> 1) + (CDMA_TGTID << 19) + (CLUSTER_IO_INC)
    325327   #define CDMA_SIZE    (0x0000004000 * NB_CMA_CHANNELS)
    326328
    327    #define SIMH_BASE    MEMC_MAX_SIZE + (SIMH_TGTID << 19) + (CLUSTER_IO_INC)
     329   #define SIMH_BASE    (CLUSTER_INC >> 1) + (SIMH_TGTID << 19) + (CLUSTER_IO_INC)
    328330   #define SIMH_SIZE    0x0000001000
    329331#endif
     
    754756                L1_DWAYS,
    755757                L1_DSETS,
     758                IRQ_PER_PROCESSOR,
    756759                XRAM_LATENCY,
    757760                (cluster(x,y) == cluster_io_id),
     
    979982            std::ostringstream m2p_signame;
    980983            m2p_signame << "[SIG]PROC_" << x << "_" << y << "_" << l << " M2P" ;
    981             std::ostringstream p_cmd_signame;
    982             p_cmd_signame << "[SIG]PROC_" << x << "_" << y << "_" << l << " CMD" ;
    983             std::ostringstream p_rsp_signame;
    984             p_rsp_signame << "[SIG]PROC_" << x << "_" << y << "_" << l << " RSP" ;
    985 
    986             //clusters[x][y]->wi_proc[l]->print_trace();
     984
    987985            //clusters[x][y]->signal_vci_ini_proc[l].print_trace(proc_signame.str());
    988986            //clusters[x][y]->signal_dspin_p2m_proc[l].print_trace(p2m_signame.str());
    989987            //clusters[x][y]->signal_dspin_m2p_proc[l].print_trace(m2p_signame.str());
    990             //clusters[x][y]->signal_dspin_cmd_proc_i[l].print_trace(p_cmd_signame.str());
    991             //clusters[x][y]->signal_dspin_rsp_proc_i[l].print_trace(p_rsp_signame.str());
    992 
    993             //clusters[x][y]->xbar_rsp_d->print_trace();
    994             //clusters[x][y]->xbar_cmd_d->print_trace();
     988
    995989            //clusters[x][y]->signal_dspin_cmd_l2g_d.print_trace("[SIG]L2G CMD");
    996990            //clusters[x][y]->signal_dspin_cmd_g2l_d.print_trace("[SIG]G2L CMD");
     
    10101004            std::ostringstream sp2m;
    10111005            sp2m << "[SIG]MEMC_" << x << "_" << y << " P2M" ;
    1012             std::ostringstream m_cmd_signame;
    1013             m_cmd_signame << "[SIG]MEMC_" << x << "_" << y <<  " CMD" ;
    1014             std::ostringstream m_rsp_signame;
    1015             m_rsp_signame << "[SIG]MEMC_" << x << "_" << y <<  " RSP" ;
    10161006
    10171007            //clusters[x][y]->memc->print_trace();
    1018             //clusters[x][y]->wt_memc->print_trace();
    10191008            //clusters[x][y]->signal_vci_tgt_memc.print_trace(smemc.str());
    10201009            //clusters[x][y]->signal_vci_xram.print_trace(sxram.str());
    10211010            //clusters[x][y]->signal_dspin_p2m_memc.print_trace(sp2m.str());
    10221011            //clusters[x][y]->signal_dspin_m2p_memc.print_trace(sm2p.str());
    1023             //clusters[x][y]->signal_dspin_cmd_memc_t.print_trace(m_cmd_signame.str());
    1024             //clusters[x][y]->signal_dspin_rsp_memc_t.print_trace(m_rsp_signame.str());
    10251012
    10261013            // trace replicated peripherals
     
    10351022
    10361023            //clusters[io_x][io_y]->brom->print_trace();
    1037             //clusters[io_x][io_y]->wt_brom->print_trace();
    10381024            //clusters[io_x][io_y]->signal_vci_tgt_brom.print_trace("[SIG]BROM");
    1039             //clusters[io_x][io_y]->signal_dspin_cmd_brom_t.print_trace("[SIG]BROM CMD");
    1040             //clusters[io_x][io_y]->signal_dspin_rsp_brom_t.print_trace("[SIG]BROM RSP");
    10411025
    10421026            //clusters[io_x][io_y]->bdev->print_trace();
     
    10931077         ms1 = (uint64_t) t1.tv_sec * 1000ULL + (uint64_t) t1.tv_usec / 1000;
    10941078         ms2 = (uint64_t) t2.tv_sec * 1000ULL + (uint64_t) t2.tv_usec / 1000;
    1095          std::cerr << "cycle " << n << " platform clock frequency " << (double) nb_cycles / (double) (ms2 - ms1) << "Khz" << std::endl;
     1079         std::cerr << std::dec << "cycle " << n << " platform clock frequency " << (double) nb_cycles / (double) (ms2 - ms1) << "Khz" << std::endl;
    10961080      }
    10971081   }
  • trunk/platforms/tsar_generic_xbar/top.desc

    r548 r706  
    77
    88vci_plen_size       = 8
    9 vci_addr_size       = 40
     9vci_addr_size       = 32
    1010vci_rerror_size     = 1
    1111vci_clen_size       = 1
     
    2222todo = Platform('caba', 'top.cpp',
    2323
    24         uses = [
     24    uses = [
    2525            Uses('caba:tsar_xbar_cluster',
    2626                  vci_data_width_int = vci_cell_size_int,
     
    2929                  dspin_rsp_width    = dspin_rsp_flit_size),
    3030
    31                 Uses('common:elf_file_loader'),
     31            Uses('common:elf_file_loader'),
    3232            Uses('common:plain_file_loader'),
    3333           ],
     
    3535    # default VCI parameters (global variables)
    3636    cell_size   = vci_cell_size_int, 
    37         plen_size   = vci_plen_size,
    38         addr_size   = vci_addr_size,
    39         rerror_size = vci_rerror_size,
    40         clen_size   = vci_clen_size,
    41         rflag_size  = vci_rflag_size,
    42         srcid_size  = vci_srcid_size,
    43         pktid_size  = vci_pktid_size,
    44         trdid_size  = vci_trdid_size,
    45         wrplen_size = vci_wrplen_size,
     37    plen_size   = vci_plen_size,
     38    addr_size   = vci_addr_size,
     39    rerror_size = vci_rerror_size,
     40    clen_size   = vci_clen_size,
     41    rflag_size  = vci_rflag_size,
     42    srcid_size  = vci_srcid_size,
     43    pktid_size  = vci_pktid_size,
     44    trdid_size  = vci_trdid_size,
     45    wrplen_size = vci_wrplen_size,
    4646)
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/metadata/tsar_xbar_cluster.sd

    r547 r706  
    33
    44Module('caba:tsar_xbar_cluster',
    5     classname = 'soclib::caba::TsarXbarCluster',
     5   classname = 'soclib::caba::TsarXbarCluster',
    66   tmpl_parameters = [
    77      parameter.Int('dspin_cmd_width'),
     
    4747
    4848      Uses('caba:vci_xicu',
     49              cell_size       = parameter.Reference('vci_data_width_int')),
     50
     51      Uses('caba:vci_local_crossbar',
    4952              cell_size       = parameter.Reference('vci_data_width_int')),
    5053
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/include/tsar_xbar_cluster.h

    r624 r706  
    2424#include "vci_xicu.h"
    2525#include "dspin_local_crossbar.h"
     26#include "vci_local_crossbar.h"
    2627#include "vci_dspin_initiator_wrapper.h"
    2728#include "vci_dspin_target_wrapper.h"
     
    3637#include "vci_cc_vcache_wrapper.h"
    3738#include "vci_simhelper.h"
    38 #include "../../../../giet_vm/hard_config.h"
    3939
    4040namespace soclib { namespace caba {
     
    6363    // interrupt signals
    6464    sc_signal<bool>         signal_false;
    65     sc_signal<bool>         signal_proc_it[8*IRQ_PER_PROCESSOR];
     65    sc_signal<bool>         signal_proc_it[8 * 6]; // 6 = Number of IRQs in the MIPS
    6666    sc_signal<bool>         signal_irq_mdma[8];
    6767    sc_signal<bool>         signal_irq_mtty[23];
     
    8585
    8686    // Direct VCI signals to VCI/DSPIN wrappers
     87    VciSignals<vci_param_int>       signal_vci_g2l_d;
     88    VciSignals<vci_param_int>       signal_vci_l2g_d;
     89
    8790    VciSignals<vci_param_int>       signal_vci_ini_proc[8];
    8891    VciSignals<vci_param_int>       signal_vci_ini_mdma;
     
    101104    VciSignals<vci_param_int>       signal_vci_tgt_simh;
    102105
    103     // Direct DSPIN signals to local crossbars
    104     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_proc_i[8];
    105     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_proc_i[8];
    106     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mdma_i;
    107     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mdma_i;
    108     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_bdev_i;
    109     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_bdev_i;
    110     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_chbuf_i;
    111     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_chbuf_i;
    112 
    113     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_memc_t;
    114     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_memc_t;
    115     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_xicu_t;
    116     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_xicu_t;
    117     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mdma_t;
    118     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mdma_t;
    119     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mtty_t;
    120     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mtty_t;
    121     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_bdev_t;
    122     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_bdev_t;
    123     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_brom_t;
    124     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_brom_t;
    125     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_fbuf_t;
    126     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_fbuf_t;
    127     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mnic_t;
    128     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mnic_t;
    129     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_chbuf_t;
    130     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_chbuf_t;
    131     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_simh_t;
    132     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_simh_t;
    133106
    134107    // Coherence DSPIN signals to local crossbar
     
    150123                       GdbServer<Mips32ElIss> >*  proc[8];
    151124
    152     VciDspinInitiatorWrapper<vci_param_int,
    153                              dspin_cmd_width,
    154                              dspin_rsp_width>*    wi_proc[8];
    155125
    156126    VciMemCache<vci_param_int,
     
    159129                dspin_cmd_width>*                 memc;
    160130
     131    VciXicu<vci_param_int>*                       xicu;
     132
     133    VciMultiDma<vci_param_int>*                   mdma;
     134
     135    VciSimpleRam<vci_param_ext>*                  xram;
     136
     137    VciSimpleRom<vci_param_int>*                  brom;
     138
     139    VciMultiTty<vci_param_int>*                   mtty;
     140
     141    VciSimhelper<vci_param_int>*                  simhelper;
     142
     143    VciFrameBuffer<vci_param_int>*                fbuf;
     144
     145    VciMultiNic<vci_param_int>*                  mnic;
     146
     147    VciChbufDma<vci_param_int>*                   chbuf;
     148
     149    VciBlockDeviceTsar<vci_param_int>*            bdev;
     150
     151    VciLocalCrossbar<vci_param_int>*              xbar_d;
     152    VciDspinInitiatorWrapper<vci_param_int,
     153                             dspin_cmd_width,
     154                             dspin_rsp_width>*    wi_xbar_d;
    161155    VciDspinTargetWrapper<vci_param_int,
    162156                          dspin_cmd_width,
    163                           dspin_rsp_width>*       wt_memc;
    164 
    165     VciXicu<vci_param_int>*                       xicu;
    166 
    167     VciDspinTargetWrapper<vci_param_int,
    168                           dspin_cmd_width,
    169                           dspin_rsp_width>*       wt_xicu;
    170 
    171     VciMultiDma<vci_param_int>*                   mdma;
    172 
    173     VciDspinInitiatorWrapper<vci_param_int,
    174                              dspin_cmd_width,
    175                              dspin_rsp_width>*    wi_mdma;
    176 
    177     VciDspinTargetWrapper<vci_param_int,
    178                           dspin_cmd_width,
    179                           dspin_rsp_width>*       wt_mdma;
    180 
    181     VciSimpleRam<vci_param_ext>*                  xram;
    182 
    183     VciSimpleRom<vci_param_int>*                  brom;
    184 
    185     VciDspinTargetWrapper<vci_param_int,
    186                           dspin_cmd_width,
    187                           dspin_rsp_width>*       wt_brom;
    188 
    189     VciMultiTty<vci_param_int>*                   mtty;
    190 
    191     VciDspinTargetWrapper<vci_param_int,
    192                           dspin_cmd_width,
    193                           dspin_rsp_width>*       wt_mtty;
    194 
    195     VciSimhelper<vci_param_int>*                  simhelper;
    196 
    197     VciDspinTargetWrapper<vci_param_int,
    198                           dspin_cmd_width,
    199                           dspin_rsp_width>*       wt_simhelper;
    200 
    201 
    202     VciFrameBuffer<vci_param_int>*                fbuf;
    203 
    204     VciDspinTargetWrapper<vci_param_int,
    205                           dspin_cmd_width,
    206                           dspin_rsp_width>*       wt_fbuf;
    207 
    208     VciMultiNic<vci_param_int>*                   mnic;
    209 
    210     VciDspinTargetWrapper<vci_param_int,
    211                           dspin_cmd_width,
    212                           dspin_rsp_width>*       wt_mnic;
    213 
    214     VciChbufDma<vci_param_int>*                   chbuf;
    215 
    216     VciDspinTargetWrapper<vci_param_int,
    217                           dspin_cmd_width,
    218                           dspin_rsp_width>*       wt_chbuf;
    219 
    220     VciDspinInitiatorWrapper<vci_param_int,
    221                           dspin_cmd_width,
    222                           dspin_rsp_width>*       wi_chbuf;
    223 
    224     VciBlockDeviceTsar<vci_param_int>*            bdev;
    225 
    226     VciDspinInitiatorWrapper<vci_param_int,
    227                              dspin_cmd_width,
    228                              dspin_rsp_width>*    wi_bdev;
    229 
    230     VciDspinTargetWrapper<vci_param_int,
    231                           dspin_cmd_width,
    232                           dspin_rsp_width>*       wt_bdev;
    233 
    234     DspinLocalCrossbar<dspin_cmd_width>*          xbar_cmd_d;
    235     DspinLocalCrossbar<dspin_rsp_width>*          xbar_rsp_d;
     157                          dspin_rsp_width>*       wt_xbar_d;
     158
    236159    DspinLocalCrossbar<dspin_cmd_width>*          xbar_m2p_c;
    237160    DspinLocalCrossbar<dspin_rsp_width>*          xbar_p2m_c;
     
    269192                     size_t                             l1_d_ways,
    270193                     size_t                             l1_d_sets,
     194                     size_t                             irq_per_processor,
    271195                     size_t                             xram_latency,  // external ram
    272196                     bool                               io,            // I/O cluster
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp

    r624 r706  
    6666         size_t                             l1_d_ways,
    6767         size_t                             l1_d_sets,
     68         size_t                             irq_per_processor,
    6869         size_t                             xram_latency,
    6970         bool                               io,
     
    7778         uint32_t                           nic_timeout,
    7879         size_t                             chbufdma_channels,
    79          const Loader                      &loader,
     80         const Loader &                     loader,
    8081         uint32_t                           frozen_cycles,
    8182         uint32_t                           debug_start_cycle,
     
    127128                      proc_debug_ok);
    128129
    129         std::ostringstream swip;
    130         swip << "wi_proc_" << x_id << "_" << y_id << "_" << p;
    131         wi_proc[p] = new VciDspinInitiatorWrapper<vci_param_int,
    132                                                   dspin_cmd_width,
    133                                                   dspin_rsp_width>(
    134                      swip.str().c_str(),
    135                      x_width + y_width + l_width);
    136130    }
    137131
     
    148142                     IntTab(cluster_id),                 // SRCID external space
    149143                     IntTab(cluster_id, tgtid_memc),     // TGTID direct space
     144                     //(cluster_id << l_width) + nb_procs, // CC_GLOBAL_ID
    150145                     x_width,                            // Number of x bits in platform
    151146                     y_width,                            // Number of y bits in platform
     
    159154                     memc_debug_ok);
    160155
    161     wt_memc = new VciDspinTargetWrapper<vci_param_int,
    162                                         dspin_cmd_width,
    163                                         dspin_rsp_width>(
    164                      "wt_memc",
    165                      x_width + y_width + l_width);
    166156
    167157    /////////////////////////////////////////////////////////////////////////////
     
    182172                     mtd,                               // mapping table
    183173                     IntTab(cluster_id, tgtid_xicu),    // TGTID_D
    184                      32,                                // number of timer IRQs
     174                     nb_procs,                          // number of timer IRQs
    185175                     32,                                // number of hard IRQs
    186176                     32,                                // number of soft IRQs
    187                      nb_procs*IRQ_PER_PROCESSOR);       // number of output IRQs
    188 
    189     wt_xicu = new VciDspinTargetWrapper<vci_param_int,
    190                                         dspin_cmd_width,
    191                                         dspin_rsp_width>(
    192                      "wt_xicu",
    193                      x_width + y_width + l_width);
     177                     nb_procs*irq_per_processor);                         // number of output IRQs
     178
    194179
    195180    /////////////////////////////////////////////////////////////////////////////
     
    204189                     nb_dmas);                            // number of IRQs
    205190
    206     wt_mdma = new VciDspinTargetWrapper<vci_param_int,
    207                                         dspin_cmd_width,
    208                                         dspin_rsp_width>(
    209                      "wt_mdma",
    210                      x_width + y_width + l_width);
    211 
    212     wi_mdma = new VciDspinInitiatorWrapper<vci_param_int,
    213                                            dspin_cmd_width,
    214                                            dspin_rsp_width>(
    215                      "wi_mdma",
    216                      x_width + y_width + l_width);
    217191
    218192    /////////////////////////////////////////////////////////////////////////////
     
    225199    }
    226200
    227     xbar_cmd_d = new DspinLocalCrossbar<dspin_cmd_width>(
    228                      "xbar_cmd_d",
    229                      mtd,                          // mapping table
    230                      x_id, y_id,                   // cluster coordinates
    231                      x_width, y_width, l_width,
    232                      nb_direct_initiators,         // number of local of sources
    233                      nb_direct_targets,            // number of local dests
    234                      2, 2,                         // fifo depths 
    235                      true,                         // CMD
    236                      true,                         // use local routing table
    237                      false );                      // no broadcast
    238 
    239     /////////////////////////////////////////////////////////////////////////////
    240     xbar_rsp_d = new DspinLocalCrossbar<dspin_rsp_width>(
    241                      "xbar_rsp_d",
    242                      mtd,                          // mapping table
    243                      x_id, y_id,                   // cluster coordinates
    244                      x_width, y_width, l_width,
    245                      nb_direct_targets,            // number of local sources
    246                      nb_direct_initiators,         // number of local dests
    247                      2, 2,                         // fifo depths 
    248                      false,                        // RSP
    249                      false,                        // don't use local routing table
    250                      false );                      // no broadcast
     201    std::ostringstream sxbar;
     202    sxbar << "xbar_" << x_id << "_" << y_id;
     203    xbar_d = new VciLocalCrossbar<vci_param_int>(
     204                     sxbar.str().c_str(),
     205                     mtd,                             // mapping table
     206                     //x_id, y_id,                    // cluster coordinates
     207                     cluster_id,
     208                     nb_direct_initiators,            // number of local of sources
     209                     nb_direct_targets,               // number of local dests
     210                     tgtid_memc);                     // Default target
     211
     212    ////////////// vci_dspin wrappers
     213    std::ostringstream swtxbar;
     214    swtxbar << "wt_xbar_" << x_id << "_" << y_id;
     215    wt_xbar_d = new VciDspinTargetWrapper<vci_param_int, dspin_cmd_width, dspin_rsp_width>(
     216                swtxbar.str().c_str(),
     217                x_width + y_width + l_width );
     218
     219    std::ostringstream swixbar;
     220    swixbar << "wi_xbar_" << x_id << "_" << y_id;
     221    wi_xbar_d = new VciDspinInitiatorWrapper<vci_param_int, dspin_cmd_width, dspin_rsp_width>(
     222                swixbar.str().c_str(),
     223                x_width + y_width + l_width );
    251224
    252225    /////////////////////////////////////////////////////////////////////////////
     
    315288                     loader);
    316289
    317         wt_brom = new VciDspinTargetWrapper<vci_param_int,
    318                                             dspin_cmd_width,
    319                                             dspin_rsp_width>(
    320                      "wt_brom",
    321                      x_width + y_width + l_width);
    322 
    323290        /////////////////////////////////////////////
    324291        fbuf = new VciFrameBuffer<vci_param_int>(
     
    327294                     mtd,
    328295                     xfb, yfb);
    329 
    330         wt_fbuf = new VciDspinTargetWrapper<vci_param_int,
    331                                             dspin_cmd_width,
    332                                             dspin_rsp_width>(
    333                      "wt_fbuf",
    334                      x_width + y_width + l_width);
    335296
    336297        /////////////////////////////////////////////
     
    343304                     block_size,
    344305                     64);            // burst size
    345 
    346         wt_bdev = new VciDspinTargetWrapper<vci_param_int,
    347                                             dspin_cmd_width,
    348                                             dspin_rsp_width>(
    349                      "wt_bdev",
    350                      x_width + y_width + l_width);
    351 
    352         wi_bdev = new VciDspinInitiatorWrapper<vci_param_int,
    353                                                dspin_cmd_width,
    354                                                dspin_rsp_width>(
    355                      "wi_bdev",
    356                      x_width + y_width + l_width);
    357306
    358307        int mac = 0xBEEF0000;
     
    367316                     nic_tx_name);
    368317
    369         wt_mnic = new VciDspinTargetWrapper<vci_param_int,
    370                                            dspin_cmd_width,
    371                                            dspin_rsp_width>(
    372                     "wt_mnic",
    373                     x_width + y_width + l_width);
     318
    374319
    375320        /////////////////////////////////////////////
     
    382327                     chbufdma_channels);
    383328
    384         wt_chbuf = new VciDspinTargetWrapper<vci_param_int,
    385                                             dspin_cmd_width,
    386                                             dspin_rsp_width>(
    387                      "wt_chbuf",
    388                      x_width + y_width + l_width);
    389 
    390         wi_chbuf = new VciDspinInitiatorWrapper<vci_param_int,
    391                                             dspin_cmd_width,
    392                                             dspin_rsp_width>(
    393                      "wi_chbuf",
    394                      x_width + y_width + l_width);
    395 
    396329        /////////////////////////////////////////////
    397330        std::vector<std::string> vect_names;
     
    408341                     vect_names);
    409342
    410         wt_mtty = new VciDspinTargetWrapper<vci_param_int,
    411                                             dspin_cmd_width,
    412                                             dspin_rsp_width>(
    413                      "wt_mtty",
    414                      x_width + y_width + l_width);
    415 
    416343        simhelper = new VciSimhelper<vci_param_int>(
    417344                     "sim_helper",
    418345                     IntTab(cluster_id, tgtid_simh),
    419346                     mtd);
    420 
    421         wt_simhelper = new VciDspinTargetWrapper<vci_param_int,
    422                                                  dspin_cmd_width,
    423                                                  dspin_rsp_width>(
    424                      "wt_simhelper",
    425                      x_width + y_width + l_width);
    426347    }
    427348
     
    466387    std::cout << "  - CMD & RSP routers connected" << std::endl;
    467388
    468     ///////////////////// CMD DSPIN  local crossbar direct
    469     xbar_cmd_d->p_clk                            (this->p_clk);
    470     xbar_cmd_d->p_resetn                         (this->p_resetn);
    471     xbar_cmd_d->p_global_out                     (signal_dspin_cmd_l2g_d);
    472     xbar_cmd_d->p_global_in                      (signal_dspin_cmd_g2l_d);
    473 
    474     xbar_cmd_d->p_local_out[tgtid_memc]          (signal_dspin_cmd_memc_t);
    475     xbar_cmd_d->p_local_out[tgtid_xicu]          (signal_dspin_cmd_xicu_t);
    476     xbar_cmd_d->p_local_out[tgtid_mdma]          (signal_dspin_cmd_mdma_t);
    477 
    478     xbar_cmd_d->p_local_in[nb_procs]             (signal_dspin_cmd_mdma_i);
     389    wi_xbar_d->p_clk                         (this->p_clk);
     390    wi_xbar_d->p_resetn                      (this->p_resetn);
     391    wi_xbar_d->p_vci                         (signal_vci_l2g_d);
     392    wi_xbar_d->p_dspin_cmd                   (signal_dspin_cmd_l2g_d);
     393    wi_xbar_d->p_dspin_rsp                   (signal_dspin_rsp_g2l_d);
     394
     395    std::cout << "  - Wrapper Ini VCI2DSPIN Direct connected" << std::endl;
     396
     397    wt_xbar_d->p_clk                         (this->p_clk);
     398    wt_xbar_d->p_resetn                      (this->p_resetn);
     399    wt_xbar_d->p_vci                         (signal_vci_g2l_d);
     400    wt_xbar_d->p_dspin_cmd                   (signal_dspin_cmd_g2l_d);
     401    wt_xbar_d->p_dspin_rsp                   (signal_dspin_rsp_l2g_d);
     402
     403    std::cout << "  - Wrapper Tgt VCI2DSPIN Direct connected" << std::endl;
     404
     405    ///////////////////// CMD VCI  local crossbar direct
     406    xbar_d->p_clk                            (this->p_clk);
     407    xbar_d->p_resetn                         (this->p_resetn);
     408    xbar_d->p_target_to_up                   (signal_vci_g2l_d);
     409    xbar_d->p_initiator_to_up                (signal_vci_l2g_d);
     410
     411    xbar_d->p_to_target[tgtid_memc]          (signal_vci_tgt_memc);
     412    xbar_d->p_to_target[tgtid_xicu]          (signal_vci_tgt_xicu);
     413    xbar_d->p_to_target[tgtid_mdma]          (signal_vci_tgt_mdma);
     414
     415    xbar_d->p_to_initiator[nb_procs]         (signal_vci_ini_mdma);
    479416
    480417    for (size_t p = 0; p < nb_procs; p++)
    481         xbar_cmd_d->p_local_in[p]                (signal_dspin_cmd_proc_i[p]);
     418        xbar_d->p_to_initiator[p]            (signal_vci_ini_proc[p]);
    482419
    483420    if (io)
    484421    {
    485         xbar_cmd_d->p_local_out[tgtid_mtty]      (signal_dspin_cmd_mtty_t);
    486         xbar_cmd_d->p_local_out[tgtid_brom]      (signal_dspin_cmd_brom_t);
    487         xbar_cmd_d->p_local_out[tgtid_bdev]      (signal_dspin_cmd_bdev_t);
    488         xbar_cmd_d->p_local_out[tgtid_fbuf]      (signal_dspin_cmd_fbuf_t);
    489         xbar_cmd_d->p_local_out[tgtid_mnic]      (signal_dspin_cmd_mnic_t);
    490         xbar_cmd_d->p_local_out[tgtid_chbuf]     (signal_dspin_cmd_chbuf_t);
    491         xbar_cmd_d->p_local_out[tgtid_simh]      (signal_dspin_cmd_simh_t);
    492 
    493         xbar_cmd_d->p_local_in[nb_procs + 1]     (signal_dspin_cmd_bdev_i);
    494         xbar_cmd_d->p_local_in[nb_procs + 2]     (signal_dspin_cmd_chbuf_i);
    495     }
    496 
    497     std::cout << "  - Command Direct crossbar connected" << std::endl;
    498 
    499     //////////////////////// RSP DSPIN  local crossbar direct
    500     xbar_rsp_d->p_clk                            (this->p_clk);
    501     xbar_rsp_d->p_resetn                         (this->p_resetn);
    502     xbar_rsp_d->p_global_out                     (signal_dspin_rsp_l2g_d);
    503     xbar_rsp_d->p_global_in                      (signal_dspin_rsp_g2l_d);
    504 
    505     xbar_rsp_d->p_local_in[tgtid_memc]           (signal_dspin_rsp_memc_t);
    506     xbar_rsp_d->p_local_in[tgtid_xicu]           (signal_dspin_rsp_xicu_t);
    507     xbar_rsp_d->p_local_in[tgtid_mdma]           (signal_dspin_rsp_mdma_t);
    508 
    509     xbar_rsp_d->p_local_out[nb_procs]            (signal_dspin_rsp_mdma_i);
    510 
    511     for (size_t p = 0; p < nb_procs; p++)
    512         xbar_rsp_d->p_local_out[p]               (signal_dspin_rsp_proc_i[p]);
    513 
    514     if (io)
    515     {
    516         xbar_rsp_d->p_local_in[tgtid_mtty]       (signal_dspin_rsp_mtty_t);
    517         xbar_rsp_d->p_local_in[tgtid_brom]       (signal_dspin_rsp_brom_t);
    518         xbar_rsp_d->p_local_in[tgtid_bdev]       (signal_dspin_rsp_bdev_t);
    519         xbar_rsp_d->p_local_in[tgtid_fbuf]       (signal_dspin_rsp_fbuf_t);
    520         xbar_rsp_d->p_local_in[tgtid_mnic]       (signal_dspin_rsp_mnic_t);
    521         xbar_rsp_d->p_local_in[tgtid_chbuf]      (signal_dspin_rsp_chbuf_t);
    522         xbar_rsp_d->p_local_in[tgtid_simh]       (signal_dspin_rsp_simh_t);
    523 
    524         xbar_rsp_d->p_local_out[nb_procs + 1]    (signal_dspin_rsp_bdev_i);
    525         xbar_rsp_d->p_local_out[nb_procs + 2]    (signal_dspin_rsp_chbuf_i);
    526     }
    527 
    528     std::cout << "  - Response Direct crossbar connected" << std::endl;
     422        xbar_d->p_to_target[tgtid_mtty]      (signal_vci_tgt_mtty);
     423        xbar_d->p_to_target[tgtid_brom]      (signal_vci_tgt_brom);
     424        xbar_d->p_to_target[tgtid_bdev]      (signal_vci_tgt_bdev);
     425        xbar_d->p_to_target[tgtid_fbuf]      (signal_vci_tgt_fbuf);
     426        xbar_d->p_to_target[tgtid_mnic]      (signal_vci_tgt_mnic);
     427        xbar_d->p_to_target[tgtid_chbuf]     (signal_vci_tgt_chbuf);
     428        xbar_d->p_to_target[tgtid_simh]      (signal_vci_tgt_simh);
     429
     430        xbar_d->p_to_initiator[nb_procs + 1] (signal_vci_ini_bdev);
     431        xbar_d->p_to_initiator[nb_procs + 2] (signal_vci_ini_chbuf);
     432    }
     433
     434    std::cout << "  - Direct crossbar connected" << std::endl;
    529435
    530436    ////////////////////// M2P DSPIN local crossbar coherence
     
    572478        proc[p]->p_dspin_clack              (signal_dspin_clack_proc[p]);
    573479
    574         for ( size_t i = 0 ; i < IRQ_PER_PROCESSOR ; i++)
    575         {
    576             proc[p]->p_irq[i]               (signal_proc_it[p*IRQ_PER_PROCESSOR+i]);
    577         }
    578         for ( size_t j = IRQ_PER_PROCESSOR ; j < 6 ; j++)
     480        for ( size_t i = 0; i < irq_per_processor; i++)
     481        {
     482            proc[p]->p_irq[i]               (signal_proc_it[p*irq_per_processor + i]);
     483        }
     484        for ( size_t j = irq_per_processor; j < 6; j++) // 6 = number of irqs in the MIPS
    579485        {
    580486            proc[p]->p_irq[j]               (signal_false);
    581487        }
    582488
    583         wi_proc[p]->p_clk                   (this->p_clk);
    584         wi_proc[p]->p_resetn                (this->p_resetn);
    585         wi_proc[p]->p_dspin_cmd             (signal_dspin_cmd_proc_i[p]);
    586         wi_proc[p]->p_dspin_rsp             (signal_dspin_rsp_proc_i[p]);
    587         wi_proc[p]->p_vci                   (signal_vci_ini_proc[p]);
    588489    }
    589490
     
    594495    xicu->p_resetn                     (this->p_resetn);
    595496    xicu->p_vci                        (signal_vci_tgt_xicu);
    596 
    597     for (size_t i = 0; i < nb_procs*IRQ_PER_PROCESSOR; i++)
    598     {
    599         xicu->p_irq[i]                       (signal_proc_it[i]);
     497    for (size_t p = 0; p < nb_procs * irq_per_processor; p++)
     498    {
     499        xicu->p_irq[p]                 (signal_proc_it[p]);
    600500    }
    601501    for (size_t i = 0; i < 32; i++)
     
    620520        }
    621521    }
    622 
    623     // wrapper XICU
    624     wt_xicu->p_clk                     (this->p_clk);
    625     wt_xicu->p_resetn                  (this->p_resetn);
    626     wt_xicu->p_dspin_cmd               (signal_dspin_cmd_xicu_t);
    627     wt_xicu->p_dspin_rsp               (signal_dspin_rsp_xicu_t);
    628     wt_xicu->p_vci                     (signal_vci_tgt_xicu);
    629522
    630523    std::cout << "  - XICU connected" << std::endl;
     
    640533    memc->p_dspin_clack                (signal_dspin_clack_memc);
    641534
    642     // wrapper MEMC
    643     wt_memc->p_clk                     (this->p_clk);
    644     wt_memc->p_resetn                  (this->p_resetn);
    645     wt_memc->p_dspin_cmd               (signal_dspin_cmd_memc_t);
    646     wt_memc->p_dspin_rsp               (signal_dspin_rsp_memc_t);
    647     wt_memc->p_vci                     (signal_vci_tgt_memc);
    648 
    649535    std::cout << "  - MEMC connected" << std::endl;
    650536
     
    664550        mdma->p_irq[i]                 (signal_irq_mdma[i]);
    665551
    666     // wrapper tgt MDMA
    667     wt_mdma->p_clk                     (this->p_clk);
    668     wt_mdma->p_resetn                  (this->p_resetn);
    669     wt_mdma->p_dspin_cmd               (signal_dspin_cmd_mdma_t);
    670     wt_mdma->p_dspin_rsp               (signal_dspin_rsp_mdma_t);
    671     wt_mdma->p_vci                     (signal_vci_tgt_mdma);
    672 
    673     // wrapper ini MDMA
    674     wi_mdma->p_clk                     (this->p_clk);
    675     wi_mdma->p_resetn                  (this->p_resetn);
    676     wi_mdma->p_dspin_cmd               (signal_dspin_cmd_mdma_i);
    677     wi_mdma->p_dspin_rsp               (signal_dspin_rsp_mdma_i);
    678     wi_mdma->p_vci                     (signal_vci_ini_mdma);
    679 
    680552    std::cout << "  - MDMA connected" << std::endl;
    681553
     
    691563        bdev->p_vci_initiator          (signal_vci_ini_bdev);
    692564
    693         // wrapper tgt BDEV
    694         wt_bdev->p_clk                 (this->p_clk);
    695         wt_bdev->p_resetn              (this->p_resetn);
    696         wt_bdev->p_dspin_cmd           (signal_dspin_cmd_bdev_t);
    697         wt_bdev->p_dspin_rsp           (signal_dspin_rsp_bdev_t);
    698         wt_bdev->p_vci                 (signal_vci_tgt_bdev);
    699 
    700         // wrapper ini BDEV
    701         wi_bdev->p_clk                 (this->p_clk);
    702         wi_bdev->p_resetn              (this->p_resetn);
    703         wi_bdev->p_dspin_cmd           (signal_dspin_cmd_bdev_i);
    704         wi_bdev->p_dspin_rsp           (signal_dspin_rsp_bdev_i);
    705         wi_bdev->p_vci                 (signal_vci_ini_bdev);
    706 
    707565        std::cout << "  - BDEV connected" << std::endl;
    708566
     
    711569        fbuf->p_resetn                 (this->p_resetn);
    712570        fbuf->p_vci                    (signal_vci_tgt_fbuf);
    713 
    714         // wrapper tgt FBUF
    715         wt_fbuf->p_clk                 (this->p_clk);
    716         wt_fbuf->p_resetn              (this->p_resetn);
    717         wt_fbuf->p_dspin_cmd           (signal_dspin_cmd_fbuf_t);
    718         wt_fbuf->p_dspin_rsp           (signal_dspin_rsp_fbuf_t);
    719         wt_fbuf->p_vci                 (signal_vci_tgt_fbuf);
    720571
    721572        std::cout << "  - FBUF connected" << std::endl;
     
    730581            mnic->p_tx_irq[i]          (signal_irq_mnic_tx[i]);
    731582        }
    732 
    733         // wrapper tgt MNIC
    734         wt_mnic->p_clk                 (this->p_clk);
    735         wt_mnic->p_resetn              (this->p_resetn);
    736         wt_mnic->p_dspin_cmd           (signal_dspin_cmd_mnic_t);
    737         wt_mnic->p_dspin_rsp           (signal_dspin_rsp_mnic_t);
    738         wt_mnic->p_vci                 (signal_vci_tgt_mnic);
    739583
    740584        std::cout << "  - MNIC connected" << std::endl;
     
    750594        }
    751595
    752         // wrapper tgt CHBUF
    753         wt_chbuf->p_clk                 (this->p_clk);
    754         wt_chbuf->p_resetn              (this->p_resetn);
    755         wt_chbuf->p_dspin_cmd           (signal_dspin_cmd_chbuf_t);
    756         wt_chbuf->p_dspin_rsp           (signal_dspin_rsp_chbuf_t);
    757         wt_chbuf->p_vci                 (signal_vci_tgt_chbuf);
    758 
    759         // wrapper ini CHBUF
    760         wi_chbuf->p_clk                 (this->p_clk);
    761         wi_chbuf->p_resetn              (this->p_resetn);
    762         wi_chbuf->p_dspin_cmd           (signal_dspin_cmd_chbuf_i);
    763         wi_chbuf->p_dspin_rsp           (signal_dspin_rsp_chbuf_i);
    764         wi_chbuf->p_vci                 (signal_vci_ini_chbuf);
    765 
    766596        std::cout << "  - CHBUF connected" << std::endl;
    767597
     
    770600        brom->p_resetn                 (this->p_resetn);
    771601        brom->p_vci                    (signal_vci_tgt_brom);
    772 
    773         // wrapper tgt BROM
    774         wt_brom->p_clk                 (this->p_clk);
    775         wt_brom->p_resetn              (this->p_resetn);
    776         wt_brom->p_dspin_cmd           (signal_dspin_cmd_brom_t);
    777         wt_brom->p_dspin_rsp           (signal_dspin_rsp_brom_t);
    778         wt_brom->p_vci                 (signal_vci_tgt_brom);
    779602
    780603        std::cout << "  - BROM connected" << std::endl;
     
    789612        }
    790613
    791         // wrapper tgt MTTY
    792         wt_mtty->p_clk                 (this->p_clk);
    793         wt_mtty->p_resetn              (this->p_resetn);
    794         wt_mtty->p_dspin_cmd           (signal_dspin_cmd_mtty_t);
    795         wt_mtty->p_dspin_rsp           (signal_dspin_rsp_mtty_t);
    796         wt_mtty->p_vci                 (signal_vci_tgt_mtty);
     614        std::cout << "  - MTTY connected" << std::endl;
    797615
    798616
     
    802620        simhelper->p_vci               (signal_vci_tgt_simh);
    803621       
    804         // wrapper tgt Sim Helper
    805         wt_simhelper->p_clk            (this->p_clk);
    806         wt_simhelper->p_resetn         (this->p_resetn);
    807         wt_simhelper->p_dspin_cmd      (signal_dspin_cmd_simh_t);
    808         wt_simhelper->p_dspin_rsp      (signal_dspin_rsp_simh_t);
    809         wt_simhelper->p_vci            (signal_vci_tgt_simh);
    810 
    811         std::cout << "  - MTTY connected" << std::endl;
     622        std::cout << "  - SIMH connected" << std::endl;
    812623   }
    813624} // end constructor
     
    831642    {
    832643        delete proc[p];
    833         delete wi_proc[p];
    834644    }
    835645
    836646    delete memc;
    837     delete wt_memc;
    838647    delete xram;
    839648    delete xicu;
    840     delete wt_xicu;
    841649    delete mdma;
    842     delete wt_mdma;
    843     delete wi_mdma;
    844     delete xbar_cmd_d;
    845     delete xbar_rsp_d;
     650    delete xbar_d;
     651    delete wt_xbar_d;
     652    delete wi_xbar_d;
    846653    delete xbar_m2p_c;
    847654    delete xbar_p2m_c;
     
    852659    {
    853660        delete brom;
    854         delete wt_brom;
    855661        delete fbuf;
    856         delete wt_fbuf;
    857662        delete bdev;
    858         delete wt_bdev;
    859         delete wi_bdev;
    860663        delete mnic;
    861         delete wt_mnic;
    862664        delete chbuf;
    863         delete wt_chbuf;
    864         delete wi_chbuf;
    865665        delete mtty;
    866         delete wt_mtty;
    867666        delete simhelper;
    868         delete wt_simhelper;
    869667    }
    870668}
Note: See TracChangeset for help on using the changeset viewer.