Ignore:
Timestamp:
Apr 11, 2017, 11:50:57 PM (7 years ago)
Author:
alain
Message:

Replace the vci_mwmr_dma hardware component by the vci_multi_dma component.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/src/tsar_iob_cluster.cpp

    r1050 r1051  
    1515#include "../include/tsar_iob_cluster.h"
    1616
    17 #define MWR_COPROC_CPY  0
    18 #define MWR_COPROC_DCT  1
    19 #define MWR_COPROC_GCD  2
    20 
    2117#define tmpl(x) \
    2218   template<typename vci_param_int      , typename vci_param_ext,\
     
    5147                    size_t                             int_memc_tgt_id, // local index
    5248                    size_t                             int_xicu_tgt_id, // local index
    53                     size_t                             int_mwmr_tgt_id, // local index
     49                    size_t                             int_mdma_tgt_id, // local index
    5450                    size_t                             int_iobx_tgt_id, // local index
    5551
    5652                    size_t                             int_proc_ini_id, // local index
    57                     size_t                             int_mwmr_ini_id, // local index
     53                    size_t                             int_mdma_ini_id, // local index
    5854                    size_t                             int_iobx_ini_id, // local index
    5955
     
    6258                    size_t                             ram_iobx_ini_id, // local index
    6359
    64                     bool                               is_io,           // is IO cluster (IOB)?
     60                    bool                               is_io,           // is IO cluster (
    6561                    size_t                             iox_iobx_tgt_id, // local_index
    6662                    size_t                             iox_iobx_ini_id, // local index
     
    213209                     xcu_nb_out);                         // number of output IRQs
    214210
    215     ////////////  MWMR controller and COPROC  ////////////////////////////////////////
    216     std::ostringstream s_mwmr;
    217     std::ostringstream s_copro;
    218     s_mwmr << "mwmr_" << x_id << "_" << y_id;
    219 
    220     if ( coproc_type ==  MWR_COPROC_CPY)
    221     {
    222         s_copro << "cpy_" << x_id << "_" << y_id;
    223         cpy = new CoprocCpy( s_copro.str().c_str(), 64 );       // burst size
    224 
    225         mwmr = new VciMwmrDma<vci_param_int>(
    226                      s_mwmr.str().c_str(),
     211    ////////////  MDMA  //////////////////////////////////////////////////////////////
     212    std::ostringstream s_mdma;
     213    s_mdma << "mdma_" << x_id << "_" << y_id;
     214    mdma = new VciMultiDma<vci_param_int>(
     215                     s_mdma.str().c_str(),
    227216                     mt_int,
    228                      IntTab(cluster_id, int_mwmr_ini_id), // SRCID
    229                      IntTab(cluster_id, int_mwmr_tgt_id), // TGTID
    230                      1,                                   // nb to_coproc ports
    231                      1,                                   // nb from_coproc ports
    232                      1,                                   // nb config registers
    233                      0,                                   // nb status registers
    234                      64 );                                // burst size (bytes)
    235     }
    236     if ( coproc_type == MWR_COPROC_DCT )
    237     {
    238         s_copro << "dct_" << x_id << "_" << y_id;
    239         dct = new CoprocDct( s_copro.str().c_str(), 64 , 16 );  // burst size / latency
    240 
    241         mwmr = new VciMwmrDma<vci_param_int>(
    242                      s_mwmr.str().c_str(),
    243                      mt_int,
    244                      IntTab(cluster_id, int_mwmr_ini_id), // SRCID
    245                      IntTab(cluster_id, int_mwmr_tgt_id), // TGTID
    246                      1,                                   // nb to_coproc ports
    247                      1,                                   // nb from_coproc ports
    248                      1,                                   // nb config registers
    249                      0,                                   // nb status registers
    250                      64 );                                // burst size (bytes)
    251     }
    252     if ( coproc_type == MWR_COPROC_GCD )
    253     {
    254         s_copro << "gcd_" << x_id << "_" << y_id;
    255         gcd = new CoprocGcd( s_copro.str().c_str(), 64 );       // burst size
    256 
    257         mwmr = new VciMwmrDma<vci_param_int>(
    258                      s_mwmr.str().c_str(),
    259                      mt_int,
    260                      IntTab(cluster_id, int_mwmr_ini_id), // SRCID
    261                      IntTab(cluster_id, int_mwmr_tgt_id), // TGTID
    262                      2,                                   // nb to_coproc ports
    263                      1,                                   // nb from_coproc ports
    264                      1,                                   // nb config registers
    265                      0,                                   // nb status registers
    266                      64 );                                // burst size (bytes)
    267     }
     217                     IntTab(cluster_id, int_mdma_ini_id), // SRCID
     218                     IntTab(cluster_id, int_mdma_tgt_id), // TGTID
     219                     64,                                  // burst size
     220                     nb_procs );                          // number of channels
    268221
    269222    ///////////  VCI INT_CMD/RSP LOCAL_XBAR  //////////////////////////////////////
     
    526479    for ( size_t i=0 ; i < xcu_nb_hwi ; i++)
    527480    {
    528         if      ( i == 0 )       xicu->p_hwi[i]  (signal_irq_memc);
    529         else if ( i == 1 )       xicu->p_hwi[i]  (signal_irq_mwmr);
    530         else                     xicu->p_hwi[i]  (signal_false);
     481        if      ( i == 0 )           xicu->p_hwi[i]  (signal_irq_memc);
     482        else if ( i < (nb_procs+1) ) xicu->p_hwi[i]  (signal_irq_mdma[i-1]);
     483        else                         xicu->p_hwi[i]  (signal_false);
    531484    }
    532485
     
    566519    std::cout << "  - xram connected" << std::endl;
    567520
    568     /////////////////////////////////// GCD coprocessor
    569     if ( coproc_type == MWR_COPROC_GCD )
    570     {
    571         gcd->p_clk                               (this->p_clk);
    572         gcd->p_resetn                            (this->p_resetn);
    573         gcd->p_opa                               (signal_to_coproc[0]);
    574         gcd->p_opb                               (signal_to_coproc[1]);
    575         gcd->p_res                               (signal_from_coproc[0]);
    576         gcd->p_config                            (signal_config_coproc[0]);
    577 
    578         mwmr->p_clk                              (this->p_clk);
    579         mwmr->p_resetn                           (this->p_resetn);
    580         mwmr->p_vci_target                       (signal_int_vci_tgt_mwmr);
    581         mwmr->p_vci_initiator                    (signal_int_vci_ini_mwmr);
    582         mwmr->p_to_coproc[0]                     (signal_to_coproc[0]);
    583         mwmr->p_to_coproc[1]                     (signal_to_coproc[1]);
    584         mwmr->p_from_coproc[0]                   (signal_from_coproc[0]);
    585         mwmr->p_config[0]                        (signal_config_coproc[0]);
    586         mwmr->p_irq                              (signal_irq_mwmr);
    587     }
    588 
    589     /////////////////////////////////// DCT coprocessor
    590     if ( coproc_type == MWR_COPROC_DCT )
    591     {
    592         dct->p_clk                               (this->p_clk);
    593         dct->p_resetn                            (this->p_resetn);
    594         dct->p_in                                (signal_to_coproc[0]);
    595         dct->p_out                               (signal_from_coproc[0]);
    596         dct->p_config                            (signal_config_coproc[0]);
    597 
    598         mwmr->p_clk                              (this->p_clk);
    599         mwmr->p_resetn                           (this->p_resetn);
    600         mwmr->p_vci_target                       (signal_int_vci_tgt_mwmr);
    601         mwmr->p_vci_initiator                    (signal_int_vci_ini_mwmr);
    602         mwmr->p_to_coproc[0]                     (signal_to_coproc[0]);
    603         mwmr->p_from_coproc[0]                   (signal_from_coproc[0]);
    604         mwmr->p_config[0]                        (signal_config_coproc[0]);
    605         mwmr->p_irq                              (signal_irq_mwmr);
    606     }
    607 
    608     std::cout << "  - coproc connected" << std::endl;
    609 
    610     /////////////////////////////////// CPY coprocessor
    611     if ( coproc_type == MWR_COPROC_CPY )
    612     {
    613         cpy->p_clk                               (this->p_clk);
    614         cpy->p_resetn                            (this->p_resetn);
    615         cpy->p_load                              (signal_to_coproc[0]);
    616         cpy->p_store                             (signal_from_coproc[0]);
    617         cpy->p_config                            (signal_config_coproc[0]);
    618 
    619         mwmr->p_clk                              (this->p_clk);
    620         mwmr->p_resetn                           (this->p_resetn);
    621         mwmr->p_vci_target                       (signal_int_vci_tgt_mwmr);
    622         mwmr->p_vci_initiator                    (signal_int_vci_ini_mwmr);
    623         mwmr->p_to_coproc[0]                     (signal_to_coproc[0]);
    624         mwmr->p_from_coproc[0]                   (signal_from_coproc[0]);
    625         mwmr->p_config[0]                        (signal_config_coproc[0]);
    626         mwmr->p_irq                              (signal_irq_mwmr);
    627     }
     521    /////////////////////////////////// MDMA
     522    mdma->p_clk                                  (this->p_clk);
     523    mdma->p_resetn                               (this->p_resetn);
     524    mdma->p_vci_target                           (signal_int_vci_tgt_mdma);
     525    mdma->p_vci_initiator                        (signal_int_vci_ini_mdma);
     526    for( size_t i = 0 ; i < nb_procs ; i++ )
     527    {
     528        mdma->p_irq[i]                           (signal_irq_mdma[i]);
     529    }
     530
     531    std::cout << "  - mdma connected" << std::endl;
    628532
    629533    //////////////////////////// RAM NETWORK ROUTERS
     
    712616    int_xbar_d->p_to_target[int_memc_tgt_id]     (signal_int_vci_tgt_memc);
    713617    int_xbar_d->p_to_target[int_xicu_tgt_id]     (signal_int_vci_tgt_xicu);
    714     int_xbar_d->p_to_target[int_mwmr_tgt_id]     (signal_int_vci_tgt_mwmr);
    715     int_xbar_d->p_to_initiator[int_mwmr_ini_id]  (signal_int_vci_ini_mwmr);
     618    int_xbar_d->p_to_target[int_mdma_tgt_id]     (signal_int_vci_tgt_mdma);
     619    int_xbar_d->p_to_initiator[int_mdma_ini_id]  (signal_int_vci_ini_mdma);
    716620    for (size_t p = 0; p < nb_procs; p++)
    717621       int_xbar_d->p_to_initiator[int_proc_ini_id + p] (signal_int_vci_ini_proc[p]);
Note: See TracChangeset for help on using the changeset viewer.