diff --git a/src/StaticModel.cc b/src/StaticModel.cc
index 13a023f51c77bd2dc3f68779403de8b286a6388e..7f7d3449703eb0755cd4c607ef8d4887da0be13d 100644
--- a/src/StaticModel.cc
+++ b/src/StaticModel.cc
@@ -1146,9 +1146,13 @@ StaticModel::writeDriverOutput(ostream &output, bool block) const
            << temporary_terms_idxs.at(mlv)+1 << ';' << endl;
   output << "};" << endl;
 
-  if (!block)
-    return;
+  if (block)
+    writeBlockDriverOutput(output);
+}
 
+void
+StaticModel::writeBlockDriverOutput(ostream &output) const
+{
   for (int blk = 0; blk < static_cast<int>(blocks.size()); blk++)
     {
       output << "block_structure_stat.block(" << blk+1 << ").Simulation_Type = " << static_cast<int>(blocks[blk].simulation_type) << ";" << endl
diff --git a/src/StaticModel.hh b/src/StaticModel.hh
index 127252b1e91b7225cf3abcf3b4355765b735ca54..7659456df364b76d006bfcdcca13643cbb0742ce 100644
--- a/src/StaticModel.hh
+++ b/src/StaticModel.hh
@@ -116,6 +116,9 @@ private:
      (failure can happen in normalization). */
   virtual bool computingPassBlock(const eval_context_t &eval_context, bool no_tmp_terms);
 
+  // Write the block structure of the model in the driver file
+  void writeBlockDriverOutput(ostream &output) const;
+
 protected:
   string
   modelClassName() const override