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