diff --git a/ethosu/vela/tflite/LogicalOrOptions.py b/ethosu/vela/tflite/LogicalOrOptions.py
index ae4b36b..b058a3b 100644
--- a/ethosu/vela/tflite/LogicalOrOptions.py
+++ b/ethosu/vela/tflite/LogicalOrOptions.py
@@ -3,18 +3,24 @@
 # namespace: tflite
 
 import flatbuffers
+from flatbuffers.compat import import_numpy
+np = import_numpy()
 
 class LogicalOrOptions(object):
     __slots__ = ['_tab']
 
     @classmethod
-    def GetRootAsLogicalOrOptions(cls, buf, offset):
+    def GetRootAs(cls, buf, offset=0):
         n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
         x = LogicalOrOptions()
         x.Init(buf, n + offset)
         return x
 
     @classmethod
+    def GetRootAsLogicalOrOptions(cls, buf, offset=0):
+        """This method is deprecated. Please switch to GetRootAs."""
+        return cls.GetRootAs(buf, offset)
+    @classmethod
     def LogicalOrOptionsBufferHasIdentifier(cls, buf, offset, size_prefixed=False):
         return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x54\x46\x4C\x33", size_prefixed=size_prefixed)
 
@@ -23,4 +29,8 @@
         self._tab = flatbuffers.table.Table(buf, pos)
 
 def LogicalOrOptionsStart(builder): builder.StartObject(0)
+def Start(builder):
+    return LogicalOrOptionsStart(builder)
 def LogicalOrOptionsEnd(builder): return builder.EndObject()
+def End(builder):
+    return LogicalOrOptionsEnd(builder)
\ No newline at end of file
