Changeset 806


Ignore:
Timestamp:
Sep 17, 2014, 1:17:56 PM (10 years ago)
Author:
cfuguet
Message:

reconf/tsar_generic_iob: Using the new P_WIDTH constant

  • This constant is used in the clusters to compute the procesor id which now is: (((x << Y_WIDTH) + y) << P_WIDTH) + lpid
  • Introducing the p_width constant in the arch.py files
Location:
branches/reconfiguration/platforms/tsar_generic_iob
Files:
1 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • branches/reconfiguration/platforms/tsar_generic_iob/scripts/arch.py

    r774 r806  
    11#!/usr/bin/env python
    2 import sys
     2from math import log
    33from mapping import *
    44
     
    2828#  - x_width        : number of bits for x coordinate
    2929#  - y_width        : number of bits for y coordinate
     30#  - p_width        : number of bits for processor local id field
    3031#  - paddr_width    : number of bits for physical address
    3132#  - irq_per_proc   : number of input IRQs per processor
     
    4849    x_width           = 4
    4950    y_width           = 4
     51    p_width           = log(nb_procs, 2)
    5052    paddr_width       = 40
    5153    irq_per_proc      = 4
     
    355357
    356358################################# platform test #######################################################
    357 
     359import sys
    358360if __name__ == '__main__':
    359361    main( x_size    = int(sys.argv[1]),
  • branches/reconfiguration/platforms/tsar_generic_iob/top.cpp

    r778 r806  
    5555// - IRQ_IN[4] : DMA channel 3
    5656//
    57 // All clusters are identical, but cluster(0,0) and cluster(XMAX-1,YMAX-1)
     57// All clusters are identical, but cluster(0,0) and cluster(X_SIZE-1,Y_SIZE-1)
    5858// contain an extra IO bridge component. These IOB0 & IOB1 components are
    5959// connected to the three networks (INT, RAM, IOX).
     
    101101// All physical segments base addresses are multiple of 1 Mbytes
    102102// (=> the 24 LSB bits = 0, and the 16 MSB bits define the target)
    103 // The (x_width + y_width) MSB bits (left aligned) define
     103// The (X_WIDTH + Y_WIDTH) MSB bits (left aligned) define
    104104// the cluster index, and the LADR bits define the local index:
    105105//      |X_ID|Y_ID|  LADR  |     OFFSET          |
     
    191191//////////////////////i/////////////////////////////////////
    192192
    193 #define XMAX                  X_SIZE
    194 #define YMAX                  Y_SIZE
    195 
    196193#define XRAM_LATENCY          0
    197194
     
    237234// in the hard_config.h file. For replicated segments, the
    238235// base address is incremented by a cluster offset:
    239 // offset  = cluster(x,y) << (address_width-x_width-y_width);
     236// offset  = cluster(x,y) << (address_width-X_WIDTH-Y_WIDTH);
    240237
    241238////////////////////////////////////////////////////////////////////////
     
    336333   uint32_t frozen_cycles    = MAX_FROZEN_CYCLES;          // monitoring frozen processor
    337334   size_t   cluster_iob0     = cluster(0,0);               // cluster containing IOB0
    338    size_t   cluster_iob1     = cluster(XMAX-1,YMAX-1);     // cluster containing IOB1
    339    size_t   x_width          = 4;                          // at most 256 clusters
    340    size_t   y_width          = 4;                          // at most 256 clusters
     335   size_t   cluster_iob1     = cluster(X_SIZE-1,Y_SIZE-1); // cluster containing IOB1
    341336
    342337   assert( (X_WIDTH == 4) and (Y_WIDTH == 4) and
     
    370365            size_t x = debug_memc_id >> 4;
    371366            size_t y = debug_memc_id & 0xF;
    372             if( (x>=XMAX) || (y>=YMAX) )
     367            if( (x>=X_SIZE) || (y>=Y_SIZE) )
    373368            {
    374                 std::cout << "MEMCID parameter does'nt fit XMAX/YMAX" << std::endl;
     369                std::cout << "MEMCID parameter does'nt fit X_SIZE/Y_SIZE" << std::endl;
    375370                exit(0);
    376371            }
     
    381376            size_t x = debug_xram_id >> 4;
    382377            size_t y = debug_xram_id & 0xF;
    383             if( (x>=XMAX) || (y>=YMAX) )
     378            if( (x>=X_SIZE) || (y>=Y_SIZE) )
    384379            {
    385                 std::cout << "XRAMID parameter does'nt fit XMAX/YMAX" << std::endl;
     380                std::cout << "XRAMID parameter does'nt fit X_SIZE/Y_SIZE" << std::endl;
    386381                exit(0);
    387382            }
     
    397392            size_t x          = cluster_xy >> 4;
    398393            size_t y          = cluster_xy & 0xF;
    399             if( (x>=XMAX) || (y>=YMAX) )
     394            if( (x>=X_SIZE) || (y>=Y_SIZE) )
    400395            {
    401                 std::cout << "PROCID parameter does'nt fit XMAX/YMAX" << std::endl;
     396                std::cout << "PROCID parameter does'nt fit X_SIZE/Y_SIZE" << std::endl;
    402397                exit(0);
    403398            }
     
    446441
    447442   // checking hardware parameters
    448    assert( (XMAX <= 16) and
    449            "The XMAX parameter cannot be larger than 16" );
    450 
    451    assert( (YMAX <= 16) and
    452            "The YMAX parameter cannot be larger than 16" );
     443   assert( (X_SIZE <= (1 << X_WIDTH)) and
     444           "The X_SIZE parameter cannot be larger than 16" );
     445
     446   assert( (Y_SIZE <= (1 << Y_WIDTH)) and
     447           "The Y_SIZE parameter cannot be larger than 16" );
    453448
    454449   assert( (NB_PROCS_MAX <= 8) and
     
    465460
    466461   std::cout << std::endl << std::dec
    467              << " - XMAX            = " << XMAX << std::endl
    468              << " - YMAX            = " << YMAX << std::endl
     462             << " - X_SIZE          = " << X_SIZE << std::endl
     463             << " - Y_SIZE          = " << Y_SIZE << std::endl
    469464             << " - NB_PROCS_MAX    = " << NB_PROCS_MAX <<  std::endl
    470465             << " - NB_TTY_CHANNELS = " << NB_TTY_CHANNELS <<  std::endl
     
    519514   /////////////////////////////////////////////////////////////////////
    520515   MappingTable maptab_int( vci_address_width,
    521                             IntTab(x_width + y_width, 16 - x_width - y_width),
    522                             IntTab(x_width + y_width, vci_srcid_width - x_width - y_width),
     516                            IntTab(X_WIDTH + Y_WIDTH, 16 - X_WIDTH - Y_WIDTH),
     517                            IntTab(X_WIDTH + Y_WIDTH, vci_srcid_width - X_WIDTH - Y_WIDTH),
    523518                            0x00FF000000);
    524519
    525    for (size_t x = 0; x < XMAX; x++)
     520   for (size_t x = 0; x < X_SIZE; x++)
    526521   {
    527       for (size_t y = 0; y < YMAX; y++)
     522      for (size_t y = 0; y < Y_SIZE; y++)
    528523      {
    529524         uint64_t offset = ((uint64_t)cluster(x,y))
    530                               << (vci_address_width-x_width-y_width);
     525                              << (vci_address_width-X_WIDTH-Y_WIDTH);
    531526         bool config    = true;
    532527         bool cacheable = true;
     
    632627    ////////////////////////////////////////////////////////////////////////
    633628    MappingTable maptab_ram( vci_address_width,
    634                              IntTab(x_width+y_width, 0),
    635                              IntTab(x_width+y_width, vci_srcid_width - x_width - y_width),
     629                             IntTab(X_WIDTH+Y_WIDTH, 0),
     630                             IntTab(X_WIDTH+Y_WIDTH, vci_srcid_width - X_WIDTH - Y_WIDTH),
    636631                             0x00FF000000);
    637632
    638     for (size_t x = 0; x < XMAX; x++)
     633    for (size_t x = 0; x < X_SIZE; x++)
    639634    {
    640         for (size_t y = 0; y < YMAX ; y++)
     635        for (size_t y = 0; y < Y_SIZE ; y++)
    641636        {
    642637            uint64_t offset = ((uint64_t)cluster(x,y))
    643                                 << (vci_address_width-x_width-y_width);
     638                                << (vci_address_width-X_WIDTH-Y_WIDTH);
    644639
    645640            std::ostringstream sxram;
     
    692687    MappingTable maptab_iox(
    693688          vci_address_width,
    694           IntTab(x_width + y_width - 1, 16 - x_width - y_width + 1),
    695           IntTab(x_width + y_width    , vci_param_ext::S - x_width - y_width),
     689          IntTab(X_WIDTH + Y_WIDTH - 1, 16 - X_WIDTH - Y_WIDTH + 1),
     690          IntTab(X_WIDTH + Y_WIDTH    , vci_param_ext::S - X_WIDTH - Y_WIDTH),
    696691          0x00FF000000);
    697692
     
    701696
    702697    const uint64_t iob0_base = ((uint64_t)cluster_iob0)
    703        << (vci_address_width - x_width - y_width);
     698       << (vci_address_width - X_WIDTH - Y_WIDTH);
    704699
    705700    maptab_iox.add(Segment("iox_seg_mtty_0", SEG_TTY_BASE + iob0_base, SEG_TTY_SIZE,
     
    721716    {
    722717       const uint64_t iob1_base = ((uint64_t)cluster_iob1)
    723           << (vci_address_width - x_width - y_width);
     718          << (vci_address_width - X_WIDTH - Y_WIDTH);
    724719
    725720        maptab_iox.add(Segment("iox_seg_mtty_1", SEG_TTY_BASE + iob1_base, SEG_TTY_SIZE,
     
    743738    // As IOMMU is not activated, addresses are 40 bits (physical addresses),
    744739    // and the choice depends on address bit A[32].
    745     for (size_t x = 0; x < XMAX; x++)
     740    for (size_t x = 0; x < X_SIZE; x++)
    746741    {
    747         for (size_t y = 0; y < YMAX ; y++)
     742        for (size_t y = 0; y < Y_SIZE ; y++)
    748743        {
    749744            const bool wti       = true;
     
    751746
    752747            const uint64_t offset = ((uint64_t)cluster(x,y))
    753                 << (vci_address_width-x_width-y_width);
     748                << (vci_address_width-X_WIDTH-Y_WIDTH);
    754749
    755750            const uint64_t xicu_base = SEG_XCU_BASE + offset;
     
    835830   // Horizontal inter-clusters INT network DSPIN
    836831   DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_h_inc =
    837       alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_inc", XMAX-1, YMAX, 3);
     832      alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_inc", X_SIZE-1, Y_SIZE, 3);
    838833   DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_h_dec =
    839       alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_dec", XMAX-1, YMAX, 3);
     834      alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_dec", X_SIZE-1, Y_SIZE, 3);
    840835   DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_h_inc =
    841       alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_h_inc", XMAX-1, YMAX, 2);
     836      alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_h_inc", X_SIZE-1, Y_SIZE, 2);
    842837   DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_h_dec =
    843       alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_h_dec", XMAX-1, YMAX, 2);
     838      alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_h_dec", X_SIZE-1, Y_SIZE, 2);
    844839
    845840   // Vertical inter-clusters INT network DSPIN
    846841   DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_v_inc =
    847       alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_inc", XMAX, YMAX-1, 3);
     842      alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_inc", X_SIZE, Y_SIZE-1, 3);
    848843   DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_v_dec =
    849       alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_dec", XMAX, YMAX-1, 3);
     844      alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_dec", X_SIZE, Y_SIZE-1, 3);
    850845   DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_v_inc =
    851       alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_v_inc", XMAX, YMAX-1, 2);
     846      alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_v_inc", X_SIZE, Y_SIZE-1, 2);
    852847   DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_v_dec =
    853       alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_v_dec", XMAX, YMAX-1, 2);
     848      alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_v_dec", X_SIZE, Y_SIZE-1, 2);
    854849
    855850   // Mesh boundaries INT network DSPIN
    856851   DspinSignals<dspin_int_cmd_width>**** signal_dspin_false_int_cmd_in =
    857       alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_in", XMAX, YMAX, 4, 3);
     852      alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_in", X_SIZE, Y_SIZE, 4, 3);
    858853   DspinSignals<dspin_int_cmd_width>**** signal_dspin_false_int_cmd_out =
    859       alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_out", XMAX, YMAX, 4, 3);
     854      alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_out", X_SIZE, Y_SIZE, 4, 3);
    860855   DspinSignals<dspin_int_rsp_width>**** signal_dspin_false_int_rsp_in =
    861       alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_in", XMAX, YMAX, 4, 2);
     856      alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_in", X_SIZE, Y_SIZE, 4, 2);
    862857   DspinSignals<dspin_int_rsp_width>**** signal_dspin_false_int_rsp_out =
    863       alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_out", XMAX, YMAX, 4, 2);
     858      alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_out", X_SIZE, Y_SIZE, 4, 2);
    864859
    865860
    866861   // Horizontal inter-clusters RAM network DSPIN
    867862   DspinSignals<dspin_ram_cmd_width>** signal_dspin_ram_cmd_h_inc =
    868       alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_h_inc", XMAX-1, YMAX);
     863      alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_h_inc", X_SIZE-1, Y_SIZE);
    869864   DspinSignals<dspin_ram_cmd_width>** signal_dspin_ram_cmd_h_dec =
    870       alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_h_dec", XMAX-1, YMAX);
     865      alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_h_dec", X_SIZE-1, Y_SIZE);
    871866   DspinSignals<dspin_ram_rsp_width>** signal_dspin_ram_rsp_h_inc =
    872       alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_h_inc", XMAX-1, YMAX);
     867      alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_h_inc", X_SIZE-1, Y_SIZE);
    873868   DspinSignals<dspin_ram_rsp_width>** signal_dspin_ram_rsp_h_dec =
    874       alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_h_dec", XMAX-1, YMAX);
     869      alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_h_dec", X_SIZE-1, Y_SIZE);
    875870
    876871   // Vertical inter-clusters RAM network DSPIN
    877872   DspinSignals<dspin_ram_cmd_width>** signal_dspin_ram_cmd_v_inc =
    878       alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_v_inc", XMAX, YMAX-1);
     873      alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_v_inc", X_SIZE, Y_SIZE-1);
    879874   DspinSignals<dspin_ram_cmd_width>** signal_dspin_ram_cmd_v_dec =
    880       alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_v_dec", XMAX, YMAX-1);
     875      alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_v_dec", X_SIZE, Y_SIZE-1);
    881876   DspinSignals<dspin_ram_rsp_width>** signal_dspin_ram_rsp_v_inc =
    882       alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_v_inc", XMAX, YMAX-1);
     877      alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_v_inc", X_SIZE, Y_SIZE-1);
    883878   DspinSignals<dspin_ram_rsp_width>** signal_dspin_ram_rsp_v_dec =
    884       alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_v_dec", XMAX, YMAX-1);
     879      alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_v_dec", X_SIZE, Y_SIZE-1);
    885880
    886881   // Mesh boundaries RAM network DSPIN
    887882   DspinSignals<dspin_ram_cmd_width>*** signal_dspin_false_ram_cmd_in =
    888       alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_false_ram_cmd_in", XMAX, YMAX, 4);
     883      alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_false_ram_cmd_in", X_SIZE, Y_SIZE, 4);
    889884   DspinSignals<dspin_ram_cmd_width>*** signal_dspin_false_ram_cmd_out =
    890       alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_false_ram_cmd_out", XMAX, YMAX, 4);
     885      alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_false_ram_cmd_out", X_SIZE, Y_SIZE, 4);
    891886   DspinSignals<dspin_ram_rsp_width>*** signal_dspin_false_ram_rsp_in =
    892       alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_false_ram_rsp_in", XMAX, YMAX, 4);
     887      alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_false_ram_rsp_in", X_SIZE, Y_SIZE, 4);
    893888   DspinSignals<dspin_ram_rsp_width>*** signal_dspin_false_ram_rsp_out =
    894       alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_false_ram_rsp_out", XMAX, YMAX, 4);
     889      alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_false_ram_rsp_out", X_SIZE, Y_SIZE, 4);
    895890
    896891   ////////////////////////////
     
    1003998                  dspin_int_rsp_width,
    1004999                  dspin_ram_cmd_width,
    1005                   dspin_ram_rsp_width>* clusters[XMAX][YMAX];
     1000                  dspin_ram_rsp_width>* clusters[X_SIZE][Y_SIZE];
    10061001
    10071002#if USE_OPENMP
     
    10101005#pragma omp for
    10111006#endif
    1012         for(size_t i = 0; i  < (XMAX * YMAX); i++)
     1007        for(size_t i = 0; i  < (X_SIZE * Y_SIZE); i++)
    10131008        {
    1014             size_t x = i / YMAX;
    1015             size_t y = i % YMAX;
     1009            size_t x = i / Y_SIZE;
     1010            size_t y = i % Y_SIZE;
    10161011
    10171012#if USE_OPENMP
     
    10481043                x,
    10491044                y,
    1050                 XMAX,
    1051                 YMAX,
     1045                X_SIZE,
     1046                Y_SIZE,
     1047
     1048                P_WIDTH,
    10521049
    10531050                maptab_int,
     
    10551052                maptab_iox,
    10561053
    1057                 x_width,
    1058                 y_width,
    1059                 vci_srcid_width - x_width - y_width,            // l_id width,
     1054                X_WIDTH,
     1055                Y_WIDTH,
     1056                vci_srcid_width - X_WIDTH - Y_WIDTH,            // l_id width,
    10601057
    10611058                INT_MEMC_TGT_ID,
     
    12161213    if ( cluster_iob0 != cluster_iob1 )
    12171214    {
    1218         (*clusters[XMAX-1][YMAX-1]->p_vci_iob_iox_ini) (signal_vci_ini_iob1);
    1219         (*clusters[XMAX-1][YMAX-1]->p_vci_iob_iox_tgt) (signal_vci_tgt_iob1);
     1215        (*clusters[X_SIZE-1][Y_SIZE-1]->p_vci_iob_iox_ini) (signal_vci_ini_iob1);
     1216        (*clusters[X_SIZE-1][Y_SIZE-1]->p_vci_iob_iox_tgt) (signal_vci_tgt_iob1);
    12201217    }
    12211218
    12221219    // All clusters Clock & RESET connexions
    1223     for ( size_t x = 0; x < (XMAX); x++ )
     1220    for ( size_t x = 0; x < (X_SIZE); x++ )
    12241221    {
    1225         for (size_t y = 0; y < YMAX; y++)
     1222        for (size_t y = 0; y < Y_SIZE; y++)
    12261223        {
    12271224            clusters[x][y]->p_clk     (signal_clk);
     
    12311228
    12321229   // Inter Clusters horizontal connections
    1233    if (XMAX > 1)
     1230   if (X_SIZE > 1)
    12341231   {
    1235       for (size_t x = 0; x < (XMAX-1); x++)
     1232      for (size_t x = 0; x < (X_SIZE-1); x++)
    12361233      {
    1237          for (size_t y = 0; y < YMAX; y++)
     1234         for (size_t y = 0; y < Y_SIZE; y++)
    12381235         {
    12391236            for (size_t k = 0; k < 3; k++)
     
    12681265
    12691266   // Inter Clusters vertical connections
    1270    if (YMAX > 1)
     1267   if (Y_SIZE > 1)
    12711268   {
    1272       for (size_t y = 0; y < (YMAX-1); y++)
     1269      for (size_t y = 0; y < (Y_SIZE-1); y++)
    12731270      {
    1274          for (size_t x = 0; x < XMAX; x++)
     1271         for (size_t x = 0; x < X_SIZE; x++)
    12751272         {
    12761273            for (size_t k = 0; k < 3; k++)
     
    13051302
    13061303   // East & West boundary cluster connections
    1307    for (size_t y = 0; y < YMAX; y++)
     1304   for (size_t y = 0; y < Y_SIZE; y++)
    13081305   {
    13091306      for (size_t k = 0; k < 3; k++)
     
    13111308         clusters[0][y]->p_dspin_int_cmd_in[WEST][k]          (signal_dspin_false_int_cmd_in[0][y][WEST][k]);
    13121309         clusters[0][y]->p_dspin_int_cmd_out[WEST][k]         (signal_dspin_false_int_cmd_out[0][y][WEST][k]);
    1313          clusters[XMAX-1][y]->p_dspin_int_cmd_in[EAST][k]     (signal_dspin_false_int_cmd_in[XMAX-1][y][EAST][k]);
    1314          clusters[XMAX-1][y]->p_dspin_int_cmd_out[EAST][k]    (signal_dspin_false_int_cmd_out[XMAX-1][y][EAST][k]);
     1310         clusters[X_SIZE-1][y]->p_dspin_int_cmd_in[EAST][k]   (signal_dspin_false_int_cmd_in[X_SIZE-1][y][EAST][k]);
     1311         clusters[X_SIZE-1][y]->p_dspin_int_cmd_out[EAST][k]  (signal_dspin_false_int_cmd_out[X_SIZE-1][y][EAST][k]);
    13151312      }
    13161313
     
    13191316         clusters[0][y]->p_dspin_int_rsp_in[WEST][k]          (signal_dspin_false_int_rsp_in[0][y][WEST][k]);
    13201317         clusters[0][y]->p_dspin_int_rsp_out[WEST][k]         (signal_dspin_false_int_rsp_out[0][y][WEST][k]);
    1321          clusters[XMAX-1][y]->p_dspin_int_rsp_in[EAST][k]     (signal_dspin_false_int_rsp_in[XMAX-1][y][EAST][k]);
    1322          clusters[XMAX-1][y]->p_dspin_int_rsp_out[EAST][k]    (signal_dspin_false_int_rsp_out[XMAX-1][y][EAST][k]);
     1318         clusters[X_SIZE-1][y]->p_dspin_int_rsp_in[EAST][k]   (signal_dspin_false_int_rsp_in[X_SIZE-1][y][EAST][k]);
     1319         clusters[X_SIZE-1][y]->p_dspin_int_rsp_out[EAST][k]  (signal_dspin_false_int_rsp_out[X_SIZE-1][y][EAST][k]);
    13231320      }
    13241321
     
    13281325     clusters[0][y]->p_dspin_ram_rsp_out[WEST]      (signal_dspin_false_ram_rsp_out[0][y][WEST]);
    13291326
    1330      clusters[XMAX-1][y]->p_dspin_ram_cmd_in[EAST]  (signal_dspin_false_ram_cmd_in[XMAX-1][y][EAST]);
    1331      clusters[XMAX-1][y]->p_dspin_ram_cmd_out[EAST] (signal_dspin_false_ram_cmd_out[XMAX-1][y][EAST]);
    1332      clusters[XMAX-1][y]->p_dspin_ram_rsp_in[EAST]  (signal_dspin_false_ram_rsp_in[XMAX-1][y][EAST]);
    1333      clusters[XMAX-1][y]->p_dspin_ram_rsp_out[EAST] (signal_dspin_false_ram_rsp_out[XMAX-1][y][EAST]);
     1327     clusters[X_SIZE-1][y]->p_dspin_ram_cmd_in[EAST]  (signal_dspin_false_ram_cmd_in[X_SIZE-1][y][EAST]);
     1328     clusters[X_SIZE-1][y]->p_dspin_ram_cmd_out[EAST] (signal_dspin_false_ram_cmd_out[X_SIZE-1][y][EAST]);
     1329     clusters[X_SIZE-1][y]->p_dspin_ram_rsp_in[EAST]  (signal_dspin_false_ram_rsp_in[X_SIZE-1][y][EAST]);
     1330     clusters[X_SIZE-1][y]->p_dspin_ram_rsp_out[EAST] (signal_dspin_false_ram_rsp_out[X_SIZE-1][y][EAST]);
    13341331   }
    13351332
     
    13371334
    13381335   // North & South boundary clusters connections
    1339    for (size_t x = 0; x < XMAX; x++)
     1336   for (size_t x = 0; x < X_SIZE; x++)
    13401337   {
    13411338      for (size_t k = 0; k < 3; k++)
     
    13431340         clusters[x][0]->p_dspin_int_cmd_in[SOUTH][k]         (signal_dspin_false_int_cmd_in[x][0][SOUTH][k]);
    13441341         clusters[x][0]->p_dspin_int_cmd_out[SOUTH][k]        (signal_dspin_false_int_cmd_out[x][0][SOUTH][k]);
    1345          clusters[x][YMAX-1]->p_dspin_int_cmd_in[NORTH][k]    (signal_dspin_false_int_cmd_in[x][YMAX-1][NORTH][k]);
    1346          clusters[x][YMAX-1]->p_dspin_int_cmd_out[NORTH][k]   (signal_dspin_false_int_cmd_out[x][YMAX-1][NORTH][k]);
     1342         clusters[x][Y_SIZE-1]->p_dspin_int_cmd_in[NORTH][k]  (signal_dspin_false_int_cmd_in[x][Y_SIZE-1][NORTH][k]);
     1343         clusters[x][Y_SIZE-1]->p_dspin_int_cmd_out[NORTH][k] (signal_dspin_false_int_cmd_out[x][Y_SIZE-1][NORTH][k]);
    13471344      }
    13481345
     
    13511348         clusters[x][0]->p_dspin_int_rsp_in[SOUTH][k]         (signal_dspin_false_int_rsp_in[x][0][SOUTH][k]);
    13521349         clusters[x][0]->p_dspin_int_rsp_out[SOUTH][k]        (signal_dspin_false_int_rsp_out[x][0][SOUTH][k]);
    1353          clusters[x][YMAX-1]->p_dspin_int_rsp_in[NORTH][k]    (signal_dspin_false_int_rsp_in[x][YMAX-1][NORTH][k]);
    1354          clusters[x][YMAX-1]->p_dspin_int_rsp_out[NORTH][k]   (signal_dspin_false_int_rsp_out[x][YMAX-1][NORTH][k]);
     1350         clusters[x][Y_SIZE-1]->p_dspin_int_rsp_in[NORTH][k]  (signal_dspin_false_int_rsp_in[x][Y_SIZE-1][NORTH][k]);
     1351         clusters[x][Y_SIZE-1]->p_dspin_int_rsp_out[NORTH][k] (signal_dspin_false_int_rsp_out[x][Y_SIZE-1][NORTH][k]);
    13551352      }
    13561353
     
    13601357      clusters[x][0]->p_dspin_ram_rsp_out[SOUTH]      (signal_dspin_false_ram_rsp_out[x][0][SOUTH]);
    13611358
    1362       clusters[x][YMAX-1]->p_dspin_ram_cmd_in[NORTH]  (signal_dspin_false_ram_cmd_in[x][YMAX-1][NORTH]);
    1363       clusters[x][YMAX-1]->p_dspin_ram_cmd_out[NORTH] (signal_dspin_false_ram_cmd_out[x][YMAX-1][NORTH]);
    1364       clusters[x][YMAX-1]->p_dspin_ram_rsp_in[NORTH]  (signal_dspin_false_ram_rsp_in[x][YMAX-1][NORTH]);
    1365       clusters[x][YMAX-1]->p_dspin_ram_rsp_out[NORTH] (signal_dspin_false_ram_rsp_out[x][YMAX-1][NORTH]);
     1359      clusters[x][Y_SIZE-1]->p_dspin_ram_cmd_in[NORTH]  (signal_dspin_false_ram_cmd_in[x][Y_SIZE-1][NORTH]);
     1360      clusters[x][Y_SIZE-1]->p_dspin_ram_cmd_out[NORTH] (signal_dspin_false_ram_cmd_out[x][Y_SIZE-1][NORTH]);
     1361      clusters[x][Y_SIZE-1]->p_dspin_ram_rsp_in[NORTH]  (signal_dspin_false_ram_rsp_in[x][Y_SIZE-1][NORTH]);
     1362      clusters[x][Y_SIZE-1]->p_dspin_ram_rsp_out[NORTH] (signal_dspin_false_ram_rsp_out[x][Y_SIZE-1][NORTH]);
    13661363   }
    13671364
     
    13781375
    13791376   // network boundaries signals
    1380    for (size_t x = 0; x < XMAX ; x++)
     1377   for (size_t x = 0; x < X_SIZE ; x++)
    13811378   {
    1382       for (size_t y = 0; y < YMAX ; y++)
     1379      for (size_t y = 0; y < Y_SIZE ; y++)
    13831380      {
    13841381         for (size_t a = 0; a < 4; a++)
     
    15251522         {
    15261523            clusters[0][0]->iob->print_trace();
    1527             clusters[XMAX-1][YMAX-1]->iob->print_trace();
     1524            clusters[X_SIZE-1][Y_SIZE-1]->iob->print_trace();
    15281525            //              clusters[0][0]->signal_int_vci_tgt_iobx.print_trace( "[SIG]IOB0_INT_TGT");
    15291526            //              clusters[0][0]->signal_int_vci_ini_iobx.print_trace( "[SIG]IOB0_INT_INI");
  • branches/reconfiguration/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h

    r748 r806  
    11//////////////////////////////////////////////////////////////////////////////
    22// File: tsar_iob_cluster.h
    3 // Author: Alain Greiner 
     3// Author: Alain Greiner
    44// Copyright: UPMC/LIP6
    55// Date : april 2013
     
    3737
    3838///////////////////////////////////////////////////////////////////////////
    39 template<typename vci_param_int, 
     39template<typename vci_param_int,
    4040         typename vci_param_ext,
    41          size_t   dspin_int_cmd_width, 
     41         size_t   dspin_int_cmd_width,
    4242         size_t   dspin_int_rsp_width,
    4343         size_t   dspin_ram_cmd_width,
    4444         size_t   dspin_ram_rsp_width>
    45 class TsarIobCluster 
     45class TsarIobCluster
    4646///////////////////////////////////////////////////////////////////////////
    4747    : public soclib::caba::BaseModule
     
    5656    // Thes two ports are used to connect IOB to IOX nework in top cell
    5757    soclib::caba::VciInitiator<vci_param_ext>*         p_vci_iob_iox_ini;
    58     soclib::caba::VciTarget<vci_param_ext>*            p_vci_iob_iox_tgt; 
     58    soclib::caba::VciTarget<vci_param_ext>*            p_vci_iob_iox_tgt;
    5959
    6060    // These arrays of ports are used to connect the INT & RAM networks in top cell
     
    7474    sc_signal<bool>                       signal_irq_mdma[8];
    7575    sc_signal<bool>                       signal_irq_memc;
    76    
     76
    7777    // INT network DSPIN signals between DSPIN routers and DSPIN local_crossbars
    78     DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_l2g_d; 
    79     DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_g2l_d; 
     78    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_l2g_d;
     79    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_cmd_g2l_d;
    8080    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_l2g_c;
    81     DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_g2l_c; 
     81    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_g2l_c;
    8282    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_l2g_c;
    8383    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_g2l_c;
    84     DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_l2g_d; 
    85     DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_g2l_d; 
     84    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_l2g_d;
     85    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_rsp_g2l_d;
    8686    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_p2m_l2g_c;
    8787    DspinSignals<dspin_int_rsp_width>     signal_int_dspin_p2m_g2l_c;
    8888
    8989    // INT network VCI signals between VCI components and VCI local crossbar
    90     VciSignals<vci_param_int>             signal_int_vci_ini_proc[8]; 
    91     VciSignals<vci_param_int>             signal_int_vci_ini_mdma; 
    92     VciSignals<vci_param_int>             signal_int_vci_ini_iobx; 
     90    VciSignals<vci_param_int>             signal_int_vci_ini_proc[8];
     91    VciSignals<vci_param_int>             signal_int_vci_ini_mdma;
     92    VciSignals<vci_param_int>             signal_int_vci_ini_iobx;
    9393
    9494    VciSignals<vci_param_int>             signal_int_vci_tgt_memc;
     
    101101    VciSignals<vci_param_int>             signal_int_vci_g2l;
    102102
    103     // Coherence DSPIN signals between DSPIN local crossbars and CC components 
     103    // Coherence DSPIN signals between DSPIN local crossbars and CC components
    104104    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_m2p_memc;
    105105    DspinSignals<dspin_int_cmd_width>     signal_int_dspin_clack_memc;
     
    115115
    116116    // RAM network DSPIN signals between VCI/DSPIN wrappers, RAM dspin crossbar
    117     // and routers 
     117    // and routers
    118118    DspinSignals<dspin_ram_cmd_width>     signal_ram_dspin_cmd_xram_t;
    119119    DspinSignals<dspin_ram_rsp_width>     signal_ram_dspin_rsp_xram_t;
     
    126126    DspinSignals<dspin_ram_cmd_width>     signal_ram_dspin_cmd_false;
    127127    DspinSignals<dspin_ram_rsp_width>     signal_ram_dspin_rsp_false;
    128  
     128
    129129    //////////////////////////////////////
    130130    // Hardwate Components (pointers)
    131131    //////////////////////////////////////
    132     VciCcVCacheWrapper<vci_param_int, 
     132    VciCcVCacheWrapper<vci_param_int,
    133133                       dspin_int_cmd_width,
    134134                       dspin_int_rsp_width,
     
    136136
    137137    VciMemCache<vci_param_int,
    138                 vci_param_ext, 
    139                 dspin_int_rsp_width, 
     138                vci_param_ext,
     139                dspin_int_rsp_width,
    140140                dspin_int_cmd_width>*                 memc;
    141141
     
    151151
    152152    VciLocalCrossbar<vci_param_int>*                  int_xbar_d;
    153    
     153
    154154    VciDspinInitiatorWrapper<vci_param_int,
    155155                             dspin_int_cmd_width,
     
    172172                          dspin_ram_cmd_width,
    173173                          dspin_ram_rsp_width>*       xram_ram_wt;
    174    
     174
    175175    DspinRouter<dspin_ram_cmd_width>*                 ram_router_cmd;
    176176    DspinRouter<dspin_ram_rsp_width>*                 ram_router_rsp;
     
    178178    DspinLocalCrossbar<dspin_ram_cmd_width>*          ram_xbar_cmd;
    179179    DspinLocalCrossbar<dspin_ram_rsp_width>*          ram_xbar_rsp;
    180    
     180
    181181
    182182    // IO Network Components (not instanciated in all clusters)
     
    191191    // cluster constructor
    192192    TsarIobCluster( sc_module_name                     insname,
    193                     size_t                             nb_procs,   
    194                     size_t                             nb_dmas, 
     193                    size_t                             nb_procs,
     194                    size_t                             nb_dmas,
    195195                    size_t                             x,             // x coordinate
    196196                    size_t                             y,             // y coordinate
    197                     size_t                             xmax,
    198                     size_t                             ymax,
     197                    size_t                             x_size,
     198                    size_t                             y_size,
     199
     200                    size_t                             p_width,       // pid field bits
    199201
    200202                    const soclib::common::MappingTable &mt_int,
     
    226228                    size_t                             memc_sets,
    227229                    size_t                             l1_i_ways,
    228                     size_t                             l1_i_sets, 
     230                    size_t                             l1_i_sets,
    229231                    size_t                             l1_d_ways,
    230                     size_t                             l1_d_sets,   
    231                     size_t                             xram_latency, 
     232                    size_t                             l1_d_sets,
     233                    size_t                             xram_latency,
    232234                    size_t                             xcu_nb_inputs,
    233235
     
    236238                    const Loader                       &loader,       // loader for XRAM
    237239
    238                     uint32_t                           frozen_cycles, 
     240                    uint32_t                           frozen_cycles,
    239241                    uint32_t                           start_debug_cycle,
    240                     bool                               memc_debug_ok, 
    241                     bool                               proc_debug_ok, 
    242                     bool                               iob0_debug_ok ); 
     242                    bool                               memc_debug_ok,
     243                    bool                               proc_debug_ok,
     244                    bool                               iob0_debug_ok );
    243245
    244246  protected:
     
    247249
    248250    void init();
    249  
     251
    250252
    251253};
  • branches/reconfiguration/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/src/tsar_iob_cluster.cpp

    r748 r806  
    11//////////////////////////////////////////////////////////////////////////////
    22// File: tsar_iob_cluster.cpp
    3 // Author: Alain Greiner 
     3// Author: Alain Greiner
    44// Copyright: UPMC/LIP6
    55// Date : april 2013
    66// This program is released under the GNU public license
    77//////////////////////////////////////////////////////////////////////////////
    8 // Cluster(0,0) & Cluster(xmax-1,ymax-1) contains the IOB0 & IOB1 components.
     8// Cluster(0,0) & Cluster(x_size-1,y_size-1) contains the IOB0 & IOB1 components.
    99// These two clusters contain 6 extra components:
    1010// - 1 vci_io_bridge (connected to the 3 networks.
    1111// - 3 vci_dspin_wrapper for the IOB.
    12 // - 2 dspin_local_crossbar for commands and responses. 
     12// - 2 dspin_local_crossbar for commands and responses.
    1313//////////////////////////////////////////////////////////////////////////////
    1414
     
    3030//////////////////////////////////////////////////////////////////////////
    3131tmpl(/**/)::TsarIobCluster(
    32 //////////////////////////////////////////////////////////////////////////
    33                     sc_module_name                     insname,
    34                     size_t                             nb_procs,
    35                     size_t                             nb_dmas,
    36                     size_t                             x_id,
    37                     size_t                             y_id,
    38                     size_t                             xmax,
    39                     size_t                             ymax,
    40 
    41                     const soclib::common::MappingTable &mt_int,
    42                     const soclib::common::MappingTable &mt_ram,
    43                     const soclib::common::MappingTable &mt_iox,
    44 
    45                     size_t                             x_width,
    46                     size_t                             y_width,
    47                     size_t                             l_width,
    48 
    49                     size_t                             int_memc_tgt_id, // local index
    50                     size_t                             int_xicu_tgt_id, // local index
    51                     size_t                             int_mdma_tgt_id, // local index
    52                     size_t                             int_brom_tgt_id, // local index
    53                     size_t                             int_iobx_tgt_id, // local index
    54 
    55                     size_t                             int_proc_ini_id, // local index
    56                     size_t                             int_mdma_ini_id, // local index
    57                     size_t                             int_iobx_ini_id, // local index
    58 
    59                     size_t                             ram_xram_tgt_id, // local index
    60                     size_t                             ram_memc_ini_id, // local index
    61                     size_t                             ram_iobx_ini_id, // local index
    62 
    63                     bool                               is_io,           // is IO cluster (IOB)?
    64                     size_t                             iox_iobx_tgt_id, // local_index
    65                     size_t                             iox_iobx_ini_id, // local index
    66 
    67                     size_t                             memc_ways,
    68                     size_t                             memc_sets,
    69                     size_t                             l1_i_ways,
    70                     size_t                             l1_i_sets,
    71                     size_t                             l1_d_ways,
    72                     size_t                             l1_d_sets,
    73                     size_t                             xram_latency,
    74                     size_t                             xcu_nb_inputs,
    75 
    76                     bool                               distboot,
    77 
    78                     const Loader                       &loader,
    79 
    80                     uint32_t                           frozen_cycles,
    81                     uint32_t                           debug_start_cycle,
    82                     bool                               memc_debug_ok,
    83                     bool                               proc_debug_ok,
    84                     bool                               iob_debug_ok )
    85     : soclib::caba::BaseModule(insname),
    86       p_clk("clk"),
    87       p_resetn("resetn")
     32        sc_module_name                     insname,
     33        size_t                             nb_procs,
     34        size_t                             nb_dmas,
     35        size_t                             x_id,
     36        size_t                             y_id,
     37        size_t                             x_size,
     38        size_t                             y_size,
     39
     40        size_t                             p_width,
     41
     42        const soclib::common::MappingTable &mt_int,
     43        const soclib::common::MappingTable &mt_ram,
     44        const soclib::common::MappingTable &mt_iox,
     45
     46        size_t                             x_width,
     47        size_t                             y_width,
     48        size_t                             l_width,
     49
     50        size_t                             int_memc_tgt_id, // local index
     51        size_t                             int_xicu_tgt_id, // local index
     52        size_t                             int_mdma_tgt_id, // local index
     53        size_t                             int_brom_tgt_id, // local index
     54        size_t                             int_iobx_tgt_id, // local index
     55
     56        size_t                             int_proc_ini_id, // local index
     57        size_t                             int_mdma_ini_id, // local index
     58        size_t                             int_iobx_ini_id, // local index
     59
     60        size_t                             ram_xram_tgt_id, // local index
     61        size_t                             ram_memc_ini_id, // local index
     62        size_t                             ram_iobx_ini_id, // local index
     63
     64        bool                               is_io,           // is IO cluster (IOB)?
     65        size_t                             iox_iobx_tgt_id, // local_index
     66        size_t                             iox_iobx_ini_id, // local index
     67
     68        size_t                             memc_ways,
     69        size_t                             memc_sets,
     70        size_t                             l1_i_ways,
     71        size_t                             l1_i_sets,
     72        size_t                             l1_d_ways,
     73        size_t                             l1_d_sets,
     74        size_t                             xram_latency,
     75        size_t                             xcu_nb_inputs,
     76
     77        bool                               distboot,
     78
     79        const Loader                       &loader,
     80
     81        uint32_t                           frozen_cycles,
     82        uint32_t                           debug_start_cycle,
     83        bool                               memc_debug_ok,
     84        bool                               proc_debug_ok,
     85        bool                               iob_debug_ok ) :
     86
     87            // constructor initialization list
     88
     89            soclib::caba::BaseModule(insname),
     90            p_clk("clk"),
     91            p_resetn("resetn")
    8892{
    89     assert( (x_id < xmax) and (y_id < ymax) and "Illegal cluster coordinates");
    90 
    91     size_t cluster_id = (x_id<<4) + y_id;
     93
     94    assert( (x_id < x_size) and (y_id < y_size) and "Illegal cluster coordinates");
     95
     96    size_t cluster_id = (x_id << x_width) | y_id;
    9297
    9398    // Vectors of DSPIN ports for inter-cluster communications
     
    103108
    104109    // VCI ports from IOB to IOX network (only in IO clusters)
    105     if ( is_io )
     110    if (is_io)
    106111    {
    107112        p_vci_iob_iox_ini = new soclib::caba::VciInitiator<vci_param_ext>;
    108         p_vci_iob_iox_tgt = new soclib::caba::VciTarget<vci_param_ext>; 
     113        p_vci_iob_iox_tgt = new soclib::caba::VciTarget<vci_param_ext>;
    109114    }
    110115
     
    115120    ////////////  PROCS
    116121    for (size_t p = 0; p < nb_procs; p++)
    117     { 
     122    {
    118123        std::ostringstream s_proc;
    119124        s_proc << "proc_" << x_id << "_" << y_id << "_" << p;
     
    123128                                         GdbServer<Mips32ElIss> >(
    124129                      s_proc.str().c_str(),
    125                       cluster_id*nb_procs + p,        // GLOBAL PROC_ID
     130                      (cluster_id << p_width) | p,    // GLOBAL PROC_ID
    126131                      mt_int,                         // Mapping Table INT network
    127132                      IntTab(cluster_id,p),           // SRCID
    128                       (cluster_id << l_width) + p,    // CC_GLOBAL_ID
     133                      (cluster_id << l_width) | p,    // CC_GLOBAL_ID
    129134                      8,                              // ITLB ways
    130135                      8,                              // ITLB sets
     
    135140                      4,                              // WBUF nlines
    136141                      4,                              // WBUF nwords
    137                       x_width,
    138                       y_width,
     142                      x_width,                        // number of bits for x coordinate
     143                      y_width,                        // number of bits for y coordinate
    139144                      frozen_cycles,                  // max frozen cycles
    140145                      debug_start_cycle,
     
    150155    }
    151156
    152     ///////////  MEMC   
     157    ///////////  MEMC
    153158    std::ostringstream s_memc;
    154159    s_memc << "memc_" << x_id << "_" << y_id;
     
    225230                     cluster_id,                   // cluster id
    226231                     nb_direct_initiators,         // number of local initiators
    227                      nb_direct_targets,            // number of local targets 
     232                     nb_direct_targets,            // number of local targets
    228233                     0 );                          // default target
    229234
     
    255260                     x_width, y_width, l_width,    // several dests
    256261                     1,                            // number of local sources
    257                      nb_procs,                     // number of local dests 
    258                      2, 2,                         // fifo depths 
     262                     nb_procs,                     // number of local dests
     263                     2, 2,                         // fifo depths
    259264                     true,                         // pseudo CMD
    260265                     false,                        // no routing table
     
    270275                     nb_procs,                     // number of local sources
    271276                     1,                            // number of local dests
    272                      2, 2,                         // fifo depths 
     277                     2, 2,                         // fifo depths
    273278                     false,                        // pseudo RSP
    274279                     false,                        // no routing table
    275                      false );                      // no broacast 
     280                     false );                      // no broacast
    276281
    277282    std::ostringstream s_int_xbar_clack_c;
     
    283288                     x_width, y_width, l_width,
    284289                     1,                            // number of local sources
    285                      nb_procs,                     // number of local targets 
     290                     nb_procs,                     // number of local targets
    286291                     1, 1,                         // fifo depths
    287292                     true,                         // CMD
     
    297302                     x_width, y_width,             // x & y fields width
    298303                     3,                            // nb virtual channels
    299                      4,4);                         // input & output fifo depths
     304                     4, 4);                        // input & output fifo depths
    300305
    301306    std::ostringstream s_int_router_rsp;
     
    306311                     x_width, y_width,             // x & y fields width
    307312                     2,                            // nb virtual channels
    308                      4,4);                         // input & output fifo depths
     313                     4, 4);                        // input & output fifo depths
    309314
    310315    //////////////  XRAM
     
    351356        ///////////  IO_BRIDGE
    352357        std::ostringstream s_iob;
    353         s_iob << "iob_" << x_id << "_" << y_id;   
     358        s_iob << "iob_" << x_id << "_" << y_id;
    354359        iob = new VciIoBridge<vci_param_int,
    355                               vci_param_ext>( 
     360                              vci_param_ext>(
    356361                     s_iob.str().c_str(),
    357362                     mt_ram,                                // EXT network maptab
     
    367372                     debug_start_cycle,
    368373                     iob_debug_ok );
    369        
     374
    370375        std::ostringstream s_iob_ram_wi;
    371         s_iob_ram_wi << "iob_ram_wi_" << x_id << "_" << y_id;   
     376        s_iob_ram_wi << "iob_ram_wi_" << x_id << "_" << y_id;
    372377        iob_ram_wi = new VciDspinInitiatorWrapper<vci_param_ext,
    373378                                                  dspin_ram_cmd_width,
     
    409414    // on coherence network : local srcid[proc] in [0...nb_procs-1]
    410415    //                      : local srcid[memc] = nb_procs
    411  
     416
    412417    //////////////////////// internal CMD & RSP routers
    413418    int_router_cmd->p_clk                        (this->p_clk);
     
    438443    int_router_cmd->p_in[4][1]                   (signal_int_dspin_m2p_l2g_c);
    439444    int_router_cmd->p_in[4][2]                   (signal_int_dspin_clack_l2g_c);
    440    
     445
    441446    int_router_rsp->p_out[4][0]                  (signal_int_dspin_rsp_g2l_d);
    442447    int_router_rsp->p_out[4][1]                  (signal_int_dspin_p2m_g2l_c);
     
    475480    int_wt_gate_d->p_dspin_cmd                   (signal_int_dspin_cmd_g2l_d);
    476481    int_wt_gate_d->p_dspin_rsp                   (signal_int_dspin_rsp_l2g_d);
    477    
     482
    478483    ////////////////////// M2P DSPIN local crossbar coherence
    479484    int_xbar_m2p_c->p_clk                        (this->p_clk);
     
    482487    int_xbar_m2p_c->p_global_in                  (signal_int_dspin_m2p_g2l_c);
    483488    int_xbar_m2p_c->p_local_in[0]                (signal_int_dspin_m2p_memc);
    484     for (size_t p = 0; p < nb_procs; p++) 
     489    for (size_t p = 0; p < nb_procs; p++)
    485490        int_xbar_m2p_c->p_local_out[p]           (signal_int_dspin_m2p_proc[p]);
    486491
     
    491496    int_xbar_p2m_c->p_global_in                  (signal_int_dspin_p2m_g2l_c);
    492497    int_xbar_p2m_c->p_local_out[0]               (signal_int_dspin_p2m_memc);
    493     for (size_t p = 0; p < nb_procs; p++) 
     498    for (size_t p = 0; p < nb_procs; p++)
    494499        int_xbar_p2m_c->p_local_in[p]            (signal_int_dspin_p2m_proc[p]);
    495500
     
    533538        else if ( i <= nb_dmas ) xicu->p_hwi[i]  (signal_irq_mdma[i-1]);
    534539        else                     xicu->p_hwi[i]  (signal_false);
    535     }                     
     540    }
    536541
    537542    ///////////////////////////////////// MEMC
     
    603608       ram_router_rsp->p_out[4]                  (signal_ram_dspin_rsp_memc_i);
    604609    }
    605    
    606     ///////////////////////// IOB exists only in cluster_iob0 & cluster_iob1. 
     610
     611    ///////////////////////// IOB exists only in cluster_iob0 & cluster_iob1.
    607612    if ( is_io )
    608613    {
Note: See TracChangeset for help on using the changeset viewer.