Index: /branches/reconfiguration/modules/dspin_router/caba/source/include/dspin_router.h
===================================================================
--- /branches/reconfiguration/modules/dspin_router/caba/source/include/dspin_router.h	(revision 876)
+++ /branches/reconfiguration/modules/dspin_router/caba/source/include/dspin_router.h	(revision 877)
@@ -109,4 +109,6 @@
     DspinOutput<flit_width>     *p_out;
 
+    sc_in<int>                  *p_blackhole_pos;
+
     // constructor / destructor
     DspinRouter( sc_module_name  name,
@@ -117,5 +119,8 @@
                  const size_t    in_fifo_depth,
                  const size_t    out_fifo_depth,
-                 const bool      broadcast_supported = false ); // default value
+                 const bool      broadcast_supported = false,
+                 const bool      reconfigurable = false );
+
+    ~DspinRouter();
 
     private:
@@ -151,5 +156,4 @@
     bool                        m_broadcast_supported;
     int                         m_disable_mask;
-    int                         m_blackhole_pos;
 
     // methods
@@ -169,9 +173,4 @@
     }
 
-    void set_blackhole_pos( int pos )
-    {
-        m_blackhole_pos = pos;
-    }
-
     void print_trace();
 };
Index: /branches/reconfiguration/modules/dspin_router/caba/source/src/dspin_router.cpp
===================================================================
--- /branches/reconfiguration/modules/dspin_router/caba/source/src/dspin_router.cpp	(revision 876)
+++ /branches/reconfiguration/modules/dspin_router/caba/source/src/dspin_router.cpp	(revision 877)
@@ -59,5 +59,6 @@
                              const size_t   in_fifo_depth,
                              const size_t   out_fifo_depth,
-                             const bool     broadcast_supported )
+                             const bool     broadcast_supported,
+                             const bool     reconfigurable )
     : soclib::caba::BaseModule(name),
 
@@ -114,5 +115,14 @@
                 GenericFifo<internal_flit_t >(stro.str(), out_fifo_depth);
         }
+
+        if ( reconfigurable ) p_blackhole_pos = new sc_core::sc_in<int>;
+        else                  p_blackhole_pos = NULL;
     } //  end constructor
+
+    ///////////////////////////////////////////////////
+    tmpl(/**/)::~DspinRouter()
+    {
+        if ( p_blackhole_pos != NULL ) delete p_blackhole_pos;
+    }
 
     ///////////////////////////////////////////////////
@@ -128,5 +138,5 @@
     tmpl(int)::recovery_route( size_t xdest, size_t ydest )
     {
-        int bhpos = m_blackhole_pos;
+        int bhpos = p_blackhole_pos->read();
         if ( xdest > m_local_x ) {
             if ( (bhpos == BH_NE) || (bhpos == BH_E) || (bhpos == BH_SE) ||
@@ -238,10 +248,12 @@
         size_t xdest = (size_t)(data >> m_x_shift) & m_x_mask;
         size_t ydest = (size_t)(data >> m_y_shift) & m_y_mask;
-        if ( m_blackhole_pos == BH_NONE ) {
-            return xfirst_route(xdest, ydest);
-        }
-        else {
-            return recovery_route(xdest, ydest);
-        }
+        if ( p_blackhole_pos != NULL )
+        {
+            if (p_blackhole_pos->read() != BH_NONE)
+            {
+                return recovery_route(xdest, ydest);
+            }
+        }
+        return xfirst_route(xdest, ydest);
     }
 
@@ -378,6 +390,4 @@
                 r_fifo_out[i].init();
             }
-
-            set_blackhole_pos(BH_NONE);
             return;
         }
