From 26031b5e702de71cada6f2eec152298eb66cf45a Mon Sep 17 00:00:00 2001
From: auphelia <jakobapk@web.de>
Date: Thu, 20 Feb 2020 15:56:42 +0000
Subject: [PATCH] [Sphinx documentation] Add first structure to index.rst

---
 .../_build/doctrees/end_to_end_flow.doctree   | Bin 0 -> 2272 bytes
 docs/finn/_build/doctrees/environment.pickle  | Bin 124382 -> 126096 bytes
 .../_build/doctrees/getting_started.doctree   | Bin 0 -> 2246 bytes
 docs/finn/_build/doctrees/index.doctree       | Bin 8407 -> 9307 bytes
 docs/finn/_build/doctrees/source_code.doctree | Bin 0 -> 2226 bytes
 .../html/_sources/end_to_end_flow.rst.txt     |   3 +
 .../html/_sources/getting_started.rst.txt     |   3 +
 docs/finn/_build/html/_sources/index.rst.txt  |  18 +-
 .../_build/html/_sources/source_code.rst.txt  |   3 +
 docs/finn/_build/html/end_to_end_flow.html    | 204 ++++++++++++++++++
 .../finn.transformation.fpgadataflow.html     |  28 +--
 .../finn/_build/html/finn.transformation.html |  23 +-
 docs/finn/_build/html/genindex.html           |   8 +-
 docs/finn/_build/html/getting_started.html    | 204 ++++++++++++++++++
 docs/finn/_build/html/index.html              |  38 ++--
 docs/finn/_build/html/modules.html            |   9 +-
 docs/finn/_build/html/objects.inv             | Bin 3447 -> 3521 bytes
 docs/finn/_build/html/py-modindex.html        |   8 +-
 docs/finn/_build/html/search.html             |   8 +-
 docs/finn/_build/html/searchindex.js          |   2 +-
 docs/finn/_build/html/source_code.html        | 201 +++++++++++++++++
 docs/finn/end_to_end_flow.rst                 |   3 +
 docs/finn/getting_started.rst                 |   3 +
 docs/finn/index.rst                           |  18 +-
 docs/finn/source_code.rst                     |   3 +
 25 files changed, 695 insertions(+), 92 deletions(-)
 create mode 100644 docs/finn/_build/doctrees/end_to_end_flow.doctree
 create mode 100644 docs/finn/_build/doctrees/getting_started.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code.doctree
 create mode 100644 docs/finn/_build/html/_sources/end_to_end_flow.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/getting_started.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code.rst.txt
 create mode 100644 docs/finn/_build/html/end_to_end_flow.html
 create mode 100644 docs/finn/_build/html/getting_started.html
 create mode 100644 docs/finn/_build/html/source_code.html
 create mode 100644 docs/finn/end_to_end_flow.rst
 create mode 100644 docs/finn/getting_started.rst
 create mode 100644 docs/finn/source_code.rst

diff --git a/docs/finn/_build/doctrees/end_to_end_flow.doctree b/docs/finn/_build/doctrees/end_to_end_flow.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..152488a5d25cce8ead0409a9790448550c51c038
GIT binary patch
literal 2272
zcmZ`)TWcIQ6n0|o&6n{dmxm@ME+wQftk<QXq<!l{1HrH_Euk+(Xh)ir@QgH-G~V??
zpnWJLptq_&t^cQ=W@g9Ug&NGxIXX9e`p!9j?ELfZaI60F3DariWNt5%X50opjEaIQ
z7yb^f{|q0)*M4N^!s^PTJoqhGq(bJ*a20+FV#^OKPo31Nvll(l7lZn&=cLQ|y%YcR
z-TUeEY<%{UVq>Sr_&Ix*>qTfCc7EZ@nE8M0{t9(X$Z_KPB}El3h$HbpZ2Nv&<J9lu
zQt>dYX4LOe=Zu_H4tI-p*_O<rZa+wKYAuxb?kQR{Uqe=vcfyRO*M?`&rt$+v=kX|r
zM0_FkVn*@Ik0%Rlu5C$EKFOp~6QF0CFRmDIn#7+BH@q+wl|H}PMpfbzrHB_u{Wv;}
zVH3fKKhZQ$@g?B<3g=JbIpDgpIBP9l!r~PQ6R*Vx1#LG4iSx}At5BkK=wK4((f5H*
z(#k{_NeAElO4GpThn71h)g0_N?&y*ktsKe<zW;&d74Tc}MI=){nsdbsb=m|7i~@c~
zixR?KlZGJnHN@RktV|B+!0D7k*yAbE^-!0&4gMt4+9~b$y~C>q{vc9MRRvjQ+7tnr
z#NxF}lIkK-*dpY!M#FPnYsf-6K~|5CjIBe<hN<5-ywt{#oZs*~Ts`!=g65sr^T&KC
zft91KvMZyW?=e2B=17+;s8PTQ7KYOTnvpYLN4!+{<P)jN%7GNAX0Qr=RJm;Yc5EfS
zpRXShZj3fWP{nd?fO9N0b-^F%%B@G~)lq^!-8k6@AwKw|33^vR^5gX9_vF`aFW!v5
z`To1NsAAn>BZNPSH?e?A0H_={3;rOdYF^Pf2ks2=LyQLh$naDfMi?)_66BMh$kg{!
ztukB|xJX7yw3l24(f0|h&@6W<|4@Qj2dpYe($Np_)(Q#c8AbCL@UYeZV`U==?o_4a
z71Lx{L}DHBWvMME_dRQ_q>kK3D;uI75+*I3<?$kIm4j7Vh;zS>%UCo5t;Zd>)0&Y?
z=FR*_N?sD&iKC&?`o8;7Gowfy8Sc-7bEW-ZGFdDZ7v-%JT3u)}pD=zifu)@U|0H_E
zh|z;MUI1kWREN-yUtYceEQ!g|jWkhnm*)8@jnf*VU2>PzX@o0sq!>9mLnAOJ!qw29
zf>s6TI;<<7)MG7tjzb95NM*T+HwSwoMhtY`!)EA2wBM1vRgNx+kaLmaA7tIhb>#WJ
zEhxI`_X<sH;rXbR8<FHXr7eP|si5c=yl>N7NE@dRf%kP)qL{d_>aEf?{b!Iwr&48j
z>eUoDiF3hLvvs>8Ud%W{W8NZ{;M^hFlQh@#n(%_koKS|XRxgE5ew(YCxIz4|nFnY<
zut+K<!D~kxHFJ*nf)Ra;L|}!(76mpe?u(C@SZms5r$CKpSts-(`>~FoA4FyIEiT2_
z`cYK4+Y(@X4B~QX#S8q7#h&#C_n)fvK1e0zQB04BjV89!%C0H%zNWE5@p!Oert|Lg
zYtzRY%FcSU7IC!7T05Pr#m9U!E)L`;o3YxHEk8uFcV-DzIeG+Z*kX<}0lS`FQ}1=^
S`bl<K95Zc4#vNGAF8%}A#e`G<

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/environment.pickle b/docs/finn/_build/doctrees/environment.pickle
index 79e8f26eb65a4dbc468def8398d8c886f06762e2..609f74b65aab83f064e115a591444b2c572c7cf3 100644
GIT binary patch
literal 126096
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

literal 124382
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
W{<X0Wvu3bcf9Rhd!r!Ax>Hh~jULZaI

diff --git a/docs/finn/_build/doctrees/getting_started.doctree b/docs/finn/_build/doctrees/getting_started.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..9de9cb5bd3d602d0b06b10a413c8e9345d8e80cc
GIT binary patch
literal 2246
zcmZWq&ub$$6izm=V<++C$2L856E>wR+YLBQ=~A}6^;Am0mn};#MaU!B5}A>vk|uTz
zf%Z_?1>LItHT~!MX=XgJ-GIrwPfzcczW3fAyZ`*#+p7M2!gN|Xnb~Wl8MndrB9L?C
z!r$S|pW!il?fZt#tu9T<gWrNiDrCkCSK+rHw)~#usgqi@`l2JcVy`;uIO#IJa^jDE
z;?7AmyL|7cah!!lbN3g%h%W!H@K>m!fYnpqEhzlDAdbbh*zw&as<GeAq~c**PN?6f
z&KWr=9kPkh??`45sozU8YArx~cNER*uO2IlCt*U<JHw|@r}TS{&f-xJiTFYsM33Ty
zACBhQ+}VPrd^D9xjZiOJf6eODh^<q*HWrbd-|iqPae+|8OSnF2w1$mVpyEr^>Z_Hb
z%crAPIC_m>#2e8^5Ic1c;%d|E(uQa*w51VO@$R-y($d7zk+x)qOQbHH@7X$haNwjR
z#nfo!xMIO~KhUg1&6cbX$=LU2TyaC4HUR>oD7m9~0pXx_Lty(3;(jBRCWAC^Iwi5x
z@f7Ylh|4?#e>&CLDed^m;qA5`M1rX@CyS{zc>t1Fyl_EMokyZtn0!$qJmVEY=F$nW
zd~kSdE;I}n`$NMEZ5+w?J<r1JGruor)`}f}!WR;?a@3V}snqcu#wX<r?vgn*3M__(
z;WP)*cLt1zNrjI-k*X*i;VRV(TEX{AHyyqkT8Z!T^+Upq(S``BSjG+N979bVh@wlk
zZlzOM3I1Z^WW$8`;FH?uQvk`2<M%(4U%$P6JN)MR@7^Jbb&U-Z{y1i0Q7(Z(Wymb}
zK}OZAq%)4XGsw>{0Q_^qQ*9VwyZ}q!Pl6(2-%YieB3aZ$GE$(W<RXZ!PiW~hd4l{i
z32F^knHQv`AIe(+63jD-X3^kLg`mdDMiM+hh2<sFWRXW=9rHz@EhnotE3TxD+)FEK
zq8<?@EuCaBktWK$Wm||Ve~4r(Mii}v8o1M_k*Um(9QrgVctMa8M?<AmzK0Q+P`Hi^
z_m{%C!u~KC&FAy$;=u{6uC<ws7{4Du(~g2ai#MXhc!M~eqsk6d?ExRYx_OJTBxag!
zxQWP<oAad`r!@w+<ZfEI5iZZ*qVMPgjli4;w>^IWTIHneur_>Bjk55`e_ll+mE|U8
z4)(?xG0^z{^S>3*e#iDfIl3T1&P0YE$hw>9$n!&+W2%$iOEj^?&F7U|izL%2Z7O(?
z3W|Qg`_|2c7mHJf;PzcvAegw8s@>5v{U?w_r&3Mv)XOPw8s~y7C+m90JfCoe#(aP;
z!MTIAvozE6j_{nyj8KN%RV{*#euu03xHWvQo(E_^ut+K<!D~k_$1$y|H$Q<Ru)<+i
zqBbn<h(}DUHMHI%fMIRg3f;(ltRUcf5v;$(jTl<rkAQn9P^`xwZpK!;#Q&i<uzs-m
zRMqW4Dlw0udswWI*iK8mI?Pq1)&pVjVEII6?dw;npKXAxc7M%cf9bWlbh>80+EZ~L
vpKaP|PPTjx&EBddSl{RotX_*bQX6c0dJR5k;p$2DSsXJ>N5&mkPOkq0S&@Hw

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/index.doctree b/docs/finn/_build/doctrees/index.doctree
index fc8dac0c237643c38c2df91e02132379ef6a81c5..9fdcfe505c4853f9fb879490dda05571768439cc 100644
GIT binary patch
delta 2699
zcmdT_O>7%Q6wcz<bsD>|)4EAY)C{5p*CIBJ5K?KCQd&Yvkwrz2Olfe|yW^eR+B;@<
zmc}4rI8cJv9?)zL{M_lKKxILt9&&*jCoTku13k7v;=q*)Z`QlE6H*lAmdkqHn>U}o
zH}Ab~*3bMtAN^qP#;ZqeM_Huh9?#_#h;E~+xMJ%JBUmbqWnq)mn#eI#Y$1i3HnSXs
z>D0{Uavs^U=#c?822N^f9`}xY=)Lb{NtB%Nw^Hu(b|KIDnBGTTfUy0Oor5GpUgQ_!
zD0&uFr(u=l_hSiZw*7YG`AGClaK6D`iqA;H{6XyXXbo%w>|A;pRvM8=gd8PLkS8zf
z<12f9ioOfpWf3185&L{4ep*^+uf->&SC;0^7mKK2Q3ERs5n9I$S;OcQVXR?4S12s&
zHQij!YdRxNC9l&$RX5GT>{2<uw{u^!;U$$`^AXSO9MK2Nl2mEJM@sarFYvTHp#Pau
zfg%lAxQd~g3ht|udt%3b-bp6qX12VKfXNi}!ownf*;i1f$(B24%605LEY6JqbH~y>
z_wfJUvFDH@<cn^?F(z9YX8qYdwpE#08|u_a>!9f3@kQVysy7`}dpfMPCzC_a`IBM5
zf7$^84nqKffRH`;M$r4#-P^5$>Rph4?IBU0lq=<X)f0xuga0x<$^S?tqG_<Mi}p@_
z3aizyUwJV;#UCWn$F2q4E8_fa_Ddes>(HA07w`gqJb9E~N}l3hC+APBll!(H^;>wV
zgHnXUABRm!V*Vt%p<Vhx8W`a5k(0ycnUDy%LLJ7@&;kC|$a@FS0!1|}TPCVg3->l#
zj*SuPR~Ok-QI%RqMg*4jG&K=kZeU9n9SWfsS-3$#h^W;Ry2E7Mw2=+thF*3WO$KUY
zQidy(UIED>x<Zg5o2Y^T6~rnKEdMW;YI@PU(kp#1nhLEKO8&5RMwD3?7gYRCp^Lla
z(0;!g^Pk&s{#}V_?z+5To)W=pQrd;=Nv2NzhEe=796k3Wbn;FM8Orsbfap`2jtv6v
z&ju|H+_&80q2_LTYPvEk$bZ)*|IBs<u(f#tH_35_R!@CHd$ZUY3FuZ|Z^@c3vVzM-
zjU_)q(%{A<6noHges4VK3+@<f{?!%SKl=qYLw+Ue0y`945v%cw>6LP}=#F4hEi+mc
zKh+w&>Rt1|3GWcoO|5Lho5Zl{JBMxRSPCvHRK?)HZbCPenxo>XUc<Jx=w*#_kcBZP
zKJ)Ow{9bx&f6*P(YP8~g;>L)ss@U{ad1myfF<@jo3sJ#KFhMfL447OVof$Ho78`=)
z=cAXUeQjmp(j(IK_S&O2BP|WK3{`x};&WL<-X(X8gTmSmAIBXM?=x#QfEB!phB#65
xql@J3svo%Oka4jka7eBLqLDk~wvS*WeVAmGQYOT;3{Rkda+8YQ{&^}P{R@^!yFmZ|

delta 2067
zcmbtVU5Fc16y7wMWYW#D$=Y<|I&`OQ*Jf9@l!8lL!Llf&?y{jsQ7et^B)QF*X=XCb
zOxP@Hw|x*=xFGgkAAKnZ1;M2az6iegQml%75$sdxW1lL8g81OM^OtPWV#SA@z4trk
zo^$SZzjJc;#P7?}#l)Al)f<u<?|zjy8kd$K569TK^bvMBkzoaSMS2I3lZedc7I3u&
zF^Iz~yaWeVGwhoDqqL6bhvI}ZChY85`dIAc?#ieVo3UF>gH&A=nkKQeIytnPL#oW-
zjk!zwQ(gq={dv!EYRJ*|%LexS!}ia35CS$a>jpb7tL$Pzmd0`Ch@EsER~FlzI>=tj
z<>nee&BE^8p<RIyD(NPc#TgF^qNkXXn;iq9*TG#<7Y`q{JB;O)$CEz9spMmKax05h
z;cKT22Y`h!{Tw9>ZH56M>D{;$?&%$NFaLV#6zGnsJ8XOM^NB%H=x>8A>41)5OP2SD
zxPfJCM?~z!-8T^t*O7?go-g34s5j(7xU8`UQx}fYjBZsM?HW0&H;BW_oXV!wsS(=+
zzPgL1s+#TUO^eg?n@!6lmg_8Wny5FL6@G;#L9f+_#jmhGUwB2OyIa~u=nwZqzF!0G
z3z+XG_NsCu3Aen|wsNMNLAK^Xc6_#qa3}=m#M@R)uM$VqteWa-6;YnYX!ePw9vgpS
zhQEYtw}fmT_sMp8_<f4dd!X^97CF1LUMH4r)ktT3K(fYIY-Gf%;1`;)307y-KkDF-
zJ{9$RMrd+Nw;H;&Lu7IoJiJN|=v^QQdE<G^)vjo;S9D7OJ7=oQi!|Y-qjATrahk&K
zf=Ew5L5F?#r<OU=ZcK_o^G0G1{zoAwTQrG&wPuyWA2jVPO-;ABF^di~g@C(h6HenI
z8Xd(i>DUdus=N5e!n~oiEPmNL>T0bzaZx7GO+>~Ck<p(G`!Vx4Zu_cdpU8R9qq4A#
z`bDW**rtXo&P8)Y^v}?9m`x=5NzZXyoW-GHJco-=Hb#UN`cM>g5GCT>JQE^2i7(-?
zzS4c-jRS~2EA6Z3D_A$5#`<Xy?3r0N7KMB70t0lvh%BD)GkSAS7QkBp@UI+?`I2{t
z)~dpg;5RYMFvAhLgW;qfBjnfLz6*U*O33;WM*M&5UhuD`oO>F(6dnF6yJ7JI+|FRd
zAN%=yZUwLr0CK2bW-F8Ib~gJS3`|*6yFY%~6%sWvoj^5<xwe3FZ6TOznrLs)#gVmd
z>alN?eX;58&&mh8V)whn>Fe>*4_JfoJ$~R3JT$%&yPNoF)3l|TL^QJ_er65fSAs_+
Z&!yCcf&jg9^Y9SXyhHG~dvs<d_75lwxZeN(

diff --git a/docs/finn/_build/doctrees/source_code.doctree b/docs/finn/_build/doctrees/source_code.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..8b88115807bce692a0b3025bf8b5c7a365d3539a
GIT binary patch
literal 2226
zcmZ8iU27vZ6iqhqSDZ{fw&_DRVN=S|CSW_IOWF3V^r-~=vSsN@5%P@25}A>vk|uT@
z0_{U#7xY&3H}r4zXl6W)9WWUkUEPnPbFco~|M$QCPW9)aM8%~QnHfu!Fymc606CM^
z|KqR!@=yL7H_&upRH<X;-3}~bF0w>3>3{cp$Mp=0tx&SH=N;bVy=t#xh0WNr9XEVm
zIlB58(R^dI|0`RDaGRTd`zkuTow;s75zl&l!gu+e>o(a;-F_w{^V4!h-2t^$i&<$=
zMaX(jBnBC}UYt>50OGqNX<mQzld@PZW;DLnEDbiL>sdMvTb@V!3qA}H`73ulStxyP
z3L3LXDx{o%CsTjb*^n3|jkQ6R7k7Keh+iTN{u*J2wZ$k{c*?&7H(#ycs|J1p_-iD<
zulWFh_v*m>X4~EBJZ}!Pbnu&ScGpF5sRLc4rRi{m)O5MNVb%&c$9<o+0!X!zmdV7s
z?gyHc;Ay1*9!=d~&Lq>+D($gIC}_4cFR*B;Bk+BX<v~M7sWYsOtcppXH|!!@2YKm7
z@6J-CtW=gg+q~O#M?p-o%*irUI`=>#gIg^?ZXQHw;PO?Cu#8m*SqRI?>XH$$Indnt
z)E#P8C~Zl`9$4n@Ubq8Jvv%2Wr)(*}m8G^cE2EC<By3jB5iVL#Ex{EmG^06?fz?n!
zD9V3yk&s1c36r=*Sa~-nZ8~~4G6LTho127btu*0OCK=P<Iiwm}?~YYzH@$Q!FWy~l
z?QFT=A6!&BT_+IzG=2XI`R%*$+tIf_eE$wvY+7u&a3`S>1G+ef%21hiM;Vp#lFnHr
zYVTg4+1*RcVx<$3umUPUJOPPJT{l)TMX}&TB&0waiKXXV7tzuxvWDCX0cjm2WnPe0
zexSDk1eB*G&4R<@3IWH`1QD#E!mu(?WSIwHov>x03?t7^R$7TIc@Rd_LOmvlFm#rM
zLYgdltG3`b?hwToGy<&#7_`%vkyK>$oQMim5Y)ubP;pi7VL)aSp@YKR6}Pr9KTal#
z#bR7MTCU_+>G>pK4-;6LiFfDWMDQ3+5X*9~Y{7CL_~^~;ThJ2eG~Nmmkad`gRT!%j
zhP7Zet-^4dX9zK{bcRMqEcbVPcL`bLr0uXaeNv4t|H*w`Wh10vI#dqz296TQd5Brx
zF42A`=22R@BwWmSh9AVbpQ)hpLz7c<)gL9A*x=;LYF#f$refMKco}nwe!>0L&4n8a
zQ;6X7eOVxx@B~%wMAP)2AQBY|nc}KfQ{XJj1yjy8?M_%eV+k7b5wSR97T(U|OwoJ7
zaw;-H6TDN^@c-!cn0yE?h3nVz01XHg37H7!+7e6koMFCTE}tS0RAKQhf}13~3s0C>
z8)*G@0EV};U37!`@$3Na1+f0+w|r#WAOQBU09j9--%bsGjsGJ)H16p6RaK{tVu5)S
z!oy>Ygmzll)oDIQYC9y43(IFJYj3|Y{cH<ttp^((2dk*np|cJDn2*|qfqcI0tJ&Fc
oeKdP(7U9W8kKnmAm?O2rwx>7XVGCDRa*%{E({yBb1IyX?e_6P8p#T5?

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/html/_sources/end_to_end_flow.rst.txt b/docs/finn/_build/html/_sources/end_to_end_flow.rst.txt
new file mode 100644
index 000000000..482ced084
--- /dev/null
+++ b/docs/finn/_build/html/_sources/end_to_end_flow.rst.txt
@@ -0,0 +1,3 @@
+**********************
+FINN - End-to-End Flow
+**********************
diff --git a/docs/finn/_build/html/_sources/getting_started.rst.txt b/docs/finn/_build/html/_sources/getting_started.rst.txt
new file mode 100644
index 000000000..41173f451
--- /dev/null
+++ b/docs/finn/_build/html/_sources/getting_started.rst.txt
@@ -0,0 +1,3 @@
+***************
+Getting Started
+***************
diff --git a/docs/finn/_build/html/_sources/index.rst.txt b/docs/finn/_build/html/_sources/index.rst.txt
index 9a6a63725..26813ae1d 100644
--- a/docs/finn/_build/html/_sources/index.rst.txt
+++ b/docs/finn/_build/html/_sources/index.rst.txt
@@ -6,30 +6,28 @@
 ****
 FINN
 ****
+**This website is currently under construction.**
+
 FINN is an experimental framework from Xilinx Research Labs to explore deep neural network inference on FPGAs. It specifically targets quantized neural networks, with emphasis on generating dataflow-style architectures customized for each network. It is not intended to be a generic DNN accelerator like xDNN, but rather a tool for exploring the design space of DNN inference accelerators on FPGAs.
 
 What is FINN?
 =============
 'FINN' is colloquially used to refer to two separate but highly related things:
 
-* The FINN project, which includes tools for training quantized neural networks such as Brevitas, the FINN compiler, and the finn-hlslib Vivado HLS library of FPGA components for QNNs. An overview of the project can be taken from the following graphic and details can be seen on the project homepage.
+* The FINN project, which includes tools for training quantized neural networks such as Brevitas, the FINN compiler, and the finn-hlslib Vivado HLS library of FPGA components for QNNs. An overview of the project can be taken from the following graphic and details can be seen on the `FINN project homepage <https://xilinx.github.io/finn/>`_.
 
 .. image:: ../img/finn-stack.png
-   :height: 600px
    :scale: 75%
    :align: center
 
-* The repository, this Read the Docs website corresponds to. This is the FINN compiler, which is the centerpiece of the FINN project. The GitHub repository can be viewed using the link in the upper right corner.
+* The repository, this Read the Docs website corresponds to. It is about the FINN compiler, which is the centerpiece of the FINN project. The GitHub repository can be viewed using the link in the upper right corner. To learn more about the FINN compiler, use this website and for a hands-on experience the repository contains some Jupyter notebooks which can be found under this `link <https://github.com/Xilinx/finn/tree/dev/notebooks>`_.
 
 .. toctree::
    :maxdepth: 2
-   :caption: Contents:
-
+   :hidden:
 
+   end_to_end_flow
+   getting_started
+   source_code
 
-Indices and tables
-==================
 
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
diff --git a/docs/finn/_build/html/_sources/source_code.rst.txt b/docs/finn/_build/html/_sources/source_code.rst.txt
new file mode 100644
index 000000000..99d708a16
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code.rst.txt
@@ -0,0 +1,3 @@
+***********
+Source Code
+***********
diff --git a/docs/finn/_build/html/end_to_end_flow.html b/docs/finn/_build/html/end_to_end_flow.html
new file mode 100644
index 000000000..3efb43cc3
--- /dev/null
+++ b/docs/finn/_build/html/end_to_end_flow.html
@@ -0,0 +1,204 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>FINN - End-to-End Flow &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+        <script type="text/javascript" src="_static/jquery.js"></script>
+        <script type="text/javascript" src="_static/underscore.js"></script>
+        <script type="text/javascript" src="_static/doctools.js"></script>
+        <script type="text/javascript" src="_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="Getting Started" href="getting_started.html" />
+    <link rel="prev" title="FINN" href="index.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="index.html" class="icon icon-home"> FINN
+          
+
+          
+          </a>
+
+          
+            
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <ul class="current">
+<li class="toctree-l1 current"><a class="current reference internal" href="#">FINN - End-to-End Flow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_code.html">Source Code</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="index.html">Docs</a> &raquo;</li>
+        
+      <li>FINN - End-to-End Flow</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="_sources/end_to_end_flow.rst.txt" rel="nofollow"> View page source</a>
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="finn-end-to-end-flow">
+<h1>FINN - End-to-End Flow<a class="headerlink" href="#finn-end-to-end-flow" title="Permalink to this headline">¶</a></h1>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="getting_started.html" class="btn btn-neutral float-right" title="Getting Started" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="index.html" class="btn btn-neutral float-left" title="FINN" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/finn.transformation.fpgadataflow.html b/docs/finn/_build/html/finn.transformation.fpgadataflow.html
index 7b698bbfa..878f3de34 100644
--- a/docs/finn/_build/html/finn.transformation.fpgadataflow.html
+++ b/docs/finn/_build/html/finn.transformation.fpgadataflow.html
@@ -78,30 +78,12 @@
               
             
             
-              <!-- Local TOC -->
-              <div class="local-toc"><ul>
-<li><a class="reference internal" href="#">finn.transformation.fpgadataflow package</a><ul>
-<li><a class="reference internal" href="#submodules">Submodules</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
-<li><a class="reference internal" href="#finn-transformation-fpgadataflow-set-sim-mode-module">finn.transformation.fpgadataflow.set_sim_mode module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fpgadataflow">Module contents</a></li>
+              <ul>
+<li class="toctree-l1"><a class="reference internal" href="end_to_end_flow.html">FINN - End-to-End Flow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_code.html">Source Code</a></li>
 </ul>
-</li>
-</ul>
-</div>
+
             
           
         </div>
diff --git a/docs/finn/_build/html/finn.transformation.html b/docs/finn/_build/html/finn.transformation.html
index 5224ebc2e..0407b0f9c 100644
--- a/docs/finn/_build/html/finn.transformation.html
+++ b/docs/finn/_build/html/finn.transformation.html
@@ -78,25 +78,12 @@
               
             
             
-              <!-- Local TOC -->
-              <div class="local-toc"><ul>
-<li><a class="reference internal" href="#">finn.transformation package</a><ul>
-<li><a class="reference internal" href="#subpackages">Subpackages</a></li>
-<li><a class="reference internal" href="#submodules">Submodules</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.fold_constants">finn.transformation.fold_constants module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.general">finn.transformation.general module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes module</a></li>
-<li><a class="reference internal" href="#module-finn.transformation">Module contents</a><ul>
-<li><a class="reference internal" href="#guide-to-writing-finn-transformations">Guide to writing FINN transformations</a></li>
+              <ul>
+<li class="toctree-l1"><a class="reference internal" href="end_to_end_flow.html">FINN - End-to-End Flow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_code.html">Source Code</a></li>
 </ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
+
             
           
         </div>
diff --git a/docs/finn/_build/html/genindex.html b/docs/finn/_build/html/genindex.html
index ce9b2ccb8..1d58d38f7 100644
--- a/docs/finn/_build/html/genindex.html
+++ b/docs/finn/_build/html/genindex.html
@@ -79,8 +79,12 @@
               
             
             
-              <!-- Local TOC -->
-              <div class="local-toc"></div>
+              <ul>
+<li class="toctree-l1"><a class="reference internal" href="end_to_end_flow.html">FINN - End-to-End Flow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_code.html">Source Code</a></li>
+</ul>
+
             
           
         </div>
diff --git a/docs/finn/_build/html/getting_started.html b/docs/finn/_build/html/getting_started.html
new file mode 100644
index 000000000..42798fdba
--- /dev/null
+++ b/docs/finn/_build/html/getting_started.html
@@ -0,0 +1,204 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Getting Started &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+        <script type="text/javascript" src="_static/jquery.js"></script>
+        <script type="text/javascript" src="_static/underscore.js"></script>
+        <script type="text/javascript" src="_static/doctools.js"></script>
+        <script type="text/javascript" src="_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="Source Code" href="source_code.html" />
+    <link rel="prev" title="FINN - End-to-End Flow" href="end_to_end_flow.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="index.html" class="icon icon-home"> FINN
+          
+
+          
+          </a>
+
+          
+            
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="end_to_end_flow.html">FINN - End-to-End Flow</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_code.html">Source Code</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="index.html">Docs</a> &raquo;</li>
+        
+      <li>Getting Started</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="_sources/getting_started.rst.txt" rel="nofollow"> View page source</a>
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="getting-started">
+<h1>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h1>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="source_code.html" class="btn btn-neutral float-right" title="Source Code" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="end_to_end_flow.html" class="btn btn-neutral float-left" title="FINN - End-to-End Flow" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/index.html b/docs/finn/_build/html/index.html
index 38e5cad4b..9fad3773b 100644
--- a/docs/finn/_build/html/index.html
+++ b/docs/finn/_build/html/index.html
@@ -34,7 +34,8 @@
   <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" /> 
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="FINN - End-to-End Flow" href="end_to_end_flow.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -78,15 +79,12 @@
               
             
             
-              <!-- Local TOC -->
-              <div class="local-toc"><ul>
-<li><a class="reference internal" href="#">FINN</a><ul>
-<li><a class="reference internal" href="#what-is-finn">What is FINN?</a></li>
-<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
+              <ul>
+<li class="toctree-l1"><a class="reference internal" href="end_to_end_flow.html">FINN - End-to-End Flow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_code.html">Source Code</a></li>
 </ul>
-</li>
-</ul>
-</div>
+
             
           
         </div>
@@ -151,28 +149,21 @@
             
   <div class="section" id="finn">
 <h1>FINN<a class="headerlink" href="#finn" title="Permalink to this headline">¶</a></h1>
+<p><strong>This website is currently under construction.</strong></p>
 <p>FINN is an experimental framework from Xilinx Research Labs to explore deep neural network inference on FPGAs. It specifically targets quantized neural networks, with emphasis on generating dataflow-style architectures customized for each network. It is not intended to be a generic DNN accelerator like xDNN, but rather a tool for exploring the design space of DNN inference accelerators on FPGAs.</p>
 <div class="section" id="what-is-finn">
 <h2>What is FINN?<a class="headerlink" href="#what-is-finn" title="Permalink to this headline">¶</a></h2>
 <p>‘FINN’ is colloquially used to refer to two separate but highly related things:</p>
 <ul class="simple">
-<li><p>The FINN project, which includes tools for training quantized neural networks such as Brevitas, the FINN compiler, and the finn-hlslib Vivado HLS library of FPGA components for QNNs. An overview of the project can be taken from the following graphic and details can be seen on the project homepage.</p></li>
+<li><p>The FINN project, which includes tools for training quantized neural networks such as Brevitas, the FINN compiler, and the finn-hlslib Vivado HLS library of FPGA components for QNNs. An overview of the project can be taken from the following graphic and details can be seen on the <a class="reference external" href="https://xilinx.github.io/finn/">FINN project homepage</a>.</p></li>
 </ul>
-<a class="reference internal image-reference" href="_images/finn-stack.png"><img alt="_images/finn-stack.png" class="align-center" src="_images/finn-stack.png" style="width: 480.75px; height: 450.0px;" /></a>
+<a class="reference internal image-reference" href="_images/finn-stack.png"><img alt="_images/finn-stack.png" class="align-center" src="_images/finn-stack.png" style="width: 480.75px; height: 468.75px;" /></a>
 <ul class="simple">
-<li><p>The repository, this Read the Docs website corresponds to. This is the FINN compiler, which is the centerpiece of the FINN project. The GitHub repository can be viewed using the link in the upper right corner.</p></li>
+<li><p>The repository, this Read the Docs website corresponds to. It is about the FINN compiler, which is the centerpiece of the FINN project. The GitHub repository can be viewed using the link in the upper right corner. To learn more about the FINN compiler, use this website and for a hands-on experience the repository contains some Jupyter notebooks which can be found under this <a class="reference external" href="https://github.com/Xilinx/finn/tree/dev/notebooks">link</a>.</p></li>
 </ul>
 <div class="toctree-wrapper compound">
 </div>
 </div>
-<div class="section" id="indices-and-tables">
-<h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
-<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></p></li>
-<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li>
-</ul>
-</div>
 </div>
 
 
@@ -181,6 +172,13 @@
           </div>
           <footer>
   
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="end_to_end_flow.html" class="btn btn-neutral float-right" title="FINN - End-to-End Flow" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+    </div>
+  
 
   <hr/>
 
diff --git a/docs/finn/_build/html/modules.html b/docs/finn/_build/html/modules.html
index d3401a10b..7c636d62b 100644
--- a/docs/finn/_build/html/modules.html
+++ b/docs/finn/_build/html/modules.html
@@ -78,11 +78,12 @@
               
             
             
-              <!-- Local TOC -->
-              <div class="local-toc"><ul>
-<li><a class="reference internal" href="#">src</a></li>
+              <ul>
+<li class="toctree-l1"><a class="reference internal" href="end_to_end_flow.html">FINN - End-to-End Flow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_code.html">Source Code</a></li>
 </ul>
-</div>
+
             
           
         </div>
diff --git a/docs/finn/_build/html/objects.inv b/docs/finn/_build/html/objects.inv
index d51d8e9c3322c2ecf119e0ad48d6cc37fae43435..6c1470ab78bd9139da07a32aee3313c43be1de06 100644
GIT binary patch
delta 3438
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
QJSJhKpZ<UMe~R;$?sdhGRsaA1

delta 3364
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

diff --git a/docs/finn/_build/html/py-modindex.html b/docs/finn/_build/html/py-modindex.html
index c72fcdc41..56dfa4763 100644
--- a/docs/finn/_build/html/py-modindex.html
+++ b/docs/finn/_build/html/py-modindex.html
@@ -81,8 +81,12 @@
               
             
             
-              <!-- Local TOC -->
-              <div class="local-toc"></div>
+              <ul>
+<li class="toctree-l1"><a class="reference internal" href="end_to_end_flow.html">FINN - End-to-End Flow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_code.html">Source Code</a></li>
+</ul>
+
             
           
         </div>
diff --git a/docs/finn/_build/html/search.html b/docs/finn/_build/html/search.html
index 507b33139..869a314d3 100644
--- a/docs/finn/_build/html/search.html
+++ b/docs/finn/_build/html/search.html
@@ -79,8 +79,12 @@
               
             
             
-              <!-- Local TOC -->
-              <div class="local-toc"></div>
+              <ul>
+<li class="toctree-l1"><a class="reference internal" href="end_to_end_flow.html">FINN - End-to-End Flow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_code.html">Source Code</a></li>
+</ul>
+
             
           
         </div>
diff --git a/docs/finn/_build/html/searchindex.js b/docs/finn/_build/html/searchindex.js
index 76340dc94..26e2f7334 100644
--- a/docs/finn/_build/html/searchindex.js
+++ b/docs/finn/_build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["finn","finn.analysis","finn.analysis.fpgadataflow","finn.core","finn.custom_op","finn.custom_op.fpgadataflow","finn.transformation","finn.transformation.fpgadataflow","finn.transformation.streamline","finn.util","index","modules"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:56},filenames:["finn.rst","finn.analysis.rst","finn.analysis.fpgadataflow.rst","finn.core.rst","finn.custom_op.rst","finn.custom_op.fpgadataflow.rst","finn.transformation.rst","finn.transformation.fpgadataflow.rst","finn.transformation.streamline.rst","finn.util.rst","index.rst","modules.rst"],objects:{"":{finn:[0,0,0,"-"]},"finn.analysis":{fpgadataflow:[2,0,0,"-"],topology:[1,0,0,"-"],verify_custom_nodes:[1,0,0,"-"]},"finn.analysis.fpgadataflow":{hls_synth_res_estimation:[2,0,0,"-"],res_estimation:[2,0,0,"-"]},"finn.analysis.fpgadataflow.hls_synth_res_estimation":{hls_synth_res_estimation:[2,1,1,""]},"finn.analysis.fpgadataflow.res_estimation":{res_estimation:[2,1,1,""]},"finn.analysis.topology":{all_tensors_f32:[1,1,1,""],get_per_tensor_fanouts:[1,1,1,""],is_linear:[1,1,1,""],node_inputs_in_expected_order:[1,1,1,""]},"finn.analysis.verify_custom_nodes":{verify_nodes:[1,1,1,""]},"finn.core":{datatype:[3,0,0,"-"],execute_custom_node:[3,0,0,"-"],modelwrapper:[3,0,0,"-"],onnx_exec:[3,0,0,"-"]},"finn.core.datatype":{DataType:[3,2,1,""]},"finn.core.datatype.DataType":{BINARY:[3,3,1,""],BIPOLAR:[3,3,1,""],FLOAT32:[3,3,1,""],INT16:[3,3,1,""],INT2:[3,3,1,""],INT32:[3,3,1,""],INT3:[3,3,1,""],INT4:[3,3,1,""],INT8:[3,3,1,""],TERNARY:[3,3,1,""],UINT16:[3,3,1,""],UINT2:[3,3,1,""],UINT32:[3,3,1,""],UINT3:[3,3,1,""],UINT4:[3,3,1,""],UINT8:[3,3,1,""],allowed:[3,4,1,""],bitwidth:[3,4,1,""],get_hls_datatype_str:[3,4,1,""],get_num_possible_values:[3,4,1,""],get_smallest_possible:[3,4,1,""],is_integer:[3,4,1,""],max:[3,4,1,""],min:[3,4,1,""],signed:[3,4,1,""]},"finn.core.execute_custom_node":{execute_custom_node:[3,1,1,""]},"finn.core.modelwrapper":{ModelWrapper:[3,2,1,""]},"finn.core.modelwrapper.ModelWrapper":{analysis:[3,4,1,""],check_all_tensor_shapes_specified:[3,4,1,""],check_compatibility:[3,4,1,""],find_consumer:[3,4,1,""],find_producer:[3,4,1,""],get_all_tensor_names:[3,4,1,""],get_initializer:[3,4,1,""],get_metadata_prop:[3,4,1,""],get_tensor_datatype:[3,4,1,""],get_tensor_fanout:[3,4,1,""],get_tensor_shape:[3,4,1,""],get_tensor_valueinfo:[3,4,1,""],graph:[3,4,1,""],make_empty_exec_context:[3,4,1,""],make_new_valueinfo_name:[3,4,1,""],model:[3,4,1,""],rename_tensor:[3,4,1,""],save:[3,4,1,""],set_initializer:[3,4,1,""],set_metadata_prop:[3,4,1,""],set_tensor_datatype:[3,4,1,""],set_tensor_shape:[3,4,1,""],transform:[3,4,1,""]},"finn.core.onnx_exec":{compare_execution:[3,1,1,""],execute_node:[3,1,1,""],execute_onnx:[3,1,1,""],execute_onnx_and_make_model:[3,1,1,""]},"finn.custom_op":{CustomOp:[4,2,1,""],fpgadataflow:[5,0,0,"-"],multithreshold:[4,0,0,"-"],registry:[4,0,0,"-"],streamingdataflowpartition:[4,0,0,"-"],xnorpopcount:[4,0,0,"-"]},"finn.custom_op.CustomOp":{execute_node:[4,4,1,""],get_nodeattr:[4,4,1,""],get_nodeattr_types:[4,4,1,""],infer_node_datatype:[4,4,1,""],make_shape_compatible_op:[4,4,1,""],set_nodeattr:[4,4,1,""],verify_node:[4,4,1,""]},"finn.custom_op.fpgadataflow":{HLSCustomOp:[5,2,1,""],convolutioninputgenerator:[5,0,0,"-"],streamingfclayer_batch:[5,0,0,"-"],streamingmaxpool_batch:[5,0,0,"-"],templates:[5,0,0,"-"],tlastmarker:[5,0,0,"-"]},"finn.custom_op.fpgadataflow.HLSCustomOp":{blackboxfunction:[5,4,1,""],bram_estimation:[5,4,1,""],code_generation_ipgen:[5,4,1,""],code_generation_npysim:[5,4,1,""],compile_singlenode_code:[5,4,1,""],dataoutstrm:[5,4,1,""],defines:[5,4,1,""],docompute:[5,4,1,""],dynamic_input_to_npy:[5,4,1,""],exec_precompiled_singlenode_model:[5,4,1,""],execute_node:[5,4,1,""],generate_params:[5,4,1,""],get_folded_input_shape:[5,4,1,""],get_folded_output_shape:[5,4,1,""],get_instream_width:[5,4,1,""],get_nodeattr_types:[5,4,1,""],get_number_output_values:[5,4,1,""],get_outstream_width:[5,4,1,""],global_includes:[5,4,1,""],ipgen_singlenode_code:[5,4,1,""],lut_estimation:[5,4,1,""],node_res_estimation:[5,4,1,""],npy_to_dynamic_output:[5,4,1,""],pragmas:[5,4,1,""],read_npy_data:[5,4,1,""],reset_rtlsim:[5,4,1,""],rtlsim:[5,4,1,""],save_as_npy:[5,4,1,""],strm_decl:[5,4,1,""],toggle_clk:[5,4,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator":{ConvolutionInputGenerator:[5,2,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator":{blackboxfunction:[5,4,1,""],bram_estimation:[5,4,1,""],dataoutstrm:[5,4,1,""],defines:[5,4,1,""],docompute:[5,4,1,""],execute_node:[5,4,1,""],get_input_datatype:[5,4,1,""],get_nodeattr_types:[5,4,1,""],get_number_output_values:[5,4,1,""],get_output_datatype:[5,4,1,""],get_stream_width:[5,4,1,""],global_includes:[5,4,1,""],infer_node_datatype:[5,4,1,""],lut_estimation:[5,4,1,""],make_shape_compatible_op:[5,4,1,""],pragmas:[5,4,1,""],read_npy_data:[5,4,1,""],save_as_npy:[5,4,1,""],strm_decl:[5,4,1,""],verify_node:[5,4,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch":{StreamingFCLayer_Batch:[5,2,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch":{blackboxfunction:[5,4,1,""],bram_estimation:[5,4,1,""],calc_tmem:[5,4,1,""],calc_wmem:[5,4,1,""],dataoutstrm:[5,4,1,""],defines:[5,4,1,""],docompute:[5,4,1,""],execute_node:[5,4,1,""],generate_params:[5,4,1,""],get_folded_input_shape:[5,4,1,""],get_folded_output_shape:[5,4,1,""],get_hls_compatible_threshold_tensor:[5,4,1,""],get_hls_compatible_weight_tensor:[5,4,1,""],get_input_datatype:[5,4,1,""],get_instream_width:[5,4,1,""],get_nodeattr_types:[5,4,1,""],get_number_output_values:[5,4,1,""],get_output_datatype:[5,4,1,""],get_outstream_width:[5,4,1,""],get_template_param_values:[5,4,1,""],get_weight_datatype:[5,4,1,""],global_includes:[5,4,1,""],infer_node_datatype:[5,4,1,""],lut_estimation:[5,4,1,""],make_shape_compatible_op:[5,4,1,""],pragmas:[5,4,1,""],read_npy_data:[5,4,1,""],save_as_npy:[5,4,1,""],strm_decl:[5,4,1,""],verify_node:[5,4,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch":{StreamingMaxPool_Batch:[5,2,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch":{blackboxfunction:[5,4,1,""],bram_estimation:[5,4,1,""],dataoutstrm:[5,4,1,""],defines:[5,4,1,""],docompute:[5,4,1,""],get_nodeattr_types:[5,4,1,""],get_number_output_values:[5,4,1,""],global_includes:[5,4,1,""],infer_node_datatype:[5,4,1,""],lut_estimation:[5,4,1,""],make_shape_compatible_op:[5,4,1,""],pragmas:[5,4,1,""],read_npy_data:[5,4,1,""],save_as_npy:[5,4,1,""],strm_decl:[5,4,1,""],verify_node:[5,4,1,""]},"finn.custom_op.fpgadataflow.tlastmarker":{TLastMarker:[5,2,1,""]},"finn.custom_op.fpgadataflow.tlastmarker.TLastMarker":{blackboxfunction:[5,4,1,""],dataoutstrm:[5,4,1,""],defines:[5,4,1,""],docompute:[5,4,1,""],execute_node:[5,4,1,""],get_folded_input_shape:[5,4,1,""],get_folded_output_shape:[5,4,1,""],get_instream_width:[5,4,1,""],get_nodeattr_types:[5,4,1,""],get_number_output_values:[5,4,1,""],get_outstream_width:[5,4,1,""],global_includes:[5,4,1,""],infer_node_datatype:[5,4,1,""],make_shape_compatible_op:[5,4,1,""],pragmas:[5,4,1,""],read_npy_data:[5,4,1,""],save_as_npy:[5,4,1,""],strm_decl:[5,4,1,""],verify_node:[5,4,1,""]},"finn.custom_op.multithreshold":{MultiThreshold:[4,2,1,""],compare:[4,1,1,""],multithreshold:[4,1,1,""]},"finn.custom_op.multithreshold.MultiThreshold":{execute_node:[4,4,1,""],get_nodeattr_types:[4,4,1,""],infer_node_datatype:[4,4,1,""],make_shape_compatible_op:[4,4,1,""],verify_node:[4,4,1,""]},"finn.custom_op.registry":{getCustomOp:[4,1,1,""]},"finn.custom_op.streamingdataflowpartition":{StreamingDataflowPartition:[4,2,1,""]},"finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition":{execute_node:[4,4,1,""],get_nodeattr_types:[4,4,1,""],infer_node_datatype:[4,4,1,""],make_shape_compatible_op:[4,4,1,""],verify_node:[4,4,1,""]},"finn.custom_op.xnorpopcount":{XnorPopcountMatMul:[4,2,1,""],xnorpopcountmatmul:[4,1,1,""]},"finn.custom_op.xnorpopcount.XnorPopcountMatMul":{execute_node:[4,4,1,""],get_nodeattr_types:[4,4,1,""],infer_node_datatype:[4,4,1,""],make_shape_compatible_op:[4,4,1,""],verify_node:[4,4,1,""]},"finn.transformation":{Transformation:[6,2,1,""],batchnorm_to_affine:[6,0,0,"-"],bipolar_to_xnor:[6,0,0,"-"],fold_constants:[6,0,0,"-"],fpgadataflow:[7,0,0,"-"],general:[6,0,0,"-"],infer_datatypes:[6,0,0,"-"],infer_shapes:[6,0,0,"-"],streamline:[8,0,0,"-"]},"finn.transformation.Transformation":{apply:[6,4,1,""]},"finn.transformation.batchnorm_to_affine":{BatchNormToAffine:[6,2,1,""]},"finn.transformation.batchnorm_to_affine.BatchNormToAffine":{apply:[6,4,1,""]},"finn.transformation.bipolar_to_xnor":{ConvertBipolarMatMulToXnorPopcount:[6,2,1,""]},"finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount":{apply:[6,4,1,""]},"finn.transformation.fold_constants":{FoldConstants:[6,2,1,""]},"finn.transformation.fold_constants.FoldConstants":{apply:[6,4,1,""]},"finn.transformation.fpgadataflow":{cleanup:[7,0,0,"-"],codegen_ipgen:[7,0,0,"-"],codegen_ipstitch:[7,0,0,"-"],codegen_npysim:[7,0,0,"-"],compile:[7,0,0,"-"],convert_to_hls_layers:[7,0,0,"-"],create_dataflow_partition:[7,0,0,"-"],hlssynth_ipgen:[7,0,0,"-"],insert_tlastmarker:[7,0,0,"-"],make_deployment:[7,0,0,"-"],make_pynq_driver:[7,0,0,"-"],make_pynq_proj:[7,0,0,"-"],synth_pynq_proj:[7,0,0,"-"],templates:[7,0,0,"-"]},"finn.transformation.fpgadataflow.cleanup":{CleanUp:[7,2,1,""]},"finn.transformation.fpgadataflow.cleanup.CleanUp":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen":{CodeGen_ipgen:[7,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch":{CodeGen_ipstitch:[7,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.codegen_npysim":{CodeGen_npysim:[7,2,1,""]},"finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.compile":{Compile:[7,2,1,""]},"finn.transformation.fpgadataflow.compile.Compile":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers":{InferBinaryStreamingFCLayer:[7,2,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition":{CreateDataflowPartition:[7,2,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen":{HLSSynth_IPGen:[7,2,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker":{InsertTLastMarker:[7,2,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.make_deployment":{DeployToPYNQ:[7,2,1,""]},"finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver":{MakePYNQDriver:[7,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj":{MakePYNQProject:[7,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj":{SynthPYNQProject:[7,2,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject":{apply:[7,4,1,""]},"finn.transformation.general":{ConvertSubToAdd:[6,2,1,""],GiveRandomTensorNames:[6,2,1,""],GiveReadableTensorNames:[6,2,1,""],GiveUniqueNodeNames:[6,2,1,""]},"finn.transformation.general.ConvertSubToAdd":{apply:[6,4,1,""]},"finn.transformation.general.GiveRandomTensorNames":{apply:[6,4,1,""]},"finn.transformation.general.GiveReadableTensorNames":{apply:[6,4,1,""]},"finn.transformation.general.GiveUniqueNodeNames":{apply:[6,4,1,""]},"finn.transformation.infer_datatypes":{InferDataTypes:[6,2,1,""]},"finn.transformation.infer_datatypes.InferDataTypes":{apply:[6,4,1,""]},"finn.transformation.infer_shapes":{InferShapes:[6,2,1,""]},"finn.transformation.infer_shapes.InferShapes":{apply:[6,4,1,""]},"finn.transformation.streamline":{Streamline:[8,2,1,""],absorb:[8,0,0,"-"],collapse_repeated:[8,0,0,"-"],reorder:[8,0,0,"-"],round_thresholds:[8,0,0,"-"],sign_to_thres:[8,0,0,"-"]},"finn.transformation.streamline.Streamline":{apply:[8,4,1,""]},"finn.transformation.streamline.absorb":{Absorb1BitMulIntoMatMul:[8,2,1,""],AbsorbAddIntoMultiThreshold:[8,2,1,""],AbsorbMulIntoMultiThreshold:[8,2,1,""],FactorOutMulSignMagnitude:[8,2,1,""]},"finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul":{apply:[8,4,1,""]},"finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold":{apply:[8,4,1,""]},"finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold":{apply:[8,4,1,""]},"finn.transformation.streamline.absorb.FactorOutMulSignMagnitude":{apply:[8,4,1,""]},"finn.transformation.streamline.collapse_repeated":{CollapseRepeatedAdd:[8,2,1,""],CollapseRepeatedMul:[8,2,1,""],CollapseRepeatedOp:[8,2,1,""]},"finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp":{apply:[8,4,1,""]},"finn.transformation.streamline.reorder":{MoveAddPastMul:[8,2,1,""],MoveScalarAddPastMatMul:[8,2,1,""],MoveScalarMulPastMatMul:[8,2,1,""]},"finn.transformation.streamline.reorder.MoveAddPastMul":{apply:[8,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarAddPastMatMul":{apply:[8,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarMulPastMatMul":{apply:[8,4,1,""]},"finn.transformation.streamline.round_thresholds":{RoundAndClipThresholds:[8,2,1,""]},"finn.transformation.streamline.round_thresholds.RoundAndClipThresholds":{apply:[8,4,1,""]},"finn.transformation.streamline.sign_to_thres":{ConvertSignToThres:[8,2,1,""]},"finn.transformation.streamline.sign_to_thres.ConvertSignToThres":{apply:[8,4,1,""]},"finn.util":{basic:[9,0,0,"-"],data_packing:[9,0,0,"-"],fpgadataflow:[9,0,0,"-"],onnx:[9,0,0,"-"],test:[9,0,0,"-"]},"finn.util.basic":{CppBuilder:[9,2,1,""],calculate_signed_dot_prod_range:[9,1,1,""],gen_finn_dt_tensor:[9,1,1,""],get_by_name:[9,1,1,""],get_finn_root:[9,1,1,""],interleave_matrix_outer_dim_from_partitions:[9,1,1,""],make_build_dir:[9,1,1,""],pad_tensor_to_multiple_of:[9,1,1,""],random_string:[9,1,1,""],remove_by_name:[9,1,1,""],roundup_to_integer_multiple:[9,1,1,""]},"finn.util.basic.CppBuilder":{append_includes:[9,4,1,""],append_sources:[9,4,1,""],build:[9,4,1,""],set_executable_path:[9,4,1,""]},"finn.util.data_packing":{array2hexstring:[9,1,1,""],finnpy_to_packed_bytearray:[9,1,1,""],hexstring2npbytearray:[9,1,1,""],npbytearray2hexstring:[9,1,1,""],npy_to_rtlsim_input:[9,1,1,""],numpy_to_hls_code:[9,1,1,""],pack_innermost_dim_as_hex_string:[9,1,1,""],packed_bytearray_to_finnpy:[9,1,1,""],rtlsim_output_to_npy:[9,1,1,""],unpack_innermost_dim_from_hex_string:[9,1,1,""]},"finn.util.fpgadataflow":{IPGenBuilder:[9,2,1,""],pyverilate_stitched_ip:[9,1,1,""]},"finn.util.fpgadataflow.IPGenBuilder":{append_tcl:[9,4,1,""],build:[9,4,1,""],set_ipgen_path:[9,4,1,""]},"finn.util.onnx":{valueinfo_to_tensor:[9,1,1,""]},"finn.util.test":{get_test_model_def_fxn:[9,1,1,""],get_test_model_trained:[9,1,1,""],get_test_model_untrained:[9,1,1,""],get_trained_checkpoint:[9,1,1,""]},finn:{analysis:[1,0,0,"-"],core:[3,0,0,"-"],custom_op:[4,0,0,"-"],transformation:[6,0,0,"-"],util:[9,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:method"},terms:{"0f01":9,"0x07":9,"0x0e":9,"0x0f01":9,"0xb":9,"0xe":9,"600px":[],"abstract":[4,5,6],"boolean":3,"class":[3,4,5,6,7,8,9],"const":6,"default":[4,5,6],"enum":3,"final":3,"float":9,"function":[3,6,9],"new":3,"return":[1,2,3,4,5,6,8,9],"static":1,"true":[3,9],"var":5,For:8,HLS:[3,10],IPs:7,PEs:5,The:[1,3,6,7,8,9,10],Use:9,abc:[4,6],abit:9,about:[1,7],absorb1bitmulintomatmul:8,absorb:[0,6,7],absorbaddintomultithreshold:8,absorbmulintomultithreshold:8,acceler:[7,10],account:3,action:7,activ:3,add:[6,8],addition:8,address:7,after:9,aim:8,align:[],all:[1,3,4,5,6,7,9],all_tensors_f32:1,allow:3,alreadi:7,also:[4,5,7],amount:9,analysi:[0,3],analysis_fxn:3,anaylsis_fxn:3,ani:[3,6,7,9],annot:[1,4,5],anoth:7,append_includ:9,append_sourc:9,append_tcl:9,appli:[3,6,7,8],apply_rep:6,appropri:6,arbitrari:9,architectur:10,around:3,arrai:9,array2hexstr:9,arxiv:8,assign:3,associ:[3,6],assum:9,attribut:[1,4,5,7],attribute_nam:[4,5],attributeproto:[4,5],backend:7,base:[3,4,5,6,7,8,9],basic:0,batchnorm:6,batchnorm_to_affin:0,batchnormtoaffin:6,been:7,befor:9,between:[5,9],binari:[3,5,7,8,9],bipolar:[3,5,6,8,9],bipolar_to_xnor:0,bit:[3,9],bitwidth:3,blackboxfunct:5,block:7,blott:5,board:7,bool:[1,6],both:9,bram_estim:5,brevita:10,brien:5,build:9,built:1,calc_tmem:5,calc_wmem:5,calcul:5,calculate_signed_dot_prod_rang:9,call:[3,5,6,7],can:[3,6,7,8,9,10],cannot:6,center:[],centerpiec:10,certain:1,chang:[3,6],check:[1,3,4,5],check_all_tensor_shapes_specifi:3,check_compat:3,cleanup:[0,6],clk:[5,7],clone:9,code:[7,9],code_gen_dir:9,code_generation_ipgen:5,code_generation_npysim:5,codegen_ipgen:[0,6],codegen_ipstitch:[0,6],codegen_npysim:[0,6],collaps:8,collapse_rep:[0,6],collapserepeatedadd:8,collapserepeatedmul:8,collapserepeatedop:8,collect:7,colloqui:10,come:1,compar:[3,4],compare_execut:3,compare_fxn:3,compat:[3,4,5],compil:[0,6,10],compile_singlenode_cod:5,compon:10,comput:3,consecut:8,constant:[1,3,8],consum:3,contain:[3,4,7,9],content:[],context:[3,4,5],convent:1,convert:[5,6,7,8,9],convert_to_hls_lay:[0,6],convertbipolarmatmultoxnorpopcount:6,convertsigntothr:8,convertsubtoadd:6,convolutioninputgener:[0,4],copi:[3,6,7],core:0,corner:10,correct:6,correctli:[1,4,5,7],correspond:[3,4,5,10],count:5,cpp_file:9,cppbuilder:9,creat:[3,7,9],create_dataflow_partit:[0,6],createdataflowpartit:7,current:3,custom:[1,3,10],custom_op:0,customop:[4,5],data:[4,7,9],data_pack:0,dataflow:[3,7,10],dataoutstrm:5,datatyp:[0,4,5,6,9],debug:3,declar:6,deep:[3,5,6,10],default_v:[4,5],default_valu:[4,5],defin:5,deploy:7,deploytopynq:7,design:[7,10],detail:10,dict:[3,4,5],dictionari:[1,3],digit:9,dimens:9,dimension:9,dir:[7,9],directori:[7,9],distr_pad:9,divis:9,dnn:10,doc:10,docker:9,docomput:5,don:6,done:1,dot:9,driver:7,dt_a:9,dt_b:9,dtype:[1,3,4,5,9],dynam:1,dynamic_input_to_npi:5,each:[1,3,6,8,9,10],effect:6,element:9,embed:3,emit:9,emphasi:10,empti:3,end:5,ensur:[5,6,7,9],enumer:[3,6],equal:[4,5],equival:8,estim:2,even:6,evenli:9,everi:6,exampl:9,exec_precompiled_singlenode_model:5,execut:[3,4,5],execute_custom_nod:0,execute_nod:[3,4,5],execute_onnx:3,execute_onnx_and_make_model:3,exist:[4,9],exit:9,expect:[1,3,4,5,7],experiment:10,explor:[3,5,10],expos:3,extra:[1,9],extract:[1,2],factor:9,factoroutmulsignmagnitud:8,fals:[3,6,9],fan:1,fast:5,fewest:3,field:[7,9],file:[3,7,9],filenam:[3,7],find:3,find_consum:3,find_produc:3,finn:[],finn_dt:9,finnpy_to_packed_bytearrai:9,first:[1,8],fix:[6,9],flatten:9,float32:[1,3],flow:[],fold_const:0,foldconst:6,folder:[7,9],follow:[1,7,10],form:5,found:7,four:9,fpga:10,fpgadataflow:[0,1,4,6],fpgapart:[5,7],framework:[5,10],fraser:5,from:[2,3,7,9,10],full:3,further:6,gambardella:5,gen_finn_dt_tensor:9,gener:[0,7,9,10],generate_param:5,get:[3,4],get_all_tensor_nam:3,get_by_nam:9,get_finn_root:9,get_folded_input_shap:5,get_folded_output_shap:5,get_hls_compatible_threshold_tensor:5,get_hls_compatible_weight_tensor:5,get_hls_datatype_str:3,get_initi:3,get_input_datatyp:5,get_instream_width:5,get_metadata_prop:3,get_nodeattr:4,get_nodeattr_typ:[4,5],get_num_possible_valu:3,get_number_output_valu:5,get_output_datatyp:5,get_outstream_width:5,get_per_tensor_fanout:1,get_smallest_poss:3,get_stream_width:5,get_template_param_valu:5,get_tensor_datatyp:3,get_tensor_fanout:3,get_tensor_shap:3,get_tensor_valueinfo:3,get_test_model_def_fxn:9,get_test_model_train:9,get_test_model_untrain:9,get_trained_checkpoint:9,get_weight_datatyp:5,getcustomop:4,github:10,give:[6,8],give_unique_node_nam:6,given:[1,2,3,4,5,9],giverandomtensornam:6,givereadabletensornam:6,giveuniquenodenam:6,global_includ:5,graph:[1,3,4,5,6,7],graphic:10,guarante:6,guid:0,has:[1,3,6,7,9],have:[1,3,6,7,8],height:[],hex:9,hexstr:9,hexstring2npbytearrai:9,highli:10,hls_synth_res_estim:[0,1],hls_var_nam:9,hlscustomop:5,hlslib:[5,10],hlssynth_ipgen:[0,6],homepag:10,host:9,how:[0,9],human:6,imag:[],img:[],immedi:7,implement:3,includ:[3,7,10],index:10,indic:[3,4,5,6,7],infer:[3,4,5,6,9,10],infer_datatyp:0,infer_node_datatyp:[4,5],infer_shap:0,inferbinarystreamingfclay:7,inferdatatyp:6,infershap:6,infinit:6,info:[6,9],info_messag:1,inform:[1,7],infrastructur:7,inherit:6,initi:[1,3],innermost:9,inp0:4,inp1:4,inp:5,input:[1,3,4,5,6,8,9],input_dict:3,input_dtyp:9,input_fil:9,insert:[7,9],insert_tlastmark:[0,6],inserttlastmark:7,insid:4,instanc:[3,4,5,8],instanti:7,instead:9,int16:3,int2:3,int32:3,int3:3,int4:3,int8:3,integ:[3,8,9],intend:10,interfac:7,interleav:5,interleave_matrix_outer_dim_from_partit:9,intermedi:[3,6],intern:6,ipgen_singlenode_cod:5,ipgenbuild:9,is_integ:3,is_linear:1,item:9,kei:3,know:6,lab:10,lambda:3,largest:3,layer:[6,7],lead:9,learn:5,leeser:5,len:9,let:6,letter:9,librari:10,library_path:9,like:10,linear:[1,3],link:10,list:[1,3],look:1,loop:6,lut_estim:5,made:[3,6],magnitud:8,make:[6,7],make_build_dir:9,make_collapsed_param_fxn:8,make_deepcopi:3,make_deploy:[0,6],make_empty_exec_context:3,make_new_valueinfo_nam:3,make_project:7,make_pynq_driv:[0,6],make_pynq_proj:[0,6],make_shape_compatible_op:[4,5],makepynqdriv:7,makepynqproject:7,manipul:3,manual:6,matmul:[6,8],matrix:[5,8,9],max:[3,9],mean:9,meant:6,member:[4,5],metadata_prop:[3,7],min:[3,9],minimum:9,mixtur:1,mkdtemp:9,mode:[],model:[1,2,3,4,5,6,7,8,9],model_a:3,model_b:3,model_was_chang:6,modelproto:[3,7],modelwrapp:[0,1,6],modul:10,more:[3,6,9],move:8,moveaddpastmul:8,movescalaraddpastmatmul:8,movescalarmulpastmatmul:8,mul:[6,8],multidimension:9,multipl:[6,8,9],multipli:8,multithreshold:[0,7,8],must:[4,6,7,8,9],mvtu:7,n_partit:9,n_thres_step:5,name:[1,2,3,4,6,9],name_field:9,ndarrai:9,nearest:[8,9],necessari:7,need:[2,4,5,6],neg:[3,8],netnam:9,network:[5,10],neural:[5,10],new_nam:3,next:8,no_decl:9,node:[1,2,3,4,5,6,7,8],node_inputs_in_expected_ord:1,node_res_estim:5,non:7,none:[3,4,9],notwithstand:1,now:[1,3],npbytearrai:9,npbytearray2hexstr:9,npy:9,npy_to_dynamic_output:5,npy_to_rtlsim_input:9,number:[3,4,5,9],numpi:[5,9],numpy_to_hls_cod:9,object:[3,9],old_nam:3,onc:6,one:[1,3,7,9],onli:[1,3,6,7,8],onnx:[0,3,4,5,7],onnx_exec:0,onnx_model_proto:3,onnx_nod:[4,5],onnxruntim:3,op_nam:8,op_typ:1,oper:[3,8],ops:[1,8],order:1,orig_thres_matrix:5,orig_weight_matrix:5,origin:5,other:[3,8],otherwis:[3,6,9],out:1,out_bia:4,out_scal:4,out_shap:9,outcom:7,output:[3,4,5,6,9],output_shap:9,overlai:7,overview:10,pack:[7,9],pack_innermost_dim:9,pack_innermost_dim_as_hex_str:9,packag:[],packed_bytearrai:9,packed_bytearray_to_finnpi:9,packedbit:9,pad:9,pad_tensor_to_multiple_of:9,pad_to_dim:9,pad_to_nbit:9,page:10,pair:7,paramet:8,part:[4,9],particular:[4,5,9],partit:3,pass:[0,5],password:7,past:8,path:[5,9],per:7,perform:[4,5],permit:[4,5],place:7,platform:7,png:[],point:6,posit:[5,8,9],possibl:[3,7],pragma:5,preced:8,precid:8,precis:9,precomput:6,prefer:3,prefix:9,prepend:9,preusser:5,previous:7,prior:[6,7,9],produc:[1,3],product:9,project:[7,10],properti:[1,3],provid:3,pynq:7,pynq_driver_dir:7,python:[7,9],pyveril:9,pyverilate_stitched_ip:9,qnn:10,quantiz:[1,5,10],random:[6,9],random_str:9,randomli:9,rather:10,reach:6,read:10,read_npy_data:5,readabl:6,readthedoc:[],recommend:6,refer:10,registri:0,relat:10,remot:3,remov:[7,9],remove_by_nam:9,remove_prefix:9,renam:3,rename_tensor:3,reorder:[0,6],repeat:[6,8],repeatedli:3,replac:6,repositori:10,repositroi:[],repres:[3,9],represent:9,requir:[3,4,5],res_estim:[0,1],research:10,reset_rtlsim:5,reshap:5,resourc:2,respect:9,result:[1,2,3,6,7,8,9],return_full_exec_context:3,returned_dict:[4,5],revers:9,reverse_endian:9,reverse_inn:9,right:10,root:9,round:[8,9],round_threshold:[0,6],roundandclipthreshold:8,roundup_to_integer_multipl:9,row:5,rtlsim:[3,5],rtlsim_output_to_npi:9,run:[3,7],same:[7,9],save:[3,9],save_as_npi:5,scalar:8,scale:[],scp:7,script:7,search:10,second:[7,8],see:[8,9],seen:10,sep:5,separ:10,sequenc:9,set:[3,4,5,7,8,9],set_attribut:[],set_executable_path:9,set_initi:3,set_ipgen_path:9,set_metadata_prop:3,set_nodeattr:4,set_sim_mod:[0,6],set_tensor_datatyp:3,set_tensor_shap:3,setsimmod:[],shape:[3,4,5,6,9],shell:7,should:[1,3,6],sign:[3,6,8,9],sign_to_thr:[0,6],sim:[5,9],sim_mod:[],simd:5,sinc:[3,9],singl:[3,8,9],small:1,smallest:3,some:[3,6],space:10,specif:10,specifi:[3,6,9],split:[7,8,9],standard:[3,4,5],stitch:[7,9],store:[4,7,9],streamingdataflowpartit:[0,7],streamingfclayer_batch:[0,4,7],streamingmaxpool_batch:[0,4],streamlin:[0,6],string:[1,9],stringlength:9,strm_decl:5,structur:1,style:10,sub:6,subdirectori:7,subgraph:3,submodul:0,subpackag:[],subset:1,success:7,suitabl:5,surviv:9,synth_pynq_proj:[0,6],synthesi:[2,7],synthpynqproject:7,take:[1,3,6,8,9],taken:[3,7,10],target:[7,10],target_dir:7,targetbit:9,tcl:7,tcl_script:9,tempfil:9,templat:[0,4,6],temporari:9,tensor:[1,3,6,8,9],tensor_fanout:1,tensor_nam:[1,3],tensor_shap:[3,9],tensor_valu:3,termin:7,ternari:3,test:[0,6],thei:8,them:[1,7,8],thi:[1,3,4,5,6,7,9,10],thing:10,threshold:[4,5,8],time:6,tlastmark:[0,4,7],tmem:5,togeth:7,toggle_clk:5,tool:10,topolog:0,train:10,transform:[0,3],transformed_model:6,travers:1,tupl:6,two:[3,7,8,9,10],type:[3,6,9],uint16:3,uint2:[3,9],uint32:3,uint3:3,uint4:3,uint8:[3,9],umuroglu:5,under:7,uniqu:6,unpack:[7,9],unpack_innermost_dim_from_hex_str:9,unsign:[3,8],until:3,updat:8,upper:10,used:[3,4,5,9,10],useful:3,user:6,usernam:7,using:[3,6,8,9,10],util:[0,3,4,5],val:9,valu:[3,4,5,7,8,9],value_info:3,valueinfo:[3,6],valueinfo_to_tensor:9,valueinfoproto:[3,9],variabl:9,vector:[8,9],verif:1,verifi:[1,4,5],verify_custom_nod:0,verify_nod:[1,4,5],via:3,view:10,visser:5,vivado:[2,3,7,10],vivado_pynq_proj:7,vivado_stitch_proj:7,wai:1,want:8,wbit:9,websit:10,weight:[3,5],when:[1,6],where:[3,4,5,7,8],whether:[1,3,4,5,6],which:[3,4,5,7,8,9,10],width:9,wmem:5,work:[3,9],wrapper:3,write:0,xdnn:10,xilinx:10,xnorpopcount:0,xnorpopcountmatmul:[4,6,7],you:6,your:6,zero:[3,8,9]},titles:["finn package","finn.analysis package","finn.analysis.fpgadataflow package","finn.core package","finn.custom_op package","finn.custom_op.fpgadataflow package","finn.transformation package","finn.transformation.fpgadataflow package","finn.transformation.streamline package","finn.util package","FINN","src"],titleterms:{absorb:8,analysi:[1,2],basic:9,batchnorm_to_affin:6,bipolar_to_xnor:6,cleanup:7,codegen_ipgen:7,codegen_ipstitch:7,codegen_npysim:7,collapse_rep:8,compil:7,content:[0,1,2,3,4,5,6,7,8,9],convert_to_hls_lay:7,convolutioninputgener:5,core:3,create_dataflow_partit:7,custom_op:[4,5],data_pack:9,datatyp:3,document:[],execute_custom_nod:3,finn:[0,1,2,3,4,5,6,7,8,9,10],fold_const:6,fpgadataflow:[2,5,7,9],gener:6,guid:6,hls_synth_res_estim:2,hlssynth_ipgen:7,how:1,indic:10,infer_datatyp:6,infer_shap:6,insert_tlastmark:7,make_deploy:7,make_pynq_driv:7,make_pynq_proj:7,modelwrapp:3,modul:[0,1,2,3,4,5,6,7,8,9],multithreshold:4,onnx:9,onnx_exec:3,packag:[0,1,2,3,4,5,6,7,8,9],pass:1,registri:4,reorder:8,res_estim:2,round_threshold:8,set_sim_mod:7,sign_to_thr:8,src:11,streamingdataflowpartit:4,streamingfclayer_batch:5,streamingmaxpool_batch:5,streamlin:8,submodul:[1,2,3,4,5,6,7,8,9],subpackag:[0,1,4,6],synth_pynq_proj:7,tabl:10,templat:[5,7],test:9,tlastmark:5,topolog:1,transform:[6,7,8],util:9,verify_custom_nod:1,welcom:[],what:10,write:[1,6],xnorpopcount:4}})
\ No newline at end of file
+Search.setIndex({docnames:["end_to_end_flow","finn","finn.analysis","finn.analysis.fpgadataflow","finn.core","finn.custom_op","finn.custom_op.fpgadataflow","finn.transformation","finn.transformation.fpgadataflow","finn.transformation.streamline","finn.util","getting_started","index","modules","source_code"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:56},filenames:["end_to_end_flow.rst","finn.rst","finn.analysis.rst","finn.analysis.fpgadataflow.rst","finn.core.rst","finn.custom_op.rst","finn.custom_op.fpgadataflow.rst","finn.transformation.rst","finn.transformation.fpgadataflow.rst","finn.transformation.streamline.rst","finn.util.rst","getting_started.rst","index.rst","modules.rst","source_code.rst"],objects:{"":{finn:[1,0,0,"-"]},"finn.analysis":{fpgadataflow:[3,0,0,"-"],topology:[2,0,0,"-"],verify_custom_nodes:[2,0,0,"-"]},"finn.analysis.fpgadataflow":{hls_synth_res_estimation:[3,0,0,"-"],res_estimation:[3,0,0,"-"]},"finn.analysis.fpgadataflow.hls_synth_res_estimation":{hls_synth_res_estimation:[3,1,1,""]},"finn.analysis.fpgadataflow.res_estimation":{res_estimation:[3,1,1,""]},"finn.analysis.topology":{all_tensors_f32:[2,1,1,""],get_per_tensor_fanouts:[2,1,1,""],is_linear:[2,1,1,""],node_inputs_in_expected_order:[2,1,1,""]},"finn.analysis.verify_custom_nodes":{verify_nodes:[2,1,1,""]},"finn.core":{datatype:[4,0,0,"-"],execute_custom_node:[4,0,0,"-"],modelwrapper:[4,0,0,"-"],onnx_exec:[4,0,0,"-"]},"finn.core.datatype":{DataType:[4,2,1,""]},"finn.core.datatype.DataType":{BINARY:[4,3,1,""],BIPOLAR:[4,3,1,""],FLOAT32:[4,3,1,""],INT16:[4,3,1,""],INT2:[4,3,1,""],INT32:[4,3,1,""],INT3:[4,3,1,""],INT4:[4,3,1,""],INT8:[4,3,1,""],TERNARY:[4,3,1,""],UINT16:[4,3,1,""],UINT2:[4,3,1,""],UINT32:[4,3,1,""],UINT3:[4,3,1,""],UINT4:[4,3,1,""],UINT8:[4,3,1,""],allowed:[4,4,1,""],bitwidth:[4,4,1,""],get_hls_datatype_str:[4,4,1,""],get_num_possible_values:[4,4,1,""],get_smallest_possible:[4,4,1,""],is_integer:[4,4,1,""],max:[4,4,1,""],min:[4,4,1,""],signed:[4,4,1,""]},"finn.core.execute_custom_node":{execute_custom_node:[4,1,1,""]},"finn.core.modelwrapper":{ModelWrapper:[4,2,1,""]},"finn.core.modelwrapper.ModelWrapper":{analysis:[4,4,1,""],check_all_tensor_shapes_specified:[4,4,1,""],check_compatibility:[4,4,1,""],find_consumer:[4,4,1,""],find_producer:[4,4,1,""],get_all_tensor_names:[4,4,1,""],get_initializer:[4,4,1,""],get_metadata_prop:[4,4,1,""],get_tensor_datatype:[4,4,1,""],get_tensor_fanout:[4,4,1,""],get_tensor_shape:[4,4,1,""],get_tensor_valueinfo:[4,4,1,""],graph:[4,4,1,""],make_empty_exec_context:[4,4,1,""],make_new_valueinfo_name:[4,4,1,""],model:[4,4,1,""],rename_tensor:[4,4,1,""],save:[4,4,1,""],set_initializer:[4,4,1,""],set_metadata_prop:[4,4,1,""],set_tensor_datatype:[4,4,1,""],set_tensor_shape:[4,4,1,""],transform:[4,4,1,""]},"finn.core.onnx_exec":{compare_execution:[4,1,1,""],execute_node:[4,1,1,""],execute_onnx:[4,1,1,""],execute_onnx_and_make_model:[4,1,1,""]},"finn.custom_op":{CustomOp:[5,2,1,""],fpgadataflow:[6,0,0,"-"],multithreshold:[5,0,0,"-"],registry:[5,0,0,"-"],streamingdataflowpartition:[5,0,0,"-"],xnorpopcount:[5,0,0,"-"]},"finn.custom_op.CustomOp":{execute_node:[5,4,1,""],get_nodeattr:[5,4,1,""],get_nodeattr_types:[5,4,1,""],infer_node_datatype:[5,4,1,""],make_shape_compatible_op:[5,4,1,""],set_nodeattr:[5,4,1,""],verify_node:[5,4,1,""]},"finn.custom_op.fpgadataflow":{HLSCustomOp:[6,2,1,""],convolutioninputgenerator:[6,0,0,"-"],streamingfclayer_batch:[6,0,0,"-"],streamingmaxpool_batch:[6,0,0,"-"],templates:[6,0,0,"-"],tlastmarker:[6,0,0,"-"]},"finn.custom_op.fpgadataflow.HLSCustomOp":{blackboxfunction:[6,4,1,""],bram_estimation:[6,4,1,""],code_generation_ipgen:[6,4,1,""],code_generation_npysim:[6,4,1,""],compile_singlenode_code:[6,4,1,""],dataoutstrm:[6,4,1,""],defines:[6,4,1,""],docompute:[6,4,1,""],dynamic_input_to_npy:[6,4,1,""],exec_precompiled_singlenode_model:[6,4,1,""],execute_node:[6,4,1,""],generate_params:[6,4,1,""],get_folded_input_shape:[6,4,1,""],get_folded_output_shape:[6,4,1,""],get_instream_width:[6,4,1,""],get_nodeattr_types:[6,4,1,""],get_number_output_values:[6,4,1,""],get_outstream_width:[6,4,1,""],global_includes:[6,4,1,""],ipgen_singlenode_code:[6,4,1,""],lut_estimation:[6,4,1,""],node_res_estimation:[6,4,1,""],npy_to_dynamic_output:[6,4,1,""],pragmas:[6,4,1,""],read_npy_data:[6,4,1,""],reset_rtlsim:[6,4,1,""],rtlsim:[6,4,1,""],save_as_npy:[6,4,1,""],strm_decl:[6,4,1,""],toggle_clk:[6,4,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator":{ConvolutionInputGenerator:[6,2,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator":{blackboxfunction:[6,4,1,""],bram_estimation:[6,4,1,""],dataoutstrm:[6,4,1,""],defines:[6,4,1,""],docompute:[6,4,1,""],execute_node:[6,4,1,""],get_input_datatype:[6,4,1,""],get_nodeattr_types:[6,4,1,""],get_number_output_values:[6,4,1,""],get_output_datatype:[6,4,1,""],get_stream_width:[6,4,1,""],global_includes:[6,4,1,""],infer_node_datatype:[6,4,1,""],lut_estimation:[6,4,1,""],make_shape_compatible_op:[6,4,1,""],pragmas:[6,4,1,""],read_npy_data:[6,4,1,""],save_as_npy:[6,4,1,""],strm_decl:[6,4,1,""],verify_node:[6,4,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch":{StreamingFCLayer_Batch:[6,2,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch":{blackboxfunction:[6,4,1,""],bram_estimation:[6,4,1,""],calc_tmem:[6,4,1,""],calc_wmem:[6,4,1,""],dataoutstrm:[6,4,1,""],defines:[6,4,1,""],docompute:[6,4,1,""],execute_node:[6,4,1,""],generate_params:[6,4,1,""],get_folded_input_shape:[6,4,1,""],get_folded_output_shape:[6,4,1,""],get_hls_compatible_threshold_tensor:[6,4,1,""],get_hls_compatible_weight_tensor:[6,4,1,""],get_input_datatype:[6,4,1,""],get_instream_width:[6,4,1,""],get_nodeattr_types:[6,4,1,""],get_number_output_values:[6,4,1,""],get_output_datatype:[6,4,1,""],get_outstream_width:[6,4,1,""],get_template_param_values:[6,4,1,""],get_weight_datatype:[6,4,1,""],global_includes:[6,4,1,""],infer_node_datatype:[6,4,1,""],lut_estimation:[6,4,1,""],make_shape_compatible_op:[6,4,1,""],pragmas:[6,4,1,""],read_npy_data:[6,4,1,""],save_as_npy:[6,4,1,""],strm_decl:[6,4,1,""],verify_node:[6,4,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch":{StreamingMaxPool_Batch:[6,2,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch":{blackboxfunction:[6,4,1,""],bram_estimation:[6,4,1,""],dataoutstrm:[6,4,1,""],defines:[6,4,1,""],docompute:[6,4,1,""],get_nodeattr_types:[6,4,1,""],get_number_output_values:[6,4,1,""],global_includes:[6,4,1,""],infer_node_datatype:[6,4,1,""],lut_estimation:[6,4,1,""],make_shape_compatible_op:[6,4,1,""],pragmas:[6,4,1,""],read_npy_data:[6,4,1,""],save_as_npy:[6,4,1,""],strm_decl:[6,4,1,""],verify_node:[6,4,1,""]},"finn.custom_op.fpgadataflow.tlastmarker":{TLastMarker:[6,2,1,""]},"finn.custom_op.fpgadataflow.tlastmarker.TLastMarker":{blackboxfunction:[6,4,1,""],dataoutstrm:[6,4,1,""],defines:[6,4,1,""],docompute:[6,4,1,""],execute_node:[6,4,1,""],get_folded_input_shape:[6,4,1,""],get_folded_output_shape:[6,4,1,""],get_instream_width:[6,4,1,""],get_nodeattr_types:[6,4,1,""],get_number_output_values:[6,4,1,""],get_outstream_width:[6,4,1,""],global_includes:[6,4,1,""],infer_node_datatype:[6,4,1,""],make_shape_compatible_op:[6,4,1,""],pragmas:[6,4,1,""],read_npy_data:[6,4,1,""],save_as_npy:[6,4,1,""],strm_decl:[6,4,1,""],verify_node:[6,4,1,""]},"finn.custom_op.multithreshold":{MultiThreshold:[5,2,1,""],compare:[5,1,1,""],multithreshold:[5,1,1,""]},"finn.custom_op.multithreshold.MultiThreshold":{execute_node:[5,4,1,""],get_nodeattr_types:[5,4,1,""],infer_node_datatype:[5,4,1,""],make_shape_compatible_op:[5,4,1,""],verify_node:[5,4,1,""]},"finn.custom_op.registry":{getCustomOp:[5,1,1,""]},"finn.custom_op.streamingdataflowpartition":{StreamingDataflowPartition:[5,2,1,""]},"finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition":{execute_node:[5,4,1,""],get_nodeattr_types:[5,4,1,""],infer_node_datatype:[5,4,1,""],make_shape_compatible_op:[5,4,1,""],verify_node:[5,4,1,""]},"finn.custom_op.xnorpopcount":{XnorPopcountMatMul:[5,2,1,""],xnorpopcountmatmul:[5,1,1,""]},"finn.custom_op.xnorpopcount.XnorPopcountMatMul":{execute_node:[5,4,1,""],get_nodeattr_types:[5,4,1,""],infer_node_datatype:[5,4,1,""],make_shape_compatible_op:[5,4,1,""],verify_node:[5,4,1,""]},"finn.transformation":{Transformation:[7,2,1,""],batchnorm_to_affine:[7,0,0,"-"],bipolar_to_xnor:[7,0,0,"-"],fold_constants:[7,0,0,"-"],fpgadataflow:[8,0,0,"-"],general:[7,0,0,"-"],infer_datatypes:[7,0,0,"-"],infer_shapes:[7,0,0,"-"],streamline:[9,0,0,"-"]},"finn.transformation.Transformation":{apply:[7,4,1,""]},"finn.transformation.batchnorm_to_affine":{BatchNormToAffine:[7,2,1,""]},"finn.transformation.batchnorm_to_affine.BatchNormToAffine":{apply:[7,4,1,""]},"finn.transformation.bipolar_to_xnor":{ConvertBipolarMatMulToXnorPopcount:[7,2,1,""]},"finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount":{apply:[7,4,1,""]},"finn.transformation.fold_constants":{FoldConstants:[7,2,1,""]},"finn.transformation.fold_constants.FoldConstants":{apply:[7,4,1,""]},"finn.transformation.fpgadataflow":{cleanup:[8,0,0,"-"],codegen_ipgen:[8,0,0,"-"],codegen_ipstitch:[8,0,0,"-"],codegen_npysim:[8,0,0,"-"],compile:[8,0,0,"-"],convert_to_hls_layers:[8,0,0,"-"],create_dataflow_partition:[8,0,0,"-"],hlssynth_ipgen:[8,0,0,"-"],insert_tlastmarker:[8,0,0,"-"],make_deployment:[8,0,0,"-"],make_pynq_driver:[8,0,0,"-"],make_pynq_proj:[8,0,0,"-"],synth_pynq_proj:[8,0,0,"-"],templates:[8,0,0,"-"]},"finn.transformation.fpgadataflow.cleanup":{CleanUp:[8,2,1,""]},"finn.transformation.fpgadataflow.cleanup.CleanUp":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen":{CodeGen_ipgen:[8,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch":{CodeGen_ipstitch:[8,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.codegen_npysim":{CodeGen_npysim:[8,2,1,""]},"finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.compile":{Compile:[8,2,1,""]},"finn.transformation.fpgadataflow.compile.Compile":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers":{InferBinaryStreamingFCLayer:[8,2,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition":{CreateDataflowPartition:[8,2,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen":{HLSSynth_IPGen:[8,2,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker":{InsertTLastMarker:[8,2,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.make_deployment":{DeployToPYNQ:[8,2,1,""]},"finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver":{MakePYNQDriver:[8,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj":{MakePYNQProject:[8,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject":{apply:[8,4,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj":{SynthPYNQProject:[8,2,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject":{apply:[8,4,1,""]},"finn.transformation.general":{ConvertSubToAdd:[7,2,1,""],GiveRandomTensorNames:[7,2,1,""],GiveReadableTensorNames:[7,2,1,""],GiveUniqueNodeNames:[7,2,1,""]},"finn.transformation.general.ConvertSubToAdd":{apply:[7,4,1,""]},"finn.transformation.general.GiveRandomTensorNames":{apply:[7,4,1,""]},"finn.transformation.general.GiveReadableTensorNames":{apply:[7,4,1,""]},"finn.transformation.general.GiveUniqueNodeNames":{apply:[7,4,1,""]},"finn.transformation.infer_datatypes":{InferDataTypes:[7,2,1,""]},"finn.transformation.infer_datatypes.InferDataTypes":{apply:[7,4,1,""]},"finn.transformation.infer_shapes":{InferShapes:[7,2,1,""]},"finn.transformation.infer_shapes.InferShapes":{apply:[7,4,1,""]},"finn.transformation.streamline":{Streamline:[9,2,1,""],absorb:[9,0,0,"-"],collapse_repeated:[9,0,0,"-"],reorder:[9,0,0,"-"],round_thresholds:[9,0,0,"-"],sign_to_thres:[9,0,0,"-"]},"finn.transformation.streamline.Streamline":{apply:[9,4,1,""]},"finn.transformation.streamline.absorb":{Absorb1BitMulIntoMatMul:[9,2,1,""],AbsorbAddIntoMultiThreshold:[9,2,1,""],AbsorbMulIntoMultiThreshold:[9,2,1,""],FactorOutMulSignMagnitude:[9,2,1,""]},"finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul":{apply:[9,4,1,""]},"finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold":{apply:[9,4,1,""]},"finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold":{apply:[9,4,1,""]},"finn.transformation.streamline.absorb.FactorOutMulSignMagnitude":{apply:[9,4,1,""]},"finn.transformation.streamline.collapse_repeated":{CollapseRepeatedAdd:[9,2,1,""],CollapseRepeatedMul:[9,2,1,""],CollapseRepeatedOp:[9,2,1,""]},"finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp":{apply:[9,4,1,""]},"finn.transformation.streamline.reorder":{MoveAddPastMul:[9,2,1,""],MoveScalarAddPastMatMul:[9,2,1,""],MoveScalarMulPastMatMul:[9,2,1,""]},"finn.transformation.streamline.reorder.MoveAddPastMul":{apply:[9,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarAddPastMatMul":{apply:[9,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarMulPastMatMul":{apply:[9,4,1,""]},"finn.transformation.streamline.round_thresholds":{RoundAndClipThresholds:[9,2,1,""]},"finn.transformation.streamline.round_thresholds.RoundAndClipThresholds":{apply:[9,4,1,""]},"finn.transformation.streamline.sign_to_thres":{ConvertSignToThres:[9,2,1,""]},"finn.transformation.streamline.sign_to_thres.ConvertSignToThres":{apply:[9,4,1,""]},"finn.util":{basic:[10,0,0,"-"],data_packing:[10,0,0,"-"],fpgadataflow:[10,0,0,"-"],onnx:[10,0,0,"-"],test:[10,0,0,"-"]},"finn.util.basic":{CppBuilder:[10,2,1,""],calculate_signed_dot_prod_range:[10,1,1,""],gen_finn_dt_tensor:[10,1,1,""],get_by_name:[10,1,1,""],get_finn_root:[10,1,1,""],interleave_matrix_outer_dim_from_partitions:[10,1,1,""],make_build_dir:[10,1,1,""],pad_tensor_to_multiple_of:[10,1,1,""],random_string:[10,1,1,""],remove_by_name:[10,1,1,""],roundup_to_integer_multiple:[10,1,1,""]},"finn.util.basic.CppBuilder":{append_includes:[10,4,1,""],append_sources:[10,4,1,""],build:[10,4,1,""],set_executable_path:[10,4,1,""]},"finn.util.data_packing":{array2hexstring:[10,1,1,""],finnpy_to_packed_bytearray:[10,1,1,""],hexstring2npbytearray:[10,1,1,""],npbytearray2hexstring:[10,1,1,""],npy_to_rtlsim_input:[10,1,1,""],numpy_to_hls_code:[10,1,1,""],pack_innermost_dim_as_hex_string:[10,1,1,""],packed_bytearray_to_finnpy:[10,1,1,""],rtlsim_output_to_npy:[10,1,1,""],unpack_innermost_dim_from_hex_string:[10,1,1,""]},"finn.util.fpgadataflow":{IPGenBuilder:[10,2,1,""],pyverilate_stitched_ip:[10,1,1,""]},"finn.util.fpgadataflow.IPGenBuilder":{append_tcl:[10,4,1,""],build:[10,4,1,""],set_ipgen_path:[10,4,1,""]},"finn.util.onnx":{valueinfo_to_tensor:[10,1,1,""]},"finn.util.test":{get_test_model_def_fxn:[10,1,1,""],get_test_model_trained:[10,1,1,""],get_test_model_untrained:[10,1,1,""],get_trained_checkpoint:[10,1,1,""]},finn:{analysis:[2,0,0,"-"],core:[4,0,0,"-"],custom_op:[5,0,0,"-"],transformation:[7,0,0,"-"],util:[10,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:method"},terms:{"0f01":10,"0x07":10,"0x0e":10,"0x0f01":10,"0xb":10,"0xe":10,"600px":[],"abstract":[5,6,7],"boolean":4,"class":[4,5,6,7,8,9,10],"const":7,"default":[5,6,7],"enum":4,"final":4,"float":10,"function":[4,7,10],"new":4,"return":[2,3,4,5,6,7,9,10],"static":2,"true":[4,10],"var":6,For:9,HLS:[4,12],IPs:8,PEs:6,The:[2,4,7,8,9,10,12],Use:10,abc:[5,7],abit:10,about:[2,8,12],absorb1bitmulintomatmul:9,absorb:[1,7,8],absorbaddintomultithreshold:9,absorbmulintomultithreshold:9,acceler:[8,12],account:4,action:8,activ:4,add:[7,9],addition:9,address:8,after:10,aim:9,align:[],all:[2,4,5,6,7,8,10],all_tensors_f32:2,allow:4,alreadi:8,also:[5,6,8],amount:10,analysi:[1,4],analysis_fxn:4,anaylsis_fxn:4,ani:[4,7,8,10],annot:[2,5,6],anoth:8,append_includ:10,append_sourc:10,append_tcl:10,appli:[4,7,8,9],apply_rep:7,appropri:7,arbitrari:10,architectur:12,around:4,arrai:10,array2hexstr:10,arxiv:9,assign:4,associ:[4,7],assum:10,attribut:[2,5,6,8],attribute_nam:[5,6],attributeproto:[5,6],backend:8,base:[4,5,6,7,8,9,10],basic:1,batchnorm:7,batchnorm_to_affin:1,batchnormtoaffin:7,been:8,befor:10,between:[6,10],binari:[4,6,8,9,10],bipolar:[4,6,7,9,10],bipolar_to_xnor:1,bit:[4,10],bitwidth:4,blackboxfunct:6,block:8,blott:6,board:8,bool:[2,7],both:10,bram_estim:6,brevita:12,brien:6,build:10,built:2,calc_tmem:6,calc_wmem:6,calcul:6,calculate_signed_dot_prod_rang:10,call:[4,6,7,8],can:[4,7,8,9,10,12],cannot:7,center:[],centerpiec:12,certain:2,chang:[4,7],check:[2,4,5,6],check_all_tensor_shapes_specifi:4,check_compat:4,cleanup:[1,7],clk:[6,8],clone:10,code:[8,10],code_gen_dir:10,code_generation_ipgen:6,code_generation_npysim:6,codegen_ipgen:[1,7],codegen_ipstitch:[1,7],codegen_npysim:[1,7],collaps:9,collapse_rep:[1,7],collapserepeatedadd:9,collapserepeatedmul:9,collapserepeatedop:9,collect:8,colloqui:12,come:2,compar:[4,5],compare_execut:4,compare_fxn:4,compat:[4,5,6],compil:[1,7,12],compile_singlenode_cod:6,compon:12,comput:4,consecut:9,constant:[2,4,9],construct:12,consum:4,contain:[4,5,8,10,12],content:[],context:[4,5,6],convent:2,convert:[6,7,8,9,10],convert_to_hls_lay:[1,7],convertbipolarmatmultoxnorpopcount:7,convertsigntothr:9,convertsubtoadd:7,convolutioninputgener:[1,5],copi:[4,7,8],core:1,corner:12,correct:7,correctli:[2,5,6,8],correspond:[4,5,6,12],count:6,cpp_file:10,cppbuilder:10,creat:[4,8,10],create_dataflow_partit:[1,7],createdataflowpartit:8,current:[4,12],custom:[2,4,12],custom_op:1,customop:[5,6],data:[5,8,10],data_pack:1,dataflow:[4,8,12],dataoutstrm:6,datatyp:[1,5,6,7,10],debug:4,declar:7,deep:[4,6,7,12],default_v:[5,6],default_valu:[5,6],defin:6,deploy:8,deploytopynq:8,design:[8,12],detail:12,dict:[4,5,6],dictionari:[2,4],digit:10,dimens:10,dimension:10,dir:[8,10],directori:[8,10],distr_pad:10,divis:10,dnn:12,doc:12,docker:10,docomput:6,don:7,done:2,dot:10,driver:8,dt_a:10,dt_b:10,dtype:[2,4,5,6,10],dynam:2,dynamic_input_to_npi:6,each:[2,4,7,9,10,12],effect:7,element:10,embed:4,emit:10,emphasi:12,empti:4,end:6,ensur:[6,7,8,10],enumer:[4,7],equal:[5,6],equival:9,estim:3,even:7,evenli:10,everi:7,exampl:10,exec_precompiled_singlenode_model:6,execut:[4,5,6],execute_custom_nod:1,execute_nod:[4,5,6],execute_onnx:4,execute_onnx_and_make_model:4,exist:[5,10],exit:10,expect:[2,4,5,6,8],experi:12,experiment:12,explor:[4,6,12],expos:4,extra:[2,10],extract:[2,3],factor:10,factoroutmulsignmagnitud:9,fals:[4,7,10],fan:2,fast:6,fewest:4,field:[8,10],file:[4,8,10],filenam:[4,8],find:4,find_consum:4,find_produc:4,finn:[],finn_dt:10,finnpy_to_packed_bytearrai:10,first:[2,9],fix:[7,10],flatten:10,float32:[2,4],flow:[],fold_const:1,foldconst:7,folder:[8,10],follow:[2,8,12],form:6,found:[8,12],four:10,fpga:12,fpgadataflow:[1,2,5,7],fpgapart:[6,8],framework:[6,12],fraser:6,from:[3,4,8,10,12],full:4,further:7,gambardella:6,gen_finn_dt_tensor:10,gener:[1,8,10,12],generate_param:6,get:[4,5],get_all_tensor_nam:4,get_by_nam:10,get_finn_root:10,get_folded_input_shap:6,get_folded_output_shap:6,get_hls_compatible_threshold_tensor:6,get_hls_compatible_weight_tensor:6,get_hls_datatype_str:4,get_initi:4,get_input_datatyp:6,get_instream_width:6,get_metadata_prop:4,get_nodeattr:5,get_nodeattr_typ:[5,6],get_num_possible_valu:4,get_number_output_valu:6,get_output_datatyp:6,get_outstream_width:6,get_per_tensor_fanout:2,get_smallest_poss:4,get_stream_width:6,get_template_param_valu:6,get_tensor_datatyp:4,get_tensor_fanout:4,get_tensor_shap:4,get_tensor_valueinfo:4,get_test_model_def_fxn:10,get_test_model_train:10,get_test_model_untrain:10,get_trained_checkpoint:10,get_weight_datatyp:6,getcustomop:5,github:12,give:[7,9],give_unique_node_nam:7,given:[2,3,4,5,6,10],giverandomtensornam:7,givereadabletensornam:7,giveuniquenodenam:7,global_includ:6,graph:[2,4,5,6,7,8],graphic:12,guarante:7,guid:1,hand:12,has:[2,4,7,8,10],have:[2,4,7,8,9],height:[],hex:10,hexstr:10,hexstring2npbytearrai:10,highli:12,hls_synth_res_estim:[1,2],hls_var_nam:10,hlscustomop:6,hlslib:[6,12],hlssynth_ipgen:[1,7],homepag:12,host:10,how:[1,10],human:7,imag:[],img:[],immedi:8,implement:4,includ:[4,8,12],index:[],indic:[4,5,6,7,8],infer:[4,5,6,7,10,12],infer_datatyp:1,infer_node_datatyp:[5,6],infer_shap:1,inferbinarystreamingfclay:8,inferdatatyp:7,infershap:7,infinit:7,info:[7,10],info_messag:2,inform:[2,8],infrastructur:8,inherit:7,initi:[2,4],innermost:10,inp0:5,inp1:5,inp:6,input:[2,4,5,6,7,9,10],input_dict:4,input_dtyp:10,input_fil:10,insert:[8,10],insert_tlastmark:[1,7],inserttlastmark:8,insid:5,instanc:[4,5,6,9],instanti:8,instead:10,int16:4,int2:4,int32:4,int3:4,int4:4,int8:4,integ:[4,9,10],intend:12,interfac:8,interleav:6,interleave_matrix_outer_dim_from_partit:10,intermedi:[4,7],intern:7,ipgen_singlenode_cod:6,ipgenbuild:10,is_integ:4,is_linear:2,item:10,jupyt:12,kei:4,know:7,lab:12,lambda:4,largest:4,layer:[7,8],lead:10,learn:[6,12],leeser:6,len:10,let:7,letter:10,librari:12,library_path:10,like:12,linear:[2,4],link:12,list:[2,4],look:2,loop:7,lut_estim:6,made:[4,7],magnitud:9,make:[7,8],make_build_dir:10,make_collapsed_param_fxn:9,make_deepcopi:4,make_deploy:[1,7],make_empty_exec_context:4,make_new_valueinfo_nam:4,make_project:8,make_pynq_driv:[1,7],make_pynq_proj:[1,7],make_shape_compatible_op:[5,6],makepynqdriv:8,makepynqproject:8,manipul:4,manual:7,matmul:[7,9],matrix:[6,9,10],max:[4,10],mean:10,meant:7,member:[5,6],metadata_prop:[4,8],min:[4,10],minimum:10,mixtur:2,mkdtemp:10,mode:[],model:[2,3,4,5,6,7,8,9,10],model_a:4,model_b:4,model_was_chang:7,modelproto:[4,8],modelwrapp:[1,2,7],modul:[],more:[4,7,10,12],move:9,moveaddpastmul:9,movescalaraddpastmatmul:9,movescalarmulpastmatmul:9,mul:[7,9],multidimension:10,multipl:[7,9,10],multipli:9,multithreshold:[1,8,9],must:[5,7,8,9,10],mvtu:8,n_partit:10,n_thres_step:6,name:[2,3,4,5,7,10],name_field:10,ndarrai:10,nearest:[9,10],necessari:8,need:[3,5,6,7],neg:[4,9],netnam:10,network:[6,12],neural:[6,12],new_nam:4,next:9,no_decl:10,node:[2,3,4,5,6,7,8,9],node_inputs_in_expected_ord:2,node_res_estim:6,non:8,none:[4,5,10],notebook:12,notwithstand:2,now:[2,4],npbytearrai:10,npbytearray2hexstr:10,npy:10,npy_to_dynamic_output:6,npy_to_rtlsim_input:10,number:[4,5,6,10],numpi:[6,10],numpy_to_hls_cod:10,object:[4,10],old_nam:4,onc:7,one:[2,4,8,10],onli:[2,4,7,8,9],onnx:[1,4,5,6,8],onnx_exec:1,onnx_model_proto:4,onnx_nod:[5,6],onnxruntim:4,op_nam:9,op_typ:2,oper:[4,9],ops:[2,9],order:2,orig_thres_matrix:6,orig_weight_matrix:6,origin:6,other:[4,9],otherwis:[4,7,10],out:2,out_bia:5,out_scal:5,out_shap:10,outcom:8,output:[4,5,6,7,10],output_shap:10,overlai:8,overview:12,pack:[8,10],pack_innermost_dim:10,pack_innermost_dim_as_hex_str:10,packag:[],packed_bytearrai:10,packed_bytearray_to_finnpi:10,packedbit:10,pad:10,pad_tensor_to_multiple_of:10,pad_to_dim:10,pad_to_nbit:10,page:[],pair:8,paramet:9,part:[5,10],particular:[5,6,10],partit:4,pass:[1,6],password:8,past:9,path:[6,10],per:8,perform:[5,6],permit:[5,6],place:8,platform:8,png:[],point:7,posit:[6,9,10],possibl:[4,8],pragma:6,preced:9,precid:9,precis:10,precomput:7,prefer:4,prefix:10,prepend:10,preusser:6,previous:8,prior:[7,8,10],produc:[2,4],product:10,project:[8,12],properti:[2,4],provid:4,pynq:8,pynq_driver_dir:8,python:[8,10],pyveril:10,pyverilate_stitched_ip:10,qnn:12,quantiz:[2,6,12],random:[7,10],random_str:10,randomli:10,rather:12,reach:7,read:12,read_npy_data:6,readabl:7,readthedoc:[],recommend:7,refer:12,registri:1,relat:12,remot:4,remov:[8,10],remove_by_nam:10,remove_prefix:10,renam:4,rename_tensor:4,reorder:[1,7],repeat:[7,9],repeatedli:4,replac:7,repositori:12,repositroi:[],repres:[4,10],represent:10,requir:[4,5,6],res_estim:[1,2],research:12,reset_rtlsim:6,reshap:6,resourc:3,respect:10,result:[2,3,4,7,8,9,10],return_full_exec_context:4,returned_dict:[5,6],revers:10,reverse_endian:10,reverse_inn:10,right:12,root:10,round:[9,10],round_threshold:[1,7],roundandclipthreshold:9,roundup_to_integer_multipl:10,row:6,rtlsim:[4,6],rtlsim_output_to_npi:10,run:[4,8],same:[8,10],save:[4,10],save_as_npi:6,scalar:9,scale:[],scp:8,script:8,search:[],second:[8,9],see:[9,10],seen:12,sep:6,separ:12,sequenc:10,set:[4,5,6,8,9,10],set_attribut:[],set_executable_path:10,set_initi:4,set_ipgen_path:10,set_metadata_prop:4,set_nodeattr:5,set_sim_mod:[1,7],set_tensor_datatyp:4,set_tensor_shap:4,setsimmod:[],shape:[4,5,6,7,10],shell:8,should:[2,4,7],sign:[4,7,9,10],sign_to_thr:[1,7],sim:[6,10],sim_mod:[],simd:6,sinc:[4,10],singl:[4,9,10],small:2,smallest:4,some:[4,7,12],space:12,specif:12,specifi:[4,7,10],split:[8,9,10],standard:[4,5,6],stitch:[8,10],store:[5,8,10],streamingdataflowpartit:[1,8],streamingfclayer_batch:[1,5,8],streamingmaxpool_batch:[1,5],streamlin:[1,7],string:[2,10],stringlength:10,strm_decl:6,structur:2,style:12,sub:7,subdirectori:8,subgraph:4,submodul:1,subpackag:[],subset:2,success:8,suitabl:6,surviv:10,synth_pynq_proj:[1,7],synthesi:[3,8],synthpynqproject:8,take:[2,4,7,9,10],taken:[4,8,12],target:[8,12],target_dir:8,targetbit:10,tcl:8,tcl_script:10,tempfil:10,templat:[1,5,7],temporari:10,tensor:[2,4,7,9,10],tensor_fanout:2,tensor_nam:[2,4],tensor_shap:[4,10],tensor_valu:4,termin:8,ternari:4,test:[1,7],thei:9,them:[2,8,9],thi:[2,4,5,6,7,8,10,12],thing:12,threshold:[5,6,9],time:7,tlastmark:[1,5,8],tmem:6,togeth:8,toggle_clk:6,tool:12,topolog:1,train:12,transform:[1,4],transformed_model:7,travers:2,tupl:7,two:[4,8,9,10,12],type:[4,7,10],uint16:4,uint2:[4,10],uint32:4,uint3:4,uint4:4,uint8:[4,10],umuroglu:6,under:[8,12],uniqu:7,unpack:[8,10],unpack_innermost_dim_from_hex_str:10,unsign:[4,9],until:4,updat:9,upper:12,use:12,used:[4,5,6,10,12],useful:4,user:7,usernam:8,using:[4,7,9,10,12],util:[1,4,5,6],val:10,valu:[4,5,6,8,9,10],value_info:4,valueinfo:[4,7],valueinfo_to_tensor:10,valueinfoproto:[4,10],variabl:10,vector:[9,10],verif:2,verifi:[2,5,6],verify_custom_nod:1,verify_nod:[2,5,6],via:4,view:12,visser:6,vivado:[3,4,8,12],vivado_pynq_proj:8,vivado_stitch_proj:8,wai:2,want:9,wbit:10,websit:12,weight:[4,6],when:[2,7],where:[4,5,6,8,9],whether:[2,4,5,6,7],which:[4,5,6,8,9,10,12],width:10,wmem:6,work:[4,10],wrapper:4,write:1,xdnn:12,xilinx:12,xnorpopcount:1,xnorpopcountmatmul:[5,7,8],you:7,your:7,zero:[4,9,10]},titles:["FINN - End-to-End Flow","finn package","finn.analysis package","finn.analysis.fpgadataflow package","finn.core package","finn.custom_op package","finn.custom_op.fpgadataflow package","finn.transformation package","finn.transformation.fpgadataflow package","finn.transformation.streamline package","finn.util package","Getting Started","FINN","src","Source Code"],titleterms:{absorb:9,analysi:[2,3],basic:10,batchnorm_to_affin:7,bipolar_to_xnor:7,cleanup:8,code:14,codegen_ipgen:8,codegen_ipstitch:8,codegen_npysim:8,collapse_rep:9,compil:8,content:[1,2,3,4,5,6,7,8,9,10],convert_to_hls_lay:8,convolutioninputgener:6,core:4,create_dataflow_partit:8,custom_op:[5,6],data_pack:10,datatyp:4,document:[],end:0,execute_custom_nod:4,finn:[0,1,2,3,4,5,6,7,8,9,10,12],flow:0,fold_const:7,fpgadataflow:[3,6,8,10],gener:7,get:11,guid:7,hls_synth_res_estim:3,hlssynth_ipgen:8,how:2,indic:[],infer_datatyp:7,infer_shap:7,insert_tlastmark:8,make_deploy:8,make_pynq_driv:8,make_pynq_proj:8,modelwrapp:4,modul:[1,2,3,4,5,6,7,8,9,10],multithreshold:5,onnx:10,onnx_exec:4,packag:[1,2,3,4,5,6,7,8,9,10],pass:2,registri:5,reorder:9,res_estim:3,round_threshold:9,set_sim_mod:8,sign_to_thr:9,sourc:14,src:13,start:11,streamingdataflowpartit:5,streamingfclayer_batch:6,streamingmaxpool_batch:6,streamlin:9,submodul:[2,3,4,5,6,7,8,9,10],subpackag:[1,2,5,7],synth_pynq_proj:8,tabl:[],templat:[6,8],test:10,tlastmark:6,topolog:2,transform:[7,8,9],util:10,verify_custom_nod:2,welcom:[],what:12,write:[2,7],xnorpopcount:5}})
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code.html b/docs/finn/_build/html/source_code.html
new file mode 100644
index 000000000..ba8da8634
--- /dev/null
+++ b/docs/finn/_build/html/source_code.html
@@ -0,0 +1,201 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Source Code &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+        <script type="text/javascript" src="_static/jquery.js"></script>
+        <script type="text/javascript" src="_static/underscore.js"></script>
+        <script type="text/javascript" src="_static/doctools.js"></script>
+        <script type="text/javascript" src="_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="prev" title="Getting Started" href="getting_started.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="index.html" class="icon icon-home"> FINN
+          
+
+          
+          </a>
+
+          
+            
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="end_to_end_flow.html">FINN - End-to-End Flow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Source Code</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="index.html">Docs</a> &raquo;</li>
+        
+      <li>Source Code</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="_sources/source_code.rst.txt" rel="nofollow"> View page source</a>
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="source-code">
+<h1>Source Code<a class="headerlink" href="#source-code" title="Permalink to this headline">¶</a></h1>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+      
+        <a href="getting_started.html" class="btn btn-neutral float-left" title="Getting Started" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/end_to_end_flow.rst b/docs/finn/end_to_end_flow.rst
new file mode 100644
index 000000000..482ced084
--- /dev/null
+++ b/docs/finn/end_to_end_flow.rst
@@ -0,0 +1,3 @@
+**********************
+FINN - End-to-End Flow
+**********************
diff --git a/docs/finn/getting_started.rst b/docs/finn/getting_started.rst
new file mode 100644
index 000000000..41173f451
--- /dev/null
+++ b/docs/finn/getting_started.rst
@@ -0,0 +1,3 @@
+***************
+Getting Started
+***************
diff --git a/docs/finn/index.rst b/docs/finn/index.rst
index 9a6a63725..26813ae1d 100644
--- a/docs/finn/index.rst
+++ b/docs/finn/index.rst
@@ -6,30 +6,28 @@
 ****
 FINN
 ****
+**This website is currently under construction.**
+
 FINN is an experimental framework from Xilinx Research Labs to explore deep neural network inference on FPGAs. It specifically targets quantized neural networks, with emphasis on generating dataflow-style architectures customized for each network. It is not intended to be a generic DNN accelerator like xDNN, but rather a tool for exploring the design space of DNN inference accelerators on FPGAs.
 
 What is FINN?
 =============
 'FINN' is colloquially used to refer to two separate but highly related things:
 
-* The FINN project, which includes tools for training quantized neural networks such as Brevitas, the FINN compiler, and the finn-hlslib Vivado HLS library of FPGA components for QNNs. An overview of the project can be taken from the following graphic and details can be seen on the project homepage.
+* The FINN project, which includes tools for training quantized neural networks such as Brevitas, the FINN compiler, and the finn-hlslib Vivado HLS library of FPGA components for QNNs. An overview of the project can be taken from the following graphic and details can be seen on the `FINN project homepage <https://xilinx.github.io/finn/>`_.
 
 .. image:: ../img/finn-stack.png
-   :height: 600px
    :scale: 75%
    :align: center
 
-* The repository, this Read the Docs website corresponds to. This is the FINN compiler, which is the centerpiece of the FINN project. The GitHub repository can be viewed using the link in the upper right corner.
+* The repository, this Read the Docs website corresponds to. It is about the FINN compiler, which is the centerpiece of the FINN project. The GitHub repository can be viewed using the link in the upper right corner. To learn more about the FINN compiler, use this website and for a hands-on experience the repository contains some Jupyter notebooks which can be found under this `link <https://github.com/Xilinx/finn/tree/dev/notebooks>`_.
 
 .. toctree::
    :maxdepth: 2
-   :caption: Contents:
-
+   :hidden:
 
+   end_to_end_flow
+   getting_started
+   source_code
 
-Indices and tables
-==================
 
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
diff --git a/docs/finn/source_code.rst b/docs/finn/source_code.rst
new file mode 100644
index 000000000..99d708a16
--- /dev/null
+++ b/docs/finn/source_code.rst
@@ -0,0 +1,3 @@
+***********
+Source Code
+***********
-- 
GitLab