Index: soft/giet_vm/convol/convol.py
===================================================================
--- soft/giet_vm/convol/convol.py	(revision 401)
+++ soft/giet_vm/convol/convol.py	(revision 415)
@@ -17,5 +17,5 @@
 #  - x_width   : number of bits coding x coordinate
 #  - y_width   : number of bits coding y coordinate
-#  - procs_max : number of processors per cluster
+#  - nprocs : number of processors per cluster
 ####################################################################################
 
@@ -25,5 +25,5 @@
     x_size    = mapping.x_size
     y_size    = mapping.y_size
-    procs_max = mapping.procs_max
+    nprocs    = mapping.nprocs
     x_width   = mapping.x_width
     y_width   = mapping.y_width
@@ -31,17 +31,14 @@
     # define vsegs base & size
     code_base  = 0x10000000
-    code_size  = 0x00010000     # 64 Kbytes
+    code_size  = 0x00010000     # 64 Kbytes (replicated in each cluster)
     
     data_base  = 0x20000000
-    data_size  = 0x00010000     # 64 Kbytes
-
-    ptab_base  = 0x30000000
-    ptab_size  = 0x00040000     # 256 Kbytes
+    data_size  = 0x00010000     # 64 Kbytes (non replicated)
 
     heap_base  = 0x40000000     
-    heap_size  = 0x01000000     # max 16 Mbytes (for all clusters)
+    heap_size  = 0x01000000     # 16 Mbytes (per cluster)
 
     stack_base = 0x50000000     
-    stack_size = 0x02000000     # max 32 Mbytes (for all processors)
+    stack_size = 0x00200000     # 2 Mbytes (per cluster) 
 
     # create Vspace
@@ -53,5 +50,5 @@
                      local = False )
 
-    # code vsegs : local (one replicated vseg per cluster)
+    # code vsegs : local (one copy in each cluster)
     for x in xrange (x_size):
         for y in xrange (y_size):
@@ -63,40 +60,30 @@
                              local = True )
 
-    # heap vsegs : non local (one communication buffer per cluster)
+    # stack vsegs : local (one stack per processor)
+    for x in xrange (x_size):
+        for y in xrange (y_size):
+            for p in xrange( nprocs ):
+                proc_id = (((x * y_size) + y) * nprocs) + p
+                size    = stack_size / nprocs
+                base    = stack_base + (proc_id * size)
+                mapping.addVseg( vspace, 'conv_stack_%d_%d_%d' % (x,y,p), base, size,
+                                 'C_WU', vtype = 'BUFFER', x = x , y = y , pseg = 'RAM',
+                                 local = True, big = True )
+            
+    # heap vsegs : distributed but non local (all heap vsegs can be accessed by all tasks)
     for x in xrange (x_size):
         for y in xrange (y_size):
             cluster_id = (x * y_size) + y
-            size       = heap_size / (x_size * y_size)
+            size       = heap_size
             base       = heap_base + (cluster_id * size)
             mapping.addVseg( vspace, 'conv_heap_%d_%d' % (x,y), base, size,
                              'C_WU', vtype = 'BUFFER', x = x , y = y , pseg = 'RAM',
-                             local = False )
-
-    # stack vsegs : local (one stack per processor)
-    for x in xrange (x_size):
-        for y in xrange (y_size):
-            for p in xrange( procs_max ):
-                proc_id = (((x * y_size) + y) * procs_max) + p
-                size    = stack_size / (x_size * y_size * procs_max)
-                base    = stack_base + (proc_id * size)
-                mapping.addVseg( vspace, 'conv_stack_%d_%d_%d' % (x,y,p), base, size,
-                                 'C_WU', vtype = 'BUFFER', x = x , y = y , pseg = 'RAM',
-                                 local = True )
-            
-    # ptab vsegs : local (one ptab per cluster)
-    for x in xrange (x_size):
-        for y in xrange (y_size):
-            size       = ptab_size
-            base       = ptab_base
-            mapping.addVseg( vspace, 'conv_ptab_%d_%d' %(x,y), base , size,
-                             'C_WU', vtype = 'PTAB', x = x , y = y , pseg = 'RAM', 
-                             align = 13, 
-                             local = True )
+                             local = False, big = True )
 
     # distributed tasks : one task per processor 
     for x in xrange (x_size):
         for y in xrange (y_size):
-            for p in xrange( procs_max ):
-                trdid = (((x * y_size) + y) * procs_max) + p
+            for p in xrange( nprocs ):
+                trdid = (((x * y_size) + y) * nprocs) + p
                 mapping.addTask( vspace, 'conv_%d_%d_%d' % (x,y,p), trdid, x, y, p,
                                  'conv_stack_%d_%d_%d' % (x,y,p),
