Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/Makefile.defs
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/Makefile.defs	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/Makefile.defs	(revision 113)
@@ -7,4 +7,6 @@
 # 
 
+ENTITY                          = Comparator
+
 #-----[ Directory ]----------------------------------------
 DIR_COMPONENT_MORPHEO		= ../../..
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/include/test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/include/test.h	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/include/test.h	(revision 113)
@@ -11,5 +11,5 @@
 #endif
 
-#define NB_ITERATION  1
+#define NB_ITERATION  1024
 #define CYCLE_MAX     (1024*NB_ITERATION)
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/src/main.cpp	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/src/main.cpp	(revision 113)
@@ -19,5 +19,4 @@
   err (_(" * type      (Tcomparator_scheme_t)\n"));
 
-
   exit (1);
 }
@@ -34,4 +33,5 @@
   uint32_t x = 1;
 
+  string name = argv[x++];
   uint32_t             _size_data;
   bool                 _is_signed;
@@ -41,6 +41,4 @@
   SELFTEST0(_is_signed,bool                ,argv,x);
   SELFTEST0(_type     ,Tcomparator_scheme_t,argv,x);
-
-  string name = argv[x++];
 
   int _return = EXIT_SUCCESS;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/src/test.cpp	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/src/test.cpp	(revision 113)
@@ -9,4 +9,5 @@
 #include "Behavioural/Generic/Comparator/SelfTest/include/test.h"
 #include "Behavioural/include/Allocation.h"
+#include "Common/include/BitManipulation.h"
 
 void test (string name,
@@ -50,4 +51,12 @@
   sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);	 
   sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
+
+  sc_signal<Tdata_t   > *  in_COMPARE_DATA_0;
+  sc_signal<Tdata_t   > *  in_COMPARE_DATA_1;
+  sc_signal<Tcontrol_t> * out_COMPARE_TEST  ;
+
+  ALLOC0_SC_SIGNAL( in_COMPARE_DATA_0," in_COMPARE_DATA_0",Tdata_t   );
+  ALLOC0_SC_SIGNAL( in_COMPARE_DATA_1," in_COMPARE_DATA_1",Tdata_t   );
+  ALLOC0_SC_SIGNAL(out_COMPARE_TEST  ,"out_COMPARE_TEST  ",Tcontrol_t);
   
   /********************************************************
@@ -60,5 +69,8 @@
   (*(_Comparator->in_NRESET))       (*(in_NRESET));
 
-
+  INSTANCE0_SC_SIGNAL(_Comparator, in_COMPARE_DATA_0);
+  INSTANCE0_SC_SIGNAL(_Comparator, in_COMPARE_DATA_1);
+  INSTANCE0_SC_SIGNAL(_Comparator,out_COMPARE_TEST  );
+  
   msg(_("<%s> : Start Simulation ............\n"),name.c_str());
     
@@ -90,4 +102,119 @@
       LABEL("Iteration %d",iteration);
 
+      uint64_t data0 = range<uint64_t>(rand(),_param->_size_data);
+      uint64_t data1 = range<uint64_t>(rand(),_param->_size_data);
+
+      in_COMPARE_DATA_0->write(static_cast<Tdata_t>(data0));
+      in_COMPARE_DATA_1->write(static_cast<Tdata_t>(data1));
+      
+      SC_START(0);
+      
+      Tcontrol_t test = false;
+      switch (_param->_size_data)
+        {
+        case 8 :
+          {
+            if (_param->_is_signed)
+              switch (_param->_type)
+                {
+                case COMPARATOR_EQUAL            : test = static_cast< int8_t>(data0) == static_cast< int8_t>(data1); break;
+                case COMPARATOR_NOT_EQUAL        : test = static_cast< int8_t>(data0) != static_cast< int8_t>(data1); break;
+                case COMPARATOR_GREATER          : test = static_cast< int8_t>(data0) >  static_cast< int8_t>(data1); break;
+                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int8_t>(data0) >= static_cast< int8_t>(data1); break;
+                case COMPARATOR_LESS             : test = static_cast< int8_t>(data0) <  static_cast< int8_t>(data1); break;
+                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast< int8_t>(data0) <= static_cast< int8_t>(data1); break;
+                }
+            else
+              switch (_param->_type)
+                {
+                case COMPARATOR_EQUAL            : test = static_cast<uint8_t>(data0) == static_cast<uint8_t>(data1); break;
+                case COMPARATOR_NOT_EQUAL        : test = static_cast<uint8_t>(data0) != static_cast<uint8_t>(data1); break;
+                case COMPARATOR_GREATER          : test = static_cast<uint8_t>(data0) >  static_cast<uint8_t>(data1); break;
+                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint8_t>(data0) >= static_cast<uint8_t>(data1); break;
+                case COMPARATOR_LESS             : test = static_cast<uint8_t>(data0) <  static_cast<uint8_t>(data1); break;
+                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast<uint8_t>(data0) <= static_cast<uint8_t>(data1); break;
+                }
+            break;
+          }
+        case 16 :
+          {
+            if (_param->_is_signed)
+              switch (_param->_type)
+                {
+                case COMPARATOR_EQUAL            : test = static_cast< int16_t>(data0) == static_cast< int16_t>(data1); break;
+                case COMPARATOR_NOT_EQUAL        : test = static_cast< int16_t>(data0) != static_cast< int16_t>(data1); break;
+                case COMPARATOR_GREATER          : test = static_cast< int16_t>(data0) >  static_cast< int16_t>(data1); break;
+                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int16_t>(data0) >= static_cast< int16_t>(data1); break;
+                case COMPARATOR_LESS             : test = static_cast< int16_t>(data0) <  static_cast< int16_t>(data1); break;
+                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast< int16_t>(data0) <= static_cast< int16_t>(data1); break;
+                }
+            else
+              switch (_param->_type)
+                {
+                case COMPARATOR_EQUAL            : test = static_cast<uint16_t>(data0) == static_cast<uint16_t>(data1); break;
+                case COMPARATOR_NOT_EQUAL        : test = static_cast<uint16_t>(data0) != static_cast<uint16_t>(data1); break;
+                case COMPARATOR_GREATER          : test = static_cast<uint16_t>(data0) >  static_cast<uint16_t>(data1); break;
+                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint16_t>(data0) >= static_cast<uint16_t>(data1); break;
+                case COMPARATOR_LESS             : test = static_cast<uint16_t>(data0) <  static_cast<uint16_t>(data1); break;
+                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast<uint16_t>(data0) <= static_cast<uint16_t>(data1); break;
+                }
+            break;
+          }
+        case 32 :
+          {
+            if (_param->_is_signed)
+              switch (_param->_type)
+                {
+                case COMPARATOR_EQUAL            : test = static_cast< int32_t>(data0) == static_cast< int32_t>(data1); break;
+                case COMPARATOR_NOT_EQUAL        : test = static_cast< int32_t>(data0) != static_cast< int32_t>(data1); break;
+                case COMPARATOR_GREATER          : test = static_cast< int32_t>(data0) >  static_cast< int32_t>(data1); break;
+                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int32_t>(data0) >= static_cast< int32_t>(data1); break;
+                case COMPARATOR_LESS             : test = static_cast< int32_t>(data0) <  static_cast< int32_t>(data1); break;
+                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast< int32_t>(data0) <= static_cast< int32_t>(data1); break;
+                }
+            else
+              switch (_param->_type)
+                {
+                case COMPARATOR_EQUAL            : test = static_cast<uint32_t>(data0) == static_cast<uint32_t>(data1); break;
+                case COMPARATOR_NOT_EQUAL        : test = static_cast<uint32_t>(data0) != static_cast<uint32_t>(data1); break;
+                case COMPARATOR_GREATER          : test = static_cast<uint32_t>(data0) >  static_cast<uint32_t>(data1); break;
+                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint32_t>(data0) >= static_cast<uint32_t>(data1); break;
+                case COMPARATOR_LESS             : test = static_cast<uint32_t>(data0) <  static_cast<uint32_t>(data1); break;
+                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast<uint32_t>(data0) <= static_cast<uint32_t>(data1); break;
+                }
+            break;
+          }
+        case 64 :
+          {
+            if (_param->_is_signed)
+              switch (_param->_type)
+                {
+                case COMPARATOR_EQUAL            : test = static_cast< int64_t>(data0) == static_cast< int64_t>(data1); break;
+                case COMPARATOR_NOT_EQUAL        : test = static_cast< int64_t>(data0) != static_cast< int64_t>(data1); break;
+                case COMPARATOR_GREATER          : test = static_cast< int64_t>(data0) >  static_cast< int64_t>(data1); break;
+                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int64_t>(data0) >= static_cast< int64_t>(data1); break;
+                case COMPARATOR_LESS             : test = static_cast< int64_t>(data0) <  static_cast< int64_t>(data1); break;
+                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast< int64_t>(data0) <= static_cast< int64_t>(data1); break;
+                }
+            else
+              switch (_param->_type)
+                {
+                case COMPARATOR_EQUAL            : test = static_cast<uint64_t>(data0) == static_cast<uint64_t>(data1); break;
+                case COMPARATOR_NOT_EQUAL        : test = static_cast<uint64_t>(data0) != static_cast<uint64_t>(data1); break;
+                case COMPARATOR_GREATER          : test = static_cast<uint64_t>(data0) >  static_cast<uint64_t>(data1); break;
+                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint64_t>(data0) >= static_cast<uint64_t>(data1); break;
+                case COMPARATOR_LESS             : test = static_cast<uint64_t>(data0) <  static_cast<uint64_t>(data1); break;
+                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast<uint64_t>(data0) <= static_cast<uint64_t>(data1); break;
+                }
+            break;
+          }
+        default :
+          {
+            TEST_KO("Invalid size for the test.");
+          }
+        }
+
+      TEST(Tcontrol_t,out_COMPARE_TEST->read(),test);
+
       SC_START(1);
     }
@@ -104,4 +231,7 @@
   delete in_CLOCK;
   delete in_NRESET;
+  DELETE0_SC_SIGNAL( in_COMPARE_DATA_0);
+  DELETE0_SC_SIGNAL( in_COMPARE_DATA_1);
+  DELETE0_SC_SIGNAL(out_COMPARE_TEST  );
     }
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/include/Comparator.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/include/Comparator.h	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/include/Comparator.h	(revision 113)
@@ -64,6 +64,5 @@
   public    : SC_IN (Tdata_t   )            *  in_COMPARE_DATA_0;
   public    : SC_IN (Tdata_t   )            *  in_COMPARE_DATA_1;
-  public    : SC_OUT(Tcontrol_t)            *  in_COMPARE_TEST  ;
-    
+  public    : SC_OUT(Tcontrol_t)            * out_COMPARE_TEST  ;
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
@@ -105,5 +104,5 @@
 #ifdef SYSTEMC				       
   public  : void        transition                (void);
-//public  : void        genMoore                  (void);
+  public  : void        genMealy                  (void);
 #endif					       
 
@@ -112,4 +111,7 @@
   private : void        vhdl_declaration          (Vhdl * & vhdl);
   private : void        vhdl_body                 (Vhdl * & vhdl);
+
+  private : void        vhdl_xilinx_declaration   (Vhdl * & vhdl);
+  private : void        vhdl_xilinx_body          (Vhdl * & vhdl);
 #endif					       
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/include/Parameters.h	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/include/Parameters.h	(revision 113)
@@ -26,4 +26,7 @@
   public : Tcomparator_scheme_t _type;
 
+  public : int64_t              _extends;
+  public : int64_t              _mask_sign;
+
     //-----[ methods ]-----------------------------------------------------------
   public : Parameters  (uint32_t             size_data,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator.cpp	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator.cpp	(revision 113)
@@ -77,13 +77,15 @@
 # endif    
 
-// 	log_printf(INFO,Comparator,FUNCTION,_("<%s> : Method - genMoore"),_name.c_str());
+	log_printf(INFO,Comparator,FUNCTION,_("<%s> : Method - genMealy"),_name.c_str());
 
-// 	SC_METHOD (genMoore);
-// 	dont_initialize ();
-// 	sensitive << (*(in_CLOCK)).neg(); // need internal register
+	SC_METHOD (genMealy);
+	dont_initialize ();
+// 	sensitive << (*(in_CLOCK)).neg(); // don't need internal register
+        sensitive << (*(in_COMPARE_DATA_0))
+                  << (*(in_COMPARE_DATA_1));
 	
-// # ifdef SYSTEMCASS_SPECIFIC
-// 	// List dependency information
-// # endif    
+# ifdef SYSTEMCASS_SPECIFIC
+	// List dependency information
+# endif    
 	
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_allocation.cpp	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_allocation.cpp	(revision 113)
@@ -53,4 +53,16 @@
       in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
     }
+
+    // ~~~~~[ Interface : "compare" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      ALLOC0_INTERFACE_BEGIN("compare",IN,SOUTH,_("Compare interface"));
+
+      ALLOC0_SIGNAL_IN ( in_COMPARE_DATA_0,"DATA_0",Tdata_t   ,_param->_size_data);
+      ALLOC0_SIGNAL_IN ( in_COMPARE_DATA_1,"DATA_1",Tdata_t   ,_param->_size_data);
+      ALLOC0_SIGNAL_OUT(out_COMPARE_TEST  ,"TEST"  ,Tcontrol_t,1);
+
+      ALLOC0_INTERFACE_END();
+    }
+
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_deallocation.cpp	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_deallocation.cpp	(revision 113)
@@ -25,4 +25,8 @@
 	delete    in_CLOCK ;
 	delete    in_NRESET;
+
+        DELETE0_SIGNAL( in_COMPARE_DATA_0,_param->_size_data);
+        DELETE0_SIGNAL( in_COMPARE_DATA_1,_param->_size_data);
+        DELETE0_SIGNAL(out_COMPARE_TEST  ,1);
       }
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_genMealy.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_genMealy.cpp	(revision 113)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_genMealy.cpp	(revision 113)
@@ -0,0 +1,82 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Comparator/include/Comparator.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace comparator {
+
+
+#undef  FUNCTION
+#define FUNCTION "Comparator::genMealy"
+  void Comparator::genMealy (void)
+  {
+    log_begin(Comparator,FUNCTION);
+
+    Tcontrol_t test;
+    Tdata_t data_0 = PORT_READ(in_COMPARE_DATA_0);
+    Tdata_t data_1 = PORT_READ(in_COMPARE_DATA_1);
+    
+    if (_param->_is_signed)
+      {
+        int64_t data0 = static_cast<int64_t>(data_0);
+        int64_t data1 = static_cast<int64_t>(data_1);
+
+        data0 = ((data0 & _param->_mask_sign) != 0)?(_param->_extends|data0):(~_param->_extends & data0);
+        data1 = ((data1 & _param->_mask_sign) != 0)?(_param->_extends|data1):(~_param->_extends & data1);
+
+        switch (_param->_type)
+          {
+          case COMPARATOR_EQUAL            : test = (data0 == data1); break;
+          case COMPARATOR_NOT_EQUAL        : test = (data0 != data1); break;
+          case COMPARATOR_GREATER          : test = (data0 >  data1); break;
+          case COMPARATOR_GREATER_OR_EQUAL : test = (data0 >= data1); break;
+          case COMPARATOR_LESS             : test = (data0 <  data1); break;
+          case COMPARATOR_LESS_OR_EQUAL    : test = (data0 <= data1); break;
+          }
+      }
+    else
+      {
+        uint64_t data0 = ~_param->_extends & static_cast<uint64_t>(data_0);
+        uint64_t data1 = ~_param->_extends & static_cast<uint64_t>(data_1);
+
+        switch (_param->_type)
+          {
+          case COMPARATOR_EQUAL            : test = (data0 == data1); break;
+          case COMPARATOR_NOT_EQUAL        : test = (data0 != data1); break;
+          case COMPARATOR_GREATER          : test = (data0 >  data1); break;
+          case COMPARATOR_GREATER_OR_EQUAL : test = (data0 >= data1); break;
+          case COMPARATOR_LESS             : test = (data0 <  data1); break;
+          case COMPARATOR_LESS_OR_EQUAL    : test = (data0 <= data1); break;
+          }
+      }
+
+    log_printf(TRACE,Comparator,FUNCTION,"  * size_data : %d",_param->_size_data);
+    log_printf(TRACE,Comparator,FUNCTION,"  * extends   : %llx",_param->_extends  );
+
+
+    log_printf(TRACE,Comparator,FUNCTION,"  * %.x %s (%d) %x = %d"
+               ,data_0
+               ,toString(_param->_type).c_str()
+               ,_param->_is_signed
+               ,data_1
+               ,test);
+
+    PORT_WRITE(out_COMPARE_TEST,test);
+
+    log_end(Comparator,FUNCTION);
+  };
+
+}; // end namespace comparator
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl.cpp	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl.cpp	(revision 113)
@@ -27,6 +27,12 @@
     _component->vhdl_instance(vhdl);
 
+    // default architecture
     vhdl_declaration (vhdl);
     vhdl_body        (vhdl);
+
+    // Xilinx architecture
+    vhdl->set_architecture("xilinx");
+    vhdl_xilinx_declaration (vhdl);
+    vhdl_xilinx_body        (vhdl);
 
     vhdl->generate_file();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl_xilinx_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl_xilinx_body.cpp	(revision 113)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl_xilinx_body.cpp	(revision 113)
@@ -0,0 +1,31 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Comparator/include/Comparator.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace comparator {
+
+
+#undef  FUNCTION
+#define FUNCTION "Comparator::vhdl_xilinx_body"
+  void Comparator::vhdl_xilinx_body (Vhdl * & vhdl)
+  {
+    log_begin(Comparator,FUNCTION);
+    vhdl->set_body ("");
+    log_end(Comparator,FUNCTION);
+  };
+
+}; // end namespace comparator
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl_xilinx_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl_xilinx_declaration.cpp	(revision 113)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl_xilinx_declaration.cpp	(revision 113)
@@ -0,0 +1,33 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Comparator/include/Comparator.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace comparator {
+
+
+#undef  FUNCTION
+#define FUNCTION "Comparator::vhdl_xilinx_declaration"
+  void Comparator::vhdl_xilinx_declaration (Vhdl * & vhdl)
+  {
+    log_begin(Comparator,FUNCTION);
+
+    vhdl->set_library("XilinxCoreLib","c_compare_v9_0_comp","all");
+
+    log_end(Comparator,FUNCTION);
+  };
+
+}; // end namespace comparator
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Parameters.cpp	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Parameters.cpp	(revision 113)
@@ -7,4 +7,5 @@
 
 #include "Behavioural/Generic/Comparator/include/Parameters.h"
+#include "Common/include/BitManipulation.h"
 
 namespace morpheo {
@@ -12,5 +13,4 @@
 namespace generic {
 namespace comparator {
-
 
 #undef  FUNCTION
@@ -28,4 +28,7 @@
 
     test();
+
+    _extends   = gen_mask_not<int64_t>(_size_data);
+    _mask_sign = (1<<(_size_data-1));
 
     if (is_toplevel)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Parameters_msg_error.cpp	(revision 112)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Parameters_msg_error.cpp	(revision 113)
@@ -24,4 +24,7 @@
     Parameters_test test ("Comparator");
 
+    if (_size_data > 64)
+      test.error(_("Max size is 64 bits.\n"));
+
     log_end(Comparator,FUNCTION);
 
