diff --git a/include/tosa_generated.h b/include/tosa_generated.h
index b07fa8f..a81ff9c 100644
--- a/include/tosa_generated.h
+++ b/include/tosa_generated.h
@@ -2230,7 +2230,8 @@
     VT_TYPE = 8,
     VT_DATA = 10,
     VT_VARIABLE = 12,
-    VT_IS_UNRANKED = 14
+    VT_IS_UNRANKED = 14,
+    VT_VARIABLE_NAME = 16
   };
   const ::flatbuffers::String *name() const {
     return GetPointer<const ::flatbuffers::String *>(VT_NAME);
@@ -2250,6 +2251,9 @@
   bool is_unranked() const {
     return GetField<uint8_t>(VT_IS_UNRANKED, 0) != 0;
   }
+  const ::flatbuffers::String *variable_name() const {
+    return GetPointer<const ::flatbuffers::String *>(VT_VARIABLE_NAME);
+  }
   bool Verify(::flatbuffers::Verifier &verifier) const {
     return VerifyTableStart(verifier) &&
            VerifyOffset(verifier, VT_NAME) &&
@@ -2261,6 +2265,8 @@
            verifier.VerifyVector(data()) &&
            VerifyField<uint8_t>(verifier, VT_VARIABLE, 1) &&
            VerifyField<uint8_t>(verifier, VT_IS_UNRANKED, 1) &&
+           VerifyOffset(verifier, VT_VARIABLE_NAME) &&
+           verifier.VerifyString(variable_name()) &&
            verifier.EndTable();
   }
 };
@@ -2287,6 +2293,9 @@
   void add_is_unranked(bool is_unranked) {
     fbb_.AddElement<uint8_t>(TosaTensor::VT_IS_UNRANKED, static_cast<uint8_t>(is_unranked), 0);
   }
+  void add_variable_name(::flatbuffers::Offset<::flatbuffers::String> variable_name) {
+    fbb_.AddOffset(TosaTensor::VT_VARIABLE_NAME, variable_name);
+  }
   explicit TosaTensorBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
         : fbb_(_fbb) {
     start_ = fbb_.StartTable();
@@ -2305,8 +2314,10 @@
     tosa::DType type = tosa::DType_UNKNOWN,
     ::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> data = 0,
     bool variable = false,
-    bool is_unranked = false) {
+    bool is_unranked = false,
+    ::flatbuffers::Offset<::flatbuffers::String> variable_name = 0) {
   TosaTensorBuilder builder_(_fbb);
+  builder_.add_variable_name(variable_name);
   builder_.add_data(data);
   builder_.add_type(type);
   builder_.add_shape(shape);
@@ -2323,11 +2334,13 @@
     tosa::DType type = tosa::DType_UNKNOWN,
     const std::vector<uint8_t> *data = nullptr,
     bool variable = false,
-    bool is_unranked = false) {
+    bool is_unranked = false,
+    const char *variable_name = nullptr) {
   auto name__ = name ? _fbb.CreateString(name) : 0;
   auto shape__ = shape ? _fbb.CreateVector<int32_t>(*shape) : 0;
   if (data) { _fbb.ForceVectorAlignment(data->size(), sizeof(uint8_t), 8); }
   auto data__ = data ? _fbb.CreateVector<uint8_t>(*data) : 0;
+  auto variable_name__ = variable_name ? _fbb.CreateString(variable_name) : 0;
   return tosa::CreateTosaTensor(
       _fbb,
       name__,
@@ -2335,7 +2348,8 @@
       type,
       data__,
       variable,
-      is_unranked);
+      is_unranked,
+      variable_name__);
 }
 
 struct TosaOperator FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
