diff --git a/CMakeLists.txt b/CMakeLists.txt
index 523bcaa..d18105d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -72,7 +72,7 @@
     sse-300
     STRING)
 
-USER_OPTION(ETHOS_U_NPU_ENABLED "Select if Ethos-U55 is available for the platform and subsystem"
+USER_OPTION(ETHOS_U_NPU_ENABLED "Select if Ethos-U NPU is available for the platform and subsystem"
     ON
     BOOL)
 
@@ -166,15 +166,15 @@
 # If we need NPU libraries:
 if (ETHOS_U_NPU_ENABLED)
 
-    message(STATUS "Using ARM Ethos-U55 - adding core-driver and timing-adapter-driver includes and libraries")
+    message(STATUS "Using ARM Ethos-U NPU - adding core-driver and timing-adapter-driver includes and libraries")
     USER_OPTION(ETHOS_U_NPU_TIMING_ADAPTER_SRC_PATH
-        "Path to Ethos-U55 timing adapter sources"
+        "Path to Ethos-U NPU timing adapter sources"
         "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/core-software/drivers/timing_adapter"
         PATH
         )
 
     USER_OPTION(ETHOS_U_NPU_DRIVER_SRC_PATH
-        "Path to Ethos-U55 core driver sources"
+        "Path to Ethos-U NPU core driver sources"
         "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/core-driver"
         PATH
         )
diff --git a/build_default.py b/build_default.py
index b863c51..b642b80 100755
--- a/build_default.py
+++ b/build_default.py
@@ -23,10 +23,16 @@
 import sys
 from argparse import ArgumentParser
 
-from set_up_default_resources import set_up_resources
+from set_up_default_resources import set_up_resources, \
+                                     get_default_npu_config_from_name, \
+                                     valid_npu_config_names, \
+                                     default_npu_config_names
 
 
-def run(toolchain: str, download_resources: bool, run_vela_on_models: bool):
+def run(toolchain: str,
+        download_resources: bool,
+        run_vela_on_models: bool,
+        npu_config_name: str):
     """
     Run the helpers scripts.
 
@@ -35,13 +41,15 @@
     toolchain (str)          :    Specifies if 'gnu' or 'arm' toolchain needs to be used.
     download_resources (bool):    Specifies if 'Download resources' step is performed.
     run_vela_on_models (bool):    Only if `download_resources` is True, specifies if run vela on downloaded models.
+    npu_config_name(str)     :    Ethos-U NPU configuration name. See "valid_npu_config_names"
     """
 
     current_file_dir = os.path.dirname(os.path.abspath(__file__))
 
     # 1. Make sure the toolchain is supported, and set the right one here
     supported_toolchain_ids = ["gnu", "arm"]
-    assert toolchain in supported_toolchain_ids, f"Toolchain must be from {supported_toolchain_ids}"
+    assert (toolchain in supported_toolchain_ids,
+        f"Toolchain must be from {supported_toolchain_ids}")
     if toolchain == "arm":
         toolchain_file_name = "bare-metal-armclang.cmake"
     elif toolchain == "gnu":
@@ -50,14 +58,16 @@
     # 2. Download models if specified
     if download_resources is True:
         logging.info("Downloading resources.")
-        set_up_resources(run_vela_on_models)
+        set_up_resources(run_vela_on_models=run_vela_on_models,
+                         additional_npu_config_names=[npu_config_name])
 
     # 3. Build default configuration
     logging.info("Building default configuration.")
     target_platform = "mps3"
     target_subsystem = "sse-300"
+    ethos_u_cfg = get_default_npu_config_from_name(npu_config_name)
     build_dir = os.path.join(current_file_dir,
-        f"cmake-build-{target_platform}-{target_subsystem}-{toolchain}-release")
+        f"cmake-build-{target_platform}-{target_subsystem}-{npu_config_name}-{toolchain}")
     try:
         os.mkdir(build_dir)
     except FileExistsError:
@@ -75,17 +85,21 @@
     os.chdir(build_dir)
     cmake_toolchain_file = os.path.join(current_file_dir, "scripts", "cmake",
                                         "toolchains", toolchain_file_name)
-    cmake_command = (f"cmake .. -DTARGET_PLATFORM={target_platform} " +
-                     f"-DTARGET_SUBSYSTEM={target_subsystem} " +
-                     f" -DCMAKE_TOOLCHAIN_FILE={cmake_toolchain_file}")
+    cmake_command = (f"cmake .. -DTARGET_PLATFORM={target_platform}" +
+                     f" -DTARGET_SUBSYSTEM={target_subsystem}" +
+                     f" -DCMAKE_TOOLCHAIN_FILE={cmake_toolchain_file}" +
+                     f" -DETHOS_U_NPU_ID={ethos_u_cfg.ethos_u_npu_id}" +
+                     f" -DETHOS_U_NPU_CONFIG_ID={ethos_u_cfg.ethos_u_config_id}")
 
     logging.info(cmake_command)
-    state = subprocess.run(cmake_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+    state = subprocess.run(cmake_command, shell=True, stdout=subprocess.PIPE,
+                           stderr=subprocess.STDOUT)
     logging.info(state.stdout.decode('utf-8'))
 
     make_command = f"make -j{multiprocessing.cpu_count()}"
     logging.info(make_command)
-    state = subprocess.run(make_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+    state = subprocess.run(make_command, shell=True, stdout=subprocess.PIPE,
+                           stderr=subprocess.STDOUT)
     logging.info(state.stdout.decode('utf-8'))
 
 
@@ -102,9 +116,17 @@
     parser.add_argument("--skip-vela",
                         help="Do not run Vela optimizer on downloaded models.",
                         action="store_true")
+    parser.add_argument("--npu-config-name",
+                        help=f"""Arm Ethos-U configuration to build for. Choose from:
+                        {valid_npu_config_names}""",
+                        default=default_npu_config_names[0])
     args = parser.parse_args()
 
-    logging.basicConfig(filename='log_build_default.log', level=logging.DEBUG, filemode='w')
+    logging.basicConfig(filename='log_build_default.log', level=logging.DEBUG,
+                        filemode='w')
     logging.getLogger().addHandler(logging.StreamHandler(sys.stdout))
 
-    run(args.toolchain.lower(), not args.skip_download, not args.skip_vela)
+    run(args.toolchain.lower(),
+        not args.skip_download,
+        not args.skip_vela,
+        args.npu_config_name)
diff --git a/docs/sections/building.md b/docs/sections/building.md
index 3adaa72..f2911a8 100644
--- a/docs/sections/building.md
+++ b/docs/sections/building.md
@@ -164,6 +164,18 @@
   >**Note:** The `Shared_Sram` memory mode is available on both *Ethos-U55* and *Ethos-U65* NPU, `Dedicated_Sram` only
   > for *Ethos-U65* NPU and `Sram_Only` only for Ethos-U55* NPU.
 
+- `ETHOS_U_NPU_CONFIG_ID`: This parameter is set by default based on the value of `ETHOS_U_NPU_ID`.
+For Ethos-U55, it defaults to the `H128` indicating that the Ethos-U55 128 MAC optimised model
+should be used. For Ethos-U65, it defaults to `Y256` instead. However, the user can override these
+defaults to a configuration ID from `H32`, `H64`, `H256` and `Y512`.
+
+  > **Note:** This ID is only used to choose which tflite file path is to be used by the CMake
+configuration for all the use cases. If the user has overridden use-case specific model path
+parameter `ETHOS_U_NPU_CONFIG_ID` parameter will become irrelevant for that use-case. Also, the
+model files for the chosen `ETHOS_U_NPU_CONFIG_ID` are expected to exist in the default locations.
+See [Fetching resource files](#fetching-resource-files) for details on how to do this for your
+chosen configuration.
+
 - `CPU_PROFILE_ENABLED`: Sets whether profiling information for the CPU core should be displayed. By default, this is
   set to false, but can be turned on for FPGA targets. The the FVP and the CPU core cycle counts are not meaningful and
   are not to be used.
@@ -284,6 +296,17 @@
 > **Note:** This script requires Python version 3.6 or higher. Please make sure all [build prerequisites](#build-prerequisites)
 > are satisfied.
 
+If you need to optimize the models for a different Ethos-U configuration, you can pass a
+list of additional configurations for Vela compiler. For example, to optimize the downloaded models
+for *Ethos™-U55* 32 MAC configuration and *Ethos™-U65* 512 MAC configuration, you can choose to run:
+
+```sh
+python3 ./set_up_default_resources.py \
+  --additional-ethos-u-config-name ethos-u55-32 \
+  --additional-ethos-u-config-name ethos-u65-512
+```
+> **Note:** As the argument name suggests, the configuration names are **in addition to** the default ones: `ethos-u55-128` and `ethosu-u65-256`.
+
 ### Building for default configuration
 
 A helper script `build_default.py` is provided to configure and build all the applications. It configures the project
@@ -306,6 +329,20 @@
 
 - `--skip-download`: Do not download resources: models and test vectors
 - `--skip-vela`: Do not run Vela optimizer on downloaded models.
+- `--npu-config-name`: Arm Ethos-U configuration to build for. The default value is
+    `ethos-u55-128`. Valid values are:
+    - `ethos-u55-32`
+    - `ethos-u55-64`
+    - `ethos-u55-128`
+    - `ethos-u55-256`
+    - `ethos-u65-256`
+    - `ethos-u65-512`
+
+To build for *Ethos™-U55* 32 MAC configuration, using `Arm Compiler`, run:
+
+```commandline
+./build_default.py --npu-config-name ethos-u55-32 --toolchain arm
+```
 
 ### Create a build directory
 
diff --git a/scripts/cmake/bare-metal-sources.cmake b/scripts/cmake/bare-metal-sources.cmake
index 3fe9b1b..c797d5f 100644
--- a/scripts/cmake/bare-metal-sources.cmake
+++ b/scripts/cmake/bare-metal-sources.cmake
@@ -60,6 +60,10 @@
         "${DEFAULT_NPU_MEM_MODE}"
         STRING)
 
+    USER_OPTION(ETHOS_U_NPU_CONFIG_ID "Specifies the configuration ID for the NPU."
+        "${DEFAULT_NPU_CONFIG_ID}"
+        STRING)
+
     if (ETHOS_U_NPU_MEMORY_MODE STREQUAL Sram_Only)
 
         if (ETHOS_U_NPU_ID STREQUAL U55)
diff --git a/scripts/cmake/toolchains/bare-metal-armclang.cmake b/scripts/cmake/toolchains/bare-metal-armclang.cmake
index d07aa9e..c1f066b 100644
--- a/scripts/cmake/toolchains/bare-metal-armclang.cmake
+++ b/scripts/cmake/toolchains/bare-metal-armclang.cmake
@@ -43,7 +43,7 @@
     set(FLOAT_ABI                   hard)
     set(ARM_MATH_DSP                1)
     set(ARM_MATH_LOOPUNROLL         1)
-    set(CPU_LINK_OPT                "--cpu=8.1-M.Main.dsp")
+    set(CPU_LINK_OPT                "--cpu=Cortex-M55")
 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL cortex-m33)
     # Flags for cortex-m33 to go here
 endif()
diff --git a/set_up_default_resources.py b/set_up_default_resources.py
index 3fb2c8a..6c65ee1 100755
--- a/set_up_default_resources.py
+++ b/set_up_default_resources.py
@@ -24,6 +24,8 @@
 
 from argparse import ArgumentParser
 from urllib.error import URLError
+from collections import namedtuple
+
 
 json_uc_res = [{
     "use_case_name": "ad",
@@ -92,6 +94,22 @@
                       ]
     },]
 
+# Valid NPU configurations:
+valid_npu_config_names = [
+        'ethos-u55-32', 'ethos-u55-64',
+        'ethos-u55-128', 'ethos-u55-256',
+        'ethos-u65-256','ethos-u65-512']
+
+# Default NPU configurations (these are always run when the models are optimised)
+default_npu_config_names = [valid_npu_config_names[2], valid_npu_config_names[4]]
+
+# NPU config named tuple
+NPUConfig = namedtuple('NPUConfig',['config_name',
+                                    'memory_mode',
+                                    'system_config',
+                                    'ethos_u_npu_id',
+                                    'ethos_u_config_id'])
+
 
 def call_command(command: str) -> str:
     """
@@ -112,13 +130,52 @@
     return log
 
 
-def set_up_resources(run_vela_on_models=False):
+def get_default_npu_config_from_name(config_name: str) -> NPUConfig:
+    """
+    Gets the file suffix for the tflite file from the
+    `accelerator_config` string.
+
+    Parameters:
+    ----------
+    config_name (str):   Ethos-U NPU configuration from valid_npu_config_names
+
+    Returns:
+    -------
+    NPUConfig: An NPU config named tuple populated with defaults for the given
+               config name
+    """
+    if config_name not in valid_npu_config_names:
+        raise ValueError(f"""
+            Invalid Ethos-U NPU configuration.
+            Select one from {valid_npu_config_names}.
+            """)
+
+    strings_ids = ["ethos-u55-", "ethos-u65-"]
+    processor_ids = ["U55", "U65"]
+    prefix_ids = ["H", "Y"]
+    memory_modes = ["Shared_Sram", "Dedicated_Sram"]
+    system_configs = ["Ethos_U55_High_End_Embedded", "Ethos_U65_High_End"]
+
+    for i in range(len(strings_ids)):
+        if config_name.startswith(strings_ids[i]):
+            npu_config_id = config_name.replace(strings_ids[i], prefix_ids[i])
+            return  NPUConfig(config_name=config_name,
+                              memory_mode=memory_modes[i],
+                              system_config=system_configs[i],
+                              ethos_u_npu_id=processor_ids[i],
+                              ethos_u_config_id=npu_config_id)
+
+    return None
+
+
+def set_up_resources(run_vela_on_models=False, additional_npu_config_names=[]):
     """
     Helpers function that retrieve the output from a command.
 
     Parameters:
     ----------
     run_vela_on_models (bool):    Specifies if run vela on downloaded models.
+    additional_npu_config_names(list): list of strings of Ethos-U NPU configs.
     """
     current_file_dir = os.path.dirname(os.path.abspath(__file__))
     download_dir = os.path.abspath(os.path.join(current_file_dir, "resources_downloaded"))
@@ -210,38 +267,41 @@
                   for dirpath, dirnames, files in os.walk(download_dir)
                   for f in fnmatch.filter(files, '*.tflite') if "vela" not in f]
 
+        # Consolidate all config names while discarding duplicates:
+        config_names = list(set(default_npu_config_names + additional_npu_config_names))
+
+        # Get npu config tuple for each config name in a list:
+        npu_configs = [get_default_npu_config_from_name(name) for name in config_names]
+
+        logging.info(f'All models will be optimised for these configs:')
+        for config in npu_configs:
+            logging.info(config)
+
         for model in models:
             output_dir = os.path.dirname(model)
             # model name after compiling with vela is an initial model name + _vela suffix
             vela_optimised_model_path = str(model).replace(".tflite", "_vela.tflite")
 
-            # Ethos-U NPU default generation
-            vela_opt_suffixes = ["_vela_H128.tflite", "_vela_Y256.tflite"]
-            vela_commands = [f". {env_activate} && vela {model} " +
-                       "--accelerator-config=ethos-u55-128 " +
+            for config in npu_configs:
+                vela_command = (f". {env_activate} && vela {model} " +
+                       f"--accelerator-config={config.config_name} " +
                        "--optimise Performance " +
                        f"--config {config_file} " +
-                       "--memory-mode=Shared_Sram " +
-                       "--system-config=Ethos_U55_High_End_Embedded " +
-                       f"--output-dir={output_dir}",
+                       f"--memory-mode={config.memory_mode} " +
+                       f"--system-config={config.system_config} " +
+                       f"--output-dir={output_dir}")
 
-                       f". {env_activate} && vela {model} " +
-                       "--accelerator-config=ethos-u65-256 " +
-                       "--optimise Performance " +
-                       f"--config {config_file} " +
-                       "--memory-mode=Dedicated_Sram " +
-                       "--system-config=Ethos_U65_High_End " +
-                       f"--output-dir={output_dir}"]
-
-            for vela_suffix, command in zip(vela_opt_suffixes, vela_commands):
-                # we want it to be initial model name + _vela_H128 suffix which indicates selected MACs config.
-                new_vela_optimised_model_path = vela_optimised_model_path.replace("_vela.tflite", vela_suffix)
+                # we want the name to include the configuration suffix. For example: vela_H128,
+                # vela_Y512 etc.
+                new_suffix = "_vela_" + config.ethos_u_config_id + '.tflite'
+                new_vela_optimised_model_path = (
+                    vela_optimised_model_path.replace("_vela.tflite", new_suffix))
 
                 if os.path.isfile(new_vela_optimised_model_path):
                     logging.info(f"File {new_vela_optimised_model_path} exists, skipping optimisation.")
                     continue
 
-                call_command(command)
+                call_command(vela_command)
 
                 # rename default vela model
                 os.rename(vela_optimised_model_path, new_vela_optimised_model_path)
@@ -253,9 +313,13 @@
     parser.add_argument("--skip-vela",
                         help="Do not run Vela optimizer on downloaded models.",
                         action="store_true")
+    parser.add_argument("--additional-ethos-u-config-name",
+                        help=f"""Additional (non-default) configurations for Vela:
+                        {valid_npu_config_names}""",
+                        default=[], action="append")
     args = parser.parse_args()
 
     logging.basicConfig(filename='log_build_default.log', level=logging.DEBUG)
     logging.getLogger().addHandler(logging.StreamHandler(sys.stdout))
 
-    set_up_resources(not args.skip_vela)
+    set_up_resources(not args.skip_vela, args.additional_ethos_u_config_name)
diff --git a/source/use_case/ad/usecase.cmake b/source/use_case/ad/usecase.cmake
index 9ddf66e..23b4c32 100644
--- a/source/use_case/ad/usecase.cmake
+++ b/source/use_case/ad/usecase.cmake
@@ -61,7 +61,7 @@
         STRING)
 
 if (ETHOS_U_NPU_ENABLED)
-    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/ad_medium_int8_vela_${DEFAULT_NPU_CONFIG_ID}.tflite)
+    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/ad_medium_int8_vela_${ETHOS_U_NPU_CONFIG_ID}.tflite)
 else()
     set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/ad_medium_int8.tflite)
 endif()
diff --git a/source/use_case/asr/usecase.cmake b/source/use_case/asr/usecase.cmake
index 60fc132..89a131e 100644
--- a/source/use_case/asr/usecase.cmake
+++ b/source/use_case/asr/usecase.cmake
@@ -75,7 +75,7 @@
     STRING)
 
 if (ETHOS_U_NPU_ENABLED)
-    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/wav2letter_pruned_int8_vela_${DEFAULT_NPU_CONFIG_ID}.tflite)
+    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/wav2letter_pruned_int8_vela_${ETHOS_U_NPU_CONFIG_ID}.tflite)
 else()
     set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/wav2letter_pruned_int8.tflite)
 endif()
diff --git a/source/use_case/img_class/usecase.cmake b/source/use_case/img_class/usecase.cmake
index 441a346..dafdbbf 100644
--- a/source/use_case/img_class/usecase.cmake
+++ b/source/use_case/img_class/usecase.cmake
@@ -47,7 +47,7 @@
     STRING)
 
 if (ETHOS_U_NPU_ENABLED)
-    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/mobilenet_v2_1.0_224_INT8_vela_${DEFAULT_NPU_CONFIG_ID}.tflite)
+    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/mobilenet_v2_1.0_224_INT8_vela_${ETHOS_U_NPU_CONFIG_ID}.tflite)
 else()
     set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/mobilenet_v2_1.0_224_INT8.tflite)
 endif()
diff --git a/source/use_case/inference_runner/usecase.cmake b/source/use_case/inference_runner/usecase.cmake
index 7f9c74f..7d12120 100644
--- a/source/use_case/inference_runner/usecase.cmake
+++ b/source/use_case/inference_runner/usecase.cmake
@@ -22,7 +22,7 @@
 generate_default_input_code(${INC_GEN_DIR})
 
 if (ETHOS_U_NPU_ENABLED)
-    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/dnn_s_quantized_vela_${DEFAULT_NPU_CONFIG_ID}.tflite)
+    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/dnn_s_quantized_vela_${ETHOS_U_NPU_CONFIG_ID}.tflite)
 else()
     set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/dnn_s_quantized.tflite)
 endif()
diff --git a/source/use_case/kws/usecase.cmake b/source/use_case/kws/usecase.cmake
index bd54cea..34e39e4 100644
--- a/source/use_case/kws/usecase.cmake
+++ b/source/use_case/kws/usecase.cmake
@@ -74,7 +74,7 @@
     STRING)
 
 if (ETHOS_U_NPU_ENABLED)
-    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/ds_cnn_clustered_int8_vela_${DEFAULT_NPU_CONFIG_ID}.tflite)
+    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/ds_cnn_clustered_int8_vela_${ETHOS_U_NPU_CONFIG_ID}.tflite)
 else()
     set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/ds_cnn_clustered_int8.tflite)
 endif()
diff --git a/source/use_case/kws_asr/usecase.cmake b/source/use_case/kws_asr/usecase.cmake
index e9b9150..5b179c6 100644
--- a/source/use_case/kws_asr/usecase.cmake
+++ b/source/use_case/kws_asr/usecase.cmake
@@ -67,8 +67,8 @@
     STRING)
 
 if (ETHOS_U_NPU_ENABLED)
-    set(DEFAULT_MODEL_PATH_KWS      ${DEFAULT_MODEL_DIR}/ds_cnn_clustered_int8_vela_${DEFAULT_NPU_CONFIG_ID}.tflite)
-    set(DEFAULT_MODEL_PATH_ASR      ${DEFAULT_MODEL_DIR}/wav2letter_pruned_int8_vela_${DEFAULT_NPU_CONFIG_ID}.tflite)
+    set(DEFAULT_MODEL_PATH_KWS      ${DEFAULT_MODEL_DIR}/ds_cnn_clustered_int8_vela_${ETHOS_U_NPU_CONFIG_ID}.tflite)
+    set(DEFAULT_MODEL_PATH_ASR      ${DEFAULT_MODEL_DIR}/wav2letter_pruned_int8_vela_${ETHOS_U_NPU_CONFIG_ID}.tflite)
 else()
     set(DEFAULT_MODEL_PATH_KWS      ${DEFAULT_MODEL_DIR}/ds_cnn_clustered_int8.tflite)
     set(DEFAULT_MODEL_PATH_ASR      ${DEFAULT_MODEL_DIR}/wav2letter_pruned_int8.tflite)
diff --git a/source/use_case/vww/usecase.cmake b/source/use_case/vww/usecase.cmake
index 4005297..8bf55fc 100644
--- a/source/use_case/vww/usecase.cmake
+++ b/source/use_case/vww/usecase.cmake
@@ -31,7 +31,7 @@
     STRING)
 
 if (ETHOS_U_NPU_ENABLED)
-    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/vww4_128_128_INT8_vela_${DEFAULT_NPU_CONFIG_ID}.tflite)
+    set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/vww4_128_128_INT8_vela_${ETHOS_U_NPU_CONFIG_ID}.tflite)
 else()
     set(DEFAULT_MODEL_PATH      ${DEFAULT_MODEL_DIR}/vww4_128_128_INT8.tflite)
 endif()
