Changeset 710


Ignore:
Timestamp:
Jun 10, 2014, 11:09:40 AM (10 years ago)
Author:
alain
Message:

Remove the multi-TTY capability: only one external TTY channel.
This reduce the number of external IRQs (i.e. the number of WTIs)
and we can now generate mono-cluster / mono-processor architecture.

Location:
trunk/platforms/tsar_generic_iob
Files:
2 edited

Legend:

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

    r707 r710  
    159159    cma = mapping.addPeriph( 'CMA', base = cma_base, size = cma_size, ptype = 'CMA', channels = 2*nb_nics )
    160160
    161     fbf = mapping.addPeriph( 'FBF', base = fbf_base, size = fbf_size, ptype = 'FBF', arg1 = 128, arg2 = 128 )
     161    fbf = mapping.addPeriph( 'FBF', base = fbf_base, size = fbf_size, ptype = 'FBF', arg = 128 )
    162162
    163163    rom = mapping.addPeriph( 'ROM', base = rom_base, size = rom_size, ptype = 'ROM' )
     
    165165    pic = mapping.addPeriph( 'PIC', base = pic_base, size = pic_size, ptype = 'PIC', channels = 32 )
    166166
    167     mapping.addIrq( pic, index = 0,  isrtype = 'ISR_NIC_RX', channel = 0 )
    168     mapping.addIrq( pic, index = 1,  isrtype = 'ISR_NIC_RX', channel = 1 )
    169     mapping.addIrq( pic, index = 2,  isrtype = 'ISR_NIC_TX', channel = 0 )
    170     mapping.addIrq( pic, index = 3,  isrtype = 'ISR_NIC_TX', channel = 1 )
    171 
    172     mapping.addIrq( pic, index = 4,  isrtype = 'ISR_CMA'   , channel = 0 )
    173     mapping.addIrq( pic, index = 5,  isrtype = 'ISR_CMA'   , channel = 1 )
    174     mapping.addIrq( pic, index = 6,  isrtype = 'ISR_CMA'   , channel = 2 )
    175     mapping.addIrq( pic, index = 7,  isrtype = 'ISR_CMA'   , channel = 3 )
    176 
    177     mapping.addIrq( pic, index = 8,  isrtype = 'ISR_BDV'   , channel = 0 )
    178 
    179     mapping.addIrq( pic, index = 16, isrtype = 'ISR_TTY_RX', channel = 0 )
    180     mapping.addIrq( pic, index = 17, isrtype = 'ISR_TTY_RX', channel = 1 )
    181     mapping.addIrq( pic, index = 18, isrtype = 'ISR_TTY_RX', channel = 2 )
    182     mapping.addIrq( pic, index = 19, isrtype = 'ISR_TTY_RX', channel = 3 )
    183     mapping.addIrq( pic, index = 20, isrtype = 'ISR_TTY_RX', channel = 4 )
    184     mapping.addIrq( pic, index = 21, isrtype = 'ISR_TTY_RX', channel = 5 )
    185     mapping.addIrq( pic, index = 22, isrtype = 'ISR_TTY_RX', channel = 6 )
    186     mapping.addIrq( pic, index = 23, isrtype = 'ISR_TTY_RX', channel = 7 )
     167    mapping.addIrq( pic, index = 0, isrtype = 'ISR_NIC_RX', channel = 0 )
     168    mapping.addIrq( pic, index = 1, isrtype = 'ISR_NIC_RX', channel = 1 )
     169
     170    mapping.addIrq( pic, index = 2, isrtype = 'ISR_NIC_TX', channel = 0 )
     171    mapping.addIrq( pic, index = 3, isrtype = 'ISR_NIC_TX', channel = 1 )
     172
     173    mapping.addIrq( pic, index = 4, isrtype = 'ISR_CMA'   , channel = 0 )
     174    mapping.addIrq( pic, index = 5, isrtype = 'ISR_CMA'   , channel = 1 )
     175    mapping.addIrq( pic, index = 6, isrtype = 'ISR_CMA'   , channel = 2 )
     176    mapping.addIrq( pic, index = 7, isrtype = 'ISR_CMA'   , channel = 3 )
     177
     178    mapping.addIrq( pic, index = 8, isrtype = 'ISR_BDV'   , channel = 0 )
     179
     180    mapping.addIrq( pic, index = 9, isrtype = 'ISR_TTY_RX', channel = 0 )
    187181
    188182    ### hardware components replicated in all clusters   
     
    202196
    203197            xcu = mapping.addPeriph( 'XCU', base = xcu_base + offset, size = xcu_size,
    204                                      ptype = 'XCU', channels = nb_procs * irq_per_proc,
    205                                      arg1 = 16, arg2 = 16, arg3 = 16 )
    206 
    207             # MMC IRQ replicated in all clusters
    208             mapping.addIrq( xcu, index = 0, isrtype = 'ISR_MMC' )
     198                                     ptype = 'XCU', channels = nb_procs * irq_per_proc, arg = 16 )
    209199
    210200            # DMA IRQs replicated in all clusters
     
    212202                mapping.addIrq( xcu, index = (p+1), isrtype = 'ISR_DMA', channel = p )
    213203           
     204            # MMC IRQ replicated in all clusters
     205            mapping.addIrq( xcu, index = 0, isrtype = 'ISR_MMC' )
     206
    214207            # processors
    215208            for p in xrange ( nb_procs ):
     
    273266                       vtype = 'PERI', x = 0, y = 0, pseg = 'ROM', identity = True )
    274267
    275     ### Global vsegs for replicated peripherals, and for scheduler
    276     ### Note: one vseg per cluster: the vseg name is indexed by (x,y)
    277     ### the vseg base address is incremented by (cluster_xy * 0x10000)
     268    ### Global vsegs for replicated peripherals, and for scheduler.
     269    ### A replicated vseg is replicated in all clusters: vseg name is indexed by (x,y),
     270    ### and vseg base address is incremented by (cluster_xy * 0x10000)
    278271
    279272    mapping.addGlobal( 'seg_xcu'  , xcu_base          , xcu_size         , '__W_',
  • trunk/platforms/tsar_generic_iob/top.cpp

    r707 r710  
    8282// - Y_SIZE           : number of clusters in a column
    8383// - NB_PROCS_MAX     : number of processors per cluster (power of 2)
    84 // - NB_TTY_CHANNELS  : number of TTY channels in I/O network (up to 16)
     84// - NB_TTY_CHANNELS  : number of TTY channels in I/O network (must be 1)
    8585// - NB_NIC_CHANNELS  : number of NIC channels in I/O network (up to 2)
    8686// - NB_CMA_CHANNELS  : number of CMA channels in I/O network (up to 4)
     
    415415         {
    416416            debug_memc_id = atoi(argv[n+1]);
     417
     418std::cout << "@@@@@@@@@@@@@@ MEMCID = " << debug_memc_id << std::endl;
     419
    417420            size_t x = debug_memc_id >> 4;
    418421            size_t y = debug_memc_id & 0xF;
     
    497500           "The NB_DMA_CHANNELS parameter cannot be larger than 4" );
    498501
    499    assert( (NB_TTY_CHANNELS < 16) and
    500            "The NB_TTY_CHANNELS parameter must be smaller than 16" );
     502   assert( (NB_TTY_CHANNELS == 1) and
     503           "The NB_TTY_CHANNELS parameter must be 1" );
    501504
    502505   assert( (NB_NIC_CHANNELS == 2) and
     
    507510             << " - YMAX            = " << YMAX << std::endl
    508511             << " - NB_PROCS_MAX    = " << NB_PROCS_MAX <<  std::endl
     512             << " - NB_TTY_CHANNELS = " << NB_TTY_CHANNELS <<  std::endl
    509513             << " - NB_DMA_CHANNELS = " << NB_DMA_CHANNELS <<  std::endl
    510              << " - NB_TTY_CHANNELS = " << NB_TTY_CHANNELS <<  std::endl
    511514             << " - NB_NIC_CHANNELS = " << NB_NIC_CHANNELS <<  std::endl
    512515             << " - MEMC_WAYS       = " << MEMC_WAYS << std::endl
     
    845848    sc_signal<bool>                   signal_irq_false;
    846849    sc_signal<bool>                   signal_irq_bdev;
     850    sc_signal<bool>                   signal_irq_mtty_rx;
    847851    sc_signal<bool>                   signal_irq_mnic_rx[NB_NIC_CHANNELS];
    848852    sc_signal<bool>                   signal_irq_mnic_tx[NB_NIC_CHANNELS];
    849     sc_signal<bool>                   signal_irq_mtty_rx[NB_TTY_CHANNELS];
    850 //  sc_signal<bool>                   signal_irq_mtty_tx[NB_TTY_CHANNELS];
    851853    sc_signal<bool>                   signal_irq_cdma[NB_CMA_CHANNELS];
    852854
     
    10281030                                       IntTab(0, IOPI_LOCAL_SRCID),
    10291031                                       IntTab(0, IOX_IOPI_TGT_ID),
    1030                                        32,          // number of input HWI             
    1031                                        5000 );      // period between WTI
     1032                                       32 );        // number of input HWI             
    10321033   // Clusters
    10331034   TsarIobCluster<vci_param_int,
     
    11881189    mtty->p_resetn                                       (signal_resetn);
    11891190    mtty->p_vci                                          (signal_vci_tgt_mtty);
    1190     for ( size_t i=0 ; i<NB_TTY_CHANNELS ; i++ )
    1191     {
    1192         mtty->p_irq[i]                                     (signal_irq_mtty_rx[i]);
    1193     }
     1191    mtty->p_irq[0]                                              (signal_irq_mtty_rx);
    11941192
    11951193    std::cout << "  - MTTY connected" << std::endl;
     
    12211219       else if(i < 8)                  iopi->p_hwi[i] (signal_irq_false);
    12221220       else if(i == 8)                 iopi->p_hwi[i] (signal_irq_bdev);
    1223        else if(i < 16)                 iopi->p_hwi[i] (signal_irq_false);
    1224        else if(i < 16+NB_TTY_CHANNELS) iopi->p_hwi[i] (signal_irq_mtty_rx[i-16]);
    1225        else if(i < 24)                 iopi->p_hwi[i] (signal_irq_false);
    1226        else if(i < 24+NB_TTY_CHANNELS) iopi->p_hwi[i] (signal_irq_false);
    1227 //     else if(i < 24+NB_TTY_CHANNELS) iopi->p_hwi[i] (signal_irq_mtty_tx[i-24]);
     1221       else if(i == 9)                 iopi->p_hwi[i] (signal_irq_mtty_rx);
    12281222       else                            iopi->p_hwi[i] (signal_irq_false);
    12291223    }
     
    16151609//              signal_vci_ini_cdma.print_trace("[SIG]IOX_CDMA_INI");
    16161610
    1617                 brom->print_trace();
    1618                 signal_vci_tgt_brom.print_trace("[SIG]IOX_BROM_TGT");
     1611//              brom->print_trace();
     1612//              signal_vci_tgt_brom.print_trace("[SIG]IOX_BROM_TGT");
    16191613
    16201614//              mtty->print_trace();
     
    16341628
    16351629                // interrupts
    1636                 if (signal_irq_bdev)       std::cout << "### IRQ_BDEV ACTIVE" << std::endl;
    1637                 if (signal_irq_mtty_rx[0]) std::cout << "### IRQ_MTTY ACTIVE" << std::endl;
     1630                if (signal_irq_bdev)    std::cout << "### IRQ_BDEV ACTIVE" << std::endl;
     1631                if (signal_irq_mtty_rx) std::cout << "### IRQ_MTTY ACTIVE" << std::endl;
    16381632            }
    16391633        }
Note: See TracChangeset for help on using the changeset viewer.