Ignore:
Timestamp:
Apr 5, 2015, 12:42:04 AM (10 years ago)
Author:
alain
Message:

Introduce a new parameter in the tsar_generic_iob SystemC architecture:
The top cell use now the hard_config.h file to select the block_device type:
If USE_IOC_HBA is set, it use the vci_multi_ahci controller.
Else, it use the vci_block_device_tsar component.

Location:
trunk/platforms/tsar_generic_iob
Files:
3 edited

Legend:

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

    r959 r965  
    1616#  This platform includes 6 external peripherals, accessible through an IOB
    1717#  components located in cluster [0,0] or in cluster [x_size-1, y_size-1].
    18 #  Available peripherals are: TTY, BDV, FBF, ROM, NIC, CMA, PIC.
     18#  Available peripherals are: TTY, HBA, FBF, ROM, NIC, CMA, PIC.
    1919#
    2020#  All clusters contain (nb_procs) processors, one L2 cache, one XCU, and
     
    2727#  - nb_ttys        : number of TTY channels
    2828#  - fbf_width      : frame_buffer width = frame_buffer heigth
     29#  - ioc_type       : can be 'BDV' , 'HBA' , 'SDC' , 'NONE'
    2930#
    3031#  The other hardware parameters are:
     
    5758          nb_procs  = 2,
    5859          nb_ttys   = 1,
    59           fbf_width = 128 ):
     60          fbf_width = 128,
     61          ioc_type  = 'BDV' ):
    6062
    6163    ### define architecture constants
     
    7072    paddr_width     = 40
    7173    irq_per_proc    = 4
    72     use_ramdisk     = False
    7374    peri_increment  = 0x10000    # distributed peripherals vbase address increment
    7475
     
    8889            ((x_io == x_size-1) and (y_io == y_size-1)) )
    8990
    90     ### define type and name
    91 
    92     platform_type  = 'tsar_iob'
    93     platform_name  = '%s_%d_%d_%d' % ( platform_type, x_size, y_size , nb_procs )
     91    assert( ioc_type in IOCSUBTYPES )
     92 
     93    ### define platform name
     94
     95    platform_name = 'tsar_iob_%d_%d_%d' % ( x_size, y_size , nb_procs )
     96    platform_name += '_%d_%d_%s' % ( fbf_width , nb_ttys , ioc_type )
    9497
    9598    ### define physical segments replicated in all clusters
     
    110113    ## These segments are only defined in cluster_io
    111114
    112     bdv_base  = 0x00B3000000
    113     bdv_size  = 0x1000                     # 4kbytes
     115    ioc_base  = 0x00B3000000
     116    ioc_size  = 0x1000                     # 4 Kbytes
    114117
    115118    tty_base  = 0x00B4000000
     
    186189                       coherence      = True,         
    187190                       irq_per_proc   = irq_per_proc, 
    188                        use_ramdisk    = use_ramdisk, 
     191                       use_ramdisk    = (ioc_type == 'RDK'),
    189192                       x_io           = x_io,         
    190193                       y_io           = y_io,
     
    234237                                         ptype = 'IOB' )
    235238
    236                 bdv = mapping.addPeriph( 'BDV', base = bdv_base + offset, size = bdv_size,
    237                                          ptype = 'IOC', subtype = 'BDV' )
     239                ioc = mapping.addPeriph( 'IOC', base = ioc_base + offset, size = ioc_size,
     240                                         ptype = 'IOC', subtype = ioc_type )
    238241
    239242                tty = mapping.addPeriph( 'TTY', base = tty_base + offset, size = tty_size,
     
    266269                mapping.addIrq( pic, index = 7,  isrtype = 'ISR_CMA'   , channel = 3 )
    267270
    268                 mapping.addIrq( pic, index = 8,  isrtype = 'ISR_BDV'   , channel = 0 )
     271                if ( ioc_type == 'BDV' ): isr_ioc = 'ISR_BDV'
     272                if ( ioc_type == 'HBA' ): isr_ioc = 'ISR_HBA'
     273                if ( ioc_type == 'SDC' ): isr_ioc = 'ISR_SDC'
     274
     275                mapping.addIrq( pic, index = 8,  isrtype = isr_ioc     , channel = 0 )
    269276
    270277                mapping.addIrq( pic, index = 16, isrtype = 'ISR_TTY_RX', channel = 0 )
     
    310317
    311318    ### global vsegs kernel_code, kernel_init : big / local
    312     ### replicated in all clusters with the same name & same vbase
    313     for x in xrange( x_size ):
    314         for y in xrange( y_size ):
    315             mapping.addGlobal( 'seg_kernel_code', kernel_code_vbase, kernel_code_size,
     319    ### replicated in all clusters with indexed name & same vbase
     320    for x in xrange( x_size ):
     321        for y in xrange( y_size ):
     322            mapping.addGlobal( 'seg_kernel_code_%d_%d' %(x,y),
     323                               kernel_code_vbase, kernel_code_size,
    316324                               'CXW_', vtype = 'ELF', x = x , y = y , pseg = 'RAM',
    317325                               binpath = 'build/kernel/kernel.elf',
    318326                               local = True, big = True )
    319327
    320             mapping.addGlobal( 'seg_kernel_init', kernel_init_vbase, kernel_init_size,
     328            mapping.addGlobal( 'seg_kernel_init_%d_%d' %(x,y),
     329                               kernel_init_vbase, kernel_init_size,
    321330                               'CXW_', vtype = 'ELF', x = x , y = y , pseg = 'RAM',
    322331                               binpath = 'build/kernel/kernel.elf',
     
    358367                       local = False, big = True )
    359368
    360     mapping.addGlobal( 'seg_bdv', bdv_base, bdv_size, '__W_',
    361                        vtype = 'PERI', x = 0, y = 0, pseg = 'BDV',
     369    mapping.addGlobal( 'seg_ioc', ioc_base, ioc_size, '__W_',
     370                       vtype = 'PERI', x = 0, y = 0, pseg = 'IOC',
    362371                       local = False, big = True )
    363372
  • trunk/platforms/tsar_generic_iob/top.cpp

    r959 r965  
    1414// - MNIC : Network controller (up to 2 channels)
    1515// - CDMA : Chained Buffer DMA controller (up to 4 channels)
    16 // - BDEV : Dlock Device controler (one channel)
     16// - DISK : Block device controler (BDV / HBA / SDC)
    1717// - IOPI : HWI to SWI translator.
    1818//
     
    4545// - IOPIC HWI[3:2]     connected to IRQ_NIC_TX[1:0]
    4646// - IOPIC HWI[7:4]     connected to IRQ_CMA_TX[3:0]]
    47 // - IOPIC HWI[8]       connected to IRQ_BDEV
     47// - IOPIC HWI[8]       connected to IRQ_DISK
    4848// - IOPIC HWI[31:16]   connected to IRQ_TTY_RX[15:0]
    4949//
     
    100100// - L1_DWAYS
    101101// - L1_DSETS
    102 // - BDEV_IMAGE_NAME  : file pathname for block device
     102// - DISK_IMAGE_NAME  : file pathname for block device
    103103//
    104104// General policy for 40 bits physical address decoding:
     
    132132#include "vci_multi_nic.h"
    133133#include "vci_simple_rom.h"
     134#include "vci_multi_ahci.h"
    134135#include "vci_block_device_tsar.h"
    135136#include "vci_framebuffer.h"
    136 #include "vci_iox_network.h"
    137137#include "vci_iox_network.h"
    138138#include "vci_iopic.h"
     
    210210#define L1_DSETS              64
    211211
    212 #define BDEV_IMAGE_NAME       "../../../giet_vm/hdd/virt_hdd.dmg"
     212#define DISK_IMAGE_NAME       "../../../giet_vm/hdd/virt_hdd.dmg"
    213213
    214214#define ROM_SOFT_NAME         "../../softs/tsar_boot/preloader.elf"
     
    247247// - Internal initiators (procs, mdma) are replicated in all clusters,
    248248//   and each initiator has one single SRCID.
    249 // - External initiators (bdev, cdma) are not replicated, but can be
     249// - External initiators (disk, cdma) are not replicated, but can be
    250250//   accessed in 2 clusters : cluster_iob0 and cluster_iob1.
    251251//   They have the same local index, but two different cluster indexes.
     
    263263#define MEMC_LOCAL_SRCID             0xA
    264264#define CDMA_LOCAL_SRCID             0xB
    265 #define BDEV_LOCAL_SRCID             0xC
     265#define DISK_LOCAL_SRCID             0xC
    266266#define IOPI_LOCAL_SRCID             0xD
    267267
     
    293293
    294294#define IOX_FBUF_TGT_ID              0
    295 #define IOX_BDEV_TGT_ID              1
     295#define IOX_DISK_TGT_ID              1
    296296#define IOX_MNIC_TGT_ID              2
    297297#define IOX_CDMA_TGT_ID              3
     
    302302#define IOX_IOB1_TGT_ID              8
    303303
    304 #define IOX_BDEV_INI_ID              0
     304#define IOX_DISK_INI_ID              0
    305305#define IOX_CDMA_INI_ID              1
    306306#define IOX_IOPI_INI_ID              2
     
    316316   using namespace soclib::common;
    317317
    318 
    319318   char     soft_name[256]   = ROM_SOFT_NAME;           // pathname: binary code
    320319   size_t   ncycles          = 4000000000;              // simulated cycles
    321    char     disk_name[256]   = BDEV_IMAGE_NAME;         // pathname: disk image
     320   char     disk_name[256]   = DISK_IMAGE_NAME;         // pathname: disk image
    322321   ssize_t  threads_nr       = 1;                       // simulator's threads number
    323322   bool     debug_ok         = false;                   // trace activated
     
    585584                        IntTab(cluster(x,y), INT_IOBX_TGT_ID), not cacheable));
    586585
    587             std::ostringstream    sbdv;
    588             sbdv << "int_seg_bdev_" << x << "_" << y;
    589             maptab_int.add(Segment(sbdv.str(), SEG_IOC_BASE+offset, SEG_IOC_SIZE,
     586            std::ostringstream    sdsk;
     587            sdsk << "int_seg_disk_" << x << "_" << y;
     588            maptab_int.add(Segment(sdsk.str(), SEG_IOC_BASE+offset, SEG_IOC_SIZE,
    590589                        IntTab(cluster(x,y), INT_IOBX_TGT_ID), not cacheable));
    591590
     
    667666                          IntTab( cluster_iob1, RAM_IOBX_INI_ID ) );
    668667
    669     maptab_ram.srcid_map( IntTab( cluster_iob0, BDEV_LOCAL_SRCID ),
     668    maptab_ram.srcid_map( IntTab( cluster_iob0, DISK_LOCAL_SRCID ),
    670669                          IntTab( cluster_iob0, RAM_IOBX_INI_ID ) );
    671670
    672     maptab_ram.srcid_map( IntTab( cluster_iob1, BDEV_LOCAL_SRCID ),
     671    maptab_ram.srcid_map( IntTab( cluster_iob1, DISK_LOCAL_SRCID ),
    673672                          IntTab( cluster_iob1, RAM_IOBX_INI_ID ) );
    674673
     
    691690    // - two levels address decoding for commands (9, 7) bits
    692691    // - two levels srcid decoding for responses
    693     // - 5 initiators (IOB0, IOB1, BDEV, CDMA, IOPI)
    694     // - 9 targets (IOB0, IOB1, BDEV, CDMA, MTTY, FBUF, BROM, MNIC, IOPI)
     692    // - 5 initiators (IOB0, IOB1, DISK, CDMA, IOPI)
     693    // - 9 targets (IOB0, IOB1, DISK, CDMA, MTTY, FBUF, BROM, MNIC, IOPI)
    695694    //
    696695    // Address bit 32 is used to determine if a command must be routed to
     
    714713    maptab_iox.add(Segment("iox_seg_fbuf_0", SEG_FBF_BASE + iob0_base, SEG_FBF_SIZE,
    715714                   IntTab(0, IOX_FBUF_TGT_ID), false));
    716     maptab_iox.add(Segment("iox_seg_bdev_0", SEG_IOC_BASE + iob0_base, SEG_IOC_SIZE,
    717                    IntTab(0, IOX_BDEV_TGT_ID), false));
     715    maptab_iox.add(Segment("iox_seg_disk_0", SEG_IOC_BASE + iob0_base, SEG_IOC_SIZE,
     716                   IntTab(0, IOX_DISK_TGT_ID), false));
    718717    maptab_iox.add(Segment("iox_seg_mnic_0", SEG_NIC_BASE + iob0_base, SEG_NIC_SIZE,
    719718                   IntTab(0, IOX_MNIC_TGT_ID), false));
     
    734733        maptab_iox.add(Segment("iox_seg_fbuf_1", SEG_FBF_BASE + iob1_base, SEG_FBF_SIZE,
    735734                   IntTab(0, IOX_FBUF_TGT_ID), false));
    736         maptab_iox.add(Segment("iox_seg_bdev_1", SEG_IOC_BASE + iob1_base, SEG_IOC_SIZE,
    737                    IntTab(0, IOX_BDEV_TGT_ID), false));
     735        maptab_iox.add(Segment("iox_seg_disk_1", SEG_IOC_BASE + iob1_base, SEG_IOC_SIZE,
     736                   IntTab(0, IOX_DISK_TGT_ID), false));
    738737        maptab_iox.add(Segment("iox_seg_mnic_1", SEG_NIC_BASE + iob1_base, SEG_NIC_SIZE,
    739738                   IntTab(0, IOX_MNIC_TGT_ID), false));
     
    794793    maptab_iox.srcid_map( IntTab( 0, CDMA_LOCAL_SRCID ) ,
    795794                          IntTab( 0, IOX_CDMA_INI_ID  ) );
    796     maptab_iox.srcid_map( IntTab( 0, BDEV_LOCAL_SRCID ) ,
    797                           IntTab( 0, IOX_BDEV_INI_ID  ) );
     795    maptab_iox.srcid_map( IntTab( 0, DISK_LOCAL_SRCID ) ,
     796                          IntTab( 0, IOX_DISK_INI_ID  ) );
    798797    maptab_iox.srcid_map( IntTab( 0, IOPI_LOCAL_SRCID ) ,
    799798                          IntTab( 0, IOX_IOPI_INI_ID  ) );
     
    817816
    818817    sc_signal<bool>                   signal_irq_false;
    819     sc_signal<bool>                   signal_irq_bdev;
     818    sc_signal<bool>                   signal_irq_disk;
    820819    sc_signal<bool>                   signal_irq_mtty_rx[NB_TTY_CHANNELS];
    821820    sc_signal<bool>                   signal_irq_mnic_rx[NB_NIC_CHANNELS];
     
    826825    VciSignals<vci_param_ext>         signal_vci_ini_iob0("signal_vci_ini_iob0");
    827826    VciSignals<vci_param_ext>         signal_vci_ini_iob1("signal_vci_ini_iob1");
    828     VciSignals<vci_param_ext>         signal_vci_ini_bdev("signal_vci_ini_bdev");
     827    VciSignals<vci_param_ext>         signal_vci_ini_disk("signal_vci_ini_disk");
    829828    VciSignals<vci_param_ext>         signal_vci_ini_cdma("signal_vci_ini_cdma");
    830829    VciSignals<vci_param_ext>         signal_vci_ini_iopi("signal_vci_ini_iopi");
     
    836835    VciSignals<vci_param_ext>         signal_vci_tgt_mnic("signal_vci_tgt_mnic");
    837836    VciSignals<vci_param_ext>         signal_vci_tgt_brom("signal_vci_tgt_brom");
    838     VciSignals<vci_param_ext>         signal_vci_tgt_bdev("signal_vci_tgt_bdev");
     837    VciSignals<vci_param_ext>         signal_vci_tgt_disk("signal_vci_tgt_disk");
    839838    VciSignals<vci_param_ext>         signal_vci_tgt_cdma("signal_vci_tgt_cdma");
    840839    VciSignals<vci_param_ext>         signal_vci_tgt_iopi("signal_vci_tgt_iopi");
     
    901900      alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_false_ram_rsp_out", XMAX, YMAX, 4);
    902901
    903    ////////////////////////////
    904    //      Loader
    905    ////////////////////////////
     902    ////////////////////////////
     903    //      Loader
     904    ////////////////////////////
    906905
    907906#if USE_ALMOS
    908    soclib::common::Loader loader(almos_bootloader_pathname,
     907    soclib::common::Loader loader(almos_bootloader_pathname,
    909908                                 almos_archinfo_pathname,
    910909                                 almos_kernel_pathname);
    911910#else
    912    soclib::common::Loader loader(soft_name);
     911    soclib::common::Loader loader(soft_name);
    913912#endif
    914913
    915    typedef soclib::common::GdbServer<soclib::common::Mips32ElIss> proc_iss;
    916    proc_iss::set_loader(loader);
    917 
    918    ////////////////////////////////////////
    919    //  Instanciated Hardware Components
    920    ////////////////////////////////////////
    921 
    922    std::cout << std::endl << "External Bus and Peripherals" << std::endl << std::endl;
    923 
    924    const size_t nb_iox_initiators = (cluster_iob0 != cluster_iob1) ? 5 : 4;
    925    const size_t nb_iox_targets = (cluster_iob0 != cluster_iob1) ? 9 : 8;
    926 
    927    // IOX network
    928    VciIoxNetwork<vci_param_ext>* iox_network;
    929    iox_network = new VciIoxNetwork<vci_param_ext>( "iox_network",
    930                                                    maptab_iox,
    931                                                    nb_iox_targets,
    932                                                    nb_iox_initiators );
    933    // boot ROM
    934    VciSimpleRom<vci_param_ext>*  brom;
    935    brom = new VciSimpleRom<vci_param_ext>( "brom",
    936                                            IntTab(0, IOX_BROM_TGT_ID),
     914    typedef soclib::common::GdbServer<soclib::common::Mips32ElIss> proc_iss;
     915    proc_iss::set_loader(loader);
     916
     917    ////////////////////////////////////////
     918    //  Instanciated Hardware Components
     919    ////////////////////////////////////////
     920
     921    std::cout << std::endl << "External Bus and Peripherals" << std::endl << std::endl;
     922
     923    const size_t nb_iox_initiators = (cluster_iob0 != cluster_iob1) ? 5 : 4;
     924    const size_t nb_iox_targets = (cluster_iob0 != cluster_iob1) ? 9 : 8;
     925
     926    // IOX network
     927    VciIoxNetwork<vci_param_ext>* iox_network;
     928    iox_network = new VciIoxNetwork<vci_param_ext>( "iox_network",
     929                                                    maptab_iox,
     930                                                    nb_iox_targets,
     931                                                    nb_iox_initiators );
     932    // boot ROM
     933    VciSimpleRom<vci_param_ext>*  brom;
     934    brom = new VciSimpleRom<vci_param_ext>( "brom",
     935                                            IntTab(0, IOX_BROM_TGT_ID),
     936                                            maptab_iox,
     937                                            loader );
     938    // Network Controller
     939    VciMultiNic<vci_param_ext>*  mnic;
     940    mnic = new VciMultiNic<vci_param_ext>( "mnic",
     941                                           IntTab(0, IOX_MNIC_TGT_ID),
    937942                                           maptab_iox,
    938                                            loader );
    939    // Network Controller
    940    VciMultiNic<vci_param_ext>*  mnic;
    941    mnic = new VciMultiNic<vci_param_ext>( "mnic",
    942                                           IntTab(0, IOX_MNIC_TGT_ID),
    943                                           maptab_iox,
    944                                           NB_NIC_CHANNELS,
    945                                           0,                // mac_4 address
    946                                           0,                // mac_2 address
    947                                           1 );              // NIC_MODE_SYNTHESIS
    948 
    949    // Frame Buffer
    950    VciFrameBuffer<vci_param_ext>*  fbuf;
    951    fbuf = new VciFrameBuffer<vci_param_ext>( "fbuf",
    952                                              IntTab(0, IOX_FBUF_TGT_ID),
    953                                              maptab_iox,
    954                                              FBUF_X_SIZE, FBUF_Y_SIZE );
    955 
    956    // Block Device
    957    // for AHCI
    958    // std::vector<std::string> filenames;
    959    // filenames.push_back(disk_name);            // one single disk
    960    VciBlockDeviceTsar<vci_param_ext>*  bdev;
    961    bdev = new VciBlockDeviceTsar<vci_param_ext>( "bdev",
     943                                           NB_NIC_CHANNELS,
     944                                           0,                // mac_4 address
     945                                           0,                // mac_2 address
     946                                           1 );              // NIC_MODE_SYNTHESIS
     947
     948    // Frame Buffer
     949    VciFrameBuffer<vci_param_ext>*  fbuf;
     950    fbuf = new VciFrameBuffer<vci_param_ext>( "fbuf",
     951                                              IntTab(0, IOX_FBUF_TGT_ID),
     952                                              maptab_iox,
     953                                              FBUF_X_SIZE, FBUF_Y_SIZE );
     954
     955    // Disk
     956    std::vector<std::string> filenames;
     957    filenames.push_back(disk_name);            // one single disk
     958
     959#if ( USE_IOC_HBA )
     960    VciMultiAhci<vci_param_ext>*  disk;
     961    disk = new VciMultiAhci<vci_param_ext>( "disk",
     962                                            maptab_iox,
     963                                            IntTab(0, DISK_LOCAL_SRCID),
     964                                            IntTab(0, IOX_DISK_TGT_ID),
     965                                            filenames,
     966                                            512,        // block size
     967                                            64,         // burst size (bytes)
     968                                            0 );        // disk latency
     969#elif ( USE_IOC_BDV )
     970    VciBlockDeviceTsar<vci_param_ext>*  disk;
     971    disk = new VciBlockDeviceTsar<vci_param_ext>( "disk",
    962972                                                  maptab_iox,
    963                                                   IntTab(0, BDEV_LOCAL_SRCID),
    964                                                   IntTab(0, IOX_BDEV_TGT_ID),
     973                                                  IntTab(0, DISK_LOCAL_SRCID),
     974                                                  IntTab(0, IOX_DISK_TGT_ID),
    965975                                                  disk_name,
    966976                                                  512,        // block size
    967977                                                  64,         // burst size (bytes)
    968978                                                  0 );        // disk latency
    969 
    970    // Chained Buffer DMA controller
    971    VciChbufDma<vci_param_ext>*  cdma;
    972    cdma = new VciChbufDma<vci_param_ext>( "cdma",
    973                                           maptab_iox,
    974                                           IntTab(0, CDMA_LOCAL_SRCID),
    975                                           IntTab(0, IOX_CDMA_TGT_ID),
    976                                           64,          // burst size (bytes)
    977                                           NB_CMA_CHANNELS );
    978    // Multi-TTY controller
    979    std::vector<std::string> vect_names;
    980    for( size_t tid = 0 ; tid < NB_TTY_CHANNELS ; tid++ )
    981    {
    982       std::ostringstream term_name;
    983          term_name <<  "term" << tid;
     979#else
     980    std::cout << "Error in tsar_generic_iob : only HBA & BDV are supported" << std::endl;
     981    exit(0);
     982#endif
     983
     984    // Chained Buffer DMA controller
     985    VciChbufDma<vci_param_ext>*  cdma;
     986    cdma = new VciChbufDma<vci_param_ext>( "cdma",
     987                                           maptab_iox,
     988                                           IntTab(0, CDMA_LOCAL_SRCID),
     989                                           IntTab(0, IOX_CDMA_TGT_ID),
     990                                           64,          // burst size (bytes)
     991                                           NB_CMA_CHANNELS );
     992    // Multi-TTY controller
     993    std::vector<std::string> vect_names;
     994    for( size_t tid = 0 ; tid < NB_TTY_CHANNELS ; tid++ )
     995    {
     996        std::ostringstream term_name;
     997          term_name <<  "term" << tid;
     998 
    984999         vect_names.push_back(term_name.str().c_str());
    9851000      }
     
    9901005                                             vect_names);
    9911006
    992    // IOPIC
    993    VciIopic<vci_param_ext>* iopi;
    994    iopi = new VciIopic<vci_param_ext>( "iopi",
    995                                        maptab_iox,
    996                                        IntTab(0, IOPI_LOCAL_SRCID),
    997                                        IntTab(0, IOX_IOPI_TGT_ID),
    998                                        32 );        // number of input HWI
    999    // Clusters
    1000    TsarIobCluster<vci_param_int,
    1001                   vci_param_ext,
    1002                   dspin_int_cmd_width,
    1003                   dspin_int_rsp_width,
    1004                   dspin_ram_cmd_width,
    1005                   dspin_ram_rsp_width>* clusters[XMAX][YMAX];
     1007    // IOPIC
     1008    VciIopic<vci_param_ext>* iopi;
     1009    iopi = new VciIopic<vci_param_ext>( "iopi",
     1010                                        maptab_iox,
     1011                                        IntTab(0, IOPI_LOCAL_SRCID),
     1012                                        IntTab(0, IOX_IOPI_TGT_ID),
     1013                                        32 );        // number of input HWI
     1014    // Clusters
     1015    TsarIobCluster<vci_param_int,
     1016                   vci_param_ext,
     1017                   dspin_int_cmd_width,
     1018                   dspin_int_rsp_width,
     1019                   dspin_ram_cmd_width,
     1020                   dspin_ram_rsp_width>* clusters[XMAX][YMAX];
    10061021
    10071022#if USING_OPENMP
     
    11171132    iox_network->p_resetn                                (signal_resetn);
    11181133    iox_network->p_to_ini[IOX_IOB0_INI_ID]               (signal_vci_ini_iob0);
    1119     iox_network->p_to_ini[IOX_BDEV_INI_ID]               (signal_vci_ini_bdev);
     1134    iox_network->p_to_ini[IOX_DISK_INI_ID]               (signal_vci_ini_disk);
    11201135    iox_network->p_to_ini[IOX_CDMA_INI_ID]               (signal_vci_ini_cdma);
    11211136    iox_network->p_to_ini[IOX_IOPI_INI_ID]               (signal_vci_ini_iopi);
     
    11261141    iox_network->p_to_tgt[IOX_MNIC_TGT_ID]               (signal_vci_tgt_mnic);
    11271142    iox_network->p_to_tgt[IOX_BROM_TGT_ID]               (signal_vci_tgt_brom);
    1128     iox_network->p_to_tgt[IOX_BDEV_TGT_ID]               (signal_vci_tgt_bdev);
     1143    iox_network->p_to_tgt[IOX_DISK_TGT_ID]               (signal_vci_tgt_disk);
    11291144    iox_network->p_to_tgt[IOX_CDMA_TGT_ID]               (signal_vci_tgt_cdma);
    11301145    iox_network->p_to_tgt[IOX_IOPI_TGT_ID]               (signal_vci_tgt_iopi);
     
    11361151    }
    11371152
    1138     // BDEV connexion
    1139     bdev->p_clk                                          (signal_clk);
    1140     bdev->p_resetn                                       (signal_resetn);
    1141     bdev->p_irq                                          (signal_irq_bdev);
    1142     bdev->p_vci_target                                   (signal_vci_tgt_bdev);
    1143     bdev->p_vci_initiator                                (signal_vci_ini_bdev);
    1144 
    1145     std::cout << "  - BDEV connected" << std::endl;
     1153    // DISK connexion
     1154    disk->p_clk                                          (signal_clk);
     1155    disk->p_resetn                                       (signal_resetn);
     1156    disk->p_vci_target                                   (signal_vci_tgt_disk);
     1157    disk->p_vci_initiator                                (signal_vci_ini_disk);
     1158#if ( USE_IOC_HBA )
     1159    disk->p_channel_irq[0]                               (signal_irq_disk);
     1160#else
     1161    disk->p_irq                                          (signal_irq_disk);
     1162#endif
     1163
     1164    std::cout << "  - DISK connected" << std::endl;
    11461165
    11471166    // FBUF connexion
     
    12061225       else if(i < 4+NB_CMA_CHANNELS)  iopi->p_hwi[i] (signal_irq_cdma[i-4]);
    12071226       else if(i < 8)                  iopi->p_hwi[i] (signal_irq_false);
    1208        else if(i < 9)                  iopi->p_hwi[i] (signal_irq_bdev);
     1227       else if(i < 9)                  iopi->p_hwi[i] (signal_irq_disk);
    12091228       else if(i < 16)                 iopi->p_hwi[i] (signal_irq_false);
    12101229       else if(i < 16+NB_TTY_CHANNELS) iopi->p_hwi[i] (signal_irq_mtty_rx[i-16]);
     
    14801499                clusters[x][y]->signal_int_vci_tgt_xicu.print_trace(xicu_signame.str());
    14811500
    1482                 clusters[x][y]->mdma->print_trace();
    1483                 std::ostringstream mdma_tgt_signame;
    1484                 mdma_tgt_signame << "[SIG]MDMA_TGT_" << x << "_" << y;
    1485                 clusters[x][y]->signal_int_vci_tgt_mdma.print_trace(mdma_tgt_signame.str());
    1486                 std::ostringstream mdma_ini_signame;
    1487                 mdma_ini_signame << "[SIG]MDMA_INI_" << x << "_" << y;
    1488                 clusters[x][y]->signal_int_vci_ini_mdma.print_trace(mdma_ini_signame.str());
     1501//              clusters[x][y]->mdma->print_trace();
     1502//              std::ostringstream mdma_tgt_signame;
     1503//              mdma_tgt_signame << "[SIG]MDMA_TGT_" << x << "_" << y;
     1504//              clusters[x][y]->signal_int_vci_tgt_mdma.print_trace(mdma_tgt_signame.str());
     1505//              std::ostringstream mdma_ini_signame;
     1506//              mdma_ini_signame << "[SIG]MDMA_INI_" << x << "_" << y;
     1507//              clusters[x][y]->signal_int_vci_ini_mdma.print_trace(mdma_ini_signame.str());
    14891508
    14901509                // local interrupts in cluster(x,y)
     
    15541573//              signal_vci_tgt_iob0.print_trace("[SIG]IOB0_IOX_TGT");
    15551574
    1556 //              cdma->print_trace();
    1557 //              signal_vci_tgt_cdma.print_trace("[SIG]CDMA_TGT");
    1558 //              signal_vci_ini_cdma.print_trace("[SIG]CDMA_INI");
     1575                cdma->print_trace();
     1576                signal_vci_tgt_cdma.print_trace("[SIG]CDMA_TGT");
     1577                signal_vci_ini_cdma.print_trace("[SIG]CDMA_INI");
    15591578
    15601579//              brom->print_trace();
     
    15641583//              signal_vci_tgt_mtty.print_trace("[SIG]MTTY_TGT");
    15651584
    1566                 bdev->print_trace();
    1567                 signal_vci_tgt_bdev.print_trace("[SIG]BDEV_TGT");
    1568                 signal_vci_ini_bdev.print_trace("[SIG]BDEV_INI");
    1569 
    1570 //              mnic->print_trace( 0x000 );
    1571 //              signal_vci_tgt_mnic.print_trace("[SIG]MNIC_TGT");
     1585//              disk->print_trace();
     1586//              signal_vci_tgt_disk.print_trace("[SIG]DISK_TGT");
     1587//              signal_vci_ini_disk.print_trace("[SIG]DISK_INI");
     1588
     1589                mnic->print_trace( 0x000 );
     1590                signal_vci_tgt_mnic.print_trace("[SIG]MNIC_TGT");
    15721591
    15731592//              fbuf->print_trace();
     
    15771596//              signal_vci_ini_iopi.print_trace("[SIG]IOPI_INI");
    15781597//              signal_vci_tgt_iopi.print_trace("[SIG]IOPI_TGT");
     1598
    15791599//              iox_network->print_trace();
    15801600
    15811601                // interrupts
    1582                 if (signal_irq_bdev)       std::cout << "### IRQ_BDEV ACTIVE"       << std::endl;
     1602                if (signal_irq_disk)       std::cout << "### IRQ_DISK ACTIVE"       << std::endl;
    15831603                if (signal_irq_mtty_rx[0]) std::cout << "### IRQ_MTTY_RX[0] ACTIVE" << std::endl;
    15841604                if (signal_irq_mnic_rx[0]) std::cout << "### IRQ_MNIC_RX[0] ACTIVE" << std::endl;
  • trunk/platforms/tsar_generic_iob/top.desc

    r707 r965  
    5252                  cell_size = vci_cell_size_ext),
    5353
     54            Uses('caba:vci_multi_ahci',
     55                  cell_size = vci_cell_size_ext),
     56
    5457            # NIC
    5558            Uses('caba:vci_multi_nic',
Note: See TracChangeset for help on using the changeset viewer.