Ignore:
Timestamp:
May 16, 2013, 3:32:38 PM (11 years ago)
Author:
cfuguet
Message:

Modifying the tsar_generic_xbar:

  • Modifying the metadata and the sources of the tsar_xbar_cluster to support two differents VCI parameters (one for the DIRECT network and another for the EXTERNAL network).

The DIRECT network use 32 bits for VCI_DATA and the EXTERNAL network use
64 bits.

File:
1 edited

Legend:

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

    r379 r389  
    116116#define rsp_width            33
    117117
    118 ///////////////////////////////////////////////////////////
    119 //          VCI parameters           
    120 ///////////////////////////////////////////////////////////
    121 
    122 #define cell_width            4
    123 #define address_width         32
    124 #define plen_width            8
    125 #define error_width           2
    126 #define clen_width            1
    127 #define rflag_width           1
    128 #define srcid_width           14
    129 #define pktid_width           4
    130 #define trdid_width           4
    131 #define wrplen_width          1
    132 
    133118////////////////////////////////////////////////////////////
    134119//    Main Hardware Parameters values         
     
    357342#endif
    358343
    359    // Define VCI parameters
    360    typedef soclib::caba::VciParams<cell_width,
    361            plen_width,
    362            address_width,
    363            error_width,                                   
    364            clen_width,
    365            rflag_width,
    366            srcid_width,
    367            pktid_width,
    368            trdid_width,
    369            wrplen_width> vci_param;
    370 
    371344   // Define parameters depending on mesh size
    372345   size_t   cluster_io_id;
     
    378351   else if (CLUSTER_X <= 4) x_width = 2;
    379352   else if (CLUSTER_X <= 8) x_width = 3;
    380    else                        x_width = 4;
     353   else                     x_width = 4;
    381354
    382355   if      (CLUSTER_Y == 1) y_width = 0;
     
    384357   else if (CLUSTER_Y <= 4) y_width = 2;
    385358   else if (CLUSTER_Y <= 8) y_width = 3;
    386    else                        y_width = 4;
     359   else                     y_width = 4;
    387360
    388361   cluster_io_id = 0xBF >> (8 - x_width - y_width);
     
    448421   ///////////////////
    449422
    450    sc_clock      signal_clk("clk");
     423   sc_clock           signal_clk("clk");
    451424   sc_signal<bool>    signal_resetn("resetn");
    452425
     
    501474   ////////////////////////////
    502475
    503    TsarXbarCluster<vci_param, proc_iss, cmd_width, rsp_width>* clusters[CLUSTER_X][CLUSTER_Y];
     476   TsarXbarCluster<
     477      proc_iss, cmd_width, rsp_width
     478      > * clusters[CLUSTER_X][CLUSTER_Y];
    504479
    505480#if USE_OPENMP
     
    517492            {
    518493#endif
     494            bool is_io_cluster = (cluster(x,y) == cluster_io_id);
     495
    519496            std::ostringstream sc;
    520497            sc << "cluster_" << x << "_" << y;
    521             clusters[x][y] = new TsarXbarCluster<vci_param, proc_iss, cmd_width, rsp_width>
     498            clusters[x][y] = new TsarXbarCluster<
     499               proc_iss, cmd_width, rsp_width
     500               >
    522501            (
    523502                sc.str().c_str(),
    524                 NB_PROCS_MAX,
    525                 NB_TTYS, 
    526                 NB_DMAS_MAX,
    527                 x,
    528                 y,
    529                 cluster(x,y),
    530                 maptabd,
    531                 maptabx,
    532                 x_width,
    533                 y_width,
    534                 srcid_width - x_width - y_width,            // l_id width,
    535                 MEMC_TGTID,
    536                 XICU_TGTID,
    537                 CDMA_TGTID,
    538                 FBUF_TGTID,
    539                 MTTY_TGTID,
    540                 BROM_TGTID,
    541                 MNIC_TGTID,
    542                 BDEV_TGTID,
    543                 MEMC_WAYS,
    544                 MEMC_SETS,
    545                 L1_IWAYS,
    546                 L1_ISETS,
    547                 L1_DWAYS,
    548                 L1_DSETS,
    549                 XRAM_LATENCY,
    550                 (cluster(x,y) == cluster_io_id),
    551                 FBUF_X_SIZE,
    552                 FBUF_Y_SIZE,
    553                 disk_name,
    554                 BDEV_SECTOR_SIZE,
    555                 NB_NICS,
    556                 nic_rx_name,
    557                 nic_tx_name,
    558                 NIC_TIMEOUT,
    559                 loader,
     503                NB_PROCS_MAX , NB_TTYS         , NB_DMAS_MAX ,                    // cluster params
     504                x            , y               , cluster(x,y),                    // mesh coordinates
     505                maptabd      , maptabx         ,                                  // mapping tables
     506                x_width      , y_width         , srcid_width - x_width - y_width, // srcid width,
     507                MEMC_TGTID   , XICU_TGTID      , CDMA_TGTID  ,                    //                 
     508                FBUF_TGTID   , MTTY_TGTID      , BROM_TGTID  ,                    // targets ids
     509                MNIC_TGTID   , BDEV_TGTID,                                        //
     510                MEMC_WAYS    , MEMC_SETS       ,                                  // MC params
     511                L1_IWAYS     , L1_ISETS        , L1_DWAYS    , L1_DSETS,          // L1 params
     512                XRAM_LATENCY ,                                                    //
     513                is_io_cluster,                                                    // is IO cluster ?
     514                FBUF_X_SIZE  , FBUF_Y_SIZE     ,                                  // FB params
     515                disk_name    , BDEV_SECTOR_SIZE,                                  // IOC params
     516                NB_NICS      , nic_rx_name     , nic_tx_name , NIC_TIMEOUT,       // NIC params
     517                loader       ,
    560518                frozen_cycles,
    561                 debug_from,
     519                debug_from   ,
    562520                debug_ok and (cluster(x,y) == debug_memc_id),
    563521                debug_ok and (cluster(x,y) == debug_proc_id)
     
    583541   for (size_t x = 0; x < (CLUSTER_X); x++){
    584542      for (size_t y = 0; y < CLUSTER_Y; y++){
    585          clusters[x][y]->p_clk     (signal_clk);
    586          clusters[x][y]->p_resetn  (signal_resetn);
     543         clusters[x][y]->p_clk                         (signal_clk);
     544         clusters[x][y]->p_resetn                      (signal_resetn);
    587545      }
    588546   }
     
    631589      for (size_t k = 0; k < 2; k++)
    632590      {
    633          clusters[0][y]->p_cmd_in[k][WEST]          (signal_dspin_false_cmd_in[0][y][k][WEST]);
    634          clusters[0][y]->p_cmd_out[k][WEST]         (signal_dspin_false_cmd_out[0][y][k][WEST]);
    635          clusters[0][y]->p_rsp_in[k][WEST]          (signal_dspin_false_rsp_in[0][y][k][WEST]);
    636          clusters[0][y]->p_rsp_out[k][WEST]         (signal_dspin_false_rsp_out[0][y][k][WEST]);
    637 
    638          clusters[CLUSTER_X-1][y]->p_cmd_in[k][EAST]     (signal_dspin_false_cmd_in[CLUSTER_X-1][y][k][EAST]);
    639          clusters[CLUSTER_X-1][y]->p_cmd_out[k][EAST]    (signal_dspin_false_cmd_out[CLUSTER_X-1][y][k][EAST]);
    640          clusters[CLUSTER_X-1][y]->p_rsp_in[k][EAST]     (signal_dspin_false_rsp_in[CLUSTER_X-1][y][k][EAST]);
    641          clusters[CLUSTER_X-1][y]->p_rsp_out[k][EAST]    (signal_dspin_false_rsp_out[CLUSTER_X-1][y][k][EAST]);
     591         clusters[0][y]->p_cmd_in[k][WEST]             (signal_dspin_false_cmd_in[0][y][k][WEST]);
     592         clusters[0][y]->p_cmd_out[k][WEST]            (signal_dspin_false_cmd_out[0][y][k][WEST]);
     593         clusters[0][y]->p_rsp_in[k][WEST]             (signal_dspin_false_rsp_in[0][y][k][WEST]);
     594         clusters[0][y]->p_rsp_out[k][WEST]            (signal_dspin_false_rsp_out[0][y][k][WEST]);
     595
     596         clusters[CLUSTER_X-1][y]->p_cmd_in[k][EAST]   (signal_dspin_false_cmd_in[CLUSTER_X-1][y][k][EAST]);
     597         clusters[CLUSTER_X-1][y]->p_cmd_out[k][EAST]  (signal_dspin_false_cmd_out[CLUSTER_X-1][y][k][EAST]);
     598         clusters[CLUSTER_X-1][y]->p_rsp_in[k][EAST]   (signal_dspin_false_rsp_in[CLUSTER_X-1][y][k][EAST]);
     599         clusters[CLUSTER_X-1][y]->p_rsp_out[k][EAST]  (signal_dspin_false_rsp_out[CLUSTER_X-1][y][k][EAST]);
    642600      }
    643601   }
     
    648606      for (size_t k = 0; k < 2; k++)
    649607      {
    650          clusters[x][0]->p_cmd_in[k][SOUTH]         (signal_dspin_false_cmd_in[x][0][k][SOUTH]);
    651          clusters[x][0]->p_cmd_out[k][SOUTH]        (signal_dspin_false_cmd_out[x][0][k][SOUTH]);
    652          clusters[x][0]->p_rsp_in[k][SOUTH]         (signal_dspin_false_rsp_in[x][0][k][SOUTH]);
    653          clusters[x][0]->p_rsp_out[k][SOUTH]        (signal_dspin_false_rsp_out[x][0][k][SOUTH]);
    654 
    655          clusters[x][CLUSTER_Y-1]->p_cmd_in[k][NORTH]    (signal_dspin_false_cmd_in[x][CLUSTER_Y-1][k][NORTH]);
    656          clusters[x][CLUSTER_Y-1]->p_cmd_out[k][NORTH]   (signal_dspin_false_cmd_out[x][CLUSTER_Y-1][k][NORTH]);
    657          clusters[x][CLUSTER_Y-1]->p_rsp_in[k][NORTH]    (signal_dspin_false_rsp_in[x][CLUSTER_Y-1][k][NORTH]);
    658          clusters[x][CLUSTER_Y-1]->p_rsp_out[k][NORTH]   (signal_dspin_false_rsp_out[x][CLUSTER_Y-1][k][NORTH]);
     608         clusters[x][0]->p_cmd_in[k][SOUTH]            (signal_dspin_false_cmd_in[x][0][k][SOUTH]);
     609         clusters[x][0]->p_cmd_out[k][SOUTH]           (signal_dspin_false_cmd_out[x][0][k][SOUTH]);
     610         clusters[x][0]->p_rsp_in[k][SOUTH]            (signal_dspin_false_rsp_in[x][0][k][SOUTH]);
     611         clusters[x][0]->p_rsp_out[k][SOUTH]           (signal_dspin_false_rsp_out[x][0][k][SOUTH]);
     612
     613         clusters[x][CLUSTER_Y-1]->p_cmd_in[k][NORTH]  (signal_dspin_false_cmd_in[x][CLUSTER_Y-1][k][NORTH]);
     614         clusters[x][CLUSTER_Y-1]->p_cmd_out[k][NORTH] (signal_dspin_false_cmd_out[x][CLUSTER_Y-1][k][NORTH]);
     615         clusters[x][CLUSTER_Y-1]->p_rsp_in[k][NORTH]  (signal_dspin_false_rsp_in[x][CLUSTER_Y-1][k][NORTH]);
     616         clusters[x][CLUSTER_Y-1]->p_rsp_out[k][NORTH] (signal_dspin_false_rsp_out[x][CLUSTER_Y-1][k][NORTH]);
    659617      }
    660618   }
     
    673631         for (size_t k = 0; k < 2; k++){
    674632            for (size_t a = 0; a < 4; a++){
    675                signal_dspin_false_cmd_in[x][y][k][a].write = false;
    676                signal_dspin_false_cmd_in[x][y][k][a].read = true;
     633               signal_dspin_false_cmd_in [x][y][k][a].write = false;
     634               signal_dspin_false_cmd_in [x][y][k][a].read = true;
    677635               signal_dspin_false_cmd_out[x][y][k][a].write = false;
    678                signal_dspin_false_cmd_out[x][y][k][a].read = true;
    679 
    680                signal_dspin_false_rsp_in[x][y][k][a].write = false;
    681                signal_dspin_false_rsp_in[x][y][k][a].read = true;
     636               signal_dspin_false_cmd_out[x][y][k][a].read  = true;
     637
     638               signal_dspin_false_rsp_in [x][y][k][a].write = false;
     639               signal_dspin_false_rsp_in [x][y][k][a].read = true;
    682640               signal_dspin_false_rsp_out[x][y][k][a].write = false;
    683                signal_dspin_false_rsp_out[x][y][k][a].read = true;
     641               signal_dspin_false_rsp_out[x][y][k][a].read  = true;
    684642            }
    685643         }
     
    692650   for (size_t n = 1; n < ncycles; n++)
    693651   {
    694 
    695652      if (debug_ok and (n > debug_from) and (n % debug_period == 0))
    696653      {
     
    828785
    829786// vim: filetype=cpp:expandtab:shiftwidth=3:tabstop=3:softtabstop=3
    830 
    831 
    832 
    833 
Note: See TracChangeset for help on using the changeset viewer.