MLBEDSW-3458: Added command stream size check.

If the command stream size exceeds a certain threshold,
a VelaError will now be raised.

Signed-off-by: erik.andersson@arm.com <erik.andersson@arm.com>
Change-Id: I9b9383f4c298a778b160cd527374e9244e4cae26
diff --git a/ethosu/vela/register_command_stream_generator.py b/ethosu/vela/register_command_stream_generator.py
index ad29dae..f925369 100644
--- a/ethosu/vela/register_command_stream_generator.py
+++ b/ethosu/vela/register_command_stream_generator.py
@@ -58,6 +58,7 @@
 from .architecture_features import create_default_arch
 from .architecture_features import SharedBufferArea
 from .architecture_features import SHRAMElements
+from .errors import VelaError
 from .ethos_u55_regs.ethos_u55_regs import acc_format
 from .ethos_u55_regs.ethos_u55_regs import activation
 from .ethos_u55_regs.ethos_u55_regs import cmd0
@@ -944,6 +945,13 @@
     # Fill in final part of command stream:
     emit.cmd_do_operation(cmd0.NPU_OP_STOP, param=0xFFFF)
     res = emit.to_list()
+
+    if emit.size_in_bytes() >= 1 << 24:
+        raise VelaError(
+            f"The command stream size exceeds the hardware limit of 16 MiB. "
+            f"The current stream size is {emit.size_in_bytes()/2**20:.2F} MiB."
+        )
+
     if verbose:
         emit.print_cmds()
         print("number of commands", len(emit.cmd_stream))