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.
Files changed (376) hide show
  1. mlonmcu/__init__.py +26 -0
  2. mlonmcu/artifact.py +172 -0
  3. mlonmcu/cli/__init__.py +19 -0
  4. mlonmcu/cli/build.py +119 -0
  5. mlonmcu/cli/cleanup.py +75 -0
  6. mlonmcu/cli/common.py +227 -0
  7. mlonmcu/cli/compile.py +87 -0
  8. mlonmcu/cli/env.py +68 -0
  9. mlonmcu/cli/export.py +93 -0
  10. mlonmcu/cli/flow.py +67 -0
  11. mlonmcu/cli/helper/__init__.py +18 -0
  12. mlonmcu/cli/helper/filter.py +25 -0
  13. mlonmcu/cli/helper/parse.py +159 -0
  14. mlonmcu/cli/init.py +130 -0
  15. mlonmcu/cli/load.py +87 -0
  16. mlonmcu/cli/main.py +116 -0
  17. mlonmcu/cli/models.py +48 -0
  18. mlonmcu/cli/run.py +56 -0
  19. mlonmcu/cli/setup.py +136 -0
  20. mlonmcu/cli/tune.py +48 -0
  21. mlonmcu/config.py +219 -0
  22. mlonmcu/context/__init__.py +22 -0
  23. mlonmcu/context/context.py +545 -0
  24. mlonmcu/context/read_write_filelock.py +327 -0
  25. mlonmcu/environment/__init__.py +18 -0
  26. mlonmcu/environment/config.py +214 -0
  27. mlonmcu/environment/environment.py +501 -0
  28. mlonmcu/environment/init.py +191 -0
  29. mlonmcu/environment/list.py +81 -0
  30. mlonmcu/environment/loader.py +250 -0
  31. mlonmcu/environment/templates.py +69 -0
  32. mlonmcu/environment/writer.py +117 -0
  33. mlonmcu/feature/__init__.py +18 -0
  34. mlonmcu/feature/feature.py +230 -0
  35. mlonmcu/feature/features.py +1537 -0
  36. mlonmcu/feature/type.py +33 -0
  37. mlonmcu/flow/__init__.py +61 -0
  38. mlonmcu/flow/backend.py +234 -0
  39. mlonmcu/flow/framework.py +69 -0
  40. mlonmcu/flow/tflm/__init__.py +23 -0
  41. mlonmcu/flow/tflm/backend/__init__.py +23 -0
  42. mlonmcu/flow/tflm/backend/backend.py +47 -0
  43. mlonmcu/flow/tflm/backend/tflmc.py +129 -0
  44. mlonmcu/flow/tflm/backend/tflmi.py +385 -0
  45. mlonmcu/flow/tflm/framework.py +81 -0
  46. mlonmcu/flow/tvm/__init__.py +23 -0
  47. mlonmcu/flow/tvm/backend/__init__.py +26 -0
  48. mlonmcu/flow/tvm/backend/backend.py +282 -0
  49. mlonmcu/flow/tvm/backend/model_info.py +307 -0
  50. mlonmcu/flow/tvm/backend/python_utils.py +36 -0
  51. mlonmcu/flow/tvm/backend/tuner.py +41 -0
  52. mlonmcu/flow/tvm/backend/tvmaot.py +162 -0
  53. mlonmcu/flow/tvm/backend/tvmaotplus.py +51 -0
  54. mlonmcu/flow/tvm/backend/tvmc_utils.py +172 -0
  55. mlonmcu/flow/tvm/backend/tvmcg.py +102 -0
  56. mlonmcu/flow/tvm/backend/tvmllvm.py +106 -0
  57. mlonmcu/flow/tvm/backend/tvmrt.py +151 -0
  58. mlonmcu/flow/tvm/backend/wrapper.py +645 -0
  59. mlonmcu/flow/tvm/framework.py +96 -0
  60. mlonmcu/logging.py +79 -0
  61. mlonmcu/mlonmcu.py +19 -0
  62. mlonmcu/models/__init__.py +31 -0
  63. mlonmcu/models/convert_data.py +107 -0
  64. mlonmcu/models/frontend.py +571 -0
  65. mlonmcu/models/group.py +29 -0
  66. mlonmcu/models/lookup.py +345 -0
  67. mlonmcu/models/metadata.py +133 -0
  68. mlonmcu/models/model.py +104 -0
  69. mlonmcu/models/options.py +64 -0
  70. mlonmcu/models/utils.py +136 -0
  71. mlonmcu/platform/__init__.py +27 -0
  72. mlonmcu/platform/_platform.py +46 -0
  73. mlonmcu/platform/espidf/__init__.py +25 -0
  74. mlonmcu/platform/espidf/espidf.py +489 -0
  75. mlonmcu/platform/espidf/espidf_target.py +257 -0
  76. mlonmcu/platform/lookup.py +126 -0
  77. mlonmcu/platform/microtvm/__init__.py +25 -0
  78. mlonmcu/platform/microtvm/microtvm.py +580 -0
  79. mlonmcu/platform/microtvm/microtvm_arduino_target.py +68 -0
  80. mlonmcu/platform/microtvm/microtvm_backend.py +64 -0
  81. mlonmcu/platform/microtvm/microtvm_espidf_target.py +94 -0
  82. mlonmcu/platform/microtvm/microtvm_etissvp_target.py +98 -0
  83. mlonmcu/platform/microtvm/microtvm_host_target.py +46 -0
  84. mlonmcu/platform/microtvm/microtvm_spike_target.py +230 -0
  85. mlonmcu/platform/microtvm/microtvm_target.py +189 -0
  86. mlonmcu/platform/microtvm/microtvm_template_target.py +55 -0
  87. mlonmcu/platform/microtvm/microtvm_zephyr_target.py +91 -0
  88. mlonmcu/platform/mlif/__init__.py +25 -0
  89. mlonmcu/platform/mlif/mlif.py +300 -0
  90. mlonmcu/platform/mlif/mlif_target.py +86 -0
  91. mlonmcu/platform/platform.py +244 -0
  92. mlonmcu/platform/tvm/__init__.py +25 -0
  93. mlonmcu/platform/tvm/tvm.py +429 -0
  94. mlonmcu/platform/tvm/tvm_backend.py +57 -0
  95. mlonmcu/platform/tvm/tvm_target.py +165 -0
  96. mlonmcu/platform/zephyr/__init__.py +25 -0
  97. mlonmcu/platform/zephyr/zephyr.py +450 -0
  98. mlonmcu/platform/zephyr/zephyr_target.py +110 -0
  99. mlonmcu/plugins.py +26 -0
  100. mlonmcu/report.py +99 -0
  101. mlonmcu/session/__init__.py +18 -0
  102. mlonmcu/session/postprocess/__init__.py +43 -0
  103. mlonmcu/session/postprocess/postprocess.py +62 -0
  104. mlonmcu/session/postprocess/postprocesses.py +487 -0
  105. mlonmcu/session/run.py +1008 -0
  106. mlonmcu/session/session.py +373 -0
  107. mlonmcu/setup/__init__.py +18 -0
  108. mlonmcu/setup/cache.py +147 -0
  109. mlonmcu/setup/gen_requirements.py +619 -0
  110. mlonmcu/setup/setup.py +285 -0
  111. mlonmcu/setup/task.py +380 -0
  112. mlonmcu/setup/tasks/__init__.py +40 -0
  113. mlonmcu/setup/tasks/arm_gcc.py +58 -0
  114. mlonmcu/setup/tasks/cmsisnn.py +151 -0
  115. mlonmcu/setup/tasks/common.py +36 -0
  116. mlonmcu/setup/tasks/corstone300.py +64 -0
  117. mlonmcu/setup/tasks/espidf.py +87 -0
  118. mlonmcu/setup/tasks/etiss.py +147 -0
  119. mlonmcu/setup/tasks/llvm.py +67 -0
  120. mlonmcu/setup/tasks/mlif.py +49 -0
  121. mlonmcu/setup/tasks/muriscvnn.py +166 -0
  122. mlonmcu/setup/tasks/pulp.py +192 -0
  123. mlonmcu/setup/tasks/riscv_gcc.py +146 -0
  124. mlonmcu/setup/tasks/spike.py +190 -0
  125. mlonmcu/setup/tasks/tf.py +92 -0
  126. mlonmcu/setup/tasks/tflite.py +59 -0
  127. mlonmcu/setup/tasks/tflmc.py +141 -0
  128. mlonmcu/setup/tasks/tvm.py +172 -0
  129. mlonmcu/setup/tasks/utvmcg.py +96 -0
  130. mlonmcu/setup/tasks/zephyr.py +119 -0
  131. mlonmcu/setup/utils.py +374 -0
  132. mlonmcu/target/__init__.py +37 -0
  133. mlonmcu/target/_target.py +41 -0
  134. mlonmcu/target/arm/__init__.py +3 -0
  135. mlonmcu/target/arm/corstone300.py +235 -0
  136. mlonmcu/target/arm/util.py +109 -0
  137. mlonmcu/target/common.py +194 -0
  138. mlonmcu/target/elf.py +256 -0
  139. mlonmcu/target/host_x86.py +84 -0
  140. mlonmcu/target/metrics.py +75 -0
  141. mlonmcu/target/riscv/__init__.py +7 -0
  142. mlonmcu/target/riscv/etiss_pulpino.py +462 -0
  143. mlonmcu/target/riscv/gvsoc_pulp.py +215 -0
  144. mlonmcu/target/riscv/ovpsim.py +301 -0
  145. mlonmcu/target/riscv/riscv.py +185 -0
  146. mlonmcu/target/riscv/riscv_qemu.py +166 -0
  147. mlonmcu/target/riscv/spike.py +243 -0
  148. mlonmcu/target/riscv/util.py +134 -0
  149. mlonmcu/target/target.py +200 -0
  150. mlonmcu/utils.py +49 -0
  151. mlonmcu/version.py +21 -0
  152. mlonmcu-0.3.0.dev0.dist-info/LICENSE +202 -0
  153. mlonmcu-0.3.0.dev0.dist-info/METADATA +343 -0
  154. mlonmcu-0.3.0.dev0.dist-info/NOTICE +8 -0
  155. mlonmcu-0.3.0.dev0.dist-info/RECORD +376 -0
  156. mlonmcu-0.3.0.dev0.dist-info/WHEEL +5 -0
  157. mlonmcu-0.3.0.dev0.dist-info/entry_points.txt +3 -0
  158. mlonmcu-0.3.0.dev0.dist-info/top_level.txt +1 -0
  159. resources/frameworks/tvm/crt_config/README.md +7 -0
  160. resources/frameworks/tvm/crt_config/crt_config.h +53 -0
  161. resources/frameworks/tvm/tuning_records/riscv_cpu_v0.01.log.best +46 -0
  162. resources/patches/fix_esp32c3_march.patch +20 -0
  163. resources/patches/pulp_freertos_support.patch +55 -0
  164. resources/platforms/espidf/micro_speech_esp32devboard/CMakeLists.txt +29 -0
  165. resources/platforms/espidf/micro_speech_esp32devboard/README.md +70 -0
  166. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/CMakeLists.txt +78 -0
  167. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/Kconfig +76 -0
  168. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/default_data.c +26 -0
  169. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/default_model_support/process_input.c +35 -0
  170. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/default_model_support/process_output.c +45 -0
  171. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/include/exit.h +26 -0
  172. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/include/ml_interface.h +70 -0
  173. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/include/printing.h +31 -0
  174. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/ml_interface.c +74 -0
  175. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/ml_interface_tflm.cc +64 -0
  176. resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/ml_interface_tvm.c +53 -0
  177. resources/platforms/espidf/micro_speech_esp32devboard/components/tflite-lib/CMakeLists.txt +140 -0
  178. resources/platforms/espidf/micro_speech_esp32devboard/components/tflite-lib/Kconfig +8 -0
  179. resources/platforms/espidf/micro_speech_esp32devboard/components/tvm-lib/CMakeLists.txt +66 -0
  180. resources/platforms/espidf/micro_speech_esp32devboard/components/tvm-lib/Kconfig +7 -0
  181. resources/platforms/espidf/micro_speech_esp32devboard/example_test.py +38 -0
  182. resources/platforms/espidf/micro_speech_esp32devboard/info.txt +9 -0
  183. resources/platforms/espidf/micro_speech_esp32devboard/main/CMakeLists.txt +58 -0
  184. resources/platforms/espidf/micro_speech_esp32devboard/main/audio_provider.cc +193 -0
  185. resources/platforms/espidf/micro_speech_esp32devboard/main/audio_provider.h +49 -0
  186. resources/platforms/espidf/micro_speech_esp32devboard/main/command_responder.cc +53 -0
  187. resources/platforms/espidf/micro_speech_esp32devboard/main/command_responder.h +35 -0
  188. resources/platforms/espidf/micro_speech_esp32devboard/main/feature_provider.cc +132 -0
  189. resources/platforms/espidf/micro_speech_esp32devboard/main/feature_provider.cc.orig +145 -0
  190. resources/platforms/espidf/micro_speech_esp32devboard/main/feature_provider.h +55 -0
  191. resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/COPYING +11 -0
  192. resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/_kiss_fft_guts.h +168 -0
  193. resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/kiss_fft.c +408 -0
  194. resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/kiss_fft.h +124 -0
  195. resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/tools/kiss_fftr.c +159 -0
  196. resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/tools/kiss_fftr.h +46 -0
  197. resources/platforms/espidf/micro_speech_esp32devboard/main/main.cc +63 -0
  198. resources/platforms/espidf/micro_speech_esp32devboard/main/main_functions.cc +204 -0
  199. resources/platforms/espidf/micro_speech_esp32devboard/main/main_functions.h +37 -0
  200. resources/platforms/espidf/micro_speech_esp32devboard/main/micro_features_generator.cc +121 -0
  201. resources/platforms/espidf/micro_speech_esp32devboard/main/micro_features_generator.h +38 -0
  202. resources/platforms/espidf/micro_speech_esp32devboard/main/micro_model_settings.cc +23 -0
  203. resources/platforms/espidf/micro_speech_esp32devboard/main/micro_model_settings.h +43 -0
  204. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/bits.h +102 -0
  205. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft.cc +52 -0
  206. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft.h +50 -0
  207. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft_util.cc +69 -0
  208. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft_util.h +34 -0
  209. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank.c +134 -0
  210. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank.h +63 -0
  211. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank_util.c +220 -0
  212. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank_util.h +50 -0
  213. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend.c +72 -0
  214. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend.h +64 -0
  215. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend_util.c +85 -0
  216. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend_util.h +52 -0
  217. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/kiss_fft_common.h +48 -0
  218. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/kiss_fft_int16.cc +8 -0
  219. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/kiss_fft_int16.h +34 -0
  220. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_lut.c +30 -0
  221. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_lut.h +40 -0
  222. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale.c +83 -0
  223. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale.h +39 -0
  224. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale_util.c +27 -0
  225. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale_util.h +45 -0
  226. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction.c +51 -0
  227. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction.h +46 -0
  228. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction_util.c +45 -0
  229. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction_util.h +50 -0
  230. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control.c +56 -0
  231. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control.h +47 -0
  232. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control_util.c +92 -0
  233. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control_util.h +57 -0
  234. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window.c +70 -0
  235. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window.h +49 -0
  236. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window_util.c +73 -0
  237. resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window_util.h +45 -0
  238. resources/platforms/espidf/micro_speech_esp32devboard/main/pins.c +14 -0
  239. resources/platforms/espidf/micro_speech_esp32devboard/main/pins.h +30 -0
  240. resources/platforms/espidf/micro_speech_esp32devboard/main/recognize_commands.cc +150 -0
  241. resources/platforms/espidf/micro_speech_esp32devboard/main/recognize_commands.h +173 -0
  242. resources/platforms/espidf/micro_speech_esp32devboard/main/ringbuf.c +333 -0
  243. resources/platforms/espidf/micro_speech_esp32devboard/main/ringbuf.h +74 -0
  244. resources/platforms/espidf/micro_speech_esp32devboard/sdkconfig.defaults +36 -0
  245. resources/platforms/espidf/project/CMakeLists.txt +29 -0
  246. resources/platforms/espidf/project/README.md +70 -0
  247. resources/platforms/espidf/project/components/mlif/CMakeLists.txt +77 -0
  248. resources/platforms/espidf/project/components/mlif/Kconfig +76 -0
  249. resources/platforms/espidf/project/components/mlif/default_data.c +26 -0
  250. resources/platforms/espidf/project/components/mlif/default_model_support/process_input.c +35 -0
  251. resources/platforms/espidf/project/components/mlif/default_model_support/process_output.c +45 -0
  252. resources/platforms/espidf/project/components/mlif/include/exit.h +26 -0
  253. resources/platforms/espidf/project/components/mlif/include/ml_interface.h +60 -0
  254. resources/platforms/espidf/project/components/mlif/include/printing.h +31 -0
  255. resources/platforms/espidf/project/components/mlif/ml_interface.c +54 -0
  256. resources/platforms/espidf/project/components/mlif/ml_interface_tflm.cc +40 -0
  257. resources/platforms/espidf/project/components/mlif/ml_interface_tvm.c +40 -0
  258. resources/platforms/espidf/project/components/tflite-lib/CMakeLists.txt +142 -0
  259. resources/platforms/espidf/project/components/tflite-lib/Kconfig +8 -0
  260. resources/platforms/espidf/project/components/tvm-lib/CMakeLists.txt +66 -0
  261. resources/platforms/espidf/project/components/tvm-lib/Kconfig +7 -0
  262. resources/platforms/espidf/project/example_test.py +38 -0
  263. resources/platforms/espidf/project/main/CMakeLists.txt +25 -0
  264. resources/platforms/espidf/project/main/main.c +57 -0
  265. resources/platforms/espidf/project/sdkconfig.defaults +26 -0
  266. resources/platforms/zephyr/project/CMakeLists.txt +22 -0
  267. resources/platforms/zephyr/project/Kconfig +101 -0
  268. resources/platforms/zephyr/project/README.rst +33 -0
  269. resources/platforms/zephyr/project/cmake/AddAllSubdirs.cmake +21 -0
  270. resources/platforms/zephyr/project/cmake/ChooseTarget.cmake +22 -0
  271. resources/platforms/zephyr/project/cmake/LinkTFLite.cmake +223 -0
  272. resources/platforms/zephyr/project/cmake/LinkTVM.cmake +68 -0
  273. resources/platforms/zephyr/project/cmake/LookupClang.cmake +41 -0
  274. resources/platforms/zephyr/project/cmake/backends/tflmc.cmake +5 -0
  275. resources/platforms/zephyr/project/cmake/backends/tflmi.cmake +5 -0
  276. resources/platforms/zephyr/project/cmake/backends/tvmaot.cmake +10 -0
  277. resources/platforms/zephyr/project/cmake/backends/tvmaotplus.cmake +10 -0
  278. resources/platforms/zephyr/project/cmake/backends/tvmcg.cmake +10 -0
  279. resources/platforms/zephyr/project/cmake/backends/tvmllvm.cmake +8 -0
  280. resources/platforms/zephyr/project/cmake/backends/tvmrt.cmake +8 -0
  281. resources/platforms/zephyr/project/cmake/extras.cmake +9 -0
  282. resources/platforms/zephyr/project/cmake/features/auto_vectorize_gcc.cmake +65 -0
  283. resources/platforms/zephyr/project/cmake/features/auto_vectorize_llvm.cmake +20 -0
  284. resources/platforms/zephyr/project/cmake/features/cmsisnn.cmake +86 -0
  285. resources/platforms/zephyr/project/cmake/features/muriscvnn.cmake +87 -0
  286. resources/platforms/zephyr/project/cmake/frameworks/tflm.cmake +1 -0
  287. resources/platforms/zephyr/project/cmake/frameworks/tflm_mlif.cmake +8 -0
  288. resources/platforms/zephyr/project/cmake/frameworks/tvm.cmake +1 -0
  289. resources/platforms/zephyr/project/cmake/frameworks/tvm_mlif.cmake +37 -0
  290. resources/platforms/zephyr/project/lib/CMakeLists.txt +13 -0
  291. resources/platforms/zephyr/project/lib/drivers/fake_input.c +10 -0
  292. resources/platforms/zephyr/project/lib/drivers/fake_input.h +8 -0
  293. resources/platforms/zephyr/project/lib/ml_interface/CMakeLists.txt +31 -0
  294. resources/platforms/zephyr/project/lib/ml_interface/default_data.c +8 -0
  295. resources/platforms/zephyr/project/lib/ml_interface/default_model_support/CMakeLists.txt +2 -0
  296. resources/platforms/zephyr/project/lib/ml_interface/default_model_support/process_input.c +17 -0
  297. resources/platforms/zephyr/project/lib/ml_interface/default_model_support/process_output.c +27 -0
  298. resources/platforms/zephyr/project/lib/ml_interface/ml_interface.c +36 -0
  299. resources/platforms/zephyr/project/lib/ml_interface/ml_interface.h +47 -0
  300. resources/platforms/zephyr/project/lib/ml_interface/ml_interface_tflm.cc +22 -0
  301. resources/platforms/zephyr/project/lib/ml_interface/ml_interface_tvm.c +22 -0
  302. resources/platforms/zephyr/project/lib/support/CMakeLists.txt +2 -0
  303. resources/platforms/zephyr/project/lib/support/dummy.c +0 -0
  304. resources/platforms/zephyr/project/lib/support/exit.h +8 -0
  305. resources/platforms/zephyr/project/lib/support/printing.h +11 -0
  306. resources/platforms/zephyr/project/lib/support/quantize.h +23 -0
  307. resources/platforms/zephyr/project/lib/targets/corstone300.c +62 -0
  308. resources/platforms/zephyr/project/lib/targets/default.c +2 -0
  309. resources/platforms/zephyr/project/lib/targets/etiss_pulpino.c +112 -0
  310. resources/platforms/zephyr/project/lib/targets/generic_riscv.c +112 -0
  311. resources/platforms/zephyr/project/lib/targets/riscv_qemu.c +112 -0
  312. resources/platforms/zephyr/project/lib/targets/target.h +2 -0
  313. resources/platforms/zephyr/project/prj.conf +11 -0
  314. resources/platforms/zephyr/project/sample.yaml +19 -0
  315. resources/platforms/zephyr/project/src/main.c +71 -0
  316. resources/platforms/zephyr/project2/CMakeLists.txt +72 -0
  317. resources/platforms/zephyr/project2/Kconfig +101 -0
  318. resources/platforms/zephyr/project2/README.rst +33 -0
  319. resources/platforms/zephyr/project2/cmake/AddAllSubdirs.cmake +21 -0
  320. resources/platforms/zephyr/project2/cmake/ChooseTarget.cmake +22 -0
  321. resources/platforms/zephyr/project2/cmake/LinkTFLite.cmake +223 -0
  322. resources/platforms/zephyr/project2/cmake/LinkTVM.cmake +68 -0
  323. resources/platforms/zephyr/project2/cmake/LookupClang.cmake +41 -0
  324. resources/platforms/zephyr/project2/cmake/backends/tflmc.cmake +5 -0
  325. resources/platforms/zephyr/project2/cmake/backends/tflmi.cmake +5 -0
  326. resources/platforms/zephyr/project2/cmake/backends/tvmaot.cmake +10 -0
  327. resources/platforms/zephyr/project2/cmake/backends/tvmaotplus.cmake +10 -0
  328. resources/platforms/zephyr/project2/cmake/backends/tvmcg.cmake +10 -0
  329. resources/platforms/zephyr/project2/cmake/backends/tvmllvm.cmake +8 -0
  330. resources/platforms/zephyr/project2/cmake/backends/tvmrt.cmake +8 -0
  331. resources/platforms/zephyr/project2/cmake/extras.cmake +9 -0
  332. resources/platforms/zephyr/project2/cmake/features/auto_vectorize_gcc.cmake +65 -0
  333. resources/platforms/zephyr/project2/cmake/features/auto_vectorize_llvm.cmake +20 -0
  334. resources/platforms/zephyr/project2/cmake/features/cmsisnn.cmake +86 -0
  335. resources/platforms/zephyr/project2/cmake/features/muriscvnn.cmake +87 -0
  336. resources/platforms/zephyr/project2/cmake/frameworks/tflm.cmake +1 -0
  337. resources/platforms/zephyr/project2/cmake/frameworks/tflm_mlif.cmake +8 -0
  338. resources/platforms/zephyr/project2/cmake/frameworks/tvm.cmake +1 -0
  339. resources/platforms/zephyr/project2/cmake/frameworks/tvm_mlif.cmake +37 -0
  340. resources/platforms/zephyr/project2/default_data.c +8 -0
  341. resources/platforms/zephyr/project2/default_model_support/CMakeLists.txt +3 -0
  342. resources/platforms/zephyr/project2/default_model_support/process_input.c +17 -0
  343. resources/platforms/zephyr/project2/default_model_support/process_output.c +27 -0
  344. resources/platforms/zephyr/project2/lib/CMakeLists.txt +13 -0
  345. resources/platforms/zephyr/project2/lib/drivers/fake_input.c +10 -0
  346. resources/platforms/zephyr/project2/lib/drivers/fake_input.h +8 -0
  347. resources/platforms/zephyr/project2/lib/support/CMakeLists.txt +2 -0
  348. resources/platforms/zephyr/project2/lib/support/dummy.c +0 -0
  349. resources/platforms/zephyr/project2/lib/support/exit.h +8 -0
  350. resources/platforms/zephyr/project2/lib/support/printing.h +11 -0
  351. resources/platforms/zephyr/project2/lib/support/quantize.h +23 -0
  352. resources/platforms/zephyr/project2/lib/targets/corstone300.c +62 -0
  353. resources/platforms/zephyr/project2/lib/targets/default.c +2 -0
  354. resources/platforms/zephyr/project2/lib/targets/etiss_pulpino.c +112 -0
  355. resources/platforms/zephyr/project2/lib/targets/generic_riscv.c +112 -0
  356. resources/platforms/zephyr/project2/lib/targets/riscv_qemu.c +112 -0
  357. resources/platforms/zephyr/project2/lib/targets/target.h +2 -0
  358. resources/platforms/zephyr/project2/ml_interface.c +36 -0
  359. resources/platforms/zephyr/project2/ml_interface.h +47 -0
  360. resources/platforms/zephyr/project2/ml_interface_tflm.cc +22 -0
  361. resources/platforms/zephyr/project2/ml_interface_tvm.c +22 -0
  362. resources/platforms/zephyr/project2/prj.conf +13 -0
  363. resources/platforms/zephyr/project2/sample.yaml +19 -0
  364. resources/platforms/zephyr/project2/settings.json +6 -0
  365. resources/platforms/zephyr/project2/src/main.c +35 -0
  366. resources/pycharm/.run/README.md +73 -0
  367. resources/pycharm/.run/step1_ init env.run.xml +24 -0
  368. resources/pycharm/.run/step2_ setup.run.xml +25 -0
  369. resources/pycharm/.run/step3_ run resnet on pulpxpulpissimo.run.xml +25 -0
  370. resources/templates/default.yml.j2 +258 -0
  371. resources/templates/dev.yml.j2 +212 -0
  372. resources/templates/minimal.yml.j2 +234 -0
  373. resources/templates/phi.yml.j2 +282 -0
  374. resources/templates/pulp.yml.j2 +267 -0
  375. resources/templates/research.yml.j2 +237 -0
  376. resources/templates/tumeda.yml.j2 +239 -0
@@ -0,0 +1,385 @@
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 sys
20
+
21
+ from .backend import TFLMBackend
22
+ from mlonmcu.config import str2bool
23
+ from mlonmcu.flow.backend import main
24
+ from mlonmcu.artifact import Artifact, ArtifactFormat
25
+
26
+
27
+ # TODO: move to another place
28
+ def make_hex_array(data):
29
+ out = ""
30
+ for x in data:
31
+ out += "0x{:02x}, ".format(x)
32
+ return out
33
+
34
+
35
+ class TFLMICodegen:
36
+ def __init__(self):
37
+ pass
38
+
39
+ def makeCustomOpPrototypes(self, custom_ops):
40
+ out = "namespace tflite {\n"
41
+ for op in custom_ops:
42
+ op_name = op
43
+ op_reg = op
44
+ if "|" in op:
45
+ op_name, op_reg = op.split("|")[:2]
46
+ out += "extern TfLiteRegistration *" + op_reg + "(void);\n"
47
+ out += "} //namespace tflite\n"
48
+ return out
49
+
50
+ def make_op_registrations(self, ops, custom_ops):
51
+ out = (
52
+ "static tflite::MicroMutableOpResolver<" + str(len(ops) + len(custom_ops)) + "> resolver(error_reporter);\n"
53
+ )
54
+ for op in ops:
55
+ out += (
56
+ " if (resolver.Add"
57
+ + op
58
+ + '() != kTfLiteOk) {\n error_reporter->Report("Add'
59
+ + op
60
+ + '() failed");\n exit(1);\n }\n'
61
+ )
62
+ for op in custom_ops:
63
+ op_name = op
64
+ op_reg = op
65
+ if "|" in op:
66
+ op_name, op_reg = op.split("|")[:2]
67
+ out += (
68
+ ' if (resolver.AddCustom("'
69
+ + op_name
70
+ + '", tflite::'
71
+ + op_reg
72
+ + '()) != kTfLiteOk) {\n error_reporter->Report("AddCustom'
73
+ + op_name
74
+ + '() failed");\n exit(1);\n }\n'
75
+ )
76
+ return out
77
+
78
+ def generate_header(self, prefix="model"):
79
+ upper_prefix = prefix.upper()
80
+ code = f"""
81
+ // This file is generated. Do not edit.
82
+ #ifndef {upper_prefix}_GEN_H
83
+ #define {upper_prefix}_GEN_H
84
+
85
+ #include <stddef.h>
86
+
87
+ void {prefix}_init();
88
+ void *{prefix}_input_ptr(int index);
89
+ size_t {prefix}_input_size(int index);
90
+ size_t {prefix}_inputs();
91
+ void {prefix}_invoke();
92
+ void *{prefix}_output_ptr(int index);
93
+ size_t {prefix}_output_size(int index);
94
+ size_t {prefix}_outputs();
95
+
96
+ #endif // {upper_prefix}_GEN_H
97
+ """
98
+ return code
99
+
100
+ def generate_wrapper(
101
+ self,
102
+ model,
103
+ prefix="model",
104
+ header=True,
105
+ legacy=False,
106
+ debug_arena=False,
107
+ arena_size=None,
108
+ ops=None,
109
+ custom_ops=None, # TODO: implement
110
+ registrations=None, # TODO: implement
111
+ ops_resolver=None, # TODO: implement
112
+ ):
113
+ arena_size = arena_size if arena_size is not None else TFLMIBackend.DEFAULTS["arena_size"]
114
+ ops = ops if ops else TFLMIBackend.DEFAULTS["ops"]
115
+ if not isinstance(ops, list):
116
+ assert isinstance(ops, str)
117
+ if "," in ops:
118
+ ops = ops.split(",")
119
+ else:
120
+ ops = [ops]
121
+ if len(ops) > 0:
122
+
123
+ def convert_op_name(op):
124
+ new_name = ""
125
+ prev = None
126
+ for i, c in enumerate(op):
127
+ if c == "_":
128
+ prev = c
129
+ continue
130
+ elif prev is None:
131
+ new_name += c
132
+ elif (prev == "_") or prev.isdigit():
133
+ new_name += c
134
+ elif prev.isupper():
135
+ new_name += c.lower()
136
+ elif c.islower():
137
+ new_name += c
138
+ prev = c
139
+ return new_name
140
+
141
+ op_names = list(map(convert_op_name, ops))
142
+ ops = op_names
143
+ custom_ops = custom_ops if custom_ops else TFLMIBackend.DEFAULTS["custom_ops"]
144
+ if len(custom_ops) > 0:
145
+ raise NotImplementedError
146
+ registrations = (
147
+ registrations if registrations else TFLMIBackend.DEFAULTS["registrations"]
148
+ ) # TODO: Dict or list?
149
+ if len(registrations) > 0:
150
+ raise NotImplementedError
151
+ ops_resolver = ops_resolver if ops_resolver else TFLMIBackend.DEFAULTS["ops_resolver"]
152
+ if ops_resolver != "mutable":
153
+ raise NotImplementedError
154
+
155
+ model_data = None
156
+ with open(model, "rb") as model_buf:
157
+ model_data = model_buf.read()
158
+
159
+ if header:
160
+ header_content = self.generate_header()
161
+
162
+ wrapper_content = """
163
+ // This file is generated. Do not edit.
164
+ #include "tensorflow/lite/micro/kernels/micro_ops.h"
165
+ #include "tensorflow/lite/micro/micro_error_reporter.h"
166
+ #include "tensorflow/lite/micro/micro_interpreter.h"
167
+ #include "tensorflow/lite/micro/micro_mutable_op_resolver.h"
168
+ #include "tensorflow/lite/schema/schema_generated.h"
169
+ """
170
+ if legacy:
171
+ wrapper_content += """#include "tensorflow/lite/version.h"
172
+ """
173
+ wrapper_content += """
174
+ #if defined __GNUC__
175
+ #define ALIGN(X) __attribute__((aligned(X)))
176
+ #elif defined _MSC_VER
177
+ #define ALIGN(X) __declspec(align(X))
178
+ #elif defined __TASKING__
179
+ #define ALIGN(X) __align(X)
180
+ #endif
181
+ """
182
+ if debug_arena: # This will enable the feature only if it is not overwritten by the user/compiler
183
+ wrapper_content += """
184
+ #ifndef DEBUG_ARENA_USAGE
185
+ #define DEBUG_ARENA_USAGE 1
186
+ #endif
187
+
188
+ """
189
+ wrapper_content += """const unsigned char g_model_data[] ALIGN(16) = { """
190
+ wrapper_content += make_hex_array(model_data)
191
+ wrapper_content += """ };
192
+
193
+ """
194
+ wrapper_content += self.makeCustomOpPrototypes(custom_ops)
195
+ wrapper_content += """
196
+
197
+ namespace {
198
+ tflite::ErrorReporter *error_reporter = nullptr;
199
+ const tflite::Model *model = nullptr;
200
+ tflite::MicroInterpreter *interpreter = nullptr;
201
+
202
+ // Create an area of memory to use for input, output, and intermediate arrays.
203
+ // Finding the minimum value for your model may require some trial and error.
204
+ constexpr int kTensorArenaSize = """
205
+ wrapper_content += (
206
+ str(arena_size)
207
+ + """;
208
+ uint8_t tensor_arena[kTensorArenaSize] ALIGN(16);
209
+
210
+ class DummyReporter : public tflite::ErrorReporter {
211
+ public:
212
+ ~DummyReporter() {}
213
+ int Report(const char *, va_list) override { return 0; }
214
+
215
+ private:
216
+ TF_LITE_REMOVE_VIRTUAL_DELETE
217
+ };
218
+ } // namespace
219
+
220
+ // The name of this function is important for Arduino compatibility.
221
+ """
222
+ + f"void {prefix}_init() {{"
223
+ + """
224
+ // Set up logging. Google style is to avoid globals or statics because of
225
+ // lifetime uncertainty, but since this has a trivial destructor it's okay.
226
+ // NOLINTNEXTLINE(runtime-global-variables)
227
+ #ifdef _DEBUG
228
+ static tflite::MicroErrorReporter micro_error_reporter;
229
+ #else
230
+ static DummyReporter micro_error_reporter;
231
+ #endif
232
+ error_reporter = &micro_error_reporter;
233
+
234
+ // Map the model into a usable data structure. This doesn't involve any
235
+ // copying or parsing, it's a very lightweight operation.
236
+ model = tflite::GetModel(g_model_data);
237
+ if (model->version() != TFLITE_SCHEMA_VERSION) {
238
+ error_reporter->Report("Model provided is schema version %d not equal "
239
+ "to supported version %d.",
240
+ model->version(), TFLITE_SCHEMA_VERSION);
241
+ exit(1);
242
+ }
243
+
244
+ // This pulls in all the operation implementations we need.
245
+ // NOLINTNEXTLINE(runtime-global-variables)
246
+ // static tflite::ops::micro::AllOpsResolver resolver;
247
+
248
+ """
249
+ )
250
+ wrapper_content += self.make_op_registrations(ops, custom_ops)
251
+ wrapper_content += """
252
+
253
+ // Build an interpreter to run the model with.
254
+ static tflite::MicroInterpreter static_interpreter(
255
+ model, resolver, tensor_arena, kTensorArenaSize, error_reporter);
256
+ interpreter = &static_interpreter;
257
+
258
+ // Allocate memory from the tensor_arena for the model's tensors.
259
+ TfLiteStatus allocate_status = interpreter->AllocateTensors();
260
+ if (allocate_status != kTfLiteOk) {
261
+ error_reporter->Report("AllocateTensors() failed");
262
+ exit(1);
263
+ }
264
+ }
265
+ """
266
+
267
+ wrapper_content += f"""
268
+ void *{prefix}_input_ptr(int id) {{
269
+ return interpreter->input(id)->data.data;
270
+ }}
271
+
272
+ size_t {prefix}_input_size(int id) {{
273
+ return interpreter->input(id)->bytes;
274
+ }}
275
+
276
+ size_t {prefix}_inputs() {{
277
+ return interpreter->inputs_size();
278
+ }}
279
+
280
+ void *{prefix}_output_ptr(int id) {{
281
+ return interpreter->output(id)->data.data;
282
+ }}
283
+
284
+ size_t {prefix}_output_size(int id) {{
285
+ return interpreter->output(id)->bytes;
286
+ }}
287
+
288
+ size_t {prefix}_outputs() {{
289
+ return interpreter->outputs_size();
290
+ }}
291
+
292
+ void {prefix}_invoke() {{
293
+ // Run inference, and report any error
294
+ TfLiteStatus invoke_status = interpreter->Invoke();
295
+ if (invoke_status != kTfLiteOk) {{
296
+ error_reporter->Report("Invoke failed\\n");
297
+ exit(1);
298
+ }}
299
+ #if DEBUG_ARENA_USAGE
300
+ size_t used = interpreter->arena_used_bytes();
301
+ error_reporter->Report("Arena Usage after model invocation: %d bytes\\n", used);
302
+ #endif // DEBUG_ARENA_USAGE
303
+ }}
304
+ """
305
+ if header:
306
+ return wrapper_content, header_content
307
+ else:
308
+ return wrapper_content
309
+
310
+
311
+ class TFLMIBackend(TFLMBackend):
312
+ name = "tflmi"
313
+
314
+ DEFAULTS = {
315
+ **TFLMBackend.DEFAULTS,
316
+ "arena_size": 2**20, # 1 MB
317
+ "debug_arena": False,
318
+ "ops": [],
319
+ "custom_ops": [],
320
+ "registrations": {},
321
+ "ops_resolver": "mutable",
322
+ "legacy": False,
323
+ }
324
+
325
+ REQUIRED = TFLMBackend.REQUIRED + []
326
+
327
+ def __init__(self, features=None, config=None):
328
+ super().__init__(features=features, config=config)
329
+ self.codegen = TFLMICodegen()
330
+ self.model_data = None
331
+ self.prefix = "model" # Without the _
332
+ self.artifacts = (
333
+ []
334
+ ) # TODO: either make sure that ony one model is processed at a time or move the artifacts to the methods
335
+ # TODO: decide if artifacts should be handled by code (str) or file path or binary data
336
+
337
+ @property
338
+ def legacy(self):
339
+ value = self.config["legacy"]
340
+ return str2bool(value) if not isinstance(value, (bool, int)) else value
341
+
342
+ @property
343
+ def debug_arena(self):
344
+ value = self.config["debug_arena"]
345
+ return str2bool(value) if not isinstance(value, (bool, int)) else value
346
+
347
+ @property
348
+ def arena_size(self):
349
+ return int(self.config["arena_size"])
350
+
351
+ def generate_code(self):
352
+ artifacts = []
353
+ assert self.model is not None
354
+ config_map = {key.split(".")[-1]: value for key, value in self.config.items()}
355
+ wrapper_code, header_code = self.codegen.generate_wrapper(
356
+ self.model,
357
+ prefix=self.prefix,
358
+ header=True,
359
+ **config_map,
360
+ )
361
+ artifacts.append(Artifact(f"{self.prefix}.cc", content=wrapper_code, fmt=ArtifactFormat.SOURCE))
362
+ artifacts.append(
363
+ Artifact(
364
+ f"{self.prefix}.cc.h",
365
+ content=header_code,
366
+ fmt=ArtifactFormat.SOURCE,
367
+ optional=False,
368
+ )
369
+ )
370
+ workspace_size_artifact = Artifact(
371
+ "tflmi_arena_size.txt", content=f"{self.arena_size}", fmt=ArtifactFormat.TEXT
372
+ )
373
+ artifacts.append(workspace_size_artifact)
374
+ # TODO: stdout_artifact (Would need to invoke TFLMI in subprocess to get stdout)
375
+ self.artifacts = artifacts
376
+
377
+
378
+ if __name__ == "__main__":
379
+ sys.exit(
380
+ main(
381
+ TFLMIBackend,
382
+ args=sys.argv[1:],
383
+ )
384
+ ) # pragma: no cover
385
+ # TODO: pin defaults to backend class? -> how to defien features and config?
@@ -0,0 +1,81 @@
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
+ """Definitions for TFLMFramework."""
20
+
21
+ from pathlib import Path
22
+
23
+ from mlonmcu.flow.framework import Framework
24
+ from mlonmcu.flow.tflm import TFLMBackend
25
+
26
+
27
+ class TFLMFramework(Framework):
28
+ """TFLM Framework specialization."""
29
+
30
+ name = "tflm"
31
+
32
+ FEATURES = ["muriscvnn", "cmsisnn"]
33
+
34
+ DEFAULTS = {
35
+ "optimized_kernel": None,
36
+ "optimized_kernel_inc_dirs": [],
37
+ "optimized_kernel_libs": [],
38
+ }
39
+
40
+ REQUIRED = ["tf.src_dir"]
41
+
42
+ backends = TFLMBackend.registry
43
+
44
+ def __init__(self, features=None, config=None):
45
+ super().__init__(features=features, config=config)
46
+
47
+ @property
48
+ def tf_src(self):
49
+ return Path(self.config["tf.src_dir"])
50
+
51
+ @property
52
+ def optimized_kernel(self):
53
+ return self.config["optimized_kernel"]
54
+
55
+ @property
56
+ def optimized_kernel_libs(self):
57
+ return self.config["optimized_kernel_libs"]
58
+
59
+ @property
60
+ def optimized_kernel_inc_dirs(self):
61
+ return self.config["optimized_kernel_inc_dirs"]
62
+
63
+ def get_platform_defs(self, platform):
64
+ ret = super().get_platform_defs(platform)
65
+ if self.optimized_kernel or self.optimized_kernel_inc_dirs or self.optimized_kernel_libs:
66
+ if self.optimized_kernel:
67
+ ret["TFLM_OPTIMIZED_KERNEL"] = self.optimized_kernel
68
+ if self.optimized_kernel_inc_dirs:
69
+ if isinstance(self.optimized_kernel_inc_dirs, list):
70
+ temp = r"\;".join(self.optimized_kernel_inc_dirs)
71
+ else:
72
+ temp = self.optimized_kernel_inc_dirs
73
+ ret["TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR"] = temp
74
+ if self.optimized_kernel_libs:
75
+ if isinstance(self.optimized_kernel_libs, list):
76
+ temp = r"\;".join(self.optimized_kernel_libs)
77
+ else:
78
+ temp = self.optimized_kernel_libs
79
+ ret["TFLM_OPTIMIZED_KERNEL_LIB"] = temp
80
+ ret["TF_DIR"] = str(self.tf_src)
81
+ return ret
@@ -0,0 +1,23 @@
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
+ """TVM framework module."""
20
+
21
+ from .backend import TVMAOTBackend, TVMAOTPlusBackend, TVMRTBackend, TVMCGBackend
22
+
23
+ __all__ = ["TVMAOTBackend", "TVMAOTPlusBackend", "TVMRTBackend", "TVMCGBackend"]
@@ -0,0 +1,26 @@
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 .backend import TVMBackend
20
+ from .tvmaot import TVMAOTBackend
21
+ from .tvmaotplus import TVMAOTPlusBackend
22
+ from .tvmcg import TVMCGBackend
23
+ from .tvmrt import TVMRTBackend
24
+ from .tvmllvm import TVMLLVMBackend
25
+
26
+ __all__ = ["TVMBackend", "TVMAOTBackend", "TVMAOTPlusBackend", "TVMCGBackend", "TVMRTBackend", "TVMLLVMBackend"]