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,33 @@
1
+ .. _hello_world:
2
+
3
+ Hello World
4
+ ###########
5
+
6
+ Overview
7
+ ********
8
+
9
+ A simple sample that can be used with any :ref:`supported board <boards>` and
10
+ prints "Hello World" to the console.
11
+
12
+ Building and Running
13
+ ********************
14
+
15
+ This application can be built and executed on QEMU as follows:
16
+
17
+ .. zephyr-app-commands::
18
+ :zephyr-app: samples/hello_world
19
+ :host-os: unix
20
+ :board: qemu_x86
21
+ :goals: run
22
+ :compact:
23
+
24
+ To build for another board, change "qemu_x86" above to that board's name.
25
+
26
+ Sample Output
27
+ =============
28
+
29
+ .. code-block:: console
30
+
31
+ Hello World! x86
32
+
33
+ Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`.
@@ -0,0 +1,21 @@
1
+ MACRO(AddAllSubdirs)
2
+ UNSET(LOCAL_SUBDIRS)
3
+ FILE(
4
+ GLOB LOCAL_SUBDIRS
5
+ RELATIVE ${CMAKE_CURRENT_LIST_DIR}
6
+ ${CMAKE_CURRENT_LIST_DIR}/*
7
+ )
8
+
9
+ FOREACH(subdir ${LOCAL_SUBDIRS})
10
+ IF(IS_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/${subdir})
11
+ IF(EXISTS ${CMAKE_CURRENT_LIST_DIR}/${subdir}/CMakeLists.txt)
12
+ ADD_SUBDIRECTORY(${CMAKE_CURRENT_LIST_DIR}/${subdir})
13
+ MESSAGE(STATUS "Including sub project ${subdir}.")
14
+ ELSE()
15
+ MESSAGE(
16
+ WARNING "Directory ${subdir} is not added to the current build because it lacks a CMakeLists.txt"
17
+ )
18
+ ENDIF()
19
+ ENDIF()
20
+ ENDFOREACH()
21
+ ENDMACRO()
@@ -0,0 +1,22 @@
1
+ # New target architectures and systems should be added here Make sure to define the CMAKE_TOOLCHAIN_FILE for
2
+ # cross-compilation
3
+
4
+ # Default implementation of the macro points to the original ADD_LIBRARY function
5
+ MACRO(COMMON_ADD_LIBRARY TARGET_NAME)
6
+ ADD_LIBRARY(${TARGET_NAME} ${ARGN})
7
+ ENDMACRO()
8
+
9
+ MACRO(COMMON_ADD_EXECUTABLE TARGET_NAME)
10
+ ADD_EXECUTABLE(${TARGET_NAME} ${ARGN})
11
+ ENDMACRO()
12
+
13
+ SET(TOOLCHAIN_FILE "")
14
+ IF(TARGET_SYSTEM)
15
+ INCLUDE(targets/${TARGET_SYSTEM})
16
+ IF(TOOLCHAIN)
17
+ SET(TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/toolchains/${TOOLCHAIN}_${TARGET_SYSTEM}.cmake")
18
+ INCLUDE(${TOOLCHAIN_FILE})
19
+ ENDIF()
20
+ ENDIF()
21
+
22
+ # set(CMAKE_EXECUTABLE_SUFFIX_C .elf)
@@ -0,0 +1,223 @@
1
+ SET(TF_DIR
2
+ "/data/work/code/tensorflow"
3
+ CACHE PATH "TensorFlow source directory"
4
+ )
5
+
6
+ SET(TFL_SRC ${CONFIG_TF_DIR}/tensorflow/lite)
7
+ SET(TFLM_SRC ${TFL_SRC}/micro)
8
+ SET(TFLD_SRC ${TFLM_SRC}/tools/make/downloads)
9
+
10
+ SET(TFLM_EXTRA_KERNEL_LIBS "")
11
+ SET(TFLM_EXTRA_KERNEL_INCS "")
12
+
13
+ IF(CONFIG_TFLM_OPTIMIZED_KERNEL)
14
+ # Suboptimal but we do not want to hardcode every kernel which should be replaced...
15
+ FILE(GLOB TFLM_EXTRA_KERNEL_SRCS ${TFLM_SRC}/kernels/${CONFIG_TFLM_OPTIMIZED_KERNEL}/*.cc)
16
+ # LIST(APPEND TFLM_EXTRA_KERNEL_INCS ${TFLM_SRC}/kernels/${TFLM_OPTIMIZED_KERNEL}/)
17
+ STRING(TOUPPER "${CONFIG_TFLM_OPTIMIZED_KERNEL}" TFLM_OPTIMIZED_KERNEL_UPPER)
18
+ ENDIF()
19
+
20
+ IF(CONFIG_TFLM_OPTIMIZED_KERNEL_LIB)
21
+ LIST(APPEND TFLM_EXTRA_KERNEL_LIBS ${CONFIG_TFLM_OPTIMIZED_KERNEL_LIB})
22
+ ENDIF()
23
+
24
+ IF(CONFIG_TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR)
25
+ LIST(APPEND TFLM_EXTRA_KERNEL_INCS ${CONFIG_TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR})
26
+ ENDIF()
27
+
28
+ IF(CONFIG_TFLM_OPTIMIZED_KERNEL_DEPS)
29
+ LIST(APPEND TFLM_EXTRA_KERNEL_DEPS ${CONFIG_TFLM_OPTIMIZED_KERNEL_DEPS})
30
+ ENDIF()
31
+
32
+ SET(CUSTOM_QUANT_SRC ${TFL_SRC}/experimental/custom_quantization_util.cc)
33
+ IF(EXISTS ${CUSTOM_QUANT_SRC})
34
+ SET(OPT_SRC ${CUSTOM_QUANT_SRC})
35
+ ENDIF()
36
+
37
+ SET(TFLM_REFERENCE_KERNEL_SRCS
38
+ ${TFLM_SRC}/kernels/softmax.cc
39
+ ${TFLM_SRC}/kernels/fully_connected.cc
40
+ ${TFLM_SRC}/kernels/pooling.cc
41
+ ${TFLM_SRC}/kernels/add.cc
42
+ ${TFLM_SRC}/kernels/mul.cc
43
+ ${TFLM_SRC}/kernels/conv.cc
44
+ ${TFLM_SRC}/kernels/depthwise_conv.cc
45
+ ${TFLM_SRC}/kernels/softmax.cc
46
+ ${TFLM_SRC}/kernels/fully_connected.cc
47
+ ${TFLM_SRC}/kernels/pooling.cc
48
+ ${TFLM_SRC}/kernels/add.cc
49
+ ${TFLM_SRC}/kernels/mul.cc
50
+ ${TFLM_SRC}/kernels/conv.cc
51
+ ${TFLM_SRC}/kernels/depthwise_conv.cc
52
+ ${TFLM_SRC}/kernels/logical.cc
53
+ ${TFLM_SRC}/kernels/logistic.cc
54
+ ${TFLM_SRC}/kernels/svdf.cc
55
+ ${TFLM_SRC}/kernels/concatenation.cc
56
+ ${TFLM_SRC}/kernels/ceil.cc
57
+ ${TFLM_SRC}/kernels/floor.cc
58
+ ${TFLM_SRC}/kernels/prelu.cc
59
+ ${TFLM_SRC}/kernels/neg.cc
60
+ ${TFLM_SRC}/kernels/elementwise.cc
61
+ ${TFLM_SRC}/kernels/maximum_minimum.cc
62
+ ${TFLM_SRC}/kernels/arg_min_max.cc
63
+ ${TFLM_SRC}/kernels/reshape.cc
64
+ ${TFLM_SRC}/kernels/comparisons.cc
65
+ ${TFLM_SRC}/kernels/round.cc
66
+ ${TFLM_SRC}/kernels/strided_slice.cc
67
+ ${TFLM_SRC}/kernels/pack.cc
68
+ ${TFLM_SRC}/kernels/pad.cc
69
+ ${TFLM_SRC}/kernels/split.cc
70
+ ${TFLM_SRC}/kernels/unpack.cc
71
+ ${TFLM_SRC}/kernels/quantize.cc
72
+ ${TFLM_SRC}/kernels/activations.cc
73
+ ${TFLM_SRC}/kernels/dequantize.cc
74
+ ${TFLM_SRC}/kernels/reduce.cc
75
+ ${TFLM_SRC}/kernels/sub.cc
76
+ ${TFLM_SRC}/kernels/resize_nearest_neighbor.cc
77
+ ${TFLM_SRC}/kernels/l2norm.cc
78
+ ${TFLM_SRC}/kernels/circular_buffer.cc
79
+ ${TFLM_SRC}/kernels/ethosu.cc
80
+ ${TFLM_SRC}/kernels/tanh.cc
81
+ )
82
+
83
+ # This files only exists in newer versions of TF
84
+ IF(EXISTS ${TFLM_SRC}/kernels/conv_common.cc)
85
+ LIST(APPEND TFLM_REFERENCE_KERNEL_SRCS ${TFLM_SRC}/kernels/conv_common.cc)
86
+ ENDIF()
87
+ IF(EXISTS ${TFLM_SRC}/kernels/depthwise_conv_common.cc)
88
+ LIST(APPEND TFLM_REFERENCE_KERNEL_SRCS ${TFLM_SRC}/kernels/depthwise_conv_common.cc)
89
+ ENDIF()
90
+ IF(EXISTS ${TFLM_SRC}/kernels/fully_connected_common.cc)
91
+ LIST(APPEND TFLM_REFERENCE_KERNEL_SRCS ${TFLM_SRC}/kernels/fully_connected_common.cc)
92
+ ENDIF()
93
+ IF(EXISTS ${TFLM_SRC}/kernels/quantize_common.cc)
94
+ LIST(APPEND TFLM_REFERENCE_KERNEL_SRCS ${TFLM_SRC}/kernels/quantize_common.cc)
95
+ ENDIF()
96
+ IF(EXISTS ${TFLM_SRC}/kernels/softmax_common.cc)
97
+ LIST(APPEND TFLM_REFERENCE_KERNEL_SRCS ${TFLM_SRC}/kernels/softmax_common.cc)
98
+ ENDIF()
99
+ IF(EXISTS ${TFLM_SRC}/kernels/svdf_common.cc)
100
+ LIST(APPEND TFLM_REFERENCE_KERNEL_SRCS ${TFLM_SRC}/kernels/svdf_common.cc)
101
+ ENDIF()
102
+ IF(EXISTS ${TFLM_SRC}/kernels/pooling_common.cc)
103
+ LIST(APPEND TFLM_REFERENCE_KERNEL_SRCS ${TFLM_SRC}/kernels/pooling_common.cc)
104
+ ENDIF()
105
+ IF(EXISTS ${TFLM_SRC}/kernels/add_common.cc)
106
+ LIST(APPEND TFLM_REFERENCE_KERNEL_SRCS ${TFLM_SRC}/kernels/add_common.cc)
107
+ ENDIF()
108
+ IF(EXISTS ${TFLM_SRC}/kernels/dequantize_common.cc)
109
+ LIST(APPEND TFLM_REFERENCE_KERNEL_SRCS ${TFLM_SRC}/kernels/dequantize_common.cc)
110
+ ENDIF()
111
+ IF(EXISTS ${TFLM_SRC}/kernels/detection_postprocess.cc)
112
+ LIST(APPEND TFLM_REFERENCE_KERNEL_SRCS ${TFLM_SRC}/kernels/detection_postprocess.cc)
113
+ ENDIF()
114
+
115
+ FOREACH(src ${TFLM_EXTRA_KERNEL_SRCS})
116
+ GET_FILENAME_COMPONENT(src_name ${src} NAME)
117
+ IF(${src_name} MATCHES ".*_test.*")
118
+ LIST(REMOVE_ITEM TFLM_EXTRA_KERNEL_SRCS ${src})
119
+ ELSE()
120
+ SET(src_path "${TFLM_SRC}/kernels/${src_name}")
121
+ LIST(FIND TFLM_REFERENCE_KERNEL_SRCS ${src_path} TFLM_KERNEL_SRCS_FOUND_INDEX)
122
+ IF(${TFLM_KERNEL_SRCS_FOUND_INDEX} GREATER_EQUAL 0)
123
+ MESSAGE(STATUS "Replacing TFLM version of ${src_name} by optimized variant...")
124
+ LIST(REMOVE_ITEM TFLM_REFERENCE_KERNEL_SRCS ${src_path})
125
+ ENDIF()
126
+ ENDIF()
127
+ ENDFOREACH()
128
+
129
+ # This files only exists in newer versions of TF
130
+ IF(EXISTS ${TFL_SRC}/schema/schema_utils.cc)
131
+ LIST(APPEND OPT_SRC ${TFL_SRC}/schema/schema_utils.cc)
132
+ ENDIF()
133
+ IF(EXISTS ${TFLM_SRC}/micro_context.cc)
134
+ LIST(APPEND OPT_SRC ${TFLM_SRC}/micro_context.cc)
135
+ ENDIF()
136
+ IF(EXISTS ${TFLM_SRC}/micro_graph.cc)
137
+ LIST(APPEND OPT_SRC ${TFLM_SRC}/micro_graph.cc)
138
+ ENDIF()
139
+ IF(EXISTS ${TFLM_SRC}/flatbuffer_utils.cc)
140
+ LIST(APPEND OPT_SRC ${TFLM_SRC}/flatbuffer_utils.cc)
141
+ ENDIF()
142
+
143
+ ADD_LIBRARY(
144
+ tflm STATIC
145
+ # Not really needed?
146
+ ${TFLM_SRC}/micro_error_reporter.cc
147
+ ${TFLM_SRC}/debug_log.cc
148
+ ${TFLM_SRC}/micro_string.cc
149
+ # For reporter->Report
150
+ ${CONFIG_TF_DIR}/tensorflow/lite/core/api/error_reporter.cc
151
+ # Kernels
152
+ ${TFLM_REFERENCE_KERNEL_SRCS}
153
+ ${TFLM_EXTRA_KERNEL_SRCS}
154
+ # Kernel deps
155
+ ${TFLM_SRC}/kernels/kernel_util.cc
156
+ ${TFLM_SRC}/all_ops_resolver.cc
157
+ ${TFLM_SRC}/micro_utils.cc
158
+ ${TFL_SRC}/kernels/internal/quantization_util.cc
159
+ ${TFL_SRC}/kernels/kernel_util.cc
160
+ ${TFLM_SRC}/micro_interpreter.cc
161
+ ${TFLM_SRC}/micro_allocator.cc
162
+ ${TFLM_SRC}/micro_allocation_info.cc
163
+ ${TFLM_SRC}/micro_resource_variable.cc
164
+ ${TFLM_SRC}/arena_allocator/simple_memory_allocator.cc
165
+ ${TFLM_SRC}/memory_helpers.cc
166
+ ${TFLM_SRC}/memory_planner/greedy_memory_planner.cc
167
+ ${TFL_SRC}/core/api/tensor_utils.cc
168
+ ${TFL_SRC}/core/api/flatbuffer_conversions.cc
169
+ ${TFL_SRC}/core/api/op_resolver.cc
170
+ ${TFL_SRC}/c/common.cc
171
+ ${OPT_SRC}
172
+ )
173
+
174
+ IF(TFLM_EXTRA_KERNEL_LIBS)
175
+ TARGET_LINK_LIBRARIES(tflm PUBLIC ${TFLM_EXTRA_KERNEL_LIBS})
176
+ ENDIF()
177
+ TARGET_LINK_LIBRARIES(tflm PUBLIC m)
178
+
179
+ IF(TFLM_OPTIMIZED_KERNEL_DEPS)
180
+ ADD_DEPENDENCIES(tflm ${TFLM_OPTIMIZED_KERNEL_DEPS})
181
+ ENDIF()
182
+
183
+ # cmake-format: off
184
+ TARGET_INCLUDE_DIRECTORIES(tflm PUBLIC
185
+ ${CONFIG_TF_DIR}
186
+ ${TFLD_SRC}/flatbuffers/include
187
+ ${TFLD_SRC}/gemmlowp
188
+ ${TFLD_SRC}/ruy
189
+ ${TFLM_EXTRA_KERNEL_INCS}
190
+ )
191
+ # cmake-format: on
192
+
193
+ # cmake-format: off
194
+ TARGET_COMPILE_DEFINITIONS(tflm PUBLIC
195
+ TF_LITE_USE_GLOBAL_CMATH_FUNCTIONS
196
+ TF_LITE_USE_GLOBAL_MAX
197
+ TF_LITE_USE_GLOBAL_MIN
198
+ TF_LITE_STATIC_MEMORY
199
+ TFLITE_EMULATE_FLOAT
200
+ "$<$<CONFIG:RELEASE>:TF_LITE_STRIP_ERROR_STRINGS>"
201
+ ${TFLM_OPTIMIZED_KERNEL_UPPER}
202
+ )
203
+
204
+ # Workaround for the following issue which does not envolve patching the tflite-micro codebase:
205
+
206
+ # .../micro_error_reporter.cc: In function 'tflite::ErrorReporter* tflite::GetMicroErrorReporter()':
207
+ # .../micro_error_reporter.cc:58:76: error: 'static void tflite::MicroErrorReporter::operator delete(void*)' is private within this context
208
+ # 58 | error_reporter_ = new (micro_error_reporter_buffer) MicroErrorReporter();
209
+ # | ^
210
+ # In file included from .../micro_error_reporter.h:21,
211
+ # from .../micro_error_reporter.cc:16:
212
+ # .../compatibility.h:27:8: note: declared private here
213
+ # 27 | void operator delete(void* p) {}
214
+ # | ^~~~~~~~
215
+ # .../micro_error_reporter.h:51:3: note: in expansion of macro 'TF_LITE_REMOVE_VIRTUAL_DELETE'
216
+ # 51 | TF_LITE_REMOVE_VIRTUAL_DELETE
217
+ #
218
+ # If disabling the exceptions has major disadvantages needs to be investigated.
219
+
220
+ TARGET_COMPILE_OPTIONS(tflm PUBLIC
221
+ -fno-exceptions
222
+ )
223
+ # cmake-format: on
@@ -0,0 +1,68 @@
1
+ SET(TVM_ALIGNMENT_BYTES 4)
2
+
3
+ # cmake-format: off
4
+ SET(TVM_HEADERS
5
+ ${CONFIG_TVM_DIR}/include
6
+ ${CONFIG_TVM_DIR}/3rdparty/dlpack/include
7
+ ${CONFIG_TVM_DIR}/apps/bundle_deploy
8
+ ${CONFIG_TVM_DIR}/src/runtime/crt/include
9
+ )
10
+ # cmake-format: on
11
+
12
+ IF(CONFIG_TVM_CRT_CONFIG_DIR)
13
+ LIST(APPEND TVM_HEADERS ${CONFIG_TVM_CRT_CONFIG_DIR})
14
+ ELSE()
15
+ LIST(APPEND TVM_HEADERS ${CONFIG_TVM_DIR}/apps/bundle_deploy/crt_config)
16
+ ENDIF()
17
+
18
+ # # cmake-format: off
19
+ # ADD_LIBRARY(tvm_static_rt STATIC
20
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/common/crt_runtime_api.c
21
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/memory/stack_allocator.c
22
+ # )
23
+ # # cmake-format: on
24
+ #
25
+ # TARGET_INCLUDE_DIRECTORIES(tvm_static_rt PUBLIC ${TVM_HEADERS})
26
+ #
27
+ # # cmake-format: off
28
+ # TARGET_COMPILE_DEFINITIONS(tvm_static_rt PUBLIC
29
+ # -DTVM_RUNTIME_ALLOC_ALIGNMENT_BYTES=${TVM_ALIGNMENT_BYTES}
30
+ # )
31
+ # # cmake-format: on
32
+ #
33
+ # # cmake-format: off
34
+ # ADD_LIBRARY(tvm_graph_rt STATIC
35
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/common/crt_backend_api.c
36
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/common/crt_runtime_api.c
37
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/common/func_registry.c
38
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/memory/page_allocator.c
39
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/memory/stack_allocator.c
40
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/common/ndarray.c
41
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/common/packed_func.c
42
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/graph_executor/graph_executor.c
43
+ # ${CONFIG_TVM_DIR}/src/runtime/crt/graph_executor/load_json.c
44
+ # )
45
+ # # cmake-format: on
46
+ #
47
+ # TARGET_INCLUDE_DIRECTORIES(tvm_graph_rt PUBLIC ${TVM_HEADERS})
48
+ #
49
+ # # cmake-format: off
50
+ # TARGET_COMPILE_DEFINITIONS(tvm_graph_rt PUBLIC
51
+ # -DTVM_RUNTIME_ALLOC_ALIGNMENT_BYTES=${TVM_ALIGNMENT_BYTES}
52
+ # )
53
+ # # cmake-format: on
54
+ #
55
+ # cmake-format: off
56
+ ADD_LIBRARY(tvm_aot_rt STATIC
57
+ ${CONFIG_TVM_DIR}/src/runtime/crt/common/crt_backend_api.c
58
+ ${CONFIG_TVM_DIR}/src/runtime/crt/memory/stack_allocator.c
59
+ )
60
+ # cmake-format: on
61
+
62
+ TARGET_INCLUDE_DIRECTORIES(tvm_aot_rt PUBLIC ${TVM_HEADERS})
63
+
64
+ # cmake-format: off
65
+ TARGET_COMPILE_DEFINITIONS(tvm_aot_rt PUBLIC
66
+ -DTVM_RUNTIME_ALLOC_ALIGNMENT_BYTES=${TVM_ALIGNMENT_BYTES}
67
+ )
68
+ # cmake-format: on
@@ -0,0 +1,41 @@
1
+ set(CLANG_VERSIONS 15 14)
2
+
3
+ set(LLVM_DIR "" CACHE PATH "Lookup path for the llvm installation.")
4
+ MESSAGE("LLVM_DIR=${LLVM_DIR}")
5
+
6
+ # Find clang
7
+ function(do_lookup program out)
8
+ set(VERSION_NAMES "")
9
+ foreach(version ${CLANG_VERSIONS})
10
+ set(NEW_NAME "${program}-${version}")
11
+ list(APPEND VERSION_NAMES ${NEW_NAME})
12
+ endforeach()
13
+ # Custom path, explicit versions
14
+ find_program(${program}_NAME_MATCH NAMES ${VERSION_NAMES} PATHS ${LLVM_DIR}/bin/ NO_DEFAULT_PATH)
15
+ IF(NOT ${program}_NAME_MATCH)
16
+ # System path, explicit versions
17
+ find_program(${program}_NAME_MATCH NAMES ${VERSION_NAMES})
18
+ IF(NOT ${program}_NAME_MATCH)
19
+ # Custom path, implicit version
20
+ find_program(${program}_NAME_MATCH NAMES ${program} PATHS ${LLVM_DIR}/bin/ NO_DEFAULT_PATH)
21
+ IF(NOT ${program}_NAME_MATCH)
22
+ # System path, implicit version
23
+ find_program(${program}_NAME_MATCH NAMES ${program})
24
+ ENDIF()
25
+ ENDIF()
26
+ ENDIF()
27
+ IF(NOT ${program}_NAME_MATCH)
28
+ MESSAGE(FATAL_ERROR "Unable to find ${program} executable")
29
+ ENDIF()
30
+ MESSAGE(STATUS "${program}_NAME_MATCH=${${program}_NAME_MATCH}")
31
+ set(${out} ${${program}_NAME_MATCH} PARENT_SCOPE)
32
+ endfunction()
33
+
34
+
35
+ do_lookup(clang CLANG_EXECUTABLE)
36
+ do_lookup(clang++ CLANG++_EXECUTABLE)
37
+ do_lookup(lld LLD_EXECUTABLE)
38
+
39
+ MESSAGE(STATUS "CLANG_EXECUTABLE=${CLANG_EXECUTABLE}")
40
+ MESSAGE(STATUS "CLANG++_EXECUTABLE=${CLANG++_EXECUTABLE}")
41
+ MESSAGE(STATUS "LLD_EXECUTABLE=${LLD_EXECUTABLE}")
@@ -0,0 +1,5 @@
1
+ IF("${MLONMCU_FRAMEWORK}" STREQUAL "")
2
+ SET(MLONMCU_FRAMEWORK "tflm")
3
+ ENDIF()
4
+
5
+ SET(TFLITE_REQUIRED_COMPONENTS a b c)
@@ -0,0 +1,5 @@
1
+ IF("${MLONMCU_FRAMEWORK}" STREQUAL "")
2
+ SET(MLONMCU_FRAMEWORK "tflm")
3
+ ENDIF()
4
+
5
+ SET(TFLITE_REQUIRED_COMPONENTS a b c)
@@ -0,0 +1,10 @@
1
+ IF("${MLONMCU_FRAMEWORK}" STREQUAL "")
2
+ SET(MLONMCU_FRAMEWORK "tvm")
3
+ ENDIF()
4
+
5
+ SET(TVM_REQUIRED_COMPONENTS a b c)
6
+
7
+ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DTVMCG_DEBUG_ALLOCATIONS")
8
+
9
+ SET(TVM_LIB tvm_aot_rt)
10
+ SET(TVM_WRAPPER_FILENAME aot_wrapper.c)
@@ -0,0 +1,10 @@
1
+ IF("${MLONMCU_FRAMEWORK}" STREQUAL "")
2
+ SET(MLONMCU_FRAMEWORK "tvm")
3
+ ENDIF()
4
+
5
+ SET(TVM_REQUIRED_COMPONENTS a b c)
6
+
7
+ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DTVMCG_DEBUG_ALLOCATIONS")
8
+
9
+ SET(TVM_LIB tvm_aot_rt)
10
+ SET(TVM_WRAPPER_FILENAME aot_wrapper.c)
@@ -0,0 +1,10 @@
1
+ IF("${MLONMCU_FRAMEWORK}" STREQUAL "")
2
+ SET(MLONMCU_FRAMEWORK "tvm")
3
+ ENDIF()
4
+
5
+ SET(TVM_REQUIRED_COMPONENTS a b c)
6
+
7
+ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DTVMAOT_DEBUG_ALLOCATIONS")
8
+
9
+ SET(TVM_LIB tvm_static_rt)
10
+ SET(TVM_WRAPPER_FILENAME staticrt.c)
@@ -0,0 +1,8 @@
1
+ IF("${MLONMCU_FRAMEWORK}" STREQUAL "")
2
+ SET(MLONMCU_FRAMEWORK "tvm")
3
+ ENDIF()
4
+
5
+ SET(TVM_REQUIRED_COMPONENTS a b c)
6
+
7
+ SET(TVM_LIB tvm_graph_rt)
8
+ SET(TVM_WRAPPER_FILENAME rt_wrapper.c)
@@ -0,0 +1,8 @@
1
+ IF("${MLONMCU_FRAMEWORK}" STREQUAL "")
2
+ SET(MLONMCU_FRAMEWORK "tvm")
3
+ ENDIF()
4
+
5
+ SET(TVM_REQUIRED_COMPONENTS a b c)
6
+
7
+ SET(TVM_LIB tvm_graph_rt)
8
+ SET(TVM_WRAPPER_FILENAME rt_wrapper.c)
@@ -0,0 +1,9 @@
1
+ IF(DEFINED DEBUG_ARENA_USAGE)
2
+ IF(DEBUG_ARENA_USAGE)
3
+ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG_ARENA_USAGE=1")
4
+ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG_ARENA_USAGE=1")
5
+ ELSE()
6
+ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG_ARENA_USAGE=0")
7
+ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG_ARENA_USAGE=0")
8
+ ENDIF()
9
+ ENDIF()
@@ -0,0 +1,65 @@
1
+ IF(NOT RISCV_VEXT)
2
+ MESSAGE(FATAL_ERROR "RISCV_AUTO_VECTORIZE requires RISCV_VEXT")
3
+ ENDIF()
4
+ IF(RISCV_RVV_VLEN)
5
+ SET(VLEN ${RISCV_RVV_VLEN})
6
+ ELSE()
7
+ SET(VLEN "?")
8
+ ENDIF()
9
+ SET(CMAKE_CXX_FLAGS_RELEASE
10
+ "${CMAKE_CXX_FLAGS_RELEASE} \
11
+ -ftree-vectorize \
12
+ -mriscv-vector-bits=${VLEN} \
13
+ "
14
+ )
15
+ SET(CMAKE_C_FLAGS_RELEASE
16
+ "${CMAKE_C_FLAGS_RELEASE} \
17
+ -ftree-vectorize \
18
+ -mriscv-vector-bits=${VLEN} \
19
+ "
20
+ )
21
+ IF(DEFINED RISCV_AUTO_VECTORIZE_LOOP)
22
+ IF(NOT RISCV_AUTO_VECTORIZE_LOOP)
23
+ SET(CMAKE_CXX_FLAGS_RELEASE
24
+ "${CMAKE_CXX_FLAGS_RELEASE} \
25
+ -fno-tree-loop-vectorize \
26
+ "
27
+ )
28
+ SET(CMAKE_C_FLAGS_RELEASE
29
+ "${CMAKE_C_FLAGS_RELEASE} \
30
+ -fno-tree-loop-vectorize \
31
+ "
32
+ )
33
+ ENDIF()
34
+ ENDIF()
35
+ IF(DEFINED RISCV_AUTO_VECTORIZE_SLP)
36
+ IF(NOT RISCV_AUTO_VECTORIZE_SLP)
37
+ SET(CMAKE_CXX_FLAGS_RELEASE
38
+ "${CMAKE_CXX_FLAGS_RELEASE} \
39
+ -fno-tree-slp-vectorize \
40
+ "
41
+ )
42
+ SET(CMAKE_C_FLAGS_RELEASE
43
+ "${CMAKE_C_FLAGS_RELEASE} \
44
+ -fno-tree-slp-vectorize \
45
+ "
46
+ )
47
+ ENDIF()
48
+ ENDIF()
49
+ # Also interesting:
50
+ # -mriscv-vector-lmul=<lmul> Set the vf using lmul in auto-vectorization
51
+ # -fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the vectorization cost model for code marked with a simd directive
52
+ IF(RISCV_AUTO_VECTORIZE_VERBOSE)
53
+ SET(CMAKE_CXX_FLAGS_RELEASE
54
+ "${CMAKE_CXX_FLAGS_RELEASE} \
55
+ -fopt-info-vec \
56
+ -fopt-info-vec-missed \
57
+ "
58
+ )
59
+ SET(CMAKE_C_FLAGS_RELEASE
60
+ "${CMAKE_C_FLAGS_RELEASE} \
61
+ -fopt-info-vec \
62
+ -fopt-info-vec-missed \
63
+ "
64
+ )
65
+ ENDIF()
@@ -0,0 +1,20 @@
1
+ IF(NOT RISCV_VEXT)
2
+ MESSAGE(FATAL_ERROR "RISCV_AUTO_VECTORIZE requires RISCV_VEXT")
3
+ ENDIF()
4
+ IF(RISCV_RVV_VLEN)
5
+ SET(VLEN ${RISCV_RVV_VLEN})
6
+ ELSE()
7
+ SET(VLEN "?")
8
+ ENDIF()
9
+ SET(CMAKE_CXX_FLAGS_RELEASE
10
+ "${CMAKE_CXX_FLAGS_RELEASE} \
11
+ -mllvm \
12
+ --riscv-v-vector-bits-min=${VLEN} \
13
+ "
14
+ )
15
+ SET(CMAKE_C_FLAGS_RELEASE
16
+ "${CMAKE_C_FLAGS_RELEASE} \
17
+ -mllvm \
18
+ --riscv-v-vector-bits-min=${VLEN} \
19
+ "
20
+ )
@@ -0,0 +1,86 @@
1
+ IF(NOT CMSISNN_DIR)
2
+ MESSAGE(FATAL_ERROR "Missing value: CMSISNN_DIR")
3
+ ENDIF()
4
+
5
+ IF(NOT ARM_MVEI)
6
+ SET(USE_MVEI OFF)
7
+ ELSE()
8
+ SET(USE_MVEI ON)
9
+ ENDIF()
10
+
11
+ IF(NOT ARM_DSP)
12
+ SET(USE_DSP OFF)
13
+ ELSE()
14
+ SET(USE_DSP ON)
15
+ ENDIF()
16
+
17
+ SET(BUILD_FLAGS "")
18
+ # IF(USE_MVEI) SET(BUILD_FLAGS "${BUILD_FLAGS} -D__ARM_FEATURE_MVE=1 -DARM_MATH_MVEI=1") ENDIF() IF(USE_DSP)
19
+ # SET(BUILD_FLAGS "${BUILD_FLAGS} -D__ARM_FEATURE_DSP=1 -DARM_MATH_DSP=1") ENDIF()
20
+
21
+ SET(CMSISNN_INCLUDE_DIRS ${CMSISNN_DIR} ${CMSISNN_DIR}/CMSIS/Core/Include ${CMSISNN_DIR}/CMSIS/NN/Include
22
+ ${CMSISNN_DIR}/CMSIS/DSP/Include
23
+ )
24
+
25
+ # TODO: propagarting all toolchain specific vars does not scale well
26
+
27
+ MESSAGE(STATUS "ARM_CPU=${ARM_CPU}")
28
+ INCLUDE(ExternalProject)
29
+ EXTERNALPROJECT_ADD(
30
+ cmsisnn
31
+ PREFIX cmsisnn
32
+ SOURCE_DIR ${CMSISNN_DIR}/CMSIS/NN/
33
+ CMAKE_ARGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
34
+ -DCMAKE_C_FLAGS:STRING=${BUILD_FLAGS}
35
+ -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
36
+ -DTC_PREFIX=${TC_PREFIX}
37
+ -DEXE_EXT=${EXE_EXT}
38
+ -DARM_CPU=${ARM_CPU}
39
+ -DARM_FLOAT_ABI=${ARM_FLOAT_ABI}
40
+ -DARM_FPU=${ARM_FPU}
41
+ -DRISCV_ARCH=${RISCV_ARCH}
42
+ -DRISCV_ABI=${RISCV_ABI}
43
+ BUILD_COMMAND "${CMAKE_COMMAND}" --build .
44
+ INSTALL_COMMAND ""
45
+ )
46
+
47
+ EXTERNALPROJECT_GET_PROPERTY(cmsisnn BINARY_DIR)
48
+ SET(CMSISNN_LIB ${BINARY_DIR}/Source/libcmsis-nn.a)
49
+
50
+ # TFLite integration
51
+ IF(TFLM_OPTIMIZED_KERNEL_LIB)
52
+ LIST(APPEND TFLM_OPTIMIZED_KERNEL_LIB ${CMSISNN_LIB})
53
+ ELSE()
54
+ SET(TFLM_OPTIMIZED_KERNEL_LIB ${CMSISNN_LIB})
55
+ ENDIF()
56
+
57
+ IF(TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR)
58
+ LIST(APPEND TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR ${CMSISNN_INCLUDE_DIRS})
59
+ ELSE()
60
+ SET(TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR ${CMSISNN_INCLUDE_DIRS})
61
+ ENDIF()
62
+
63
+ IF(TFLM_OPTIMIZED_KERNEL_DEPS)
64
+ LIST(APPEND TFLM_OPTIMIZED_KERNEL_DEPS cmsisnn)
65
+ ELSE()
66
+ SET(TFLM_OPTIMIZED_KERNEL_DEPS cmsisnn)
67
+ ENDIF()
68
+
69
+ # TVM integration
70
+ IF(TVM_EXTRA_LIBS)
71
+ LIST(APPEND TVM_EXTRA_LIBS ${CMSISNN_LIB})
72
+ ELSE()
73
+ SET(TVM_EXTRA_LIBS ${CMSISNN_LIB})
74
+ ENDIF()
75
+
76
+ IF(TVM_EXTRA_INCS)
77
+ LIST(APPEND TVM_EXTRA_INCS ${CMSISNN_INCLUDE_DIRS})
78
+ ELSE()
79
+ SET(TVM_EXTRA_INCS ${CMSISNN_INCLUDE_DIRS})
80
+ ENDIF()
81
+
82
+ IF(TVM_EXTRA_DEPS)
83
+ LIST(APPEND TVM_EXTRA_DEPS cmsisnn)
84
+ ELSE()
85
+ SET(TVM_EXTRA_DEPS cmsisnn)
86
+ ENDIF()