mlonmcu 0.3.0.dev0__3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mlonmcu/__init__.py +26 -0
- mlonmcu/artifact.py +172 -0
- mlonmcu/cli/__init__.py +19 -0
- mlonmcu/cli/build.py +119 -0
- mlonmcu/cli/cleanup.py +75 -0
- mlonmcu/cli/common.py +227 -0
- mlonmcu/cli/compile.py +87 -0
- mlonmcu/cli/env.py +68 -0
- mlonmcu/cli/export.py +93 -0
- mlonmcu/cli/flow.py +67 -0
- mlonmcu/cli/helper/__init__.py +18 -0
- mlonmcu/cli/helper/filter.py +25 -0
- mlonmcu/cli/helper/parse.py +159 -0
- mlonmcu/cli/init.py +130 -0
- mlonmcu/cli/load.py +87 -0
- mlonmcu/cli/main.py +116 -0
- mlonmcu/cli/models.py +48 -0
- mlonmcu/cli/run.py +56 -0
- mlonmcu/cli/setup.py +136 -0
- mlonmcu/cli/tune.py +48 -0
- mlonmcu/config.py +219 -0
- mlonmcu/context/__init__.py +22 -0
- mlonmcu/context/context.py +545 -0
- mlonmcu/context/read_write_filelock.py +327 -0
- mlonmcu/environment/__init__.py +18 -0
- mlonmcu/environment/config.py +214 -0
- mlonmcu/environment/environment.py +501 -0
- mlonmcu/environment/init.py +191 -0
- mlonmcu/environment/list.py +81 -0
- mlonmcu/environment/loader.py +250 -0
- mlonmcu/environment/templates.py +69 -0
- mlonmcu/environment/writer.py +117 -0
- mlonmcu/feature/__init__.py +18 -0
- mlonmcu/feature/feature.py +230 -0
- mlonmcu/feature/features.py +1537 -0
- mlonmcu/feature/type.py +33 -0
- mlonmcu/flow/__init__.py +61 -0
- mlonmcu/flow/backend.py +234 -0
- mlonmcu/flow/framework.py +69 -0
- mlonmcu/flow/tflm/__init__.py +23 -0
- mlonmcu/flow/tflm/backend/__init__.py +23 -0
- mlonmcu/flow/tflm/backend/backend.py +47 -0
- mlonmcu/flow/tflm/backend/tflmc.py +129 -0
- mlonmcu/flow/tflm/backend/tflmi.py +385 -0
- mlonmcu/flow/tflm/framework.py +81 -0
- mlonmcu/flow/tvm/__init__.py +23 -0
- mlonmcu/flow/tvm/backend/__init__.py +26 -0
- mlonmcu/flow/tvm/backend/backend.py +282 -0
- mlonmcu/flow/tvm/backend/model_info.py +307 -0
- mlonmcu/flow/tvm/backend/python_utils.py +36 -0
- mlonmcu/flow/tvm/backend/tuner.py +41 -0
- mlonmcu/flow/tvm/backend/tvmaot.py +162 -0
- mlonmcu/flow/tvm/backend/tvmaotplus.py +51 -0
- mlonmcu/flow/tvm/backend/tvmc_utils.py +172 -0
- mlonmcu/flow/tvm/backend/tvmcg.py +102 -0
- mlonmcu/flow/tvm/backend/tvmllvm.py +106 -0
- mlonmcu/flow/tvm/backend/tvmrt.py +151 -0
- mlonmcu/flow/tvm/backend/wrapper.py +645 -0
- mlonmcu/flow/tvm/framework.py +96 -0
- mlonmcu/logging.py +79 -0
- mlonmcu/mlonmcu.py +19 -0
- mlonmcu/models/__init__.py +31 -0
- mlonmcu/models/convert_data.py +107 -0
- mlonmcu/models/frontend.py +571 -0
- mlonmcu/models/group.py +29 -0
- mlonmcu/models/lookup.py +345 -0
- mlonmcu/models/metadata.py +133 -0
- mlonmcu/models/model.py +104 -0
- mlonmcu/models/options.py +64 -0
- mlonmcu/models/utils.py +136 -0
- mlonmcu/platform/__init__.py +27 -0
- mlonmcu/platform/_platform.py +46 -0
- mlonmcu/platform/espidf/__init__.py +25 -0
- mlonmcu/platform/espidf/espidf.py +489 -0
- mlonmcu/platform/espidf/espidf_target.py +257 -0
- mlonmcu/platform/lookup.py +126 -0
- mlonmcu/platform/microtvm/__init__.py +25 -0
- mlonmcu/platform/microtvm/microtvm.py +580 -0
- mlonmcu/platform/microtvm/microtvm_arduino_target.py +68 -0
- mlonmcu/platform/microtvm/microtvm_backend.py +64 -0
- mlonmcu/platform/microtvm/microtvm_espidf_target.py +94 -0
- mlonmcu/platform/microtvm/microtvm_etissvp_target.py +98 -0
- mlonmcu/platform/microtvm/microtvm_host_target.py +46 -0
- mlonmcu/platform/microtvm/microtvm_spike_target.py +230 -0
- mlonmcu/platform/microtvm/microtvm_target.py +189 -0
- mlonmcu/platform/microtvm/microtvm_template_target.py +55 -0
- mlonmcu/platform/microtvm/microtvm_zephyr_target.py +91 -0
- mlonmcu/platform/mlif/__init__.py +25 -0
- mlonmcu/platform/mlif/mlif.py +300 -0
- mlonmcu/platform/mlif/mlif_target.py +86 -0
- mlonmcu/platform/platform.py +244 -0
- mlonmcu/platform/tvm/__init__.py +25 -0
- mlonmcu/platform/tvm/tvm.py +429 -0
- mlonmcu/platform/tvm/tvm_backend.py +57 -0
- mlonmcu/platform/tvm/tvm_target.py +165 -0
- mlonmcu/platform/zephyr/__init__.py +25 -0
- mlonmcu/platform/zephyr/zephyr.py +450 -0
- mlonmcu/platform/zephyr/zephyr_target.py +110 -0
- mlonmcu/plugins.py +26 -0
- mlonmcu/report.py +99 -0
- mlonmcu/session/__init__.py +18 -0
- mlonmcu/session/postprocess/__init__.py +43 -0
- mlonmcu/session/postprocess/postprocess.py +62 -0
- mlonmcu/session/postprocess/postprocesses.py +487 -0
- mlonmcu/session/run.py +1008 -0
- mlonmcu/session/session.py +373 -0
- mlonmcu/setup/__init__.py +18 -0
- mlonmcu/setup/cache.py +147 -0
- mlonmcu/setup/gen_requirements.py +619 -0
- mlonmcu/setup/setup.py +285 -0
- mlonmcu/setup/task.py +380 -0
- mlonmcu/setup/tasks/__init__.py +40 -0
- mlonmcu/setup/tasks/arm_gcc.py +58 -0
- mlonmcu/setup/tasks/cmsisnn.py +151 -0
- mlonmcu/setup/tasks/common.py +36 -0
- mlonmcu/setup/tasks/corstone300.py +64 -0
- mlonmcu/setup/tasks/espidf.py +87 -0
- mlonmcu/setup/tasks/etiss.py +147 -0
- mlonmcu/setup/tasks/llvm.py +67 -0
- mlonmcu/setup/tasks/mlif.py +49 -0
- mlonmcu/setup/tasks/muriscvnn.py +166 -0
- mlonmcu/setup/tasks/pulp.py +192 -0
- mlonmcu/setup/tasks/riscv_gcc.py +146 -0
- mlonmcu/setup/tasks/spike.py +190 -0
- mlonmcu/setup/tasks/tf.py +92 -0
- mlonmcu/setup/tasks/tflite.py +59 -0
- mlonmcu/setup/tasks/tflmc.py +141 -0
- mlonmcu/setup/tasks/tvm.py +172 -0
- mlonmcu/setup/tasks/utvmcg.py +96 -0
- mlonmcu/setup/tasks/zephyr.py +119 -0
- mlonmcu/setup/utils.py +374 -0
- mlonmcu/target/__init__.py +37 -0
- mlonmcu/target/_target.py +41 -0
- mlonmcu/target/arm/__init__.py +3 -0
- mlonmcu/target/arm/corstone300.py +235 -0
- mlonmcu/target/arm/util.py +109 -0
- mlonmcu/target/common.py +194 -0
- mlonmcu/target/elf.py +256 -0
- mlonmcu/target/host_x86.py +84 -0
- mlonmcu/target/metrics.py +75 -0
- mlonmcu/target/riscv/__init__.py +7 -0
- mlonmcu/target/riscv/etiss_pulpino.py +462 -0
- mlonmcu/target/riscv/gvsoc_pulp.py +215 -0
- mlonmcu/target/riscv/ovpsim.py +301 -0
- mlonmcu/target/riscv/riscv.py +185 -0
- mlonmcu/target/riscv/riscv_qemu.py +166 -0
- mlonmcu/target/riscv/spike.py +243 -0
- mlonmcu/target/riscv/util.py +134 -0
- mlonmcu/target/target.py +200 -0
- mlonmcu/utils.py +49 -0
- mlonmcu/version.py +21 -0
- mlonmcu-0.3.0.dev0.dist-info/LICENSE +202 -0
- mlonmcu-0.3.0.dev0.dist-info/METADATA +343 -0
- mlonmcu-0.3.0.dev0.dist-info/NOTICE +8 -0
- mlonmcu-0.3.0.dev0.dist-info/RECORD +376 -0
- mlonmcu-0.3.0.dev0.dist-info/WHEEL +5 -0
- mlonmcu-0.3.0.dev0.dist-info/entry_points.txt +3 -0
- mlonmcu-0.3.0.dev0.dist-info/top_level.txt +1 -0
- resources/frameworks/tvm/crt_config/README.md +7 -0
- resources/frameworks/tvm/crt_config/crt_config.h +53 -0
- resources/frameworks/tvm/tuning_records/riscv_cpu_v0.01.log.best +46 -0
- resources/patches/fix_esp32c3_march.patch +20 -0
- resources/patches/pulp_freertos_support.patch +55 -0
- resources/platforms/espidf/micro_speech_esp32devboard/CMakeLists.txt +29 -0
- resources/platforms/espidf/micro_speech_esp32devboard/README.md +70 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/CMakeLists.txt +78 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/Kconfig +76 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/default_data.c +26 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/default_model_support/process_input.c +35 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/default_model_support/process_output.c +45 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/include/exit.h +26 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/include/ml_interface.h +70 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/include/printing.h +31 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/ml_interface.c +74 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/ml_interface_tflm.cc +64 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/ml_interface_tvm.c +53 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/tflite-lib/CMakeLists.txt +140 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/tflite-lib/Kconfig +8 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/tvm-lib/CMakeLists.txt +66 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/tvm-lib/Kconfig +7 -0
- resources/platforms/espidf/micro_speech_esp32devboard/example_test.py +38 -0
- resources/platforms/espidf/micro_speech_esp32devboard/info.txt +9 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/CMakeLists.txt +58 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/audio_provider.cc +193 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/audio_provider.h +49 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/command_responder.cc +53 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/command_responder.h +35 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/feature_provider.cc +132 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/feature_provider.cc.orig +145 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/feature_provider.h +55 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/COPYING +11 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/_kiss_fft_guts.h +168 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/kiss_fft.c +408 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/kiss_fft.h +124 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/tools/kiss_fftr.c +159 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/tools/kiss_fftr.h +46 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/main.cc +63 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/main_functions.cc +204 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/main_functions.h +37 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/micro_features_generator.cc +121 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/micro_features_generator.h +38 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/micro_model_settings.cc +23 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/micro_model_settings.h +43 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/bits.h +102 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft.cc +52 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft.h +50 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft_util.cc +69 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft_util.h +34 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank.c +134 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank.h +63 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank_util.c +220 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank_util.h +50 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend.c +72 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend.h +64 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend_util.c +85 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend_util.h +52 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/kiss_fft_common.h +48 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/kiss_fft_int16.cc +8 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/kiss_fft_int16.h +34 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_lut.c +30 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_lut.h +40 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale.c +83 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale.h +39 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale_util.c +27 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale_util.h +45 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction.c +51 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction.h +46 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction_util.c +45 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction_util.h +50 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control.c +56 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control.h +47 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control_util.c +92 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control_util.h +57 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window.c +70 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window.h +49 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window_util.c +73 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window_util.h +45 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/pins.c +14 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/pins.h +30 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/recognize_commands.cc +150 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/recognize_commands.h +173 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/ringbuf.c +333 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/ringbuf.h +74 -0
- resources/platforms/espidf/micro_speech_esp32devboard/sdkconfig.defaults +36 -0
- resources/platforms/espidf/project/CMakeLists.txt +29 -0
- resources/platforms/espidf/project/README.md +70 -0
- resources/platforms/espidf/project/components/mlif/CMakeLists.txt +77 -0
- resources/platforms/espidf/project/components/mlif/Kconfig +76 -0
- resources/platforms/espidf/project/components/mlif/default_data.c +26 -0
- resources/platforms/espidf/project/components/mlif/default_model_support/process_input.c +35 -0
- resources/platforms/espidf/project/components/mlif/default_model_support/process_output.c +45 -0
- resources/platforms/espidf/project/components/mlif/include/exit.h +26 -0
- resources/platforms/espidf/project/components/mlif/include/ml_interface.h +60 -0
- resources/platforms/espidf/project/components/mlif/include/printing.h +31 -0
- resources/platforms/espidf/project/components/mlif/ml_interface.c +54 -0
- resources/platforms/espidf/project/components/mlif/ml_interface_tflm.cc +40 -0
- resources/platforms/espidf/project/components/mlif/ml_interface_tvm.c +40 -0
- resources/platforms/espidf/project/components/tflite-lib/CMakeLists.txt +142 -0
- resources/platforms/espidf/project/components/tflite-lib/Kconfig +8 -0
- resources/platforms/espidf/project/components/tvm-lib/CMakeLists.txt +66 -0
- resources/platforms/espidf/project/components/tvm-lib/Kconfig +7 -0
- resources/platforms/espidf/project/example_test.py +38 -0
- resources/platforms/espidf/project/main/CMakeLists.txt +25 -0
- resources/platforms/espidf/project/main/main.c +57 -0
- resources/platforms/espidf/project/sdkconfig.defaults +26 -0
- resources/platforms/zephyr/project/CMakeLists.txt +22 -0
- resources/platforms/zephyr/project/Kconfig +101 -0
- resources/platforms/zephyr/project/README.rst +33 -0
- resources/platforms/zephyr/project/cmake/AddAllSubdirs.cmake +21 -0
- resources/platforms/zephyr/project/cmake/ChooseTarget.cmake +22 -0
- resources/platforms/zephyr/project/cmake/LinkTFLite.cmake +223 -0
- resources/platforms/zephyr/project/cmake/LinkTVM.cmake +68 -0
- resources/platforms/zephyr/project/cmake/LookupClang.cmake +41 -0
- resources/platforms/zephyr/project/cmake/backends/tflmc.cmake +5 -0
- resources/platforms/zephyr/project/cmake/backends/tflmi.cmake +5 -0
- resources/platforms/zephyr/project/cmake/backends/tvmaot.cmake +10 -0
- resources/platforms/zephyr/project/cmake/backends/tvmaotplus.cmake +10 -0
- resources/platforms/zephyr/project/cmake/backends/tvmcg.cmake +10 -0
- resources/platforms/zephyr/project/cmake/backends/tvmllvm.cmake +8 -0
- resources/platforms/zephyr/project/cmake/backends/tvmrt.cmake +8 -0
- resources/platforms/zephyr/project/cmake/extras.cmake +9 -0
- resources/platforms/zephyr/project/cmake/features/auto_vectorize_gcc.cmake +65 -0
- resources/platforms/zephyr/project/cmake/features/auto_vectorize_llvm.cmake +20 -0
- resources/platforms/zephyr/project/cmake/features/cmsisnn.cmake +86 -0
- resources/platforms/zephyr/project/cmake/features/muriscvnn.cmake +87 -0
- resources/platforms/zephyr/project/cmake/frameworks/tflm.cmake +1 -0
- resources/platforms/zephyr/project/cmake/frameworks/tflm_mlif.cmake +8 -0
- resources/platforms/zephyr/project/cmake/frameworks/tvm.cmake +1 -0
- resources/platforms/zephyr/project/cmake/frameworks/tvm_mlif.cmake +37 -0
- resources/platforms/zephyr/project/lib/CMakeLists.txt +13 -0
- resources/platforms/zephyr/project/lib/drivers/fake_input.c +10 -0
- resources/platforms/zephyr/project/lib/drivers/fake_input.h +8 -0
- resources/platforms/zephyr/project/lib/ml_interface/CMakeLists.txt +31 -0
- resources/platforms/zephyr/project/lib/ml_interface/default_data.c +8 -0
- resources/platforms/zephyr/project/lib/ml_interface/default_model_support/CMakeLists.txt +2 -0
- resources/platforms/zephyr/project/lib/ml_interface/default_model_support/process_input.c +17 -0
- resources/platforms/zephyr/project/lib/ml_interface/default_model_support/process_output.c +27 -0
- resources/platforms/zephyr/project/lib/ml_interface/ml_interface.c +36 -0
- resources/platforms/zephyr/project/lib/ml_interface/ml_interface.h +47 -0
- resources/platforms/zephyr/project/lib/ml_interface/ml_interface_tflm.cc +22 -0
- resources/platforms/zephyr/project/lib/ml_interface/ml_interface_tvm.c +22 -0
- resources/platforms/zephyr/project/lib/support/CMakeLists.txt +2 -0
- resources/platforms/zephyr/project/lib/support/dummy.c +0 -0
- resources/platforms/zephyr/project/lib/support/exit.h +8 -0
- resources/platforms/zephyr/project/lib/support/printing.h +11 -0
- resources/platforms/zephyr/project/lib/support/quantize.h +23 -0
- resources/platforms/zephyr/project/lib/targets/corstone300.c +62 -0
- resources/platforms/zephyr/project/lib/targets/default.c +2 -0
- resources/platforms/zephyr/project/lib/targets/etiss_pulpino.c +112 -0
- resources/platforms/zephyr/project/lib/targets/generic_riscv.c +112 -0
- resources/platforms/zephyr/project/lib/targets/riscv_qemu.c +112 -0
- resources/platforms/zephyr/project/lib/targets/target.h +2 -0
- resources/platforms/zephyr/project/prj.conf +11 -0
- resources/platforms/zephyr/project/sample.yaml +19 -0
- resources/platforms/zephyr/project/src/main.c +71 -0
- resources/platforms/zephyr/project2/CMakeLists.txt +72 -0
- resources/platforms/zephyr/project2/Kconfig +101 -0
- resources/platforms/zephyr/project2/README.rst +33 -0
- resources/platforms/zephyr/project2/cmake/AddAllSubdirs.cmake +21 -0
- resources/platforms/zephyr/project2/cmake/ChooseTarget.cmake +22 -0
- resources/platforms/zephyr/project2/cmake/LinkTFLite.cmake +223 -0
- resources/platforms/zephyr/project2/cmake/LinkTVM.cmake +68 -0
- resources/platforms/zephyr/project2/cmake/LookupClang.cmake +41 -0
- resources/platforms/zephyr/project2/cmake/backends/tflmc.cmake +5 -0
- resources/platforms/zephyr/project2/cmake/backends/tflmi.cmake +5 -0
- resources/platforms/zephyr/project2/cmake/backends/tvmaot.cmake +10 -0
- resources/platforms/zephyr/project2/cmake/backends/tvmaotplus.cmake +10 -0
- resources/platforms/zephyr/project2/cmake/backends/tvmcg.cmake +10 -0
- resources/platforms/zephyr/project2/cmake/backends/tvmllvm.cmake +8 -0
- resources/platforms/zephyr/project2/cmake/backends/tvmrt.cmake +8 -0
- resources/platforms/zephyr/project2/cmake/extras.cmake +9 -0
- resources/platforms/zephyr/project2/cmake/features/auto_vectorize_gcc.cmake +65 -0
- resources/platforms/zephyr/project2/cmake/features/auto_vectorize_llvm.cmake +20 -0
- resources/platforms/zephyr/project2/cmake/features/cmsisnn.cmake +86 -0
- resources/platforms/zephyr/project2/cmake/features/muriscvnn.cmake +87 -0
- resources/platforms/zephyr/project2/cmake/frameworks/tflm.cmake +1 -0
- resources/platforms/zephyr/project2/cmake/frameworks/tflm_mlif.cmake +8 -0
- resources/platforms/zephyr/project2/cmake/frameworks/tvm.cmake +1 -0
- resources/platforms/zephyr/project2/cmake/frameworks/tvm_mlif.cmake +37 -0
- resources/platforms/zephyr/project2/default_data.c +8 -0
- resources/platforms/zephyr/project2/default_model_support/CMakeLists.txt +3 -0
- resources/platforms/zephyr/project2/default_model_support/process_input.c +17 -0
- resources/platforms/zephyr/project2/default_model_support/process_output.c +27 -0
- resources/platforms/zephyr/project2/lib/CMakeLists.txt +13 -0
- resources/platforms/zephyr/project2/lib/drivers/fake_input.c +10 -0
- resources/platforms/zephyr/project2/lib/drivers/fake_input.h +8 -0
- resources/platforms/zephyr/project2/lib/support/CMakeLists.txt +2 -0
- resources/platforms/zephyr/project2/lib/support/dummy.c +0 -0
- resources/platforms/zephyr/project2/lib/support/exit.h +8 -0
- resources/platforms/zephyr/project2/lib/support/printing.h +11 -0
- resources/platforms/zephyr/project2/lib/support/quantize.h +23 -0
- resources/platforms/zephyr/project2/lib/targets/corstone300.c +62 -0
- resources/platforms/zephyr/project2/lib/targets/default.c +2 -0
- resources/platforms/zephyr/project2/lib/targets/etiss_pulpino.c +112 -0
- resources/platforms/zephyr/project2/lib/targets/generic_riscv.c +112 -0
- resources/platforms/zephyr/project2/lib/targets/riscv_qemu.c +112 -0
- resources/platforms/zephyr/project2/lib/targets/target.h +2 -0
- resources/platforms/zephyr/project2/ml_interface.c +36 -0
- resources/platforms/zephyr/project2/ml_interface.h +47 -0
- resources/platforms/zephyr/project2/ml_interface_tflm.cc +22 -0
- resources/platforms/zephyr/project2/ml_interface_tvm.c +22 -0
- resources/platforms/zephyr/project2/prj.conf +13 -0
- resources/platforms/zephyr/project2/sample.yaml +19 -0
- resources/platforms/zephyr/project2/settings.json +6 -0
- resources/platforms/zephyr/project2/src/main.c +35 -0
- resources/pycharm/.run/README.md +73 -0
- resources/pycharm/.run/step1_ init env.run.xml +24 -0
- resources/pycharm/.run/step2_ setup.run.xml +25 -0
- resources/pycharm/.run/step3_ run resnet on pulpxpulpissimo.run.xml +25 -0
- resources/templates/default.yml.j2 +258 -0
- resources/templates/dev.yml.j2 +212 -0
- resources/templates/minimal.yml.j2 +234 -0
- resources/templates/phi.yml.j2 +282 -0
- resources/templates/pulp.yml.j2 +267 -0
- resources/templates/research.yml.j2 +237 -0
- resources/templates/tumeda.yml.j2 +239 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
from mlonmcu.logging import get_logger
|
|
20
|
+
|
|
21
|
+
from mlonmcu.flow.tvm.backend.backend import TVMBackend
|
|
22
|
+
|
|
23
|
+
# from mlonmcu.flow.tvm.backend.tvmaot import TVMAOTBackend
|
|
24
|
+
# from mlonmcu.flow.tvm.backend.tvmaotplus import TVMAOTPlusBackend
|
|
25
|
+
# from mlonmcu.flow.tvm.backend.tvmllvm import TVMLLVMBackend
|
|
26
|
+
from mlonmcu.flow.tvm.backend.tvmrt import TVMRTBackend
|
|
27
|
+
|
|
28
|
+
logger = get_logger()
|
|
29
|
+
|
|
30
|
+
MICROTVM_PLATFORM_BACKEND_REGISTRY = {}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def register_microtvm_platform_backend(backend_name, b, override=False):
|
|
34
|
+
global MICROTVM_PLATFORM_BACKEND_REGISTRY
|
|
35
|
+
|
|
36
|
+
if backend_name in MICROTVM_PLATFORM_BACKEND_REGISTRY and not override:
|
|
37
|
+
raise RuntimeError(f"TVM platform backend {backend_name} is already registered")
|
|
38
|
+
MICROTVM_PLATFORM_BACKEND_REGISTRY[backend_name] = b
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def get_microtvm_platform_backends():
|
|
42
|
+
return MICROTVM_PLATFORM_BACKEND_REGISTRY
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# register_microtvm_platform_backend("tvmaot", TVMAOTBackend)
|
|
46
|
+
# register_microtvm_platform_backend("tvmaotplus", TVMAOTPlusBackend)
|
|
47
|
+
register_microtvm_platform_backend("tvmrt", TVMRTBackend)
|
|
48
|
+
# register_microtvm_platform_backend("tvmllvm", TVMLLVMBackend)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def create_microtvm_platform_backend(name, platform, base=TVMBackend):
|
|
52
|
+
class MicroTvmPlatformBackend(base):
|
|
53
|
+
FEATURES = base.FEATURES + []
|
|
54
|
+
|
|
55
|
+
DEFAULTS = {
|
|
56
|
+
**base.DEFAULTS,
|
|
57
|
+
}
|
|
58
|
+
REQUIRED = base.REQUIRED + []
|
|
59
|
+
|
|
60
|
+
def __init__(self, features=None, config=None):
|
|
61
|
+
super().__init__(runtime="crt", fmt="mlf", features=features, config=config)
|
|
62
|
+
self.platform = platform
|
|
63
|
+
|
|
64
|
+
return MicroTvmPlatformBackend
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
|
|
21
|
+
from mlonmcu.target.target import Target
|
|
22
|
+
|
|
23
|
+
from mlonmcu.logging import get_logger
|
|
24
|
+
|
|
25
|
+
from .microtvm_template_target import TemplateMicroTvmPlatformTarget
|
|
26
|
+
|
|
27
|
+
logger = get_logger()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class EspidfMicroTvmPlatformTarget(TemplateMicroTvmPlatformTarget):
|
|
31
|
+
FEATURES = TemplateMicroTvmPlatformTarget.FEATURES + []
|
|
32
|
+
|
|
33
|
+
DEFAULTS = {
|
|
34
|
+
**Target.DEFAULTS,
|
|
35
|
+
"project_type": "host_driven",
|
|
36
|
+
"verbose": False,
|
|
37
|
+
"board": None,
|
|
38
|
+
"port": None,
|
|
39
|
+
"baud": None,
|
|
40
|
+
}
|
|
41
|
+
REQUIRED = Target.REQUIRED + ["microtvm_espidf.template", "espidf.src_dir", "espidf.install_dir"]
|
|
42
|
+
|
|
43
|
+
def __init__(self, name=None, features=None, config=None):
|
|
44
|
+
super().__init__(name=name, features=features, config=config)
|
|
45
|
+
self.template_path = self.microtvm_espidf_template
|
|
46
|
+
# TODO: interate into TVM build config
|
|
47
|
+
self.option_names = [
|
|
48
|
+
"project_type",
|
|
49
|
+
"verbose",
|
|
50
|
+
"idf_path",
|
|
51
|
+
"idf_tools_path",
|
|
52
|
+
"idf_target",
|
|
53
|
+
"idf_serial_port",
|
|
54
|
+
"idf_serial_baud",
|
|
55
|
+
"warning_as_error",
|
|
56
|
+
"compile_definitions",
|
|
57
|
+
"extra_files_tar",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
@property
|
|
61
|
+
def microtvm_espidf_template(self):
|
|
62
|
+
return Path(self.config["microtvm_espidf.template"])
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def esp_idf_src_dir(self):
|
|
66
|
+
return Path(self.config["espidf.src_dir"])
|
|
67
|
+
|
|
68
|
+
@property
|
|
69
|
+
def esp_idf_install_dir(self):
|
|
70
|
+
return Path(self.config["espidf.install_dir"])
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def board(self):
|
|
74
|
+
return self.config["board"]
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def port(self):
|
|
78
|
+
return self.config["port"]
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def baud(self):
|
|
82
|
+
return self.config["baud"]
|
|
83
|
+
|
|
84
|
+
def get_project_options(self):
|
|
85
|
+
ret = super().get_project_options()
|
|
86
|
+
ret.update({"idf_path": self.esp_idf_src_dir})
|
|
87
|
+
ret.update({"idf_tools_path": self.esp_idf_install_dir})
|
|
88
|
+
assert self.board, "microtvm_espidf.board has do be defined"
|
|
89
|
+
ret.update({"idf_target": self.board})
|
|
90
|
+
if self.port:
|
|
91
|
+
ret.update({"idf_serial_port": self.port})
|
|
92
|
+
if self.baud:
|
|
93
|
+
ret.update({"idf_serial_baud": self.baud})
|
|
94
|
+
return ret
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
|
|
21
|
+
from mlonmcu.target.target import Target
|
|
22
|
+
from mlonmcu.feature.features import SUPPORTED_TVM_BACKENDS
|
|
23
|
+
|
|
24
|
+
from mlonmcu.logging import get_logger
|
|
25
|
+
|
|
26
|
+
from .microtvm_template_target import TemplateMicroTvmPlatformTarget
|
|
27
|
+
|
|
28
|
+
logger = get_logger()
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class EtissvpMicroTvmPlatformTarget(TemplateMicroTvmPlatformTarget):
|
|
32
|
+
FEATURES = Target.FEATURES + []
|
|
33
|
+
|
|
34
|
+
DEFAULTS = {
|
|
35
|
+
**Target.DEFAULTS,
|
|
36
|
+
"extra_files_tar": None,
|
|
37
|
+
"project_type": "?",
|
|
38
|
+
"verbose": False,
|
|
39
|
+
"warning_as_error": True,
|
|
40
|
+
"compile_definitions": "",
|
|
41
|
+
"config_main_stack_size": -1,
|
|
42
|
+
# "riscv_path": "?",
|
|
43
|
+
# "etiss_path": "?",
|
|
44
|
+
# "etissvp_script": "?",
|
|
45
|
+
"etissvp_script_args": "?",
|
|
46
|
+
"transport": True,
|
|
47
|
+
}
|
|
48
|
+
REQUIRED = Target.REQUIRED + ["microtvm_etissvp.src_dir", "riscv_gcc.install_dir", "etiss.install_dir"]
|
|
49
|
+
|
|
50
|
+
def __init__(self, name=None, features=None, config=None):
|
|
51
|
+
super().__init__(name=name, features=features, config=config)
|
|
52
|
+
self.template_path = self.microtvm_etissvp.src_dir / "template_project"
|
|
53
|
+
self.option_names = [
|
|
54
|
+
"extra_files_tar",
|
|
55
|
+
"project_type",
|
|
56
|
+
# "verbose",
|
|
57
|
+
"warning_as_error",
|
|
58
|
+
"compile_definitions",
|
|
59
|
+
"config_main_stack_size",
|
|
60
|
+
"etissvp_script_args",
|
|
61
|
+
"transport",
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def microtvm_etissvp_src_dir(self):
|
|
66
|
+
return Path(self.config["microtvm_etissvp.src_dir"])
|
|
67
|
+
|
|
68
|
+
@property
|
|
69
|
+
def riscv_gcc_install_dir(self):
|
|
70
|
+
return Path(self.config["riscv_gcc_install_dir"])
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def etiss_install_dir(self):
|
|
74
|
+
return Path(self.config["etiss.install_dir"])
|
|
75
|
+
|
|
76
|
+
def get_project_options(self):
|
|
77
|
+
ret = super().get_project_options()
|
|
78
|
+
ret.update(
|
|
79
|
+
{
|
|
80
|
+
"riscv_path": self.riscv_gcc_install_dir,
|
|
81
|
+
"etiss_path": self.etiss_install_dir,
|
|
82
|
+
"etissvp_script": self.etiss_install_dir / "bin" / "run_helper.sh",
|
|
83
|
+
}
|
|
84
|
+
)
|
|
85
|
+
return ret
|
|
86
|
+
|
|
87
|
+
def get_backend_config(self, backend):
|
|
88
|
+
if backend in SUPPORTED_TVM_BACKENDS:
|
|
89
|
+
return {
|
|
90
|
+
"target_device": "riscv_cpu",
|
|
91
|
+
# "target_march": "TODO",
|
|
92
|
+
# "target_model": "TODO",
|
|
93
|
+
# "target_mtriple": "TODO",
|
|
94
|
+
# "target_mabi": "TODO",
|
|
95
|
+
# "target_mattr": "TODO",
|
|
96
|
+
# "target_mcpu": "TODO",
|
|
97
|
+
}
|
|
98
|
+
return {}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
|
|
21
|
+
from mlonmcu.target.target import Target
|
|
22
|
+
|
|
23
|
+
from mlonmcu.logging import get_logger
|
|
24
|
+
|
|
25
|
+
from .microtvm_template_target import TemplateMicroTvmPlatformTarget
|
|
26
|
+
|
|
27
|
+
logger = get_logger()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class HostMicroTvmPlatformTarget(TemplateMicroTvmPlatformTarget):
|
|
31
|
+
FEATURES = Target.FEATURES + []
|
|
32
|
+
|
|
33
|
+
DEFAULTS = {
|
|
34
|
+
**Target.DEFAULTS,
|
|
35
|
+
"verbose": False,
|
|
36
|
+
}
|
|
37
|
+
REQUIRED = Target.REQUIRED + ["tvm.build_dir"]
|
|
38
|
+
|
|
39
|
+
def __init__(self, name=None, features=None, config=None):
|
|
40
|
+
super().__init__(name=name, features=features, config=config)
|
|
41
|
+
self.template_path = self.tvm_build_dir / "standalone_crt" / "template" / "host"
|
|
42
|
+
# self.option_names = ["verbose"]
|
|
43
|
+
|
|
44
|
+
@property
|
|
45
|
+
def tvm_build_dir(self):
|
|
46
|
+
return Path(self.config["tvm.build_dir"])
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
|
|
21
|
+
from mlonmcu.target.target import Target
|
|
22
|
+
from mlonmcu.feature.features import SUPPORTED_TVM_BACKENDS
|
|
23
|
+
from mlonmcu.config import str2bool
|
|
24
|
+
import mlonmcu.target.riscv.util as riscv_util
|
|
25
|
+
|
|
26
|
+
from mlonmcu.logging import get_logger
|
|
27
|
+
|
|
28
|
+
from .microtvm_template_target import TemplateMicroTvmPlatformTarget
|
|
29
|
+
|
|
30
|
+
logger = get_logger()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class SpikeMicroTvmPlatformTarget(TemplateMicroTvmPlatformTarget):
|
|
34
|
+
FEATURES = TemplateMicroTvmPlatformTarget.FEATURES + ["vext", "pext"]
|
|
35
|
+
|
|
36
|
+
DEFAULTS = {
|
|
37
|
+
**TemplateMicroTvmPlatformTarget.DEFAULTS,
|
|
38
|
+
"verbose": True,
|
|
39
|
+
"arch": "rv32gc",
|
|
40
|
+
"abi": None,
|
|
41
|
+
"spike_extra_args": None,
|
|
42
|
+
"pk_extra_args": None,
|
|
43
|
+
"enable_vext": False,
|
|
44
|
+
"vext_spec": 1.0,
|
|
45
|
+
"embedded_vext": False,
|
|
46
|
+
"enable_pext": False,
|
|
47
|
+
"pext_spec": 0.92, # ?
|
|
48
|
+
"vlen": 0, # vectorization=off
|
|
49
|
+
"elen": 32,
|
|
50
|
+
}
|
|
51
|
+
REQUIRED = Target.REQUIRED + [
|
|
52
|
+
"spike.exe",
|
|
53
|
+
"spike.pk",
|
|
54
|
+
"riscv_gcc.name",
|
|
55
|
+
"riscv_gcc.install_dir",
|
|
56
|
+
"riscv_gcc.variant",
|
|
57
|
+
"tvm.src_dir",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
def __init__(self, name=None, features=None, config=None):
|
|
61
|
+
super().__init__(name=name, features=features, config=config)
|
|
62
|
+
self.template_path = self.tvm_src_dir / "apps" / "microtvm" / "spike"
|
|
63
|
+
# TODO: interate into TVM build config
|
|
64
|
+
self.option_names = [
|
|
65
|
+
"verbose",
|
|
66
|
+
"spike_exe",
|
|
67
|
+
"spike_pk",
|
|
68
|
+
"arch",
|
|
69
|
+
"abi",
|
|
70
|
+
"triple",
|
|
71
|
+
"spike_extra_args",
|
|
72
|
+
"pk_extra_args",
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
@property
|
|
76
|
+
def spike_exe(self):
|
|
77
|
+
return Path(self.config["spike.exe"])
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def spike_pk(self):
|
|
81
|
+
return Path(self.config["spike.pk"])
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def riscv_gcc_name(self):
|
|
85
|
+
return self.config["riscv_gcc.name"]
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def gcc_variant(self):
|
|
89
|
+
return self.config["riscv_gcc.variant"]
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def riscv_gcc_install_dir(self):
|
|
93
|
+
return Path(self.config["riscv_gcc.install_dir"])
|
|
94
|
+
|
|
95
|
+
@property
|
|
96
|
+
def tvm_src_dir(self):
|
|
97
|
+
return Path(self.config["tvm.src_dir"])
|
|
98
|
+
|
|
99
|
+
@property
|
|
100
|
+
def enable_vext(self):
|
|
101
|
+
value = self.config["enable_vext"]
|
|
102
|
+
return str2bool(value) if not isinstance(value, (bool, int)) else value
|
|
103
|
+
|
|
104
|
+
@property
|
|
105
|
+
def enable_pext(self):
|
|
106
|
+
value = self.config["enable_pext"]
|
|
107
|
+
return str2bool(value) if not isinstance(value, (bool, int)) else value
|
|
108
|
+
|
|
109
|
+
@property
|
|
110
|
+
def fpu(self):
|
|
111
|
+
exts = self.extensions
|
|
112
|
+
if "g" in exts or "d" in exts:
|
|
113
|
+
return "double"
|
|
114
|
+
elif "f" in exts:
|
|
115
|
+
return "single"
|
|
116
|
+
return "none"
|
|
117
|
+
|
|
118
|
+
@property
|
|
119
|
+
def has_fpu(self):
|
|
120
|
+
return self.fpu != "none"
|
|
121
|
+
|
|
122
|
+
@property
|
|
123
|
+
def xlen(self):
|
|
124
|
+
arch = self.config["arch"]
|
|
125
|
+
xlen = int(arch[2:4])
|
|
126
|
+
return xlen
|
|
127
|
+
|
|
128
|
+
@property
|
|
129
|
+
def extensions(self):
|
|
130
|
+
arch = self.config["arch"]
|
|
131
|
+
exts_str = arch[4:]
|
|
132
|
+
|
|
133
|
+
def _split_exts(x):
|
|
134
|
+
ret = []
|
|
135
|
+
splitted = x.split("_")
|
|
136
|
+
for c in splitted:
|
|
137
|
+
lowered = c.lower()
|
|
138
|
+
assert len(c) > 0
|
|
139
|
+
if len(c) == 1:
|
|
140
|
+
ret.append(lowered)
|
|
141
|
+
else:
|
|
142
|
+
for i, cc in enumerate(lowered):
|
|
143
|
+
if cc in ["x", "z"]:
|
|
144
|
+
ret.append(lowered[i:])
|
|
145
|
+
break
|
|
146
|
+
else:
|
|
147
|
+
ret.append(cc)
|
|
148
|
+
return ret
|
|
149
|
+
|
|
150
|
+
exts = _split_exts(exts_str)
|
|
151
|
+
if "g" in exts or "d" in exts:
|
|
152
|
+
fpu = "double"
|
|
153
|
+
elif "f" in exts:
|
|
154
|
+
fpu = "single"
|
|
155
|
+
return riscv_util.update_extensions(
|
|
156
|
+
exts,
|
|
157
|
+
pext=self.enable_pext,
|
|
158
|
+
pext_spec=self.pext_spec,
|
|
159
|
+
vext=self.enable_vext,
|
|
160
|
+
elen=self.elen,
|
|
161
|
+
embedded=self.embedded_vext,
|
|
162
|
+
fpu=fpu,
|
|
163
|
+
variant=self.gcc_variant,
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
@property
|
|
167
|
+
def vlen(self):
|
|
168
|
+
return int(self.config["vlen"])
|
|
169
|
+
|
|
170
|
+
@property
|
|
171
|
+
def elen(self):
|
|
172
|
+
return int(self.config["elen"])
|
|
173
|
+
|
|
174
|
+
@property
|
|
175
|
+
def vext_spec(self):
|
|
176
|
+
return float(self.config["vext_spec"])
|
|
177
|
+
|
|
178
|
+
@property
|
|
179
|
+
def embedded_vext(self):
|
|
180
|
+
value = self.config["embedded_vext"]
|
|
181
|
+
return str2bool(value) if not isinstance(value, (bool, int)) else value
|
|
182
|
+
|
|
183
|
+
@property
|
|
184
|
+
def pext_spec(self):
|
|
185
|
+
return float(self.config["pext_spec"])
|
|
186
|
+
|
|
187
|
+
@property
|
|
188
|
+
def arch(self):
|
|
189
|
+
exts_str = riscv_util.join_extensions(riscv_util.sort_extensions_canonical(self.extensions, lower=True))
|
|
190
|
+
return f"rv{self.xlen}{exts_str}"
|
|
191
|
+
|
|
192
|
+
def get_project_options(self):
|
|
193
|
+
ret = super().get_project_options()
|
|
194
|
+
ret.update(
|
|
195
|
+
{
|
|
196
|
+
"spike_exe": str(self.spike_exe),
|
|
197
|
+
"spike_pk": str(self.spike_pk),
|
|
198
|
+
"triple": str(self.riscv_gcc_install_dir / "bin" / self.riscv_gcc_name),
|
|
199
|
+
}
|
|
200
|
+
)
|
|
201
|
+
return ret
|
|
202
|
+
|
|
203
|
+
def update_environment(self, env):
|
|
204
|
+
super().update_environment(env)
|
|
205
|
+
if "PATH" in env:
|
|
206
|
+
env["PATH"] = str(self.riscv_gcc_install_dir / "bin") + ":" + env["PATH"]
|
|
207
|
+
else:
|
|
208
|
+
env["PATH"] = str(self.riscv_gcc_install_dir / "bin")
|
|
209
|
+
|
|
210
|
+
def get_backend_config(self, backend):
|
|
211
|
+
ret = {}
|
|
212
|
+
if backend in SUPPORTED_TVM_BACKENDS:
|
|
213
|
+
ret.update(
|
|
214
|
+
{
|
|
215
|
+
"target_device": "riscv_cpu",
|
|
216
|
+
"target_march": self.arch,
|
|
217
|
+
"target_model": f"spike-{self.arch}",
|
|
218
|
+
"target_mtriple": self.riscv_gcc_name,
|
|
219
|
+
"target_mabi": self.config.get("abi", None),
|
|
220
|
+
}
|
|
221
|
+
)
|
|
222
|
+
if self.enable_pext or self.enable_vext:
|
|
223
|
+
ret.update(
|
|
224
|
+
{
|
|
225
|
+
# Warning: passing kernel layouts does not work with upstream TVM
|
|
226
|
+
# TODO: allow passing map?
|
|
227
|
+
"desired_layout": "NHWC:HWOI",
|
|
228
|
+
}
|
|
229
|
+
)
|
|
230
|
+
return ret
|