MLBEDSW-3251 Add version to external API

Added version to the external API
-Added CLI-option --api_version
-Added API function to get the API version

Signed-off-by: Patrik Gustavsson <patrik.gustavsson@arm.com>
Change-Id: I0143b50adf884a2b05145912a1c7bef8cecc5f02
diff --git a/ethosu/vela/api.py b/ethosu/vela/api.py
index 06de0d9..0799ab1 100644
--- a/ethosu/vela/api.py
+++ b/ethosu/vela/api.py
@@ -23,6 +23,10 @@
 from typing import Optional
 from typing import Tuple
 
+API_version_major = 1
+API_version_minor = 0
+api_version = f"{API_version_major}.{API_version_minor}"
+
 
 class NpuElementWiseOp(Enum):
     """
@@ -367,3 +371,13 @@
         self.reversed_operands: bool = False
         # Set to a tuple (scale, shift) for explicit rescale, else to None
         self.rescale: Optional[Tuple] = None
+
+
+def npu_get_API_version():
+    """
+    Public facing API to get the API version
+    :return: int, the 16 most significant bits, corresponding to major version
+            the 16 least significant bits, corresponding to minor version
+    """
+    version = (API_version_major << 16) | (API_version_minor & 0xFFFF)
+    return version
diff --git a/ethosu/vela/test/extapi/test_extapi_encode_bias.py b/ethosu/vela/test/extapi/test_extapi_encode_bias.py
index 59b8587..ffdd3b0 100644
--- a/ethosu/vela/test/extapi/test_extapi_encode_bias.py
+++ b/ethosu/vela/test/extapi/test_extapi_encode_bias.py
@@ -37,7 +37,3 @@
         biases_enc = encode_bias(bias, scale, shift)
         assert isinstance(biases_enc, bytearray)
         assert len(biases_enc) == 10
-
-
-if __name__ == "__main__":
-    test_encode_bias()
diff --git a/ethosu/vela/test/extapi/test_extapi_encode_weights.py b/ethosu/vela/test/extapi/test_extapi_encode_weights.py
index 356bbc1..0459cae 100644
--- a/ethosu/vela/test/extapi/test_extapi_encode_weights.py
+++ b/ethosu/vela/test/extapi/test_extapi_encode_weights.py
@@ -66,9 +66,3 @@
         block_traversal=block_traversal,
     )
     assert type(encoded_stream) == bytearray
-
-
-if __name__ == "__main__":
-    # two test candidates for debugging purposes
-    test_encode_weights(Accelerator.Ethos_U55_256, ((3, 3, 25, 16), 8), 1, 1, 8, 0)
-    test_encode_weights(Accelerator.Ethos_U55_256, ((16, 16, 16, 16), 8), 1, 1, 8, 0)
diff --git a/ethosu/vela/test/extapi/test_extapi_get_version.py b/ethosu/vela/test/extapi/test_extapi_get_version.py
new file mode 100644
index 0000000..3a6f25c
--- /dev/null
+++ b/ethosu/vela/test/extapi/test_extapi_get_version.py
@@ -0,0 +1,26 @@
+# Copyright (C) 2020 Arm Limited or its affiliates. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the License); you may
+# not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# Description:
+# Contains unit tests for get API version for an external consumer
+from ethosu.vela.api import api_version
+from ethosu.vela.api import npu_get_API_version
+
+
+def test_npu_get_API_version():
+    int_version = npu_get_API_version()
+    version_major = int_version >> 16
+    version_minor = 0xFFFF & int_version
+    assert api_version == f"{version_major}.{version_minor}"
diff --git a/ethosu/vela/vela.py b/ethosu/vela/vela.py
index 5df21f5..9f5c78c 100644
--- a/ethosu/vela/vela.py
+++ b/ethosu/vela/vela.py
@@ -31,6 +31,7 @@
 from . import stats_writer
 from . import tflite_writer
 from ._version import __version__
+from .api import api_version
 from .debug_database import DebugDatabase
 from .errors import InputFileError
 from .nn_graph import PassPlacement
@@ -190,6 +191,9 @@
     parser = argparse.ArgumentParser(prog="vela", description="Neural network model compiler for Ethos-U55")
     parser.add_argument("--version", action="version", version=__version__)
     parser.add_argument(
+        "--api-version", action="version", version=api_version, help="Displays the version of the external API."
+    )
+    parser.add_argument(
         "--supported-ops-report",
         action="store_true",
         help="Generate the SUPPORTED_OPS.md file in the current working directory and exits.",