diff --git a/src/scheduler/Scheduler.cpp b/src/scheduler/Scheduler.cpp
index f65729d64b2b1e4e64ea34caff37abacfb7f5787..99f2de6699090a222ce8c230e586e043c110652c 100644
--- a/src/scheduler/Scheduler.cpp
+++ b/src/scheduler/Scheduler.cpp
@@ -686,7 +686,7 @@ Aidge::MemoryManager Aidge::Scheduler::generateMemory(bool incProducers, bool wr
             for (IOIndex_t outputIdx = 0; outputIdx < node->nbOutputs(); ++outputIdx) {
                 const auto requiredSize = op->getRequiredMemory(outputIdx, {});
                 AIDGE_ASSERT(requiredSize.type == Elts_t::Data,
-                    "Cannot generate memory with token-based producer-consumer model for node {} (of type {}).",
+                    "Cannot generate memory with token-based producer-consumer model for node {} (of type {}). You may need to forward dimensions in the graph first.",
                     node->name(), node->type());
 
                 // By default, specifies a fully monolithic memory block
@@ -724,7 +724,7 @@ Aidge::MemoryManager Aidge::Scheduler::generateMemory(bool incProducers, bool wr
                         const auto requiredData = op->getNbRequiredData(inputIdx);
                         const auto requiredProtected = op->getNbRequiredProtected(inputIdx);
                         AIDGE_ASSERT(requiredData.type == Elts_t::Data && requiredProtected.type == Elts_t::Data,
-                            "Cannot generate memory with token-based producer-consumer model for node {} (of type {}).",
+                            "Cannot generate memory with token-based producer-consumer model for node {} (of type {}). You may need to forward dimensions in the graph first.",
                             node->name(), node->type());
 
                         const bool isWrappable = (requiredProtected.data < requiredData.data);
@@ -848,7 +848,7 @@ Aidge::MemoryManager Aidge::Scheduler::generateMemoryAutoConcat(bool incProducer
                 }
 
                 AIDGE_ASSERT(requiredSize.type == Elts_t::Data,
-                    "Cannot generate memory with token-based producer-consumer model for node {} (of type {}).",
+                    "Cannot generate memory with token-based producer-consumer model for node {} (of type {}). You may need to forward dimensions in the graph first.",
                     node->name(), node->type());
 
                 // By default, specifies a fully monolithic memory block
@@ -892,7 +892,7 @@ Aidge::MemoryManager Aidge::Scheduler::generateMemoryAutoConcat(bool incProducer
                             const auto requiredData = allocableNode->getOperator()->getNbRequiredData(inputIdx);
                             const auto requiredProtected = allocableNode->getOperator()->getNbRequiredProtected(inputIdx);
                             AIDGE_ASSERT(requiredData.type == Elts_t::Data && requiredProtected.type == Elts_t::Data,
-                                "Cannot generate memory with token-based producer-consumer model for node {} (of type {}).",
+                                "Cannot generate memory with token-based producer-consumer model for node {} (of type {}). You may need to forward dimensions in the graph first.",
                                 node->name(), node->type());
 
                             const bool isWrappable = (requiredProtected.data < requiredData.data);