Index: /trunk/platforms/tsarv4_generic_xbar/Makefile
===================================================================
--- /trunk/platforms/tsarv4_generic_xbar/Makefile	(revision 171)
+++ /trunk/platforms/tsarv4_generic_xbar/Makefile	(revision 172)
@@ -1,5 +1,5 @@
 
 simulator.x: top.cpp top.desc
-	soclib-cc -P -p top.desc -I. -b caba:vci_local_crossbar -o simul.x
+	soclib-cc -P -p top.desc -I../../modules -o simul.x
 
 clean:
Index: /trunk/platforms/tsarv4_generic_xbar/soclib.conf
===================================================================
--- /trunk/platforms/tsarv4_generic_xbar/soclib.conf	(revision 171)
+++ /trunk/platforms/tsarv4_generic_xbar/soclib.conf	(revision 172)
@@ -1,2 +1,25 @@
+config.lib_systemcass_openmp_mine = Library(
+	parent = config.systemc,
+	dir = "/users/outil/nbsdtsar/systemcass",
+	libdir = "%(dir)s/lib-linux",
+	cflags = config.systemc.cflags+['-fopenmp']+['-O3'],
+	#cflags = config.systemc.cflags,
+	libs = ['-ldl', '-lm', '-lpthread', '-L%(libdir)s', '-lsystemc', '-rdynamic', '-fopenmp'],
+	#libs = ['-ldl', '-lm', '-lpthread', '-L%(libdir)s', '-lsystemc', '-rdynamic'],
+)
+
+config.systemcass_openmp_mine = BuildEnv(
+	parent = config.systemc_64,
+	libraries = [ config.lib_systemcass_openmp_mine ],
+	#base = config.systemc_32,
+	repos = "/dsk/l1/misc/alain/soclib-cc/head/systemcass-mine",
+	cache_file = "/dsk/l1/misc/alain/soclib-cc/head/systemcass-mine/soclib_cc.cache",
+	toolchain = config.toolchain_64,
+	#toolchain = config.dist_toolchain,
+)
+
+#config.default = config.systemcass
+config.default = config.systemcass_openmp_mine
+
 config.default.toolchain.set("cflags", config.default.toolchain.cflags + ['-DI_WANT_ILLEGAL_VCI'])
 
Index: /trunk/platforms/tsarv4_generic_xbar/top.cpp
===================================================================
--- /trunk/platforms/tsarv4_generic_xbar/top.cpp	(revision 171)
+++ /trunk/platforms/tsarv4_generic_xbar/top.cpp	(revision 172)
@@ -59,8 +59,7 @@
 ///////////////////////////////////////////////////
 
-#define USE_OPENMP               0
-#define OPENMP_THREADS_NR        8
-
-#if USE_OPENMP
+#define OMP_THREADS        	8
+
+#ifdef _OPENMP
 #include <omp.h>
 #endif
@@ -105,11 +104,11 @@
 #define L1_DSETS                64
 
-#define FBUF_X_SIZE             128 
-#define FBUF_Y_SIZE             128 
-
-#define	BDEV_SECTOR_SIZE 	128
-#define BDEV_IMAGE_NAME	        "../../softs/soft_transpose_giet/images.raw"
-
-#define BOOT_SOFT_NAME	 	"../../softs/soft_transpose_giet/bin.soft"
+#define FBUF_X_SIZE             1024
+#define FBUF_Y_SIZE             1024
+
+#define	BDEV_SECTOR_SIZE 	1024
+#define BDEV_IMAGE_NAME	        "../../softs/soft_filter_giet/philips_image.raw"
+
+#define BOOT_SOFT_NAME	 	"../../softs/soft_filter_giet/bin.soft"
 
 /////////////////////////////////////////////////////////
@@ -277,4 +276,5 @@
     bool    trace_ok       = false;            	// debug activated
     size_t  from_cycle     = 0;                	// debug start cycle
+    size_t  omp_threads    = OMP_THREADS;	// number of cores for OpenMP
 
     ////////////// command line arguments //////////////////////
@@ -292,4 +292,8 @@
                 assert( ((nprocs == 1) || (nprocs == 2) || (nprocs == 4)) &&
                         "NPROCS must be equal to 1, 2, or 4");
+            }
+            else if( (strcmp(argv[n],"-THREADS") == 0) && (n+1<argc) )
+            {
+                omp_threads = atoi(argv[n+1]);
             }
             else if( (strcmp(argv[n],"-XMAX") == 0) && (n+1<argc) )
@@ -356,4 +360,5 @@
                 std::cout << "     -XFB fram_buffer_number_of_pixels" << std::endl;
                 std::cout << "     -YFB fram_buffer_number_of_lines" << std::endl;
+                std::cout << "     -THREADS number_of_cores_for_OpenMP" << std::endl;
                 exit(0);
             }
@@ -366,8 +371,9 @@
     std::cout << std::endl;
 
-#if USE_OPENMP
+#ifdef _OPENMP
         omp_set_dynamic(false);
-        omp_set_num_threads(threads_nr);
-        std::cerr << "Built with openmp version " << _OPENMP << std::endl;
+        omp_set_num_threads(omp_threads);
+        std::cout << "Built with openmp version " << _OPENMP << std::endl;
+        std::cout << "Number of threads = " << omp_threads << std::endl;
 #endif
 
@@ -607,10 +613,10 @@
     TsarV4ClusterXbar<vci_param, proc_iss, cmd_width, rsp_width>* clusters[xmax][ymax];
 
-#if USE_OPENMP
+#ifdef _OPENMP
 
 #pragma omp parallel
 {
 #pragma omp for
-    for( size_t i = 0 ; i  < (xmax * ymax); i++)
+    for( int i = 0 ; i  < (int)(xmax * ymax); i++)
     {
         size_t x = i / ymax;
@@ -618,4 +624,5 @@
 
 #pragma omp critical
+        {
 	std::ostringstream sc;
 	sc << "cluster_" << x << "_" << y;
@@ -652,6 +659,8 @@
 	     loader);
 	}
-
-#else  // USE_OPENMP
+    }
+}
+
+#else  // _OPENMP
 
     for( size_t x = 0 ; x  < xmax ; x++)
@@ -701,5 +710,5 @@
     }
     
-#endif	// USE_OPENMP
+#endif	// _OPENMP
 
     ///////////////////////////////////////////////////////////////
@@ -831,17 +840,21 @@
     signal_resetn = true;
 
+    sc_start(sc_core::sc_time(ncycles, SC_NS));
+
+/*
     for ( size_t n=0 ; n<ncycles ; n++)
     {
         sc_start(sc_core::sc_time(1, SC_NS));
+
         if ( trace_ok && (n > from_cycle) )
         {
             std::cout << "****************** cycle " << std::dec << n ;
             std::cout << " ***********************************" << std::endl;
-/*
-            clusters[0][0]->proc[0]->print_trace();
+            clusters[5][7]->proc[2]->print_trace();
+            print_vci_signal("proc_5_7_2_d", clusters[5][7]->signal_vci_ini_d_proc[2]);
+
             clusters[0][0]->proc[1]->print_trace();
             clusters[0][0]->proc[2]->print_trace();
             clusters[0][0]->proc[3]->print_trace();
-
             std::cout << std::endl;  
 
@@ -855,5 +868,4 @@
             clusters[1][0]->proc[0]->print_trace();
             clusters[1][0]->proc[1]->print_trace();
-*/
             clusters[1][0]->iniwrapperd->print_trace();
             clusters[1][0]->proc[2]->print_trace();
@@ -867,5 +879,4 @@
             print_dspin_signal("g2l_1_0_d RSP", clusters[1][0]->signal_dspin_rsp_g2l_d);
             print_vci_signal("l2g_1_0_d", clusters[1][0]->signal_vci_l2g_d);
-/*
             clusters[1][0]->proc[3]->print_trace();
 
@@ -939,7 +950,8 @@
             if ( clusters[0][0]->signal_irq_bdev.read() != 0) std::cout << " IRQ_BDEV" << std::endl;
             if ( clusters[0][0]->signal_proc_it[0].read() != 0) std::cout << " IRQ_PROC" << std::endl;
+        }
+    }
 */
-        }
-    }
+
     return EXIT_SUCCESS;
 }
Index: /trunk/platforms/tsarv4_generic_xbar/tsarv4_cluster_xbar/caba/source/src/tsarv4_cluster_xbar.cpp
===================================================================
--- /trunk/platforms/tsarv4_generic_xbar/tsarv4_cluster_xbar/caba/source/src/tsarv4_cluster_xbar.cpp	(revision 171)
+++ /trunk/platforms/tsarv4_generic_xbar/tsarv4_cluster_xbar/caba/source/src/tsarv4_cluster_xbar.cpp	(revision 172)
@@ -104,5 +104,5 @@
                 l1_d_ways,l1_d_sets,16,      	// DCACHE size
                 4,				// WBUF width
-                4 				// WBUF depth
+                8 				// WBUF depth
                 );
         }
