diff --git a/docs/finn/_build/doctrees/brevitas_export.doctree b/docs/finn/_build/doctrees/brevitas_export.doctree
index 00e923802dfe3532afd11a343adef831d5c4ccd0..f380990fd60a1b776ac71956405a3733e47d8d27 100644
Binary files a/docs/finn/_build/doctrees/brevitas_export.doctree and b/docs/finn/_build/doctrees/brevitas_export.doctree differ
diff --git a/docs/finn/_build/doctrees/end_to_end_flow.doctree b/docs/finn/_build/doctrees/end_to_end_flow.doctree
index e14bda89515a9735bb09990a3d4a66f0f1922c88..c13a68e62d11c303554ae61cad7e5a50fa1ceccd 100644
Binary files a/docs/finn/_build/doctrees/end_to_end_flow.doctree and b/docs/finn/_build/doctrees/end_to_end_flow.doctree differ
diff --git a/docs/finn/_build/doctrees/environment.pickle b/docs/finn/_build/doctrees/environment.pickle
index 910c29a470a172c93984555d67bd742431dd6a4b..5febaf2cfdde0c5413638b3dfb4d9507b533b8f7 100644
Binary files a/docs/finn/_build/doctrees/environment.pickle and b/docs/finn/_build/doctrees/environment.pickle differ
diff --git a/docs/finn/_build/doctrees/nw_prep.doctree b/docs/finn/_build/doctrees/nw_prep.doctree
index 69ff3f56bb44bea1b8884dfc64d89017c3377faa..056e7611eef0bc038c6e32857e978ca15509ab6c 100644
Binary files a/docs/finn/_build/doctrees/nw_prep.doctree and b/docs/finn/_build/doctrees/nw_prep.doctree differ
diff --git a/docs/finn/_build/doctrees/pynq_deploy.doctree b/docs/finn/_build/doctrees/pynq_deploy.doctree
index 10e460682f238d396cbc14b947b7e3679aea4263..c0652f5732fef5bd3778d48bba1e1aaedadcfcc8 100644
Binary files a/docs/finn/_build/doctrees/pynq_deploy.doctree and b/docs/finn/_build/doctrees/pynq_deploy.doctree differ
diff --git a/docs/finn/_build/doctrees/verification.doctree b/docs/finn/_build/doctrees/verification.doctree
index cd9c5a3963452d52e35860897b46609925109a1a..9b33349149bca9ee596ebf0a17a4aa4d22b3c112 100644
Binary files a/docs/finn/_build/doctrees/verification.doctree and b/docs/finn/_build/doctrees/verification.doctree differ
diff --git a/docs/finn/_build/doctrees/vivado_synth.doctree b/docs/finn/_build/doctrees/vivado_synth.doctree
index 9c07fc06e4a1337c0c0f072a46af36fb96ab7af7..c8ce00f960b27922dd924d09d5f250f06fb48397 100644
Binary files a/docs/finn/_build/doctrees/vivado_synth.doctree and b/docs/finn/_build/doctrees/vivado_synth.doctree differ
diff --git a/docs/finn/_build/html/_sources/brevitas_export.rst.txt b/docs/finn/_build/html/_sources/brevitas_export.rst.txt
index 9fc5d12920c3d4d987625f16d0af3ad477c5ed9c..7d6d4b8f61e32904d2a8b7a266093cacab0c2cdd 100644
--- a/docs/finn/_build/html/_sources/brevitas_export.rst.txt
+++ b/docs/finn/_build/html/_sources/brevitas_export.rst.txt
@@ -1,3 +1,5 @@
+.. _brevitas_export:
+
 ***************
 Brevitas Export
 ***************
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
index 937b008064df6c5e7cb62c55f8d23ac244ec1a03..36f3f27ccec1f3fa9631b9f7e146b811a8543342 100644
--- a/docs/finn/_build/html/_sources/end_to_end_flow.rst.txt
+++ b/docs/finn/_build/html/_sources/end_to_end_flow.rst.txt
@@ -2,9 +2,26 @@
 End-to-End Flow
 ***************
 
-The following image shows the end-to-end flow of FINN.
+The following image shows the end-to-end flow of FINN. As you can see in the picture, FINN has a high modularity and has the property that the flow can be stopped at any point and the intermediate result can be used for further processing or other purposes. This enables a wide range of users to benefit from FINN, even if they do not use the whole flow.
 
 .. image:: ../../notebooks/finn-design-flow-example.svg
    :scale: 50%
    :align: center
 
+Flow structure
+==============
+
+The cylinder-like fields show the state of the network representation in the respective step. The rectangular fields represent the transformations that are applied to the network to achieve a certain result. The diagram is divided into five blocks, each of it includes several flow steps. The flow starts in top left corner with Brevitas export (pink block), followed by the preparation of the network (grey block) for the Vivado HLS and Vivado IPI (yellow block). There is also a section for testing and verification in software (green block) and the hardware generation and deployment on the PYNQ board (red block). For more details about the different flow sections, please have a look at the corresponding pages on this website.
+
+* :ref:`brevitas_export`
+
+* :ref:`nw_prep`
+
+* :ref:`vivado_synth`
+
+* :ref:`pynq_deploy`
+
+* :ref:`verification`
+
+
+
diff --git a/docs/finn/_build/html/_sources/nw_prep.rst.txt b/docs/finn/_build/html/_sources/nw_prep.rst.txt
index ed625788c339c0928d86e70628fc0b75a790ab12..f6911d84f2593777c5a3d511bf01bd68087b3af0 100644
--- a/docs/finn/_build/html/_sources/nw_prep.rst.txt
+++ b/docs/finn/_build/html/_sources/nw_prep.rst.txt
@@ -1,3 +1,5 @@
+.. _nw_prep:
+
 *******************
 Network Preparation
 *******************
diff --git a/docs/finn/_build/html/_sources/pynq_deploy.rst.txt b/docs/finn/_build/html/_sources/pynq_deploy.rst.txt
index afdc6246070897e6299c122832fcb56531e794e4..030f8f5e8bf096e726196e55b54851294fd6a0ae 100644
--- a/docs/finn/_build/html/_sources/pynq_deploy.rst.txt
+++ b/docs/finn/_build/html/_sources/pynq_deploy.rst.txt
@@ -1,3 +1,5 @@
+.. _pynq_deploy:
+
 ***************
 PYNQ Deployment
 ***************
diff --git a/docs/finn/_build/html/_sources/verification.rst.txt b/docs/finn/_build/html/_sources/verification.rst.txt
index df72d8eeb9a6558f2849e7b93f7dfc9b99261227..b2d3d6746f5cafd7c921f39ccd2b8e10fd182dff 100644
--- a/docs/finn/_build/html/_sources/verification.rst.txt
+++ b/docs/finn/_build/html/_sources/verification.rst.txt
@@ -1,3 +1,5 @@
+.. _verification:
+
 ***********************
 Functional Verification
 ***********************
diff --git a/docs/finn/_build/html/_sources/vivado_synth.rst.txt b/docs/finn/_build/html/_sources/vivado_synth.rst.txt
index 3dbdb190531cfe7797c9559c79511d0bfcb1b8e9..5e479c3067bb60c76984c8b49411761eb095f7b7 100644
--- a/docs/finn/_build/html/_sources/vivado_synth.rst.txt
+++ b/docs/finn/_build/html/_sources/vivado_synth.rst.txt
@@ -1,6 +1,8 @@
-*******************************
-Vivado HLS and Vivado Synthesis
-*******************************
+.. _vivado_synth:
+
+*************************
+Vivado HLS and Vivado IPI 
+*************************
 
 .. note:: **Here will be soon a detailed description of how Vivado is used in FINN.**
 
diff --git a/docs/finn/_build/html/brevitas_export.html b/docs/finn/_build/html/brevitas_export.html
index dca2a7148e6387368b5a276769deecfb0b346192..265a6bee8730e7bc4f7c162925cd3356c62d3e00 100644
--- a/docs/finn/_build/html/brevitas_export.html
+++ b/docs/finn/_build/html/brevitas_export.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
@@ -157,7 +157,7 @@
            <div itemprop="articleBody">
             
   <div class="section" id="brevitas-export">
-<h1>Brevitas Export<a class="headerlink" href="#brevitas-export" title="Permalink to this headline">¶</a></h1>
+<span id="id1"></span><h1>Brevitas Export<a class="headerlink" href="#brevitas-export" title="Permalink to this headline">¶</a></h1>
 <div class="admonition note">
 <p class="admonition-title">Note</p>
 <p><strong>Here will be soon a detailed description of brevitas export in FINN.</strong></p>
diff --git a/docs/finn/_build/html/end_to_end_flow.html b/docs/finn/_build/html/end_to_end_flow.html
index 5d52612515842b399cf7b7c0c6f3f8d69959701e..4d599394b1bff8e453992ef20b651defa1749d0f 100644
--- a/docs/finn/_build/html/end_to_end_flow.html
+++ b/docs/finn/_build/html/end_to_end_flow.html
@@ -83,11 +83,14 @@
               <ul class="current">
 <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="tutorials.html">Tutorials</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">End-to-End Flow</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">End-to-End Flow</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#flow-structure">Flow structure</a></li>
+</ul>
+</li>
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
@@ -158,8 +161,19 @@
             
   <div class="section" id="end-to-end-flow">
 <h1>End-to-End Flow<a class="headerlink" href="#end-to-end-flow" title="Permalink to this headline">¶</a></h1>
-<p>The following image shows the end-to-end flow of FINN.</p>
+<p>The following image shows the end-to-end flow of FINN. As you can see in the picture, FINN has a high modularity and has the property that the flow can be stopped at any point and the intermediate result can be used for further processing or other purposes. This enables a wide range of users to benefit from FINN, even if they do not use the whole flow.</p>
 <a class="reference internal image-reference" href="_images/finn-design-flow-example.svg"><img alt="_images/finn-design-flow-example.svg" class="align-center" src="_images/finn-design-flow-example.svg" /></a>
+<div class="section" id="flow-structure">
+<h2>Flow structure<a class="headerlink" href="#flow-structure" title="Permalink to this headline">¶</a></h2>
+<p>The cylinder-like fields show the state of the network representation in the respective step. The rectangular fields represent the transformations that are applied to the network to achieve a certain result. The diagram is divided into five blocks, each of it includes several flow steps. The flow starts in top left corner with Brevitas export (pink block), followed by the preparation of the network (grey block) for the Vivado HLS and Vivado IPI (yellow block). There is also a section for testing and verification in software (green block) and the hardware generation and deployment on the PYNQ board (red block). For more details about the different flow sections, please have a look at the corresponding pages on this website.</p>
+<ul class="simple">
+<li><p><a class="reference internal" href="brevitas_export.html#brevitas-export"><span class="std std-ref">Brevitas Export</span></a></p></li>
+<li><p><a class="reference internal" href="nw_prep.html#nw-prep"><span class="std std-ref">Network Preparation</span></a></p></li>
+<li><p><a class="reference internal" href="vivado_synth.html#vivado-synth"><span class="std std-ref">Vivado HLS and Vivado IPI</span></a></p></li>
+<li><p><a class="reference internal" href="pynq_deploy.html#pynq-deploy"><span class="std std-ref">PYNQ Deployment</span></a></p></li>
+<li><p><a class="reference internal" href="verification.html#verification"><span class="std std-ref">Functional Verification</span></a></p></li>
+</ul>
+</div>
 </div>
 
 
diff --git a/docs/finn/_build/html/genindex.html b/docs/finn/_build/html/genindex.html
index 003bbe3eee2ac9eb23c4373e48c5d0b8ff61fc0d..ce534ee6ac47372ca677246f7738c8fb8aa9548d 100644
--- a/docs/finn/_build/html/genindex.html
+++ b/docs/finn/_build/html/genindex.html
@@ -86,7 +86,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
diff --git a/docs/finn/_build/html/getting_started.html b/docs/finn/_build/html/getting_started.html
index f8e352fec60fe0f9866bcc674512e1ee5b5575aa..d6892eea139ba6e372ef107f0a506b441cfaccda 100644
--- a/docs/finn/_build/html/getting_started.html
+++ b/docs/finn/_build/html/getting_started.html
@@ -98,7 +98,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
diff --git a/docs/finn/_build/html/index.html b/docs/finn/_build/html/index.html
index 63f4505041e6fe0e5887da6e02aca24e01c327d9..b08a3f1700dfdab9bee47092d140dda9f348ced5 100644
--- a/docs/finn/_build/html/index.html
+++ b/docs/finn/_build/html/index.html
@@ -86,7 +86,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
diff --git a/docs/finn/_build/html/internals.html b/docs/finn/_build/html/internals.html
index d4f2262ce78e55165ef5e773a888f333cb0f65d7..bc2b5dd6b43117eb6275a5488813fcae2afb8a51 100644
--- a/docs/finn/_build/html/internals.html
+++ b/docs/finn/_build/html/internals.html
@@ -101,7 +101,7 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
diff --git a/docs/finn/_build/html/nw_prep.html b/docs/finn/_build/html/nw_prep.html
index d317ba4cc124c2db5ce8d8248e404626c6aaa0d8..a7d923540d3294d68d81378cbe07ddaf70d2afcc 100644
--- a/docs/finn/_build/html/nw_prep.html
+++ b/docs/finn/_build/html/nw_prep.html
@@ -35,7 +35,7 @@
   <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="Vivado HLS and Vivado Synthesis" href="vivado_synth.html" />
+    <link rel="next" title="Vivado HLS and Vivado IPI" href="vivado_synth.html" />
     <link rel="prev" title="Brevitas Export" href="brevitas_export.html" /> 
 </head>
 
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
@@ -157,7 +157,7 @@
            <div itemprop="articleBody">
             
   <div class="section" id="network-preparation">
-<h1>Network Preparation<a class="headerlink" href="#network-preparation" title="Permalink to this headline">¶</a></h1>
+<span id="nw-prep"></span><h1>Network Preparation<a class="headerlink" href="#network-preparation" title="Permalink to this headline">¶</a></h1>
 <div class="admonition note">
 <p class="admonition-title">Note</p>
 <p><strong>Here will be soon a detailed description of how the network preparation in FINN works.</strong></p>
@@ -172,7 +172,7 @@
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="vivado_synth.html" class="btn btn-neutral float-right" title="Vivado HLS and Vivado Synthesis" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="vivado_synth.html" class="btn btn-neutral float-right" title="Vivado HLS and Vivado IPI" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="brevitas_export.html" class="btn btn-neutral float-left" title="Brevitas Export" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
diff --git a/docs/finn/_build/html/objects.inv b/docs/finn/_build/html/objects.inv
index 876e74375478a1aeffd14a94a830d84b48fc5eda..1051aeb5e7bc103a1a5f7c03e99d6ed53aa380e7 100644
Binary files a/docs/finn/_build/html/objects.inv and b/docs/finn/_build/html/objects.inv differ
diff --git a/docs/finn/_build/html/py-modindex.html b/docs/finn/_build/html/py-modindex.html
index 7402105af98531dcf87578552443c92e0b55b898..e06419ba2a62f8cf614c9f4547e186793a76466a 100644
--- a/docs/finn/_build/html/py-modindex.html
+++ b/docs/finn/_build/html/py-modindex.html
@@ -88,7 +88,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
diff --git a/docs/finn/_build/html/pynq_deploy.html b/docs/finn/_build/html/pynq_deploy.html
index 67a5b904cce9fe2bef64ae8cf7ebfb4b70641427..e78519b46a981797f7ada3d9e6350f7952d5eb6b 100644
--- a/docs/finn/_build/html/pynq_deploy.html
+++ b/docs/finn/_build/html/pynq_deploy.html
@@ -36,7 +36,7 @@
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="Functional Verification" href="verification.html" />
-    <link rel="prev" title="Vivado HLS and Vivado Synthesis" href="vivado_synth.html" /> 
+    <link rel="prev" title="Vivado HLS and Vivado IPI" href="vivado_synth.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
@@ -157,7 +157,7 @@
            <div itemprop="articleBody">
             
   <div class="section" id="pynq-deployment">
-<h1>PYNQ Deployment<a class="headerlink" href="#pynq-deployment" title="Permalink to this headline">¶</a></h1>
+<span id="pynq-deploy"></span><h1>PYNQ Deployment<a class="headerlink" href="#pynq-deployment" title="Permalink to this headline">¶</a></h1>
 <div class="admonition note">
 <p class="admonition-title">Note</p>
 <p><strong>On this page you can find soon more details about the PYNQ deployment in FINN.</strong></p>
@@ -175,7 +175,7 @@
         <a href="verification.html" class="btn btn-neutral float-right" title="Functional Verification" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="vivado_synth.html" class="btn btn-neutral float-left" title="Vivado HLS and Vivado Synthesis" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="vivado_synth.html" class="btn btn-neutral float-left" title="Vivado HLS and Vivado IPI" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/docs/finn/_build/html/search.html b/docs/finn/_build/html/search.html
index b2b33038f79d12a796497cbc2e2e95b08c1d45b2..dfde29358756b924761ae26d55d07d8e3ddab939 100644
--- a/docs/finn/_build/html/search.html
+++ b/docs/finn/_build/html/search.html
@@ -86,7 +86,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
diff --git a/docs/finn/_build/html/searchindex.js b/docs/finn/_build/html/searchindex.js
index b86ad55e3dcc52cc7f58cc3248627f0604f24191..bf7beafc5d317f8eb90baaed6f0034b3cac3b47b 100644
--- a/docs/finn/_build/html/searchindex.js
+++ b/docs/finn/_build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["brevitas_export","end_to_end_flow","genindex","getting_started","index","internals","nw_prep","pynq_deploy","source_code/finn","source_code/finn.analysis","source_code/finn.analysis.fpgadataflow","source_code/finn.core","source_code/finn.custom_op","source_code/finn.custom_op.fpgadataflow","source_code/finn.transformation","source_code/finn.transformation.fpgadataflow","source_code/finn.transformation.streamline","source_code/finn.util","source_code/modules","tutorials","verification","vivado_synth"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.index":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:56},filenames:["brevitas_export.rst","end_to_end_flow.rst","genindex.rst","getting_started.rst","index.rst","internals.rst","nw_prep.rst","pynq_deploy.rst","source_code/finn.rst","source_code/finn.analysis.rst","source_code/finn.analysis.fpgadataflow.rst","source_code/finn.core.rst","source_code/finn.custom_op.rst","source_code/finn.custom_op.fpgadataflow.rst","source_code/finn.transformation.rst","source_code/finn.transformation.fpgadataflow.rst","source_code/finn.transformation.streamline.rst","source_code/finn.util.rst","source_code/modules.rst","tutorials.rst","verification.rst","vivado_synth.rst"],objects:{"finn.analysis":{topology:[9,0,0,"-"],verify_custom_nodes:[9,0,0,"-"]},"finn.analysis.fpgadataflow":{hls_synth_res_estimation:[10,0,0,"-"],res_estimation:[10,0,0,"-"]},"finn.analysis.fpgadataflow.hls_synth_res_estimation":{hls_synth_res_estimation:[10,1,1,""]},"finn.analysis.fpgadataflow.res_estimation":{res_estimation:[10,1,1,""]},"finn.analysis.topology":{all_tensors_f32:[9,1,1,""],get_per_tensor_fanouts:[9,1,1,""],is_linear:[9,1,1,""],node_inputs_in_expected_order:[9,1,1,""]},"finn.analysis.verify_custom_nodes":{verify_nodes:[9,1,1,""]},"finn.core":{datatype:[11,0,0,"-"],execute_custom_node:[11,0,0,"-"],modelwrapper:[11,0,0,"-"],onnx_exec:[11,0,0,"-"],remote_exec:[11,0,0,"-"],rtlsim_exec:[11,0,0,"-"]},"finn.core.datatype":{DataType:[11,2,1,""]},"finn.core.datatype.DataType":{BINARY:[11,3,1,""],BIPOLAR:[11,3,1,""],FLOAT32:[11,3,1,""],INT16:[11,3,1,""],INT2:[11,3,1,""],INT32:[11,3,1,""],INT3:[11,3,1,""],INT4:[11,3,1,""],INT8:[11,3,1,""],TERNARY:[11,3,1,""],UINT16:[11,3,1,""],UINT2:[11,3,1,""],UINT32:[11,3,1,""],UINT3:[11,3,1,""],UINT4:[11,3,1,""],UINT8:[11,3,1,""],allowed:[11,4,1,""],bitwidth:[11,4,1,""],get_hls_datatype_str:[11,4,1,""],get_num_possible_values:[11,4,1,""],get_smallest_possible:[11,4,1,""],is_integer:[11,4,1,""],max:[11,4,1,""],min:[11,4,1,""],signed:[11,4,1,""]},"finn.core.execute_custom_node":{execute_custom_node:[11,1,1,""]},"finn.core.modelwrapper":{ModelWrapper:[11,2,1,""]},"finn.core.modelwrapper.ModelWrapper":{analysis:[11,4,1,""],check_all_tensor_shapes_specified:[11,4,1,""],check_compatibility:[11,4,1,""],find_consumer:[11,4,1,""],find_producer:[11,4,1,""],get_all_tensor_names:[11,4,1,""],get_initializer:[11,4,1,""],get_metadata_prop:[11,4,1,""],get_tensor_datatype:[11,4,1,""],get_tensor_fanout:[11,4,1,""],get_tensor_shape:[11,4,1,""],get_tensor_valueinfo:[11,4,1,""],graph:[11,4,1,""],make_empty_exec_context:[11,4,1,""],make_new_valueinfo_name:[11,4,1,""],model:[11,4,1,""],rename_tensor:[11,4,1,""],save:[11,4,1,""],set_initializer:[11,4,1,""],set_metadata_prop:[11,4,1,""],set_tensor_datatype:[11,4,1,""],set_tensor_shape:[11,4,1,""],transform:[11,4,1,""]},"finn.core.onnx_exec":{compare_execution:[11,1,1,""],execute_node:[11,1,1,""],execute_onnx:[11,1,1,""],execute_onnx_and_make_model:[11,1,1,""]},"finn.core.remote_exec":{remote_exec:[11,1,1,""]},"finn.core.rtlsim_exec":{rtlsim_exec:[11,1,1,""]},"finn.custom_op":{CustomOp:[12,2,1,""],fpgadataflow:[13,0,0,"-"],multithreshold:[12,0,0,"-"],registry:[12,0,0,"-"],streamingdataflowpartition:[12,0,0,"-"],xnorpopcount:[12,0,0,"-"]},"finn.custom_op.CustomOp":{execute_node:[12,4,1,""],get_nodeattr:[12,4,1,""],get_nodeattr_types:[12,4,1,""],infer_node_datatype:[12,4,1,""],make_shape_compatible_op:[12,4,1,""],set_nodeattr:[12,4,1,""],verify_node:[12,4,1,""]},"finn.custom_op.fpgadataflow":{HLSCustomOp:[13,2,1,""],convolutioninputgenerator:[13,0,0,"-"],streamingfclayer_batch:[13,0,0,"-"],streamingmaxpool_batch:[13,0,0,"-"],templates:[13,0,0,"-"],tlastmarker:[13,0,0,"-"]},"finn.custom_op.fpgadataflow.HLSCustomOp":{blackboxfunction:[13,4,1,""],bram_estimation:[13,4,1,""],code_generation_ipgen:[13,4,1,""],code_generation_npysim:[13,4,1,""],compile_singlenode_code:[13,4,1,""],dataoutstrm:[13,4,1,""],defines:[13,4,1,""],docompute:[13,4,1,""],dynamic_input_to_npy:[13,4,1,""],exec_precompiled_singlenode_model:[13,4,1,""],execute_node:[13,4,1,""],generate_params:[13,4,1,""],get_folded_input_shape:[13,4,1,""],get_folded_output_shape:[13,4,1,""],get_instream_width:[13,4,1,""],get_nodeattr_types:[13,4,1,""],get_number_output_values:[13,4,1,""],get_outstream_width:[13,4,1,""],global_includes:[13,4,1,""],ipgen_singlenode_code:[13,4,1,""],lut_estimation:[13,4,1,""],node_res_estimation:[13,4,1,""],npy_to_dynamic_output:[13,4,1,""],pragmas:[13,4,1,""],read_npy_data:[13,4,1,""],reset_rtlsim:[13,4,1,""],rtlsim:[13,4,1,""],save_as_npy:[13,4,1,""],strm_decl:[13,4,1,""],toggle_clk:[13,4,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator":{ConvolutionInputGenerator:[13,2,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator":{blackboxfunction:[13,4,1,""],bram_estimation:[13,4,1,""],dataoutstrm:[13,4,1,""],defines:[13,4,1,""],docompute:[13,4,1,""],execute_node:[13,4,1,""],get_input_datatype:[13,4,1,""],get_nodeattr_types:[13,4,1,""],get_number_output_values:[13,4,1,""],get_output_datatype:[13,4,1,""],get_stream_width:[13,4,1,""],global_includes:[13,4,1,""],infer_node_datatype:[13,4,1,""],lut_estimation:[13,4,1,""],make_shape_compatible_op:[13,4,1,""],pragmas:[13,4,1,""],read_npy_data:[13,4,1,""],save_as_npy:[13,4,1,""],strm_decl:[13,4,1,""],verify_node:[13,4,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch":{StreamingFCLayer_Batch:[13,2,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch":{blackboxfunction:[13,4,1,""],bram_estimation:[13,4,1,""],calc_tmem:[13,4,1,""],calc_wmem:[13,4,1,""],dataoutstrm:[13,4,1,""],defines:[13,4,1,""],docompute:[13,4,1,""],execute_node:[13,4,1,""],generate_params:[13,4,1,""],get_folded_input_shape:[13,4,1,""],get_folded_output_shape:[13,4,1,""],get_hls_compatible_threshold_tensor:[13,4,1,""],get_hls_compatible_weight_tensor:[13,4,1,""],get_input_datatype:[13,4,1,""],get_instream_width:[13,4,1,""],get_nodeattr_types:[13,4,1,""],get_number_output_values:[13,4,1,""],get_output_datatype:[13,4,1,""],get_outstream_width:[13,4,1,""],get_template_param_values:[13,4,1,""],get_weight_datatype:[13,4,1,""],global_includes:[13,4,1,""],infer_node_datatype:[13,4,1,""],lut_estimation:[13,4,1,""],make_shape_compatible_op:[13,4,1,""],pragmas:[13,4,1,""],read_npy_data:[13,4,1,""],save_as_npy:[13,4,1,""],strm_decl:[13,4,1,""],verify_node:[13,4,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch":{StreamingMaxPool_Batch:[13,2,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch":{blackboxfunction:[13,4,1,""],bram_estimation:[13,4,1,""],dataoutstrm:[13,4,1,""],defines:[13,4,1,""],docompute:[13,4,1,""],get_nodeattr_types:[13,4,1,""],get_number_output_values:[13,4,1,""],global_includes:[13,4,1,""],infer_node_datatype:[13,4,1,""],lut_estimation:[13,4,1,""],make_shape_compatible_op:[13,4,1,""],pragmas:[13,4,1,""],read_npy_data:[13,4,1,""],save_as_npy:[13,4,1,""],strm_decl:[13,4,1,""],verify_node:[13,4,1,""]},"finn.custom_op.fpgadataflow.tlastmarker":{TLastMarker:[13,2,1,""]},"finn.custom_op.fpgadataflow.tlastmarker.TLastMarker":{blackboxfunction:[13,4,1,""],dataoutstrm:[13,4,1,""],defines:[13,4,1,""],docompute:[13,4,1,""],execute_node:[13,4,1,""],get_folded_input_shape:[13,4,1,""],get_folded_output_shape:[13,4,1,""],get_instream_width:[13,4,1,""],get_nodeattr_types:[13,4,1,""],get_number_output_values:[13,4,1,""],get_outstream_width:[13,4,1,""],global_includes:[13,4,1,""],infer_node_datatype:[13,4,1,""],make_shape_compatible_op:[13,4,1,""],pragmas:[13,4,1,""],read_npy_data:[13,4,1,""],save_as_npy:[13,4,1,""],strm_decl:[13,4,1,""],verify_node:[13,4,1,""]},"finn.custom_op.multithreshold":{MultiThreshold:[12,2,1,""],compare:[12,1,1,""],multithreshold:[12,1,1,""]},"finn.custom_op.multithreshold.MultiThreshold":{execute_node:[12,4,1,""],get_nodeattr_types:[12,4,1,""],infer_node_datatype:[12,4,1,""],make_shape_compatible_op:[12,4,1,""],verify_node:[12,4,1,""]},"finn.custom_op.registry":{getCustomOp:[12,1,1,""]},"finn.custom_op.streamingdataflowpartition":{StreamingDataflowPartition:[12,2,1,""]},"finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition":{execute_node:[12,4,1,""],get_nodeattr_types:[12,4,1,""],infer_node_datatype:[12,4,1,""],make_shape_compatible_op:[12,4,1,""],verify_node:[12,4,1,""]},"finn.custom_op.xnorpopcount":{XnorPopcountMatMul:[12,2,1,""],xnorpopcountmatmul:[12,1,1,""]},"finn.custom_op.xnorpopcount.XnorPopcountMatMul":{execute_node:[12,4,1,""],get_nodeattr_types:[12,4,1,""],infer_node_datatype:[12,4,1,""],make_shape_compatible_op:[12,4,1,""],verify_node:[12,4,1,""]},"finn.transformation":{batchnorm_to_affine:[14,0,0,"-"],bipolar_to_xnor:[14,0,0,"-"],fold_constants:[14,0,0,"-"],general:[14,0,0,"-"],infer_datatypes:[14,0,0,"-"],infer_shapes:[14,0,0,"-"],streamline:[16,0,0,"-"]},"finn.transformation.batchnorm_to_affine":{BatchNormToAffine:[14,2,1,""]},"finn.transformation.batchnorm_to_affine.BatchNormToAffine":{apply:[14,4,1,""]},"finn.transformation.bipolar_to_xnor":{ConvertBipolarMatMulToXnorPopcount:[14,2,1,""]},"finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount":{apply:[14,4,1,""]},"finn.transformation.fold_constants":{FoldConstants:[14,2,1,""]},"finn.transformation.fold_constants.FoldConstants":{apply:[14,4,1,""]},"finn.transformation.fpgadataflow":{cleanup:[15,0,0,"-"],codegen_ipgen:[15,0,0,"-"],codegen_ipstitch:[15,0,0,"-"],codegen_npysim:[15,0,0,"-"],compile:[15,0,0,"-"],convert_to_hls_layers:[15,0,0,"-"],create_dataflow_partition:[15,0,0,"-"],hlssynth_ipgen:[15,0,0,"-"],insert_tlastmarker:[15,0,0,"-"],make_deployment:[15,0,0,"-"],make_pynq_driver:[15,0,0,"-"],make_pynq_proj:[15,0,0,"-"],replace_verilog_relpaths:[15,0,0,"-"],set_exec_mode:[15,0,0,"-"],synth_pynq_proj:[15,0,0,"-"],templates:[15,0,0,"-"]},"finn.transformation.fpgadataflow.cleanup":{CleanUp:[15,2,1,""]},"finn.transformation.fpgadataflow.cleanup.CleanUp":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen":{CodeGen_ipgen:[15,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch":{CodeGen_ipstitch:[15,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.codegen_npysim":{CodeGen_npysim:[15,2,1,""]},"finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.compile":{Compile:[15,2,1,""]},"finn.transformation.fpgadataflow.compile.Compile":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers":{InferBinaryStreamingFCLayer:[15,2,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition":{CreateDataflowPartition:[15,2,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen":{HLSSynth_IPGen:[15,2,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker":{InsertTLastMarker:[15,2,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.make_deployment":{DeployToPYNQ:[15,2,1,""]},"finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver":{MakePYNQDriver:[15,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj":{MakePYNQProject:[15,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.replace_verilog_relpaths":{ReplaceVerilogRelPaths:[15,2,1,""]},"finn.transformation.fpgadataflow.replace_verilog_relpaths.ReplaceVerilogRelPaths":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.set_exec_mode":{SetExecMode:[15,2,1,""]},"finn.transformation.fpgadataflow.set_exec_mode.SetExecMode":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj":{SynthPYNQProject:[15,2,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject":{apply:[15,4,1,""]},"finn.transformation.general":{ConvertSubToAdd:[14,2,1,""],GiveRandomTensorNames:[14,2,1,""],GiveReadableTensorNames:[14,2,1,""],GiveUniqueNodeNames:[14,2,1,""]},"finn.transformation.general.ConvertSubToAdd":{apply:[14,4,1,""]},"finn.transformation.general.GiveRandomTensorNames":{apply:[14,4,1,""]},"finn.transformation.general.GiveReadableTensorNames":{apply:[14,4,1,""]},"finn.transformation.general.GiveUniqueNodeNames":{apply:[14,4,1,""]},"finn.transformation.infer_datatypes":{InferDataTypes:[14,2,1,""]},"finn.transformation.infer_datatypes.InferDataTypes":{apply:[14,4,1,""]},"finn.transformation.infer_shapes":{InferShapes:[14,2,1,""]},"finn.transformation.infer_shapes.InferShapes":{apply:[14,4,1,""]},"finn.transformation.streamline":{Streamline:[16,2,1,""],absorb:[16,0,0,"-"],collapse_repeated:[16,0,0,"-"],reorder:[16,0,0,"-"],round_thresholds:[16,0,0,"-"],sign_to_thres:[16,0,0,"-"]},"finn.transformation.streamline.Streamline":{apply:[16,4,1,""]},"finn.transformation.streamline.absorb":{Absorb1BitMulIntoMatMul:[16,2,1,""],AbsorbAddIntoMultiThreshold:[16,2,1,""],AbsorbMulIntoMultiThreshold:[16,2,1,""],FactorOutMulSignMagnitude:[16,2,1,""]},"finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul":{apply:[16,4,1,""]},"finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold":{apply:[16,4,1,""]},"finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold":{apply:[16,4,1,""]},"finn.transformation.streamline.absorb.FactorOutMulSignMagnitude":{apply:[16,4,1,""]},"finn.transformation.streamline.collapse_repeated":{CollapseRepeatedAdd:[16,2,1,""],CollapseRepeatedMul:[16,2,1,""],CollapseRepeatedOp:[16,2,1,""]},"finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp":{apply:[16,4,1,""]},"finn.transformation.streamline.reorder":{MoveAddPastMul:[16,2,1,""],MoveScalarAddPastMatMul:[16,2,1,""],MoveScalarMulPastMatMul:[16,2,1,""]},"finn.transformation.streamline.reorder.MoveAddPastMul":{apply:[16,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarAddPastMatMul":{apply:[16,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarMulPastMatMul":{apply:[16,4,1,""]},"finn.transformation.streamline.round_thresholds":{RoundAndClipThresholds:[16,2,1,""]},"finn.transformation.streamline.round_thresholds.RoundAndClipThresholds":{apply:[16,4,1,""]},"finn.transformation.streamline.sign_to_thres":{ConvertSignToThres:[16,2,1,""]},"finn.transformation.streamline.sign_to_thres.ConvertSignToThres":{apply:[16,4,1,""]},"finn.util":{basic:[17,0,0,"-"],data_packing:[17,0,0,"-"],fpgadataflow:[17,0,0,"-"],onnx:[17,0,0,"-"],test:[17,0,0,"-"]},"finn.util.basic":{CppBuilder:[17,2,1,""],calculate_signed_dot_prod_range:[17,1,1,""],gen_finn_dt_tensor:[17,1,1,""],get_by_name:[17,1,1,""],get_finn_root:[17,1,1,""],interleave_matrix_outer_dim_from_partitions:[17,1,1,""],make_build_dir:[17,1,1,""],pad_tensor_to_multiple_of:[17,1,1,""],random_string:[17,1,1,""],remove_by_name:[17,1,1,""],roundup_to_integer_multiple:[17,1,1,""]},"finn.util.basic.CppBuilder":{append_includes:[17,4,1,""],append_sources:[17,4,1,""],build:[17,4,1,""],set_executable_path:[17,4,1,""]},"finn.util.data_packing":{array2hexstring:[17,1,1,""],finnpy_to_packed_bytearray:[17,1,1,""],hexstring2npbytearray:[17,1,1,""],npbytearray2hexstring:[17,1,1,""],npy_to_rtlsim_input:[17,1,1,""],numpy_to_hls_code:[17,1,1,""],pack_innermost_dim_as_hex_string:[17,1,1,""],packed_bytearray_to_finnpy:[17,1,1,""],rtlsim_output_to_npy:[17,1,1,""],unpack_innermost_dim_from_hex_string:[17,1,1,""]},"finn.util.fpgadataflow":{IPGenBuilder:[17,2,1,""],pyverilate_get_liveness_threshold_cycles:[17,1,1,""],pyverilate_stitched_ip:[17,1,1,""]},"finn.util.fpgadataflow.IPGenBuilder":{append_tcl:[17,4,1,""],build:[17,4,1,""],set_ipgen_path:[17,4,1,""]},"finn.util.onnx":{valueinfo_to_tensor:[17,1,1,""]},"finn.util.test":{get_test_model_def_fxn:[17,1,1,""],get_test_model_trained:[17,1,1,""],get_test_model_untrained:[17,1,1,""],get_trained_checkpoint:[17,1,1,""]},finn:{custom_op:[12,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":17,"0x07":17,"0x0e":17,"0x0f01":17,"0xb":17,"0xe":17,"abstract":[12,13],"boolean":11,"case":5,"class":[5,11,14,15,16,17],"const":14,"default":[5,12,13],"enum":11,"final":11,"float":[5,17],"function":[3,11,12,13,17],"import":[3,5],"int":15,"new":[3,4,11,12,13],"public":4,"return":[5,9,10,11,12,13,16,17],"static":9,"throw":17,"true":[11,17],"try":3,"var":13,"while":5,For:[5,15,16],HLS:[4,11,12,15,17],IPs:15,PEs:13,The:[1,3,4,5,8,11,12,15,16,17],There:3,These:5,Use:[11,17],abc:12,abit:17,abort:13,about:[4,5,7,9,11,14,15],abov:[3,5],absolut:15,absorb1bitmulintomatmul:16,absorb:15,absorbaddintomultithreshold:16,absorbmulintomultithreshold:16,acceler:[3,15],access:3,accord:[13,17],account:11,action:15,activ:[11,17],actual:5,add:[14,16,17],added:13,adder:16,adding:3,addit:[3,5,13,15],addition:16,address:15,admin:3,after:[5,13,17],aim:16,all:[3,5,9,11,12,13,14,15,17],all_tensors_f32:9,allow:11,almost:5,alreadi:[5,15,19],also:[3,5,12,13,15],amount:17,analysi:[8,11,18],analysis_fxn:11,analyz:5,anaylsis_fxn:11,ani:[3,11,12,14,15,17],annot:[9,11,12,13],anoth:15,api:5,append_includ:17,append_sourc:17,append_tcl:17,appli:[5,11,14,15,16],appropri:[3,14],arbitrari:17,architectur:4,argument:[3,5,15,17],around:[5,11],arrai:17,array2hexstr:17,arxiv:16,assign:11,associ:[11,14],assum:17,attribut:[9,12,13,15],attribute_nam:[12,13],attributeproto:[12,13],avail:19,back:[3,13],backend:[5,15],base:[11,14,15,16,17],bash:[13,17],basic:13,batchnorm:14,batchnormtoaffin:14,been:[12,15],befor:17,below:[5,8],between:[13,17],bias:12,binari:[11,13,15,16,17],bipolar:[5,11,12,13,14,16,17],bit:[5,11,17],bitfil:[3,12],bitwidth:11,blackbock:13,blackboxfunct:13,block:[5,13,15,17],blott:13,board:[11,15],bool:9,both:17,bram:13,bram_estim:13,brevita:[4,17],brien:13,browser:3,build:[13,17],built:9,calc_tmem:13,calc_wmem:13,calcul:13,calculate_signed_dot_prod_rang:17,call:[3,11,13,15],can:[3,4,5,7,11,13,15,16,17],centerpiec:4,certain:5,chang:[3,5,11],chapter:[9,11,14],check:[5,9,11,12,13],check_all_tensor_shapes_specifi:11,check_compat:11,client:3,clk:[13,15],clock:13,clone:[3,17],code:[5,13,15,17,18],code_gen_dir:17,code_gen_dir_ipgen:15,code_gen_dir_npysim:15,code_generation_ipgen:13,code_generation_npysim:13,collaps:16,collapserepeatedadd:16,collapserepeatedmul:16,collapserepeatedop:16,collect:[3,15],colloqui:4,come:[3,9],command:[3,5,13,17],commun:4,compar:[11,12],compare_execut:11,compare_fxn:11,comparison:12,compat:[11,12,13],compil:[4,5,13,17],compile_singlenode_cod:13,complet:3,compon:[4,5],comput:[3,11,13],configur:3,consecut:16,constant:[5,9,11,16],construct:4,consum:[5,11],contain:[3,4,5,11,12,13,15,17],context:[11,12,13],contribut:4,convert:[3,13,14,15,16,17],convertbipolarmatmultoxnorpopcount:14,convertsigntothr:16,convertsubtoadd:14,copi:[11,15],core:[5,8,15,18],correct:[5,14,17],correctli:[3,9,12,13,15],correspond:[4,11,12,13],count:13,cpp_file:17,cppbuilder:[13,17],creat:[3,11,15,17],createdataflowpartit:15,current:[4,5,11,13],custom:[3,4,8,9,11,15,18],custom_op:5,customop:[5,12,13],cycl:[13,17],data:[11,12,13,15,17],dataflow:[4,11,15],dataoutstrm:13,datatyp:[5,12,13,14,17],datayp:5,debug:11,declar:13,deep:[4,11,13],default_v:[12,13],default_valu:[12,13],defin:[5,13],deliveri:3,depend:3,deploi:3,deploy:15,deploytopynq:15,describ:5,descript:[0,5,6,20,21],design:[3,15],detail:[0,4,5,6,7,9,11,14,20,21],determin:5,develop:4,dict:[11,12,13],dictionari:[5,9,11,13],differ:[3,8,12,13],digit:17,dimens:17,dimension:17,dir:[15,17],directli:[4,5],directori:[3,15,17],distr_pad:17,divid:8,divis:17,dnn:5,doc:4,docker:17,dockerfil:3,docomput:13,document:5,doe:[3,5,11,12],domain:5,done:9,dot:17,down:[3,5,11],driver:15,dt_a:17,dt_b:17,dtype:[5,9,11,12,13,17],dynam:9,dynamic_input_to_npi:13,each:[4,9,11,14,15,16,17],easier:5,easili:5,editor:3,either:3,element:17,embed:11,emit:17,emphasi:4,empti:11,end:13,ensur:[13,14,15,17],entir:3,entri:17,enumer:14,environ:3,equal:[12,13],equival:16,estim:[10,13],even:5,evenli:17,event:3,eventu:5,everi:[3,5,12,13,14,15],everyth:3,exampl:[3,4,5,17],excel:3,except:17,exec_mod:15,exec_precompiled_singlenode_model:13,execut:[11,12,13,15,17],executable_path:[15,17],execute_nod:[11,12,13],execute_onnx:[11,15],execute_onnx_and_make_model:11,execution_context:11,exist:[5,12,13,17],exit:17,expect:[5,9,11,12,13,15],experi:4,experiment:4,explor:[4,11,13],expos:11,extens:3,extra:[3,9,17],extract:[5,10],f5c6bd32ae93ec103a88152214baedff4ce1850d81065bfc:3,factor:17,factoroutmulsignmagnitud:16,fals:[11,17],familiar:[3,5],fan:9,fast:13,feel:19,fewer:11,fewest:11,field:[5,15,17],file:[3,11,13,15,17],filenam:[11,15],fill:[12,13],find:[5,7,11],find_consum:[5,11],find_produc:[5,11],finish:17,finn:[0,1,6,7,8,19,20,21],finn_dt:17,finn_dtyp:5,finnpy_to_packed_bytearrai:17,first:[5,9,16],fix:17,flag:5,flatten:17,float32:[5,9,11],fold:13,foldconst:14,folder:[3,15,17],follow:[1,3,4,5,9,11,12,15],form:13,format:[5,13],forward:3,found:[4,15],four:17,fpga:[3,4],fpgadataflow:[9,12,14],fpgapart:[13,15],framework:[4,13],fraser:13,free:19,from:[3,4,5,10,11,13,15,17],full:[5,11],gambardella:13,gen_finn_dt_tensor:17,gener:[4,13,15,17],generate_param:13,get:[5,11,12,13,15],get_all_tensor_nam:[5,11],get_by_nam:17,get_finn_root:17,get_folded_input_shap:13,get_folded_output_shap:13,get_hls_compatible_threshold_tensor:13,get_hls_compatible_weight_tensor:13,get_hls_datatype_str:11,get_initi:[5,11],get_input_datatyp:13,get_instream_width:13,get_metadata_prop:11,get_nodeattr:12,get_nodeattr_typ:[12,13],get_num_possible_valu:11,get_number_output_valu:13,get_output_datatyp:13,get_outstream_width:13,get_per_tensor_fanout:9,get_smallest_poss:11,get_stream_width:13,get_template_param_valu:13,get_tensor_datatyp:[5,11],get_tensor_fanout:11,get_tensor_shap:[5,11],get_tensor_valueinfo:11,get_test_model_def_fxn:17,get_test_model_train:17,get_test_model_untrain:17,get_trained_checkpoint:17,get_weight_datatyp:13,getcustomop:12,github:[3,4],give:[3,5,14,16],give_unique_node_nam:14,given:[5,9,10,11,12,13,17],giverandomtensornam:14,givereadabletensornam:14,giveuniquenodenam:14,global:13,global_includ:13,graph:[5,9,11,12,13,14,15],graphic:4,greater:12,group:12,guarante:17,guid:19,hand:4,happen:3,hardwar:5,has:[3,5,9,11,13,14,15,17],have:[3,5,9,11,12,13,15,16],help:[3,5],helper:12,here:[0,6,20,21],hex:17,hexstr:17,hexstring2npbytearrai:17,high:[3,5],highli:4,hls:13,hls_var_nam:17,hlscustomop:13,hlslib:[4,13],homepag:4,host:[3,17],how:[5,6,17,21],howev:5,howtoanalysispass:5,howtotransformationpass:5,howtoworkwithonnx:5,http:3,human:[5,14],identifi:5,imag:[1,13],immedi:15,implement:[11,13,15],includ:[4,11,13,15],include_path:17,index:5,indic:[5,11,12,13,15],individu:5,infer:[3,4,5,11,12,13,14,17],infer_node_datatyp:[12,13],inferbinarystreamingfclay:15,inferdatatyp:14,infershap:14,info:[14,17],info_messag:9,inform:[5,15],infrastructur:15,initi:[3,5,9,11],innermost:17,inp0:12,inp1:12,inp:13,input:[5,9,11,12,13,14,16,17],input_dict:11,input_dtyp:17,input_fil:17,insert:[13,15,17],inserttlastmark:15,insid:[3,5,12],instal:3,instanc:[11,12,16],instant:17,instanti:15,instead:17,int16:11,int2:11,int32:11,int3:11,int4:11,int8:11,integ:[5,11,12,16,17],interest:[5,11],interfac:15,interleav:[13,17],interleave_matrix_outer_dim_from_partit:17,intermedi:[11,14],intern:[9,11,14],interv:12,involv:3,ipgen:13,ipgen_path:[15,17],ipgen_singlenode_cod:13,ipgenbuild:[13,17],is_integ:11,is_linear:9,item:17,its:[5,12],itself:12,jupyt:[4,5,19],kei:11,kind:15,know:[9,14],lab:4,lambda:11,largest:11,launch:3,layer:[14,15],lead:17,learn:[4,13],leeser:13,len:[5,17],letter:17,librari:[4,17],library_path:17,like:3,linear:[9,11],link:[3,4,19],list:[4,5,8,9,11,17],load:17,locat:3,look:[3,4,5,9,11,14,19],loop:13,low:5,lut:13,lut_estim:13,made:11,magnitud:16,mai:[3,5],make:[3,5,13,15],make_build_dir:17,make_collapsed_param_fxn:16,make_deepcopi:11,make_empty_exec_context:11,make_new_valueinfo_nam:11,make_project:15,make_shape_compatible_op:[12,13],makepynqdriv:15,makepynqproject:15,mani:[3,5],manipul:[5,11],map:12,mark:[5,13],matmul:[14,16],matrix:[12,13,16,17],max:[11,17],mean:[5,17],meant:5,member:[12,13,17],mention:5,meta:12,metadata:11,metadata_prop:[11,15],method:[12,13,20],min:[11,17],minimum:17,minut:15,mixtur:9,mkdtemp:17,mode:[3,15],model:[5,9,10,11,12,13,14,15,16,17,20],model_a:11,model_b:11,model_was_chang:5,modelproto:[5,11,15],modul:[5,18],modular:4,more:[5,7,9,11,14,17],mount:3,move:16,moveaddpastmul:16,movescalaraddpastmatmul:16,movescalarmulpastmatmul:16,mul:[14,16],multidimension:17,multipl:[12,16,17],multipli:16,multithreshold:[15,16],must:[12,15,16,17],mvtu:15,n_partit:17,n_thres_step:13,name:[5,10,11,12,14,17],name_field:17,ndarrai:17,nearest:[16,17],necessari:15,need:[5,10,12,13],neg:[11,16],netnam:17,netron:3,network:[3,4,5,13,17],neural:[4,5,13],neuron:13,new_nam:11,next:16,no_decl:17,node:[9,10,11,14,15,16,18],node_inputs_in_expected_ord:9,node_res_estim:13,nodeproto:5,non:15,none:[5,11,12,17],note:[3,5,12],notebook:[4,5,19],notwithstand:9,now:[9,11],npbytearrai:17,npbytearray2hexstr:17,npy:[13,17],npy_to_dynamic_output:13,npy_to_rtlsim_input:17,npysim:[13,15],number:[5,11,12,13,17],numpi:[13,17],numpy_to_hls_cod:17,object:[11,17],observ:13,old_nam:11,onc:[5,13],one:[5,9,11,13,15,17],ones:[3,15],onli:[5,9,11,14,15,16],onlin:3,onnx:[11,12,13,15],onnx_exec:[5,15],onnx_model_proto:11,onnx_nod:[12,13],onnxruntim:11,op_nam:16,op_typ:[5,9],open:3,oper:[11,16],ops:[9,13,16],option:[3,5],order:[9,11],orig_thres_matrix:13,orig_weight_matrix:13,origin:13,other:[11,16],otherwis:[3,11,12,17],out:[9,12,13],out_bia:12,out_scal:12,out_shap:17,outcom:15,outermost:17,output:[11,12,13,14,17],output_shap:17,overlai:15,overview:4,own:[3,5,12],pack:[5,15,17],pack_innermost_dim:17,pack_innermost_dim_as_hex_str:17,packag:15,packed_bytearrai:17,packed_bytearray_to_finnpi:17,packedbit:17,pad:17,pad_tensor_to_multiple_of:17,pad_to_dim:17,pad_to_nbit:17,page:[7,19],pair:15,param:13,paramet:[13,16,17],part:[12,13,17],particular:[5,12,13,17],partit:[11,17],pass:[13,17,18],password:[3,15],past:16,path:[13,15,17],payload:3,per:15,perform:[3,5,12,13],permit:[12,13],place:[13,15],placehold:12,platform:15,pleas:[5,9,11,14,19],point:[3,5],popcount:12,port:3,posit:[13,16,17],possibl:[11,13,15],post:12,pragma:13,preced:16,precid:16,precis:[5,17],precompil:13,precomput:14,prefer:11,prefix:17,prepend:17,pretrain:17,preusser:13,previous:15,print:3,prior:[14,15,17],process:[3,12],produc:[5,11,12,13,17],product:17,project:[4,15],properti:[5,11],protobuf:5,provid:[3,5,11],purpos:5,push:3,pushbutton:3,pynq:[11,15],pynq_driver_dir:15,python:[3,5,15,17],pytorch:17,pyveril:[11,13,17],pyverilate_get_liveness_threshold_cycl:17,pyverilate_stitched_ip:17,qnn:[3,4],quantiz:[4,9,11,13],quantization_annot:5,random:[14,17],random_str:17,randomli:17,rather:3,read:[4,13],read_npy_data:13,readabl:[5,14],real:12,recommend:14,refer:[4,5],referenc:15,reflect:3,regular:12,rel:15,relat:[4,11,17],remot:11,remov:[15,17],remove_by_nam:17,remove_prefix:17,renam:11,rename_tensor:11,repeat:16,repeatedli:11,replac:14,replaceverilogrelpath:15,repo:[3,19],repositori:[3,4],repres:[5,11,17],represent:17,requir:[11,12,13],research:4,reset:13,reset_rtlsim:13,reshap:13,resourc:[3,10,13],respect:17,respons:5,result:[9,10,11,14,15,16,17],return_full_exec_context:11,returned_dict:[12,13],reus:13,revers:17,reverse_endian:17,reverse_inn:17,right:13,roadmap:4,root:[3,17],round:[16,17],roundandclipthreshold:16,roundup_to_integer_multipl:17,row:13,rtlsim:[11,13,15,17],rtlsim_output_to_npi:17,run:[11,13,15],run_dock:3,same:[15,17],sampl:13,save:[11,13,15,17],save_as_npi:13,scalar:16,scale:12,schema:5,scp:15,script:[3,13,15,17],second:[15,16],section:[9,11,14],see:[5,16,17],seen:4,select:5,sep:13,separ:[4,12],sequenc:17,server:3,servic:3,set:[3,5,11,12,13,15,16,17],set_executable_path:17,set_initi:11,set_ipgen_path:17,set_metadata_prop:11,set_nodeattr:12,set_tensor_datatyp:[5,11],set_tensor_shap:[5,11],setexecmod:15,settings64:3,sever:[3,15],shape:[5,11,12,13,14,17],shell:15,shortli:19,should:[3,9,11,12,13,15],show:[1,5],sign:[11,14,16,17],sim:[13,17],simd:13,simpl:5,simpli:3,simul:[12,13,15,17],sinc:[11,17],singl:[3,5,11,13,15,16,17],slide:13,small:9,smaller:[5,11],smallest:11,smee:3,some:[3,4,5,11,12,13,15],someth:3,soon:[0,6,7,20,21],sourc:18,spawn:3,specif:[4,5],specifi:[5,11,14,15,17],split:[15,16,17],stai:4,standard:[5,11,12,13],statu:4,still:5,stitch:[11,13,15,17],storag:5,store:[5,12,15,17],stream:13,streamingdataflowpartit:15,streamingfclayer_batch:15,streamlin:14,string:[9,15,17],stringlength:17,strm_decl:13,structur:5,style:4,sub:14,subdirectori:15,subgraph:11,submodul:18,subsequ:15,subset:9,succes:15,success:[12,15],suitabl:13,summar:13,support:[5,11],sure:3,surviv:17,synaps:13,synthesi:[10,15],synthpynqproject:15,t_0:12,t_1:12,t_n:12,take:[3,5,9,11,14,16,17,19],taken:[4,11,15],target:[4,5,15],target_dir:15,targetbit:17,tcl:[13,15,17],tcl_script:17,tempfil:17,temporari:17,tensor:[9,11,12,14,16,17],tensor_fanout:9,tensor_list:5,tensor_nam:[9,11],tensor_shap:[5,11,17],tensor_valu:11,tensorproto:5,termin:[3,15],ternari:[5,11],test:14,text:3,than:[5,11,12],thei:[5,8,16],them:[5,9,15,16],thi:[3,4,5,7,9,11,12,13,14,15,17,19],thin:5,thing:4,third:5,thought:3,thresh:13,threshold:[12,13,16],through:3,time:[3,13,14,15],tlastmark:15,tmem:13,togeth:[3,15],toggl:13,toggle_clk:13,token:3,tool:[3,4],train:[3,4],transform:[8,11,18],travers:5,trigger:3,tune:4,two:[4,5,11,12,15,16,17],type:[11,13,14,17],ubuntu:3,uint16:11,uint2:[11,17],uint32:11,uint3:11,uint4:11,uint8:[11,17],umuroglu:13,under:[4,15],uniqu:14,unpack:[15,17],unpack_innermost_dim_from_hex_str:17,unsign:[11,16],until:11,untrain:17,updat:[4,16],use:[4,5,15],used:[4,5,11,12,13,15,17,20,21],useful:[5,11],user:3,usernam:[3,15],uses:5,using:[5,11,13,14,15,16,17,19],util:[8,11,12,13,18],val:17,valu:[5,11,12,13,15,16,17],value_info:11,valueinfo:[11,14],valueinfo_to_tensor:17,valueinfoproto:[11,17],variabl:[3,17],vector:[16,17],verif:9,verifi:[5,9,12,13,20],verify_nod:[9,12,13],verilog:15,versa:5,version:4,via:[5,11],vice:5,visser:13,vivado:[3,4,10,11,15,17],vivado_path:3,vivado_pynq_proj:15,vivado_stitch_proj:15,wai:[3,5,9],wait:17,want:[5,9,11,14,16],wbit:17,webbrows:3,webhook:3,websit:4,weight:[11,13,17],welcom:4,well:[3,5],when:[3,9,12,13],where:[3,5,11,12,13,15,16],wherea:[5,11],whether:[9,11,12,13],which:[3,4,5,11,12,13,15,16,17],width:[13,17],window:13,without:3,wmem:13,work:[3,5,6,11,17],workspac:3,wrapper:[5,11],write:[3,5,12,13],xilinx:4,xnor:12,xnorpopcountmatmul:[12,14,15],you:[3,5,7,9,11,14],your:3,yourself:5,zero:[11,13,16,17]},titles:["Brevitas Export","End-to-End Flow","Index","Getting Started","FINN","Internals","Network Preparation","PYNQ Deployment","Source Code","Analysis","Analysis - fpgadataflow","Core","Custom Op","Custom Op - FPGADataFlow","Transformation","Transformation - fpgadataflow","Transformation - Streamline","Util","finn","Tutorials","Functional Verification","Vivado HLS and Vivado Synthesis"],titleterms:{"class":[12,13],"export":0,"function":[5,20],HLS:[13,21],absorb:16,access:5,analysi:[5,9,10],annot:5,base:[12,13],basic:17,batchnorm_to_affin:14,bipolar_to_xnor:14,brevita:0,cleanup:15,code:8,codegen_ipgen:15,codegen_ipstitch:15,codegen_npysim:15,collapse_rep:16,compil:[3,15],convert_to_hls_lay:15,convolutioninputgener:13,core:11,creat:5,create_dataflow_partit:15,custom:[5,12,13],custom_op:[12,13],data_pack:17,datatyp:11,deploy:7,develop:3,directli:3,docker:3,end:1,execut:5,execute_custom_nod:11,experiment:3,finn:[3,4,5,9,10,11,12,13,14,15,16,17,18],flow:[1,5],fold_const:14,fpgadataflow:[10,13,15,17],gener:14,get:3,graphproto:5,helper:5,hls_synth_res_estim:10,hlssynth_ipgen:15,how:3,index:2,infer_datatyp:14,infer_shap:14,insert_tlastmark:15,instanc:5,interact:3,intermedi:5,intern:5,jenkin:3,jupyt:3,make_deploy:15,make_pynq_driv:15,make_pynq_proj:15,modelwrapp:[5,11],modul:[8,11,17],more:4,multithreshold:12,network:6,node:[5,12,13],notebook:3,onnx:[5,17],onnx_exec:11,oper:5,pass:[5,9,10,14],prepar:6,pynq:7,quantiz:5,registri:12,remote_exec:11,reorder:16,replace_verilog_relpath:15,represent:5,requir:3,res_estim:10,resourc:4,round_threshold:16,rtlsim_exec:11,run:3,set_exec_mod:15,shell:3,sign_to_thr:16,sourc:8,start:3,streamingdataflowpartit:12,streamingfclayer_batch:13,streamingmaxpool_batch:13,streamlin:16,submodul:[9,12,14],suit:3,synth_pynq_proj:15,synthesi:21,templat:[13,15],tensor:5,test:[3,17],through:5,tlastmark:13,topolog:9,transform:[5,14,15,16],tutori:19,use:3,using:3,util:17,verif:20,verify_custom_nod:9,vivado:21,what:4,xnorpopcount:12}})
\ No newline at end of file
+Search.setIndex({docnames:["brevitas_export","end_to_end_flow","genindex","getting_started","index","internals","nw_prep","pynq_deploy","source_code/finn","source_code/finn.analysis","source_code/finn.analysis.fpgadataflow","source_code/finn.core","source_code/finn.custom_op","source_code/finn.custom_op.fpgadataflow","source_code/finn.transformation","source_code/finn.transformation.fpgadataflow","source_code/finn.transformation.streamline","source_code/finn.util","source_code/modules","tutorials","verification","vivado_synth"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.index":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:56},filenames:["brevitas_export.rst","end_to_end_flow.rst","genindex.rst","getting_started.rst","index.rst","internals.rst","nw_prep.rst","pynq_deploy.rst","source_code/finn.rst","source_code/finn.analysis.rst","source_code/finn.analysis.fpgadataflow.rst","source_code/finn.core.rst","source_code/finn.custom_op.rst","source_code/finn.custom_op.fpgadataflow.rst","source_code/finn.transformation.rst","source_code/finn.transformation.fpgadataflow.rst","source_code/finn.transformation.streamline.rst","source_code/finn.util.rst","source_code/modules.rst","tutorials.rst","verification.rst","vivado_synth.rst"],objects:{"finn.analysis":{topology:[9,0,0,"-"],verify_custom_nodes:[9,0,0,"-"]},"finn.analysis.fpgadataflow":{hls_synth_res_estimation:[10,0,0,"-"],res_estimation:[10,0,0,"-"]},"finn.analysis.fpgadataflow.hls_synth_res_estimation":{hls_synth_res_estimation:[10,1,1,""]},"finn.analysis.fpgadataflow.res_estimation":{res_estimation:[10,1,1,""]},"finn.analysis.topology":{all_tensors_f32:[9,1,1,""],get_per_tensor_fanouts:[9,1,1,""],is_linear:[9,1,1,""],node_inputs_in_expected_order:[9,1,1,""]},"finn.analysis.verify_custom_nodes":{verify_nodes:[9,1,1,""]},"finn.core":{datatype:[11,0,0,"-"],execute_custom_node:[11,0,0,"-"],modelwrapper:[11,0,0,"-"],onnx_exec:[11,0,0,"-"],remote_exec:[11,0,0,"-"],rtlsim_exec:[11,0,0,"-"]},"finn.core.datatype":{DataType:[11,2,1,""]},"finn.core.datatype.DataType":{BINARY:[11,3,1,""],BIPOLAR:[11,3,1,""],FLOAT32:[11,3,1,""],INT16:[11,3,1,""],INT2:[11,3,1,""],INT32:[11,3,1,""],INT3:[11,3,1,""],INT4:[11,3,1,""],INT8:[11,3,1,""],TERNARY:[11,3,1,""],UINT16:[11,3,1,""],UINT2:[11,3,1,""],UINT32:[11,3,1,""],UINT3:[11,3,1,""],UINT4:[11,3,1,""],UINT8:[11,3,1,""],allowed:[11,4,1,""],bitwidth:[11,4,1,""],get_hls_datatype_str:[11,4,1,""],get_num_possible_values:[11,4,1,""],get_smallest_possible:[11,4,1,""],is_integer:[11,4,1,""],max:[11,4,1,""],min:[11,4,1,""],signed:[11,4,1,""]},"finn.core.execute_custom_node":{execute_custom_node:[11,1,1,""]},"finn.core.modelwrapper":{ModelWrapper:[11,2,1,""]},"finn.core.modelwrapper.ModelWrapper":{analysis:[11,4,1,""],check_all_tensor_shapes_specified:[11,4,1,""],check_compatibility:[11,4,1,""],find_consumer:[11,4,1,""],find_producer:[11,4,1,""],get_all_tensor_names:[11,4,1,""],get_initializer:[11,4,1,""],get_metadata_prop:[11,4,1,""],get_tensor_datatype:[11,4,1,""],get_tensor_fanout:[11,4,1,""],get_tensor_shape:[11,4,1,""],get_tensor_valueinfo:[11,4,1,""],graph:[11,4,1,""],make_empty_exec_context:[11,4,1,""],make_new_valueinfo_name:[11,4,1,""],model:[11,4,1,""],rename_tensor:[11,4,1,""],save:[11,4,1,""],set_initializer:[11,4,1,""],set_metadata_prop:[11,4,1,""],set_tensor_datatype:[11,4,1,""],set_tensor_shape:[11,4,1,""],transform:[11,4,1,""]},"finn.core.onnx_exec":{compare_execution:[11,1,1,""],execute_node:[11,1,1,""],execute_onnx:[11,1,1,""],execute_onnx_and_make_model:[11,1,1,""]},"finn.core.remote_exec":{remote_exec:[11,1,1,""]},"finn.core.rtlsim_exec":{rtlsim_exec:[11,1,1,""]},"finn.custom_op":{CustomOp:[12,2,1,""],fpgadataflow:[13,0,0,"-"],multithreshold:[12,0,0,"-"],registry:[12,0,0,"-"],streamingdataflowpartition:[12,0,0,"-"],xnorpopcount:[12,0,0,"-"]},"finn.custom_op.CustomOp":{execute_node:[12,4,1,""],get_nodeattr:[12,4,1,""],get_nodeattr_types:[12,4,1,""],infer_node_datatype:[12,4,1,""],make_shape_compatible_op:[12,4,1,""],set_nodeattr:[12,4,1,""],verify_node:[12,4,1,""]},"finn.custom_op.fpgadataflow":{HLSCustomOp:[13,2,1,""],convolutioninputgenerator:[13,0,0,"-"],streamingfclayer_batch:[13,0,0,"-"],streamingmaxpool_batch:[13,0,0,"-"],templates:[13,0,0,"-"],tlastmarker:[13,0,0,"-"]},"finn.custom_op.fpgadataflow.HLSCustomOp":{blackboxfunction:[13,4,1,""],bram_estimation:[13,4,1,""],code_generation_ipgen:[13,4,1,""],code_generation_npysim:[13,4,1,""],compile_singlenode_code:[13,4,1,""],dataoutstrm:[13,4,1,""],defines:[13,4,1,""],docompute:[13,4,1,""],dynamic_input_to_npy:[13,4,1,""],exec_precompiled_singlenode_model:[13,4,1,""],execute_node:[13,4,1,""],generate_params:[13,4,1,""],get_folded_input_shape:[13,4,1,""],get_folded_output_shape:[13,4,1,""],get_instream_width:[13,4,1,""],get_nodeattr_types:[13,4,1,""],get_number_output_values:[13,4,1,""],get_outstream_width:[13,4,1,""],global_includes:[13,4,1,""],ipgen_singlenode_code:[13,4,1,""],lut_estimation:[13,4,1,""],node_res_estimation:[13,4,1,""],npy_to_dynamic_output:[13,4,1,""],pragmas:[13,4,1,""],read_npy_data:[13,4,1,""],reset_rtlsim:[13,4,1,""],rtlsim:[13,4,1,""],save_as_npy:[13,4,1,""],strm_decl:[13,4,1,""],toggle_clk:[13,4,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator":{ConvolutionInputGenerator:[13,2,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator":{blackboxfunction:[13,4,1,""],bram_estimation:[13,4,1,""],dataoutstrm:[13,4,1,""],defines:[13,4,1,""],docompute:[13,4,1,""],execute_node:[13,4,1,""],get_input_datatype:[13,4,1,""],get_nodeattr_types:[13,4,1,""],get_number_output_values:[13,4,1,""],get_output_datatype:[13,4,1,""],get_stream_width:[13,4,1,""],global_includes:[13,4,1,""],infer_node_datatype:[13,4,1,""],lut_estimation:[13,4,1,""],make_shape_compatible_op:[13,4,1,""],pragmas:[13,4,1,""],read_npy_data:[13,4,1,""],save_as_npy:[13,4,1,""],strm_decl:[13,4,1,""],verify_node:[13,4,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch":{StreamingFCLayer_Batch:[13,2,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch":{blackboxfunction:[13,4,1,""],bram_estimation:[13,4,1,""],calc_tmem:[13,4,1,""],calc_wmem:[13,4,1,""],dataoutstrm:[13,4,1,""],defines:[13,4,1,""],docompute:[13,4,1,""],execute_node:[13,4,1,""],generate_params:[13,4,1,""],get_folded_input_shape:[13,4,1,""],get_folded_output_shape:[13,4,1,""],get_hls_compatible_threshold_tensor:[13,4,1,""],get_hls_compatible_weight_tensor:[13,4,1,""],get_input_datatype:[13,4,1,""],get_instream_width:[13,4,1,""],get_nodeattr_types:[13,4,1,""],get_number_output_values:[13,4,1,""],get_output_datatype:[13,4,1,""],get_outstream_width:[13,4,1,""],get_template_param_values:[13,4,1,""],get_weight_datatype:[13,4,1,""],global_includes:[13,4,1,""],infer_node_datatype:[13,4,1,""],lut_estimation:[13,4,1,""],make_shape_compatible_op:[13,4,1,""],pragmas:[13,4,1,""],read_npy_data:[13,4,1,""],save_as_npy:[13,4,1,""],strm_decl:[13,4,1,""],verify_node:[13,4,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch":{StreamingMaxPool_Batch:[13,2,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch":{blackboxfunction:[13,4,1,""],bram_estimation:[13,4,1,""],dataoutstrm:[13,4,1,""],defines:[13,4,1,""],docompute:[13,4,1,""],get_nodeattr_types:[13,4,1,""],get_number_output_values:[13,4,1,""],global_includes:[13,4,1,""],infer_node_datatype:[13,4,1,""],lut_estimation:[13,4,1,""],make_shape_compatible_op:[13,4,1,""],pragmas:[13,4,1,""],read_npy_data:[13,4,1,""],save_as_npy:[13,4,1,""],strm_decl:[13,4,1,""],verify_node:[13,4,1,""]},"finn.custom_op.fpgadataflow.tlastmarker":{TLastMarker:[13,2,1,""]},"finn.custom_op.fpgadataflow.tlastmarker.TLastMarker":{blackboxfunction:[13,4,1,""],dataoutstrm:[13,4,1,""],defines:[13,4,1,""],docompute:[13,4,1,""],execute_node:[13,4,1,""],get_folded_input_shape:[13,4,1,""],get_folded_output_shape:[13,4,1,""],get_instream_width:[13,4,1,""],get_nodeattr_types:[13,4,1,""],get_number_output_values:[13,4,1,""],get_outstream_width:[13,4,1,""],global_includes:[13,4,1,""],infer_node_datatype:[13,4,1,""],make_shape_compatible_op:[13,4,1,""],pragmas:[13,4,1,""],read_npy_data:[13,4,1,""],save_as_npy:[13,4,1,""],strm_decl:[13,4,1,""],verify_node:[13,4,1,""]},"finn.custom_op.multithreshold":{MultiThreshold:[12,2,1,""],compare:[12,1,1,""],multithreshold:[12,1,1,""]},"finn.custom_op.multithreshold.MultiThreshold":{execute_node:[12,4,1,""],get_nodeattr_types:[12,4,1,""],infer_node_datatype:[12,4,1,""],make_shape_compatible_op:[12,4,1,""],verify_node:[12,4,1,""]},"finn.custom_op.registry":{getCustomOp:[12,1,1,""]},"finn.custom_op.streamingdataflowpartition":{StreamingDataflowPartition:[12,2,1,""]},"finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition":{execute_node:[12,4,1,""],get_nodeattr_types:[12,4,1,""],infer_node_datatype:[12,4,1,""],make_shape_compatible_op:[12,4,1,""],verify_node:[12,4,1,""]},"finn.custom_op.xnorpopcount":{XnorPopcountMatMul:[12,2,1,""],xnorpopcountmatmul:[12,1,1,""]},"finn.custom_op.xnorpopcount.XnorPopcountMatMul":{execute_node:[12,4,1,""],get_nodeattr_types:[12,4,1,""],infer_node_datatype:[12,4,1,""],make_shape_compatible_op:[12,4,1,""],verify_node:[12,4,1,""]},"finn.transformation":{batchnorm_to_affine:[14,0,0,"-"],bipolar_to_xnor:[14,0,0,"-"],fold_constants:[14,0,0,"-"],general:[14,0,0,"-"],infer_datatypes:[14,0,0,"-"],infer_shapes:[14,0,0,"-"],streamline:[16,0,0,"-"]},"finn.transformation.batchnorm_to_affine":{BatchNormToAffine:[14,2,1,""]},"finn.transformation.batchnorm_to_affine.BatchNormToAffine":{apply:[14,4,1,""]},"finn.transformation.bipolar_to_xnor":{ConvertBipolarMatMulToXnorPopcount:[14,2,1,""]},"finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount":{apply:[14,4,1,""]},"finn.transformation.fold_constants":{FoldConstants:[14,2,1,""]},"finn.transformation.fold_constants.FoldConstants":{apply:[14,4,1,""]},"finn.transformation.fpgadataflow":{cleanup:[15,0,0,"-"],codegen_ipgen:[15,0,0,"-"],codegen_ipstitch:[15,0,0,"-"],codegen_npysim:[15,0,0,"-"],compile:[15,0,0,"-"],convert_to_hls_layers:[15,0,0,"-"],create_dataflow_partition:[15,0,0,"-"],hlssynth_ipgen:[15,0,0,"-"],insert_tlastmarker:[15,0,0,"-"],make_deployment:[15,0,0,"-"],make_pynq_driver:[15,0,0,"-"],make_pynq_proj:[15,0,0,"-"],replace_verilog_relpaths:[15,0,0,"-"],set_exec_mode:[15,0,0,"-"],synth_pynq_proj:[15,0,0,"-"],templates:[15,0,0,"-"]},"finn.transformation.fpgadataflow.cleanup":{CleanUp:[15,2,1,""]},"finn.transformation.fpgadataflow.cleanup.CleanUp":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen":{CodeGen_ipgen:[15,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch":{CodeGen_ipstitch:[15,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.codegen_npysim":{CodeGen_npysim:[15,2,1,""]},"finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.compile":{Compile:[15,2,1,""]},"finn.transformation.fpgadataflow.compile.Compile":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers":{InferBinaryStreamingFCLayer:[15,2,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition":{CreateDataflowPartition:[15,2,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen":{HLSSynth_IPGen:[15,2,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker":{InsertTLastMarker:[15,2,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.make_deployment":{DeployToPYNQ:[15,2,1,""]},"finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver":{MakePYNQDriver:[15,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj":{MakePYNQProject:[15,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.replace_verilog_relpaths":{ReplaceVerilogRelPaths:[15,2,1,""]},"finn.transformation.fpgadataflow.replace_verilog_relpaths.ReplaceVerilogRelPaths":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.set_exec_mode":{SetExecMode:[15,2,1,""]},"finn.transformation.fpgadataflow.set_exec_mode.SetExecMode":{apply:[15,4,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj":{SynthPYNQProject:[15,2,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject":{apply:[15,4,1,""]},"finn.transformation.general":{ConvertSubToAdd:[14,2,1,""],GiveRandomTensorNames:[14,2,1,""],GiveReadableTensorNames:[14,2,1,""],GiveUniqueNodeNames:[14,2,1,""]},"finn.transformation.general.ConvertSubToAdd":{apply:[14,4,1,""]},"finn.transformation.general.GiveRandomTensorNames":{apply:[14,4,1,""]},"finn.transformation.general.GiveReadableTensorNames":{apply:[14,4,1,""]},"finn.transformation.general.GiveUniqueNodeNames":{apply:[14,4,1,""]},"finn.transformation.infer_datatypes":{InferDataTypes:[14,2,1,""]},"finn.transformation.infer_datatypes.InferDataTypes":{apply:[14,4,1,""]},"finn.transformation.infer_shapes":{InferShapes:[14,2,1,""]},"finn.transformation.infer_shapes.InferShapes":{apply:[14,4,1,""]},"finn.transformation.streamline":{Streamline:[16,2,1,""],absorb:[16,0,0,"-"],collapse_repeated:[16,0,0,"-"],reorder:[16,0,0,"-"],round_thresholds:[16,0,0,"-"],sign_to_thres:[16,0,0,"-"]},"finn.transformation.streamline.Streamline":{apply:[16,4,1,""]},"finn.transformation.streamline.absorb":{Absorb1BitMulIntoMatMul:[16,2,1,""],AbsorbAddIntoMultiThreshold:[16,2,1,""],AbsorbMulIntoMultiThreshold:[16,2,1,""],FactorOutMulSignMagnitude:[16,2,1,""]},"finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul":{apply:[16,4,1,""]},"finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold":{apply:[16,4,1,""]},"finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold":{apply:[16,4,1,""]},"finn.transformation.streamline.absorb.FactorOutMulSignMagnitude":{apply:[16,4,1,""]},"finn.transformation.streamline.collapse_repeated":{CollapseRepeatedAdd:[16,2,1,""],CollapseRepeatedMul:[16,2,1,""],CollapseRepeatedOp:[16,2,1,""]},"finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp":{apply:[16,4,1,""]},"finn.transformation.streamline.reorder":{MoveAddPastMul:[16,2,1,""],MoveScalarAddPastMatMul:[16,2,1,""],MoveScalarMulPastMatMul:[16,2,1,""]},"finn.transformation.streamline.reorder.MoveAddPastMul":{apply:[16,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarAddPastMatMul":{apply:[16,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarMulPastMatMul":{apply:[16,4,1,""]},"finn.transformation.streamline.round_thresholds":{RoundAndClipThresholds:[16,2,1,""]},"finn.transformation.streamline.round_thresholds.RoundAndClipThresholds":{apply:[16,4,1,""]},"finn.transformation.streamline.sign_to_thres":{ConvertSignToThres:[16,2,1,""]},"finn.transformation.streamline.sign_to_thres.ConvertSignToThres":{apply:[16,4,1,""]},"finn.util":{basic:[17,0,0,"-"],data_packing:[17,0,0,"-"],fpgadataflow:[17,0,0,"-"],onnx:[17,0,0,"-"],test:[17,0,0,"-"]},"finn.util.basic":{CppBuilder:[17,2,1,""],calculate_signed_dot_prod_range:[17,1,1,""],gen_finn_dt_tensor:[17,1,1,""],get_by_name:[17,1,1,""],get_finn_root:[17,1,1,""],interleave_matrix_outer_dim_from_partitions:[17,1,1,""],make_build_dir:[17,1,1,""],pad_tensor_to_multiple_of:[17,1,1,""],random_string:[17,1,1,""],remove_by_name:[17,1,1,""],roundup_to_integer_multiple:[17,1,1,""]},"finn.util.basic.CppBuilder":{append_includes:[17,4,1,""],append_sources:[17,4,1,""],build:[17,4,1,""],set_executable_path:[17,4,1,""]},"finn.util.data_packing":{array2hexstring:[17,1,1,""],finnpy_to_packed_bytearray:[17,1,1,""],hexstring2npbytearray:[17,1,1,""],npbytearray2hexstring:[17,1,1,""],npy_to_rtlsim_input:[17,1,1,""],numpy_to_hls_code:[17,1,1,""],pack_innermost_dim_as_hex_string:[17,1,1,""],packed_bytearray_to_finnpy:[17,1,1,""],rtlsim_output_to_npy:[17,1,1,""],unpack_innermost_dim_from_hex_string:[17,1,1,""]},"finn.util.fpgadataflow":{IPGenBuilder:[17,2,1,""],pyverilate_get_liveness_threshold_cycles:[17,1,1,""],pyverilate_stitched_ip:[17,1,1,""]},"finn.util.fpgadataflow.IPGenBuilder":{append_tcl:[17,4,1,""],build:[17,4,1,""],set_ipgen_path:[17,4,1,""]},"finn.util.onnx":{valueinfo_to_tensor:[17,1,1,""]},"finn.util.test":{get_test_model_def_fxn:[17,1,1,""],get_test_model_trained:[17,1,1,""],get_test_model_untrained:[17,1,1,""],get_trained_checkpoint:[17,1,1,""]},finn:{custom_op:[12,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":17,"0x07":17,"0x0e":17,"0x0f01":17,"0xb":17,"0xe":17,"abstract":[12,13],"boolean":11,"case":5,"class":[5,11,14,15,16,17],"const":14,"default":[5,12,13],"enum":11,"export":1,"final":11,"float":[5,17],"function":[1,3,11,12,13,17],"import":[3,5],"int":15,"new":[3,4,11,12,13],"public":4,"return":[5,9,10,11,12,13,16,17],"static":9,"throw":17,"true":[11,17],"try":3,"var":13,"while":5,For:[1,5,15,16],HLS:[1,4,11,12,15,17],IPs:15,PEs:13,The:[1,3,4,5,8,11,12,15,16,17],There:[1,3],These:5,Use:[11,17],abc:12,abit:17,abort:13,about:[1,4,5,7,9,11,14,15],abov:[3,5],absolut:15,absorb1bitmulintomatmul:16,absorb:15,absorbaddintomultithreshold:16,absorbmulintomultithreshold:16,acceler:[3,15],access:3,accord:[13,17],account:11,achiev:1,action:15,activ:[11,17],actual:5,add:[14,16,17],added:13,adder:16,adding:3,addit:[3,5,13,15],addition:16,address:15,admin:3,after:[5,13,17],aim:16,all:[3,5,9,11,12,13,14,15,17],all_tensors_f32:9,allow:11,almost:5,alreadi:[5,15,19],also:[1,3,5,12,13,15],amount:17,analysi:[8,11,18],analysis_fxn:11,analyz:5,anaylsis_fxn:11,ani:[1,3,11,12,14,15,17],annot:[9,11,12,13],anoth:15,api:5,append_includ:17,append_sourc:17,append_tcl:17,appli:[1,5,11,14,15,16],appropri:[3,14],arbitrari:17,architectur:4,argument:[3,5,15,17],around:[5,11],arrai:17,array2hexstr:17,arxiv:16,assign:11,associ:[11,14],assum:17,attribut:[9,12,13,15],attribute_nam:[12,13],attributeproto:[12,13],avail:19,back:[3,13],backend:[5,15],base:[11,14,15,16,17],bash:[13,17],basic:13,batchnorm:14,batchnormtoaffin:14,been:[12,15],befor:17,below:[5,8],benefit:1,between:[13,17],bias:12,binari:[11,13,15,16,17],bipolar:[5,11,12,13,14,16,17],bit:[5,11,17],bitfil:[3,12],bitwidth:11,blackbock:13,blackboxfunct:13,block:[1,5,13,15,17],blott:13,board:[1,11,15],bool:9,both:17,bram:13,bram_estim:13,brevita:[1,4,17],brien:13,browser:3,build:[13,17],built:9,calc_tmem:13,calc_wmem:13,calcul:13,calculate_signed_dot_prod_rang:17,call:[3,11,13,15],can:[1,3,4,5,7,11,13,15,16,17],centerpiec:4,certain:[1,5],chang:[3,5,11],chapter:[9,11,14],check:[5,9,11,12,13],check_all_tensor_shapes_specifi:11,check_compat:11,client:3,clk:[13,15],clock:13,clone:[3,17],code:[5,13,15,17,18],code_gen_dir:17,code_gen_dir_ipgen:15,code_gen_dir_npysim:15,code_generation_ipgen:13,code_generation_npysim:13,collaps:16,collapserepeatedadd:16,collapserepeatedmul:16,collapserepeatedop:16,collect:[3,15],colloqui:4,come:[3,9],command:[3,5,13,17],commun:4,compar:[11,12],compare_execut:11,compare_fxn:11,comparison:12,compat:[11,12,13],compil:[4,5,13,17],compile_singlenode_cod:13,complet:3,compon:[4,5],comput:[3,11,13],configur:3,consecut:16,constant:[5,9,11,16],construct:4,consum:[5,11],contain:[3,4,5,11,12,13,15,17],context:[11,12,13],contribut:4,convert:[3,13,14,15,16,17],convertbipolarmatmultoxnorpopcount:14,convertsigntothr:16,convertsubtoadd:14,copi:[11,15],core:[5,8,15,18],corner:1,correct:[5,14,17],correctli:[3,9,12,13,15],correspond:[1,4,11,12,13],count:13,cpp_file:17,cppbuilder:[13,17],creat:[3,11,15,17],createdataflowpartit:15,current:[4,5,11,13],custom:[3,4,8,9,11,15,18],custom_op:5,customop:[5,12,13],cycl:[13,17],cylind:1,data:[11,12,13,15,17],dataflow:[4,11,15],dataoutstrm:13,datatyp:[5,12,13,14,17],datayp:5,debug:11,declar:13,deep:[4,11,13],default_v:[12,13],default_valu:[12,13],defin:[5,13],deliveri:3,depend:3,deploi:3,deploy:[1,15],deploytopynq:15,describ:5,descript:[0,5,6,20,21],design:[3,15],detail:[0,1,4,5,6,7,9,11,14,20,21],determin:5,develop:4,diagram:1,dict:[11,12,13],dictionari:[5,9,11,13],differ:[1,3,8,12,13],digit:17,dimens:17,dimension:17,dir:[15,17],directli:[4,5],directori:[3,15,17],distr_pad:17,divid:[1,8],divis:17,dnn:5,doc:4,docker:17,dockerfil:3,docomput:13,document:5,doe:[3,5,11,12],domain:5,done:9,dot:17,down:[3,5,11],driver:15,dt_a:17,dt_b:17,dtype:[5,9,11,12,13,17],dynam:9,dynamic_input_to_npi:13,each:[1,4,9,11,14,15,16,17],easier:5,easili:5,editor:3,either:3,element:17,embed:11,emit:17,emphasi:4,empti:11,enabl:1,end:13,ensur:[13,14,15,17],entir:3,entri:17,enumer:14,environ:3,equal:[12,13],equival:16,estim:[10,13],even:[1,5],evenli:17,event:3,eventu:5,everi:[3,5,12,13,14,15],everyth:3,exampl:[3,4,5,17],excel:3,except:17,exec_mod:15,exec_precompiled_singlenode_model:13,execut:[11,12,13,15,17],executable_path:[15,17],execute_nod:[11,12,13],execute_onnx:[11,15],execute_onnx_and_make_model:11,execution_context:11,exist:[5,12,13,17],exit:17,expect:[5,9,11,12,13,15],experi:4,experiment:4,explor:[4,11,13],expos:11,extens:3,extra:[3,9,17],extract:[5,10],f5c6bd32ae93ec103a88152214baedff4ce1850d81065bfc:3,factor:17,factoroutmulsignmagnitud:16,fals:[11,17],familiar:[3,5],fan:9,fast:13,feel:19,fewer:11,fewest:11,field:[1,5,15,17],file:[3,11,13,15,17],filenam:[11,15],fill:[12,13],find:[5,7,11],find_consum:[5,11],find_produc:[5,11],finish:17,finn:[0,1,6,7,8,19,20,21],finn_dt:17,finn_dtyp:5,finnpy_to_packed_bytearrai:17,first:[5,9,16],five:1,fix:17,flag:5,flatten:17,float32:[5,9,11],fold:13,foldconst:14,folder:[3,15,17],follow:[1,3,4,5,9,11,12,15],form:13,format:[5,13],forward:3,found:[4,15],four:17,fpga:[3,4],fpgadataflow:[9,12,14],fpgapart:[13,15],framework:[4,13],fraser:13,free:19,from:[1,3,4,5,10,11,13,15,17],full:[5,11],further:1,gambardella:13,gen_finn_dt_tensor:17,gener:[1,4,13,15,17],generate_param:13,get:[5,11,12,13,15],get_all_tensor_nam:[5,11],get_by_nam:17,get_finn_root:17,get_folded_input_shap:13,get_folded_output_shap:13,get_hls_compatible_threshold_tensor:13,get_hls_compatible_weight_tensor:13,get_hls_datatype_str:11,get_initi:[5,11],get_input_datatyp:13,get_instream_width:13,get_metadata_prop:11,get_nodeattr:12,get_nodeattr_typ:[12,13],get_num_possible_valu:11,get_number_output_valu:13,get_output_datatyp:13,get_outstream_width:13,get_per_tensor_fanout:9,get_smallest_poss:11,get_stream_width:13,get_template_param_valu:13,get_tensor_datatyp:[5,11],get_tensor_fanout:11,get_tensor_shap:[5,11],get_tensor_valueinfo:11,get_test_model_def_fxn:17,get_test_model_train:17,get_test_model_untrain:17,get_trained_checkpoint:17,get_weight_datatyp:13,getcustomop:12,github:[3,4],give:[3,5,14,16],give_unique_node_nam:14,given:[5,9,10,11,12,13,17],giverandomtensornam:14,givereadabletensornam:14,giveuniquenodenam:14,global:13,global_includ:13,graph:[5,9,11,12,13,14,15],graphic:4,greater:12,green:1,grei:1,group:12,guarante:17,guid:19,hand:4,happen:3,hardwar:[1,5],has:[1,3,5,9,11,13,14,15,17],have:[1,3,5,9,11,12,13,15,16],help:[3,5],helper:12,here:[0,6,20,21],hex:17,hexstr:17,hexstring2npbytearrai:17,high:[1,3,5],highli:4,hls:13,hls_var_nam:17,hlscustomop:13,hlslib:[4,13],homepag:4,host:[3,17],how:[5,6,17,21],howev:5,howtoanalysispass:5,howtotransformationpass:5,howtoworkwithonnx:5,http:3,human:[5,14],identifi:5,imag:[1,13],immedi:15,implement:[11,13,15],includ:[1,4,11,13,15],include_path:17,index:5,indic:[5,11,12,13,15],individu:5,infer:[3,4,5,11,12,13,14,17],infer_node_datatyp:[12,13],inferbinarystreamingfclay:15,inferdatatyp:14,infershap:14,info:[14,17],info_messag:9,inform:[5,15],infrastructur:15,initi:[3,5,9,11],innermost:17,inp0:12,inp1:12,inp:13,input:[5,9,11,12,13,14,16,17],input_dict:11,input_dtyp:17,input_fil:17,insert:[13,15,17],inserttlastmark:15,insid:[3,5,12],instal:3,instanc:[11,12,16],instant:17,instanti:15,instead:17,int16:11,int2:11,int32:11,int3:11,int4:11,int8:11,integ:[5,11,12,16,17],interest:[5,11],interfac:15,interleav:[13,17],interleave_matrix_outer_dim_from_partit:17,intermedi:[1,11,14],intern:[9,11,14],interv:12,involv:3,ipgen:13,ipgen_path:[15,17],ipgen_singlenode_cod:13,ipgenbuild:[13,17],ipi:1,is_integ:11,is_linear:9,item:17,its:[5,12],itself:12,jupyt:[4,5,19],kei:11,kind:15,know:[9,14],lab:4,lambda:11,largest:11,launch:3,layer:[14,15],lead:17,learn:[4,13],leeser:13,left:1,len:[5,17],letter:17,librari:[4,17],library_path:17,like:[1,3],linear:[9,11],link:[3,4,19],list:[4,5,8,9,11,17],load:17,locat:3,look:[1,3,4,5,9,11,14,19],loop:13,low:5,lut:13,lut_estim:13,made:11,magnitud:16,mai:[3,5],make:[3,5,13,15],make_build_dir:17,make_collapsed_param_fxn:16,make_deepcopi:11,make_empty_exec_context:11,make_new_valueinfo_nam:11,make_project:15,make_shape_compatible_op:[12,13],makepynqdriv:15,makepynqproject:15,mani:[3,5],manipul:[5,11],map:12,mark:[5,13],matmul:[14,16],matrix:[12,13,16,17],max:[11,17],mean:[5,17],meant:5,member:[12,13,17],mention:5,meta:12,metadata:11,metadata_prop:[11,15],method:[12,13,20],min:[11,17],minimum:17,minut:15,mixtur:9,mkdtemp:17,mode:[3,15],model:[5,9,10,11,12,13,14,15,16,17,20],model_a:11,model_b:11,model_was_chang:5,modelproto:[5,11,15],modul:[5,18],modular:[1,4],more:[1,5,7,9,11,14,17],mount:3,move:16,moveaddpastmul:16,movescalaraddpastmatmul:16,movescalarmulpastmatmul:16,mul:[14,16],multidimension:17,multipl:[12,16,17],multipli:16,multithreshold:[15,16],must:[12,15,16,17],mvtu:15,n_partit:17,n_thres_step:13,name:[5,10,11,12,14,17],name_field:17,ndarrai:17,nearest:[16,17],necessari:15,need:[5,10,12,13],neg:[11,16],netnam:17,netron:3,network:[1,3,4,5,13,17],neural:[4,5,13],neuron:13,new_nam:11,next:16,no_decl:17,node:[9,10,11,14,15,16,18],node_inputs_in_expected_ord:9,node_res_estim:13,nodeproto:5,non:15,none:[5,11,12,17],note:[3,5,12],notebook:[4,5,19],notwithstand:9,now:[9,11],npbytearrai:17,npbytearray2hexstr:17,npy:[13,17],npy_to_dynamic_output:13,npy_to_rtlsim_input:17,npysim:[13,15],number:[5,11,12,13,17],numpi:[13,17],numpy_to_hls_cod:17,object:[11,17],observ:13,old_nam:11,onc:[5,13],one:[5,9,11,13,15,17],ones:[3,15],onli:[5,9,11,14,15,16],onlin:3,onnx:[11,12,13,15],onnx_exec:[5,15],onnx_model_proto:11,onnx_nod:[12,13],onnxruntim:11,op_nam:16,op_typ:[5,9],open:3,oper:[11,16],ops:[9,13,16],option:[3,5],order:[9,11],orig_thres_matrix:13,orig_weight_matrix:13,origin:13,other:[1,11,16],otherwis:[3,11,12,17],out:[9,12,13],out_bia:12,out_scal:12,out_shap:17,outcom:15,outermost:17,output:[11,12,13,14,17],output_shap:17,overlai:15,overview:4,own:[3,5,12],pack:[5,15,17],pack_innermost_dim:17,pack_innermost_dim_as_hex_str:17,packag:15,packed_bytearrai:17,packed_bytearray_to_finnpi:17,packedbit:17,pad:17,pad_tensor_to_multiple_of:17,pad_to_dim:17,pad_to_nbit:17,page:[1,7,19],pair:15,param:13,paramet:[13,16,17],part:[12,13,17],particular:[5,12,13,17],partit:[11,17],pass:[13,17,18],password:[3,15],past:16,path:[13,15,17],payload:3,per:15,perform:[3,5,12,13],permit:[12,13],pictur:1,pink:1,place:[13,15],placehold:12,platform:15,pleas:[1,5,9,11,14,19],point:[1,3,5],popcount:12,port:3,posit:[13,16,17],possibl:[11,13,15],post:12,pragma:13,preced:16,precid:16,precis:[5,17],precompil:13,precomput:14,prefer:11,prefix:17,prepar:1,prepend:17,pretrain:17,preusser:13,previous:15,print:3,prior:[14,15,17],process:[1,3,12],produc:[5,11,12,13,17],product:17,project:[4,15],properti:[1,5,11],protobuf:5,provid:[3,5,11],purpos:[1,5],push:3,pushbutton:3,pynq:[1,11,15],pynq_driver_dir:15,python:[3,5,15,17],pytorch:17,pyveril:[11,13,17],pyverilate_get_liveness_threshold_cycl:17,pyverilate_stitched_ip:17,qnn:[3,4],quantiz:[4,9,11,13],quantization_annot:5,random:[14,17],random_str:17,randomli:17,rang:1,rather:3,read:[4,13],read_npy_data:13,readabl:[5,14],real:12,recommend:14,rectangular:1,red:1,refer:[4,5],referenc:15,reflect:3,regular:12,rel:15,relat:[4,11,17],remot:11,remov:[15,17],remove_by_nam:17,remove_prefix:17,renam:11,rename_tensor:11,repeat:16,repeatedli:11,replac:14,replaceverilogrelpath:15,repo:[3,19],repositori:[3,4],repres:[1,5,11,17],represent:[1,17],requir:[11,12,13],research:4,reset:13,reset_rtlsim:13,reshap:13,resourc:[3,10,13],respect:[1,17],respons:5,result:[1,9,10,11,14,15,16,17],return_full_exec_context:11,returned_dict:[12,13],reus:13,revers:17,reverse_endian:17,reverse_inn:17,right:13,roadmap:4,root:[3,17],round:[16,17],roundandclipthreshold:16,roundup_to_integer_multipl:17,row:13,rtlsim:[11,13,15,17],rtlsim_output_to_npi:17,run:[11,13,15],run_dock:3,same:[15,17],sampl:13,save:[11,13,15,17],save_as_npi:13,scalar:16,scale:12,schema:5,scp:15,script:[3,13,15,17],second:[15,16],section:[1,9,11,14],see:[1,5,16,17],seen:4,select:5,sep:13,separ:[4,12],sequenc:17,server:3,servic:3,set:[3,5,11,12,13,15,16,17],set_executable_path:17,set_initi:11,set_ipgen_path:17,set_metadata_prop:11,set_nodeattr:12,set_tensor_datatyp:[5,11],set_tensor_shap:[5,11],setexecmod:15,settings64:3,sever:[1,3,15],shape:[5,11,12,13,14,17],shell:15,shortli:19,should:[3,9,11,12,13,15],show:[1,5],sign:[11,14,16,17],sim:[13,17],simd:13,simpl:5,simpli:3,simul:[12,13,15,17],sinc:[11,17],singl:[3,5,11,13,15,16,17],slide:13,small:9,smaller:[5,11],smallest:11,smee:3,softwar:1,some:[3,4,5,11,12,13,15],someth:3,soon:[0,6,7,20,21],sourc:18,spawn:3,specif:[4,5],specifi:[5,11,14,15,17],split:[15,16,17],stai:4,standard:[5,11,12,13],start:1,state:1,statu:4,step:1,still:5,stitch:[11,13,15,17],stop:1,storag:5,store:[5,12,15,17],stream:13,streamingdataflowpartit:15,streamingfclayer_batch:15,streamlin:14,string:[9,15,17],stringlength:17,strm_decl:13,structur:5,style:4,sub:14,subdirectori:15,subgraph:11,submodul:18,subsequ:15,subset:9,succes:15,success:[12,15],suitabl:13,summar:13,support:[5,11],sure:3,surviv:17,synaps:13,synthesi:[10,15],synthpynqproject:15,t_0:12,t_1:12,t_n:12,take:[3,5,9,11,14,16,17,19],taken:[4,11,15],target:[4,5,15],target_dir:15,targetbit:17,tcl:[13,15,17],tcl_script:17,tempfil:17,temporari:17,tensor:[9,11,12,14,16,17],tensor_fanout:9,tensor_list:5,tensor_nam:[9,11],tensor_shap:[5,11,17],tensor_valu:11,tensorproto:5,termin:[3,15],ternari:[5,11],test:[1,14],text:3,than:[5,11,12],thei:[1,5,8,16],them:[5,9,15,16],thi:[1,3,4,5,7,9,11,12,13,14,15,17,19],thin:5,thing:4,third:5,thought:3,thresh:13,threshold:[12,13,16],through:3,time:[3,13,14,15],tlastmark:15,tmem:13,togeth:[3,15],toggl:13,toggle_clk:13,token:3,tool:[3,4],top:1,train:[3,4],transform:[1,8,11,18],travers:5,trigger:3,tune:4,two:[4,5,11,12,15,16,17],type:[11,13,14,17],ubuntu:3,uint16:11,uint2:[11,17],uint32:11,uint3:11,uint4:11,uint8:[11,17],umuroglu:13,under:[4,15],uniqu:14,unpack:[15,17],unpack_innermost_dim_from_hex_str:17,unsign:[11,16],until:11,untrain:17,updat:[4,16],use:[1,4,5,15],used:[1,4,5,11,12,13,15,17,20,21],useful:[5,11],user:[1,3],usernam:[3,15],uses:5,using:[5,11,13,14,15,16,17,19],util:[8,11,12,13,18],val:17,valu:[5,11,12,13,15,16,17],value_info:11,valueinfo:[11,14],valueinfo_to_tensor:17,valueinfoproto:[11,17],variabl:[3,17],vector:[16,17],verif:[1,9],verifi:[5,9,12,13,20],verify_nod:[9,12,13],verilog:15,versa:5,version:4,via:[5,11],vice:5,visser:13,vivado:[1,3,4,10,11,15,17],vivado_path:3,vivado_pynq_proj:15,vivado_stitch_proj:15,wai:[3,5,9],wait:17,want:[5,9,11,14,16],wbit:17,webbrows:3,webhook:3,websit:[1,4],weight:[11,13,17],welcom:4,well:[3,5],when:[3,9,12,13],where:[3,5,11,12,13,15,16],wherea:[5,11],whether:[9,11,12,13],which:[3,4,5,11,12,13,15,16,17],whole:1,wide:1,width:[13,17],window:13,without:3,wmem:13,work:[3,5,6,11,17],workspac:3,wrapper:[5,11],write:[3,5,12,13],xilinx:4,xnor:12,xnorpopcountmatmul:[12,14,15],yellow:1,you:[1,3,5,7,9,11,14],your:3,yourself:5,zero:[11,13,16,17]},titles:["Brevitas Export","End-to-End Flow","Index","Getting Started","FINN","Internals","Network Preparation","PYNQ Deployment","Source Code","Analysis","Analysis - fpgadataflow","Core","Custom Op","Custom Op - FPGADataFlow","Transformation","Transformation - fpgadataflow","Transformation - Streamline","Util","finn","Tutorials","Functional Verification","Vivado HLS and Vivado IPI"],titleterms:{"class":[12,13],"export":0,"function":[5,20],HLS:[13,21],absorb:16,access:5,analysi:[5,9,10],annot:5,base:[12,13],basic:17,batchnorm_to_affin:14,bipolar_to_xnor:14,brevita:0,cleanup:15,code:8,codegen_ipgen:15,codegen_ipstitch:15,codegen_npysim:15,collapse_rep:16,compil:[3,15],convert_to_hls_lay:15,convolutioninputgener:13,core:11,creat:5,create_dataflow_partit:15,custom:[5,12,13],custom_op:[12,13],data_pack:17,datatyp:11,deploy:7,develop:3,directli:3,docker:3,end:1,execut:5,execute_custom_nod:11,experiment:3,finn:[3,4,5,9,10,11,12,13,14,15,16,17,18],flow:[1,5],fold_const:14,fpgadataflow:[10,13,15,17],gener:14,get:3,graphproto:5,helper:5,hls_synth_res_estim:10,hlssynth_ipgen:15,how:3,index:2,infer_datatyp:14,infer_shap:14,insert_tlastmark:15,instanc:5,interact:3,intermedi:5,intern:5,ipi:21,jenkin:3,jupyt:3,make_deploy:15,make_pynq_driv:15,make_pynq_proj:15,modelwrapp:[5,11],modul:[8,11,17],more:4,multithreshold:12,network:6,node:[5,12,13],notebook:3,onnx:[5,17],onnx_exec:11,oper:5,pass:[5,9,10,14],prepar:6,pynq:7,quantiz:5,registri:12,remote_exec:11,reorder:16,replace_verilog_relpath:15,represent:5,requir:3,res_estim:10,resourc:4,round_threshold:16,rtlsim_exec:11,run:3,set_exec_mod:15,shell:3,sign_to_thr:16,sourc:8,start:3,streamingdataflowpartit:12,streamingfclayer_batch:13,streamingmaxpool_batch:13,streamlin:16,structur:1,submodul:[9,12,14],suit:3,synth_pynq_proj:15,templat:[13,15],tensor:5,test:[3,17],through:5,tlastmark:13,topolog:9,transform:[5,14,15,16],tutori:19,use:3,using:3,util:17,verif:20,verify_custom_nod:9,vivado:21,what:4,xnorpopcount:12}})
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html
index 6949bee409e52b4e863550fc2d328d5ae9c37b06..80ab2eed1f5cd61d4a5dc0c55ec87baa9200308e 100644
--- a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html
+++ b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="finn.html">Source Code</a><ul class="current">
diff --git a/docs/finn/_build/html/source_code/finn.analysis.html b/docs/finn/_build/html/source_code/finn.analysis.html
index 27ef921b5f844f412c05aa4ff1568a2924b681bd..3277d4c7a232bde5ccc9c71aa0612c11fdd1aff0 100644
--- a/docs/finn/_build/html/source_code/finn.analysis.html
+++ b/docs/finn/_build/html/source_code/finn.analysis.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="finn.html">Source Code</a><ul class="current">
diff --git a/docs/finn/_build/html/source_code/finn.core.html b/docs/finn/_build/html/source_code/finn.core.html
index 83ca9a2d0048f7465f5e781ad0bc5b24d423c80e..d9daf4662665291a192b42d944329ea9c8a6236f 100644
--- a/docs/finn/_build/html/source_code/finn.core.html
+++ b/docs/finn/_build/html/source_code/finn.core.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="finn.html">Source Code</a><ul class="current">
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html
index c5f64095ae292626a215a7b5ea07b0830e683827..e75d5e82bcf6f590de6746bb36dba4b99ca7352a 100644
--- a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html
+++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="finn.html">Source Code</a><ul class="current">
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.html b/docs/finn/_build/html/source_code/finn.custom_op.html
index ef431107dc9092f91a029dc96953178829f1b1b7..206bbd5bff6057cef25e4a4c7019165d17ceb37f 100644
--- a/docs/finn/_build/html/source_code/finn.custom_op.html
+++ b/docs/finn/_build/html/source_code/finn.custom_op.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="finn.html">Source Code</a><ul class="current">
diff --git a/docs/finn/_build/html/source_code/finn.html b/docs/finn/_build/html/source_code/finn.html
index 2819afeb31417ca6701da8e1beacee67a7286fb1..0092c5340476fb2d9e0a1541054eb3441bf0f610 100644
--- a/docs/finn/_build/html/source_code/finn.html
+++ b/docs/finn/_build/html/source_code/finn.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Source Code</a><ul>
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html
index 2c2c278da6768bd1ed7dd4abd291819920f8c24e..4b53cdc270e85c90119b60b0985ea7a6ea8b3bb9 100644
--- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="finn.html">Source Code</a><ul class="current">
diff --git a/docs/finn/_build/html/source_code/finn.transformation.html b/docs/finn/_build/html/source_code/finn.transformation.html
index 23a22b6cb5154d9af7273ff4935e81dc108c9ef4..14079a6bac9186729ada3fe7ef700e46a533947d 100644
--- a/docs/finn/_build/html/source_code/finn.transformation.html
+++ b/docs/finn/_build/html/source_code/finn.transformation.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="finn.html">Source Code</a><ul class="current">
diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.html
index d8199d94b13fac77c05ed784db9b9528f7eb3890..123380a46c875192dc765a1dae8e07f10a8199b2 100644
--- a/docs/finn/_build/html/source_code/finn.transformation.streamline.html
+++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="finn.html">Source Code</a><ul class="current">
diff --git a/docs/finn/_build/html/source_code/finn.util.html b/docs/finn/_build/html/source_code/finn.util.html
index 437a17df30107f7a922339b0cec538c87177d717..277b5e579e525343b6c92f1e1feed83fbbdfe998 100644
--- a/docs/finn/_build/html/source_code/finn.util.html
+++ b/docs/finn/_build/html/source_code/finn.util.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="finn.html">Source Code</a><ul class="current">
diff --git a/docs/finn/_build/html/source_code/modules.html b/docs/finn/_build/html/source_code/modules.html
index 4d65b42709ec2ac851b7574a57fa8127529b12b4..0eb8bc658d6803a030006656aa270f4159cee81b 100644
--- a/docs/finn/_build/html/source_code/modules.html
+++ b/docs/finn/_build/html/source_code/modules.html
@@ -85,7 +85,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="finn.html">Source Code</a></li>
diff --git a/docs/finn/_build/html/tutorials.html b/docs/finn/_build/html/tutorials.html
index b8c908ca9bc3cd0dc3c7227673d728daef6c989d..474995632d4d3322f69419a99c872240eaa08dd5 100644
--- a/docs/finn/_build/html/tutorials.html
+++ b/docs/finn/_build/html/tutorials.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
diff --git a/docs/finn/_build/html/verification.html b/docs/finn/_build/html/verification.html
index 3cc100e0c1158cf7bc34f71c57d06ef84d75df54..785e7c2aa641b5dc359663e8ad2910015b6c15cc 100644
--- a/docs/finn/_build/html/verification.html
+++ b/docs/finn/_build/html/verification.html
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vivado_synth.html">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
@@ -157,7 +157,7 @@
            <div itemprop="articleBody">
             
   <div class="section" id="functional-verification">
-<h1>Functional Verification<a class="headerlink" href="#functional-verification" title="Permalink to this headline">¶</a></h1>
+<span id="verification"></span><h1>Functional Verification<a class="headerlink" href="#functional-verification" title="Permalink to this headline">¶</a></h1>
 <div class="admonition note">
 <p class="admonition-title">Note</p>
 <p><strong>Here will be soon a detailed description of the methods used in FINN to functionally verify a model.</strong></p>
diff --git a/docs/finn/_build/html/vivado_synth.html b/docs/finn/_build/html/vivado_synth.html
index 49e0c67a123ed113e4a941e3617e487b934d9e04..4e4e419b390ea46d2124275fec7a1e8b0fd7328e 100644
--- a/docs/finn/_build/html/vivado_synth.html
+++ b/docs/finn/_build/html/vivado_synth.html
@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Vivado HLS and Vivado Synthesis &mdash; FINN  documentation</title>
+  <title>Vivado HLS and Vivado IPI &mdash; FINN  documentation</title>
   
 
   
@@ -87,7 +87,7 @@
 <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
 <li class="toctree-l1"><a class="reference internal" href="brevitas_export.html">Brevitas Export</a></li>
 <li class="toctree-l1"><a class="reference internal" href="nw_prep.html">Network Preparation</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Vivado HLS and Vivado Synthesis</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Vivado HLS and Vivado IPI</a></li>
 <li class="toctree-l1"><a class="reference internal" href="pynq_deploy.html">PYNQ Deployment</a></li>
 <li class="toctree-l1"><a class="reference internal" href="verification.html">Functional Verification</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">Source Code</a></li>
@@ -137,7 +137,7 @@
     
       <li><a href="index.html">Docs</a> &raquo;</li>
         
-      <li>Vivado HLS and Vivado Synthesis</li>
+      <li>Vivado HLS and Vivado IPI</li>
     
     
       <li class="wy-breadcrumbs-aside">
@@ -156,8 +156,8 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="vivado-hls-and-vivado-synthesis">
-<h1>Vivado HLS and Vivado Synthesis<a class="headerlink" href="#vivado-hls-and-vivado-synthesis" title="Permalink to this headline">¶</a></h1>
+  <div class="section" id="vivado-hls-and-vivado-ipi">
+<span id="vivado-synth"></span><h1>Vivado HLS and Vivado IPI<a class="headerlink" href="#vivado-hls-and-vivado-ipi" title="Permalink to this headline">¶</a></h1>
 <div class="admonition note">
 <p class="admonition-title">Note</p>
 <p><strong>Here will be soon a detailed description of how Vivado is used in FINN.</strong></p>
diff --git a/docs/finn/brevitas_export.rst b/docs/finn/brevitas_export.rst
index 9fc5d12920c3d4d987625f16d0af3ad477c5ed9c..7d6d4b8f61e32904d2a8b7a266093cacab0c2cdd 100644
--- a/docs/finn/brevitas_export.rst
+++ b/docs/finn/brevitas_export.rst
@@ -1,3 +1,5 @@
+.. _brevitas_export:
+
 ***************
 Brevitas Export
 ***************
diff --git a/docs/finn/end_to_end_flow.rst b/docs/finn/end_to_end_flow.rst
index 937b008064df6c5e7cb62c55f8d23ac244ec1a03..36f3f27ccec1f3fa9631b9f7e146b811a8543342 100644
--- a/docs/finn/end_to_end_flow.rst
+++ b/docs/finn/end_to_end_flow.rst
@@ -2,9 +2,26 @@
 End-to-End Flow
 ***************
 
-The following image shows the end-to-end flow of FINN.
+The following image shows the end-to-end flow of FINN. As you can see in the picture, FINN has a high modularity and has the property that the flow can be stopped at any point and the intermediate result can be used for further processing or other purposes. This enables a wide range of users to benefit from FINN, even if they do not use the whole flow.
 
 .. image:: ../../notebooks/finn-design-flow-example.svg
    :scale: 50%
    :align: center
 
+Flow structure
+==============
+
+The cylinder-like fields show the state of the network representation in the respective step. The rectangular fields represent the transformations that are applied to the network to achieve a certain result. The diagram is divided into five blocks, each of it includes several flow steps. The flow starts in top left corner with Brevitas export (pink block), followed by the preparation of the network (grey block) for the Vivado HLS and Vivado IPI (yellow block). There is also a section for testing and verification in software (green block) and the hardware generation and deployment on the PYNQ board (red block). For more details about the different flow sections, please have a look at the corresponding pages on this website.
+
+* :ref:`brevitas_export`
+
+* :ref:`nw_prep`
+
+* :ref:`vivado_synth`
+
+* :ref:`pynq_deploy`
+
+* :ref:`verification`
+
+
+
diff --git a/docs/finn/nw_prep.rst b/docs/finn/nw_prep.rst
index ed625788c339c0928d86e70628fc0b75a790ab12..f6911d84f2593777c5a3d511bf01bd68087b3af0 100644
--- a/docs/finn/nw_prep.rst
+++ b/docs/finn/nw_prep.rst
@@ -1,3 +1,5 @@
+.. _nw_prep:
+
 *******************
 Network Preparation
 *******************
diff --git a/docs/finn/pynq_deploy.rst b/docs/finn/pynq_deploy.rst
index afdc6246070897e6299c122832fcb56531e794e4..030f8f5e8bf096e726196e55b54851294fd6a0ae 100644
--- a/docs/finn/pynq_deploy.rst
+++ b/docs/finn/pynq_deploy.rst
@@ -1,3 +1,5 @@
+.. _pynq_deploy:
+
 ***************
 PYNQ Deployment
 ***************
diff --git a/docs/finn/verification.rst b/docs/finn/verification.rst
index df72d8eeb9a6558f2849e7b93f7dfc9b99261227..b2d3d6746f5cafd7c921f39ccd2b8e10fd182dff 100644
--- a/docs/finn/verification.rst
+++ b/docs/finn/verification.rst
@@ -1,3 +1,5 @@
+.. _verification:
+
 ***********************
 Functional Verification
 ***********************
diff --git a/docs/finn/vivado_synth.rst b/docs/finn/vivado_synth.rst
index 3dbdb190531cfe7797c9559c79511d0bfcb1b8e9..5e479c3067bb60c76984c8b49411761eb095f7b7 100644
--- a/docs/finn/vivado_synth.rst
+++ b/docs/finn/vivado_synth.rst
@@ -1,6 +1,8 @@
-*******************************
-Vivado HLS and Vivado Synthesis
-*******************************
+.. _vivado_synth:
+
+*************************
+Vivado HLS and Vivado IPI 
+*************************
 
 .. note:: **Here will be soon a detailed description of how Vivado is used in FINN.**