From 3c505caf6632619df297d4448fc68e987849f6c6 Mon Sep 17 00:00:00 2001 From: Nir Ekhauz Date: Sun, 6 Jun 2021 14:57:50 +0300 Subject: 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 --- scripts/run_platform.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'scripts/run_platform.py') 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 @@ def run_cmd(cmd, **kwargs): 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 @@ def main(): } 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 @@ def main(): 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) -- cgit v1.2.1