Ignore:
Timestamp:
May 28, 2013, 11:02:08 AM (11 years ago)
Author:
alain
Message:

Major evolution of platform "tsar_generic_xbar"
to support 40 bits physical addresse, and 64 bits data
between mem_cache and external RAM.

Location:
trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/metadata/tsar_xbar_cluster.sd

    r389 r396  
    22# -*- python -*-
    33
    4 Module('caba:tsar_xbar_cluster',
     4Module('caba:tsar_xbar_cluster', 
    55    classname = 'soclib::caba::TsarXbarCluster',
    6     tmpl_parameters = [
    7         parameter.Module('iss_t'),
    8         parameter.Int('cmd_width'),
    9         parameter.Int('rsp_width'),
     6        tmpl_parameters = [
     7                parameter.Int('dspin_cmd_width'),
     8                parameter.Int('dspin_rsp_width'),
     9        parameter.Module('vci_param_int'),
     10        parameter.Module('vci_param_ext'),
    1011        ],
    11     header_files = [ '../source/include/tsar_xbar_cluster.h', ],
    12     implementation_files = [ '../source/src/tsar_xbar_cluster.cpp', ],
    13     uses = [
    14         Uses('caba:base_module'),
    15         Uses('common:mapping_table'),
    16         Uses('common:iss2'),
    17         Uses('caba:vci_cc_vcache_wrapper',
    18               vci_param       = 'caba:vci_param',
    19               dspin_in_width  = parameter.Reference('cmd_width'),
    20               dspin_out_width = parameter.Reference('rsp_width'),
     12
     13        header_files = [ '../source/include/tsar_xbar_cluster.h', ],
     14        implementation_files = [ '../source/src/tsar_xbar_cluster.cpp', ],
     15
     16        uses = [
     17                Uses('caba:base_module'),
     18                Uses('common:mapping_table'),
     19                Uses('common:iss2'),
     20             
     21                Uses('caba:vci_cc_vcache_wrapper',
     22              vci_param       = parameter.Reference('vci_param_int'),
     23              dspin_in_width  = parameter.Reference('dspin_cmd_width'),
     24              dspin_out_width = parameter.Reference('dspin_rsp_width'),
    2125              iss_t           = 'common:gdb_iss',
    22               gdb_iss_t       = 'common:mips32el'
    23             ),
    24         Uses('caba:vci_mem_cache',
     26              gdb_iss_t       = 'common:mips32el'),
     27
     28                Uses('caba:vci_simple_ram',
     29              vci_param       = parameter.Reference('vci_param_int')),
     30
     31                Uses('caba:vci_simple_ram',
     32              vci_param       = parameter.Reference('vci_param_ext')),
     33
     34        Uses('caba:vci_xicu',
     35              vci_param       = parameter.Reference('vci_param_int')),
     36
     37        Uses('caba:dspin_local_crossbar',
     38              flit_width      = parameter.Reference('dspin_cmd_width')),
     39
     40        Uses('caba:dspin_local_crossbar',
     41              flit_width      = parameter.Reference('dspin_rsp_width')),
     42
     43        Uses('caba:virtual_dspin_router',
     44              flit_width      = parameter.Reference('dspin_cmd_width')),
     45
     46        Uses('caba:virtual_dspin_router',
     47              flit_width      = parameter.Reference('dspin_rsp_width')),
     48           
     49        Uses('caba:vci_multi_tty',
     50              vci_param       = parameter.Reference('vci_param_int')),
     51
     52        Uses('caba:vci_framebuffer',
     53              vci_param       = parameter.Reference('vci_param_int')),
     54
     55        Uses('caba:vci_multi_nic',
     56              vci_param       = parameter.Reference('vci_param_int')),
     57
     58                Uses('caba:vci_block_device_tsar',
     59              vci_param       = parameter.Reference('vci_param_int')),
     60
     61                Uses('caba:vci_multi_dma',
     62              vci_param       = parameter.Reference('vci_param_int')),
     63
     64        Uses('caba:vci_dspin_target_wrapper',
     65              vci_param       = parameter.Reference('vci_param_int')),
     66
     67        Uses('caba:vci_dspin_initiator_wrapper',
     68              vci_param       = parameter.Reference('vci_param_int')),
     69
     70                Uses('caba:vci_mem_cache',
    2571              vci_param_int   = 'caba:vci_param',
    2672              vci_param_ext   = 'caba:vci_param_bis',
    27               dspin_in_width  = parameter.Reference('rsp_width'),
    28               dspin_out_width = parameter.Reference('cmd_width')
    29             ),
    30         Uses('caba:vci_simple_ram',
    31               vci_param       = 'caba:vci_param_bis'
    32             ),
    33         Uses('caba:vci_simple_ram',
    34               vci_param       = 'caba:vci_param'
    35             ),
    36         Uses('caba:vci_xicu'),
    37         Uses('caba:dspin_local_crossbar',
    38               flit_width      = parameter.Reference('cmd_width')
    39             ),
    40         Uses('caba:dspin_local_crossbar',
    41               flit_width      = parameter.Reference('rsp_width')
    42             ),
    43         Uses('caba:vci_dspin_initiator_wrapper',
    44               dspin_cmd_width = parameter.Reference('cmd_width'),
    45               dspin_rsp_width = parameter.Reference('rsp_width')
    46             ),
    47         Uses('caba:vci_dspin_target_wrapper',
    48               dspin_cmd_width = parameter.Reference('cmd_width'),
    49               dspin_rsp_width = parameter.Reference('rsp_width')
    50             ),
    51         Uses('caba:virtual_dspin_router',
    52               flit_width      = parameter.Reference('cmd_width')
    53             ),
    54         Uses('caba:virtual_dspin_router',
    55               flit_width      = parameter.Reference('rsp_width')
    56             ),
    57         Uses('caba:vci_multi_tty'),
    58         Uses('caba:vci_framebuffer'),
    59         Uses('caba:vci_multi_nic'),
    60         Uses('caba:vci_block_device_tsar'),
    61         Uses('caba:vci_multi_dma'),
    62         Uses('common:elf_file_loader'),
    63         ],
    64     ports = [
    65         Port('caba:bit_in'      , 'p_resetn' , auto = 'resetn'),
    66         Port('caba:clock_in'    , 'p_clk'    , auto = 'clock'),
    67         Port('caba:dspin_output', 'p_cmd_out', [2, 4], dspin_data_size = parameter.Reference('cmd_width')),
    68         Port('caba:dspin_input' , 'p_cmd_in' , [2, 4], dspin_data_size = parameter.Reference('cmd_width')),
    69         Port('caba:dspin_output', 'p_rsp_out', [2, 4], dspin_data_size = parameter.Reference('rsp_width')),
    70         Port('caba:dspin_input' , 'p_rsp_in' , [2, 4], dspin_data_size = parameter.Reference('rsp_width')),
    71         ],
     73              dspin_in_width  = parameter.Reference('dspin_rsp_width'),
     74              dspin_out_width = parameter.Reference('dspin_cmd_width')),
     75
     76                Uses('common:elf_file_loader'),
     77                ],
     78
     79        ports = [
     80                Port('caba:bit_in', 'p_resetn', auto = 'resetn'),
     81                Port('caba:clock_in', 'p_clk', auto = 'clock'),
     82                Port('caba:dspin_output', 'p_cmd_out', [2, 4],
     83              dspin_data_size = parameter.Reference('dspin_cmd_width')),
     84                Port('caba:dspin_input', 'p_cmd_in', [2, 4],
     85              dspin_data_size = parameter.Reference('dspin_cmd_width')),
     86                Port('caba:dspin_output', 'p_rsp_out', [2, 4],
     87              dspin_data_size = parameter.Reference('dspin_rsp_width')),
     88                Port('caba:dspin_input', 'p_rsp_in', [2, 4],
     89              dspin_data_size = parameter.Reference('dspin_rsp_width')),
     90                ],
    7291)
    7392
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/include/tsar_xbar_cluster.h

    r389 r396  
    11//////////////////////////////////////////////////////////////////////////////
    2 // File: tsar_xbar_cluster_mmu.h
     2// File: tsar_xbar_cluster.h
    33// Author: Alain Greiner
    44// Copyright: UPMC/LIP6
    5 // Date : march 2011
     5// Date : march 2013
    66// This program is released under the GNU public license
    77//////////////////////////////////////////////////////////////////////////////
     
    3434#include "vci_cc_vcache_wrapper.h"
    3535
    36 ///////////////////////////////////////////////////////////
    37 //          VCI parameters for DIRECT network         
    38 ///////////////////////////////////////////////////////////
    39 #define cell_width            4
    40 #define address_width         32
    41 #define plen_width            8
    42 #define error_width           2
    43 #define clen_width            1
    44 #define rflag_width           1
    45 #define srcid_width           14
    46 #define pktid_width           4
    47 #define trdid_width           4
    48 #define wrplen_width          1
    49 
    50 ///////////////////////////////////////////////////////////
    51 //          VCI parameters for EXTERNAL network         
    52 ///////////////////////////////////////////////////////////
    53 #define cell_width_ext        8
    54 #define address_width_ext     address_width
    55 #define plen_width_ext        plen_width   
    56 #define error_width_ext       error_width 
    57 #define clen_width_ext        clen_width   
    58 #define rflag_width_ext       rflag_width 
    59 #define srcid_width_ext       srcid_width 
    60 #define pktid_width_ext       pktid_width 
    61 #define trdid_width_ext       trdid_width 
    62 #define wrplen_width_ext      wrplen_width
    63 
    6436namespace soclib { namespace caba {
    6537
    6638///////////////////////////////////////////////////////////////////////////
    67 template<
    68     typename iss_t, int cmd_width, int rsp_width
    69     >
    70 class TsarXbarCluster
     39template<size_t dspin_cmd_width,
     40         size_t dspin_rsp_width,
     41         typename vci_param_int,
     42         typename vci_param_ext>  class TsarXbarCluster
    7143///////////////////////////////////////////////////////////////////////////
    7244    : public soclib::caba::BaseModule
    7345{
    74     // Define VCI parameters
    75     typedef soclib::caba::VciParams<cell_width,
    76             plen_width,
    77             address_width,
    78             error_width,                                   
    79             clen_width,
    80             rflag_width,
    81             srcid_width,
    82             pktid_width,
    83             trdid_width,
    84             wrplen_width> vci_param_d;
    85 
    86     typedef soclib::caba::VciParamsBis<cell_width_ext,
    87             plen_width_ext,
    88             address_width_ext,
    89             error_width_ext,                                   
    90             clen_width_ext,
    91             rflag_width_ext,
    92             srcid_width_ext,
    93             pktid_width_ext,
    94             trdid_width_ext,
    95             wrplen_width_ext> vci_param_x;
    96 
    97   public:
    98 
    99     // Ports
    100     sc_in<bool>                                     p_clk;
    101     sc_in<bool>                                     p_resetn;
    102     soclib::caba::DspinOutput<cmd_width>            **p_cmd_out;
    103     soclib::caba::DspinInput<cmd_width>             **p_cmd_in;
    104     soclib::caba::DspinOutput<rsp_width>            **p_rsp_out;
    105     soclib::caba::DspinInput<rsp_width>             **p_rsp_in;
     46    public:
     47
     48        // Ports
     49    sc_in<bool>                                         p_clk;
     50    sc_in<bool>                                         p_resetn;
     51        soclib::caba::DspinOutput<dspin_cmd_width>      **p_cmd_out;
     52        soclib::caba::DspinInput<dspin_cmd_width>       **p_cmd_in;
     53    soclib::caba::DspinOutput<dspin_rsp_width>          **p_rsp_out;
     54    soclib::caba::DspinInput<dspin_rsp_width>           **p_rsp_in;
    10655
    10756    // interrupt signals
    108     sc_signal<bool>             signal_false;
    109     sc_signal<bool>             signal_proc_it[8];
    110     sc_signal<bool>             signal_irq_mdma[8];
    111     sc_signal<bool>             signal_irq_mtty[23];
    112     sc_signal<bool>             signal_irq_mnic_rx[8];  // unused
    113     sc_signal<bool>             signal_irq_mnic_tx[8];  // unused
    114     sc_signal<bool>             signal_irq_bdev;
    115    
    116     // DSPIN signals between DSPIN routers and local_crossbars
    117     DspinSignals<cmd_width>     signal_dspin_cmd_l2g_d;
    118     DspinSignals<cmd_width>     signal_dspin_cmd_g2l_d;
    119     DspinSignals<cmd_width>     signal_dspin_m2p_l2g_c;
    120     DspinSignals<cmd_width>     signal_dspin_m2p_g2l_c;
    121     DspinSignals<rsp_width>     signal_dspin_rsp_l2g_d;
    122     DspinSignals<rsp_width>     signal_dspin_rsp_g2l_d;
    123     DspinSignals<rsp_width>     signal_dspin_p2m_l2g_c;
    124     DspinSignals<rsp_width>     signal_dspin_p2m_g2l_c;
    125 
    126     // Direct VCI signals to VCI/DSPIN wrappers
    127     VciSignals<vci_param_d>     signal_vci_ini_proc[8];
    128     VciSignals<vci_param_d>     signal_vci_ini_mdma;
    129     VciSignals<vci_param_d>     signal_vci_ini_bdev;
    130 
    131     VciSignals<vci_param_d>     signal_vci_tgt_memc;
    132     VciSignals<vci_param_d>     signal_vci_tgt_xicu;
    133     VciSignals<vci_param_d>     signal_vci_tgt_mdma;
    134     VciSignals<vci_param_d>     signal_vci_tgt_mtty;
    135     VciSignals<vci_param_d>     signal_vci_tgt_bdev;
    136     VciSignals<vci_param_d>     signal_vci_tgt_brom;
    137     VciSignals<vci_param_d>     signal_vci_tgt_fbuf;
    138     VciSignals<vci_param_d>     signal_vci_tgt_mnic;
    139 
    140     // Direct DSPIN signals to local crossbars
    141     DspinSignals<cmd_width>     signal_dspin_cmd_proc_i[8];
    142     DspinSignals<rsp_width>     signal_dspin_rsp_proc_i[8];
    143     DspinSignals<cmd_width>     signal_dspin_cmd_mdma_i;
    144     DspinSignals<rsp_width>     signal_dspin_rsp_mdma_i;
    145     DspinSignals<cmd_width>     signal_dspin_cmd_bdev_i;
    146     DspinSignals<rsp_width>     signal_dspin_rsp_bdev_i;
    147 
    148     DspinSignals<cmd_width>     signal_dspin_cmd_memc_t;
    149     DspinSignals<rsp_width>     signal_dspin_rsp_memc_t;
    150     DspinSignals<cmd_width>     signal_dspin_cmd_xicu_t;
    151     DspinSignals<rsp_width>     signal_dspin_rsp_xicu_t;
    152     DspinSignals<cmd_width>     signal_dspin_cmd_mdma_t;
    153     DspinSignals<rsp_width>     signal_dspin_rsp_mdma_t;
    154     DspinSignals<cmd_width>     signal_dspin_cmd_mtty_t;
    155     DspinSignals<rsp_width>     signal_dspin_rsp_mtty_t;
    156     DspinSignals<cmd_width>     signal_dspin_cmd_bdev_t;
    157     DspinSignals<rsp_width>     signal_dspin_rsp_bdev_t;
    158     DspinSignals<cmd_width>     signal_dspin_cmd_brom_t;
    159     DspinSignals<rsp_width>     signal_dspin_rsp_brom_t;
    160     DspinSignals<cmd_width>     signal_dspin_cmd_fbuf_t;
    161     DspinSignals<rsp_width>     signal_dspin_rsp_fbuf_t;
    162     DspinSignals<cmd_width>     signal_dspin_cmd_mnic_t;
    163     DspinSignals<rsp_width>     signal_dspin_rsp_mnic_t;
    164 
    165     // Coherence DSPIN signals to local crossbar
    166     DspinSignals<cmd_width>     signal_dspin_m2p_memc;
    167     DspinSignals<rsp_width>     signal_dspin_p2m_memc;
    168     DspinSignals<cmd_width>     signal_dspin_m2p_proc[8];
    169     DspinSignals<rsp_width>     signal_dspin_p2m_proc[8];
    170 
    171     // external RAM VCI signal
    172     VciSignals<vci_param_x>   signal_vci_xram;
    173    
     57        sc_signal<bool>         signal_false;
     58        sc_signal<bool>                 signal_proc_it[8];
     59        sc_signal<bool>                 signal_irq_mdma[8];
     60        sc_signal<bool>                 signal_irq_mtty[23];
     61        sc_signal<bool>                 signal_irq_mnic_rx[8];  // unused
     62        sc_signal<bool>                 signal_irq_mnic_tx[8];  // unused
     63        sc_signal<bool>                 signal_irq_bdev;
     64       
     65        // DSPIN signals between DSPIN routers and local_crossbars
     66        DspinSignals<dspin_cmd_width>   signal_dspin_cmd_l2g_d;
     67        DspinSignals<dspin_cmd_width>   signal_dspin_cmd_g2l_d;
     68        DspinSignals<dspin_cmd_width>   signal_dspin_m2p_l2g_c;
     69        DspinSignals<dspin_cmd_width>   signal_dspin_m2p_g2l_c;
     70        DspinSignals<dspin_rsp_width>   signal_dspin_rsp_l2g_d;
     71        DspinSignals<dspin_rsp_width>   signal_dspin_rsp_g2l_d;
     72        DspinSignals<dspin_rsp_width>   signal_dspin_p2m_l2g_c;
     73        DspinSignals<dspin_rsp_width>   signal_dspin_p2m_g2l_c;
     74
     75        // Direct VCI signals to VCI/DSPIN wrappers
     76        VciSignals<vci_param_int>               signal_vci_ini_proc[8];
     77        VciSignals<vci_param_int>               signal_vci_ini_mdma;
     78        VciSignals<vci_param_int>               signal_vci_ini_bdev;
     79
     80        VciSignals<vci_param_int>               signal_vci_tgt_memc;
     81        VciSignals<vci_param_int>               signal_vci_tgt_xicu;
     82        VciSignals<vci_param_int>               signal_vci_tgt_mdma;
     83        VciSignals<vci_param_int>               signal_vci_tgt_mtty;
     84        VciSignals<vci_param_int>               signal_vci_tgt_bdev;
     85        VciSignals<vci_param_int>               signal_vci_tgt_brom;
     86        VciSignals<vci_param_int>               signal_vci_tgt_fbuf;
     87        VciSignals<vci_param_int>               signal_vci_tgt_mnic;
     88
     89        // Direct DSPIN signals to local crossbars
     90        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_proc_i[8];
     91        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_proc_i[8];
     92        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mdma_i;
     93        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mdma_i;
     94        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_bdev_i;
     95        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_bdev_i;
     96
     97        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_memc_t;
     98        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_memc_t;
     99        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_xicu_t;
     100        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_xicu_t;
     101        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mdma_t;
     102        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mdma_t;
     103        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mtty_t;
     104        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mtty_t;
     105        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_bdev_t;
     106        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_bdev_t;
     107        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_brom_t;
     108        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_brom_t;
     109        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_fbuf_t;
     110        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_fbuf_t;
     111        DspinSignals<dspin_cmd_width>     signal_dspin_cmd_mnic_t;
     112        DspinSignals<dspin_rsp_width>     signal_dspin_rsp_mnic_t;
     113
     114        // Coherence DSPIN signals to local crossbar
     115        DspinSignals<dspin_cmd_width>     signal_dspin_m2p_memc;
     116        DspinSignals<dspin_rsp_width>     signal_dspin_p2m_memc;
     117        DspinSignals<dspin_cmd_width>     signal_dspin_m2p_proc[8];
     118        DspinSignals<dspin_rsp_width>     signal_dspin_p2m_proc[8];
     119
     120        // external RAM to MEMC VCI signal
     121        VciSignals<vci_param_ext>         signal_vci_xram;
     122       
    174123    // Components
    175124
    176     VciCcVCacheWrapper<vci_param_d, cmd_width, rsp_width, iss_t>* proc[8];
    177     VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>*    wi_proc[4];
    178 
    179     VciMemCache<vci_param_d, vci_param_x, rsp_width, cmd_width> * memc;
    180     VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_memc;
    181 
    182     VciXicu<vci_param_d>*                                         xicu;
    183     VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_xicu;
    184 
    185     VciMultiDma<vci_param_d>*                                     mdma;
    186     VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>*    wi_mdma;
    187     VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_mdma;
    188 
    189     VciSimpleRam<vci_param_x>*                                    xram;
    190 
    191     VciSimpleRam<vci_param_d>*                                    brom;
    192     VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_brom;
    193 
    194     VciMultiTty<vci_param_d>*                                     mtty;
    195     VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_mtty;
    196 
    197     VciFrameBuffer<vci_param_d>*                                  fbuf;
    198     VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_fbuf;
    199 
    200     VciMultiNic<vci_param_d>*                                     mnic;
    201     VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_mnic;
    202 
    203     VciBlockDeviceTsar<vci_param_d>*                              bdev;
    204     VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>*    wi_bdev;
    205     VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_bdev;
    206 
    207     DspinLocalCrossbar<cmd_width>*                                xbar_cmd_d;
    208     DspinLocalCrossbar<rsp_width>*                                xbar_rsp_d;
    209     DspinLocalCrossbar<cmd_width>*                                xbar_m2p_c;
    210     DspinLocalCrossbar<rsp_width>*                                xbar_p2m_c;
    211 
    212     VirtualDspinRouter<cmd_width>*                                router_cmd;
    213     VirtualDspinRouter<rsp_width>*                                router_rsp;
    214 
    215     TsarXbarCluster( sc_module_name                     insname,
    216                      size_t                             nb_procs,      // number of processors
    217                      size_t                             nb_ttys,       // number of TTY terminals
    218                      size_t                             nb_dmas,       // number of DMA channels
     125    VciCcVCacheWrapper<vci_param_int,
     126                       dspin_cmd_width,
     127                       dspin_rsp_width,
     128                       GdbServer<Mips32ElIss> >*  proc[8];
     129
     130    VciDspinInitiatorWrapper<vci_param_int,
     131                             dspin_cmd_width,
     132                             dspin_rsp_width>*    wi_proc[8];
     133
     134    VciMemCache<vci_param_int,
     135                vci_param_ext,
     136                dspin_rsp_width,
     137                dspin_cmd_width>*                 memc;
     138
     139    VciDspinTargetWrapper<vci_param_int,
     140                          dspin_cmd_width,
     141                          dspin_rsp_width>*       wt_memc;
     142
     143    VciXicu<vci_param_int>*                       xicu;
     144
     145    VciDspinTargetWrapper<vci_param_int,
     146                          dspin_cmd_width,
     147                          dspin_rsp_width>*       wt_xicu;
     148
     149    VciMultiDma<vci_param_int>*                   mdma;
     150
     151    VciDspinInitiatorWrapper<vci_param_int,
     152                             dspin_cmd_width,
     153                             dspin_rsp_width>*    wi_mdma;
     154
     155    VciDspinTargetWrapper<vci_param_int,
     156                          dspin_cmd_width,
     157                          dspin_rsp_width>*       wt_mdma;
     158
     159    VciSimpleRam<vci_param_ext>*                  xram;
     160
     161    VciSimpleRam<vci_param_int>*                  brom;
     162
     163    VciDspinTargetWrapper<vci_param_int,
     164                          dspin_cmd_width,
     165                          dspin_rsp_width>*       wt_brom;
     166
     167    VciMultiTty<vci_param_int>*                   mtty;
     168
     169    VciDspinTargetWrapper<vci_param_int,
     170                          dspin_cmd_width,
     171                          dspin_rsp_width>*       wt_mtty;
     172
     173    VciFrameBuffer<vci_param_int>*                fbuf;
     174
     175    VciDspinTargetWrapper<vci_param_int,
     176                          dspin_cmd_width,
     177                          dspin_rsp_width>*       wt_fbuf;
     178
     179    VciMultiNic<vci_param_int>*                   mnic;
     180
     181    VciDspinTargetWrapper<vci_param_int,
     182                          dspin_cmd_width,
     183                          dspin_rsp_width>*       wt_mnic;
     184
     185    VciBlockDeviceTsar<vci_param_int>*            bdev;
     186
     187    VciDspinInitiatorWrapper<vci_param_int,
     188                             dspin_cmd_width,
     189                             dspin_rsp_width>*    wi_bdev;
     190
     191    VciDspinTargetWrapper<vci_param_int,
     192                          dspin_cmd_width,
     193                          dspin_rsp_width>*       wt_bdev;
     194
     195    DspinLocalCrossbar<dspin_cmd_width>*          xbar_cmd_d;
     196    DspinLocalCrossbar<dspin_rsp_width>*          xbar_rsp_d;
     197    DspinLocalCrossbar<dspin_cmd_width>*          xbar_m2p_c;
     198    DspinLocalCrossbar<dspin_rsp_width>*          xbar_p2m_c;
     199
     200    VirtualDspinRouter<dspin_cmd_width>*          router_cmd;
     201    VirtualDspinRouter<dspin_rsp_width>*          router_rsp;
     202
     203        TsarXbarCluster( sc_module_name                     insname,
     204                     size_t                             nb_procs,      // processors
     205                     size_t                             nb_ttys,       // TTY terminals
     206                     size_t                             nb_dmas,       //  DMA channels
    219207                     size_t                             x,             // x coordinate
    220208                     size_t                             y,             // y coordinate
    221209                     size_t                             cluster,       // y + ymax*x
    222                      const soclib::common::MappingTable &mtd,          // direct mapping table
    223                      const soclib::common::MappingTable &mtx,          // xram mapping table
    224                      size_t                             x_width,       // x field number of bits
    225                      size_t                             y_width,       // y field number of bits
    226                      size_t                             l_width,       // l field number of bits
    227                      size_t                             tgtid_memc,
    228                      size_t                             tgtid_xicu,
     210                     const soclib::common::MappingTable &mtd,          // internal
     211                     const soclib::common::MappingTable &mtx,          // external
     212                     size_t                                 x_width,       // x field bits
     213                     size_t                                 y_width,       // y field bits
     214                     size_t                                 l_width,       // l field bits
     215                     size_t                                 tgtid_memc,
     216                     size_t                                 tgtid_xicu,
    229217                     size_t                             tgtid_mdma,
    230218                     size_t                             tgtid_fbuf,
     
    239227                     size_t                             l1_d_ways,
    240228                     size_t                             l1_d_sets, 
    241                      size_t                             xram_latency,  // external ram latency
    242                      bool                               io,            // I/O cluster if true
    243                      size_t                             xfb,           // frame buffer pixels
    244                      size_t                             yfb,           // frame buffer lines
    245                      char*                              disk_name,     // virtual disk for BDEV
    246                      size_t                             block_size,    // block size for BDEV
    247                      size_t                             nic_channels,  // number of channels
    248                      char*                              nic_rx_name,   // file name rx packets
    249                      char*                              nic_tx_name,   // file name tx packets
    250                      uint32_t                           nic_timeout,   // number of cycles
    251                      const Loader                       &loader,       // loader for BROM
    252                      uint32_t                           frozen_cycles, // max frozen cycles
     229                     size_t                             xram_latency,  // external ram
     230                     bool                               io,                // I/O cluster
     231                     size_t                             xfb,           // fbf pixels
     232                     size_t                             yfb,           // fbf lines
     233                     char*                              disk_name,     // virtual disk
     234                     size_t                             block_size,    // block size
     235                     size_t                             nic_channels,  // number channels
     236                     char*                              nic_rx_name,   // filename rx
     237                     char*                              nic_tx_name,   // filename tx
     238                     uint32_t                                                   nic_timeout,   // cycles
     239                                 const Loader                       &loader,       
     240                     uint32_t                           frozen_cycles,
    253241                     uint32_t                           start_debug_cycle,
    254242                     bool                               memc_debug_ok,
    255243                     bool                               proc_debug_ok);
    256244
    257     ~TsarXbarCluster();
    258245};
    259246}}
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp

    r389 r396  
    1515// - Each processor has a private dma channel (vci_multi_dma)
    1616// - It uses the vci_xicu interrupt controller
    17 // - The peripherals MTTY, BDEV, FBUF, MNIC and BROM are in the cluster
    18 //   containing address 0xBFC00000.
     17// - The peripherals MTTY, BDEV, FBUF, MNIC and BROM are in cluster (0,0)
    1918// - The Multi-TTY component controls up to 15 terminals.
    2019// - Each Multi-DMA component controls up to 8 DMA channels.
     
    2625#include "../include/tsar_xbar_cluster.h"
    2726
    28 #define tmpl(x) template<\
    29    typename iss_t,int cmd_width, int rsp_width> \
    30    x TsarXbarCluster<\
    31    iss_t, cmd_width, rsp_width\
    32    >
    3327
    3428namespace soclib {
    3529namespace caba  {
    3630
    37 //////////////////////////////////////////////////////////////////////////
    38 //                 Constructor
    39 //////////////////////////////////////////////////////////////////////////
    40 tmpl(/**/)::TsarXbarCluster(
     31////////////////////////////////////////////////////////////////////////////////////
     32template<size_t dspin_cmd_width,
     33         size_t dspin_rsp_width,
     34         typename vci_param_int,
     35         typename vci_param_ext> TsarXbarCluster<dspin_cmd_width,
     36                                                 dspin_rsp_width,
     37                                                 vci_param_int,
     38                                                 vci_param_ext>::TsarXbarCluster(
     39////////////////////////////////////////////////////////////////////////////////////
    4140         sc_module_name                     insname,
    4241         size_t                             nb_procs,
     
    8685{
    8786    // Vectors of ports definition
    88 
    89     p_cmd_in        = alloc_elems<DspinInput<cmd_width> >("p_cmd_in", 2, 4);
    90     p_cmd_out       = alloc_elems<DspinOutput<cmd_width> >("p_cmd_out", 2, 4);
    91     p_rsp_in        = alloc_elems<DspinInput<rsp_width> >("p_rsp_in", 2, 4);
    92     p_rsp_out       = alloc_elems<DspinOutput<rsp_width> >("p_rsp_out", 2, 4);
    93 
     87    p_cmd_in        = alloc_elems<DspinInput<dspin_cmd_width> >("p_cmd_in", 2, 4);
     88    p_cmd_out       = alloc_elems<DspinOutput<dspin_cmd_width> >("p_cmd_out", 2, 4);
     89    p_rsp_in        = alloc_elems<DspinInput<dspin_rsp_width> >("p_rsp_in", 2, 4);
     90    p_rsp_out       = alloc_elems<DspinOutput<dspin_rsp_width> >("p_rsp_out", 2, 4);
     91
     92    /////////////////////////////////////////////////////////////////////////////
    9493    // Components definition
    95 
    96     // on direct network : local srcid[proc] in [0..nb_procs-1]
    97     // on direct network : local srcid[mdma] = nb_procs
    98     // on direct network : local srcid[bdev] = nb_procs + 1
    99 
    100     // on coherence network : local srcid[proc] in [0...nb_procs-1]
    101     // on coherence network : local srcid[memc] = nb_procs
    102 
    10394    /////////////////////////////////////////////////////////////////////////////
    10495    std::cout << "  - building proc_" << x_id << "_" << y_id << "-*" << std::endl;
     
    10798    {
    10899        std::ostringstream sproc;
    109         sproc << "proc_" << p;
    110         proc[p] = new VciCcVCacheWrapper<vci_param_d, cmd_width, rsp_width, iss_t>(
     100        sproc << "proc_" << x_id << "_" << y_id << "_" << p;
     101        proc[p] = new VciCcVCacheWrapper<vci_param_int,
     102                                         dspin_cmd_width,
     103                                         dspin_rsp_width,
     104                                         GdbServer<Mips32ElIss> >(
    111105                      sproc.str().c_str(),
    112106                      cluster_id*nb_procs + p,        // GLOBAL PROC_ID
     
    130124        std::ostringstream swip;
    131125        swip << "wi_proc_" << x_id << "_" << y_id << p;
    132         wi_proc[p] = new VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>(
     126        wi_proc[p] = new VciDspinInitiatorWrapper<vci_param_int,
     127                                                  dspin_cmd_width,
     128                                                  dspin_rsp_width>(
    133129                     swip.str().c_str(),
    134130                     x_width + y_width + l_width);
     
    138134    std::cout << "  - building memc_" << x_id << "_" << y_id << std::endl;
    139135
    140     memc = new VciMemCache<vci_param_d, vci_param_x, rsp_width, cmd_width>(
    141                      "memc",
     136    std::ostringstream smemc;
     137    smemc << "memc_" << x_id << "_" << y_id;
     138    memc = new VciMemCache<vci_param_int,
     139                           vci_param_ext,
     140                           dspin_rsp_width,
     141                           dspin_cmd_width>(
     142                     smemc.str().c_str(),
    142143                     mtd,                                // Mapping Table direct space
    143144                     mtx,                                // Mapping Table external space
     
    153154                     memc_debug_ok );
    154155
    155     wt_memc = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>(
     156    wt_memc = new VciDspinTargetWrapper<vci_param_int,
     157                                        dspin_cmd_width,
     158                                        dspin_rsp_width>(
    156159                     "wt_memc",
    157160                     x_width + y_width + l_width);
     
    160163    std::cout << "  - building xram_" << x_id << "_" << y_id << std::endl;
    161164
    162     xram = new VciSimpleRam<vci_param_x>(
    163                      "xram",
     165    std::ostringstream sxram;
     166    sxram << "xram_" << x_id << "_" << y_id;
     167    xram = new VciSimpleRam<vci_param_ext>(
     168                     sxram.str().c_str(),
    164169                     IntTab(cluster_id),
    165170                     mtx,
     
    170175    std::cout << "  - building xicu_" << x_id << "_" << y_id << std::endl;
    171176
    172     xicu = new VciXicu<vci_param_d>(
    173                      "xicu",
     177    std::ostringstream sxicu;
     178    sxicu << "xicu_" << x_id << "_" << y_id;
     179    xicu = new VciXicu<vci_param_int>(
     180                     sxicu.str().c_str(),
    174181                     mtd,                               // mapping table
    175182                     IntTab(cluster_id, tgtid_xicu),    // TGTID_D
     
    179186                     nb_procs);                         // number of output IRQs
    180187
    181     wt_xicu = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>(
     188    wt_xicu = new VciDspinTargetWrapper<vci_param_int,
     189                                        dspin_cmd_width,
     190                                        dspin_rsp_width>(
    182191                     "wt_xicu",
    183192                     x_width + y_width + l_width);
     
    186195    std::cout << "  - building mdma_" << x_id << "_" << y_id << std::endl;
    187196
    188     mdma = new VciMultiDma<vci_param_d>(
    189                      "mdma",
     197    std::ostringstream smdma;
     198    smdma << "mdma_" << x_id << "_" << y_id;
     199    mdma = new VciMultiDma<vci_param_int>(
     200                     smdma.str().c_str(),
    190201                     mtd,
    191202                     IntTab(cluster_id, nb_procs),        // SRCID
     
    194205                     nb_dmas);                            // number of IRQs
    195206
    196     wt_mdma = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>(
     207    wt_mdma = new VciDspinTargetWrapper<vci_param_int,
     208                                        dspin_cmd_width,
     209                                        dspin_rsp_width>(
    197210                     "wt_mdma",
    198211                     x_width + y_width + l_width);
    199212
    200     wi_mdma = new VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>(
     213    wi_mdma = new VciDspinInitiatorWrapper<vci_param_int,
     214                                           dspin_cmd_width,
     215                                           dspin_rsp_width>(
    201216                     "wi_mdma",
    202217                     x_width + y_width + l_width);
     
    213228    }
    214229
    215     xbar_cmd_d = new DspinLocalCrossbar<cmd_width>(
     230    xbar_cmd_d = new DspinLocalCrossbar<dspin_cmd_width>(
    216231                     "xbar_cmd_d",
    217232                     mtd,                          // mapping table
     
    227242    std::cout << "  - building xbar_rsp_d_" << x_id << "_" << y_id << std::endl;
    228243
    229     xbar_rsp_d = new DspinLocalCrossbar<rsp_width>(
     244    xbar_rsp_d = new DspinLocalCrossbar<dspin_rsp_width>(
    230245                     "xbar_rsp_d",
    231246                     mtd,                          // mapping table
     
    241256    std::cout << "  - building xbar_m2p_c" << x_id << "_" << y_id << std::endl;
    242257
    243     xbar_m2p_c = new DspinLocalCrossbar<cmd_width>(
     258    xbar_m2p_c = new DspinLocalCrossbar<dspin_cmd_width>(
    244259                     "xbar_m2p_c",
    245260                     mtd,                          // mapping table
     
    255270    std::cout << "  - building xbar_p2m_c_" << x_id << "_" << y_id << std::endl;
    256271
    257     xbar_p2m_c = new DspinLocalCrossbar<rsp_width>(
     272    xbar_p2m_c = new DspinLocalCrossbar<dspin_rsp_width>(
    258273                     "xbar_p2m_c",
    259274                     mtd,                          // mapping table
     
    269284    std::cout << "  - building router_cmd_" << x_id << "_" << y_id << std::endl;
    270285
    271     router_cmd = new VirtualDspinRouter<cmd_width>(
     286    router_cmd = new VirtualDspinRouter<dspin_cmd_width>(
    272287                     "router_cmd",
    273288                     x_id,y_id,                    // coordinate in the mesh
     
    278293    std::cout << "  - building router_rsp_" << x_id << "_" << y_id << std::endl;
    279294
    280     router_rsp = new VirtualDspinRouter<rsp_width>(
     295    router_rsp = new VirtualDspinRouter<dspin_rsp_width>(
    281296                     "router_rsp",
    282297                     x_id,y_id,                    // coordinates in mesh
     
    290305        std::cout << "  - building brom" << std::endl;
    291306
    292         brom = new VciSimpleRam<vci_param_d>(
    293                         "brom",
    294                         IntTab(cluster_id, tgtid_brom),
    295                         mtd,
    296                         loader);
    297 
    298         wt_brom = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>("wt_brom",
     307        brom = new VciSimpleRam<vci_param_int>(
     308                     "brom",
     309                     IntTab(cluster_id, tgtid_brom),
     310                     mtd,
     311                     loader);
     312
     313        wt_brom = new VciDspinTargetWrapper<vci_param_int,
     314                                            dspin_cmd_width,
     315                                            dspin_rsp_width>(
     316                     "wt_brom",
    299317                     x_width + y_width + l_width);
    300318
     
    302320        std::cout << "  - building fbuf" << std::endl;
    303321
    304         fbuf = new VciFrameBuffer<vci_param_d>(
    305                         "fbuf",
    306                         IntTab(cluster_id, tgtid_fbuf),
    307                         mtd,
    308                         xfb, yfb);
    309 
    310         wt_fbuf = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>("wt_fbuf",
     322        fbuf = new VciFrameBuffer<vci_param_int>(
     323                     "fbuf",
     324                     IntTab(cluster_id, tgtid_fbuf),
     325                     mtd,
     326                     xfb, yfb);
     327
     328        wt_fbuf = new VciDspinTargetWrapper<vci_param_int,
     329                                            dspin_cmd_width,
     330                                            dspin_rsp_width>(
     331                     "wt_fbuf",
    311332                     x_width + y_width + l_width);
    312333
     
    314335        std::cout << "  - building bdev" << std::endl;
    315336
    316         bdev = new VciBlockDeviceTsar<vci_param_d>(
    317                         "bdev",
    318                         mtd,
    319                         IntTab(cluster_id, nb_procs+1),
    320                         IntTab(cluster_id, tgtid_bdev),
    321                         disk_name,
    322                         block_size,
    323                         64);            // burst size
    324 
    325         wt_bdev = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>("wt_bdev",
    326                      x_width + y_width + l_width);
    327         wi_bdev = new VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>("wi_bdev",
     337        bdev = new VciBlockDeviceTsar<vci_param_int>(
     338                     "bdev",
     339                     mtd,
     340                     IntTab(cluster_id, nb_procs+1),
     341                     IntTab(cluster_id, tgtid_bdev),
     342                     disk_name,
     343                     block_size,
     344                     64);            // burst size
     345
     346        wt_bdev = new VciDspinTargetWrapper<vci_param_int,
     347                                            dspin_cmd_width,
     348                                            dspin_rsp_width>(
     349                     "wt_bdev",
     350                     x_width + y_width + l_width);
     351
     352        wi_bdev = new VciDspinInitiatorWrapper<vci_param_int,
     353                                               dspin_cmd_width,
     354                                               dspin_rsp_width>(
     355                     "wi_bdev",
    328356                     x_width + y_width + l_width);
    329357
     
    331359        std::cout << "  - building mnic" << std::endl;
    332360
    333         mnic = new VciMultiNic<vci_param_d>(
    334                         "mnic",
    335                         IntTab(cluster_id, tgtid_mnic),
    336                         mtd,
    337                         nic_channels,
    338                         nic_rx_name,
    339                         nic_tx_name,
    340                         0,             // mac_4 address
    341                         0 );           // mac_2 address
    342 
    343         wt_mnic = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>("wt_mnic",
     361        mnic = new VciMultiNic<vci_param_int>(
     362                     "mnic",
     363                     IntTab(cluster_id, tgtid_mnic),
     364                     mtd,
     365                     nic_channels,
     366                     nic_rx_name,
     367                     nic_tx_name,
     368                     0,             // mac_4 address
     369                     0 );           // mac_2 address
     370
     371        wt_mnic = new VciDspinTargetWrapper<vci_param_int,
     372                                            dspin_cmd_width,
     373                                            dspin_rsp_width>(
     374                     "wt_mnic",
    344375                     x_width + y_width + l_width);
    345376
     
    354385            vect_names.push_back(term_name.str().c_str());
    355386        }
    356         mtty = new VciMultiTty<vci_param_d>(
    357                         "mtty",
    358                         IntTab(cluster_id, tgtid_mtty),
    359                         mtd,
    360                         vect_names);
    361 
    362         wt_mtty = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>("wt_mtty",
    363                      x_width + y_width + l_width);
    364 
     387        mtty = new VciMultiTty<vci_param_int>(
     388                     "mtty",
     389                     IntTab(cluster_id, tgtid_mtty),
     390                     mtd,
     391                     vect_names);
     392
     393        wt_mtty = new VciDspinTargetWrapper<vci_param_int,
     394                                            dspin_cmd_width,
     395                                            dspin_rsp_width>(
     396                     "wt_mtty",
     397                     x_width + y_width + l_width);
    365398    }
    366399
     
    679712} // end constructor
    680713
    681 ///////////////////////////////////////////////////////////////////////////
    682 //    destructor
    683 ///////////////////////////////////////////////////////////////////////////
    684 tmpl(/**/)::~TsarXbarCluster() {}
    685 }
    686 }
    687 
     714}}
    688715
    689716// Local Variables:
Note: See TracChangeset for help on using the changeset viewer.