Index: trunk/Platforms/Test/Makefile
===================================================================
--- trunk/Platforms/Test/Makefile	(revision 112)
+++ trunk/Platforms/Test/Makefile	(revision 113)
@@ -29,4 +29,5 @@
 #----------------------------------------------------------
 ENTITY				=	Test
+SIMULATOR			=	modelsim
 
 DIR_TMP				=	$(MORPHEO_TMP)
@@ -34,4 +35,5 @@
 DIR_SRC				=	src
 DIR_OBJ				=	$(DIR_TMP)/obj
+DIR_LIB				=	$(DIR_TMP)/lib
 DIR_BIN				=	$(DIR_TMP)/bin
 DIR_LOG				=	$(DIR_TMP)/log
@@ -57,5 +59,6 @@
 #----------------------------------------------------------
 
-OBJECTS				=	$(patsubst $(DIR_SRC)/%.cpp,$(DIR_OBJ)/%.o,$(wildcard $(DIR_SRC)/*.cpp))
+SOURCES				=	$(wildcard $(DIR_SRC)/*.cpp)
+OBJECTS				=	$(patsubst $(DIR_SRC)/%.cpp,$(DIR_OBJ)/%.o,$(SOURCES))
 LOGS				=	$(patsubst $(DIR_DATA_TEST)/%.cfg,$(DIR_LOG)/%.log,$(wildcard $(DIR_DATA_TEST)/*.cfg))
 BENCHS				=	$(patsubst $(DIR_DATA_BENCH)/%.cfg,$(DIR_LOG)/%.log,$(wildcard $(DIR_DATA_BENCH)/*.cfg))
@@ -73,7 +76,11 @@
 					-I$(DIR_INC)                          
 
+#LIBDIR				=	$(SYSTEMC_LIBDIR_$(SIMULATOR))		\
+#					$(ENVIRONMENT_LIBDIR)			\
+#					$(MORPHEO_LIBDIR)			
+
+# FIXME !!!
 LIBDIR				=	$(SYSTEMC_LIBDIR_$(SIMULATOR))		\
-					$(ENVIRONMENT_LIBDIR)			\
-					$(MORPHEO_LIBDIR)			
+					-L$(DIR_LIB)
 
 LIBNAME				=	$(ENVIRONMENT_LIBNAME)			\
@@ -99,12 +106,26 @@
 .PRECIOUS			: $(DIR_OBJ)/%.o $(DIR_BIN)/%.x $(DIR_LOG)/%.log
 
-all				: $(DIR_OBJ) $(DIR_BIN)
-				@\
-				$(MAKE) $(EXEC)
-
-$(DIR_BIN)/%.x			: $(OBJECTS)
-				@\
-				$(ECHO) "Compilation        : $*";\
-				$(CXX) $(PLATFORMS_L_FLAGS)      -o $@ $^ $(LIBNAME);
+all				: $(EXEC)
+
+$(DIR_BIN)/%.x			:  $(DIR_OBJ) $(DIR_BIN)
+				@\
+				$(ECHO) "Linkage            : $*";\
+				case "${SIMULATOR}" in								\
+				    "modelsim")									\
+					$(MAKE) $(WORK_NAME);							\
+					$(MODELTECH_SCCOM) $(PLATFORMS_CXX_FLAGS) $(SOURCES); 			\
+					$(MODELTECH_SCCOM) -link $(PLATFORMS_L_FLAGS) $(LIBNAME);		\
+					$(ECHO) "#!$(SHELL)"                                              > $@;	\
+					$(ECHO) "cd $${PWD};"                                            >> $@;	\
+					$(ECHO) "$(MODELTECH_VSIM) -sc_arg "'"$${*}"'" $(WORK_NAME).top;" >> $@;\
+					$(ECHO) "cd -;"                                                  >> $@;	\
+					$(CHMOD) +x $@;								\
+					;;									\
+				    *)										\
+					$(MAKE) $(OBJECTS);							\
+					$(CXX) $(PLATFORMS_L_FLAGS) -o $@ $(OBJECTS) $(LIBNAME);		\
+					;;									\
+				esac;										\
+
 
 test				: $(DIR_LOG) all
@@ -141,4 +162,6 @@
 execute				: bench
 
+#				$(ECHO) $${data} | $(EXEC_PREFIX) $(EXEC) &> $$log;	\
+
 $(DIR_LOG)/%.log		: %.cfg
 				@\
@@ -158,5 +181,4 @@
 				fi;							\
 
-
 #-----[ Library + Software ]-------------------------------
 
@@ -177,19 +199,9 @@
 				$(CXX) $(PLATFORMS_CXX_FLAGS) -c -o $@ $<;
 
-$(DIR_OBJ)			:
+$(DIR_OBJ) $(DIR_BIN) $(DIR_LOG) :
 				@\
 				$(ECHO) "Create directory   : $@";\
 				$(MKDIR) $@
 
-$(DIR_BIN)			:
-				@\
-				$(ECHO) "Create directory   : $@";\
-				$(MKDIR) $@
-
-$(DIR_LOG)			:
-				@\
-				$(ECHO) "Create directory   : $@";\
-				$(MKDIR) $@
-
 #-----[ Clean + help ]-------------------------------------
 
@@ -197,10 +209,18 @@
 				@\
 				$(ECHO) "Delete     temporary files in directory $(PWD)";\
-				$(RM) 	*~ $(DIR_SRC)/*~ $(DIR_INC)/*~ $(DIR_DATA_TEST)/*~ $(DIR_DATA_BENCH)/*~ *core* tty* *.vhdl *.log *.stat *.pos\
-					$(DIR_OBJ) $(DIR_BIN) $(DIR_LOG);
+				$(RM) 	$(OBJECTS) $(EXEC) \
+					*~ $(DIR_SRC)/*~ $(DIR_INC)/*~ $(DIR_DATA_TEST)/*~ $(DIR_DATA_BENCH)/*~ \
+					*core* \
+					tty* \
+					*.vhdl \
+					*.log \
+					*.stat \
+					*.pos \
+					modelsim.ini transcript *wlf* $(WORK_NAME)
 
 clean_all			: clean
 				@\
 				$(ECHO) "Delete     generated files in directory $(PWD)";\
+				$(RM) $(DIR_OBJ) $(DIR_BIN) $(DIR_LOG);\
 				$(MAKE) --directory=$(DIR_SOFT)        --makefile=Makefile clean_all; \
 				$(MAKE) --directory=$(ENVIRONMENT_DIR) --makefile=Makefile clean_all; \
@@ -223,4 +243,5 @@
 				$(ECHO) "";
 
+include $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis
 include $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
 include $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
Index: trunk/Platforms/Test/include/test.h
===================================================================
--- trunk/Platforms/Test/include/test.h	(revision 112)
+++ trunk/Platforms/Test/include/test.h	(revision 113)
@@ -9,4 +9,5 @@
  */
 
+#include <systemc.h>
 #include "Morpheo.h"
 #include <iostream>
@@ -23,3 +24,10 @@
          );
 
+#ifdef MTI_SYSTEMC
+class top : public sc_module
+{
+//public : top (int argc, char * argv[]);
+  public : top (sc_module_name name);
+};
 #endif
+#endif
Index: trunk/Platforms/Test/src/sc_main.cpp
===================================================================
--- trunk/Platforms/Test/src/sc_main.cpp	(revision 112)
+++ trunk/Platforms/Test/src/sc_main.cpp	(revision 113)
@@ -12,8 +12,14 @@
 using namespace morpheo;
 
-void usage (int argc, char * argv[])
+void usage (int argc
+#ifdef MTI_SYSTEMC
+            ,const char * const * argv
+#else
+            ,char * argv[]
+#endif
+            )
 {
-  cerr <<  "<Usage> " << argv[0] << " list_params." << endl
-       <<  "list_params is :" << endl
+  cerr <<  "<Usage> " << argv[0] << endl
+       <<  "In input stream : " << endl
        <<  " * filename_simulator   (string  )" << endl
        <<  " * filename_generator   (string  )" << endl
@@ -27,19 +33,34 @@
 }
 
+#ifdef MTI_SYSTEMC
+SC_MODULE_EXPORT(top);
+
+top::top (sc_module_name name)
+#else
 int sc_main (int argc, char * argv[])
+#endif
 {
   cout << "<sc_main> Begin" << endl;
+
+#ifdef MTI_SYSTEMC
+  // accessing command-line arguments with modelsim
+  int argc;
+  const char * const * argv;
+
+  argc = sc_argc ();
+  argv = sc_argv ();
+#endif
 
   for (int32_t i=0; i<argc; ++i)
     cout << argv[i] << " ";
   cout << endl;
-
+  
   //==============================================================================
   //===== [ Parameters ]==========================================================
   //==============================================================================
-
+  
   if (argc != 9)
     usage (argc, argv);
-
+  
   uint32_t x = 1;
   string   filename_simulator = argv[x++];
@@ -51,4 +72,37 @@
   uint32_t cache_size         = fromString<uint32_t>(argv[x++]);
   uint32_t cache_ratio        = fromString<uint32_t>(argv[x++]);
+  
+//   string   filename_simulator;
+//   string   filename_generator;
+//   string   filename_instance ;
+//   string   filename_software ;
+//   uint32_t nb_cache_dedicated;
+//   uint32_t nb_cache_shared   ;
+//   uint32_t cache_size        ;
+//   uint32_t cache_ratio       ;
+
+//   cout <<  "get filename_simulator   ? " << endl;
+//   cin >> filename_simulator ;
+
+//   cout <<  "get filename_generator   ? " << endl;
+//   cin >> filename_generator ;
+
+//   cout <<  "get filename_instance    ? " << endl;
+//   cin >> filename_instance  ;
+
+//   cout <<  "get filename_software    ? " << endl;
+//   cin >> filename_software  ;
+
+//   cout <<  "get nb_cache_dedicated   ? " << endl;
+//   cin >> nb_cache_dedicated ;
+
+//   cout <<  "get nb_cache_shared      ? " << endl;
+//   cin >> nb_cache_shared    ;
+
+//   cout <<  "get size cache L1 (byte) ? " << endl;
+//   cin >> cache_size         ;
+
+//   cout <<  "get ratio cache          ? " << endl;
+//   cin >> cache_ratio        ;
 
   morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void) = NULL;
@@ -64,6 +118,9 @@
                       get_custom_information);
 
+  cout << "  * return : " << _return << endl;  
   cout << "<sc_main> End" << endl;  
 
+#ifndef MTI_SYSTEMC
   return _return;
+#endif
 }
