Ignore:
Timestamp:
May 16, 2014, 7:01:38 PM (11 years ago)
Author:
cfuguet
Message:

tsar_generic_leti:

  • Replacing tsar_leti_cluster dspin_local_crossbar by vci_local_crossbar
  • Introducing in top.cpp the possibility to pass soft binary, disk image or ramdisk image files through command line args
Location:
trunk/platforms/tsar_generic_leti
Files:
4 edited

Legend:

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

    r681 r692  
    147147
    148148#if USE_GIET_TSAR
    149 #include                         "../../softs/soft_transpose_giet/hard_config.h"
     149#include                         "hard_config.h"
    150150#define BINARY_PATH_FOR_LOADER   "../../softs/soft_transpose_giet/bin.soft"
    151151#define RAMDISK_PATH_FOR_LOADER  "../../softs/soft_transpose_giet/images.raw@0x00800000:"
     
    154154
    155155#if USE_GIET_VM
    156 #include                         "../../../giet_vm/hard_config.h"
     156#include                         "hard_config.h"
    157157#define BINARY_PATH_FOR_LOADER   "../../softs/tsar_boot/preloader.elf"
    158158#define RAMDISK_PATH_FOR_LOADER  "../../../giet_vm/hdd/virt_hdd.dmg@0x02000000:"
     
    173173///////////////////////////////////////////////////
    174174
    175 #define cluster(x,y)   (y + (x << Y_WIDTH))
    176 
    177 #define min(a, b) (a < b ? a : b)
     175#define cluster(x,y)   ((y) + ((x) << Y_WIDTH))
    178176
    179177///////////////////////////////////////////////////////////
     
    271269//////////////////////////////////////////////////////////////////////////////////////
    272270
    273    // in cluster [0,0] & [X_SIZE-1,Y_SIZE]
    274 
    275    #define MTTY_BASE    0xF4000000
    276    #define MTTY_SIZE    0x00001000   // 4 Kbytes
    277 
    278    #define BDEV_BASE    0xF2000000
    279    #define BDEV_SIZE    0x00001000   // 4 Kbytes
    280 
    281    // in cluster [X_SIZE-1,Y_SIZE]
    282 
    283    #define FBUF_BASE    0xF3000000
    284    #define FBUF_SIZE    (FBUF_X_SIZE * FBUF_Y_SIZE * 2)
    285 
    286    #define MNIC_BASE    0xF7000000
    287    #define MNIC_SIZE    0x00800000   // 512 Kbytes (for 8 channels)
    288 
    289    #define CDMA_BASE    0xF8000000
    290    #define CDMA_SIZE    0x00004000 * NB_CMA_CHANNELS
    291 
    292    #define IOPI_BASE    0xF9000000
    293    #define IOPI_SIZE    0x00001000   // 4 Kbytes
    294    
    295    // replicated segments : address is extended to 40 bits by cluster_xy
    296 
    297    #define MEMC_BASE    0x00000000
    298    #define MEMC_SIZE    XRAM_SIZE
    299 
    300    #define MCFG_BASE    0xE0000000
    301    #define MCFG_SIZE    0x00001000   // 4 Kbytes
    302 
    303    #define XICU_BASE    0xF0000000
    304    #define XICU_SIZE    0x00001000   // 4 Kbytes
     271// in cluster [0,0] & [X_SIZE-1,Y_SIZE]
     272
     273#define MTTY_BASE    0xF4000000
     274#define MTTY_SIZE    0x00001000   // 4 Kbytes
     275
     276#define BDEV_BASE    0xF2000000
     277#define BDEV_SIZE    0x00001000   // 4 Kbytes
     278
     279// in cluster [X_SIZE-1,Y_SIZE]
     280
     281#define FBUF_BASE    0xF3000000
     282#define FBUF_SIZE    (FBUF_X_SIZE * FBUF_Y_SIZE * 2)
     283
     284#define MNIC_BASE    0xF7000000
     285#define MNIC_SIZE    0x00800000   // 512 Kbytes (for 8 channels)
     286
     287#define CDMA_BASE    0xF8000000
     288#define CDMA_SIZE    0x00004000 * NB_CMA_CHANNELS
     289
     290#define IOPI_BASE    0xF9000000
     291#define IOPI_SIZE    0x00001000   // 4 Kbytes
     292
     293// replicated segments : address is extended to 40 bits by cluster_xy
     294
     295#define MEMC_BASE    0x00000000
     296#define MEMC_SIZE    XRAM_SIZE
     297
     298#define MCFG_BASE    0xE0000000
     299#define MCFG_SIZE    0x00001000   // 4 Kbytes
     300
     301#define XICU_BASE    0xF0000000
     302#define XICU_SIZE    0x00001000   // 4 Kbytes
    305303
    306304bool stop_called = false;
     
    313311   using namespace soclib::common;
    314312
    315    uint32_t ncycles          = 0xFFFFFFFF;         // max simulated cycles
    316    size_t   threads          = 1;                  // simulator's threads number
    317    bool     trace_ok         = false;              // trace activated
    318    uint32_t trace_from       = 0;                  // trace start cycle
    319    bool     trace_proc_ok    = false;              // detailed proc trace activated
    320    size_t   trace_memc_ok    = false;              // detailed memc trace activated
    321    size_t   trace_memc_id    = 0;                  // index of memc to be traced
    322    size_t   trace_proc_id    = 0;                  // index of proc to be traced
    323    uint32_t frozen_cycles    = MAX_FROZEN_CYCLES;  // monitoring frozen processor
     313   uint32_t ncycles           = 0xFFFFFFFF; // max simulated cycles
     314   size_t   threads           = 1;          // simulator's threads number
     315   bool     trace_ok          = false;      // trace activated
     316   uint32_t trace_from        = 0;          // trace start cycle
     317   bool     trace_proc_ok     = false;      // detailed proc trace activated
     318   size_t   trace_memc_ok     = false;      // detailed memc trace activated
     319   size_t   trace_memc_id     = 0;          // index of memc to be traced
     320   size_t   trace_proc_id     = 0;          // index of proc to be traced
     321   uint32_t frozen_cycles     = MAX_FROZEN_CYCLES;
     322   char     soft_name[256]    = BINARY_PATH_FOR_LOADER;
     323   char     disk_name[256]    = DISK_IMAGE_PATH_FOR_IOC;
     324   char     ramdisk_name[256] = RAMDISK_PATH_FOR_LOADER;
    324325   struct   timeval t1,t2;
    325326   uint64_t ms1,ms2;
     
    358359            size_t l          = trace_proc_id % NB_PROCS_MAX ;
    359360
    360             assert( (x < X_SIZE) and (y < (Y_SIZE)) and l < NB_PROCS_MAX and
     361            assert( (x < X_SIZE) and (y < Y_SIZE) and (l < NB_PROCS_MAX) and
    361362                  "PROCID parameter refers a not valid processor");
     363         }
     364         else if ((strcmp(argv[n], "-SOFT") == 0) && ((n + 1) < argc))
     365         {
     366            strcpy(soft_name, argv[n + 1]);
     367         }
     368         else if ((strcmp(argv[n], "-DISK") == 0) && ((n + 1) < argc))
     369         {
     370            strcpy(disk_name, argv[n + 1]);
     371         }
     372         else if ((strcmp(argv[n], "-RAMDISK") == 0) && ((n + 1) < argc))
     373         {
     374            strcpy(ramdisk_name, argv[n + 1]);
    362375         }
    363376         else if ((strcmp(argv[n], "-THREADS") == 0) && ((n + 1) < argc))
     
    377390            std::cout << "     -NCYCLES number_of_simulated_cycles" << std::endl;
    378391            std::cout << "     -DEBUG debug_start_cycle" << std::endl;
     392            std::cout << "     -SOFT path to soft" << std::endl;
     393            std::cout << "     -DISK path to disk image" << std::endl;
     394            std::cout << "     -RAMDISK path to ramdisk image" << std::endl;
    379395            std::cout << "     -THREADS simulator's threads number" << std::endl;
    380396            std::cout << "     -FROZEN max_number_of_lines" << std::endl;
     
    426442    std::cout << " - MAX_CYCLES       = " << ncycles << std::endl;
    427443    std::cout << " - RESET_ADDRESS    = " << RESET_ADDRESS << std::endl;
    428     std::cout << " - SOFT_PATH_NAME   = " << BINARY_PATH_FOR_LOADER << std::endl;
    429     std::cout << " - DISK_IMAGE_PATH  = " << DISK_IMAGE_PATH_FOR_IOC << std::endl;
     444    std::cout << " - SOFT_FILENAME    = " << soft_name << std::endl;
     445    std::cout << " - DISK_IMAGENAME   = " << disk_name << std::endl;
     446    std::cout << " - RAMDISK_FILENAME = " << ramdisk_name << std::endl;
     447    std::cout << " - OPENMP THREADS   = " << threads << std::endl;
    430448
    431449    std::cout << std::endl;
     
    671689
    672690#if USE_IOC_RDK
    673    soclib::common::Loader loader( BINARY_PATH_FOR_LOADER, RAMDISK_PATH_FOR_LOADER );
     691   soclib::common::Loader loader( soft_name, ramdisk_name );
    674692#else
    675    soclib::common::Loader loader( BINARY_PATH_FOR_LOADER );
     693   soclib::common::Loader loader( soft_name );
    676694#endif
    677695
     
    734752                MTTY_TGTID,
    735753                BDEV_TGTID,
    736                 DISK_IMAGE_PATH_FOR_IOC,
     754                disk_name,
    737755                MEMC_WAYS,
    738756                MEMC_SETS,
     
    801819                IntTab(cluster_io, BDEV_SRCID),
    802820                IntTab(cluster_io, BDEV_TGTID),
    803                 DISK_IMAGE_PATH_FOR_IOC,
     821                disk_name,
    804822                512,                          // block size
    805823                64 );                         // burst size
  • trunk/platforms/tsar_generic_leti/tsar_leti_cluster/caba/metadata/tsar_leti_cluster.sd

    r628 r692  
    4141
    4242      Uses('caba:vci_xicu',
     43              cell_size       = parameter.Reference('vci_data_width_int')),
     44
     45      Uses('caba:vci_local_crossbar',
    4346              cell_size       = parameter.Reference('vci_data_width_int')),
    4447
  • trunk/platforms/tsar_generic_leti/tsar_leti_cluster/caba/source/include/tsar_leti_cluster.h

    r628 r692  
    2222#include "vci_simple_ram.h"
    2323#include "vci_xicu.h"
     24#include "vci_local_crossbar.h"
    2425#include "dspin_local_crossbar.h"
    2526#include "vci_dspin_initiator_wrapper.h"
     
    4445
    4546    // Used in destructor
    46     size_t n_procs;
     47    size_t m_nprocs;
    4748
    4849    // Ports
     
    7576    DspinSignals<dspin_cmd_width>   signal_dspin_cmd_l2g_d;
    7677    DspinSignals<dspin_cmd_width>   signal_dspin_cmd_g2l_d;
     78    DspinSignals<dspin_rsp_width>   signal_dspin_rsp_l2g_d;
     79    DspinSignals<dspin_rsp_width>   signal_dspin_rsp_g2l_d;
    7780    DspinSignals<dspin_cmd_width>   signal_dspin_m2p_l2g_c;
    7881    DspinSignals<dspin_cmd_width>   signal_dspin_m2p_g2l_c;
    7982    DspinSignals<dspin_cmd_width>   signal_dspin_clack_l2g_c;
    8083    DspinSignals<dspin_cmd_width>   signal_dspin_clack_g2l_c;
    81     DspinSignals<dspin_rsp_width>   signal_dspin_rsp_l2g_d;
    82     DspinSignals<dspin_rsp_width>   signal_dspin_rsp_g2l_d;
    8384    DspinSignals<dspin_rsp_width>   signal_dspin_p2m_l2g_c;
    8485    DspinSignals<dspin_rsp_width>   signal_dspin_p2m_g2l_c;
    8586
    86     // Direct VCI signals to VCI/DSPIN wrappers
     87    // Direct VCI signals
    8788    VciSignals<vci_param_int>       signal_vci_ini_proc[4];
    8889    VciSignals<vci_param_int>       signal_vci_ini_mdma;
     
    100101    VciSignals<vci_param_int>       signal_vci_tgt_simh;
    101102
    102     // Direct DSPIN signals to local crossbars
    103     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_proc_i[4];
    104     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_proc_i[4];
    105     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mdma_i;
    106     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mdma_i;
    107     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_bdev_i;
    108     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_bdev_i;
    109     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_chbuf_i;
    110     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_chbuf_i;
    111 
    112     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_memc_t;
    113     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_memc_t;
    114     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_xicu_t;
    115     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_xicu_t;
    116     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mdma_t;
    117     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mdma_t;
    118     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mtty_t;
    119     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mtty_t;
    120     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_bdev_t;
    121     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_bdev_t;
    122     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_fbuf_t;
    123     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_fbuf_t;
    124     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mnic_t;
    125     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mnic_t;
    126     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_chbuf_t;
    127     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_chbuf_t;
    128     DspinSignals<dspin_cmd_width>     signal_dspin_cmd_simh_t;
    129     DspinSignals<dspin_rsp_width>     signal_dspin_rsp_simh_t;
     103    VciSignals<vci_param_int>       signal_vci_g2l;
     104    VciSignals<vci_param_int>       signal_vci_l2g;
    130105
    131106    // Coherence DSPIN signals to local crossbar
     
    147122                       GdbServer<Mips32ElIss> >*  proc[4];
    148123
    149     VciDspinInitiatorWrapper<vci_param_int,
    150                              dspin_cmd_width,
    151                              dspin_rsp_width>*    wi_proc[4];
    152 
    153124    VciMemCache<vci_param_int,
    154125                vci_param_ext,
     
    156127                dspin_cmd_width>*                 memc;
    157128
    158     VciDspinTargetWrapper<vci_param_int,
    159                           dspin_cmd_width,
    160                           dspin_rsp_width>*       wt_memc;
    161 
    162129    VciXicu<vci_param_int>*                       xicu;
    163 
    164     VciDspinTargetWrapper<vci_param_int,
    165                           dspin_cmd_width,
    166                           dspin_rsp_width>*       wt_xicu;
    167130
    168131    VciSimpleRam<vci_param_ext>*                  xram;
     
    170133    VciMultiTty<vci_param_int>*                   mtty;
    171134
    172     VciDspinTargetWrapper<vci_param_int,
    173                           dspin_cmd_width,
    174                           dspin_rsp_width>*       wt_mtty;
     135    VciBlockDeviceTsar<vci_param_int>*            bdev;
    175136
    176     VciBlockDeviceTsar<vci_param_int>*            bdev;
     137    VciLocalCrossbar<vci_param_int>*              xbar_cmd;
    177138
    178139    VciDspinInitiatorWrapper<vci_param_int,
    179140                             dspin_cmd_width,
    180                              dspin_rsp_width>*    wi_bdev;
     141                             dspin_rsp_width>*    wi_gate;
    181142
    182143    VciDspinTargetWrapper<vci_param_int,
    183144                          dspin_cmd_width,
    184                           dspin_rsp_width>*       wt_bdev;
     145                          dspin_rsp_width>*       wt_gate;
    185146
    186     DspinLocalCrossbar<dspin_cmd_width>*          xbar_cmd;
    187     DspinLocalCrossbar<dspin_rsp_width>*          xbar_rsp;
    188147    DspinLocalCrossbar<dspin_cmd_width>*          xbar_m2p;
    189148    DspinLocalCrossbar<dspin_rsp_width>*          xbar_p2m;
  • trunk/platforms/tsar_generic_leti/tsar_leti_cluster/caba/source/src/tsar_leti_cluster.cpp

    r664 r692  
    5252         uint32_t                           trace_memc_id )
    5353            : soclib::caba::BaseModule(insname),
     54            m_nprocs(nb_procs),
    5455            p_clk("clk"),
    5556            p_resetn("resetn")
     
    114115                      trace_start_cycle,
    115116                      trace_ok );
    116 
    117         std::ostringstream swip;
    118         swip << "wi_proc_" << x_id << "_" << y_id << "_" << p;
    119         wi_proc[p] = new VciDspinInitiatorWrapper<vci_param_int,
    120                                                   dspin_cmd_width,
    121                                                   dspin_rsp_width>(
    122                      swip.str().c_str(),
    123                      x_width + y_width + l_width);
    124117    }
    125118
     
    148141                     trace_ok );
    149142
    150     wt_memc = new VciDspinTargetWrapper<vci_param_int,
    151                                         dspin_cmd_width,
    152                                         dspin_rsp_width>(
    153                      "wt_memc",
    154                      x_width + y_width + l_width);
    155 
    156143    /////////////////////////////////////////////////////////////////////////////
    157144    std::ostringstream sxram;
     
    176163                     16 );                              // number of output IRQs
    177164
    178     wt_xicu = new VciDspinTargetWrapper<vci_param_int,
     165    /////////////////////////////////////////////////////////////////////////////
     166    size_t nb_initiators = nb_procs;
     167    size_t nb_targets    = 2;
     168
     169    if ((x_id == 0) and (y_id == 0))  // cluster(0,0)
     170    {
     171        nb_initiators = nb_procs + 1;
     172        nb_targets    = 4;
     173    }
     174
     175    std::ostringstream s_xbar_cmd;
     176    xbar_cmd = new VciLocalCrossbar<vci_param_int>(
     177                     s_xbar_cmd.str().c_str(),
     178                     mtd,                          // mapping table
     179                     cluster_xy,                   // cluster id
     180                     nb_initiators,                // number of local initiators
     181                     nb_targets,                   // number of local targets
     182                     0 );                          // default target
     183
     184    wi_gate = new VciDspinInitiatorWrapper<vci_param_int,
     185                                           dspin_cmd_width,
     186                                           dspin_rsp_width>(
     187                     "wi_gate",
     188                     x_width + y_width + l_width);
     189
     190    wt_gate = new VciDspinTargetWrapper<vci_param_int,
    179191                                        dspin_cmd_width,
    180192                                        dspin_rsp_width>(
    181                      "wt_xicu",
     193                     "wt_gate",
    182194                     x_width + y_width + l_width);
    183 
    184     /////////////////////////////////////////////////////////////////////////////
    185     size_t nb_initiators = nb_procs;
    186     size_t nb_targets    = 2;
    187 
    188     if ((x_id == 0) and (y_id == 0))  // cluster(0,0)
    189     {
    190         nb_initiators = nb_procs + 1;
    191         nb_targets    = 4;
    192     }
    193 
    194     std::ostringstream s_xbar_cmd;
    195     s_xbar_cmd << "xbar_cmd_" << x_id << "_" << y_id;
    196     xbar_cmd = new DspinLocalCrossbar<dspin_cmd_width>(
    197                      s_xbar_cmd.str().c_str(),
    198                      mtd,                          // mapping table
    199                      x_id, y_id,                   // cluster coordinates
    200                      x_width, y_width, l_width,
    201                      nb_initiators,                // number of local of sources
    202                      nb_targets,                   // number of local dests
    203                      2, 2,                         // fifo depths 
    204                      true,                         // CMD
    205                      true,                         // use local routing table
    206                      false );                      // no broadcast
    207 
    208     /////////////////////////////////////////////////////////////////////////////
    209     std::ostringstream s_xbar_rsp;
    210     s_xbar_rsp << "xbar_rsp_" << x_id << "_" << y_id;
    211     xbar_rsp = new DspinLocalCrossbar<dspin_rsp_width>(
    212                      s_xbar_rsp.str().c_str(),
    213                      mtd,                          // mapping table
    214                      x_id, y_id,                   // cluster coordinates
    215                      x_width, y_width, l_width,
    216                      nb_targets,                   // number of local sources
    217                      nb_initiators,                // number of local dests
    218                      2, 2,                         // fifo depths 
    219                      false,                        // RSP
    220                      false,                        // don't use local routing table
    221                      false );                      // no broadcast
    222195
    223196    /////////////////////////////////////////////////////////////////////////////
     
    313286
    314287    // backup BDV and TTY peripherals in cluster(0,0)
     288    bdev = NULL;
     289    mtty = NULL;
    315290    if ((x_id == 0) and (y_id == 0))
    316291    {
     
    325300                     64 );            // burst size
    326301
    327         wt_bdev = new VciDspinTargetWrapper<vci_param_int,
    328                                             dspin_cmd_width,
    329                                             dspin_rsp_width>(
    330                      "wt_bdev",
    331                      x_width + y_width + l_width);
    332 
    333         wi_bdev = new VciDspinInitiatorWrapper<vci_param_int,
    334                                                dspin_cmd_width,
    335                                                dspin_rsp_width>(
    336                      "wi_bdev",
    337                      x_width + y_width + l_width);
    338 
    339302        /////////////////////////////////////////////
    340303        mtty = new VciMultiTty<vci_param_int>(
     
    342305                     IntTab(cluster_xy, tgtid_mtty),
    343306                     mtd,
    344                      "backup", NULL );
    345 
    346         wt_mtty = new VciDspinTargetWrapper<vci_param_int,
    347                                             dspin_cmd_width,
    348                                             dspin_rsp_width>(
    349                      "wt_mtty",
    350                      x_width + y_width + l_width);
     307                     "tty_backup", NULL );
    351308    }
    352309
     
    408365    xbar_cmd->p_clk                            (this->p_clk);
    409366    xbar_cmd->p_resetn                         (this->p_resetn);
    410     xbar_cmd->p_global_out                     (signal_dspin_cmd_l2g_d);
    411     xbar_cmd->p_global_in                      (signal_dspin_cmd_g2l_d);
    412 
    413     xbar_cmd->p_local_out[tgtid_memc]          (signal_dspin_cmd_memc_t);
    414     xbar_cmd->p_local_out[tgtid_xicu]          (signal_dspin_cmd_xicu_t);
     367    xbar_cmd->p_initiator_to_up                (signal_vci_l2g);
     368    xbar_cmd->p_target_to_up                   (signal_vci_g2l);
     369
     370    xbar_cmd->p_to_target[tgtid_memc]          (signal_vci_tgt_memc);
     371    xbar_cmd->p_to_target[tgtid_xicu]          (signal_vci_tgt_xicu);
    415372
    416373    for (size_t p = 0; p < nb_procs; p++)
    417         xbar_cmd->p_local_in[p]                (signal_dspin_cmd_proc_i[p]);
     374        xbar_cmd->p_to_initiator[p]            (signal_vci_ini_proc[p]);
    418375
    419376    if ((x_id == 0) and (y_id == 0))  // cluster(0,0)
    420377    {
    421         xbar_cmd->p_local_out[tgtid_mtty]      (signal_dspin_cmd_mtty_t);
    422         xbar_cmd->p_local_out[tgtid_bdev]      (signal_dspin_cmd_bdev_t);
    423 
    424         xbar_cmd->p_local_in[nb_procs]         (signal_dspin_cmd_bdev_i);
    425     }
    426 
    427     std::cout << "  - CMD Direct crossbar connected" << std::endl;
    428 
    429     //////////////////////// RSP DSPIN  local crossbar direct
    430     xbar_rsp->p_clk                            (this->p_clk);
    431     xbar_rsp->p_resetn                         (this->p_resetn);
    432     xbar_rsp->p_global_out                     (signal_dspin_rsp_l2g_d);
    433     xbar_rsp->p_global_in                      (signal_dspin_rsp_g2l_d);
    434 
    435     xbar_rsp->p_local_in[tgtid_memc]           (signal_dspin_rsp_memc_t);
    436     xbar_rsp->p_local_in[tgtid_xicu]           (signal_dspin_rsp_xicu_t);
    437 
    438     for (size_t p = 0; p < nb_procs; p++)
    439         xbar_rsp->p_local_out[p]               (signal_dspin_rsp_proc_i[p]);
    440 
    441     if ((x_id == 0) and (y_id == 0))  // cluster(0,0)
    442     {
    443         xbar_rsp->p_local_in[tgtid_mtty]       (signal_dspin_rsp_mtty_t);
    444         xbar_rsp->p_local_in[tgtid_bdev]       (signal_dspin_rsp_bdev_t);
    445 
    446         xbar_rsp->p_local_out[nb_procs]        (signal_dspin_rsp_bdev_i);
    447     }
    448 
    449     std::cout << "  - RSP Direct crossbar connected" << std::endl;
     378        xbar_cmd->p_to_target[tgtid_mtty]      (signal_vci_tgt_mtty);
     379        xbar_cmd->p_to_target[tgtid_bdev]      (signal_vci_tgt_bdev);
     380        xbar_cmd->p_to_initiator[nb_procs]     (signal_vci_ini_bdev);
     381    }
     382
     383    wi_gate->p_clk                             (this->p_clk);
     384    wi_gate->p_resetn                          (this->p_resetn);
     385    wi_gate->p_vci                             (signal_vci_l2g);
     386    wi_gate->p_dspin_cmd                       (signal_dspin_cmd_l2g_d);
     387    wi_gate->p_dspin_rsp                       (signal_dspin_rsp_g2l_d);
     388
     389    wt_gate->p_clk                             (this->p_clk);
     390    wt_gate->p_resetn                          (this->p_resetn);
     391    wt_gate->p_vci                             (signal_vci_g2l);
     392    wt_gate->p_dspin_cmd                       (signal_dspin_cmd_g2l_d);
     393    wt_gate->p_dspin_rsp                       (signal_dspin_rsp_l2g_d);
     394
     395    std::cout << "  - CMD & RSP Direct crossbar connected" << std::endl;
    450396
    451397    ////////////////////// M2P DSPIN local crossbar coherence
     
    497443            else         proc[p]->p_irq[j]  (signal_false);
    498444        }
    499 
    500         wi_proc[p]->p_clk                   (this->p_clk);
    501         wi_proc[p]->p_resetn                (this->p_resetn);
    502         wi_proc[p]->p_dspin_cmd             (signal_dspin_cmd_proc_i[p]);
    503         wi_proc[p]->p_dspin_rsp             (signal_dspin_rsp_proc_i[p]);
    504         wi_proc[p]->p_vci                   (signal_vci_ini_proc[p]);
    505445    }
    506446
     
    533473    }
    534474
    535     // wrapper XICU
    536     wt_xicu->p_clk                     (this->p_clk);
    537     wt_xicu->p_resetn                  (this->p_resetn);
    538     wt_xicu->p_dspin_cmd               (signal_dspin_cmd_xicu_t);
    539     wt_xicu->p_dspin_rsp               (signal_dspin_rsp_xicu_t);
    540     wt_xicu->p_vci                     (signal_vci_tgt_xicu);
    541 
    542475    std::cout << "  - XICU connected" << std::endl;
    543476
     
    552485    memc->p_dspin_clack                (signal_dspin_clack_memc);
    553486
    554     // wrapper MEMC
    555     wt_memc->p_clk                     (this->p_clk);
    556     wt_memc->p_resetn                  (this->p_resetn);
    557     wt_memc->p_dspin_cmd               (signal_dspin_cmd_memc_t);
    558     wt_memc->p_dspin_rsp               (signal_dspin_rsp_memc_t);
    559     wt_memc->p_vci                     (signal_vci_tgt_memc);
    560 
    561487    std::cout << "  - MEMC connected" << std::endl;
    562488
     
    579505        bdev->p_vci_initiator          (signal_vci_ini_bdev);
    580506
    581         // wrapper tgt BDEV
    582         wt_bdev->p_clk                 (this->p_clk);
    583         wt_bdev->p_resetn              (this->p_resetn);
    584         wt_bdev->p_dspin_cmd           (signal_dspin_cmd_bdev_t);
    585         wt_bdev->p_dspin_rsp           (signal_dspin_rsp_bdev_t);
    586         wt_bdev->p_vci                 (signal_vci_tgt_bdev);
    587 
    588         // wrapper ini BDEV
    589         wi_bdev->p_clk                 (this->p_clk);
    590         wi_bdev->p_resetn              (this->p_resetn);
    591         wi_bdev->p_dspin_cmd           (signal_dspin_cmd_bdev_i);
    592         wi_bdev->p_dspin_rsp           (signal_dspin_rsp_bdev_i);
    593         wi_bdev->p_vci                 (signal_vci_ini_bdev);
    594 
    595507        std::cout << "  - BDEV connected" << std::endl;
    596508
     
    600512        mtty->p_vci                    (signal_vci_tgt_mtty);
    601513        mtty->p_irq[0]                 (signal_irq_mtty);
    602 
    603         // wrapper tgt MTTY
    604         wt_mtty->p_clk                 (this->p_clk);
    605         wt_mtty->p_resetn              (this->p_resetn);
    606         wt_mtty->p_dspin_cmd           (signal_dspin_cmd_mtty_t);
    607         wt_mtty->p_dspin_rsp           (signal_dspin_rsp_mtty_t);
    608         wt_mtty->p_vci                 (signal_vci_tgt_mtty);
    609514
    610515        std::cout << "  - MTTY connected" << std::endl;
     
    637542    dealloc_elems<DspinOutput<dspin_cmd_width> >(p_cla_out, 4);
    638543
    639     for (size_t p = 0; p < 4 ; p++)
    640     {
    641         if ( proc[p] )     delete proc[p];
    642         if ( wi_proc[p] )  delete wi_proc[p];
     544    for (size_t p = 0; p < m_nprocs ; p++)
     545    {
     546        if ( proc[p] ) delete proc[p];
    643547    }
    644548
    645549    delete memc;
    646     delete wt_memc;
    647550    delete xram;
    648551    delete xicu;
    649     delete wt_xicu;
    650552    delete xbar_cmd;
    651     delete xbar_rsp;
    652553    delete xbar_m2p;
    653554    delete xbar_p2m;
     
    658559    delete router_p2m;
    659560    delete router_cla;
     561    delete wi_gate;
     562    delete wt_gate;
    660563
    661564    if ( bdev )
    662565    {
    663566        delete bdev;
    664         delete wt_bdev;
    665         delete wi_bdev;
    666567    }
    667568
     
    669570    {
    670571        delete mtty;
    671         delete wt_mtty;
    672572    }
    673573}
Note: See TracChangeset for help on using the changeset viewer.