Ignore:
Timestamp:
Sep 17, 2014, 1:17:56 PM (10 years ago)
Author:
cfuguet
Message:

reconf/tsar_generic_iob: Using the new P_WIDTH constant

  • This constant is used in the clusters to compute the procesor id which now is: (((x << Y_WIDTH) + y) << P_WIDTH) + lpid
  • Introducing the p_width constant in the arch.py files
Location:
branches/reconfiguration/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/reconfiguration/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h

    r748 r806  
    11//////////////////////////////////////////////////////////////////////////////
    22// File: tsar_iob_cluster.h
    3 // Author: Alain Greiner 
     3// Author: Alain Greiner
    44// Copyright: UPMC/LIP6
    55// Date : april 2013
     
    3737
    3838///////////////////////////////////////////////////////////////////////////
    39 template<typename vci_param_int, 
     39template<typename vci_param_int,
    4040         typename vci_param_ext,
    41          size_t   dspin_int_cmd_width, 
     41         size_t   dspin_int_cmd_width,
    4242         size_t   dspin_int_rsp_width,
    4343         size_t   dspin_ram_cmd_width,
    4444         size_t   dspin_ram_rsp_width>
    45 class TsarIobCluster 
     45class TsarIobCluster
    4646///////////////////////////////////////////////////////////////////////////
    4747    : public soclib::caba::BaseModule
     
    5656    // Thes two ports are used to connect IOB to IOX nework in top cell
    5757    soclib::caba::VciInitiator<vci_param_ext>*         p_vci_iob_iox_ini;
    58     soclib::caba::VciTarget<vci_param_ext>*            p_vci_iob_iox_tgt; 
     58    soclib::caba::VciTarget<vci_param_ext>*            p_vci_iob_iox_tgt;
    5959
    6060    // These arrays of ports are used to connect the INT & RAM networks in top cell
     
    7474    sc_signal<bool>                       signal_irq_mdma[8];
    7575    sc_signal<bool>                       signal_irq_memc;
    76    
     76
    7777    // INT network DSPIN signals between DSPIN routers and DSPIN local_crossbars
    78     DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_l2g_d; 
    79     DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_g2l_d; 
     78    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_l2g_d;
     79    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_g2l_d;
    8080    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_l2g_c;
    81     DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_g2l_c; 
     81    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_g2l_c;
    8282    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_l2g_c;
    8383    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_g2l_c;
    84     DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_l2g_d; 
    85     DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_g2l_d; 
     84    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_l2g_d;
     85    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_g2l_d;
    8686    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_p2m_l2g_c;
    8787    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_p2m_g2l_c;
    8888
    8989    // INT network VCI signals between VCI components and VCI local crossbar
    90     VciSignals<vci_param_int>             signal_int_vci_ini_proc[8]; 
    91     VciSignals<vci_param_int>             signal_int_vci_ini_mdma; 
    92     VciSignals<vci_param_int>             signal_int_vci_ini_iobx; 
     90    VciSignals<vci_param_int>             signal_int_vci_ini_proc[8];
     91    VciSignals<vci_param_int>             signal_int_vci_ini_mdma;
     92    VciSignals<vci_param_int>             signal_int_vci_ini_iobx;
    9393
    9494    VciSignals<vci_param_int>             signal_int_vci_tgt_memc;
     
    101101    VciSignals<vci_param_int>             signal_int_vci_g2l;
    102102
    103     // Coherence DSPIN signals between DSPIN local crossbars and CC components 
     103    // Coherence DSPIN signals between DSPIN local crossbars and CC components
    104104    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_memc;
    105105    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_memc;
     
    115115
    116116    // RAM network DSPIN signals between VCI/DSPIN wrappers, RAM dspin crossbar
    117     // and routers 
     117    // and routers
    118118    DspinSignals<dspin_ram_cmd_width>     signal_ram_dspin_cmd_xram_t;
    119119    DspinSignals<dspin_ram_rsp_width>     signal_ram_dspin_rsp_xram_t;
     
    126126    DspinSignals<dspin_ram_cmd_width>     signal_ram_dspin_cmd_false;
    127127    DspinSignals<dspin_ram_rsp_width>     signal_ram_dspin_rsp_false;
    128  
     128
    129129    //////////////////////////////////////
    130130    // Hardwate Components (pointers)
    131131    //////////////////////////////////////
    132     VciCcVCacheWrapper<vci_param_int, 
     132    VciCcVCacheWrapper<vci_param_int,
    133133                       dspin_int_cmd_width,
    134134                       dspin_int_rsp_width,
     
    136136
    137137    VciMemCache<vci_param_int,
    138                 vci_param_ext, 
    139                 dspin_int_rsp_width, 
     138                vci_param_ext,
     139                dspin_int_rsp_width,
    140140                dspin_int_cmd_width>*                 memc;
    141141
     
    151151
    152152    VciLocalCrossbar<vci_param_int>*                  int_xbar_d;
    153    
     153
    154154    VciDspinInitiatorWrapper<vci_param_int,
    155155                             dspin_int_cmd_width,
     
    172172                          dspin_ram_cmd_width,
    173173                          dspin_ram_rsp_width>*       xram_ram_wt;
    174    
     174
    175175    DspinRouter<dspin_ram_cmd_width>*                 ram_router_cmd;
    176176    DspinRouter<dspin_ram_rsp_width>*                 ram_router_rsp;
     
    178178    DspinLocalCrossbar<dspin_ram_cmd_width>*          ram_xbar_cmd;
    179179    DspinLocalCrossbar<dspin_ram_rsp_width>*          ram_xbar_rsp;
    180    
     180
    181181
    182182    // IO Network Components (not instanciated in all clusters)
     
    191191    // cluster constructor
    192192    TsarIobCluster( sc_module_name                     insname,
    193                     size_t                             nb_procs,   
    194                     size_t                             nb_dmas, 
     193                    size_t                             nb_procs,
     194                    size_t                             nb_dmas,
    195195                    size_t                             x,             // x coordinate
    196196                    size_t                             y,             // y coordinate
    197                     size_t                             xmax,
    198                     size_t                             ymax,
     197                    size_t                             x_size,
     198                    size_t                             y_size,
     199
     200                    size_t                             p_width,       // pid field bits
    199201
    200202                    const soclib::common::MappingTable &mt_int,
     
    226228                    size_t                             memc_sets,
    227229                    size_t                             l1_i_ways,
    228                     size_t                             l1_i_sets, 
     230                    size_t                             l1_i_sets,
    229231                    size_t                             l1_d_ways,
    230                     size_t                             l1_d_sets,   
    231                     size_t                             xram_latency, 
     232                    size_t                             l1_d_sets,
     233                    size_t                             xram_latency,
    232234                    size_t                             xcu_nb_inputs,
    233235
     
    236238                    const Loader                       &loader,       // loader for XRAM
    237239
    238                     uint32_t                           frozen_cycles, 
     240                    uint32_t                           frozen_cycles,
    239241                    uint32_t                           start_debug_cycle,
    240                     bool                               memc_debug_ok, 
    241                     bool                               proc_debug_ok, 
    242                     bool                               iob0_debug_ok ); 
     242                    bool                               memc_debug_ok,
     243                    bool                               proc_debug_ok,
     244                    bool                               iob0_debug_ok );
    243245
    244246  protected:
     
    247249
    248250    void init();
    249  
     251
    250252
    251253};
  • branches/reconfiguration/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/src/tsar_iob_cluster.cpp

    r748 r806  
    11//////////////////////////////////////////////////////////////////////////////
    22// File: tsar_iob_cluster.cpp
    3 // Author: Alain Greiner 
     3// Author: Alain Greiner
    44// Copyright: UPMC/LIP6
    55// Date : april 2013
    66// This program is released under the GNU public license
    77//////////////////////////////////////////////////////////////////////////////
    8 // Cluster(0,0) & Cluster(xmax-1,ymax-1) contains the IOB0 & IOB1 components.
     8// Cluster(0,0) & Cluster(x_size-1,y_size-1) contains the IOB0 & IOB1 components.
    99// These two clusters contain 6 extra components:
    1010// - 1 vci_io_bridge (connected to the 3 networks.
    1111// - 3 vci_dspin_wrapper for the IOB.
    12 // - 2 dspin_local_crossbar for commands and responses. 
     12// - 2 dspin_local_crossbar for commands and responses.
    1313//////////////////////////////////////////////////////////////////////////////
    1414
     
    3030//////////////////////////////////////////////////////////////////////////
    3131tmpl(/**/)::TsarIobCluster(
    32 //////////////////////////////////////////////////////////////////////////
    33                     sc_module_name                     insname,
    34                     size_t                             nb_procs,
    35                     size_t                             nb_dmas,
    36                     size_t                             x_id,
    37                     size_t                             y_id,
    38                     size_t                             xmax,
    39                     size_t                             ymax,
    40 
    41                     const soclib::common::MappingTable &mt_int,
    42                     const soclib::common::MappingTable &mt_ram,
    43                     const soclib::common::MappingTable &mt_iox,
    44 
    45                     size_t                             x_width,
    46                     size_t                             y_width,
    47                     size_t                             l_width,
    48 
    49                     size_t                             int_memc_tgt_id, // local index
    50                     size_t                             int_xicu_tgt_id, // local index
    51                     size_t                             int_mdma_tgt_id, // local index
    52                     size_t                             int_brom_tgt_id, // local index
    53                     size_t                             int_iobx_tgt_id, // local index
    54 
    55                     size_t                             int_proc_ini_id, // local index
    56                     size_t                             int_mdma_ini_id, // local index
    57                     size_t                             int_iobx_ini_id, // local index
    58 
    59                     size_t                             ram_xram_tgt_id, // local index
    60                     size_t                             ram_memc_ini_id, // local index
    61                     size_t                             ram_iobx_ini_id, // local index
    62 
    63                     bool                               is_io,           // is IO cluster (IOB)?
    64                     size_t                             iox_iobx_tgt_id, // local_index
    65                     size_t                             iox_iobx_ini_id, // local index
    66 
    67                     size_t                             memc_ways,
    68                     size_t                             memc_sets,
    69                     size_t                             l1_i_ways,
    70                     size_t                             l1_i_sets,
    71                     size_t                             l1_d_ways,
    72                     size_t                             l1_d_sets,
    73                     size_t                             xram_latency,
    74                     size_t                             xcu_nb_inputs,
    75 
    76                     bool                               distboot,
    77 
    78                     const Loader                       &loader,
    79 
    80                     uint32_t                           frozen_cycles,
    81                     uint32_t                           debug_start_cycle,
    82                     bool                               memc_debug_ok,
    83                     bool                               proc_debug_ok,
    84                     bool                               iob_debug_ok )
    85     : soclib::caba::BaseModule(insname),
    86       p_clk("clk"),
    87       p_resetn("resetn")
     32        sc_module_name                     insname,
     33        size_t                             nb_procs,
     34        size_t                             nb_dmas,
     35        size_t                             x_id,
     36        size_t                             y_id,
     37        size_t                             x_size,
     38        size_t                             y_size,
     39
     40        size_t                             p_width,
     41
     42        const soclib::common::MappingTable &mt_int,
     43        const soclib::common::MappingTable &mt_ram,
     44        const soclib::common::MappingTable &mt_iox,
     45
     46        size_t                             x_width,
     47        size_t                             y_width,
     48        size_t                             l_width,
     49
     50        size_t                             int_memc_tgt_id, // local index
     51        size_t                             int_xicu_tgt_id, // local index
     52        size_t                             int_mdma_tgt_id, // local index
     53        size_t                             int_brom_tgt_id, // local index
     54        size_t                             int_iobx_tgt_id, // local index
     55
     56        size_t                             int_proc_ini_id, // local index
     57        size_t                             int_mdma_ini_id, // local index
     58        size_t                             int_iobx_ini_id, // local index
     59
     60        size_t                             ram_xram_tgt_id, // local index
     61        size_t                             ram_memc_ini_id, // local index
     62        size_t                             ram_iobx_ini_id, // local index
     63
     64        bool                               is_io,           // is IO cluster (IOB)?
     65        size_t                             iox_iobx_tgt_id, // local_index
     66        size_t                             iox_iobx_ini_id, // local index
     67
     68        size_t                             memc_ways,
     69        size_t                             memc_sets,
     70        size_t                             l1_i_ways,
     71        size_t                             l1_i_sets,
     72        size_t                             l1_d_ways,
     73        size_t                             l1_d_sets,
     74        size_t                             xram_latency,
     75        size_t                             xcu_nb_inputs,
     76
     77        bool                               distboot,
     78
     79        const Loader                       &loader,
     80
     81        uint32_t                           frozen_cycles,
     82        uint32_t                           debug_start_cycle,
     83        bool                               memc_debug_ok,
     84        bool                               proc_debug_ok,
     85        bool                               iob_debug_ok ) :
     86
     87            // constructor initialization list
     88
     89            soclib::caba::BaseModule(insname),
     90            p_clk("clk"),
     91            p_resetn("resetn")
    8892{
    89     assert( (x_id < xmax) and (y_id < ymax) and "Illegal cluster coordinates");
    90 
    91     size_t cluster_id = (x_id<<4) + y_id;
     93
     94    assert( (x_id < x_size) and (y_id < y_size) and "Illegal cluster coordinates");
     95
     96    size_t cluster_id = (x_id << x_width) | y_id;
    9297
    9398    // Vectors of DSPIN ports for inter-cluster communications
     
    103108
    104109    // VCI ports from IOB to IOX network (only in IO clusters)
    105     if ( is_io )
     110    if (is_io)
    106111    {
    107112        p_vci_iob_iox_ini = new soclib::caba::VciInitiator<vci_param_ext>;
    108         p_vci_iob_iox_tgt = new soclib::caba::VciTarget<vci_param_ext>; 
     113        p_vci_iob_iox_tgt = new soclib::caba::VciTarget<vci_param_ext>;
    109114    }
    110115
     
    115120    ////////////  PROCS
    116121    for (size_t p = 0; p < nb_procs; p++)
    117     { 
     122    {
    118123        std::ostringstream s_proc;
    119124        s_proc << "proc_" << x_id << "_" << y_id << "_" << p;
     
    123128                                         GdbServer<Mips32ElIss> >(
    124129                      s_proc.str().c_str(),
    125                       cluster_id*nb_procs + p,        // GLOBAL PROC_ID
     130                      (cluster_id << p_width) | p,    // GLOBAL PROC_ID
    126131                      mt_int,                         // Mapping Table INT network
    127132                      IntTab(cluster_id,p),           // SRCID
    128                       (cluster_id << l_width) + p,    // CC_GLOBAL_ID
     133                      (cluster_id << l_width) | p,    // CC_GLOBAL_ID
    129134                      8,                              // ITLB ways
    130135                      8,                              // ITLB sets
     
    135140                      4,                              // WBUF nlines
    136141                      4,                              // WBUF nwords
    137                       x_width,
    138                       y_width,
     142                      x_width,                        // number of bits for x coordinate
     143                      y_width,                        // number of bits for y coordinate
    139144                      frozen_cycles,                  // max frozen cycles
    140145                      debug_start_cycle,
     
    150155    }
    151156
    152     ///////////  MEMC   
     157    ///////////  MEMC
    153158    std::ostringstream s_memc;
    154159    s_memc << "memc_" << x_id << "_" << y_id;
     
    225230                     cluster_id,                   // cluster id
    226231                     nb_direct_initiators,         // number of local initiators
    227                      nb_direct_targets,            // number of local targets 
     232                     nb_direct_targets,            // number of local targets
    228233                     0 );                          // default target
    229234
     
    255260                     x_width, y_width, l_width,    // several dests
    256261                     1,                            // number of local sources
    257                      nb_procs,                     // number of local dests 
    258                      2, 2,                         // fifo depths 
     262                     nb_procs,                     // number of local dests
     263                     2, 2,                         // fifo depths
    259264                     true,                         // pseudo CMD
    260265                     false,                        // no routing table
     
    270275                     nb_procs,                     // number of local sources
    271276                     1,                            // number of local dests
    272                      2, 2,                         // fifo depths 
     277                     2, 2,                         // fifo depths
    273278                     false,                        // pseudo RSP
    274279                     false,                        // no routing table
    275                      false );                      // no broacast 
     280                     false );                      // no broacast
    276281
    277282    std::ostringstream s_int_xbar_clack_c;
     
    283288                     x_width, y_width, l_width,
    284289                     1,                            // number of local sources
    285                      nb_procs,                     // number of local targets 
     290                     nb_procs,                     // number of local targets
    286291                     1, 1,                         // fifo depths
    287292                     true,                         // CMD
     
    297302                     x_width, y_width,             // x & y fields width
    298303                     3,                            // nb virtual channels
    299                      4,4);                         // input & output fifo depths
     304                     4, 4);                        // input & output fifo depths
    300305
    301306    std::ostringstream s_int_router_rsp;
     
    306311                     x_width, y_width,             // x & y fields width
    307312                     2,                            // nb virtual channels
    308                      4,4);                         // input & output fifo depths
     313                     4, 4);                        // input & output fifo depths
    309314
    310315    //////////////  XRAM
     
    351356        ///////////  IO_BRIDGE
    352357        std::ostringstream s_iob;
    353         s_iob << "iob_" << x_id << "_" << y_id;   
     358        s_iob << "iob_" << x_id << "_" << y_id;
    354359        iob = new VciIoBridge<vci_param_int,
    355                               vci_param_ext>( 
     360                              vci_param_ext>(
    356361                     s_iob.str().c_str(),
    357362                     mt_ram,                                // EXT network maptab
     
    367372                     debug_start_cycle,
    368373                     iob_debug_ok );
    369        
     374
    370375        std::ostringstream s_iob_ram_wi;
    371         s_iob_ram_wi << "iob_ram_wi_" << x_id << "_" << y_id;   
     376        s_iob_ram_wi << "iob_ram_wi_" << x_id << "_" << y_id;
    372377        iob_ram_wi = new VciDspinInitiatorWrapper<vci_param_ext,
    373378                                                  dspin_ram_cmd_width,
     
    409414    // on coherence network : local srcid[proc] in [0...nb_procs-1]
    410415    //                      : local srcid[memc] = nb_procs
    411  
     416
    412417    //////////////////////// internal CMD & RSP routers
    413418    int_router_cmd->p_clk                        (this->p_clk);
     
    438443    int_router_cmd->p_in[4][1]                   (signal_int_dspin_m2p_l2g_c);
    439444    int_router_cmd->p_in[4][2]                   (signal_int_dspin_clack_l2g_c);
    440    
     445
    441446    int_router_rsp->p_out[4][0]                  (signal_int_dspin_rsp_g2l_d);
    442447    int_router_rsp->p_out[4][1]                  (signal_int_dspin_p2m_g2l_c);
     
    475480    int_wt_gate_d->p_dspin_cmd                   (signal_int_dspin_cmd_g2l_d);
    476481    int_wt_gate_d->p_dspin_rsp                   (signal_int_dspin_rsp_l2g_d);
    477    
     482
    478483    ////////////////////// M2P DSPIN local crossbar coherence
    479484    int_xbar_m2p_c->p_clk                        (this->p_clk);
     
    482487    int_xbar_m2p_c->p_global_in                  (signal_int_dspin_m2p_g2l_c);
    483488    int_xbar_m2p_c->p_local_in[0]                (signal_int_dspin_m2p_memc);
    484     for (size_t p = 0; p < nb_procs; p++) 
     489    for (size_t p = 0; p < nb_procs; p++)
    485490        int_xbar_m2p_c->p_local_out[p]           (signal_int_dspin_m2p_proc[p]);
    486491
     
    491496    int_xbar_p2m_c->p_global_in                  (signal_int_dspin_p2m_g2l_c);
    492497    int_xbar_p2m_c->p_local_out[0]               (signal_int_dspin_p2m_memc);
    493     for (size_t p = 0; p < nb_procs; p++) 
     498    for (size_t p = 0; p < nb_procs; p++)
    494499        int_xbar_p2m_c->p_local_in[p]            (signal_int_dspin_p2m_proc[p]);
    495500
     
    533538        else if ( i <= nb_dmas ) xicu->p_hwi[i]  (signal_irq_mdma[i-1]);
    534539        else                     xicu->p_hwi[i]  (signal_false);
    535     }                     
     540    }
    536541
    537542    ///////////////////////////////////// MEMC
     
    603608       ram_router_rsp->p_out[4]                  (signal_ram_dspin_rsp_memc_i);
    604609    }
    605    
    606     ///////////////////////// IOB exists only in cluster_iob0 & cluster_iob1. 
     610
     611    ///////////////////////// IOB exists only in cluster_iob0 & cluster_iob1.
    607612    if ( is_io )
    608613    {
Note: See TracChangeset for help on using the changeset viewer.