Changeset 247 for trunk/platforms


Ignore:
Timestamp:
Aug 8, 2012, 12:03:25 PM (12 years ago)
Author:
cfuguet
Message:

Introducing new CLEANUP transaction address specification in the components:

  • vci_cc_vcache_wrapper_v4
  • vci_mem_cache_v4

The new specification uses the VCI WDATA and the VCI BE to send the cleanup
nline. The VCI ADDRESS is like follows:

  • NLINE MSb | Memory Cache local ID | 00....00

The platforms:

  • tsarv4_mono_mmu
  • tsarv4_generic_mmu

has been modified to use the modified components and the mapping table for the coherence
address space has been updated.

Location:
trunk/platforms
Files:
3 edited

Legend:

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

    r189 r247  
    5858///////////////////////////////////////////////////
    5959
    60 #define USE_ALMOS 1
     60#define USE_ALMOS 0
    6161#define almos_bootloader_pathname "/Users/alain/soc/tsar-svn-june-2010/softs/almos/bootloader/bin/bootloader-soclib-mipsel.bin"
    6262#define almos_kernel_pathname "/Users/alain/soc/tsar-svn-june-2010/softs/almos/kernel/bin/kernel-soclib-mipsel.bin@0xbfc10000:D"
     
    100100#define MESH_YMAX               2
    101101
    102 #define NPROCS                  1
     102#define NPROCS                  4
    103103#define XRAM_LATENCY            0
    104104
     
    112112#define L1_DSETS                64
    113113
    114 #define FBUF_X_SIZE             128
    115 #define FBUF_Y_SIZE             128
     114#define FBUF_X_SIZE             512
     115#define FBUF_Y_SIZE             512
    116116
    117117#define BDEV_SECTOR_SIZE        128
     
    120120#define BOOT_SOFT_NAME          "../../softs/soft_transpose_giet/bin.soft"
    121121
    122 #define MAX_FROZEN_CYCLES       1000
     122#define MAX_FROZEN_CYCLES       100000
    123123
    124124/////////////////////////////////////////////////////////
     
    394394    // - tgtid_c_memc = srcid_c_memc = nprocs
    395395    MappingTable maptabc(address_width,
    396                          IntTab(x_width + y_width, 16 - x_width - y_width),
     396                         IntTab(x_width + y_width, srcid_width - x_width - y_width),
    397397                         IntTab(x_width + y_width, srcid_width - x_width - y_width),
    398398                         0x00FF0000);
     
    407407            std::ostringstream sh;
    408408            sh << "c_seg_memc_" << x << "_" << y;
    409             maptabc.add(Segment(sh.str(), MEMC_BASE+offset, MEMC_SIZE, IntTab(cluster(x,y), nprocs), false));
    410 
    411             // cleanup requests regarding the BROM segment are also be routed to the memory cache
    412             if ( cluster(x,y) == cluster_io_index )
    413             {
    414                 maptabc.add(Segment("c_seg_brom    ", BROM_BASE, BROM_SIZE, IntTab(cluster(x,y), nprocs), false));
    415             }
     409            maptabc.add(
     410                Segment(
     411                    sh.str()
     412                  , (nprocs << (address_width - srcid_width)) + offset
     413                  , 0x10
     414                  , IntTab(cluster(x,y), nprocs)
     415                  , false
     416                )
     417            );
    416418
    417419            // update & invalidate requests must be routed to the proper processor
     
    420422                std::ostringstream sp;
    421423                sp << "c_seg_proc_" << x << "_" << y << "_" << p;
    422                 maptabc.add(Segment(sp.str(), PROC_BASE+offset+(p*0x10000), PROC_SIZE,
    423                             IntTab(cluster(x,y), p), false, true, IntTab(cluster(x,y), p)));
     424                maptabc.add(
     425                    Segment(
     426                        sp.str()
     427                      , (p << (address_width - srcid_width)) + offset
     428                      , 0x10
     429                      , IntTab(cluster(x,y), p)
     430                      , false
     431                    )
     432                );
    424433            }
    425434        }
  • trunk/platforms/tsarv4_generic_mmu/tsarv4_cluster_mmu/caba/source/src/tsarv4_cluster_mmu.cpp

    r234 r247  
    1414                        size_t          y_id,
    1515                        size_t          cluster_id,
    16                         const           soclib::common::MappingTable &mtd,
    17                         const           soclib::common::MappingTable &mtc,
    18                         const           soclib::common::MappingTable &mtx,
     16                        const           soclib::common::MappingTable &mtd,
     17                        const           soclib::common::MappingTable &mtc,
     18                        const           soclib::common::MappingTable &mtx,
    1919                        size_t          x_width,
    2020                        size_t          y_width,
    21                         size_t          tgtid_memc,
    22                         size_t          tgtid_xicu,
    23                         size_t          tgtid_fbuf,
    24                         size_t          tgtid_mtty,
    25                         size_t          tgtid_brom,
    26                         size_t          tgtid_bdev,
    27                         size_t          tgtid_mdma,
    28                         size_t          memc_ways,
    29                         size_t          memc_sets,
    30                         size_t          l1_i_ways,
    31                         size_t          l1_i_sets,
    32                         size_t          l1_d_ways,
    33                         size_t          l1_d_sets,
    34                         size_t          xram_latency,
     21                        size_t          tgtid_memc,
     22                        size_t          tgtid_xicu,
     23                        size_t          tgtid_fbuf,
     24                        size_t          tgtid_mtty,
     25                        size_t          tgtid_brom,
     26                        size_t          tgtid_bdev,
     27                        size_t          tgtid_mdma,
     28                        size_t          memc_ways,
     29                        size_t          memc_sets,
     30                        size_t          l1_i_ways,
     31                        size_t          l1_i_sets,
     32                        size_t          l1_d_ways,
     33                        size_t          l1_d_sets,
     34                        size_t          xram_latency,
    3535                        bool            io,
    36                         size_t          xfb,
    37                         size_t          yfb,
    38                         char*           disk_name,
    39                         size_t          block_size,
     36                        size_t          xfb,
     37                        size_t          yfb,
     38                        char*           disk_name,
     39                        size_t          block_size,
    4040                        const Loader   &loader,
    41                         uint32_t        frozen_cycles,
    42                         uint32_t        debug_start_cycle,
     41                        uint32_t        frozen_cycles,
     42                        uint32_t        debug_start_cycle,
    4343                        bool            debug_ok)
    4444      : soclib::caba::BaseModule(insname),
     
    5555        signal_dspin_rsp_g2l_c("signal_dspin_rsp_g2l_c"),
    5656
    57         signal_vci_ini_d_bdev("signal_vci_ini_d_bdev"),
    58         signal_vci_ini_d_mdma("signal_vci_ini_d_mdma"),
     57        signal_vci_ini_d_bdev("signal_vci_ini_d_bdev"),
     58        signal_vci_ini_d_mdma("signal_vci_ini_d_mdma"),
    5959
    6060        signal_vci_tgt_d_memc("signal_vci_tgt_d_memc"),
     
    8686
    8787        // on coherence network : local srcid[proc] in [0...nprocs-1]
    88         // on coherence network : local srcid[memc] = nprocs
     88        // on coherence network : local srcid[memc] = nprocs
    8989
    9090std::cout << "  - building proc_" << x_id << "_" << y_id << "-*" << std::endl;
     
    9797                sproc.str().c_str(),
    9898                cluster_id*nprocs + p,
    99                 mtd,                            // Mapping Table Direct
    100                 mtc,                            // Mapping Table Coherence
    101                 IntTab(cluster_id,p),           // SRCID_D
    102                 IntTab(cluster_id,p),           // SRCID_C
    103                 IntTab(cluster_id,p),           // TGTID_C
    104                 8,                              // ITLB ways
    105                 8,                              // ITLB sets
    106                 8,                              // DTLB ways
    107                 8,                              // DTLB sets
    108                 l1_i_ways,l1_i_sets,16,         // ICACHE size
    109                 l1_d_ways,l1_d_sets,16,         // DCACHE size
    110                 4,                              // WBUF width
    111                 4,                              // WBUF depth
    112                 frozen_cycles,                  // max frozen cycles
     99                mtd,                            // Mapping Table Direct
     100                mtc,                            // Mapping Table Coherence
     101                IntTab(cluster_id,p),           // SRCID_D
     102                IntTab(cluster_id,p),           // SRCID_C
     103                IntTab(cluster_id,p),           // TGTID_C
     104                8,                              // ITLB ways
     105                8,                              // ITLB sets
     106                8,                              // DTLB ways
     107                8,                              // DTLB sets
     108                l1_i_ways,l1_i_sets,16,         // ICACHE size
     109                l1_d_ways,l1_d_sets,16,         // DCACHE size
     110                4,                              // WBUF width
     111                4,                              // WBUF depth
     112                x_width,                        // X Width
     113                y_width,                        // Y Width
     114                nprocs,                         // Memory Cache Local Id (coherence)
     115                frozen_cycles,                  // max frozen cycles
    113116                debug_start_cycle,
    114117                debug_ok);
     
    122125                   smemc.str().c_str(),
    123126                   mtd, mtc, mtx,
    124                    IntTab(cluster_id),                  // SRCID_X
    125                    IntTab(cluster_id, nprocs),          // SRCID_C
    126                    IntTab(cluster_id, tgtid_memc),      // TGTID_D
    127                    IntTab(cluster_id, nprocs),          // TGTID_C
    128                    memc_ways, memc_sets, 16,            // CACHE SIZE
    129                    4096,                                // HEAP SIZE
    130                    8,                                   // TRANSACTION TABLE DEPTH
    131                    8,                                   // UPDATE TABLE DEPTH
     127                   IntTab(cluster_id),                  // SRCID_X
     128                   IntTab(cluster_id, nprocs),          // SRCID_C
     129                   IntTab(cluster_id, tgtid_memc),      // TGTID_D
     130                   IntTab(cluster_id, nprocs),          // TGTID_C
     131                   memc_ways, memc_sets, 16,            // CACHE SIZE
     132                   4096,                                // HEAP SIZE
     133                   8,                                   // TRANSACTION TABLE DEPTH
     134                   8,                                   // UPDATE TABLE DEPTH
    132135                   debug_start_cycle,
    133136                   debug_ok);
     
    147150std::cout << "  - building xicu_" << x_id << "_" << y_id << std::endl;
    148151
    149         size_t  nhwi = 4;                               // always 4 (or 9) ports, even if
    150         if( io == true ) nhwi = 9;                      // there if less than 4 processors
     152        size_t  nhwi = 4;                               // always 4 (or 9) ports, even if
     153        if( io == true ) nhwi = 9;                      // there if less than 4 processors
    151154        std::ostringstream sicu;
    152155        sicu << "xicu_" << x_id << "_" << y_id;
    153156        xicu = new VciXicu<vci_param>(
    154157                  sicu.str().c_str(),
    155                   mtd,                                  // mapping table
    156                   IntTab(cluster_id, tgtid_xicu),       // TGTID_D
    157                   0,                                    // number of timer IRQs
    158                   nhwi,                                 // number of hard IRQs
    159                   0,                                    // number of soft IRQs
    160                   nprocs);                              // number of output IRQs
     158                  mtd,                                  // mapping table
     159                  IntTab(cluster_id, tgtid_xicu),       // TGTID_D
     160                  0,                                    // number of timer IRQs
     161                  nhwi,                                 // number of hard IRQs
     162                  0,                                    // number of soft IRQs
     163                  nprocs);                              // number of output IRQs
    161164
    162165std::cout << "  - building dma_" << x_id << "_" << y_id << std::endl;
     
    168171                   sdma.str().c_str(),
    169172                   mtd,
    170                    IntTab(cluster_id, nprocs),          // SRCID
    171                    IntTab(cluster_id, tgtid_mdma),      // TGTID
    172                    64,                                  // burst size
    173                    nprocs);                             // number of IRQs
     173                   IntTab(cluster_id, nprocs),          // SRCID
     174                   IntTab(cluster_id, tgtid_mdma),      // TGTID
     175                   64,                                  // burst size
     176                   nprocs);                             // number of IRQs
    174177
    175178std::cout << "  - building xbard_" << x_id << "_" << y_id << std::endl;
     
    182185            nb_direct_initiators         = nprocs + 2;
    183186            nb_direct_targets            = 7;
    184         }
     187        }
    185188        std::ostringstream sd;
    186189        sd << "xbard_" << x_id << "_" << y_id;
     
    188191                    sd.str().c_str(),
    189192                    mtd,
    190                     IntTab(cluster_id),                 // cluster initiator index
    191                     IntTab(cluster_id),                 // cluster target index
    192                     nb_direct_initiators,               // number of initiators
    193                     nb_direct_targets);                 // number of targets     
     193                    IntTab(cluster_id),                 // cluster initiator index
     194                    IntTab(cluster_id),                 // cluster target index
     195                    nb_direct_initiators,               // number of initiators
     196                    nb_direct_targets);                 // number of targets     
    194197       
    195198std::cout << "  - building xbarc_" << x_id << "_" << y_id << std::endl;
     
    201204                    sc.str().c_str(),
    202205                    mtc,
    203                     IntTab(cluster_id),                 // cluster initiator index
    204                     IntTab(cluster_id),                 // cluster target index
    205                     nprocs + 1,                         // number of initiators
    206                     nprocs + 1);                        // number of targets
     206                    IntTab(cluster_id),                 // cluster initiator index
     207                    IntTab(cluster_id),                 // cluster target index
     208                    nprocs + 1,                         // number of initiators
     209                    nprocs + 1);                        // number of targets
    207210       
    208211std::cout << "  - building wrappers in cluster_" << x_id << "_" << y_id << std::endl;
     
    213216        iniwrapperd = new VciVdspinInitiatorWrapper<vci_param,cmd_width,rsp_width>(
    214217                          wid.str().c_str(),
    215                           4,                            // cmd fifo depth
    216                           4);                           // rsp fifo depth
     218                          4,                            // cmd fifo depth
     219                          4);                           // rsp fifo depth
    217220
    218221        // direct target wrapper
     
    221224        tgtwrapperd = new VciVdspinTargetWrapper<vci_param,cmd_width,rsp_width>(
    222225                          wtd.str().c_str(),
    223                           4,                            // cmd fifo depth
    224                           4);                           // rsp fifo depth
     226                          4,                            // cmd fifo depth
     227                          4);                           // rsp fifo depth
    225228
    226229        // coherence initiator wrapper
     
    229232        iniwrapperc = new VciVdspinInitiatorWrapper<vci_param,cmd_width,rsp_width>(
    230233                          wic.str().c_str(),
    231                           4,                            // cmd fifo depth
    232                           4);                           // rsp fifo depth
     234                          4,                            // cmd fifo depth
     235                          4);                           // rsp fifo depth
    233236
    234237        // coherence target wrapper
     
    237240        tgtwrapperc = new VciVdspinTargetWrapper<vci_param,cmd_width,rsp_width>(
    238241                          wtc.str().c_str(),
    239                           4,                            // cmd fifo depth
    240                           4);                           // rsp fifo depth
     242                          4,                            // cmd fifo depth
     243                          4);                           // rsp fifo depth
    241244
    242245std::cout << "  - building cmdrouter_" << x_id << "_" << y_id << std::endl;
     
    264267        // IO cluster components
    265268        if ( io == true )
    266         {
     269        {
    267270            brom = new VciSimpleRam<vci_param>(
    268271                       "brom",
     
    275278                       IntTab(cluster_id, tgtid_fbuf),
    276279                       mtd,
    277                        xfb, yfb);
     280                       xfb, yfb);
    278281
    279282            bdev = new VciBlockDeviceTsarV4<vci_param>(
     
    290293                       mtd,
    291294                       "tty0", "tty1", "tty2", "tty3", NULL);
    292         }
     295        }
    293296
    294297std::cout << "  - all components constructed" << std::endl;
     
    299302
    300303        // CMDROUTER and RSPROUTER
    301         cmdrouter->p_clk                        (this->p_clk);
    302         cmdrouter->p_resetn                     (this->p_resetn);
    303         rsprouter->p_clk                        (this->p_clk);
    304         rsprouter->p_resetn                     (this->p_resetn);
     304        cmdrouter->p_clk                        (this->p_clk);
     305        cmdrouter->p_resetn                     (this->p_resetn);
     306        rsprouter->p_clk                        (this->p_clk);
     307        rsprouter->p_resetn                     (this->p_resetn);
    305308        for(int x = 0; x < 2; x++)
    306309        {
     
    314317        }
    315318       
    316         cmdrouter->p_out[0][4]                  (signal_dspin_cmd_g2l_d);
    317         cmdrouter->p_out[1][4]                  (signal_dspin_cmd_g2l_c);
    318         cmdrouter->p_in[0][4]                   (signal_dspin_cmd_l2g_d);
    319         cmdrouter->p_in[1][4]                   (signal_dspin_cmd_l2g_c);
    320 
    321         rsprouter->p_out[0][4]                  (signal_dspin_rsp_g2l_d);
    322         rsprouter->p_out[1][4]                  (signal_dspin_rsp_g2l_c);
    323         rsprouter->p_in[0][4]                   (signal_dspin_rsp_l2g_d);
    324         rsprouter->p_in[1][4]                   (signal_dspin_rsp_l2g_c);
     319        cmdrouter->p_out[0][4]                  (signal_dspin_cmd_g2l_d);
     320        cmdrouter->p_out[1][4]                  (signal_dspin_cmd_g2l_c);
     321        cmdrouter->p_in[0][4]                   (signal_dspin_cmd_l2g_d);
     322        cmdrouter->p_in[1][4]                   (signal_dspin_cmd_l2g_c);
     323
     324        rsprouter->p_out[0][4]                  (signal_dspin_rsp_g2l_d);
     325        rsprouter->p_out[1][4]                  (signal_dspin_rsp_g2l_c);
     326        rsprouter->p_in[0][4]                   (signal_dspin_rsp_l2g_d);
     327        rsprouter->p_in[1][4]                   (signal_dspin_rsp_l2g_c);
    325328
    326329        // VCI/DSPIN WRAPPERS
    327         iniwrapperd->p_clk                      (this->p_clk);
    328         iniwrapperd->p_resetn                   (this->p_resetn);
    329         iniwrapperd->p_vci                      (signal_vci_l2g_d);
    330         iniwrapperd->p_dspin_out                (signal_dspin_cmd_l2g_d);
    331         iniwrapperd->p_dspin_in                 (signal_dspin_rsp_g2l_d);
    332 
    333         tgtwrapperd->p_clk                      (this->p_clk);
    334         tgtwrapperd->p_resetn                   (this->p_resetn);
    335         tgtwrapperd->p_vci                      (signal_vci_g2l_d);
    336         tgtwrapperd->p_dspin_out                (signal_dspin_rsp_l2g_d);
    337         tgtwrapperd->p_dspin_in                 (signal_dspin_cmd_g2l_d);
    338 
    339         iniwrapperc->p_clk                      (this->p_clk);
    340         iniwrapperc->p_resetn                   (this->p_resetn);
    341         iniwrapperc->p_vci                      (signal_vci_l2g_c);
    342         iniwrapperc->p_dspin_out                (signal_dspin_cmd_l2g_c);
    343         iniwrapperc->p_dspin_in                 (signal_dspin_rsp_g2l_c);
    344 
    345         tgtwrapperc->p_clk                      (this->p_clk);
    346         tgtwrapperc->p_resetn                   (this->p_resetn);
    347         tgtwrapperc->p_vci                      (signal_vci_g2l_c);
    348         tgtwrapperc->p_dspin_out                (signal_dspin_rsp_l2g_c);
    349         tgtwrapperc->p_dspin_in                 (signal_dspin_cmd_g2l_c);
     330        iniwrapperd->p_clk                      (this->p_clk);
     331        iniwrapperd->p_resetn                   (this->p_resetn);
     332        iniwrapperd->p_vci                      (signal_vci_l2g_d);
     333        iniwrapperd->p_dspin_out                (signal_dspin_cmd_l2g_d);
     334        iniwrapperd->p_dspin_in                 (signal_dspin_rsp_g2l_d);
     335
     336        tgtwrapperd->p_clk                      (this->p_clk);
     337        tgtwrapperd->p_resetn                   (this->p_resetn);
     338        tgtwrapperd->p_vci                      (signal_vci_g2l_d);
     339        tgtwrapperd->p_dspin_out                (signal_dspin_rsp_l2g_d);
     340        tgtwrapperd->p_dspin_in                 (signal_dspin_cmd_g2l_d);
     341
     342        iniwrapperc->p_clk                      (this->p_clk);
     343        iniwrapperc->p_resetn                   (this->p_resetn);
     344        iniwrapperc->p_vci                      (signal_vci_l2g_c);
     345        iniwrapperc->p_dspin_out                (signal_dspin_cmd_l2g_c);
     346        iniwrapperc->p_dspin_in                 (signal_dspin_rsp_g2l_c);
     347
     348        tgtwrapperc->p_clk                      (this->p_clk);
     349        tgtwrapperc->p_resetn                   (this->p_resetn);
     350        tgtwrapperc->p_vci                      (signal_vci_g2l_c);
     351        tgtwrapperc->p_dspin_out                (signal_dspin_rsp_l2g_c);
     352        tgtwrapperc->p_dspin_in                 (signal_dspin_cmd_g2l_c);
    350353
    351354        // CROSSBAR direct
    352         xbard->p_clk                            (this->p_clk);
    353         xbard->p_resetn                         (this->p_resetn);
    354         xbard->p_initiator_to_up                (signal_vci_l2g_d);
    355         xbard->p_target_to_up                   (signal_vci_g2l_d);
     355        xbard->p_clk                            (this->p_clk);
     356        xbard->p_resetn                         (this->p_resetn);
     357        xbard->p_initiator_to_up                (signal_vci_l2g_d);
     358        xbard->p_target_to_up                   (signal_vci_g2l_d);
    356359         
    357         xbard->p_to_target[tgtid_memc]          (signal_vci_tgt_d_memc);
    358         xbard->p_to_target[tgtid_xicu]          (signal_vci_tgt_d_xicu);
    359         xbard->p_to_target[tgtid_mdma]          (signal_vci_tgt_d_mdma);
     360        xbard->p_to_target[tgtid_memc]          (signal_vci_tgt_d_memc);
     361        xbard->p_to_target[tgtid_xicu]          (signal_vci_tgt_d_xicu);
     362        xbard->p_to_target[tgtid_mdma]          (signal_vci_tgt_d_mdma);
    360363         
    361         xbard->p_to_initiator[nprocs]           (signal_vci_ini_d_mdma);
     364        xbard->p_to_initiator[nprocs]           (signal_vci_ini_d_mdma);
    362365
    363366        for ( size_t p=0 ; p<nprocs ; p++)
    364367        {
    365             xbard->p_to_initiator[p]            (signal_vci_ini_d_proc[p]);
    366         }
    367 
    368         if ( io == true )
    369         {
    370             xbard->p_to_target[tgtid_mtty]      (signal_vci_tgt_d_mtty);
    371             xbard->p_to_target[tgtid_brom]      (signal_vci_tgt_d_brom);
    372             xbard->p_to_target[tgtid_bdev]      (signal_vci_tgt_d_bdev);
    373             xbard->p_to_target[tgtid_fbuf]      (signal_vci_tgt_d_fbuf);
     368            xbard->p_to_initiator[p]            (signal_vci_ini_d_proc[p]);
     369        }
     370
     371        if ( io == true )
     372        {
     373            xbard->p_to_target[tgtid_mtty]      (signal_vci_tgt_d_mtty);
     374            xbard->p_to_target[tgtid_brom]      (signal_vci_tgt_d_brom);
     375            xbard->p_to_target[tgtid_bdev]      (signal_vci_tgt_d_bdev);
     376            xbard->p_to_target[tgtid_fbuf]      (signal_vci_tgt_d_fbuf);
    374377           
    375             xbard->p_to_initiator[nprocs+1]     (signal_vci_ini_d_bdev);
    376         }
     378            xbard->p_to_initiator[nprocs+1]     (signal_vci_ini_d_bdev);
     379        }
    377380       
    378381        // CROSSBAR coherence
    379         xbarc->p_clk                            (this->p_clk);
    380         xbarc->p_resetn                         (this->p_resetn);
    381         xbarc->p_initiator_to_up                (signal_vci_l2g_c);
    382         xbarc->p_target_to_up                   (signal_vci_g2l_c);
    383         xbarc->p_to_initiator[nprocs]           (signal_vci_ini_c_memc);
    384         xbarc->p_to_target[nprocs]              (signal_vci_tgt_c_memc);
     382        xbarc->p_clk                            (this->p_clk);
     383        xbarc->p_resetn                         (this->p_resetn);
     384        xbarc->p_initiator_to_up                (signal_vci_l2g_c);
     385        xbarc->p_target_to_up                   (signal_vci_g2l_c);
     386        xbarc->p_to_initiator[nprocs]           (signal_vci_ini_c_memc);
     387        xbarc->p_to_target[nprocs]              (signal_vci_tgt_c_memc);
    385388        for ( size_t p=0 ; p<nprocs ; p++)
    386389        {
    387             xbarc->p_to_target[p]               (signal_vci_tgt_c_proc[p]);
    388             xbarc->p_to_initiator[p]            (signal_vci_ini_c_proc[p]);
     390            xbarc->p_to_target[p]               (signal_vci_tgt_c_proc[p]);
     391            xbarc->p_to_initiator[p]            (signal_vci_ini_c_proc[p]);
    389392        }
    390393
     
    392395        for ( size_t p=0 ; p<nprocs ; p++)
    393396        {
    394             proc[p]->p_clk                      (this->p_clk);
    395             proc[p]->p_resetn                   (this->p_resetn);
    396             proc[p]->p_vci_ini_d                (signal_vci_ini_d_proc[p]);
    397             proc[p]->p_vci_ini_c                (signal_vci_ini_c_proc[p]);
    398             proc[p]->p_vci_tgt_c                (signal_vci_tgt_c_proc[p]);
    399             proc[p]->p_irq[0]                   (signal_proc_it[p]);
     397            proc[p]->p_clk                      (this->p_clk);
     398            proc[p]->p_resetn                   (this->p_resetn);
     399            proc[p]->p_vci_ini_d                (signal_vci_ini_d_proc[p]);
     400            proc[p]->p_vci_ini_c                (signal_vci_ini_c_proc[p]);
     401            proc[p]->p_vci_tgt_c                (signal_vci_tgt_c_proc[p]);
     402            proc[p]->p_irq[0]                   (signal_proc_it[p]);
    400403            for ( size_t j = 1 ; j < 6 ; j++ )
    401404            {
    402                 proc[p]->p_irq[j]               (signal_false);
     405                proc[p]->p_irq[j]               (signal_false);
    403406            }
    404407        }
    405408       
    406409        // XICU
    407         xicu->p_clk                             (this->p_clk);
    408         xicu->p_resetn                          (this->p_resetn);
    409         xicu->p_vci                             (signal_vci_tgt_d_xicu);
     410        xicu->p_clk                             (this->p_clk);
     411        xicu->p_resetn                          (this->p_resetn);
     412        xicu->p_vci                             (signal_vci_tgt_d_xicu);
    410413        for ( size_t p=0 ; p<nprocs ; p++)
    411414        {
    412             xicu->p_irq[p]                      (signal_proc_it[p]);
     415            xicu->p_irq[p]                      (signal_proc_it[p]);
    413416        }
    414417        for ( size_t p=0 ; p<nprocs ; p++)
    415418        {
    416             xicu->p_hwi[p]                      (signal_irq_mdma[p]);
     419            xicu->p_hwi[p]                      (signal_irq_mdma[p]);
    417420        }
    418421        for ( size_t x=nprocs ; x<4 ; x++)
    419422        {
    420             xicu->p_hwi[x]                      (signal_false);
     423            xicu->p_hwi[x]                      (signal_false);
    421424        }
    422425        if ( io == true )
    423         {
    424             xicu->p_hwi[4]                      (signal_irq_tty0);
    425             xicu->p_hwi[5]                      (signal_irq_tty1);
    426             xicu->p_hwi[6]                      (signal_irq_tty2);
    427             xicu->p_hwi[7]                      (signal_irq_tty3);
    428             xicu->p_hwi[8]                      (signal_irq_bdev);
    429         }
     426        {
     427            xicu->p_hwi[4]                      (signal_irq_tty0);
     428            xicu->p_hwi[5]                      (signal_irq_tty1);
     429            xicu->p_hwi[6]                      (signal_irq_tty2);
     430            xicu->p_hwi[7]                      (signal_irq_tty3);
     431            xicu->p_hwi[8]                      (signal_irq_bdev);
     432        }
    430433
    431434        // MEMC
    432         memc->p_clk                             (this->p_clk);
    433         memc->p_resetn                          (this->p_resetn);
    434         memc->p_vci_ixr                         (signal_vci_xram);
    435         memc->p_vci_tgt                         (signal_vci_tgt_d_memc);
    436         memc->p_vci_ini                         (signal_vci_ini_c_memc);
    437         memc->p_vci_tgt_cleanup                 (signal_vci_tgt_c_memc);
     435        memc->p_clk                             (this->p_clk);
     436        memc->p_resetn                          (this->p_resetn);
     437        memc->p_vci_ixr                         (signal_vci_xram);
     438        memc->p_vci_tgt                         (signal_vci_tgt_d_memc);
     439        memc->p_vci_ini                         (signal_vci_ini_c_memc);
     440        memc->p_vci_tgt_cleanup                 (signal_vci_tgt_c_memc);
    438441
    439442        // XRAM
    440         xram->p_clk                             (this->p_clk);
    441         xram->p_resetn                          (this->p_resetn);
    442         xram->p_vci                             (signal_vci_xram);
     443        xram->p_clk                             (this->p_clk);
     444        xram->p_resetn                          (this->p_resetn);
     445        xram->p_vci                             (signal_vci_xram);
    443446
    444447        // CDMA
    445         mdma->p_clk                             (this->p_clk);
    446         mdma->p_resetn                          (this->p_resetn);
    447         mdma->p_vci_target                      (signal_vci_tgt_d_mdma);
    448         mdma->p_vci_initiator                   (signal_vci_ini_d_mdma);
     448        mdma->p_clk                             (this->p_clk);
     449        mdma->p_resetn                          (this->p_resetn);
     450        mdma->p_vci_target                      (signal_vci_tgt_d_mdma);
     451        mdma->p_vci_initiator                   (signal_vci_ini_d_mdma);
    449452        for (size_t p=0 ; p<nprocs ; p++)
    450453        {
     
    452455        }
    453456
    454         // Components in IO cluster
    455 
    456         if ( io == true )
    457         {
    458             // BDEV           
    459             bdev->p_clk                         (this->p_clk);
    460             bdev->p_resetn                      (this->p_resetn);
    461             bdev->p_irq                         (signal_irq_bdev);
    462             bdev->p_vci_target                  (signal_vci_tgt_d_bdev);
    463             bdev->p_vci_initiator               (signal_vci_ini_d_bdev);
    464 
    465             // FBUF
    466             fbuf->p_clk                         (this->p_clk);
    467             fbuf->p_resetn                      (this->p_resetn);
    468             fbuf->p_vci                         (signal_vci_tgt_d_fbuf);
    469 
    470             // BROM
    471             brom->p_clk                         (this->p_clk);
    472             brom->p_resetn                      (this->p_resetn);
    473             brom->p_vci                         (signal_vci_tgt_d_brom);
     457        // Components in IO cluster
     458
     459        if ( io == true )
     460        {
     461            // BDEV           
     462            bdev->p_clk                         (this->p_clk);
     463            bdev->p_resetn                      (this->p_resetn);
     464            bdev->p_irq                         (signal_irq_bdev);
     465            bdev->p_vci_target                  (signal_vci_tgt_d_bdev);
     466            bdev->p_vci_initiator               (signal_vci_ini_d_bdev);
     467
     468            // FBUF
     469            fbuf->p_clk                         (this->p_clk);
     470            fbuf->p_resetn                      (this->p_resetn);
     471            fbuf->p_vci                         (signal_vci_tgt_d_fbuf);
     472
     473            // BROM
     474            brom->p_clk                         (this->p_clk);
     475            brom->p_resetn                      (this->p_resetn);
     476            brom->p_vci                         (signal_vci_tgt_d_brom);
    474477
    475478            // MTTY
    476             mtty->p_clk                         (this->p_clk);
    477             mtty->p_resetn                      (this->p_resetn);
    478             mtty->p_vci                         (signal_vci_tgt_d_mtty);
    479             mtty->p_irq[0]                      (signal_irq_tty0);
    480             mtty->p_irq[1]                      (signal_irq_tty1);
    481             mtty->p_irq[2]                      (signal_irq_tty2);
    482             mtty->p_irq[3]                      (signal_irq_tty3);
     479            mtty->p_clk                         (this->p_clk);
     480            mtty->p_resetn                      (this->p_resetn);
     481            mtty->p_vci                         (signal_vci_tgt_d_mtty);
     482            mtty->p_irq[0]                      (signal_irq_tty0);
     483            mtty->p_irq[1]                      (signal_irq_tty1);
     484            mtty->p_irq[2]                      (signal_irq_tty2);
     485            mtty->p_irq[3]                      (signal_irq_tty3);
    483486        }
    484487} // end constructor
  • trunk/platforms/tsarv4_mono_mmu/top.cpp

    r207 r247  
    5454#define    MEMC_SIZE    0x02000000
    5555
    56 //  segments definition in coherence space
    57 
    58 #define    C_L1_BASE    0x10000000
    59 #define    C_L1_SIZE    0x00000010
    60 
    61 #define    C_MC_BASE    0x00000000
    62 #define    C_MC_SIZE    0x02000010
    63 
    64 #define    C_BR_BASE    0xbfc00000
    65 #define    C_BR_SIZE    0x00040000
    66 
    6756/////////////////////////////////
    6857int _main(int argc, char *argv[])
     
    8473    size_t      from_cycle      = 0;            // debug start cycle
    8574    size_t      max_frozen      = 1000;         // max number of frozen cycles
     75    size_t      nprocs          = 1;   
    8676
    8777    /////////////// command line arguments ////////////////
     
    146136
    147137    // Mapping table for coherence network
    148     soclib::common::MappingTable maptabc(32, IntTab(6), IntTab(6), 0xF0000000);
    149     maptabc.add(Segment("proc_c" , C_L1_BASE , C_L1_SIZE , IntTab(0), false, true, IntTab(0)));
    150     maptabc.add(Segment("memc_c" , C_MC_BASE , C_MC_SIZE , IntTab(1), false ));
    151     maptabc.add(Segment("brom_c" , C_BR_BASE , C_BR_SIZE , IntTab(1), false ));
     138    soclib::common::MappingTable maptabc(32, IntTab(srcid_width), IntTab(srcid_width), 0xF0000000);
     139    maptabc.add(
     140        Segment( "proc_c"
     141                , 0x0000000
     142                , 0x10
     143                , IntTab(0)
     144                , false
     145        )
     146    );
     147
     148    maptabc.add(
     149        Segment( "memc_c"
     150                , nprocs << (address_width - srcid_width)
     151                , 0x10
     152                , IntTab(nprocs)
     153                , false
     154        )
     155    );
    152156    std::cout << maptabc << std::endl;
    153157       
    154158    // Signals
    155159
    156     sc_clock    signal_clk                      ("signal_clk");
     160    sc_clock        signal_clk                  ("signal_clk");
    157161    sc_signal<bool> signal_resetn               ("isgnal_resetn");
    158162   
     
    201205         4,64,16,               // dcache size
    202206         4, 4,                  // wbuf size
     207         0, 0,                  // x, y Width
     208         nprocs,                // memory cache local id
    203209         max_frozen,            // max frozen cycles
    204210         from_cycle, trace_ok);
Note: See TracChangeset for help on using the changeset viewer.