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,257 @@
|
|
|
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
|
+
import re
|
|
20
|
+
import os
|
|
21
|
+
from enum import Enum
|
|
22
|
+
|
|
23
|
+
from mlonmcu.target.target import Target
|
|
24
|
+
from mlonmcu.target.metrics import Metrics
|
|
25
|
+
|
|
26
|
+
from mlonmcu.feature.features import SUPPORTED_TVM_BACKENDS
|
|
27
|
+
from mlonmcu.target.riscv.util import sort_extensions_canonical, join_extensions
|
|
28
|
+
|
|
29
|
+
from mlonmcu.logging import get_logger
|
|
30
|
+
|
|
31
|
+
logger = get_logger()
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class Esp32C3PerfCount(Enum):
|
|
35
|
+
CYCLE = 1
|
|
36
|
+
INST = 2
|
|
37
|
+
LD_HAZARD = 4
|
|
38
|
+
JMP_HAZARD = 8
|
|
39
|
+
IDLE = 16
|
|
40
|
+
LOAD = 32
|
|
41
|
+
STORE = 64
|
|
42
|
+
JMP_UNCOND = 128
|
|
43
|
+
BRANCH = 256
|
|
44
|
+
BRANCH_TAKEN = 512
|
|
45
|
+
INST_COMP = 1024
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
ESPIDF_PLATFORM_TARGET_REGISTRY = {}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def register_espidf_platform_target(target_name, t, override=False):
|
|
52
|
+
global ESPIDF_PLATFORM_TARGET_REGISTRY
|
|
53
|
+
|
|
54
|
+
if target_name in ESPIDF_PLATFORM_TARGET_REGISTRY and not override:
|
|
55
|
+
raise RuntimeError(f"ESP-IDF platform target {target_name} is already registered")
|
|
56
|
+
ESPIDF_PLATFORM_TARGET_REGISTRY[target_name] = t
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def get_espidf_platform_targets():
|
|
60
|
+
return ESPIDF_PLATFORM_TARGET_REGISTRY
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class Esp32C3Target(Target):
|
|
64
|
+
FEATURES = Target.FEATURES + []
|
|
65
|
+
|
|
66
|
+
DEFAULTS = {
|
|
67
|
+
**Target.DEFAULTS,
|
|
68
|
+
"xlen": 32,
|
|
69
|
+
"extensions": ["i", "m", "c"],
|
|
70
|
+
"fpu": "none",
|
|
71
|
+
"arch": None,
|
|
72
|
+
"abi": None,
|
|
73
|
+
"attr": "",
|
|
74
|
+
"count": Esp32C3PerfCount.CYCLE,
|
|
75
|
+
}
|
|
76
|
+
REQUIRED = Target.REQUIRED + []
|
|
77
|
+
OPTIONAL = Target.OPTIONAL + []
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def xlen(self):
|
|
81
|
+
return int(self.config["xlen"])
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def extensions(self):
|
|
85
|
+
exts = self.config.get("extensions", []).copy()
|
|
86
|
+
if not isinstance(exts, list):
|
|
87
|
+
exts = exts.split(",")
|
|
88
|
+
if "g" not in exts:
|
|
89
|
+
required = []
|
|
90
|
+
if self.fpu == "double":
|
|
91
|
+
required.append("d")
|
|
92
|
+
required.append("f")
|
|
93
|
+
if self.fpu == "single":
|
|
94
|
+
required.append("f")
|
|
95
|
+
for ext in required:
|
|
96
|
+
if ext not in exts:
|
|
97
|
+
exts.append(ext)
|
|
98
|
+
return exts
|
|
99
|
+
|
|
100
|
+
@property
|
|
101
|
+
def arch(self):
|
|
102
|
+
temp = self.config["arch"] # TODO: allow underscores and versions
|
|
103
|
+
if temp:
|
|
104
|
+
return temp
|
|
105
|
+
else:
|
|
106
|
+
exts_str = join_extensions(sort_extensions_canonical(self.extensions, lower=True))
|
|
107
|
+
return f"rv{self.xlen}{exts_str}"
|
|
108
|
+
|
|
109
|
+
@property
|
|
110
|
+
def abi(self):
|
|
111
|
+
temp = self.config["abi"]
|
|
112
|
+
if temp:
|
|
113
|
+
return temp
|
|
114
|
+
else:
|
|
115
|
+
if self.xlen == 32:
|
|
116
|
+
temp = "ilp32"
|
|
117
|
+
elif self.xlen == 64:
|
|
118
|
+
temp = "lp64"
|
|
119
|
+
else:
|
|
120
|
+
raise RuntimeError(f"Invalid xlen: {self.xlen}")
|
|
121
|
+
if "d" in self.extensions or "g" in self.extensions:
|
|
122
|
+
temp += "d"
|
|
123
|
+
elif "f" in self.extensions:
|
|
124
|
+
temp += "f"
|
|
125
|
+
return temp
|
|
126
|
+
|
|
127
|
+
@property
|
|
128
|
+
def attr(self):
|
|
129
|
+
attrs = str(self.config["attr"]).split(",")
|
|
130
|
+
if len(attrs) == 1 and len(attrs[0]) == 0:
|
|
131
|
+
attrs = []
|
|
132
|
+
for ext in sort_extensions_canonical(self.extensions, lower=True, unpack=True):
|
|
133
|
+
attrs.append(f"+{ext}")
|
|
134
|
+
attrs = list(set(attrs))
|
|
135
|
+
return ",".join(attrs)
|
|
136
|
+
|
|
137
|
+
@property
|
|
138
|
+
def fpu(self):
|
|
139
|
+
value = self.config["fpu"]
|
|
140
|
+
if value is None or not value:
|
|
141
|
+
value = "none"
|
|
142
|
+
assert value in ["none", "single", "double"]
|
|
143
|
+
return value
|
|
144
|
+
|
|
145
|
+
@property
|
|
146
|
+
def count(self):
|
|
147
|
+
value = int(self.config["count"])
|
|
148
|
+
return value
|
|
149
|
+
|
|
150
|
+
@property
|
|
151
|
+
def has_fpu(self):
|
|
152
|
+
return self.fpu != "none"
|
|
153
|
+
|
|
154
|
+
def get_platform_defs(self, platform):
|
|
155
|
+
ret = super().get_platform_defs(platform)
|
|
156
|
+
ret["ESP32C3_PERF_COUNT"] = self.count
|
|
157
|
+
return ret
|
|
158
|
+
|
|
159
|
+
def get_target_system(self):
|
|
160
|
+
return "esp32c3"
|
|
161
|
+
|
|
162
|
+
def get_arch(self):
|
|
163
|
+
return "riscv"
|
|
164
|
+
|
|
165
|
+
def get_backend_config(self, backend):
|
|
166
|
+
if backend in SUPPORTED_TVM_BACKENDS:
|
|
167
|
+
return {
|
|
168
|
+
"target_device": "riscv_cpu",
|
|
169
|
+
"target_march": self.arch,
|
|
170
|
+
"target_model": "esp32c3_devkit",
|
|
171
|
+
"target_mtriple": "riscv32-esp-elf",
|
|
172
|
+
"target_mabi": self.abi,
|
|
173
|
+
"target_mattr": self.attr,
|
|
174
|
+
"target_mcpu": "esp32c3",
|
|
175
|
+
}
|
|
176
|
+
return {}
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def create_espidf_platform_target(name, platform, base=Target):
|
|
180
|
+
class EspIdfPlatformTarget(base):
|
|
181
|
+
FEATURES = base.FEATURES + []
|
|
182
|
+
|
|
183
|
+
DEFAULTS = {
|
|
184
|
+
**base.DEFAULTS,
|
|
185
|
+
"timeout_sec": 0, # disabled
|
|
186
|
+
"port": None,
|
|
187
|
+
"baud": None,
|
|
188
|
+
}
|
|
189
|
+
REQUIRED = base.REQUIRED + []
|
|
190
|
+
|
|
191
|
+
def __init__(self, features=None, config=None):
|
|
192
|
+
super().__init__(name=name, features=features, config=config)
|
|
193
|
+
self.platform = platform
|
|
194
|
+
|
|
195
|
+
@property
|
|
196
|
+
def timeout_sec(self):
|
|
197
|
+
return int(self.config["timeout_sec"])
|
|
198
|
+
|
|
199
|
+
@property
|
|
200
|
+
def port(self):
|
|
201
|
+
return self.config["port"]
|
|
202
|
+
|
|
203
|
+
@property
|
|
204
|
+
def baud(self):
|
|
205
|
+
return self.config["baud"]
|
|
206
|
+
|
|
207
|
+
def exec(self, program, *args, cwd=os.getcwd(), **kwargs):
|
|
208
|
+
"""Use target to execute a executable with given arguments"""
|
|
209
|
+
if len(args) > 0:
|
|
210
|
+
raise RuntimeError("Program arguments are not supported for real hardware devices")
|
|
211
|
+
|
|
212
|
+
assert self.platform is not None, "ESP32 targets need a platform to execute programs"
|
|
213
|
+
|
|
214
|
+
if self.timeout_sec > 0:
|
|
215
|
+
raise NotImplementedError
|
|
216
|
+
|
|
217
|
+
# ESP-IDF actually wants a project directory, but we only get the elf now. As a workaround we
|
|
218
|
+
# assume the elf is right in the build directory inside the project directory
|
|
219
|
+
|
|
220
|
+
ret = self.platform.run(program, self)
|
|
221
|
+
return ret
|
|
222
|
+
|
|
223
|
+
def parse_stdout(self, out):
|
|
224
|
+
cpu_cycles = re.search(r"Total Cycles: (.*)", out)
|
|
225
|
+
if not cpu_cycles:
|
|
226
|
+
logger.warning("unexpected script output (cycles)")
|
|
227
|
+
cycles = None
|
|
228
|
+
else:
|
|
229
|
+
cycles = int(float(cpu_cycles.group(1)))
|
|
230
|
+
cpu_time_us = re.search(r"Total Time: (.*) us", out)
|
|
231
|
+
if not cpu_time_us:
|
|
232
|
+
logger.warning("unexpected script output (time_us)")
|
|
233
|
+
time_us = None
|
|
234
|
+
else:
|
|
235
|
+
time_us = int(float(cpu_time_us.group(1)))
|
|
236
|
+
return cycles, time_us
|
|
237
|
+
|
|
238
|
+
def get_metrics(self, elf, directory, handle_exit=None):
|
|
239
|
+
if self.print_outputs:
|
|
240
|
+
out = self.exec(elf, cwd=directory, live=True, handle_exit=handle_exit)
|
|
241
|
+
else:
|
|
242
|
+
out = self.exec(
|
|
243
|
+
elf, cwd=directory, live=False, print_func=lambda *args, **kwargs: None, handle_exit=handle_exit
|
|
244
|
+
)
|
|
245
|
+
cycles, time_us = self.parse_stdout(out)
|
|
246
|
+
|
|
247
|
+
metrics = Metrics()
|
|
248
|
+
metrics.add("Cycles", cycles)
|
|
249
|
+
time_s = time_us / 1e6 if time_us is not None else time_us
|
|
250
|
+
metrics.add("Runtime [s]", time_s)
|
|
251
|
+
|
|
252
|
+
return metrics, out, []
|
|
253
|
+
|
|
254
|
+
def get_arch(self):
|
|
255
|
+
return "unkwown"
|
|
256
|
+
|
|
257
|
+
return EspIdfPlatformTarget
|
|
@@ -0,0 +1,126 @@
|
|
|
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
|
+
import itertools
|
|
20
|
+
|
|
21
|
+
from mlonmcu.platform import get_platforms
|
|
22
|
+
from mlonmcu.config import resolve_required_config
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def get_platform_names(context):
|
|
26
|
+
return context.environment.lookup_platform_configs(names_only=True)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def get_platforms_targets(context, config=None):
|
|
30
|
+
platform_names = get_platform_names(context)
|
|
31
|
+
platform_classes = get_platforms()
|
|
32
|
+
# To initialize the platform we need to provide a config with required paths.
|
|
33
|
+
platforms = []
|
|
34
|
+
config_ = {}
|
|
35
|
+
if context:
|
|
36
|
+
config_.update(context.environment.vars)
|
|
37
|
+
if config:
|
|
38
|
+
config_.update(config)
|
|
39
|
+
|
|
40
|
+
for platform_name in platform_names:
|
|
41
|
+
platform_cls = platform_classes[platform_name]
|
|
42
|
+
required_keys = platform_cls.REQUIRED
|
|
43
|
+
new_config = resolve_required_config(
|
|
44
|
+
required_keys,
|
|
45
|
+
config=config_,
|
|
46
|
+
cache=context.cache,
|
|
47
|
+
default_flags=context.environment.flags,
|
|
48
|
+
)
|
|
49
|
+
platform = platform_cls(config=new_config)
|
|
50
|
+
platforms.append(platform)
|
|
51
|
+
return {platform.name: platform.get_supported_targets() for platform in platforms}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def get_platforms_backends(context, config=None):
|
|
55
|
+
platform_names = get_platform_names(context)
|
|
56
|
+
platform_classes = get_platforms()
|
|
57
|
+
# To initialize the platform we need to provide a config with required paths.
|
|
58
|
+
platforms = []
|
|
59
|
+
config_ = {}
|
|
60
|
+
if context:
|
|
61
|
+
config_.update(context.environment.vars)
|
|
62
|
+
if config:
|
|
63
|
+
config_.update(config)
|
|
64
|
+
|
|
65
|
+
for platform_name in platform_names:
|
|
66
|
+
platform_cls = platform_classes[platform_name]
|
|
67
|
+
required_keys = platform_cls.REQUIRED
|
|
68
|
+
new_config = resolve_required_config(
|
|
69
|
+
required_keys,
|
|
70
|
+
config=config_,
|
|
71
|
+
cache=context.cache,
|
|
72
|
+
default_flags=context.environment.flags,
|
|
73
|
+
)
|
|
74
|
+
platform = platform_cls(config=new_config)
|
|
75
|
+
platforms.append(platform)
|
|
76
|
+
return {platform.name: platform.get_supported_backends() for platform in platforms}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def print_platforms(platform_names):
|
|
80
|
+
print("Platforms:")
|
|
81
|
+
if len(platform_names) == 0:
|
|
82
|
+
print("No platforms found")
|
|
83
|
+
return
|
|
84
|
+
for name in platform_names:
|
|
85
|
+
print(" - " + name)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def print_targets(platform_targets):
|
|
89
|
+
print("Targets:")
|
|
90
|
+
target_names = set(itertools.chain(*platform_targets.values()))
|
|
91
|
+
if len(target_names) == 0:
|
|
92
|
+
print("No targets found")
|
|
93
|
+
return
|
|
94
|
+
for target_name in target_names:
|
|
95
|
+
target_platforms = [
|
|
96
|
+
platform_name
|
|
97
|
+
for platform_name, platform_targets in platform_targets.items()
|
|
98
|
+
if target_name in platform_targets
|
|
99
|
+
]
|
|
100
|
+
print(" - " + target_name + " [" + ", ".join(target_platforms) + "]")
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def print_backends(platform_backends):
|
|
104
|
+
print("Backends:")
|
|
105
|
+
backend_names = set(itertools.chain(*platform_backends.values()))
|
|
106
|
+
if len(backend_names) == 0:
|
|
107
|
+
print("No targets found")
|
|
108
|
+
return
|
|
109
|
+
for backend_name in backend_names:
|
|
110
|
+
backend_platforms = [
|
|
111
|
+
platform_name
|
|
112
|
+
for platform_name, platform_backends in platform_backends.items()
|
|
113
|
+
if backend_name in platform_backends
|
|
114
|
+
]
|
|
115
|
+
print(" - " + backend_name + " [" + ", ".join(backend_platforms) + "]")
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def print_summary(context):
|
|
119
|
+
print("Platform Targets Summary\n")
|
|
120
|
+
platform_targets = get_platforms_targets(context)
|
|
121
|
+
print_platforms(platform_targets.keys())
|
|
122
|
+
print()
|
|
123
|
+
platform_backends = get_platforms_backends(context)
|
|
124
|
+
print_backends(platform_backends)
|
|
125
|
+
print()
|
|
126
|
+
print_targets(platform_targets)
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
"""MLonMCU MicroTVM platform"""
|
|
20
|
+
|
|
21
|
+
# pylint: disable=wildcard-import, redefined-builtin
|
|
22
|
+
|
|
23
|
+
from .microtvm import MicroTvmPlatform
|
|
24
|
+
|
|
25
|
+
__all__ = ["MicroTvmPlatform"]
|