Index: trunk/platforms/tsar_generic_iob/top.cpp
===================================================================
--- trunk/platforms/tsar_generic_iob/top.cpp	(revision 913)
+++ trunk/platforms/tsar_generic_iob/top.cpp	(revision 914)
@@ -78,4 +78,5 @@
 // - Y_SIZE           : number of clusters in a column
 // - NB_PROCS_MAX     : number of processors per cluster (power of 2)
+// - NB_DMA_CHANNELS  : number of DMA channels per cluster    (up to 8)
 // - NB_TTY_CHANNELS  : number of TTY channels in I/O network (up to 16)
 // - NB_NIC_CHANNELS  : number of NIC channels in I/O network (up to 2)
@@ -94,6 +95,4 @@
 // - L1_DSETS
 // - BDEV_IMAGE_NAME  : file pathname for block device
-// - NIC_RX_NAME      : file pathname for NIC received packets
-// - NIC_TX_NAME      : file pathname for NIC transmited packets
 // - NIC_TIMEOUT      : max number of cycles before closing a container
 //
@@ -208,6 +207,4 @@
 #define BDEV_IMAGE_NAME       "../../../giet_vm/hdd/virt_hdd.dmg"
 
-#define NIC_RX_NAME           "/dev/null"
-#define NIC_TX_NAME           "/dev/null"
 #define NIC_TIMEOUT           10000
 
@@ -229,5 +226,5 @@
 //////////////////////i/////////////////////////////////////
 
-#define MAX_FROZEN_CYCLES     100000
+#define MAX_FROZEN_CYCLES     1000000
 
 /////////////////////////////////////////////////////////
@@ -324,6 +321,4 @@
    size_t   ncycles          = 4000000000;                 // simulated cycles
    char     disk_name[256]   = BDEV_IMAGE_NAME;            // pathname: disk image
-   char     nic_rx_name[256] = NIC_RX_NAME;                // pathname: rx packets file
-   char     nic_tx_name[256] = NIC_TX_NAME;                // pathname: tx packets file
    ssize_t  threads_nr       = 1;                          // simulator's threads number
    bool     debug_ok         = false;                      // trace activated
@@ -382,4 +377,7 @@
             {
                 std::cout << "MEMCID parameter does'nt fit XMAX/YMAX" << std::endl;
+                std::cout << " - MEMCID = " << std::hex << debug_memc_id << std::endl;
+                std::cout << " - XMAX   = " << std::hex << XMAX          << std::endl;
+                std::cout << " - YMAX   = " << std::hex << YMAX          << std::endl;
                 exit(0);
             }
@@ -409,4 +407,7 @@
             {
                 std::cout << "PROCID parameter does'nt fit XMAX/YMAX" << std::endl;
+                std::cout << " - PROCID = " << std::hex << debug_proc_id << std::endl;
+                std::cout << " - XMAX   = " << std::hex << XMAX          << std::endl;
+                std::cout << " - YMAX   = " << std::hex << YMAX          << std::endl;
                 exit(0);
             }
@@ -451,12 +452,15 @@
            "NB_PROCS_MAX parameter cannot be larger than 2^P_WIDTH" );
 
-   assert( (NB_DMA_CHANNELS <= 4) and
-           "The NB_DMA_CHANNELS parameter cannot be larger than 4" );
+   assert( (NB_DMA_CHANNELS <= 8) and
+           "The NB_DMA_CHANNELS parameter cannot be larger than 8" );
 
    assert( (NB_TTY_CHANNELS >= 1) and (NB_TTY_CHANNELS <= 16) and
            "The NB_TTY_CHANNELS parameter cannot be larger than 16" );
 
-   assert( (NB_NIC_CHANNELS == 2) and
-           "The NB_NIC_CHANNELS parameter must be 2" );
+   assert( (NB_NIC_CHANNELS <= 2) and
+           "The NB_NIC_CHANNELS parameter cannot be larger than 2" );
+
+   assert( (NB_CMA_CHANNELS <= 4) and
+           "The NB_CMA_CHANNELS parameter cannot be larger than 4" );
 
    std::cout << std::endl << std::dec
@@ -464,11 +468,13 @@
              << " - YMAX            = " << YMAX << std::endl
              << " - NB_PROCS_MAX    = " << NB_PROCS_MAX << std::endl
+             << " - NB_DMA_CHANNELS = " << NB_DMA_CHANNELS <<  std::endl
              << " - NB_TTY_CHANNELS = " << NB_TTY_CHANNELS <<  std::endl
-             << " - NB_DMA_CHANNELS = " << NB_DMA_CHANNELS <<  std::endl
              << " - NB_NIC_CHANNELS = " << NB_NIC_CHANNELS <<  std::endl
+             << " - NB_CMA_CHANNELS = " << NB_CMA_CHANNELS <<  std::endl
              << " - MEMC_WAYS       = " << MEMC_WAYS << std::endl
              << " - MEMC_SETS       = " << MEMC_SETS << std::endl
              << " - RAM_LATENCY     = " << XRAM_LATENCY << std::endl
              << " - MAX_FROZEN      = " << frozen_cycles << std::endl
+             << " - NCYCLES         = " << ncycles << std::endl
              << " - DEBUG_PROCID    = " << debug_proc_id << std::endl
              << " - DEBUG_MEMCID    = " << debug_memc_id << std::endl
@@ -926,8 +932,7 @@
                                           maptab_iox,
                                           NB_NIC_CHANNELS,
-                                          0,           // mac_4 address
-                                          0,           // mac_2 address
-                                          nic_rx_name,
-                                          nic_tx_name);
+                                          0,                // mac_4 address
+                                          0,                // mac_2 address
+                                          1 );              // NIC_MODE_SYNTHESIS
 
    // Frame Buffer
@@ -959,5 +964,5 @@
                                           IntTab(0, IOX_CDMA_TGT_ID),
                                           64,          // burst size (bytes)
-                                          2*NB_NIC_CHANNELS );
+                                          NB_CMA_CHANNELS );
    // Multi-TTY controller
    std::vector<std::string> vect_names;
@@ -1167,5 +1172,5 @@
     cdma->p_vci_target                                   (signal_vci_tgt_cdma);
     cdma->p_vci_initiator                                (signal_vci_ini_cdma);
-    for ( size_t i=0 ; i<(NB_NIC_CHANNELS*2) ; i++)
+    for ( size_t i=0 ; i<(NB_CMA_CHANNELS) ; i++)
     {
         cdma->p_irq[i]                                   (signal_irq_cdma[i]);
@@ -1433,8 +1438,8 @@
 
         // Monitor a specific address for one L2 cache
-        // clusters[0][0]->memc->cache_monitor( 0xC0100ULL, true );   // single word
+        // clusters[0][0]->memc->cache_monitor( 0x0ULL, true );   // one word
 
         // Monitor a specific address for one XRAM
-        // clusters[0][0]->xram->start_monitor( 0xC0100ULL , 4);
+        // clusters[0][0]->xram->start_monitor( 0x0ULL , 64);
 
         if ( debug_ok and (n > debug_from) )
@@ -1456,8 +1461,8 @@
                 clusters[x][y]->signal_int_vci_ini_proc[l].print_trace(proc_signame.str());
 
-                clusters[x][y]->xicu->print_trace(l);
-                std::ostringstream xicu_signame;
-                xicu_signame << "[SIG]XICU_" << x << "_" << y;
-                clusters[x][y]->signal_int_vci_tgt_xicu.print_trace(xicu_signame.str());
+//              clusters[x][y]->xicu->print_trace(l);
+//              std::ostringstream xicu_signame;
+//              xicu_signame << "[SIG]XICU_" << x << "_" << y;
+//              clusters[x][y]->signal_int_vci_tgt_xicu.print_trace(xicu_signame.str());
 
                 clusters[x][y]->mdma->print_trace();
@@ -1525,31 +1530,30 @@
             if ( debug_iob )
             {
-                clusters[0][0]->iob->print_trace();
+//              clusters[0][0]->iob->print_trace();
 //              clusters[0][0]->signal_int_vci_tgt_iobx.print_trace( "[SIG]IOB0_INT_TGT");
 //              clusters[0][0]->signal_int_vci_ini_iobx.print_trace( "[SIG]IOB0_INT_INI");
 //              clusters[0][0]->signal_ram_vci_ini_iobx.print_trace( "[SIG]IOB0_RAM_INI");
-
 //              signal_vci_ini_iob0.print_trace("[SIG]IOB0_IOX_INI");
 //              signal_vci_tgt_iob0.print_trace("[SIG]IOB0_IOX_TGT");
 
-                cdma->print_trace();
-                signal_vci_tgt_cdma.print_trace("[SIG]IOX_CDMA_TGT");
-                signal_vci_ini_cdma.print_trace("[SIG]IOX_CDMA_INI");
+//              cdma->print_trace();
+//              signal_vci_tgt_cdma.print_trace("[SIG]CDMA_TGT");
+//              signal_vci_ini_cdma.print_trace("[SIG]CDMA_INI");
 
 //              brom->print_trace();
-//              signal_vci_tgt_brom.print_trace("[SIG]IOX_BROM_TGT");
+//              signal_vci_tgt_brom.print_trace("[SIG]BROM_TGT");
 
 //              mtty->print_trace();
-//              signal_vci_tgt_mtty.print_trace("[SIG]IOX_MTTY_TGT");
-
-//              bdev->print_trace();
-//              signal_vci_tgt_bdev.print_trace("[SIG]BDEV_TGT");
-//              signal_vci_ini_bdev.print_trace("[SIG]BDEV_INI");
-
-//              mnic->print_trace();
+//              signal_vci_tgt_mtty.print_trace("[SIG]MTTY_TGT");
+
+                bdev->print_trace();
+                signal_vci_tgt_bdev.print_trace("[SIG]BDEV_TGT");
+                signal_vci_ini_bdev.print_trace("[SIG]BDEV_INI");
+
+//              mnic->print_trace( 0x000 );
 //              signal_vci_tgt_mnic.print_trace("[SIG]MNIC_TGT");
 
 //              fbuf->print_trace();
-//              signal_vci_tgt_fbuf.print_trace("[SIG]FBUF");
+//              signal_vci_tgt_fbuf.print_trace("[SIG]FBUF_TGT");
 
 //              iopi->print_trace();
