Changeset 547


Ignore:
Timestamp:
Oct 7, 2013, 5:31:08 PM (11 years ago)
Author:
meunier
Message:

Rajout du Sim Helper dans la plateforme tsar_generic_xbar.

Location:
trunk/platforms/tsar_generic_xbar
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/tsar_generic_xbar/top.cpp

    r512 r547  
    125125#define cluster(x,y)   (y + YMAX * x)
    126126
     127#define min(x, y) (x < y ? x : y)
     128
    127129///////////////////////////////////////////////////////////
    128130//          DSPIN parameters           
     
    229231//////////////////////i/////////////////////////////////////
    230232
    231 #define MAX_FROZEN_CYCLES     100000
     233#define MAX_FROZEN_CYCLES     1000000
    232234
    233235/////////////////////////////////////////////////////////
     
    239241/////////////////////////////////////////////////////////
    240242
    241 // specific segments in "IO" cluster : absolute physical address
    242 
    243 #define BROM_BASE       0x00BFC00000     
    244 #define BROM_SIZE       0x0000100000   // 1 Mbytes
    245 
    246 #define FBUF_BASE       0x00B2000000     
    247 #define FBUF_SIZE       (FBUF_X_SIZE * FBUF_Y_SIZE * 2)
    248 
    249 #define BDEV_BASE       0x00B3000000     
    250 #define BDEV_SIZE       0x0000001000   // 4 Kbytes
    251 
    252 #define MTTY_BASE       0x00B4000000     
    253 #define MTTY_SIZE       0x0000001000   // 4 Kbytes
    254 
    255 #define MNIC_BASE       0x00B5000000     
    256 #define MNIC_SIZE       0x0000080000   // 512 Kbytes (for 8 channels)
    257 
    258 #define CDMA_BASE       0x00B6000000     
    259 #define CDMA_SIZE       0x0000004000 * NB_CMA_CHANNELS
    260 
    261 // replicated segments : address is incremented by a cluster offset
    262 //     offset  = cluster(x,y) << (address_width-x_width-y_width);
    263 
    264 #define MEMC_BASE       0x0000000000     
    265 #define MEMC_SIZE       0x0010000000   // 256 Mbytes per cluster
     243#ifdef USE_GIET
     244   // specific segments in "IO" cluster : absolute physical address
     245   #define BROM_BASE    0x00BFC00000
     246   #define BROM_SIZE    0x0000100000   // 1 Mbytes
     247
     248   #define FBUF_BASE    0x00B2000000
     249   #define FBUF_SIZE    (FBUF_X_SIZE * FBUF_Y_SIZE * 2)
     250
     251   #define BDEV_BASE    0x00B3000000
     252   #define BDEV_SIZE    0x0000001000   // 4 Kbytes
     253
     254   #define MTTY_BASE    0x00B4000000
     255   #define MTTY_SIZE    0x0000001000   // 4 Kbytes
     256
     257   #define MNIC_BASE    0x00B5000000
     258   #define MNIC_SIZE    0x0000080000   // 512 Kbytes (for 8 channels)
     259
     260   #define CDMA_BASE    0x00B6000000
     261   #define CDMA_SIZE    0x0000004000 * NB_CMA_CHANNELS
     262
     263   // replicated segments : address is incremented by a cluster offset
     264   //     offset  = cluster(x,y) << (address_width-x_width-y_width);
     265
     266   #define MEMC_BASE    0x0000000000
     267   #define MEMC_SIZE    0x0010000000   // 256 Mbytes per cluster
     268
     269   #define XICU_BASE    0x00B0000000
     270   #define XICU_SIZE    0x0000001000   // 4 Kbytes
     271
     272   #define MDMA_BASE    0x00B1000000
     273   #define MDMA_SIZE    0x0000001000 * NB_DMA_CHANNELS  // 4 Kbytes per channel
     274
     275   #define SIMH_BASE    0x00B7000000
     276   #define SIMH_SIZE    0x0000001000
     277#endif
    266278
    267279#ifdef USE_ALMOS
    268    #define XICU_BASE    0x0030000000
    269 #endif
    270 #ifdef USE_GIET
    271    #define XICU_BASE    0x00B0000000
    272 #endif
    273 #define XICU_SIZE       0x0000001000   // 4 Kbytes
    274 
    275 #ifdef USE_ALMOS
    276    #define MDMA_BASE    0x0031000000
    277 #endif
    278 #ifdef USE_GIET
    279    #define MDMA_BASE    0x00B1000000
    280 #endif
    281 #define MDMA_SIZE       0x0000001000 * NB_DMA_CHANNELS  // 4 Kbytes per channel 
     280   #define CLUSTER_INC  (0x80000000ULL / (XMAX * YMAX) * 2)
     281
     282   #define MEMC_BASE    0x0000000000
     283   #define MEMC_SIZE    min(0x02000000, (0x80000000 / (XMAX * YMAX)))
     284
     285   #define BROM_BASE    0x00BFC00000
     286   #define BROM_SIZE    0x0000100000   // 1 Mbytes
     287
     288   #define XICU_BASE    (MEMC_SIZE)
     289   #define XICU_SIZE    0x0000001000   // 4 Kbytes
     290
     291   #define MDMA_BASE    (XICU_BASE + XICU_SIZE)
     292   #define MDMA_SIZE    0x0000001000 * NB_DMA_CHANNELS  // 4 Kbytes per channel 
     293
     294   #define BDEV_BASE    ((cluster_io_id * (CLUSTER_INC)) + MDMA_BASE + MDMA_SIZE)
     295   #define BDEV_SIZE    0x0000001000   // 4 Kbytes
     296
     297   #define MTTY_BASE    (BDEV_BASE + BDEV_SIZE)
     298   #define MTTY_SIZE    0x0000001000   // 4 Kbytes
     299
     300   #define FBUF_BASE    (MTTY_BASE + MTTY_SIZE)
     301   #define FBUF_SIZE    (FBUF_X_SIZE * FBUF_Y_SIZE * 2) // Should be 0x80000
     302
     303   // Unused in almos
     304   #define MNIC_BASE    (FBUF_BASE + FBUF_SIZE)
     305   #define MNIC_SIZE    0x0000001000
     306
     307   #define CDMA_BASE    (MNIC_BASE + MNIC_SIZE)
     308   #define CDMA_SIZE    0x0000004000 * NB_CMA_CHANNELS
     309
     310#endif
     311
    282312
    283313////////////////////////////////////////////////////////////////////
     
    295325#define BROM_TGTID      7
    296326#define CDMA_TGTID      8
     327#define SIMH_TGTID      9
    297328
    298329bool stop_called = false;
     
    438469    std::cout << " - RAM_LATENCY      = " << XRAM_LATENCY << std::endl;
    439470    std::cout << " - MAX_FROZEN       = " << frozen_cycles << std::endl;
     471    std::cout << "[PROCS] " << NB_PROCS_MAX * XMAX * YMAX << std::endl;
    440472
    441473    std::cout << std::endl;
     
    498530   // internal network
    499531   MappingTable maptabd(vci_address_width,
    500                         IntTab(x_width + y_width, 16 - x_width - y_width),
     532                        IntTab(x_width + y_width, 20 - x_width - y_width),
    501533                        IntTab(x_width + y_width, vci_srcid_width - x_width - y_width),
    502                         0x00FF000000);
     534                        0x00FF800000);
    503535
    504536   for (size_t x = 0; x < XMAX; x++)
     
    510542                   << (vci_address_width-x_width-y_width);
    511543
     544         std::ostringstream    si;
     545         si << "seg_xicu_" << x << "_" << y;
     546         maptabd.add(Segment(si.str(), XICU_BASE + offset, XICU_SIZE,
     547                  IntTab(cluster(x,y),XICU_TGTID), false));
     548
     549         std::ostringstream    sd;
     550         sd << "seg_mdma_" << x << "_" << y;
     551         maptabd.add(Segment(sd.str(), MDMA_BASE + offset, MDMA_SIZE,
     552                  IntTab(cluster(x,y),MDMA_TGTID), false));
     553
    512554         std::ostringstream    sh;
    513555         sh << "seg_memc_" << x << "_" << y;
    514          maptabd.add(Segment(sh.str(), MEMC_BASE+offset, MEMC_SIZE,
    515                              IntTab(cluster(x,y),MEMC_TGTID), true));
    516 
    517          std::ostringstream    si;
    518          si << "seg_xicu_" << x << "_" << y;
    519          maptabd.add(Segment(si.str(), XICU_BASE+offset, XICU_SIZE,
    520                              IntTab(cluster(x,y),XICU_TGTID), false));
    521 
    522          std::ostringstream    sd;
    523          sd << "seg_mdma_" << x << "_" << y;
    524          maptabd.add(Segment(sd.str(), MDMA_BASE+offset, MDMA_SIZE,
    525                              IntTab(cluster(x,y),MDMA_TGTID), false));
     556         maptabd.add(Segment(sh.str(), MEMC_BASE + offset, MEMC_SIZE,
     557                  IntTab(cluster(x,y),MEMC_TGTID), true));
    526558
    527559         if ( cluster(x,y) == cluster_io_id )
     
    533565            maptabd.add(Segment("seg_bdev", BDEV_BASE, BDEV_SIZE,
    534566                        IntTab(cluster(x,y),BDEV_TGTID), false));
     567            maptabd.add(Segment("seg_brom", BROM_BASE, BROM_SIZE,
     568                        IntTab(cluster(x,y),BROM_TGTID), true));
    535569            maptabd.add(Segment("seg_mnic", MNIC_BASE, MNIC_SIZE,
    536570                        IntTab(cluster(x,y),MNIC_TGTID), false));
    537571            maptabd.add(Segment("seg_cdma", CDMA_BASE, CDMA_SIZE,
    538572                        IntTab(cluster(x,y),CDMA_TGTID), false));
    539             maptabd.add(Segment("seg_brom", BROM_BASE, BROM_SIZE,
    540                         IntTab(cluster(x,y),BROM_TGTID), true));
     573            maptabd.add(Segment("seg_simh", SIMH_BASE, SIMH_SIZE,
     574                        IntTab(cluster(x,y),SIMH_TGTID), false));
    541575         }
    542576      }
     
    562596         sh << "x_seg_memc_" << x << "_" << y;
    563597
    564          maptabx.add(Segment(sh.str(), MEMC_BASE+offset,
     598         maptabx.add(Segment(sh.str(), MEMC_BASE + offset,
    565599                     MEMC_SIZE, IntTab(cluster(x,y)), false));
    566600      }
     
    670704                CDMA_TGTID,
    671705                BDEV_TGTID,
     706                SIMH_TGTID,
    672707                MEMC_WAYS,
    673708                MEMC_SETS,
     
    9811016}
    9821017
     1018void voidhandler(int dummy = 0) {}
    9831019
    9841020int sc_main (int argc, char *argv[])
    9851021{
    9861022   signal(SIGINT, handler);
     1023   signal(SIGPIPE, voidhandler);
    9871024
    9881025   try {
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/metadata/tsar_xbar_cluster.sd

    r475 r547  
    44Module('caba:tsar_xbar_cluster',
    55    classname = 'soclib::caba::TsarXbarCluster',
    6         tmpl_parameters = [
    7                 parameter.Int('dspin_cmd_width'),
    8                 parameter.Int('dspin_rsp_width'),
     6   tmpl_parameters = [
     7      parameter.Int('dspin_cmd_width'),
     8      parameter.Int('dspin_rsp_width'),
    99        parameter.Module('vci_param_int', default = 'caba:vci_param',
    1010                          cell_size = parameter.Reference('vci_data_width_int')),
     
    1313        ],
    1414
    15         header_files = [ '../source/include/tsar_xbar_cluster.h',
     15   header_files = [ '../source/include/tsar_xbar_cluster.h',
    1616        ],
    1717
    18         implementation_files = [ '../source/src/tsar_xbar_cluster.cpp',
     18   implementation_files = [ '../source/src/tsar_xbar_cluster.cpp',
    1919        ],
    2020
    21         uses = [
    22                 Uses('caba:base_module'),
    23                 Uses('common:mapping_table'),
    24                 Uses('common:iss2'),
     21   uses = [
     22      Uses('caba:base_module'),
     23      Uses('common:mapping_table'),
     24      Uses('common:iss2'),
    2525             
    26                 Uses('caba:vci_cc_vcache_wrapper',
     26      Uses('caba:vci_cc_vcache_wrapper',
    2727              cell_size       = parameter.Reference('vci_data_width_int'),
    2828              dspin_in_width  = parameter.Reference('dspin_cmd_width'),
     
    3131              gdb_iss_t       = 'common:mips32el'),
    3232
    33                 Uses('caba:vci_mem_cache',
     33      Uses('caba:vci_mem_cache',
    3434              memc_cell_size_int = parameter.Reference('vci_data_width_int'),
    3535              memc_cell_size_ext = parameter.Reference('vci_data_width_ext'),
     
    3737              dspin_out_width = parameter.Reference('dspin_cmd_width')),
    3838
    39                 Uses('caba:vci_simple_rom',
     39      Uses('caba:vci_simple_rom',
    4040              cell_size       = parameter.Reference('vci_data_width_int')),
    4141
    42                 Uses('caba:vci_simple_ram',
     42      Uses('caba:vci_simple_ram',
    4343              cell_size       = parameter.Reference('vci_data_width_ext')),
    4444
    45         Uses('caba:vci_xicu',
     45      Uses('caba:vci_simple_ram',
    4646              cell_size       = parameter.Reference('vci_data_width_int')),
    4747
    48         Uses('caba:dspin_local_crossbar',
     48      Uses('caba:vci_xicu',
     49              cell_size       = parameter.Reference('vci_data_width_int')),
     50
     51      Uses('caba:dspin_local_crossbar',
    4952              flit_width      = parameter.Reference('dspin_cmd_width')),
    5053
    51         Uses('caba:dspin_local_crossbar',
     54      Uses('caba:dspin_local_crossbar',
    5255              flit_width      = parameter.Reference('dspin_rsp_width')),
    5356
    54         Uses('caba:virtual_dspin_router',
     57      Uses('caba:virtual_dspin_router',
    5558              flit_width      = parameter.Reference('dspin_cmd_width')),
    5659
    57         Uses('caba:virtual_dspin_router',
     60      Uses('caba:virtual_dspin_router',
    5861              flit_width      = parameter.Reference('dspin_rsp_width')),
    5962
    60         Uses('caba:vci_multi_tty',
     63      Uses('caba:vci_multi_tty',
    6164              cell_size       = parameter.Reference('vci_data_width_int')),
    6265
    63         Uses('caba:vci_framebuffer',
     66      Uses('caba:vci_framebuffer',
    6467              cell_size       = parameter.Reference('vci_data_width_int')),
    6568
    66         Uses('caba:vci_multi_nic',
     69      Uses('caba:vci_multi_nic',
    6770              cell_size       = parameter.Reference('vci_data_width_int')),
    6871
    69         Uses('caba:vci_chbuf_dma',
     72      Uses('caba:vci_chbuf_dma',
    7073              cell_size       = parameter.Reference('vci_data_width_int')),
    7174
    72                 Uses('caba:vci_block_device_tsar',
     75      Uses('caba:vci_block_device_tsar',
    7376              cell_size       = parameter.Reference('vci_data_width_int')),
    7477
    75                 Uses('caba:vci_multi_dma',
     78      Uses('caba:vci_multi_dma',
    7679              cell_size       = parameter.Reference('vci_data_width_int')),
    7780
    78         Uses('caba:vci_dspin_target_wrapper',
     81      Uses('caba:vci_dspin_target_wrapper',
    7982              cell_size       = parameter.Reference('vci_data_width_int')),
    8083
    81         Uses('caba:vci_dspin_initiator_wrapper',
     84      Uses('caba:vci_dspin_initiator_wrapper',
    8285              cell_size       = parameter.Reference('vci_data_width_int')),
    8386
    84                 Uses('common:elf_file_loader'),
    85                 ],
     87      Uses('caba:vci_simhelper',
     88              cell_size       = parameter.Reference('vci_data_width_int')),
    8689
    87         ports = [
    88                 Port('caba:bit_in', 'p_resetn', auto = 'resetn'),
    89                 Port('caba:clock_in', 'p_clk', auto = 'clock'),
    90                 Port('caba:dspin_output', 'p_cmd_out', [4, 3],
     90      Uses('common:elf_file_loader'),
     91      ],
     92
     93   ports = [
     94      Port('caba:bit_in', 'p_resetn', auto = 'resetn'),
     95      Port('caba:clock_in', 'p_clk', auto = 'clock'),
     96      Port('caba:dspin_output', 'p_cmd_out', [4, 3],
    9197              dspin_data_size = parameter.Reference('dspin_cmd_width')),
    92                 Port('caba:dspin_input', 'p_cmd_in', [4, 3],
     98      Port('caba:dspin_input', 'p_cmd_in', [4, 3],
    9399              dspin_data_size = parameter.Reference('dspin_cmd_width')),
    94                 Port('caba:dspin_output', 'p_rsp_out', [4, 2],
     100      Port('caba:dspin_output', 'p_rsp_out', [4, 2],
    95101              dspin_data_size = parameter.Reference('dspin_rsp_width')),
    96                 Port('caba:dspin_input', 'p_rsp_in', [4, 2],
     102      Port('caba:dspin_input', 'p_rsp_in', [4, 2],
    97103              dspin_data_size = parameter.Reference('dspin_rsp_width')),
    98                 ],
     104      ],
    99105)
    100106
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/include/tsar_xbar_cluster.h

    r508 r547  
    3535#include "vci_mem_cache.h"
    3636#include "vci_cc_vcache_wrapper.h"
     37#include "vci_simhelper.h"
    3738
    3839namespace soclib { namespace caba {
     
    9697    VciSignals<vci_param_int>       signal_vci_tgt_mnic;
    9798    VciSignals<vci_param_int>       signal_vci_tgt_chbuf;
     99    VciSignals<vci_param_int>       signal_vci_tgt_simh;
    98100
    99101    // Direct DSPIN signals to local crossbars
     
    125127    DspinSignals<dspin_cmd_width>     signal_dspin_cmd_chbuf_t;
    126128    DspinSignals<dspin_rsp_width>     signal_dspin_rsp_chbuf_t;
     129    DspinSignals<dspin_cmd_width>     signal_dspin_cmd_simh_t;
     130    DspinSignals<dspin_rsp_width>     signal_dspin_rsp_simh_t;
    127131
    128132    // Coherence DSPIN signals to local crossbar
     
    187191                          dspin_rsp_width>*       wt_mtty;
    188192
     193    VciSimhelper<vci_param_int>*                  simhelper;
     194
     195    VciDspinTargetWrapper<vci_param_int,
     196                          dspin_cmd_width,
     197                          dspin_rsp_width>*       wt_simhelper;
     198
     199
    189200    VciFrameBuffer<vci_param_int>*                fbuf;
    190201
     
    193204                          dspin_rsp_width>*       wt_fbuf;
    194205
    195     VciMultiNic<vci_param_int>*                   mnic;
     206    // for almos
     207    VciSimpleRom<vci_param_int>*                   mnic;
    196208
    197209    VciDspinTargetWrapper<vci_param_int,
     
    249261                     size_t                             tgtid_chbuf,
    250262                     size_t                             tgtid_bdev,
     263                     size_t                             tgtid_simh,
    251264                     size_t                             memc_ways,
    252265                     size_t                             memc_sets,
  • trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp

    r512 r547  
    5959         size_t                             tgtid_chbuf,
    6060         size_t                             tgtid_bdev,
     61         size_t                             tgtid_simh,
    6162         size_t                             memc_ways,
    6263         size_t                             memc_sets,
     
    222223    {
    223224        nb_direct_initiators         = nb_procs + 3;
    224         nb_direct_targets            = 9;
     225        nb_direct_targets            = 10;
    225226    }
    226227
     
    357358
    358359        /////////////////////////////////////////////
    359         int mac = 0xBEEF0000;
    360         mnic = new VciMultiNic<vci_param_int>(
    361                      "mnic",
    362                      IntTab(cluster_id, tgtid_mnic),
    363                      mtd,
    364                      nic_channels,
    365                      nic_rx_name,
    366                      nic_tx_name,
    367                      mac,             // mac_4 address
    368                      0xBABE );           // mac_2 address
     360        // Commented for almos; we don't want the nic; replaced by a rom
     361        //int mac = 0xBEEF0000;
     362        //mnic = new VciMultiNic<vci_param_int>(
     363        //             "mnic",
     364        //             IntTab(cluster_id, tgtid_mnic),
     365        //             mtd,
     366        //             nic_channels,
     367        //             nic_rx_name,
     368        //             nic_tx_name,
     369        //             mac,             // mac_4 address
     370        //             0xBABE );           // mac_2 address
     371        mnic = new VciSimpleRom<vci_param_int>(
     372                    "mnic",
     373                    IntTab(cluster_id, tgtid_mnic),
     374                    mtd,
     375                    loader);
    369376
    370377        wt_mnic = new VciDspinTargetWrapper<vci_param_int,
     
    414421                     "wt_mtty",
    415422                     x_width + y_width + l_width);
     423
     424        simhelper = new VciSimhelper<vci_param_int>(
     425                     "sim_helper",
     426                     IntTab(cluster_id, tgtid_simh),
     427                     mtd);
     428
     429        wt_simhelper = new VciDspinTargetWrapper<vci_param_int,
     430                                                 dspin_cmd_width,
     431                                                 dspin_rsp_width>(
     432                     "wt_simhelper",
     433                     x_width + y_width + l_width);
    416434    }
    417435
     
    479497        xbar_cmd_d->p_local_out[tgtid_mnic]      (signal_dspin_cmd_mnic_t);
    480498        xbar_cmd_d->p_local_out[tgtid_chbuf]     (signal_dspin_cmd_chbuf_t);
     499        xbar_cmd_d->p_local_out[tgtid_simh]      (signal_dspin_cmd_simh_t);
    481500
    482501        xbar_cmd_d->p_local_in[nb_procs + 1]     (signal_dspin_cmd_bdev_i);
     
    509528        xbar_rsp_d->p_local_in[tgtid_mnic]       (signal_dspin_rsp_mnic_t);
    510529        xbar_rsp_d->p_local_in[tgtid_chbuf]      (signal_dspin_rsp_chbuf_t);
     530        xbar_rsp_d->p_local_in[tgtid_simh]       (signal_dspin_rsp_simh_t);
    511531
    512532        xbar_rsp_d->p_local_out[nb_procs + 1]    (signal_dspin_rsp_bdev_i);
     
    706726        for (size_t i = 0; i < nic_channels; i++)
    707727        {
    708             mnic->p_rx_irq[i]          (signal_irq_mnic_rx[i]);
    709             mnic->p_tx_irq[i]          (signal_irq_mnic_tx[i]);
     728            //mnic->p_rx_irq[i]          (signal_irq_mnic_rx[i]);
     729            //mnic->p_tx_irq[i]          (signal_irq_mnic_tx[i]);
    710730        }
    711731
     
    774794        wt_mtty->p_dspin_rsp           (signal_dspin_rsp_mtty_t);
    775795        wt_mtty->p_vci                 (signal_vci_tgt_mtty);
     796
     797
     798        // Sim Helper
     799        simhelper->p_clk               (this->p_clk);
     800        simhelper->p_resetn            (this->p_resetn);
     801        simhelper->p_vci               (signal_vci_tgt_simh);
     802       
     803        // wrapper tgt Sim Helper
     804        wt_simhelper->p_clk            (this->p_clk);
     805        wt_simhelper->p_resetn         (this->p_resetn);
     806        wt_simhelper->p_dspin_cmd      (signal_dspin_cmd_simh_t);
     807        wt_simhelper->p_dspin_rsp      (signal_dspin_rsp_simh_t);
     808        wt_simhelper->p_vci            (signal_vci_tgt_simh);
    776809
    777810        std::cout << "  - MTTY connected" << std::endl;
     
    831864        delete mtty;
    832865        delete wt_mtty;
     866        delete simhelper;
     867        delete wt_simhelper;
    833868    }
    834869}
Note: See TracChangeset for help on using the changeset viewer.