diff --git a/modneflib/modnef/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/__pycache__/__init__.cpython-310.pyc index 97bc1b55c8e564601f549461575341a326c4fe38..1c1dde05882187dd903bc32db2023dc6ab73f07e 100644 Binary files a/modneflib/modnef/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/__pycache__/project_generator.cpython-310.pyc b/modneflib/modnef/__pycache__/project_generator.cpython-310.pyc index 0ed6ae3574e1b885fd45e6ef8052fe41b3c6ef24..89068c06536f19a0bb0a5a3680e80f70c5747f73 100644 Binary files a/modneflib/modnef/__pycache__/project_generator.cpython-310.pyc and b/modneflib/modnef/__pycache__/project_generator.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/arch_builder/__pycache__/__init__.cpython-310.pyc index beca1367da962b7eb394e3a253cc92cd13c99bd2..4308dabcf9c4d14bebada5ac8859587f47dbdceb 100644 Binary files a/modneflib/modnef/arch_builder/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/arch_builder/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/__pycache__/modnef_builder.cpython-310.pyc b/modneflib/modnef/arch_builder/__pycache__/modnef_builder.cpython-310.pyc index 504cbd1208501c326392c20cc12ffd618f8c7d22..c406f25127fd49fb2fa45d97472e1ed400690011 100644 Binary files a/modneflib/modnef/arch_builder/__pycache__/modnef_builder.cpython-310.pyc and b/modneflib/modnef/arch_builder/__pycache__/modnef_builder.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/__init__.cpython-310.pyc index 49a173f5bb67900460047fbac675a8cea2b50726..3b212ee3614a9af0e36712926d9a0af16b231426 100644 Binary files a/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/blif.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/blif.cpython-310.pyc index 568be1e4a271e6bda21631118f9b76c9fb817cb1..040fe846bbcb6f8bbf4df9b5e28a5ad12a442a46 100644 Binary files a/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/blif.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/blif.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/blif_debugger.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/blif_debugger.cpython-310.pyc index f26b4ad62659ef74bee083693bd48d6b90387cc8..4c7adf2fd3f71ce35ab11fe96a27b7d63136292e 100644 Binary files a/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/blif_debugger.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/blif_debugger.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/rblif.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/rblif.cpython-310.pyc index 4e31889f75440e53700938c74798b2545c29eacf..fb965733990fb968c4295ce59133d280b66e824b 100644 Binary files a/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/rblif.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/BLIF/__pycache__/rblif.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/__init__.cpython-310.pyc index 0313b89029f0785da81763dd763cc417c34d4f12..23dbf6a2431fa81ae5e82ddb6ab8f6736f62f106 100644 Binary files a/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/io_debugger.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/io_debugger.cpython-310.pyc index 632637f4b04527ac1d3a24443b51a76fa6b16e06..d6934bb2ce045f16e4c53312eee37254567e81f9 100644 Binary files a/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/io_debugger.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/io_debugger.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/probe.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/probe.cpython-310.pyc index 025d27c86cb4916634bc580991341d7529948ff5..b5aca3ec23fe746f1a58cc580f5362e1341163f0 100644 Binary files a/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/probe.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/Debugger/__pycache__/probe.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/__init__.cpython-310.pyc index 4b8b352519bdebb320160c2186cdf940c56d2c37..11372a818f7faeb3c9066dcae0fe361f4801f7cd 100644 Binary files a/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/rslif.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/rslif.cpython-310.pyc index 2fd88315cecd4c559ef0a74974fa1fbb69db7a79..5b24aaa0885c2131c19871a86faad975048e3a34 100644 Binary files a/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/rslif.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/rslif.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/slif.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/slif.cpython-310.pyc index 0ed76f720997c9f2cea75aa090f94651f8cf6f72..0d8c1b1a45c2393e1a95b5db6af34b5151be82c0 100644 Binary files a/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/slif.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/slif.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/slif_debugger.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/slif_debugger.cpython-310.pyc index 578980bf699a17a8260c15fbff0abd40db19fa0d..688996fdb1d7ba04678c1533fe2f12bc15bc8d67 100644 Binary files a/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/slif_debugger.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/SLIF/__pycache__/slif_debugger.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/__init__.cpython-310.pyc index 5b336006bc2d68f872a4292e44a989684ee8312d..8cbca87881ffe66fa5a11be3486cefa94dbb4c98 100644 Binary files a/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/rshiftlif.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/rshiftlif.cpython-310.pyc index ef94eeaa41b2c199155b197196909bdd76832f9b..ef88812d033c70331c774b00676de730d57e7ff8 100644 Binary files a/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/rshiftlif.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/rshiftlif.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/shiftlif.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/shiftlif.cpython-310.pyc index edf37d966fa90c6e91a105a1378a9859a3220549..dd41a74e4baaf20d00b6e5493b1c643fcb77d102 100644 Binary files a/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/shiftlif.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/ShiftLIF/__pycache__/shiftlif.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/UART/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/UART/__pycache__/__init__.cpython-310.pyc index 7aa1604b449f29837446d2f22b53a805f4b74b37..cf5c9c4e01956a3dd5c85e024469634d1ed2f5dd 100644 Binary files a/modneflib/modnef/arch_builder/modules/UART/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/UART/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_1step.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_1step.cpython-310.pyc index edc5d4ea2f5a0ebef07f8f16f02a0ad9c7a74ae9..69d087a20a122cec41b12ce0a485df447c63546a 100644 Binary files a/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_1step.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_1step.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_classifier.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_classifier.cpython-310.pyc index 1031f5807b624699fe65cf0e3423a0c6d8b74442..0e0f80c34b414e363044e482446988cf3c8bd99d 100644 Binary files a/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_classifier.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_classifier.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_classifier_timer.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_classifier_timer.cpython-310.pyc index 897da078dec9b61ae3e492a84cf343cd4a94f887..5a5ad6d89b739e5c66e9c2ee2e4370ff6ce4ae9c 100644 Binary files a/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_classifier_timer.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_classifier_timer.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_xstep.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_xstep.cpython-310.pyc index e2b148f4a5ea72035d5422a1e2d2770232092533..143fe5c97041ee9b3da589451f8776a67bb5b5cc 100644 Binary files a/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_xstep.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_xstep.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_xstep_timer.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_xstep_timer.cpython-310.pyc index 16115cffb25cfc60343cb1f99576c213c47ba0ed..4c97b527667dc00bf23e9f78bddaf62a14f15c7b 100644 Binary files a/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_xstep_timer.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/UART/__pycache__/uart_xstep_timer.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/__pycache__/__init__.cpython-310.pyc index a51edfc92ae452cb40440d421be6bec3f0d7c74d..480f3a76c61303ed6d7e42c98351997089123c1d 100644 Binary files a/modneflib/modnef/arch_builder/modules/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/__pycache__/io_arch.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/__pycache__/io_arch.cpython-310.pyc index 4d96392ddfe15b191e182cd3aa304e5a41212ef9..c11e8191b2021f4bbe1c2487ac946ccb9bebdfec 100644 Binary files a/modneflib/modnef/arch_builder/modules/__pycache__/io_arch.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/__pycache__/io_arch.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/__pycache__/link.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/__pycache__/link.cpython-310.pyc index 818b986d5cf5f95fa4e36c387429bb1af859a62e..dff228052806107800c758b77f241aec9f4cb670 100644 Binary files a/modneflib/modnef/arch_builder/modules/__pycache__/link.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/__pycache__/link.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/__pycache__/merger.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/__pycache__/merger.cpython-310.pyc index f21c44887ddbbadd156e313ba6709699a2eebe3d..85e7cd04fe794501ce7b8dd0bfeedb27c39bf3e0 100644 Binary files a/modneflib/modnef/arch_builder/modules/__pycache__/merger.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/__pycache__/merger.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/__pycache__/modnef_arch_mod.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/__pycache__/modnef_arch_mod.cpython-310.pyc index dbd537fe9a3c3c215a0a421d119a235811f28397..96808468206aa92abe194e4f66f87fc58f75ada0 100644 Binary files a/modneflib/modnef/arch_builder/modules/__pycache__/modnef_arch_mod.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/__pycache__/modnef_arch_mod.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/__pycache__/splitter.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/__pycache__/splitter.cpython-310.pyc index 3d1e766bf9ec8f673aa84f47da0bd003c979baa8..e2feb521748e5addea4cd30b98727ef1da954dc7 100644 Binary files a/modneflib/modnef/arch_builder/modules/__pycache__/splitter.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/__pycache__/splitter.cpython-310.pyc differ diff --git a/modneflib/modnef/arch_builder/modules/__pycache__/utilities.cpython-310.pyc b/modneflib/modnef/arch_builder/modules/__pycache__/utilities.cpython-310.pyc index d5d3137b5a44eddfb4553d6c6b4cff1640631648..f3ee189828c2c136bf2b9f2067e9e8023a393833 100644 Binary files a/modneflib/modnef/arch_builder/modules/__pycache__/utilities.cpython-310.pyc and b/modneflib/modnef/arch_builder/modules/__pycache__/utilities.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_driver/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/modnef_driver/__pycache__/__init__.cpython-310.pyc index cbc1e081252e5e639174f5ae3c33e76252839f87..7ed166a750428e76a5e48a84ce183718d7d99b66 100644 Binary files a/modneflib/modnef/modnef_driver/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/modnef_driver/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_driver/__pycache__/modnef_drivers.cpython-310.pyc b/modneflib/modnef/modnef_driver/__pycache__/modnef_drivers.cpython-310.pyc index d643ce5865d1ad4547af351f25fb6b123e8797fa..4ea19e770fec6da940aa1ca36c48e816ed0ab69f 100644 Binary files a/modneflib/modnef/modnef_driver/__pycache__/modnef_drivers.cpython-310.pyc and b/modneflib/modnef/modnef_driver/__pycache__/modnef_drivers.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_driver/drivers/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/modnef_driver/drivers/__pycache__/__init__.cpython-310.pyc index 063a6d8e0a1751a5009e9a0755b0c7d49d8f2d98..9dbb2e23b522fb6fd1116dcb80128e79c2cbdffd 100644 Binary files a/modneflib/modnef/modnef_driver/drivers/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/modnef_driver/drivers/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_driver/drivers/__pycache__/classifier_driver.cpython-310.pyc b/modneflib/modnef/modnef_driver/drivers/__pycache__/classifier_driver.cpython-310.pyc index 027077ce472bc383f5cc509c64f7d59a42c96409..ecded845d49b6daae1185cc2f89bf0c1cc0c8072 100644 Binary files a/modneflib/modnef/modnef_driver/drivers/__pycache__/classifier_driver.cpython-310.pyc and b/modneflib/modnef/modnef_driver/drivers/__pycache__/classifier_driver.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_driver/drivers/__pycache__/classifier_timer_driver.cpython-310.pyc b/modneflib/modnef/modnef_driver/drivers/__pycache__/classifier_timer_driver.cpython-310.pyc index bfebacf98ca8c275d2f8e2fa5488f0d5aa8b7f5e..92666ae9aca58b6dc694328f791196d46ec4e89d 100644 Binary files a/modneflib/modnef/modnef_driver/drivers/__pycache__/classifier_timer_driver.cpython-310.pyc and b/modneflib/modnef/modnef_driver/drivers/__pycache__/classifier_timer_driver.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_driver/drivers/__pycache__/debugger_driver.cpython-310.pyc b/modneflib/modnef/modnef_driver/drivers/__pycache__/debugger_driver.cpython-310.pyc index 5a2207dbda1e0a8c33f149be8b07835177996f91..e0195173998ec9c3f79622491e95cb0db1c06886 100644 Binary files a/modneflib/modnef/modnef_driver/drivers/__pycache__/debugger_driver.cpython-310.pyc and b/modneflib/modnef/modnef_driver/drivers/__pycache__/debugger_driver.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_driver/drivers/__pycache__/default_driver.cpython-310.pyc b/modneflib/modnef/modnef_driver/drivers/__pycache__/default_driver.cpython-310.pyc index 3a70b1174b21782c614c029ebb851ca670601751..f5d062b248598377a283f83205a51b475e6907de 100644 Binary files a/modneflib/modnef/modnef_driver/drivers/__pycache__/default_driver.cpython-310.pyc and b/modneflib/modnef/modnef_driver/drivers/__pycache__/default_driver.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_driver/drivers/__pycache__/single_step_driver.cpython-310.pyc b/modneflib/modnef/modnef_driver/drivers/__pycache__/single_step_driver.cpython-310.pyc index cda761c3d3188513187ff3927e93249fb75ac927..2f1bfbe239c326a6a00b6330b646969fb00ba825 100644 Binary files a/modneflib/modnef/modnef_driver/drivers/__pycache__/single_step_driver.cpython-310.pyc and b/modneflib/modnef/modnef_driver/drivers/__pycache__/single_step_driver.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_driver/drivers/__pycache__/xstep_driver.cpython-310.pyc b/modneflib/modnef/modnef_driver/drivers/__pycache__/xstep_driver.cpython-310.pyc index f2df55ed699b718ef35b6b84b649539327239d0d..7ac36b8fd1a27a44d38070835f9793951c86bf57 100644 Binary files a/modneflib/modnef/modnef_driver/drivers/__pycache__/xstep_driver.cpython-310.pyc and b/modneflib/modnef/modnef_driver/drivers/__pycache__/xstep_driver.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_driver/drivers/__pycache__/xstep_timer_driver.cpython-310.pyc b/modneflib/modnef/modnef_driver/drivers/__pycache__/xstep_timer_driver.cpython-310.pyc index 162197a96e629f1d95847dbc965401506d2eac6e..7e0954cd4a565ec0a7405db25eb4747d3a686395 100644 Binary files a/modneflib/modnef/modnef_driver/drivers/__pycache__/xstep_timer_driver.cpython-310.pyc and b/modneflib/modnef/modnef_driver/drivers/__pycache__/xstep_timer_driver.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/modnef_torch/__pycache__/__init__.cpython-310.pyc index fb5f930237a51ae64b29d117c9107ba84b67fbc0..688e6e42278306ca30b5072399745da945a9723c 100644 Binary files a/modneflib/modnef/modnef_torch/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/modnef_torch/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/__pycache__/executor.cpython-310.pyc b/modneflib/modnef/modnef_torch/__pycache__/executor.cpython-310.pyc index a88847587dcf292e4dbb58e5a3712a9c5738a936..c129b94075bfc856c0e4e603adb7f7ac77f53225 100644 Binary files a/modneflib/modnef/modnef_torch/__pycache__/executor.cpython-310.pyc and b/modneflib/modnef/modnef_torch/__pycache__/executor.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/__pycache__/model.cpython-310.pyc b/modneflib/modnef/modnef_torch/__pycache__/model.cpython-310.pyc index 980e74db9a47de5f660f7f5c0d7efaab3cda51b7..a836e86c21a81e76ff5d2d204e321e780265c201 100644 Binary files a/modneflib/modnef/modnef_torch/__pycache__/model.cpython-310.pyc and b/modneflib/modnef/modnef_torch/__pycache__/model.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/__pycache__/trainer.cpython-310.pyc b/modneflib/modnef/modnef_torch/__pycache__/trainer.cpython-310.pyc index 18e25f81bcf3e35df0c64461da7b3606c3a31ae7..12b280a2c752f9041d1674f3a54e26f20c2bdb51 100644 Binary files a/modneflib/modnef/modnef_torch/__pycache__/trainer.cpython-310.pyc and b/modneflib/modnef/modnef_torch/__pycache__/trainer.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/model.py b/modneflib/modnef/modnef_torch/model.py index 8eaf453a4ca3cddbd464f9301c1ba8b37cd6e40f..5d328701b5bc82b0d66bf870db49819bcfe93484 100644 --- a/modneflib/modnef/modnef_torch/model.py +++ b/modneflib/modnef/modnef_torch/model.py @@ -83,7 +83,7 @@ class ModNEFModel(nn.Module): def __train(self, mode, quant, hardware, fpga): self.hardware_estimation_flag = hardware - self.fpga = fpga + self.fpga_eval_flag = fpga for m in self.modules(): if isinstance(m, ModNEFNeuron): @@ -92,7 +92,7 @@ class ModNEFModel(nn.Module): return super().train(mode=mode) - def train(self, mode : bool = True, quant : bool = True): + def train(self, mode : bool = True, quant : bool = False): """ Set neuron model for trainning """ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/__pycache__/__init__.cpython-310.pyc index bdf280b17bc37b26bd5d68650f91c7c7912058d0..c73777892c62178df480b384ce51bad9a4eb9605 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/__pycache__/modnef_torch_neuron.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/__pycache__/modnef_torch_neuron.cpython-310.pyc index 895a5aacc1efbab760c5e04db68a67bb7652872b..efe2984b5c8c023df426bfa8a8b30c250932f54b 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/__pycache__/modnef_torch_neuron.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/__pycache__/modnef_torch_neuron.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/__init__.cpython-310.pyc index 829c917976b2b648660d27dd7f7d5092f33094db..1d5db0afb7228579ffe4d11dc30014181f63dfa7 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/blif.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/blif.cpython-310.pyc index 0da4515400f65ec51a49a88e508075b209f54f51..2fb28b69101f2f2cb2298ccfcfa4163a85ab0209 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/blif.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/blif.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/rblif.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/rblif.cpython-310.pyc index ce3b0d27934dac2dfcd67a029307b2f42181b0e5..04fa112e1be499b017a32f3013eb5286f9240a6e 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/rblif.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/blif_model/__pycache__/rblif.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/modnef_torch_neuron.py b/modneflib/modnef/modnef_torch/modnef_neurons/modnef_torch_neuron.py index dbfb48aebf08ec0f94598443326c3fc9ab412ce8..88b04f27ce5d11d6aeb34d16a7373a97b95e2c34 100644 --- a/modneflib/modnef/modnef_torch/modnef_neurons/modnef_torch_neuron.py +++ b/modneflib/modnef/modnef_torch/modnef_neurons/modnef_torch_neuron.py @@ -94,8 +94,8 @@ class ModNEFNeuron(): def set_quant(self, mode=False): self.quantization_flag = mode - # if mode: - # self.quantize(False) + if mode: + self.quantize(False) def hardware_estimation(self, mode = False): """ @@ -103,9 +103,10 @@ class ModNEFNeuron(): """ self.hardware_estimation_flag = mode + self.quantization_flag = mode if mode: - self.set_quant(mode) + self.quantize(True) def get_builder_module(self, module_name : str, output_path : str = "."): """ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/__init__.cpython-310.pyc index 5d278f77bee4424d05d152cf1cc01563949e8e69..fd32661148fc23d670f5c43245ea3d63de63717e 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/rslif.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/rslif.cpython-310.pyc index c689156476790470b9b7d39d1f684d72cbc014cc..6dff0a87ea8d67f9790e1af323aef976af9139f6 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/rslif.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/rslif.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/slif.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/slif.cpython-310.pyc index 56a8d34cf4cbbbb57ba5f63a00f4e82af30ca69b..5cd752e41e71aff3db61b39b420b47b0704dffc3 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/slif.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/__pycache__/slif.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/slif.py b/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/slif.py index a7b89ebc3012f273badcc203dd67c4806b19d4fc..994bb39111dc0d85bde37bd53e0a53275ad1044e 100644 --- a/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/slif.py +++ b/modneflib/modnef/modnef_torch/modnef_neurons/slif_model/slif.py @@ -299,7 +299,9 @@ class SLIF(LIF, ModNEFNeuron): if self.hardware_description["variable_size"]==-1: if self.hardware_estimation_flag: val_max = max(abs(self.val_max), abs(self.val_min)) - val_max = self.quantizer(val_max) + print(val_max) + val_max = self.quantizer(val_max, dtype=torch.int32) + print(val_max) self.hardware_description["variable_size"] = ceil(log(val_max)/log(256))*8 else: self.hardware_description["variable_size"]=16 diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/__init__.cpython-310.pyc index b0d94c36d8094814dcfa4056130323bffdb3350d..41deef92f558133490ec72f27c3405cadf873a70 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/rshiftlif.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/rshiftlif.cpython-310.pyc index fc3997c992141b7289ae5141eb50036c7311aa12..b67d63b627c11cf4a3af22935eb3059308965d9e 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/rshiftlif.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/rshiftlif.cpython-310.pyc differ diff --git a/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/shiftlif.cpython-310.pyc b/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/shiftlif.cpython-310.pyc index 70eb665a7242039cc59cb7aeb23a76d5ccffe1f7..ae445a6e642de63fca47ed05affc89f74da21634 100644 Binary files a/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/shiftlif.cpython-310.pyc and b/modneflib/modnef/modnef_torch/modnef_neurons/srlif_model/__pycache__/shiftlif.cpython-310.pyc differ diff --git a/modneflib/modnef/quantizer/dynamic_scale_quantizer.py b/modneflib/modnef/quantizer/dynamic_scale_quantizer.py index 4255dea4e75d793526d19676502789f4c8424bc5..6b98e21e21db04f0b4f8ba0860da797517943107 100644 --- a/modneflib/modnef/quantizer/dynamic_scale_quantizer.py +++ b/modneflib/modnef/quantizer/dynamic_scale_quantizer.py @@ -146,7 +146,7 @@ class DynamicScaleFactorQuantizer(Quantizer): born_max = 2**(self.bitwidth-int(self.signed))-1 #scaled = torch.clamp(data/self.scale_factor, min=born_min, max=born_max).to(dtype) - scaled = (data/self.scale_factor).to(dtype) + scaled = torch.round(data/self.scale_factor).to(dtype) if unscale: return scaled*self.scale_factor diff --git a/modneflib/modnef/templates/evaluation.py b/modneflib/modnef/templates/evaluation.py index 40d71473ba39069a367c214a2ae76e0c3b2da933..aa74e22091b28a52bb36892ac081df0c918c7803 100644 --- a/modneflib/modnef/templates/evaluation.py +++ b/modneflib/modnef/templates/evaluation.py @@ -3,6 +3,7 @@ from torch.utils.data import DataLoader from modnef.modnef_torch import ModNEFModelBuilder import os from snntorch.surrogate import fast_sigmoid +import torch from run_lib import * import sys @@ -23,7 +24,6 @@ if __name__ == "__main__": """Kind of run eval : full precision evaluation qeval : quantized evaluation - heval : hardware estimation evaluation feval : FPGA eval """ @@ -37,6 +37,11 @@ if __name__ == "__main__": save_conf_matrix = False output_path = "." + """FPGA file definition""" + driver_config_path = "driver_config" + board_path = "" + + """Output variable definition""" acc = 0.0 y_true = None @@ -65,22 +70,23 @@ if __name__ == "__main__": testLoader=testLoader, name=exp_name, device=device, - verbose=verbose + verbose=verbose, + quant=False ) elif kind == "qeval": - # TODO - raise NotImplementedError() - elif kind == "heval": - acc, y_pred, y_true = hardware_estimation( + acc, y_pred, y_true = evaluation( model=model, testLoader=testLoader, name=exp_name, device=device, - verbose=verbose + verbose=verbose, + quant=True ) elif kind == "feval": acc, y_pred, y_true = fpga_evaluation( model=model, + driver_config=driver_config_path, + board_path=board_path, testLoader=testLoader, name=exp_name, verbose=verbose diff --git a/modneflib/modnef/templates/model_template.json b/modneflib/modnef/templates/model_template.json index 31fd483bafa2366531f188f883e75fa120e46398..cbf8673b9f594c67a682ad2eee7fb0a17d8b1d7a 100644 --- a/modneflib/modnef/templates/model_template.json +++ b/modneflib/modnef/templates/model_template.json @@ -1,5 +1,5 @@ { - "name" : "blif_model", + "name" : "template_model", "input" : 2312, "num_class" : 10, @@ -71,8 +71,8 @@ "hardware" : { "clock_name" : "clock", - "clock_freq" : 125000000, - "baud_rate" : 921600, + "clock_freq" : 100000000, + "baud_rate" : 460800, "txd" : "uart_txd", "rxd" : "uart_rxd", "queue_read_depth" : 4096, diff --git a/modneflib/modnef/templates/run_lib.py b/modneflib/modnef/templates/run_lib.py index 38bec42008e9bdeed92c9077ebc456d73502f5ea..5a987427756fa788577b2bcdaccba5224e3eea1d 100644 --- a/modneflib/modnef/templates/run_lib.py +++ b/modneflib/modnef/templates/run_lib.py @@ -160,14 +160,14 @@ def __run_accuracy(model, testLoader, name, verbose, device): return (correct/total), y_pred, y_true -def evaluation(model, testLoader, name="Evaluation", device=torch.device("cpu"), verbose=False): +def evaluation(model, testLoader, name="Evaluation", device=torch.device("cpu"), verbose=False, quant=False): accuracy = 0 y_pred = [] y_true = [] model = model.to(device) - model.eval() + model.eval(quant) accuracy, y_pred, y_true = __run_accuracy(model=model, testLoader=testLoader, name=name, verbose=verbose, device=device) @@ -187,7 +187,7 @@ def hardware_estimation(model, testLoader, name="Hardware Estimation", device=to return accuracy, y_pred, y_true -def fpga_evaluation(model, testLoader, name="FPGA Evaluation", verbose=False): +def fpga_evaluation(model, testLoader, board_path, driver_config, name="FPGA Evaluation", verbose=False): accuracy = 0 y_pred = [] y_true = [] @@ -196,7 +196,7 @@ def fpga_evaluation(model, testLoader, name="FPGA Evaluation", verbose=False): model = model.to(device) - model.hardware_estimation() + model.fpga_eval(board_path, driver_config) accuracy, y_pred, y_true = __run_accuracy(model=model, testLoader=testLoader, name=name, verbose=verbose, device=device) diff --git a/modneflib/modnef/templates/train.py b/modneflib/modnef/templates/train.py index 3a5bc0cf37461314aadec4d85cd580c28ddab691..03603ecb67073dd27e7d2c58b4651504b9655ab8 100644 --- a/modneflib/modnef/templates/train.py +++ b/modneflib/modnef/templates/train.py @@ -4,6 +4,7 @@ from modnef.modnef_torch import ModNEFModelBuilder import os from snntorch.surrogate import fast_sigmoid from run_lib import * +import torch if __name__ == "__main__": @@ -21,7 +22,7 @@ if __name__ == "__main__": device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") """Train variable definition""" - n_epoch = 10 + n_epoch = 1 best_model_name = "best_model" verbose = True save_plot = False diff --git a/modneflib/modnef/templates/vhdl_generation.py b/modneflib/modnef/templates/vhdl_generation.py new file mode 100644 index 0000000000000000000000000000000000000000..82dbb71fda818e276264ed04b3e2068791d4c0ca --- /dev/null +++ b/modneflib/modnef/templates/vhdl_generation.py @@ -0,0 +1,62 @@ +import tonic +from torch.utils.data import DataLoader +from modnef.modnef_torch import ModNEFModelBuilder +import os +from snntorch.surrogate import fast_sigmoid +from run_lib import * +import torch + +if __name__ == "__main__": + + """Experience name""" + exp_name = "Evaluation" + + """Model definition""" + model_path = "model_template.json" + best_model_name = "best_model" + + model = ModNEFModelBuilder(model_path, spike_grad=fast_sigmoid(slope=25)) + + model.load_state_dict(torch.load(best_model_name)) + + + """Device definition""" + device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") + + """Hardware Estimation variable definition""" + verbose = True + + + """VHDL file definition""" + output_path = "." + file_name = "template_vhdl_model.vhd" + driver_config_path = "driver_config" + + """DataSet Definition""" + dataset_path = f"{os.environ['HOME']}/datasets" + + # data set definition, change to your dataset + sensor_size = tonic.datasets.NMNIST.sensor_size + frame_transform = tonic.transforms.ToFrame(sensor_size=sensor_size, n_time_bins=10) + + test_set = tonic.datasets.NMNIST(save_to=dataset_path, train=False, transform=frame_transform) + + # batch loader + batch_size = 64 + + testLoader = DataLoader(test_set, batch_size=batch_size, shuffle=True, drop_last = True, collate_fn = tonic.collation.PadTensors(batch_first=True)) + + acc, y_pred, y_true = hardware_estimation( + model=model, + testLoader=testLoader, + name=exp_name, + device=device, + verbose=verbose + ) + + model.to_vhdl( + file_name=file_name, + output_path=output_path, + driver_config_path=driver_config_path + ) + \ No newline at end of file diff --git a/modneflib/modnef/tools/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/tools/__pycache__/__init__.cpython-310.pyc index 433bd5153761041e9a7b0e5108f10728f669159f..455a3df5ea3b57687638aaf66ecd1ccebabe0520 100644 Binary files a/modneflib/modnef/tools/__pycache__/__init__.cpython-310.pyc and b/modneflib/modnef/tools/__pycache__/__init__.cpython-310.pyc differ diff --git a/modneflib/modnef/tools/__pycache__/debug_tools.cpython-310.pyc b/modneflib/modnef/tools/__pycache__/debug_tools.cpython-310.pyc index 7373ac7fad706a146f118601318dbb3123a95b0e..14c552144a335170490a5b2f9347fcae3490b3e7 100644 Binary files a/modneflib/modnef/tools/__pycache__/debug_tools.cpython-310.pyc and b/modneflib/modnef/tools/__pycache__/debug_tools.cpython-310.pyc differ diff --git a/modneflib/modnef/tools/__pycache__/progress_bar.cpython-310.pyc b/modneflib/modnef/tools/__pycache__/progress_bar.cpython-310.pyc index 8fb07f1a6b9ca0be63668e7b6f3111abd74de7a4..7ff530185a29e27e4f0cf63c852d48e0133fe0a2 100644 Binary files a/modneflib/modnef/tools/__pycache__/progress_bar.cpython-310.pyc and b/modneflib/modnef/tools/__pycache__/progress_bar.cpython-310.pyc differ diff --git a/modneflib/modnef/tools/__pycache__/tools.cpython-310.pyc b/modneflib/modnef/tools/__pycache__/tools.cpython-310.pyc index e89b569d9d84a8c70c8e5ec1829f0dc296d16587..cacc8d6fb7c08e77f0f3a0174a21268fab587a25 100644 Binary files a/modneflib/modnef/tools/__pycache__/tools.cpython-310.pyc and b/modneflib/modnef/tools/__pycache__/tools.cpython-310.pyc differ