Add memory area to run_platform.py

Control the placement of the model and the arena for baremetal application
in SRAM/DRAM by 4 configurable options:
a. Model in SRAM and Arena in SRAM
b. Model in SRAM and Arena in DRAM
c. Model in DRAM and Arena in DRAM w/o Scratch buffer
d. Model in DRAM and Arena in DRAM with Scratch buffer in SRAM

Change-Id: Ia154be8a1c88cb13aeee62e701c2db7719a9d71c
diff --git a/scripts/run_platform.py b/scripts/run_platform.py
index a084faa..bb2f06f 100755
--- a/scripts/run_platform.py
+++ b/scripts/run_platform.py
@@ -39,14 +39,15 @@
     print(f"Running command: {cmd_str}")
     return subprocess.run(cmd, check=True, **kwargs)
 
-
-def build_core_platform(output_folder, target, toolchain, pmu):
+def build_core_platform(output_folder, target, toolchain, memory_model, memory_arena, pmu):
     build_folder = output_folder/"model"/"build"
     cmake_cmd = ["cmake",
                  CORE_PLATFORM_PATH/"targets"/target,
                  f"-B{build_folder}",
                  f"-DCMAKE_TOOLCHAIN_FILE={CORE_PLATFORM_PATH/'cmake'/'toolchain'/(toolchain + '.cmake')}",
-                 f"-DBAREMETAL_PATH={output_folder}"]
+                 f"-DBAREMETAL_PATH={output_folder}",
+                 f"-DMEMORY_MODEL={memory_model}",
+                 f"-DMEMORY_ARENA={memory_arena}"]
     if pmu:
         for i in range(len(pmu)):
             cmake_cmd += [f"-DETHOSU_PMU_EVENT_{i}={pmu[i]}"]
@@ -141,10 +142,12 @@
     }
     parser = argparse.ArgumentParser()
     parser.add_argument("-o", "--output-folder", type=pathlib.Path, default="output", help="Output folder for build and generated files")
-    parser.add_argument("--pmu", type=int, action='append', help="PMU Event Counters")
     parser.add_argument("--network-path", type=pathlib.Path, required=True, help="Path to .tflite file")
     parser.add_argument("--target", choices=target_mapping, default="corstone-300", help=f"Configure target")
     parser.add_argument("--toolchain", choices=["armclang", "arm-none-eabi-gcc"], default="armclang", help=f"Configure toolchain")
+    parser.add_argument("--memory_model", choices=["sram", "dram"], default="dram", help=f"Configure memory_model")
+    parser.add_argument("--memory_arena", choices=["sram", "dram"], default="sram", help=f"Configure memory_arena")
+    parser.add_argument("--pmu", type=int, action='append', help="PMU Event Counters")
     parser.add_argument("--custom-input", type=pathlib.Path, help="Custom input to network")
     parser.add_argument("--custom-output", type=pathlib.Path, help="Custom expected output data for network")
 
@@ -154,7 +157,7 @@
     try:
         optimize_network(args.output_folder, args.network_path, target_mapping[args.target])
         generate_reference_data(args.output_folder, args.network_path, args.custom_input, args.custom_output)
-        build_core_platform(args.output_folder, args.target, args.toolchain, args.pmu)
+        build_core_platform(args.output_folder, args.target, args.toolchain, args.memory_model, args.memory_arena, args.pmu)
         run_model(args.output_folder)
     except subprocess.CalledProcessError as err:
         print(f"Command: '{err.cmd}' failed", file=sys.stderr)