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

Replace the vci_mwmr_dma hardware component by the vci_multi_dma component.

Location:
trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/metadata/tsar_iob_cluster.sd

    r1002 r1051  
    2929        Uses('common:iss2'),
    3030        Uses('common:elf_file_loader'),
    31         Uses('caba:coproc_signals'),
    3231
    3332        # internal network components
     
    4847              cell_size          = parameter.Reference('vci_data_width_int')),
    4948
    50         Uses('caba:vci_mwmr_dma',
     49        Uses('caba:vci_multi_dma',
    5150              cell_size          = parameter.Reference('vci_data_width_int')),
    52 
    53         Uses('caba:coproc_gcd'),
    54         Uses('caba:coproc_dct'),
    55         Uses('caba:coproc_cpy'),
    5651
    5752        Uses('caba:vci_local_crossbar',
  • trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h

    r1050 r1051  
    2727#include "vci_dspin_target_wrapper.h"
    2828#include "dspin_router.h"
    29 #include "vci_mwmr_dma.h"
     29#include "vci_multi_dma.h"
    3030#include "vci_mem_cache.h"
    3131#include "vci_cc_vcache_wrapper.h"
    3232#include "vci_io_bridge.h"
    33 #include "coproc_signals.h"
    34 #include "coproc_gcd.h"
    35 #include "coproc_dct.h"
    36 #include "coproc_cpy.h"
    3733
    3834namespace soclib { namespace caba   {
     
    8076    sc_signal<bool>                       signal_false;
    8177    sc_signal<bool>                       signal_proc_it[32];
    82     sc_signal<bool>                       signal_irq_mwmr;
     78    sc_signal<bool>                       signal_irq_mdma[8];
    8379    sc_signal<bool>                       signal_irq_memc;
    8480   
    85     // Coprocessor signals
    86     CoprocSignals<uint32_t,uint8_t>       signal_to_coproc[8];
    87     CoprocSignals<uint32_t,uint8_t>       signal_from_coproc[8];
    88     sc_signal<uint32_t>                   signal_config_coproc[8];
    89     sc_signal<uint32_t>                   signal_status_coproc[8];
    90 
    9181    // INT network DSPIN signals between DSPIN routers and DSPIN local_crossbars
    9282    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_l2g_d;
     
    10797    // INT network VCI signals between VCI components and VCI local crossbar
    10898    VciSignals<vci_param_int>             signal_int_vci_ini_proc[8];
    109     VciSignals<vci_param_int>             signal_int_vci_ini_mwmr;
     99    VciSignals<vci_param_int>             signal_int_vci_ini_mdma;
    110100    VciSignals<vci_param_int>             signal_int_vci_ini_iobx;
    111101
    112102    VciSignals<vci_param_int>             signal_int_vci_tgt_memc;
    113103    VciSignals<vci_param_int>             signal_int_vci_tgt_xicu;
    114     VciSignals<vci_param_int>             signal_int_vci_tgt_mwmr;
     104    VciSignals<vci_param_int>             signal_int_vci_tgt_mdma;
    115105    VciSignals<vci_param_int>             signal_int_vci_tgt_iobx;
    116106
     
    163153    VciXicu<vci_param_int>*                           xicu;
    164154
    165     VciMwmrDma<vci_param_int>*                        mwmr;
    166 
    167     CoprocGcd*                                        gcd;
    168     CoprocDct*                                        dct;
    169     CoprocCpy*                                        cpy;
     155    VciMultiDma<vci_param_int>*                       mdma;
    170156
    171157    VciLocalCrossbar<vci_param_int>*                  int_xbar_d;
     
    229215                    size_t                             int_memc_tgt_id,
    230216                    size_t                             int_xicu_tgt_id,
    231                     size_t                             int_mwmr_tgt_id,
     217                    size_t                             int_mdma_tgt_id,
    232218                    size_t                             int_iobx_tgt_id,
    233219                    size_t                             int_proc_ini_id,
    234                     size_t                             int_mwmr_ini_id,
     220                    size_t                             int_mdma_ini_id,
    235221                    size_t                             int_iobx_ini_id,
    236222
  • 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.