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
mlonmcu/target/elf.py
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
4
|
+
#
|
|
5
|
+
# This file is part of MLonMCU.
|
|
6
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
7
|
+
#
|
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
# you may not use this file except in compliance with the License.
|
|
10
|
+
# You may obtain a copy of the License at
|
|
11
|
+
#
|
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
#
|
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
# See the License for the specific language governing permissions and
|
|
18
|
+
# limitations under the License.
|
|
19
|
+
#
|
|
20
|
+
"""ELF File Tool"""
|
|
21
|
+
|
|
22
|
+
# import os
|
|
23
|
+
# import sys
|
|
24
|
+
import csv
|
|
25
|
+
import argparse
|
|
26
|
+
from elftools.elf import elffile
|
|
27
|
+
|
|
28
|
+
from mlonmcu.logging import get_logger
|
|
29
|
+
|
|
30
|
+
logger = get_logger()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
"""
|
|
34
|
+
Script to gather metrics on static ROM and RAM usage.
|
|
35
|
+
|
|
36
|
+
Heavility inspired by get_metrics.py found in the ETISS repository
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def parseElf(inFile):
|
|
41
|
+
"""Extract static memory usage details from ELF file by mapping each segment."""
|
|
42
|
+
# TODO: check if this is generic anough for multiple platforms (riscv, arm, x86)
|
|
43
|
+
# TODO: comare results with `riscv32-unknown-elf-size`
|
|
44
|
+
m = {}
|
|
45
|
+
m["rom_rodata"] = 0
|
|
46
|
+
m["rom_code"] = 0
|
|
47
|
+
m["rom_misc"] = 0
|
|
48
|
+
m["ram_data"] = 0
|
|
49
|
+
m["ram_zdata"] = 0
|
|
50
|
+
|
|
51
|
+
ignoreSections = [
|
|
52
|
+
"",
|
|
53
|
+
".stack",
|
|
54
|
+
".comment",
|
|
55
|
+
".riscv.attributes",
|
|
56
|
+
".strtab",
|
|
57
|
+
".stabstr",
|
|
58
|
+
".shstrtab",
|
|
59
|
+
".symtab",
|
|
60
|
+
".eh_frame",
|
|
61
|
+
".stab",
|
|
62
|
+
".heap", # ?
|
|
63
|
+
# The following are x86 only:
|
|
64
|
+
".interp",
|
|
65
|
+
".dynsym",
|
|
66
|
+
".dynstr",
|
|
67
|
+
".dynamic",
|
|
68
|
+
".got",
|
|
69
|
+
".data.rel.ro",
|
|
70
|
+
# Espressif
|
|
71
|
+
".flash.appdesc",
|
|
72
|
+
".iram0.text_end", # ?
|
|
73
|
+
# QEMU
|
|
74
|
+
".htif",
|
|
75
|
+
# Zephyr
|
|
76
|
+
".mcuboot_header",
|
|
77
|
+
".metadata",
|
|
78
|
+
"ctors",
|
|
79
|
+
"initlevel",
|
|
80
|
+
"devices",
|
|
81
|
+
"device_handles",
|
|
82
|
+
"sw_isr_table",
|
|
83
|
+
"device_states",
|
|
84
|
+
".mcuboot_header",
|
|
85
|
+
".metadata",
|
|
86
|
+
"ctors",
|
|
87
|
+
"initlevel",
|
|
88
|
+
"devices",
|
|
89
|
+
"device_handles",
|
|
90
|
+
"sw_isr_table",
|
|
91
|
+
"device_states",
|
|
92
|
+
".xt.prop",
|
|
93
|
+
".xt.lit",
|
|
94
|
+
"k_heap_area",
|
|
95
|
+
"datas",
|
|
96
|
+
# Pulp
|
|
97
|
+
".data_tiny_fc",
|
|
98
|
+
".data_tiny_l1",
|
|
99
|
+
".l1cluster_g",
|
|
100
|
+
".heap_l2_shared",
|
|
101
|
+
".Pulp_Chip.Info",
|
|
102
|
+
]
|
|
103
|
+
ignorePrefixes = [
|
|
104
|
+
".gcc_except",
|
|
105
|
+
".sdata2",
|
|
106
|
+
".debug_",
|
|
107
|
+
# ARM only:
|
|
108
|
+
".ARM",
|
|
109
|
+
# The following are x86 only:
|
|
110
|
+
".note",
|
|
111
|
+
".gnu",
|
|
112
|
+
".rela",
|
|
113
|
+
".plt",
|
|
114
|
+
]
|
|
115
|
+
ignoreSuffixes = [
|
|
116
|
+
".table",
|
|
117
|
+
"dummy",
|
|
118
|
+
"heap_start",
|
|
119
|
+
"rom_start",
|
|
120
|
+
".info",
|
|
121
|
+
]
|
|
122
|
+
|
|
123
|
+
with open(inFile, "rb") as f:
|
|
124
|
+
e = elffile.ELFFile(f)
|
|
125
|
+
|
|
126
|
+
for s in e.iter_sections():
|
|
127
|
+
if s.name.startswith(".text") or s.name.endswith(".text") or s.name == "text":
|
|
128
|
+
m["rom_code"] += s.data_size
|
|
129
|
+
elif s.name.startswith(".srodata"):
|
|
130
|
+
m["rom_rodata"] += s.data_size
|
|
131
|
+
elif s.name.startswith(".sdata"):
|
|
132
|
+
m["ram_data"] += s.data_size
|
|
133
|
+
elif s.name.endswith(".rodata") or s.name == "rodata":
|
|
134
|
+
m["rom_rodata"] += s.data_size
|
|
135
|
+
elif s.name in [
|
|
136
|
+
".vectors",
|
|
137
|
+
"iram0.vectors",
|
|
138
|
+
".iram0.vectors",
|
|
139
|
+
".init_array",
|
|
140
|
+
".fini_array",
|
|
141
|
+
".fini",
|
|
142
|
+
".init",
|
|
143
|
+
".eh_frame",
|
|
144
|
+
".eh_frame_hdr",
|
|
145
|
+
]:
|
|
146
|
+
m["rom_misc"] += s.data_size
|
|
147
|
+
elif s.name.endswith(".data"):
|
|
148
|
+
m["ram_data"] += s.data_size
|
|
149
|
+
elif (
|
|
150
|
+
s.name == ".bss"
|
|
151
|
+
or s.name == "bss"
|
|
152
|
+
or s.name == ".sbss"
|
|
153
|
+
or s.name == ".shbss"
|
|
154
|
+
or s.name.endswith(".bss")
|
|
155
|
+
or s.name.startswith(".sbss")
|
|
156
|
+
or s.name == "noinit"
|
|
157
|
+
):
|
|
158
|
+
m["ram_zdata"] += s.data_size
|
|
159
|
+
elif s.name in ignoreSections:
|
|
160
|
+
pass
|
|
161
|
+
elif any(s.name.startswith(prefix) for prefix in ignorePrefixes):
|
|
162
|
+
pass
|
|
163
|
+
elif any(s.name.endswith(suffix) for suffix in ignoreSuffixes):
|
|
164
|
+
pass
|
|
165
|
+
elif s.data_size == 0:
|
|
166
|
+
pass # No warning for empty sections
|
|
167
|
+
else:
|
|
168
|
+
logger.warning("ignored: %s / size: %d", s.name, s.data_size)
|
|
169
|
+
|
|
170
|
+
return m
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def printSz(sz, unknown_msg=""):
|
|
174
|
+
"""Helper function for printing file sizes."""
|
|
175
|
+
if sz is None:
|
|
176
|
+
return f"unknown [{unknown_msg}]" if unknown_msg else "unknown"
|
|
177
|
+
import humanize
|
|
178
|
+
|
|
179
|
+
return humanize.naturalsize(sz) + " (" + hex(sz) + ")"
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def parse_cmdline():
|
|
183
|
+
"""Cmdline interface definition."""
|
|
184
|
+
parser = argparse.ArgumentParser()
|
|
185
|
+
parser.add_argument("elf", metavar="ELF", type=str, nargs=1, help="The target ELF file")
|
|
186
|
+
parser.add_argument(
|
|
187
|
+
"--out",
|
|
188
|
+
"-o",
|
|
189
|
+
metavar="FILE",
|
|
190
|
+
type=str,
|
|
191
|
+
default="",
|
|
192
|
+
help="""Output CSV file (default: -)""",
|
|
193
|
+
)
|
|
194
|
+
args = parser.parse_args()
|
|
195
|
+
|
|
196
|
+
elfFile = args.elf[0]
|
|
197
|
+
csvFile = args.out
|
|
198
|
+
|
|
199
|
+
return elfFile, csvFile
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def get_results(elfFile):
|
|
203
|
+
"""Converts and returns collected data."""
|
|
204
|
+
staticSizes = parseElf(elfFile)
|
|
205
|
+
|
|
206
|
+
romSize = sum([size for key, size in staticSizes.items() if key.startswith("rom_")])
|
|
207
|
+
ramSize = sum([size for key, size in staticSizes.items() if key.startswith("ram_")])
|
|
208
|
+
|
|
209
|
+
results = {
|
|
210
|
+
"rom": romSize,
|
|
211
|
+
"rom_rodata": staticSizes["rom_rodata"],
|
|
212
|
+
"rom_code": staticSizes["rom_code"],
|
|
213
|
+
"rom_misc": staticSizes["rom_misc"],
|
|
214
|
+
"ram": ramSize,
|
|
215
|
+
"ram_data": staticSizes["ram_data"],
|
|
216
|
+
"ram_zdata": staticSizes["ram_zdata"],
|
|
217
|
+
}
|
|
218
|
+
return results
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def print_results(results):
|
|
222
|
+
"""Displaying a fancy overview."""
|
|
223
|
+
print("=== Results ===")
|
|
224
|
+
print("ROM usage: " + printSz(results["rom"]))
|
|
225
|
+
print(" read-only data: " + printSz(results["rom_rodata"]))
|
|
226
|
+
print(" code: " + printSz(results["rom_code"]))
|
|
227
|
+
print(" other required: " + printSz(results["rom_misc"]))
|
|
228
|
+
print("RAM usage: " + printSz(results["ram"]))
|
|
229
|
+
print(" data: " + printSz(results["ram_data"]))
|
|
230
|
+
print(" zero-init data: " + printSz(results["ram_zdata"]))
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def write_csv(filename, results):
|
|
234
|
+
"""Utility for writing a CSV file."""
|
|
235
|
+
# Write metrics to file
|
|
236
|
+
if filename:
|
|
237
|
+
with open(filename, "w", encoding="utf-8") as f:
|
|
238
|
+
writer = csv.DictWriter(f, fieldnames=results.keys())
|
|
239
|
+
writer.writeheader()
|
|
240
|
+
writer.writerow(results)
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
def main():
|
|
244
|
+
"""Main entry point for command line usage."""
|
|
245
|
+
elfFile, csvFile = parse_cmdline()
|
|
246
|
+
|
|
247
|
+
results = get_results(elfFile)
|
|
248
|
+
|
|
249
|
+
print_results(results)
|
|
250
|
+
|
|
251
|
+
if csvFile:
|
|
252
|
+
write_csv(csvFile, results)
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
if __name__ == "__main__":
|
|
256
|
+
main()
|
|
@@ -0,0 +1,84 @@
|
|
|
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 Host/x86 Target definitions"""
|
|
20
|
+
|
|
21
|
+
import stat
|
|
22
|
+
from pathlib import Path
|
|
23
|
+
|
|
24
|
+
from mlonmcu.config import str2bool
|
|
25
|
+
from .common import cli, execute
|
|
26
|
+
from .target import Target
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class HostX86Target(Target):
|
|
30
|
+
"""Target using the x86 host system
|
|
31
|
+
|
|
32
|
+
Mainly interesting to easy testing and debugging because benchmarking is not possible.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
FEATURES = Target.FEATURES + ["gdbserver"]
|
|
36
|
+
|
|
37
|
+
DEFAULTS = {
|
|
38
|
+
**Target.DEFAULTS,
|
|
39
|
+
"gdbserver_enable": False,
|
|
40
|
+
"gdbserver_attach": False,
|
|
41
|
+
"gdbserver_port": 2222,
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
def __init__(self, name="host_x86", features=None, config=None):
|
|
45
|
+
super().__init__(name, features=features, config=config)
|
|
46
|
+
self.gdb_path = "gdb"
|
|
47
|
+
self.gdb_server_path = "gdbserver"
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def gdbserver_enable(self):
|
|
51
|
+
value = self.config["gdbserver_enable"]
|
|
52
|
+
return str2bool(value) if not isinstance(value, (bool, int)) else value
|
|
53
|
+
|
|
54
|
+
@property
|
|
55
|
+
def gdbserver_attach(self):
|
|
56
|
+
value = self.config["gdbserver_attach"]
|
|
57
|
+
return str2bool(value) if not isinstance(value, (bool, int)) else value
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def gdbserver_port(self):
|
|
61
|
+
return int(self.config["gdbserver_port"])
|
|
62
|
+
|
|
63
|
+
def exec(self, program, *args, **kwargs):
|
|
64
|
+
def make_executable(exe):
|
|
65
|
+
f = Path(exe)
|
|
66
|
+
f.chmod(f.stat().st_mode | stat.S_IEXEC)
|
|
67
|
+
|
|
68
|
+
make_executable(program)
|
|
69
|
+
if self.gdbserver_enable:
|
|
70
|
+
if self.gdbserver_attach:
|
|
71
|
+
raise NotImplementedError
|
|
72
|
+
# return execute(self.gdb_path, program, *args, **kwargs)
|
|
73
|
+
else:
|
|
74
|
+
comm = f"127.0.0.1:{self.gdbserver_port}"
|
|
75
|
+
return execute(self.gdb_server_path, comm, program, *args, **kwargs)
|
|
76
|
+
|
|
77
|
+
return execute(program, *args, **kwargs)
|
|
78
|
+
|
|
79
|
+
def get_arch(self):
|
|
80
|
+
return "x86"
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
if __name__ == "__main__":
|
|
84
|
+
cli(target=HostX86Target)
|
|
@@ -0,0 +1,75 @@
|
|
|
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 io
|
|
20
|
+
import csv
|
|
21
|
+
import ast
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Metrics:
|
|
25
|
+
def __init__(self):
|
|
26
|
+
self.data = {}
|
|
27
|
+
self.optional_keys = []
|
|
28
|
+
self.order = []
|
|
29
|
+
|
|
30
|
+
@staticmethod
|
|
31
|
+
def from_csv(text):
|
|
32
|
+
# TODO: how to find out data types? -> pandas?
|
|
33
|
+
lines = text.splitlines()
|
|
34
|
+
assert len(lines) == 2, "Metrics should only have two lines"
|
|
35
|
+
# headers, data = lines[0].split(","), lines[1]
|
|
36
|
+
empty = False
|
|
37
|
+
for line in lines:
|
|
38
|
+
if len(line.strip()) == 0:
|
|
39
|
+
empty = True
|
|
40
|
+
ret = Metrics()
|
|
41
|
+
if not empty:
|
|
42
|
+
reader = csv.DictReader(lines)
|
|
43
|
+
data = list(reader)[0]
|
|
44
|
+
ret.data = data
|
|
45
|
+
ret.order = list(data.keys())
|
|
46
|
+
return ret
|
|
47
|
+
|
|
48
|
+
def add(self, name, value, optional=False, overwrite=False, prepend=False):
|
|
49
|
+
if not overwrite:
|
|
50
|
+
assert name not in self.data, "Column with the same name already exists in metrics"
|
|
51
|
+
self.data[name] = value
|
|
52
|
+
if optional:
|
|
53
|
+
self.optional_keys.append(name)
|
|
54
|
+
if prepend:
|
|
55
|
+
self.order.insert(0, name)
|
|
56
|
+
else:
|
|
57
|
+
self.order.append(name)
|
|
58
|
+
|
|
59
|
+
def get(self, name):
|
|
60
|
+
value = self.data[name]
|
|
61
|
+
return (ast.literal_eval(value) if len(value) > 0 else None) if isinstance(value, str) else value
|
|
62
|
+
|
|
63
|
+
def has(self, name):
|
|
64
|
+
return name in self.data
|
|
65
|
+
|
|
66
|
+
def get_data(self, include_optional=False):
|
|
67
|
+
return {key: self.get(key) for key in self.order if key not in self.optional_keys or include_optional}
|
|
68
|
+
|
|
69
|
+
def to_csv(self, include_optional=False):
|
|
70
|
+
data = self.get_data(include_optional=include_optional)
|
|
71
|
+
output = io.StringIO()
|
|
72
|
+
writer = csv.DictWriter(output, fieldnames=data.keys())
|
|
73
|
+
writer.writeheader()
|
|
74
|
+
writer.writerow(data)
|
|
75
|
+
return output.getvalue()
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
from .etiss_pulpino import EtissPulpinoTarget
|
|
2
|
+
from .spike import SpikeTarget
|
|
3
|
+
from .ovpsim import OVPSimTarget
|
|
4
|
+
from .riscv_qemu import RiscvQemuTarget
|
|
5
|
+
from .gvsoc_pulp import GvsocPulpTarget
|
|
6
|
+
|
|
7
|
+
__all__ = ["EtissPulpinoTarget", "SpikeTarget", "OVPSimTarget", "RiscvQemuTarget", "GvsocPulpTarget"]
|