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
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/tsar_generic_iob/arch_info.py

    r1050 r1051  
    3131#  - fbf_width      : frame_buffer width = frame_buffer heigth
    3232#  - ioc_type       : can be 'IOC_BDV','IOC_HBA','IOC_SDC', 'IOC_SPI','NONE'
    33 #  - mwr_type       : can be 'MWR_GCD','MWR_DCT','MWR_CPY','NONE'
    3433#  - io_cxy         : IO cluster identifier
    3534#  - boot_cxy       : boot cluster identifier
     
    5352          fbf_width     = 128,
    5453          ioc_type      = 'IOC_BDV',
    55           mwr_type      = 'MWR_CPY',
    5654          io_cxy        = 0,
    5755          boot_cxy      = 0,
     
    8381    assert( ioc_type in ['IOC_BDV','IOC_HBA','IOC_SDC','IOC_SPI','IOC_RDK'] )
    8482
    85     assert( mwr_type in ['MWR_GCD','MWR_DCT','MWR_CPY'] )
    86 
    8783    assert( (io_cxy == 0) or (io_cxy == ((x_size-1)<<y_width) + (y_size-1)) )
    8884
     
    10399    xcu_size = 0x1000                      # 4 Kbytes
    104100
    105     mwr_base = 0x00B1000000
    106     mwr_size = 0x1000                      # 4 Kbytes
     101    dma_base = 0x00B1000000
     102    dma_size = 0x1000                      # 4 Kbytes
    107103
    108104    mmc_base = 0x00B2000000
     
    170166                                   size     = xcu_size,
    171167                                   channels = 1,
    172                                    arg0     = 16,
    173                                    arg1     = 16,
    174                                    arg2     = 16,
    175                                    arg3     = 16 )
     168                                   arg0     = 16,              # number of HWIs
     169                                   arg1     = 16,              # number of WTIs
     170                                   arg2     = 16,              # number of PTIs
     171                                   arg3     = 16 )             # number of output IRQs
    176172
    177173            mmc = archi.addDevice( ptype    = 'MMC_TSR',
     
    181177            archi.addIrq( dstdev = xcu, port = 0, srcdev = mmc )
    182178
    183             if ( mwr_type == 'MWR_GCD' ):
    184                 mwr = archi.addDevice( ptype = 'MWR_GCD',
    185                                        base  = mwr_base + offset,
    186                                        size  = mwr_size,
    187                                        arg0  = 2,
    188                                        arg1  = 1,
    189                                        arg2  = 1,
    190                                        arg3  = 0 )
    191                 archi.addIrq( dstdev = xcu, port = 1, srcdev = mwr )
    192 
    193             if ( mwr_type == 'MWR_DCT' ):
    194                 mwr = archi.addDevice( ptype = 'MWR_DCT',
    195                                        base  = mwr_base + offset,
    196                                        size  = mwr_size,
    197                                        arg0  = 1,
    198                                        arg1  = 1,
    199                                        arg2  = 1,
    200                                        arg3  = 0 )
    201                 archi.addIrq( dstdev = xcu, port = 1, srcdev = mwr )
    202 
    203             if ( mwr_type == 'MWR_CPY' ):
    204                 mwr = archi.addDevice( ptype = 'MWR_CPY',
    205                                        base  = mwr_base + offset,
    206                                        size  = mwr_size,
    207                                        arg0  = 1,
    208                                        arg1  = 1,
    209                                        arg2  = 1,
    210                                        arg3  = 0 )
    211                 archi.addIrq( dstdev = xcu, port = 1, srcdev = mwr )
     179            dma = archi.addDevice( ptype    = 'DMA_SCL',
     180                                   base     = dma_base + offset,
     181                                   size     = dma_size,
     182                                   channels = nb_cores )
     183
     184            archi.addIrq( dstdev = xcu, port = 1, srcdev = dma, channel = 0 )
     185            archi.addIrq( dstdev = xcu, port = 2, srcdev = dma, channel = 1 )
     186            archi.addIrq( dstdev = xcu, port = 3, srcdev = dma, channel = 2 )
     187            archi.addIrq( dstdev = xcu, port = 4, srcdev = dma, channel = 3 )
    212188
    213189            # define external devices
    214190            if( cxy == io_cxy ):
     191
     192                pic = archi.addDevice( ptype    ='PIC_TSR',
     193                                       base     = pic_base + offset,
     194                                       size     = pic_size,
     195                                       arg0     = 32 )         # number of input IRQs
    215196
    216197                iob = archi.addDevice( ptype    = 'IOB_TSR',
     
    241222                                       base     = rom_base + offset,
    242223                                       size     = rom_size )
    243 
    244                 pic = archi.addDevice( ptype    ='PIC_TSR',
    245                                        base     = pic_base + offset,
    246                                        size     = pic_size,
    247                                        arg0     = 32 )
    248224
    249225                archi.addIrq( dstdev = pic, port = 0 , srcdev = nic, channel = 0 , is_rx = True )
  • trunk/platforms/tsar_generic_iob/top.cpp

    r1050 r1051  
    5050// - One L2 cache controller
    5151// - One XICU component,
    52 // - One - optional - single channel DMA controler,
    53 // - One - optional - hardware coprocessor
     52// - One multi channels DMA controler (number of channels is defined by nprocs)
    5453// The XICU component is mainly used to handle WTI IRQs, as at most
    55 // 2 HWI IRQs are connected to XICU in each cluster:
     54// (nprocs + 1) HWI IRQs are connected to XICU in each cluster:
    5655// - IRQ_IN[0]            : MMC
    57 // - IRQ_IN[1]            : MWR
     56// - IRQ_IN[1 to nprocs]  : DMA
    5857//
    5958// All clusters are identical, but cluster(0,0) and cluster(XMAX-1,YMAX-1)
     
    151150
    152151//////////////////////////////////////////////////////////////////
    153 //    Coprocessor type (must be replicated in tsar_iob_cluster)
    154 //////////////////////////////////////////////////////////////////
    155 
    156 #define MWR_COPROC_CPY  0
    157 #define MWR_COPROC_DCT  1
    158 #define MWR_COPROC_GCD  2
    159 
    160 //////////////////////////////////////////////////////////////////
    161152//      Virtual disk selection => OS selection
    162153//////////////////////////////////////////////////////////////////
     
    271262// Two different initiators cannot have the same SRCID, but a given
    272263// initiator can have two alias SRCIDs:
    273 // - Internal initiators (procs, mwmr) are replicated in all clusters,
     264// - Internal initiators (procs, mdma) are replicated in all clusters,
    274265//   and each initiator has one single SRCID.
    275266// - External initiators (disk, cdma) are not replicated, but can be
     
    285276
    286277#define PROC_LOCAL_SRCID             0x0    // from 0 to 7
    287 #define MWMR_LOCAL_SRCID             0x8
     278#define MDMA_LOCAL_SRCID             0x8
    288279#define IOBX_LOCAL_SRCID             0x9
    289280#define MEMC_LOCAL_SRCID             0xA
     
    299290#define INT_MEMC_TGT_ID              0
    300291#define INT_XICU_TGT_ID              1
    301 #define INT_MWMR_TGT_ID              2
     292#define INT_MDMA_TGT_ID              2
    302293#define INT_IOBX_TGT_ID              3
    303294
    304295#define INT_PROC_INI_ID              0   // from 0 to (NB_PROCS_MAX-1)
    305 #define INT_MWMR_INI_ID              (NB_PROCS_MAX)
     296#define INT_MDMA_INI_ID              (NB_PROCS_MAX)
    306297#define INT_IOBX_INI_ID              (NB_PROCS_MAX+1)
    307298
     
    478469   "Error in tsar_generic_iob : You must have X_WIDTH == Y_WIDTH == 4");
    479470
    480    assert(  ((USE_MWR_CPY + USE_MWR_GCD + USE_MWR_DCT) == 1) and
    481    "Error in tsar_generic_iob : No MWR coprocessor found in hard_config.h");
    482 
    483471   assert(  ((USE_IOC_HBA + USE_IOC_BDV + USE_IOC_SDC) == 1) and
    484472   "Error in tsar_generic_iob : NoIOC controller found in hard_config.h");
     
    536524   // - two levels address decoding for commands
    537525   // - two levels srcid decoding for responses
    538    // - NB_PROCS_MAX + 2 (MWMR, IOBX) local initiators per cluster
    539    // - 4 local targets (MEMC, XICU, MWMR, IOBX) per cluster
     526   // - NB_PROCS_MAX + 2 (MDMA, IOBX) local initiators per cluster
     527   // - 4 local targets (MEMC, XICU, MDMA, IOBX) per cluster
    540528   /////////////////////////////////////////////////////////////////////
    541529   MappingTable maptab_int( vci_address_width,
     
    570558                     IntTab(cluster(x,y), INT_XICU_TGT_ID), not cacheable));
    571559
    572          std::ostringstream    smwmr;
    573          smwmr << "int_seg_mwmr_" << x << "_" << y;
    574          maptab_int.add(Segment(smwmr.str(), SEG_MWR_BASE+offset, SEG_MWR_SIZE,
    575                      IntTab(cluster(x,y), INT_MWMR_TGT_ID), not cacheable));
     560         std::ostringstream    smdma;
     561         smdma << "int_seg_mdma_" << x << "_" << y;
     562         maptab_int.add(Segment(smdma.str(), SEG_DMA_BASE+offset, SEG_DMA_SIZE,
     563                     IntTab(cluster(x,y), INT_MDMA_TGT_ID), not cacheable));
    576564
    577565         // the following segments are only defined in cluster_iob0 or in cluster_iob1
     
    618606         // and the port index on the local interconnect.
    619607
    620          maptab_int.srcid_map( IntTab( cluster(x,y), MWMR_LOCAL_SRCID ),
    621                                IntTab( cluster(x,y), INT_MWMR_INI_ID ) );
     608         maptab_int.srcid_map( IntTab( cluster(x,y), MDMA_LOCAL_SRCID ),
     609                               IntTab( cluster(x,y), INT_MDMA_INI_ID ) );
    622610
    623611         maptab_int.srcid_map( IntTab( cluster(x,y), IOBX_LOCAL_SRCID ),
     
    11141102                   dspin_ram_rsp_width>* clusters[XMAX][YMAX];
    11151103
    1116     unsigned int coproc_type;
    1117     if ( USE_MWR_CPY ) coproc_type = MWR_COPROC_CPY;
    1118     if ( USE_MWR_DCT ) coproc_type = MWR_COPROC_DCT;
    1119     if ( USE_MWR_GCD ) coproc_type = MWR_COPROC_GCD;
     1104    unsigned int coproc_type = 0;
    11201105
    11211106#if USE_OPENMP
     
    11761161                INT_MEMC_TGT_ID,
    11771162                INT_XICU_TGT_ID,
    1178                 INT_MWMR_TGT_ID,
     1163                INT_MDMA_TGT_ID,
    11791164                INT_IOBX_TGT_ID,
    11801165
    11811166                INT_PROC_INI_ID,
    1182                 INT_MWMR_INI_ID,
     1167                INT_MDMA_INI_ID,
    11831168                INT_IOBX_INI_ID,
    11841169
     
    16921677                clusters[x][y]->signal_int_vci_ini_proc[l].print_trace(proc_signame.str());
    16931678
     1679                // XICU
    16941680                clusters[x][y]->xicu->print_trace(1);
    16951681                std::ostringstream xicu_signame;
     
    16971683                clusters[x][y]->signal_int_vci_tgt_xicu.print_trace(xicu_signame.str());
    16981684
    1699                 // coprocessor in cluster(x,y)
    1700 //              clusters[x][y]->mwmr->print_trace();
    1701 //              std::ostringstream mwmr_tgt_signame;
    1702 //              mwmr_tgt_signame << "[SIG]MWMR_TGT_" << x << "_" << y;
    1703 //              clusters[x][y]->signal_int_vci_tgt_mwmr.print_trace(mwmr_tgt_signame.str());
    1704 //              std::ostringstream mwmr_ini_signame;
    1705 //              mwmr_ini_signame << "[SIG]MWMR_INI_" << x << "_" << y;
    1706 //              clusters[x][y]->signal_int_vci_ini_mwmr.print_trace(mwmr_ini_signame.str());
    1707 //              if ( USE_MWR_CPY ) clusters[x][y]->cpy->print_trace();
    1708 //              if ( USE_MWR_DCT ) clusters[x][y]->dct->print_trace();
    1709 //              if ( USE_MWR_GCD ) clusters[x][y]->gcd->print_trace();
     1685                // MDMA
     1686//              clusters[x][y]->mdma->print_trace();
     1687//              std::ostringstream mdma_tgt_signame;
     1688//              mdma_tgt_signame << "[SIG]MDMA_TGT_" << x << "_" << y;
     1689//              clusters[x][y]->signal_int_vci_tgt_mdma.print_trace(mdma_tgt_signame.str());
     1690//              std::ostringstream mdma_ini_signame;
     1691//              mdma_ini_signame << "[SIG]MDMA_INI_" << x << "_" << y;
     1692//              clusters[x][y]->signal_int_vci_ini_mdma.print_trace(mdma_ini_signame.str());
    17101693
    17111694                // local interrupts in cluster(x,y)
     
    17141697                          << " ACTIVE" << std::endl;
    17151698
    1716                 if( clusters[x][y]->signal_irq_mwmr.read() )
    1717                 std::cout << "### IRQ_MWR_" << std::dec << x << "_" << y
    1718                           << " ACTIVE" << std::endl;
    1719 
    1720                 for ( size_t c = 0 ; c < NB_PROCS_MAX ; c++ )
     1699                for( size_t i = 0 ; i < NB_PROCS_MAX ; i++ )
    17211700                {
    1722                     if( clusters[x][y]->signal_proc_it[c<<2].read() )
    1723                     std::cout << "### IRQ_PROC_" << std::dec << x << "_" << y << "_" << c
     1701                    if( clusters[x][y]->signal_irq_mdma[i].read() )
     1702                    std::cout << "### IRQ_DMA_" << std::dec << x << "_" << y << "_" << i
     1703                              << " ACTIVE" << std::endl;
     1704
     1705                    if( clusters[x][y]->signal_proc_it[i<<2].read() )
     1706                    std::cout << "### IRQ_PROC_" << std::dec << x << "_" << y << "_" << i
    17241707                              << " ACTIVE" << std::endl;
    17251708                }
  • 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.