Ignore:
Timestamp:
Oct 31, 2013, 6:18:02 PM (11 years ago)
Author:
meunier
Message:

Committing a new hardware mapping in almos for the tsar_generic_xbar platform.

File:
1 edited

Legend:

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

    r548 r572  
    233233#define MAX_FROZEN_CYCLES     1000000
    234234
    235 /////////////////////////////////////////////////////////
    236 //    Physical segments definition
    237 /////////////////////////////////////////////////////////
    238 // There is 3 segments replicated in all clusters
    239 // and 5 specific segments in the "IO" cluster
    240 // (containing address 0xBF000000)
    241 /////////////////////////////////////////////////////////
    242 
    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
    278 
    279 #ifdef USE_ALMOS
    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
    311235
    312236
     
    326250#define CDMA_TGTID      8
    327251#define SIMH_TGTID      9
     252
     253
     254
     255/////////////////////////////////////////////////////////
     256//    Physical segments definition
     257/////////////////////////////////////////////////////////
     258// There is 3 segments replicated in all clusters
     259// and 5 specific segments in the "IO" cluster
     260// (containing address 0xBF000000)
     261/////////////////////////////////////////////////////////
     262
     263#ifdef USE_GIET
     264   // specific segments in "IO" cluster : absolute physical address
     265   #define BROM_BASE    0x00BFC00000
     266   #define BROM_SIZE    0x0000100000   // 1 Mbytes
     267
     268   #define FBUF_BASE    0x00B2000000
     269   #define FBUF_SIZE    (FBUF_X_SIZE * FBUF_Y_SIZE * 2)
     270
     271   #define BDEV_BASE    0x00B3000000
     272   #define BDEV_SIZE    0x0000001000   // 4 Kbytes
     273
     274   #define MTTY_BASE    0x00B4000000
     275   #define MTTY_SIZE    0x0000001000   // 4 Kbytes
     276
     277   #define MNIC_BASE    0x00B5000000
     278   #define MNIC_SIZE    0x0000080000   // 512 Kbytes (for 8 channels)
     279
     280   #define CDMA_BASE    0x00B6000000
     281   #define CDMA_SIZE    0x0000004000 * NB_CMA_CHANNELS
     282
     283   // replicated segments : address is incremented by a cluster offset
     284   //     offset  = cluster(x,y) << (address_width-x_width-y_width);
     285
     286   #define MEMC_BASE    0x0000000000
     287   #define MEMC_SIZE    0x0010000000   // 256 Mbytes per cluster
     288
     289   #define XICU_BASE    0x00B0000000
     290   #define XICU_SIZE    0x0000001000   // 4 Kbytes
     291
     292   #define MDMA_BASE    0x00B1000000
     293   #define MDMA_SIZE    0x0000001000 * NB_DMA_CHANNELS  // 4 Kbytes per channel
     294
     295   #define SIMH_BASE    0x00B7000000
     296   #define SIMH_SIZE    0x0000001000
     297#endif
     298
     299#ifdef USE_ALMOS
     300   // 2^19 is the offset for the local id (8 bits for global ID :
     301   // 1 bit for Memcache or Peripheral, 4 for local peripheral id)
     302   // (Almos supports 32 bits physical addresses)
     303
     304   #define CLUSTER_IO_INC  (cluster_io_id * (0x80000000ULL / (XMAX * YMAX) * 2))
     305
     306   #define MEMC_MAX_SIZE (0x80000000 / (XMAX * YMAX))
     307
     308   #define BROM_BASE    0x00BFC00000
     309   #define BROM_SIZE    0x0000100000   // 1 Mbytes
     310
     311   #define MEMC_BASE    0x0000000000
     312   #define MEMC_SIZE    min(0x02000000, MEMC_MAX_SIZE)
     313
     314   #define XICU_BASE    MEMC_MAX_SIZE + (XICU_TGTID << 19)
     315   #define XICU_SIZE    0x0000001000   // 4 Kbytes
     316   
     317   #define MDMA_BASE    MEMC_MAX_SIZE + (MDMA_TGTID << 19)
     318   #define MDMA_SIZE    (0x0000001000 * NB_DMA_CHANNELS)  // 4 Kbytes per channel 
     319
     320   #define BDEV_BASE    MEMC_MAX_SIZE + (BDEV_TGTID << 19) + (CLUSTER_IO_INC)
     321   #define BDEV_SIZE    0x0000001000   // 4 Kbytes
     322   
     323   #define MTTY_BASE    MEMC_MAX_SIZE + (MTTY_TGTID << 19) + (CLUSTER_IO_INC)
     324   #define MTTY_SIZE    0x0000001000   // 4 Kbytes
     325   
     326   #define FBUF_BASE    MEMC_MAX_SIZE + (FBUF_TGTID << 19) + (CLUSTER_IO_INC)
     327   #define FBUF_SIZE    (FBUF_X_SIZE * FBUF_Y_SIZE * 2) // Should be 0x80000
     328   
     329   #define MNIC_BASE    MEMC_MAX_SIZE + (MNIC_TGTID << 19) + (CLUSTER_IO_INC)
     330   #define MNIC_SIZE    0x0000080000
     331   
     332   #define CDMA_BASE    MEMC_MAX_SIZE + (CDMA_TGTID << 19) + (CLUSTER_IO_INC)
     333   #define CDMA_SIZE    (0x0000004000 * NB_CMA_CHANNELS)
     334   
     335   #define SIMH_BASE    MEMC_MAX_SIZE + (SIMH_TGTID << 19) + (CLUSTER_IO_INC)
     336   #define SIMH_SIZE    0x0000001000
     337
     338#endif
     339
    328340
    329341bool stop_called = false;
     
    530542   // internal network
    531543   MappingTable maptabd(vci_address_width,
    532                         IntTab(x_width + y_width, 20 - x_width - y_width),
     544                        IntTab(x_width + y_width, 16 - x_width - y_width),
    533545                        IntTab(x_width + y_width, vci_srcid_width - x_width - y_width),
    534546                        0x00FF800000);
Note: See TracChangeset for help on using the changeset viewer.