From dd81705532e3b97c861cacedfface1de38b28a87 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lie=20saulquin?= <aurelie.saulq@gmail.com>
Date: Mon, 3 Mar 2025 16:39:41 +0100
Subject: [PATCH] add bug fix

---
 .../__pycache__/__init__.cpython-310.pyc      | Bin 273 -> 275 bytes
 .../project_generator.cpython-310.pyc         | Bin 892 -> 894 bytes
 .../__pycache__/__init__.cpython-310.pyc      | Bin 429 -> 431 bytes
 .../modnef_builder.cpython-310.pyc            | Bin 14163 -> 14165 bytes
 .../BLIF/__pycache__/__init__.cpython-310.pyc | Bin 516 -> 518 bytes
 .../BLIF/__pycache__/blif.cpython-310.pyc     | Bin 8141 -> 8143 bytes
 .../__pycache__/blif_debugger.cpython-310.pyc | Bin 8788 -> 8790 bytes
 .../BLIF/__pycache__/rblif.cpython-310.pyc    | Bin 8732 -> 8734 bytes
 .../__pycache__/__init__.cpython-310.pyc      | Bin 513 -> 515 bytes
 .../__pycache__/io_debugger.cpython-310.pyc   | Bin 6057 -> 6059 bytes
 .../__pycache__/probe.cpython-310.pyc         | Bin 3997 -> 3999 bytes
 .../SLIF/__pycache__/__init__.cpython-310.pyc | Bin 522 -> 524 bytes
 .../SLIF/__pycache__/rslif.cpython-310.pyc    | Bin 9085 -> 9087 bytes
 .../SLIF/__pycache__/slif.cpython-310.pyc     | Bin 8332 -> 8334 bytes
 .../__pycache__/slif_debugger.cpython-310.pyc | Bin 9065 -> 9067 bytes
 .../__pycache__/__init__.cpython-310.pyc      | Bin 479 -> 481 bytes
 .../__pycache__/rshiftlif.cpython-310.pyc     | Bin 8893 -> 8895 bytes
 .../__pycache__/shiftlif.cpython-310.pyc      | Bin 8044 -> 8046 bytes
 .../UART/__pycache__/__init__.cpython-310.pyc | Bin 716 -> 718 bytes
 .../__pycache__/uart_1step.cpython-310.pyc    | Bin 6547 -> 6549 bytes
 .../uart_classifier.cpython-310.pyc           | Bin 6646 -> 6648 bytes
 .../uart_classifier_timer.cpython-310.pyc     | Bin 6768 -> 6770 bytes
 .../__pycache__/uart_xstep.cpython-310.pyc    | Bin 6812 -> 6814 bytes
 .../uart_xstep_timer.cpython-310.pyc          | Bin 7142 -> 7144 bytes
 .../__pycache__/__init__.cpython-310.pyc      | Bin 771 -> 773 bytes
 .../__pycache__/io_arch.cpython-310.pyc       | Bin 4434 -> 4436 bytes
 .../modules/__pycache__/link.cpython-310.pyc  | Bin 2462 -> 2464 bytes
 .../__pycache__/merger.cpython-310.pyc        | Bin 4327 -> 4329 bytes
 .../modnef_arch_mod.cpython-310.pyc           | Bin 5565 -> 5567 bytes
 .../__pycache__/splitter.cpython-310.pyc      | Bin 3609 -> 3611 bytes
 .../__pycache__/utilities.cpython-310.pyc     | Bin 5565 -> 5567 bytes
 .../__pycache__/__init__.cpython-310.pyc      | Bin 483 -> 485 bytes
 .../modnef_drivers.cpython-310.pyc            | Bin 1306 -> 1308 bytes
 .../__pycache__/__init__.cpython-310.pyc      | Bin 907 -> 909 bytes
 .../classifier_driver.cpython-310.pyc         | Bin 4614 -> 4616 bytes
 .../classifier_timer_driver.cpython-310.pyc   | Bin 4962 -> 4964 bytes
 .../debugger_driver.cpython-310.pyc           | Bin 3776 -> 3778 bytes
 .../default_driver.cpython-310.pyc            | Bin 5151 -> 5153 bytes
 .../single_step_driver.cpython-310.pyc        | Bin 3959 -> 3961 bytes
 .../__pycache__/xstep_driver.cpython-310.pyc  | Bin 4936 -> 4938 bytes
 .../xstep_timer_driver.cpython-310.pyc        | Bin 5392 -> 5394 bytes
 .../__pycache__/__init__.cpython-310.pyc      | Bin 390 -> 392 bytes
 .../__pycache__/executor.cpython-310.pyc      | Bin 8195 -> 8197 bytes
 .../__pycache__/model.cpython-310.pyc         | Bin 5519 -> 5521 bytes
 .../__pycache__/trainer.cpython-310.pyc       | Bin 7841 -> 7843 bytes
 modneflib/modnef/modnef_torch/model.py        |   4 +-
 .../__pycache__/__init__.cpython-310.pyc      | Bin 565 -> 567 bytes
 .../modnef_torch_neuron.cpython-310.pyc       | Bin 3957 -> 4004 bytes
 .../__pycache__/__init__.cpython-310.pyc      | Bin 476 -> 478 bytes
 .../__pycache__/blif.cpython-310.pyc          | Bin 9297 -> 9299 bytes
 .../__pycache__/rblif.cpython-310.pyc         | Bin 9737 -> 9739 bytes
 .../modnef_neurons/modnef_torch_neuron.py     |   7 +-
 .../__pycache__/__init__.cpython-310.pyc      | Bin 487 -> 489 bytes
 .../__pycache__/rslif.cpython-310.pyc         | Bin 10176 -> 10178 bytes
 .../__pycache__/slif.cpython-310.pyc          | Bin 9886 -> 9938 bytes
 .../modnef_neurons/slif_model/slif.py         |   4 +-
 .../__pycache__/__init__.cpython-310.pyc      | Bin 506 -> 508 bytes
 .../__pycache__/rshiftlif.cpython-310.pyc     | Bin 10384 -> 10386 bytes
 .../__pycache__/shiftlif.cpython-310.pyc      | Bin 9896 -> 9898 bytes
 .../quantizer/dynamic_scale_quantizer.py      |   2 +-
 modneflib/modnef/templates/evaluation.py      |  20 ++++--
 .../modnef/templates/model_template.json      |   6 +-
 modneflib/modnef/templates/run_lib.py         |   8 +--
 modneflib/modnef/templates/train.py           |   3 +-
 modneflib/modnef/templates/vhdl_generation.py |  62 ++++++++++++++++++
 .../__pycache__/__init__.cpython-310.pyc      | Bin 232 -> 234 bytes
 .../__pycache__/debug_tools.cpython-310.pyc   | Bin 6763 -> 6765 bytes
 .../__pycache__/progress_bar.cpython-310.pyc  | Bin 4394 -> 4396 bytes
 .../tools/__pycache__/tools.cpython-310.pyc   | Bin 550 -> 552 bytes
 69 files changed, 94 insertions(+), 22 deletions(-)
 create mode 100644 modneflib/modnef/templates/vhdl_generation.py

diff --git a/modneflib/modnef/__pycache__/__init__.cpython-310.pyc b/modneflib/modnef/__pycache__/__init__.cpython-310.pyc
index 97bc1b55c8e564601f549461575341a326c4fe38..1c1dde05882187dd903bc32db2023dc6ab73f07e 100644
GIT binary patch
delta 37
scmbQpG?|GjpO=@5fq{XcNo^w6N`5E(jQreG{nXslqQuga)QJZI0j7-#^Z)<=

delta 35
rcmbQtG?9rbpO=@5fq{YHjp;<LmAnr68Tq-X`iZ4Qsl|yC4+R1MoI?tv

diff --git a/modneflib/modnef/__pycache__/project_generator.cpython-310.pyc b/modneflib/modnef/__pycache__/project_generator.cpython-310.pyc
index 0ed6ae3574e1b885fd45e6ef8052fe41b3c6ef24..89068c06536f19a0bb0a5a3680e80f70c5747f73 100644
GIT binary patch
delta 41
wcmeyv_K%G_pO=@5fq{YHp344>+!2iY-ufB&xvBc8xv52or75YK3mAEr0R8a{RsaA1

delta 39
scmeyz_J@r-pO=@50R+_dY~+q$<n`3g$j?pHPb@7;El%8A#K^-00L_sKuK)l5

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
GIT binary patch
delta 40
vcmZ3>yq=jmpO=@5fq{XcNp1f|Zfiz<fBlU7+*JM4+|;7P(v;N6!HiJ=%xVix

delta 38
ucmZ3_yq1|epO=@5fq{YH`kg%+xvd#_ef2Z)b5r#bON&yA6DNl<MgaiMq6>`x

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
GIT binary patch
delta 41
wcmcbdcQubYpO=@5fq{XcNp1f|ZfRcrQ2mVj+*JM4+|;7P(v;NA#=Htz00P?#UH||9

delta 39
ucmcbbcR7zcpO=@5fq{V`=iZ);+|s<f!TK5bxvBbzrA4X5iJMJ%6|?~OZwxd5

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
GIT binary patch
delta 40
vcmZo+X=CBe=jG*MU|?WqQro|gyP1(cMn5AzH&s71H?=6SG$nQNY{pCg$VLmQ

delta 38
tcmZo;X<^~c=jG*MU|?X7y0d2^cQYezlzv8jZmND_X;Er%;^euEnE<!{3oHNt

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
GIT binary patch
delta 41
wcmX?Wf8L%upO=@5fq{YHR^7pk+-dy$5&9YVxvBc8xv52or75YK>-hZz01jXcSO5S3

delta 39
ucmX?af7YHmpO=@5fq{X6+48_f?lgYhF#U}D+*JL<(xTMj#LW%-{sI8jr3-QZ

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
GIT binary patch
delta 41
xcmccOa?OQ1pO=@5fq{YHR^7pk+<yi56ZJFlb5r$Gb5n~FOH)!eiwfEc0stPg4VwS}

delta 39
vcmccSa>a!^pO=@5fq{YHm&JjN+<ygl<MlK0b5r#bON&yA6E}+s+6w{z{)7yx

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
GIT binary patch
delta 41
xcmbQ^GS7uOpO=@5fq{YHR^7pk+*btnBlR=#b5r$Gb5n~FOH)!ezY#DH1ON;m4Z#2a

delta 39
vcmbQ|GRK8GpO=@5fq{X6)AGPZ?kfVk;rbc*xvBbzrA4X5iJRXE7zhFY)X@v!

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
GIT binary patch
delta 40
vcmZo<X=dTh=jG*MU|?WqQro|gyM~cJK|douH&s71H?=6SG$nQN6vkWt#{CPP

delta 38
tcmZo>X=LHf=jG*MU|?V{zq4l}cMT(NoPI`rZmND_X;Er%;^b+Jxd6GH3q1e;

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
GIT binary patch
delta 41
xcmZ3fzgnL=pO=@5fq{YHp344>++Vr*ll3$5b5r$Gb5n~FOH)!e^YYB$1^@vg4FUiF

delta 39
vcmZ3jzfzw&pO=@5fq{Wx#qFINxxaGrChBM8=cei>mKLQJCvN8FnZpeL@;VH(

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
GIT binary patch
delta 41
xcmbO$KVP0ZpO=@5fq{XcNp1f|?oM|8SpAIr+*JM4+|;7P(v;NA3)%m$0|4g}4CMd-

delta 39
vcmbO)KUbbRpO=@5fq{Xc=K7wE+@0*a(fS$rxvBbzrA4X5iJKR*|6vCJ-rEes

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
GIT binary patch
delta 40
vcmeBT>0#l{=jG*MU|?WqQro|gyOWVWMn5AzH&s71H?=6SG$nQNLdHx0%CHN<

delta 38
tcmeBS>0;r|=jG*MU|?WKzO!c|cPArnlzv8jZmND_X;Er%;^f7QnE=6N3ylB(

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
GIT binary patch
delta 41
xcmezC_TP;=pO=@5fq{YHR^7pk+-C&&BlR=#b5r$Gb5n~FOH)!eKM|ZM2mmV|4&nd+

delta 39
vcmezG_ScO&pO=@5fq{WR!ScXH?lXeC;rbc*xvBbzrA4X5iJPAZ&J+Xy^r#IP

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
GIT binary patch
delta 41
xcmeBi>~rMK=jG*MU|?XlRd;YB_g#Me2>p!w+*JM4+|;7P(v;NAU-_pC000Nc4iEqU

delta 39
ucmeBk>~ZAI=jG*MU|?X-wmh(r`z}9kn0`inZmND_X;Er%;^y!C(**$3EDTZr

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
GIT binary patch
delta 41
wcmaFq_S%g*pO=@5fq{YHR^7pk+|GjhiTWA&xvBc8xv52or75YKqXqed02TKQCIA2c

delta 39
ucmaFu_R@_zpO=@5fq{WR&GNuTZf8N>c>Rq0+*JL<(xTMj#LcmSd_n->ZVO`o

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
GIT binary patch
delta 40
vcmcc5{E(SDpO=@5fq{XcNp1f|?ifb?1pSQs+*JM4+|;7P(v;N6C5+hs;4=&s

delta 38
tcmaFJe4m*+pO=@5fq{V`;Le_n+%b&2arzngxvBbzrA4X5iIdA1vjNl)3(f!l

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
GIT binary patch
delta 41
wcmdn%y5E&MpO=@5fq{YHR^7pk+(v@@iTWA&xvBc8xv52or75YKy#$K|0S4y{4gdfE

delta 39
ucmdn*y4RIEpO=@5fq{WR#PYyKZX-e7c>Rq0+*JL<(xTMj#LYf}#ex9QU<)|_

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
GIT binary patch
delta 41
xcmaE3_s)(xpO=@5fq{YHR^7pk+}rs16ZA9kb5r$Gb5n~FOH)!epW~m$4*(%=4vGK(

delta 39
vcmaE7_r{JppO=@5fq{X6+xEal?rr?MarzngxvBbzrA4X5iJLF*&*KLG>A(!I

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
GIT binary patch
delta 40
vcmX@ZdXAMlpO=@5fq{XcNp1f|Zg(dB82ya=+*JM4+|;7P(v;N6@l3e@*ue|R

delta 38
tcmX@ddWMxdpO=@5fq{Xc<<6ds-0n=gQTiGAxvBbzrA4X5iIWqVaskpN3$_3N

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
GIT binary patch
delta 41
xcmbPiJk^*xpO=@5fq{XcNp1f|?!CPHarzngxvBc8xv52or75YKuk!BW1_1B54Kx4%

delta 39
vcmbPgJlU8#pO=@5fq{X6|JI(3+<SR>WArofb5r#bON&yA6E|Py-Ny|8+#C$4

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
GIT binary patch
delta 41
wcmexn{KJ?#pO=@5fq{XcNp1f|?o2-ZWc`f%+*JM4+|;7P(v;NAjeMot00qYl5C8xG

delta 39
ucmexi{LPp<pO=@5fq{X+^VXh?+?jm5iTWA&xvBbzrA4X5iJP1GO1S~|4-CHm

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
GIT binary patch
delta 41
xcmexh^2vldpO=@5fq{XcNp1f|?k+z5O#O`f+*JM4+|;7P(v;NAi}=oQ0{{rx4W|GA

delta 39
vcmexl^1*~VpO=@5fq{WR_tu_`++BRU>G~P@xvBbzrA4X5iJO=3o#O@o_Ye&_

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
GIT binary patch
delta 41
xcmbPZI?t3lpO=@5fq{XcNp1f|?tOgxarzngxvBc8xv52or75YKukjt@1_1ME4ORdE

delta 39
vcmbPdI>(edpO=@5fq{Xc{MMe0-23==WArofb5r#bON&yA6F1-BJH`zF>MRX2

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
GIT binary patch
delta 41
xcmaE6{=%F)pO=@5fq{XcNp1f|?#2B4Df$`txvBc8xv52or75YKck^rW000NK4JH5p

delta 39
vcmaE1{>+>^pO=@5fq{V`_ST+_+>7~nlk_w4b5r#bON&yA6F2YW*X98L`o9e6

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
GIT binary patch
delta 40
vcmZo>Yh~lk=jG*MU|?WqQro|gyPSzXTt6c}H&s71H?=6SG$nO%KT`<+$0rM%

delta 38
tcmZo=Yi8rl=jG*MU|?X_b!X2;?s6vHQ2mVj+*JL<(xTMj#K{wxN&v>33%&pV

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
GIT binary patch
delta 41
xcmcblbVZ3fpO=@5fq{XcNp1f|?mkxjF#U}D+*JM4+|;7P(v;NA%UIWN0|58B4F~`L

delta 39
vcmcbjbV-RjpO=@5fq{Wx-K{+vx%*goL-aH9b5r#bON&yA6F0A5UBe9k^a%|d

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
GIT binary patch
delta 41
xcmbOyyg-;cpO=@5fq{YHp344>-1}JggY`4=b5r$Gb5n~FOH)!eUt>AJ0s!%@4NL$4

delta 39
vcmZ1=JWrTApO=@5fq{WRptyS@_dXWhK>dvT+*JL<(xTMj#LYKYPOty~#v}{S

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
GIT binary patch
delta 41
xcmaE^_)?KOpO=@5fq{XcNp1f|?gyOwq52v5xvBc8xv52or75YKe{jBM0{{nt4jBLd

delta 39
vcmaE<_*{`YpO=@5fq{YH%&k2exgT)y2J2_!=cei>mKLQJCvN`5`JN2`1>+7&

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
GIT binary patch
delta 41
xcmdn1y<eL<pO=@5fq{XcNp1f|?#*ocarzngxvBc8xv52or75YKPqTgE0|5CK4UGT*

delta 39
vcmdn5y;qw%pO=@5fq{X+;`W}6+?&~WWArofb5r#bON&yA6E~k_`@{zT=~oRb

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
GIT binary patch
delta 41
xcmbO!Gh2o`pO=@5fq{XcNp1f|?z`;#;rbc*xvBc8xv52or75YKzp|^a0RZcq44?o2

delta 39
vcmbO&GgF2;pO=@5fq{V`_V%8Q+;`b|L-jNAb5r#bON&yA6E}ZnS78GH;35oU

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
GIT binary patch
delta 41
wcmdn1y<eL<pO=@5fq{XcNp1f|Zb26Q2>p!w+*JM4+|;7P(v;NAnk-WU0p^|y<NyEw

delta 39
vcmdn5y;qw%pO=@5fq{Xc@%EmL+=48;Vfq>QxvBbzrA4X5iJP@qrU(K6-<%7~

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
GIT binary patch
delta 40
vcmaFN{FIqHpO=@5fq{XcNp1f|?mR~R0R4>o+*JM4+|;7P(v;N6ZH%!1;qMG2

delta 38
ucmaFL{Fs?LpO=@5fq{YH_PsqDx$_u#{q!^Pb5r#bON&yA6DM~t#sUE2dkkp+

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
GIT binary patch
delta 41
xcmbQmHHV8kpO=@5fq{XcNp1f|?lsK(Vfq>QxvBc8xv52or75YKk1&TZ0s!GG3_t(?

delta 39
vcmbQkHH(WopO=@5fq{YH?Y%u4xz{lBhUjPH=cei>mKLQJCvHB*9L5L$<xLEi

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
GIT binary patch
delta 40
vcmeBX?`7xC=jG*MU|?WqQro|gn~j-2LO&xvH&s71H?=6SG$nPi9CI!JzWoZw

delta 38
tcmeBW?`G%D=jG*MU|?WacW=)|ZZ>A#F#U}D+*JL<(xTMj#K{WGxd6T}3g7?$

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
GIT binary patch
delta 41
wcmZou=}_U$=jG*MU|?Xlr?P(|_f>ZOME#8X+*JM4+|;7P(v;NAZ`mce0P)le*8l(j

delta 39
ucmeBBX;b0O=jG*MU|?VnDDK|KeU+UzUOyv0H&s8ev?#SWar1k2NiG1!77JSd

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
GIT binary patch
delta 41
wcmaE)_C$?4pO=@5fq{YHp344>-1Z#&>G~P@xvBc8xv52or75YK!#TLQ0sqttVgLXD

delta 39
ucmaE&_DGF8pO=@5fq{WRptyS@w><}Ms(wa(ZmND_X;Er%;^s&WZf*e6yb9(3

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
GIT binary patch
delta 41
xcmX>gdq|c$pO=@5fq{YHp344>+#A{W<MlK0b5r$Gb5n~FOH)!epJe;a4gmjt4a@)l

delta 39
vcmX>kdq9>upO=@5fq{WRptyS@_eM6}SpAIr+*JL<(xTMj#LcJKzOw@W(?SeT

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
GIT binary patch
delta 41
xcmbQQu~36MpO=@5fq{YHp344>+|wEP<McD~b5r$Gb5n~FOH)!euV*X}0s!<j4CMd-

delta 39
vcmZ3eF<*l_pO=@5fq{X6UwZvU?&*xYG5Q(#xvBbzrA4X5iJLbv76<_V!$1o(

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
GIT binary patch
delta 41
xcmew^_fw8LpO=@5fq{YHp344>+-KPMlk_w4b5r$Gb5n~FOH)!eKVh590RR(O4iW$W

delta 39
vcmew<_g#)VpO=@5fq{WRptyS@_Zc?c1pSQs+*JL<(xTMj#LdsxCUXD)<?;-c

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
GIT binary patch
delta 41
xcmX@1c1n#qpO=@5fq{YHp344>+@9?GG5Q(#xvBc8xv52or75YK6WO100|5Dj4G{nU

delta 39
vcmX@5c0!FipO=@5fq{Wxdd9kq+@9>bQTiGAxvBbzrA4X5iJOzzpK}8M-NXzu

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
GIT binary patch
delta 41
xcmbQBHA#y*pO=@5fq{YHp344>+_4<|N%|T2xvBc8xv52or75YKOF3rq008S#42}Q*

delta 39
ucmbQFH9?CzpO=@5fq{WRptyS@cPs~Qf__GRZmND_X;Er%;^uOW**pNiK?@Q9

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
GIT binary patch
delta 40
vcmZo;?qKH5=jG*MU|?Xds5`omTY!<@Uq2&1H&s71H?=6SG$nPi24frmz7Yz-

delta 38
tcmeBRZe!-o=jG*MU|?W)Saf6~w*VuruYN{;ZmND_X;Er%;$$txH~_ar3Y7o=

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
GIT binary patch
delta 41
wcmZp6Xm#Mu=jG*MU|?XlRd;YB_eO4hfBlU7+*JM4+|;7P(v;NAC%LUe0RAcsIsgCw

delta 39
ucmZp5Xm;Sv=jG*MU|?W4?s;G%_eO4BU;T{y+*JL<(xTMj#LcI<twaFao(w1e

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
GIT binary patch
delta 191
zcmeCzo~X^6&&$ijz`(#TY5LK0`Hj5K7)3c!*-|)D+0s~2xKg-VSfkie6jC@hb1+r1
z^84s#<maa9r{<;>C6=b7PVQrWz*@w~z`!uMgd>^l7E4+|dgA0e99|r5MS=_r3`OFT
zbvZM*#X(F75Ft5v0jIhsn9mR5g9!l;OKkETPQ}UpI13oXH|KM$W@HrEEX{MAozZRb
XW8rWCF_01k5TODhL^gYgxH19&EDtTy

delta 189
zcmbQJ-LK7?&&$ijz`(#zP<13-WFzl0Mp5=uwiJ$3wltO$&J?Z|)+qKAg%pm>988t0
zyk7bl`MIh3iKRuU#fg(Aus>kC#gbN#o;bObBbl{Gh=GA&@;weO_98(B28JSu$p)Mm
z+!7$BB#022yqHs66wK!b@xg=uh$TMxKBpq1+a#_6Mv2XZT&o!wMK{ax9A{??nfz2Z
UTtFP8Mgc^qfC$meJ|eD+09Z3C=>Px#

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
GIT binary patch
delta 41
xcmZ2zyV#aHpO=@5fq{X+qVDKM?h_pRe)<{txvBc8xv52or75YKA8;HL1pxSM4S@gv

delta 39
vcmZ2%yU><9pO=@5fq{WxZt;<g+$T7Aee^T(b5r#bON&yA6E{ENI4BAL=hY1n

diff --git a/modneflib/modnef/modnef_torch/model.py b/modneflib/modnef/modnef_torch/model.py
index 8eaf453..5d32870 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
GIT binary patch
delta 40
wcmdnWvYmxHpO=@5fq{XcNp1f|?hTCmarzngxvBc8xv52or75YCPcY^J0NcY1YybcN

delta 38
ucmdnavXzB9pO=@5fq{WR^z6Qk+#48qWArofb5r#bON&yA6DOZy%mo0*qYK;s

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
GIT binary patch
delta 736
zcmew=w?v*dpO=@5fq{YH(6poJt{ZtZSs7POHfNnJBFezP@GDb4BR@A)KQ%YCD6upp
zb@LNeVMcC{Oc9t6o6N-S%_uS1k3CUbl7WF?C1a5Y0|Ns@5~|`DdpM)SWH}BqQILuv
zIdu6<js!-D$)`A0Xo2K4nZYL9;!4XeN=}W>%*!mf#hOx5S&)ii=p0Um$q`)A;VFy@
z85tQ;7=ppLh=YNFL6fNn<ewrHkb9UQrm^Jar=S?Xz`$^evpBURzOXbguOyCvfuR_r
zmyMByiI0)x|73kGBMl`628J5O8isfX$ymc!#9za(fC*|RQ!qmcQ!s-j^W<hOBhL^&
zP39s_kl)~z7pa1{;7|Y)VjxR}GZKqZ$`gxH<5P=EGIJA4GV}9NK-Pn_v9Yo-PX5Lf
z&nPiDjQfoxQg{?;fy~kd5n!{x1lT~K^wg60q|(fsl+>d5-29Z%oYefu)jZP-g+XBf
z3C$v1kkyRY$Uz7a;Q@sJ%t4Klop@*J=z*+2k0Y>JkUcQ9ogh^TliB%H88s*C^4X<|
zgOqS5=Oh*v=cblq<fjzLf|SUE2t^RV4N}0GnO9<L1df>^b&#kANR+v_q^L*-#FYUN
x1|Y%^M1VbsAjBqL;8PRk<`d%KC}IP7j-$vFq>OtqC%>5hLLHbTHrbzF4FCa#nzsM|

delta 659
zcmZ1?|5c7RpO=@5fq{XczU@f5#ztOERz}Uq=B%@YL>L$tex>VY<maa9Czcka7AJ0g
z#wyIn4H7Q`6QYw@*u5FWCkL=6ic2ssFsx)O5@ujvfJj1BoL~=U6rZfXVI~SvQ6!5l
zpUsiLC_ecN#|kZwye2c)gj-x``9;a8@tJv<CAU~pN-7IdQ4F2O>0rggz`)?lz`#%p
za(oSA4MRLb3PUi1CZnGwV-Y9FHB1n*SaS1IP_-L!3A2H;b1_a1;4+&0oKr}khH)Vy
zBSQ*fFc@nxO<u)iB<H8eRKx*tuo{R^0TEzdfeFz`+_G#SSvJ<ms@(C6;*(ps-&i7f
zqDT{@K?_8HHGm0G1_p*(Lg}d`@kynbIVq_{@wxdar8%j2lUMOfGZbQAV1Ncekq$^D
zV>YtCK_WcGsU`6liA5>piAAXmlM8ug>ga;3Ko3~3T97?3wH+W;@{`T@R2elU$MD&u
zih-1HC+8#<7w4vyWaOt5$$*r|fd~Z<0See#teJTw#zsZTAOUbNsDrdI7nc+jX@kV1
zL4-btFaQx?Pa+7>$^ZG(gt_>HcsPpKK%V0$G65;$nry*uCV)@}W{FO&<5vR!2T6rE

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
GIT binary patch
delta 40
vcmcb^e2<wspO=@5fq{XcNp1f|?f^#qO#O`f+*JM4+|;7P(v;N68H^<W-q8#S

delta 38
tcmcb|e21AkpO=@5fq{YHkj}o1+yRWd>G~P@xvBbzrA4X5iIcM!O90J~3x)sy

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
GIT binary patch
delta 41
xcmccUaoK}ApO=@5fq{X+qVDKM?q**8RQ-(n+*JM4+|;7P(v;NAvw63P0RRQV4TJyy

delta 39
vcmccYanXZ2pO=@5fq{WxMd*=@+|9ha$@&@jxvBbzrA4X5iJRy0ZW99l^0Ey9

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
GIT binary patch
delta 41
wcmeD5>Gt8y=jG*MU|?Xds5`omyOfVVO+O<)H&s71H?=6SG$nO&FJFx~0Pd^|ssI20

delta 39
ucmeD7>Ga{w=jG*MU|?Wa6nbPMcPSrlihf3ZZmND_X;Er%;^uz78gT&JHVh#E

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 dbfb48a..88b04f2 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
GIT binary patch
delta 40
vcmaFP{F0eFpO=@5fq{XcNp1f|?r28-O#O`f+*JM4+|;7P(v;N6#f&8Y<30>F

delta 38
tcmaFK{G6FPpO=@5fq{YHv(CPa+|i7@>G~P@xvBbzrA4X5iIYniO90k{3*!I)

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
GIT binary patch
delta 41
wcmX@$f5@LZpO=@5fq{X+qVDKM?rMJiH2sYH+*JM4+|;7P(v;NAllgTe008q0-T(jq

delta 39
vcmX@)f54wRpO=@5fq{WxR_Kw9+|~TNDf$`txvBbzrA4X5iJPbL>q-Cs?5GS)

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
GIT binary patch
delta 658
zcmbQ|d&!qCpO=@5fq{YH$mFBx5?UMiO!)az^)vEwQ}t7GQ;QNyQ&Knk^K)@YJYZm8
zsA0%rNMV#@NMXumDzd6!$YLxqom?m>R$sza!`#fs2vWda!(76V#hJp~%T&t@6EEQ^
z;RdNF;Z9*`W|U@VW=vrf0jXw4VYFe$V@+X$7;VE)!jr{Y!&t+R#h1koCIw0aYZ$VG
zni;{gFq9U7(xS~Ewbtxl?d*~eBRQZn$fcaU+_fw<ELmb;!^BG@YM4^EdYKs+YFL69
zG`XvuOqOA{pPVJNo>P<Y7HdjLWkKp>N$E+9l9Sg+%Sqf~Ehx&&D=Cs@U|=XxXJBBs
z#hRH{Vr(?|y!0l1GX@3*J^?mHF-8tX0Y;9^Ju<3{j5(7x$r_91fYf_4FfgoSD&hsP
zV;C41CjXIDVD#E7E9cH=Q^3H$5aOrF1u?l0q@)N$=z<8aZW#~@WJHlHh$ROi_(4SR
z<OTBTjFFp9$eS{TVAELwQdJ5fycif5G?~FJxW$#0UzD60pP83gQUr2MkpV~rm@ou+
zjH9qLF|Q=EDm8m^pyFgk#@fwKmBJVWDnP0#K|~dZsGjVtBFk7iIa5V}v3+uv%50T<
zkT57{iqb(WgyrQRZas)-n4F*{J~>HMTTGviUqFaSh>MYllaH|ol<qWzi&`cxR`p`c
JnEXz40|0_umbL%@

delta 569
zcmccQJI|LdpO=@5fq{Wxa_Eut>zW(+O!#?|^)vEwQ}q)|i&BddHwW@_an+w<U|^_W
z$YMxglw?R@%4RCkuVKhyEYd1rDq*f+$YN<`1k<d|jLl57%ry)P*lL&;GS)Jeu$OSu
zFgG)naHKFdGfFcwGp4YJKuxk?$YV`mg_vr?P{NtTRl``rkj0(F115P(_-Yuk_?sC^
z_-X<fvIM{khAcrSEz}HB%m&uZCJ8Z;9ZG{7$<fPQ%TmLVB@8x9q(roaDTT9_nUSG}
zC73~zYqF!%hsjpblNiM&pOuzlEs_QW0kg~|ZX*T;20j5cMlnXN%|~QZ85uJtzmhe!
z$Yfw(DDq}tU|7ji#LK|IaEmpiq_QBj$N(e`CJaHM{Dq~7c_o=usqy8hnduoN9-D*Z
z+!^I^85kHs{4}}1))eJ|^yGsGT@aBud563#W5MKW^6HG?oBzq1GD@MV04Xa15yg{z
z6=fI;Cub?jFlKIUSDehqSiM<VIgC-D3?y9+A}T;c<>W>cS;p$g^HmfWTPGh-nXQ%s
z5>^K}k~K50#Mr0^VjxJg6hzd5h`P!3s!n3MeEb4JOhR0YOq_g-MWE!NDO}Vv`MRnX
KW9nojwG9BxjfX)1

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 a7b89eb..994bb39 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
GIT binary patch
delta 40
vcmeyx{D+x4pO=@5fq{XcNp1f|?p#LxEd7l9+*JM4+|;7P(v;N6t&F7r>fQ{3

delta 38
tcmeyv{EL}8pO=@5fq{V``TV|(+_{Xr8TuLdxvBbzrA4X5iIdwIO99^M3_<_^

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
GIT binary patch
delta 41
wcmbObI4O`jpO=@5fq{X+qVDKM?s9(qZ2gS<+*JM4+|;7P(v;NA{rrrQ0P-OWQ~&?~

delta 39
vcmbOfI3bWbpO=@5fq{YHVCa#J+~xednfe*|xvBbzrA4X5iJK?#GfDyg;*ksL

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
GIT binary patch
delta 41
wcmZ4CyULe4pO=@5fq{X+qVDKM?lwODEd7l9+*JM4+|;7P(v;NA^Z2+V0Quq!p8x;=

delta 39
vcmZ4GyTX?{pO=@5fq{YHV(5{L+--ck8TuLdxvBbzrA4X5iJKSjaY+CG>xc|R

diff --git a/modneflib/modnef/quantizer/dynamic_scale_quantizer.py b/modneflib/modnef/quantizer/dynamic_scale_quantizer.py
index 4255dea..6b98e21 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 40d7147..aa74e22 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 31fd483..cbf8673 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 38bec42..5a98742 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 3a5bc0c..03603ec 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 0000000..82dbb71
--- /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
GIT binary patch
delta 38
ucmaFC_==G`pO=@5fq{YHp344-+_n53`WgATsrsq8sYQvUDX9~u1_J=ttqg1c

delta 36
scmaFG_=1r;pO=@5fq{Wx#qFIFxodgd^fU5vQ}q)|i&BddCr%Fr0Lv^49smFU

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
GIT binary patch
delta 41
wcmaED^45eqpO=@5fq{WR?``r%ZXb4jZ~ct?+*JM4+|;7P(v;NADeUaR0REW_O#lD@

delta 39
ucmaEB^4f$upO=@5fq{WRIXrSBw+}n7r+!9$ZmND_X;Er%;^s7Vc3}Y2EDG5G

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
GIT binary patch
delta 41
wcmZ3bv_^?LpO=@5fq{YHp344>+=A@<KKdE?xvBc8xv52or75YKHQ5=t0Oj}#W&i*H

delta 39
ucmZ3Zv`UFPpO=@5fq{WRptyS@w;(&OmwrZmZmND_X;Er%;%04jMlJxmWC`j3

diff --git a/modneflib/modnef/tools/__pycache__/tools.cpython-310.pyc b/modneflib/modnef/tools/__pycache__/tools.cpython-310.pyc
index e89b569d9d84a8c70c8e5ec1829f0dc296d16587..cacc8d6fb7c08e77f0f3a0174a21268fab587a25 100644
GIT binary patch
delta 40
wcmZ3+vVw&>pO=@5fq{WR?``r%?rKJUSN)9q+*JM4+|;7P(v;N6lNl!i0Me}t2mk;8

delta 38
tcmZ3%vW$g0pO=@5fq{WRIXrSBcQqrgvwlW?ZmND_X;Er%;^e7}lL4zj3X}i<

-- 
GitLab