From 03df43e8ee4aa60dfa9d5330394c91ae09db4bf1 Mon Sep 17 00:00:00 2001
From: auphelia <jakobapk@web.de>
Date: Fri, 21 Feb 2020 15:50:49 +0000
Subject: [PATCH] [Sphinx Documentation] Add -e flag to command to put each
 module file in its own page

---
 docs/finn/_build/doctrees/environment.pickle  | Bin 133413 -> 158738 bytes
 .../source_code/finn.analysis.doctree         | Bin 15581 -> 4913 bytes
 .../finn.analysis.fpgadataflow.doctree        | Bin 8772 -> 3701 bytes
 ...adataflow.hls_synth_res_estimation.doctree | Bin 0 -> 5024 bytes
 ...alysis.fpgadataflow.res_estimation.doctree | Bin 0 -> 4748 bytes
 .../finn.analysis.topology.doctree            | Bin 0 -> 9376 bytes
 .../finn.analysis.verify_custom_nodes.doctree | Bin 0 -> 5445 bytes
 .../source_code/finn.core.datatype.doctree    | Bin 0 -> 29083 bytes
 .../doctrees/source_code/finn.core.doctree    | Bin 81755 -> 3632 bytes
 .../finn.core.execute_custom_node.doctree     | Bin 0 -> 4768 bytes
 .../finn.core.modelwrapper.doctree            | Bin 0 -> 37452 bytes
 .../source_code/finn.core.onnx_exec.doctree   | Bin 0 -> 10978 bytes
 .../source_code/finn.core.remote_exec.doctree | Bin 0 -> 4084 bytes
 .../source_code/finn.core.rtlsim_exec.doctree | Bin 0 -> 4406 bytes
 .../source_code/finn.custom_op.doctree        | Bin 56521 -> 17339 bytes
 ...dataflow.convolutioninputgenerator.doctree | Bin 0 -> 31441 bytes
 .../finn.custom_op.fpgadataflow.doctree       | Bin 160747 -> 39345 bytes
 ...pgadataflow.streamingfclayer_batch.doctree | Bin 0 -> 45944 bytes
 ...pgadataflow.streamingmaxpool_batch.doctree | Bin 0 -> 25637 bytes
 ...n.custom_op.fpgadataflow.templates.doctree | Bin 0 -> 2908 bytes
 ...custom_op.fpgadataflow.tlastmarker.doctree | Bin 0 -> 27147 bytes
 .../finn.custom_op.multithreshold.doctree     | Bin 0 -> 15531 bytes
 .../finn.custom_op.registry.doctree           | Bin 0 -> 4314 bytes
 ...stom_op.streamingdataflowpartition.doctree | Bin 0 -> 13945 bytes
 .../finn.custom_op.xnorpopcount.doctree       | Bin 0 -> 14107 bytes
 ...transformation.batchnorm_to_affine.doctree | Bin 0 -> 6433 bytes
 ...inn.transformation.bipolar_to_xnor.doctree | Bin 0 -> 6639 bytes
 .../source_code/finn.transformation.doctree   | Bin 45675 -> 11756 bytes
 ...finn.transformation.fold_constants.doctree | Bin 0 -> 6271 bytes
 ...ransformation.fpgadataflow.cleanup.doctree | Bin 0 -> 6249 bytes
 ...rmation.fpgadataflow.codegen_ipgen.doctree | Bin 0 -> 6841 bytes
 ...tion.fpgadataflow.codegen_ipstitch.doctree | Bin 0 -> 8183 bytes
 ...mation.fpgadataflow.codegen_npysim.doctree | Bin 0 -> 6569 bytes
 ...ransformation.fpgadataflow.compile.doctree | Bin 0 -> 6209 bytes
 ...fpgadataflow.convert_to_hls_layers.doctree | Bin 0 -> 7211 bytes
 ...dataflow.create_dataflow_partition.doctree | Bin 0 -> 7641 bytes
 .../finn.transformation.fpgadataflow.doctree  | Bin 71069 -> 4647 bytes
 ...mation.fpgadataflow.hlssynth_ipgen.doctree | Bin 0 -> 6553 bytes
 ...on.fpgadataflow.insert_tlastmarker.doctree | Bin 0 -> 6823 bytes
 ...ation.fpgadataflow.make_deployment.doctree | Bin 0 -> 7553 bytes
 ...tion.fpgadataflow.make_pynq_driver.doctree | Bin 0 -> 7309 bytes
 ...mation.fpgadataflow.make_pynq_proj.doctree | Bin 0 -> 7685 bytes
 ...rmation.fpgadataflow.set_exec_mode.doctree | Bin 0 -> 6716 bytes
 ...ation.fpgadataflow.synth_pynq_proj.doctree | Bin 0 -> 6813 bytes
 ...nsformation.fpgadataflow.templates.doctree | Bin 0 -> 2911 bytes
 .../finn.transformation.general.doctree       | Bin 0 -> 15515 bytes
 ...inn.transformation.infer_datatypes.doctree | Bin 0 -> 6339 bytes
 .../finn.transformation.infer_shapes.doctree  | Bin 0 -> 6165 bytes
 ...n.transformation.streamline.absorb.doctree | Bin 0 -> 17280 bytes
 ...ation.streamline.collapse_repeated.doctree | Bin 0 -> 11501 bytes
 .../finn.transformation.streamline.doctree    | Bin 51198 -> 7224 bytes
 ....transformation.streamline.reorder.doctree | Bin 0 -> 13465 bytes
 ...mation.streamline.round_thresholds.doctree | Bin 0 -> 6961 bytes
 ...formation.streamline.sign_to_thres.doctree | Bin 0 -> 6599 bytes
 .../source_code/finn.util.basic.doctree       | Bin 0 -> 24782 bytes
 .../finn.util.data_packing.doctree            | Bin 0 -> 27586 bytes
 .../doctrees/source_code/finn.util.doctree    | Bin 66431 -> 3569 bytes
 .../finn.util.fpgadataflow.doctree            | Bin 0 -> 8928 bytes
 .../source_code/finn.util.onnx.doctree        | Bin 0 -> 4140 bytes
 .../source_code/finn.util.test.doctree        | Bin 0 -> 7718 bytes
 ...adataflow.hls_synth_res_estimation.rst.txt |   7 +
 ...alysis.fpgadataflow.res_estimation.rst.txt |   7 +
 .../finn.analysis.fpgadataflow.rst.txt        |  18 +-
 .../source_code/finn.analysis.rst.txt         |  18 +-
 .../finn.analysis.topology.rst.txt            |   7 +
 .../finn.analysis.verify_custom_nodes.rst.txt |   7 +
 .../source_code/finn.core.datatype.rst.txt    |   7 +
 .../finn.core.execute_custom_node.rst.txt     |   7 +
 .../finn.core.modelwrapper.rst.txt            |   7 +
 .../source_code/finn.core.onnx_exec.rst.txt   |   7 +
 .../source_code/finn.core.remote_exec.rst.txt |   7 +
 .../_sources/source_code/finn.core.rst.txt    |  56 +-
 .../source_code/finn.core.rtlsim_exec.rst.txt |   7 +
 ...dataflow.convolutioninputgenerator.rst.txt |   7 +
 .../finn.custom_op.fpgadataflow.rst.txt       |  45 +-
 ...pgadataflow.streamingfclayer_batch.rst.txt |   7 +
 ...pgadataflow.streamingmaxpool_batch.rst.txt |   7 +
 ...n.custom_op.fpgadataflow.templates.rst.txt |   7 +
 ...custom_op.fpgadataflow.tlastmarker.rst.txt |   7 +
 .../finn.custom_op.multithreshold.rst.txt     |   7 +
 .../finn.custom_op.registry.rst.txt           |   7 +
 .../source_code/finn.custom_op.rst.txt        |  36 +-
 ...stom_op.streamingdataflowpartition.rst.txt |   7 +
 .../finn.custom_op.xnorpopcount.rst.txt       |   7 +
 ...transformation.batchnorm_to_affine.rst.txt |   7 +
 ...inn.transformation.bipolar_to_xnor.rst.txt |   7 +
 ...finn.transformation.fold_constants.rst.txt |   7 +
 ...ransformation.fpgadataflow.cleanup.rst.txt |   7 +
 ...rmation.fpgadataflow.codegen_ipgen.rst.txt |   7 +
 ...tion.fpgadataflow.codegen_ipstitch.rst.txt |   7 +
 ...mation.fpgadataflow.codegen_npysim.rst.txt |   7 +
 ...ransformation.fpgadataflow.compile.rst.txt |   7 +
 ...fpgadataflow.convert_to_hls_layers.rst.txt |   7 +
 ...dataflow.create_dataflow_partition.rst.txt |   7 +
 ...mation.fpgadataflow.hlssynth_ipgen.rst.txt |   7 +
 ...on.fpgadataflow.insert_tlastmarker.rst.txt |   7 +
 ...ation.fpgadataflow.make_deployment.rst.txt |   7 +
 ...tion.fpgadataflow.make_pynq_driver.rst.txt |   7 +
 ...mation.fpgadataflow.make_pynq_proj.rst.txt |   7 +
 .../finn.transformation.fpgadataflow.rst.txt  | 137 +---
 ...rmation.fpgadataflow.set_exec_mode.rst.txt |   7 +
 ...ation.fpgadataflow.synth_pynq_proj.rst.txt |   7 +
 ...nsformation.fpgadataflow.templates.rst.txt |   7 +
 .../finn.transformation.general.rst.txt       |   7 +
 ...inn.transformation.infer_datatypes.rst.txt |   7 +
 .../finn.transformation.infer_shapes.rst.txt  |   7 +
 .../source_code/finn.transformation.rst.txt   |  54 +-
 ...n.transformation.streamline.absorb.rst.txt |   7 +
 ...ation.streamline.collapse_repeated.rst.txt |   7 +
 ....transformation.streamline.reorder.rst.txt |   7 +
 ...mation.streamline.round_thresholds.rst.txt |   7 +
 .../finn.transformation.streamline.rst.txt    |  45 +-
 ...formation.streamline.sign_to_thres.rst.txt |   7 +
 .../source_code/finn.util.basic.rst.txt       |   7 +
 .../finn.util.data_packing.rst.txt            |   7 +
 .../finn.util.fpgadataflow.rst.txt            |   7 +
 .../source_code/finn.util.onnx.rst.txt        |   7 +
 .../_sources/source_code/finn.util.rst.txt    |  45 +-
 .../source_code/finn.util.test.rst.txt        |   7 +
 docs/finn/_build/html/genindex.html           | 656 +++++++++---------
 docs/finn/_build/html/objects.inv             | Bin 3619 -> 4675 bytes
 docs/finn/_build/html/py-modindex.html        | 100 +--
 docs/finn/_build/html/searchindex.js          |   2 +-
 docs/finn/_build/html/source_code.html        | 136 ++--
 ...fpgadataflow.hls_synth_res_estimation.html | 219 ++++++
 .../finn.analysis.fpgadataflow.html           |  28 +-
 ....analysis.fpgadataflow.res_estimation.html | 219 ++++++
 .../html/source_code/finn.analysis.html       |  56 +-
 .../source_code/finn.analysis.topology.html   | 240 +++++++
 .../finn.analysis.verify_custom_nodes.html    | 218 ++++++
 .../html/source_code/finn.core.datatype.html  | 354 ++++++++++
 .../finn.core.execute_custom_node.html        | 217 ++++++
 .../_build/html/source_code/finn.core.html    | 389 +----------
 .../source_code/finn.core.modelwrapper.html   | 368 ++++++++++
 .../html/source_code/finn.core.onnx_exec.html | 245 +++++++
 .../source_code/finn.core.remote_exec.html    | 215 ++++++
 .../source_code/finn.core.rtlsim_exec.html    | 216 ++++++
 ...pgadataflow.convolutioninputgenerator.html | 334 +++++++++
 .../finn.custom_op.fpgadataflow.html          | 561 +--------------
 ...p.fpgadataflow.streamingfclayer_batch.html | 408 +++++++++++
 ...p.fpgadataflow.streamingmaxpool_batch.html | 312 +++++++++
 ...finn.custom_op.fpgadataflow.templates.html | 212 ++++++
 ...nn.custom_op.fpgadataflow.tlastmarker.html | 329 +++++++++
 .../html/source_code/finn.custom_op.html      | 198 +-----
 .../finn.custom_op.multithreshold.html        | 267 +++++++
 .../source_code/finn.custom_op.registry.html  | 216 ++++++
 ....custom_op.streamingdataflowpartition.html | 257 +++++++
 .../finn.custom_op.xnorpopcount.html          | 262 +++++++
 docs/finn/_build/html/source_code/finn.html   | 136 ++--
 ...nn.transformation.batchnorm_to_affine.html | 222 ++++++
 .../finn.transformation.bipolar_to_xnor.html  | 223 ++++++
 .../finn.transformation.fold_constants.html   | 223 ++++++
 ...n.transformation.fpgadataflow.cleanup.html | 224 ++++++
 ...sformation.fpgadataflow.codegen_ipgen.html | 224 ++++++
 ...rmation.fpgadataflow.codegen_ipstitch.html | 232 +++++++
 ...formation.fpgadataflow.codegen_npysim.html | 224 ++++++
 ...n.transformation.fpgadataflow.compile.html | 224 ++++++
 ...on.fpgadataflow.convert_to_hls_layers.html | 226 ++++++
 ...pgadataflow.create_dataflow_partition.html | 228 ++++++
 ...formation.fpgadataflow.hlssynth_ipgen.html | 224 ++++++
 .../finn.transformation.fpgadataflow.html     | 266 +------
 ...ation.fpgadataflow.insert_tlastmarker.html | 225 ++++++
 ...ormation.fpgadataflow.make_deployment.html | 228 ++++++
 ...rmation.fpgadataflow.make_pynq_driver.html | 229 ++++++
 ...formation.fpgadataflow.make_pynq_proj.html | 231 ++++++
 ...sformation.fpgadataflow.set_exec_mode.html | 224 ++++++
 ...ormation.fpgadataflow.synth_pynq_proj.html | 225 ++++++
 ...transformation.fpgadataflow.templates.html | 212 ++++++
 .../finn.transformation.general.html          | 259 +++++++
 .../html/source_code/finn.transformation.html | 190 +----
 .../finn.transformation.infer_datatypes.html  | 223 ++++++
 .../finn.transformation.infer_shapes.html     | 222 ++++++
 ...finn.transformation.streamline.absorb.html | 265 +++++++
 ...ormation.streamline.collapse_repeated.html | 238 +++++++
 .../finn.transformation.streamline.html       | 174 +----
 ...inn.transformation.streamline.reorder.html | 251 +++++++
 ...formation.streamline.round_thresholds.html | 226 ++++++
 ...ansformation.streamline.sign_to_thres.html | 224 ++++++
 .../html/source_code/finn.util.basic.html     | 305 ++++++++
 .../source_code/finn.util.data_packing.html   | 313 +++++++++
 .../source_code/finn.util.fpgadataflow.html   | 237 +++++++
 .../_build/html/source_code/finn.util.html    | 280 +-------
 .../html/source_code/finn.util.onnx.html      | 216 ++++++
 .../html/source_code/finn.util.test.html      | 227 ++++++
 .../finn/_build/html/source_code/modules.html |  23 -
 ....fpgadataflow.hls_synth_res_estimation.rst |   7 +
 ...n.analysis.fpgadataflow.res_estimation.rst |   7 +
 .../finn.analysis.fpgadataflow.rst            |  18 +-
 docs/finn/source_code/finn.analysis.rst       |  18 +-
 .../source_code/finn.analysis.topology.rst    |   7 +
 .../finn.analysis.verify_custom_nodes.rst     |   7 +
 docs/finn/source_code/finn.core.datatype.rst  |   7 +
 .../finn.core.execute_custom_node.rst         |   7 +
 .../source_code/finn.core.modelwrapper.rst    |   7 +
 docs/finn/source_code/finn.core.onnx_exec.rst |   7 +
 .../source_code/finn.core.remote_exec.rst     |   7 +
 docs/finn/source_code/finn.core.rst           |  56 +-
 .../source_code/finn.core.rtlsim_exec.rst     |   7 +
 ...fpgadataflow.convolutioninputgenerator.rst |   7 +
 .../finn.custom_op.fpgadataflow.rst           |  45 +-
 ...op.fpgadataflow.streamingfclayer_batch.rst |   7 +
 ...op.fpgadataflow.streamingmaxpool_batch.rst |   7 +
 .../finn.custom_op.fpgadataflow.templates.rst |   7 +
 ...inn.custom_op.fpgadataflow.tlastmarker.rst |   7 +
 .../finn.custom_op.multithreshold.rst         |   7 +
 .../source_code/finn.custom_op.registry.rst   |   7 +
 docs/finn/source_code/finn.custom_op.rst      |  36 +-
 ...n.custom_op.streamingdataflowpartition.rst |   7 +
 .../finn.custom_op.xnorpopcount.rst           |   7 +
 ...inn.transformation.batchnorm_to_affine.rst |   7 +
 .../finn.transformation.bipolar_to_xnor.rst   |   7 +
 .../finn.transformation.fold_constants.rst    |   7 +
 ...nn.transformation.fpgadataflow.cleanup.rst |   7 +
 ...nsformation.fpgadataflow.codegen_ipgen.rst |   7 +
 ...ormation.fpgadataflow.codegen_ipstitch.rst |   7 +
 ...sformation.fpgadataflow.codegen_npysim.rst |   7 +
 ...nn.transformation.fpgadataflow.compile.rst |   7 +
 ...ion.fpgadataflow.convert_to_hls_layers.rst |   7 +
 ...fpgadataflow.create_dataflow_partition.rst |   7 +
 ...sformation.fpgadataflow.hlssynth_ipgen.rst |   7 +
 ...mation.fpgadataflow.insert_tlastmarker.rst |   7 +
 ...formation.fpgadataflow.make_deployment.rst |   7 +
 ...ormation.fpgadataflow.make_pynq_driver.rst |   7 +
 ...sformation.fpgadataflow.make_pynq_proj.rst |   7 +
 .../finn.transformation.fpgadataflow.rst      | 137 +---
 ...nsformation.fpgadataflow.set_exec_mode.rst |   7 +
 ...formation.fpgadataflow.synth_pynq_proj.rst |   7 +
 ....transformation.fpgadataflow.templates.rst |   7 +
 .../finn.transformation.general.rst           |   7 +
 .../finn.transformation.infer_datatypes.rst   |   7 +
 .../finn.transformation.infer_shapes.rst      |   7 +
 docs/finn/source_code/finn.transformation.rst |  54 +-
 .../finn.transformation.streamline.absorb.rst |   7 +
 ...formation.streamline.collapse_repeated.rst |   7 +
 ...finn.transformation.streamline.reorder.rst |   7 +
 ...sformation.streamline.round_thresholds.rst |   7 +
 .../finn.transformation.streamline.rst        |  45 +-
 ...ransformation.streamline.sign_to_thres.rst |   7 +
 docs/finn/source_code/finn.util.basic.rst     |   7 +
 .../source_code/finn.util.data_packing.rst    |   7 +
 .../source_code/finn.util.fpgadataflow.rst    |   7 +
 docs/finn/source_code/finn.util.onnx.rst      |   7 +
 docs/finn/source_code/finn.util.rst           |  45 +-
 docs/finn/source_code/finn.util.test.rst      |   7 +
 244 files changed, 13856 insertions(+), 3309 deletions(-)
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.res_estimation.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.topology.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.verify_custom_nodes.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.datatype.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.execute_custom_node.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.modelwrapper.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.onnx_exec.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.remote_exec.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.rtlsim_exec.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.templates.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.tlastmarker.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.multithreshold.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.registry.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.streamingdataflowpartition.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.xnorpopcount.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.batchnorm_to_affine.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.bipolar_to_xnor.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fold_constants.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.cleanup.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipgen.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_npysim.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.compile.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_deployment.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_driver.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_proj.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.set_exec_mode.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.templates.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.general.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.infer_datatypes.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.infer_shapes.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.absorb.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.collapse_repeated.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.reorder.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.round_thresholds.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.sign_to_thres.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.util.basic.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.util.data_packing.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.util.fpgadataflow.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.util.onnx.doctree
 create mode 100644 docs/finn/_build/doctrees/source_code/finn.util.test.doctree
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.datatype.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.execute_custom_node.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.modelwrapper.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.onnx_exec.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.remote_exec.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.multithreshold.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.registry.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.xnorpopcount.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fold_constants.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.general.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.infer_datatypes.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.infer_shapes.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.reorder.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.basic.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.data_packing.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.fpgadataflow.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.onnx.rst.txt
 create mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt
 create mode 100644 docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html
 create mode 100644 docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.res_estimation.html
 create mode 100644 docs/finn/_build/html/source_code/finn.analysis.topology.html
 create mode 100644 docs/finn/_build/html/source_code/finn.analysis.verify_custom_nodes.html
 create mode 100644 docs/finn/_build/html/source_code/finn.core.datatype.html
 create mode 100644 docs/finn/_build/html/source_code/finn.core.execute_custom_node.html
 create mode 100644 docs/finn/_build/html/source_code/finn.core.modelwrapper.html
 create mode 100644 docs/finn/_build/html/source_code/finn.core.onnx_exec.html
 create mode 100644 docs/finn/_build/html/source_code/finn.core.remote_exec.html
 create mode 100644 docs/finn/_build/html/source_code/finn.core.rtlsim_exec.html
 create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html
 create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html
 create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html
 create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.templates.html
 create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.tlastmarker.html
 create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.multithreshold.html
 create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.registry.html
 create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.streamingdataflowpartition.html
 create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.xnorpopcount.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.batchnorm_to_affine.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.bipolar_to_xnor.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fold_constants.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.cleanup.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipgen.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_npysim.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.compile.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_deployment.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_driver.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_proj.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.set_exec_mode.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.templates.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.general.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.infer_datatypes.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.infer_shapes.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.absorb.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.collapse_repeated.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.reorder.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.round_thresholds.html
 create mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.sign_to_thres.html
 create mode 100644 docs/finn/_build/html/source_code/finn.util.basic.html
 create mode 100644 docs/finn/_build/html/source_code/finn.util.data_packing.html
 create mode 100644 docs/finn/_build/html/source_code/finn.util.fpgadataflow.html
 create mode 100644 docs/finn/_build/html/source_code/finn.util.onnx.html
 create mode 100644 docs/finn/_build/html/source_code/finn.util.test.html
 create mode 100644 docs/finn/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst
 create mode 100644 docs/finn/source_code/finn.analysis.fpgadataflow.res_estimation.rst
 create mode 100644 docs/finn/source_code/finn.analysis.topology.rst
 create mode 100644 docs/finn/source_code/finn.analysis.verify_custom_nodes.rst
 create mode 100644 docs/finn/source_code/finn.core.datatype.rst
 create mode 100644 docs/finn/source_code/finn.core.execute_custom_node.rst
 create mode 100644 docs/finn/source_code/finn.core.modelwrapper.rst
 create mode 100644 docs/finn/source_code/finn.core.onnx_exec.rst
 create mode 100644 docs/finn/source_code/finn.core.remote_exec.rst
 create mode 100644 docs/finn/source_code/finn.core.rtlsim_exec.rst
 create mode 100644 docs/finn/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst
 create mode 100644 docs/finn/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst
 create mode 100644 docs/finn/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst
 create mode 100644 docs/finn/source_code/finn.custom_op.fpgadataflow.templates.rst
 create mode 100644 docs/finn/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst
 create mode 100644 docs/finn/source_code/finn.custom_op.multithreshold.rst
 create mode 100644 docs/finn/source_code/finn.custom_op.registry.rst
 create mode 100644 docs/finn/source_code/finn.custom_op.streamingdataflowpartition.rst
 create mode 100644 docs/finn/source_code/finn.custom_op.xnorpopcount.rst
 create mode 100644 docs/finn/source_code/finn.transformation.batchnorm_to_affine.rst
 create mode 100644 docs/finn/source_code/finn.transformation.bipolar_to_xnor.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fold_constants.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.cleanup.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.compile.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.make_deployment.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst
 create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.templates.rst
 create mode 100644 docs/finn/source_code/finn.transformation.general.rst
 create mode 100644 docs/finn/source_code/finn.transformation.infer_datatypes.rst
 create mode 100644 docs/finn/source_code/finn.transformation.infer_shapes.rst
 create mode 100644 docs/finn/source_code/finn.transformation.streamline.absorb.rst
 create mode 100644 docs/finn/source_code/finn.transformation.streamline.collapse_repeated.rst
 create mode 100644 docs/finn/source_code/finn.transformation.streamline.reorder.rst
 create mode 100644 docs/finn/source_code/finn.transformation.streamline.round_thresholds.rst
 create mode 100644 docs/finn/source_code/finn.transformation.streamline.sign_to_thres.rst
 create mode 100644 docs/finn/source_code/finn.util.basic.rst
 create mode 100644 docs/finn/source_code/finn.util.data_packing.rst
 create mode 100644 docs/finn/source_code/finn.util.fpgadataflow.rst
 create mode 100644 docs/finn/source_code/finn.util.onnx.rst
 create mode 100644 docs/finn/source_code/finn.util.test.rst

diff --git a/docs/finn/_build/doctrees/environment.pickle b/docs/finn/_build/doctrees/environment.pickle
index 308b1065423e8dad87e585ffc1778c06a0b2718d..3c761e8ff31cba2be3dd8edd2a14773c03beef36 100644
GIT binary patch
literal 158738
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
bOK?4vb_L?ovKE-R)Bq3SR0p2BlZF2W$avzZ

literal 133413
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

diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.doctree
index 5b78d4a9400210bebe1e8d3ffb1cf0c58cde3ae9..7f88373377a4fbc03f33b3ce9b3c0e2f3c9ec355 100644
GIT binary patch
delta 503
zcmYjNJ4ho@6wORBS>h*!2^R5(8;#%iSuB)jv)dVc#iHv6qfBtf!6h0qP7z#xjTo8k
zJwXVFyM@&@65Cb8%F0F4Y9UytAS?l4E4?F8d~mt<-FMDA=ibZIen44uYy~{~%B`Kp
zTTA$V`}Z>RHLZyy(Fg@je255q;Zy#G68JC(77>li{K$XGKHgsLQq~1CgD<xuzh_0P
z3k_chf(>kH80vqbgJFhmX^f;Xn#NezhVit4CVWN(no${c)4z*GR7I5~SwnKQ6q73a
zl<FxOBErJ=5^e?(>;+z#5!K!}W|3}0<9xv}##61IoY*Ds4zE?(N;B^$UOu4=@Qz@Q
z@|)f>d_H*L#0izh7F0T<#*jxgqOh5+gql=iNi_k%MfR%gRB|Fm$a6wAm;NOWXXM>M
zokO1QSS-S;&KY0sOiJGDzs?`BTq$Mey7ug0JR*-6rm>AJJm4NTxHe4JtQyxAQVC6e
z+4dttjA5JMf#HT3sIm5uM={Y_h&DsC4DR@Scb!Zr5vul0N;aD{NMXc3<VYg-*W~FS
Zl=Diao2JmUsko-=YK&weg8%9bJp<qGz6AgP

literal 15581
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
NUOPsLMzd!9e*pwG;ST@+

diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.doctree
index cf4f42a3ff0da4b19a0cd112d9d7051650e47744..7146b0ef06b6bab62c68008c3f08f7bb43f520e4 100644
GIT binary patch
delta 524
zcmYk2PiqrF7{)XCvx&Bwnu8dV)>ulLq(!Bos3?l!K@2Y9J%`=Q)Ms=vyKZ-|J%rke
zP#A=ECYM6NgC9W2P4T3+eiY9hJn1YA>cGG}@B4e7nP<K~{5fBGQyjmjeky$-`m;N$
zkIBp1$f?R88pe?n)M(S)H6znO2@cAAqvkeaaItmSr&L6gZ5mZhqd}T5W?B7fu3bb!
zt>_)HQnM{4(u7;6Z#tg3XRB@f(WyJ;t?|@#D?56j>h4&{)GQZ+P*S$R!;=9##WSWV
zLw}31IE8uq+b&fe_;Jc3VGWAU!zeI&$^oa8343y<9)AlJA%_7=7&X0|I-T;=dPgGM
zHhU6XJU|nxn19kMqk+3J@Uf6ZZS@Tnv#8TxmtH4+9J9puShB5UyW4$}8QigRYal3`
z81-gk!1Rqg^tE$W9lWyLNbjCq)$gmtTKFI5$^iHE*TN&Rq)D}*o%&68Wa%lR0=-_j
zqDS=!aVP8N$N4<IO^%x%3b$~CLvU<hj034o34h4a?b!ZT_U<DO+{4(DXl3#cGZtLK
dfwkS&KU&LVU)L^PI8!3I+`qf<Zqi)rl0Qd)y}JMa

literal 8772
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

diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..d2a9383f4aadf300d64d26b7d54850798cdf74f6
GIT binary patch
literal 5024
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.res_estimation.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.res_estimation.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..8b1fa4f0540c52d0bbbb4d5e7cb4a5923acf7d64
GIT binary patch
literal 4748
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
E2dcg}D*ylh

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.topology.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.topology.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..451f72dee0acfd8238d8ab0bc0cfe36bdd8f955d
GIT binary patch
literal 9376
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.verify_custom_nodes.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.verify_custom_nodes.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..b8b840f01e19afe06f90d50f68fb939bdf400311
GIT binary patch
literal 5445
zcmd5=TW=&s6}H!&vB#IO*Nb`CHEJRf&3ZHAghWxW5K@E?T8%P-gai;-wQ9O+rpoT=
zZn~;{0TuxQX;-Q@nqPpB0<S2~;U)irmqg0H;5${_J(t~$*HWZqq>;Mrr@lJpJ73iw
zR{wUqzhr-=9VS7pWu$s>5^`0Tb*h-~SQmdS?*6fOSaeJ)W9KT#vw#<72|WTKqcG!f
z@t_b(W=-)x%OtM*i-u^5wFgB9jSVez#Alk!;Yh}DkHsvyR8sZMcqT`eANfJ9bTawK
zw^n$QB+N04X2B$@KjRl<j_EvYY&mp(<X;MFx@cT$J=07X_N5E4E0)EIX_mVlnAJ$e
zycpy|W;U4CnH=UCXc0OqGE_jqtOXHM3YGY7#BAce*26rV7KSW1&G?A=<YrB?F*OyU
zEpCfVT2b6F{iE|FJ5?zQ_z`XQ2<M^Pm$SwXa8R~l5yd$qdYQsL4*ECpq1jQXknu&2
zg<*Nh4H<|0V&+`jk%@0%N5TW@FX8_k{9nPpL%RbknY4TA02djLaXwE6cg_s2<IeIf
zPS1UHuRO#;GzYq1xi}Qv8D#V#GAaukFqJnQId7UXpqE}A6NIon9(&2iyK?!`C!IqP
zgv<F*^js`dzWsbaiDUEq(j<#}=dRb0ap~Px8v@LF*R}Tl3OU4!c-5?eSAr*8t%H^}
zwfIUR40N8&(ZsDe+~7Gpx@-A>#%<Yg<joX56;C19U%DDDM=JZz)wO03M8|FMD;J>y
zaX>uqY!7H%Orm2Oz~IU><BDfzydZD>C1&}cjPn=e&F)NE7QsdMwq`-EfSRwIha`SJ
zNQ4w8wEt+je{pJI#9{7PQ$V~pOU<)Lg12Ulv|-QQ8B=*o-T7G^_f0u$-rPTb)wxwh
z{s~6@{&_n7?up&-sZ;b>O`-U#ShO*cM9Ys&({W*8zI~;~BAeLE0#-EZqdbaS&PWN+
z_hG_M+!;&(b<q(dv7XK1HFGVQ7U4I}SSn`m`_B&r4^EXQN1jW@UXr2|d$y;C#OMV{
zmLb_km)<a!k$%-Xms)r%io9t~++cBtQE9GK&wGy}u4Co>mgo=j`T8>D-Z9!oiH{7a
z*qEz_8;5gcPb!bRfXLd>w({68$+f2i_YhBcWZS4@9aaX+3J@nc_RViz+)j$x;a;c}
zaEpJ<h9*SRW|}3#h))33EE${S!z$46Ra<Wf?~~amAf5BwV(QhkOGD4du%PDGEy?|x
z76<X~n;(5W$66cpbxpX4&P>=Y$R3KZkHsDFE~x+v`v-wKi%K2jB^)&1@8~!ml+Rwk
zG{a=VWL%gV=_OQFGCZLWLE;$Yv6IzM<j9h?R{Ynj#fg({k7=oaJ!BG()<$sqbg9lY
z1ea6R-AYGwT^{H<9_U)_(k&T_S6jY@8m|eEY;FObm6EgWIf42W$+VK-;vS7%Htiq>
z2gTa2rTJD><0QISS6pjoJ=|q()|Z=6X6X=q+We43Idp8DV%h`K8uOTEOea}^LdYQP
zHJhX;Y?hiEbDyHPQ5N$oLTOtkflrd2TCrS%G%`+cZ<HiDPBfos>@S;bx+ul@#J?CN
z*`z>Co9Hctpr6o%OJT~}u7)E}sm3RQ^{a~oRxAgUH;sYW%6OV&+K>1dkBa^cvmsbi
z7aQg#zmUL6Ltm+?Q^PbuKFr5hu6@q37+9f4#@PflEuG=!L7OTbnYQI|pU1dzpjTm9
zxgK@j?n1E@=FWVh&$BGad;$88cm|xw)Ib+z2h5FZFf&WT&Qh3zg_eaWPIi`;mQ35t
zJGG(x&fxv~{x9C>z1e;JdvCoBL*{!d%wl$FGYW_aU=?9=h1rf+JkF7O>|F}6hr6t~
zh18a0p&#;;<8l-SblVx2CKBlg`vo*I^daX)@`6%vo8>z3r&Z<#vEX)?Pg1}3Kp<=@
zByw?vD=$sBV`~6&tjG_hRjJ~6nD|hS=(Wo)(nN88cBFNeK>KG>N$0COekc_Ktz#pl
zm1|XGh<j!Wn^A}bmmc9hWjB8$BYTxI?UbiJ_QVlWf!*&G)eISyCMP$Z&^lGeM@Q%9
z=eSB~k;J_u8y|)I><B&8QDOFJ1kFeze9b37Srdh!zWefPZvvKfHVPJ&p_=J3cdBJ{
zlHe^uay_!k2tA3gL`$<FVj<L`=&zdtc-F+PgRC~+ccS~T`KGl-#!%iQ4B&c%Q3#LT
z#8XCHL<H`t%UH7uU&yhD@Q1&yMhUt4mYOgG)~|EKvBJn(w(N?2lmx6q@E{OSQvuG`
z#TQPDh{(t2(>#ULqZbzY3R1@XV>n3?*wk1P!5&eA%7^p)cKKw;L&WAK))JhPaNG}~
zgq`}x<1+Gb1A-i)H-|@Ng~w;~Kw;J$B_IajMaUJBB%7~UHs+uhT;*?KA$Wzxvk$Nd
z={e#dNNcW^G^VY_Y@@o+B=5&-2fD9OrTgxPFU1$4FZ#J@Q7xq^`!piH9Ekp-TzK@T
z@CB08=g=WdXUUX*%h#f*bpHG)B10;qp8|6op8OQ7fD}@`mxv#f7xX@ER-a-1wz^dC
z!Ae~|xz0bUo4k4LzC9`r9xE6gqo6i%<Xs{zJQWc2lIR2(lvTY-DP4bHtzk%5oeZ&s
zt5n3t=;tr?`|Js5#HY+OYW81s;$iLQ@4Pp-Klm{@Gre2E(d#_=E@Ak<VQA${DQ_Ta
z#HZqu+-%PVmObn3Kq7&Vv*7$)4Uu2f&pFj>jq3+jLwHSwNmR$G?fQ*{%DQ)JZpK!%
zsvWd9H@`h7+SdN!TxH9WSqC+jg%!{o%fM*WjRR3&v1Mkj=Hb~!vsqW$Fxm(yHIyvs
HBw+7<sNgm>

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.core.datatype.doctree b/docs/finn/_build/doctrees/source_code/finn.core.datatype.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..e2576c7df3a7905e05ad1e9dd13a228f05b6eaff
GIT binary patch
literal 29083
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.core.doctree b/docs/finn/_build/doctrees/source_code/finn.core.doctree
index 515b78771ea6d47c72f723398dfa31aaad4f25f4..9fed3972759b5f7fc14e5769d93ac1d88ca55d79 100644
GIT binary patch
delta 662
zcmZvaL2DC16vs13x*KC_Z9xh(X-GAiG-jo}6}6xzX(foLs1WLAcj|vJncZ$?X>t(t
zpi-EFu%oNRUW&cjQ$B=V1aF?itDm7d8$*fUz%cXP`@Q#nyqWKZ=}$TBS^7=sMB+eu
zMZ$;4@$emad<hAWvD~)j2F#YBtUQ-bWEo@7pf{wL?09fk*D!6Hxi;-cp>x;bKBbBc
zi>u}Pv*J|84Sb8PTMD?i;V@=cu1^(78TTEP(~#x5nENkf*d{l5&!h6Ctc%Jh6CSkk
z(*yVXKkly|W)@<&FzP*$HC)EJ>$FR)L25B<keTRLo@BKV`%8&rpDLS*afey0z@{5c
z>u;mDiCeghySRr3RAky_*QOqaT>Y(<&@I#Bj?0vM`ccbm%59;+v2DuKZDLsK$dO?|
zyGea&%e92aa)&Dom$iCwJ3!?QuHiHmkXzF+i<O{hA|Fq_(2yv`lON8xw&k0iM}2AH
zj0%<1KHre404}S%DhN`;I+H<@hUp}t3pKK&p{K%I;g9)q(d!z~r@=?isi29gp`N-P
z{j8D2u@?&EQO+QJGS&ZPkWMm*&;1*V<YQ_X``E)K7<RD}h-1ub)A+qQgKx55$7UV7
r^#Fyq_dOg}U==$`?0r;SCTElCJiJ2YPEL?SB32nT@wUITLMr4BHHh^$

literal 81755
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
J(CN%f{XekSxlaH9

diff --git a/docs/finn/_build/doctrees/source_code/finn.core.execute_custom_node.doctree b/docs/finn/_build/doctrees/source_code/finn.core.execute_custom_node.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..ab4f77e7bdba1d31b3967260f86eeb114389c2cc
GIT binary patch
literal 4768
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.core.modelwrapper.doctree b/docs/finn/_build/doctrees/source_code/finn.core.modelwrapper.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..3384f0c4528f2bc42bcb9c27884ac86ad9753563
GIT binary patch
literal 37452
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
K27RKtvh;slser5i

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.core.onnx_exec.doctree b/docs/finn/_build/doctrees/source_code/finn.core.onnx_exec.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..7529c89d10f492df2d88b0823fb81557dcfc3ac1
GIT binary patch
literal 10978
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
SE8}W<6fld}LV%ui+W!GIQ@R8I

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.core.remote_exec.doctree b/docs/finn/_build/doctrees/source_code/finn.core.remote_exec.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..8b4675413117862af218c9588e64c4cacc682b0a
GIT binary patch
literal 4084
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
K`_ygA+30`A-7x?F

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.core.rtlsim_exec.doctree b/docs/finn/_build/doctrees/source_code/finn.core.rtlsim_exec.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..44778b6af972760799db23060282fde4f910b0ff
GIT binary patch
literal 4406
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.doctree
index c28b05b9f09f01e8bc7bb0b0828224caafc9d9b4..18f4422ecf11f4fbb86597f46bd8752726432d0b 100644
GIT binary patch
delta 4379
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

literal 56521
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

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..44a33132d6edf7bc09b33711106b98799d663884
GIT binary patch
literal 31441
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.doctree
index 87980c4e555347115205ca81c434b5863b6ff31e..d39d8db86aa9882418fc1cde01329a8be3e575f2 100644
GIT binary patch
literal 39345
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
E06SaU#{d8T

literal 160747
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
CCOBpQ

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..f592107cc5cd75a779aea4343ab1b18dea38adef
GIT binary patch
literal 45944
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..12982cc9549116a8f4d603bfecbfe604ca7f34f9
GIT binary patch
literal 25637
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.templates.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.templates.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..d06fe5a5e4013093e7488b6f0b88bad5964e98d2
GIT binary patch
literal 2908
zcmb7GTZ<bv6yBS?>%Dk4Nz<2P%Tn5~X==Nrp`>{zB#?));8I#j9~y)_qp`%!NK;+b
z-iJW@P)I;;RewhRV?WJ|$M%-c#9$a5N$2vN@0_FGcmDq2V59o^eyS2@MQ(;trOX7s
z7X<~AHvAPH{t;e<bKlc+W|Y$j3w{G95-##oGZ|h6zTtNbORP|`J<mJ5%XeRfb8L33
zusK`V@`FrBIZT|fs`!<ta+sA<no>)%T+N1-6=hB>GiQZL9d1TN(6jRsn@5lQ=PTF$
z|Ms7uihy_C*R1cB6cO6MPxvO^_T47_vERvsWMS+k)bCSkwU{`#Tj8`VQUgr<Zjw`D
zAjEe^(xU#_OI^8KOlWecSr*SYzia6<ZUx@w_xM4y$nX2_M>C}_O-U0ricyb{8B>4N
z-jD<-s{{?6ZwF+k4PrUH*m4tpY)UTVd`Q!@$$3Y}l+9PNR40&sgzWP(B;aHGKf(V2
z{^v15K%+$!*Ez5ea*9;>;k)JLyiV;yB(wfnrNrAq2)sMCfja&fAFQCHZlYv#QiD`;
z3<^i96dSb^8<y8kBczB#PR~?!_D=3c6gS<3wcwn;XBahw2eo$tRSs6Y8?@dHngU=8
z@ZXdAbdjtGSPy`0*R<k~Y8ucsfQ5m@g_i96QM|k9`-#)B7)V<LhYLwv41UirYk?yA
z$E~)ZWLinfWEy<;XPP^(WzkW1f9!ixCYh#I>3{_q05g^rB^Cz_yP^9M%l&5QbdJ@L
zRSAj36L(>*6Pb7&{OwFBE0tv{n-`n@C^jeQ3Np`>E&?R|nC}v$Q^Y1`pz>ZVVL7WL
zWF{;pixP&#=0a1`V}Gbwsk9|IyJC5`*z)_F=IyfMZ?U-mR+d_47Kb{%ld_4M!d!nw
zwFFi;p&2b8=~;~$k3ogkzAt3yEMXGGjZ?w*oXrML21elf{`w|iS}RRBm1)j2aE`7f
zHuz)Z?7Egtr6u^&8#^~t@JrvXl`b9VKO6t}9r@*};p4%V-+cW9UaX(Ep~9cUNDScO
z04hgh!5`&RP92@Hs$~Vgh2i1vXqG6Ql9ZKT3GBs&GWOj>$qc~)7m<<@O;XHJ`@T<|
zRb(mhTLRQNN?lQsmVSV@5(qF)OPWW8$CU&aOA|@36qSa#RFQcRiFLx}r811H-mJKi
zSaKzdsEK+^Qeo&MkAXB^?k>uLKk|nN#-I>rH4wp_<`~IDUUf^~FIh<t6GK5IRlJ8$
zGNCXX8Sc-xwWWDF8qH=ibSTS}94b8>rR-{ilV%kB-FPEvj5o-lV_+~tKKS&D$AG1;
zv*d=EC|R1hzc6E!!tfW&W|bLkiyS6;mQGLzspa8f&!2);1!*g+b)QtjDZKF?R^A9{
zn2wQyy%D1nbUwh_p<SZ<PRzBmbWXUK@*IDVbthMm=ZB`CsH)!_irC=hooZb#Nv;yw
zAb6T^ih4nQ>*7MjVizK~ed$U#6Q4BIv!f~cHz0{hgv^lYMHjdo`+{+k^>Zhzn6MOu
zc@0~fF$-;XlU&hD!U`&Kf|03NHQHbMZ6>ecJHYSN{Qw0B7GaVK@Y)hf^^~E%U|QaS
zA+W;Yods;tIQ3tlW35T+mjT4kmbHs+WIrAikncue{mozS=f?M<z+RUC>s8<{#)hB8
zas3?chi7;(b!!KfJ-2z4E!+Mx`k&6<5e8!?ypDbUpXHF{-_}FV`J+`5RDK;L0-Y`f
z248DQEY!uh8h}+veGagI3dKa_Ew8GhAKVbOr+aG}dkd@8rQ2)z(RsCvt^V#!UCqvh
q-$NT|kM;4?L-paAX3(K(g>AQ36CbqVD%tyKY+y~T$LZ=O!+!yv;C<Tw

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.tlastmarker.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.tlastmarker.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..6bb7fdef37d72c0b9e21f1888ea0111464485aa2
GIT binary patch
literal 27147
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
TruYJQGC=llm7J_(ZRvji1ddHb

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.multithreshold.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.multithreshold.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..40ce00f406b1ace0c7141edf75bef5d70f19a98d
GIT binary patch
literal 15531
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.registry.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.registry.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..676dad32797a5f4c4e6470db2bedbcc5d1bf17b3
GIT binary patch
literal 4314
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.streamingdataflowpartition.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.streamingdataflowpartition.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..93ddbfe4aa871e46574ad732284f5f85b4807004
GIT binary patch
literal 13945
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.xnorpopcount.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.xnorpopcount.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..5c1950c03f6c89f0c0d5dffbfa42e1f47e50b7b6
GIT binary patch
literal 14107
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
G7yk{)x=wHa

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.batchnorm_to_affine.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.batchnorm_to_affine.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..7e7c0e91d44c7655c96717fddf955046b3f2799c
GIT binary patch
literal 6433
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.bipolar_to_xnor.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.bipolar_to_xnor.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..7ab9e0301f6adb07765038346c29882bcb5cd984
GIT binary patch
literal 6639
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.doctree
index 8517257fd55c81aa3df449dba743af1678a13412..213c8c2d329eed44a0a4e18a09075e624af1c7d0 100644
GIT binary patch
delta 1928
zcmaJ?drX^E6z6_@&_a2a^6Y4J3uQcXn{$ayBg~)^ZNw}-7`PSJdAI_rKpjjc5FfOx
zV{GReX0S0>K%B`ENRv%tW@5HP5;Hd+$ucz=h_d<k$ArX06ZPEt71lO$Bt7@ubAIP{
ze?8~)^4m|!@7oPM`lIvZGlmECcxIyoYxJ*V!b2s!>VDM)1~5Wmg9=+P!&q#Ae0U1n
z4XVo>+JLVz2l~ue2K8Ol9YP;-;^l&LgE&;k*qkfXC}YL)c%{;$UqKG`7_q0tti{V@
ze6YvTO>i%4BYx<I5DdT|90Bq?`^3NW2hX|T`5?Rygt{PXuStOVpdU)03JPE?6xO7X
zxc&Y{57>q7BGT-n&rT2AP0Jek6gQ{>znO5&z(5zt%kejQBRTk~-h*o2dLw*DpbxM&
zSe^=#QP@1x8K1<)S}X1dtV=mdphz^d4Qq2;IDD)Omjb;;xJ02ZM1B&?YWY!!wEjal
zo}8<|0#5hW8DW9IH}DVUNcovGU8C=!C(pd_Sg+IWhlm1-xc!YVhoJ+L3M`5RzYk5B
z5?De4!TyP%Fp%f3|ED-VaF#8G&kr;+bFNJ1Hin-abf&?whD6BcnbMaHw^I?GKCCd}
zphYp?t8rAsaU>DP+B<OIoO+rl=G3Q|`EiY+I*uZhD5~y6F*9_LiV@!T-rLN)Q{#9s
zjw78o>ZH%8eHG-#Mr`n1RJCQ7sJQ2F#<7uIz`Efb2GQSHEHXWczYOQ%o2Dv-4`FRy
z3Enj2CvjD~Ymgy~bl`Dw0WOYIveN>vnom%WPm-aD<5SB>YLlEh{yurIK4}$8#Zik5
z@%SqCu}G|rO+0toL^%b^Bio?zK0<lqu+yZ=6Q(2=vMihrSn-+U>>~aNA%u_tjqiY1
zqJ->AcCkf#<HS~W6>XMMTsUFFHcJjBjux|<c*C;Uyr?Dq$gtObzp}*edUwU9klEMu
zK+B$8{${VrFB2kUBF9V3p7wTCUKujCd3Ses+Ftf{sQgy~2n}=i_h_4PmEm}Wvrr5h
zHz_2iu!d2SzKtkbZiMavy)%!b+tFc9#mupX%c&(RASiIlQt*DtihZtJ{1EwY?^vmU
z9~HZavHO(O3VLj=oY)day68|aeZ0%SKN4WiTV=`y365)Iq#q6;SgYT9+M+A7oo&S)
zdyy@c`!Rvb=UYUmJ~mXTh2ogvJ6k}gTb<QTk(Z2LBBeq8CE1YdbOygdds%n>mGD||
z-B`9Ws_k}h=PlV<?Y_ao?^Ia7rUX(NgTM@MqRv|G*h_h##MV7ct-HLPs(5pGP~ZiX
z=mt(#xw0Y*(W8a)S$A#X9U@!tb*cO{u`@*GqmvH2Pna$;aisLCYnpgHY58%5Yq&Jg
z$@0Q2lL1A!sD%HVn$mTTisTV8&;+~T6rAKk!h^yb6sBJo@#D~pC?6NbA2PRkTD%=y
zK5x7DAIAlg8=Bm3$}KtEGT$xJ0x~7wha!QL*Co?+rI2zGn&o9M$&V;Fex_KV#W(G^
g$EXv<ToM1dm~DTflmoMxmO-IP3UVmn>X|j{KY8MA761SM

literal 45675
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

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fold_constants.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fold_constants.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..e663ce9c4f22c0e6f2aebca1088d4103a0c7099d
GIT binary patch
literal 6271
zcmc&&&2J+~6;Cp;9p}Tz%n*c_1X;_6oC$UoSgn?T76v3F6!1zjqtyzr>MeJdUG22H
zo9^nw5j$EqAWfvY!1e+Xa77#t+A|0K1#XCcV}!H^PW)a~ce~q@Fb+bR89C~D_3G8D
z_x;|_RzH%TS<?Sh%L(j6x?bG#1Bb_{S|h-O`!fA7J@|S0B<-kX#LnX&iEN&#C1BXX
z^_+<N>AR^|QjM6~(hd9qU(`fhG~P`+*sMucdc3ry?hjqx@5zYy@i2%cjE?q(f#>|#
zvI9Ss%$IR{5;zHt5fu<weaxrCjykyR?DI!|k!s#W?M4@>ddToFnTj2;EN-cK_Uyh|
z^<1B){baz@I+HST2Z@BZNIbV(Cx$3g!}eGl1BmaM&nD(;%}K)9V!-Uvhz|)TQ4PsP
zw3UjMxF<H~MzN=UaC9C-r*X(^enjs*f<j{RWw^m(9kX?n7-ypBMKK<-f3lJc)OH*S
z*Pr&7<79fSxxT}vCCwP6iO=Clq7Avfg5MYL`x1T~dLHBwx%yEZ2*&kC(2zP@KqVcc
z&I2gWe05)ZC>8a-Oj#oCi*89c=kvmeBiqQPYEegIQ6*7?7sn(<Jis5dgJJu{4D`MS
z3g68wlH|CY3`EbkL~i1XNlP57Z&awYJK9v*uD<{y5ZkLaXZI@U^~F96SbSNn!qe^N
zRNui)i*~Hog<Z-dsyOa;<q4ew?VWUHTc2URA4u)ZCBmw19%?*!w^$b538T9weq=1)
zu*a^KX>&U9j<sVT2!#=kd3458GLd&c<#FaeFVRGdbT^GW;A!OBc@#w?`uqZF%q6uD
zZdHtv#l$Fta7kvTGnt8TZW&F@`#j@Y71ie~&OxipJh>S&KYflFKC^=pRs<t_=JBXD
zbSc1Hs(O|!)GIHRFCw$HNQ4))HcULv#NQ7{AP>RATZZkKK#VexnPfR7=KfD9u8EYv
zMiC1|S=V3v4nrz9ZXfIGj^DeAwa1kt_+I8vyQ-0$O$(9EK;ZEYWzoX_Hbd?^h-=mq
znWfCb;Y}~6Z0@;|N6ahJxl*oG=5w1^1hsgTcK*L0rOs51q|;HW`XOp1ydXcn=o*dj
zayBA;{TZ_O)BNc&lBz=>2>Yq(-7IsaD0%4Qgt>ky{;C>S$%_!_F0&rB0SKRlo@={g
zf`o9+A|Ibkq?){Z`H<K*N=U^Any6&ah$Ah3OfUE&()~*eS0~G4P066-YI8}SnEajC
z6Mv`l2jt(9=^=&uK2L+H|B#0sN|m-0yd5MmOeE!3)}}I}eeO!p)@5Bc@VyHpJnY8?
z%-RUyb}#{iJL`z%i6?ux9sR$_&TQ_Vc*Z}<9#plyvi)SQf9Wd9rT)Jb9}id<dKaC8
zcIT=nG^|!il~CWFa47-@CCKYHJ=)Wk&XsZcC1NitMEbcE<^95=9H2g1VZ+d(GLn0F
z-SK{bTgz^uW?@%ltC_;7!ua=M3eQs`Wus5b5%uIHRh+r}vXbqNPRx{Qpb{Q=E>d5q
zw5Vy>81KoexB~e)L<q|qs|ag+dwFT;zlGIIO5<(diF@OX1<{)tJ(ufvjh6JdQuKK?
zOZ52662184rTEoCxm_U0ijUOYD{MzsiIm{~Wz;&mUi>CEq!%<m6b*iT6@}6R=EA3{
zXF0^=vPLi%n>124ens6j>TL}he+vRp4L>k_*(F`~L(MFO-OOdKzbfahTEJY7KmI0N
zM=5svCVgdzZTxL4#&6M|2l!LrV&i!(IydR)O#9xgHfmi8Ki#79?`El!=M~>gdj7&>
zNEl71>XuQqI5b`G^^v}4^u-~aT~;kSiD(dD6$60H9AX9mYAxncqUyrP<Ti~=^bBPf
z=|a&-RsC(|C1{olA8qwjbHshrRx*fEEF6Xbf@G5ri;b*40qs*P*Ry33d01`9z_w^`
zK)blEMvXX1qdUVOkZ8JiY4c=RZP7f&PbSus<|`>6E$Vwibi)&x>%<^=&p^1xHN>Jk
zZRs)#EaS%PKsL|ltIddqK_o4YpK&ieSyAhPdBw7(Zu6-NS)u<+;vA`_Y7QSHBhYJ6
zZA29+=yEmzqzNmqIXx<Us#>}%u(*%G2Cz_lC34t(ql-2)ReRM<i$_rqS%UeF$0Nv@
zShZ!UwoUO-qEgdTQnf#~Ge=_lKG}cE(4FzndeDFLee0dC^<L|K<?FA%0Y<7Ab5zt0
zJtl_41Y|`OQL45)=8qCK;(B6}suhgP)LkliBFAz#mF>8XMk;-D#(_V?dm$Rvu}~Qe
z-6=IGEtbf@nt{}c3+vi)l1XS476=JzfQv3A@|i~jw>6}2wizgldEx{XdTC(opok4(
zZk11JbFrm$=EknE)osghV>a;UAsLsA+%v?X+QegG_=4&FVLlm}HFP~Z4zr_H$U}=t
zX84q?-;1Utgx%t5GIG@xQik#I(b4(&c`v*`(c$-kXmsT8vm;=}N2%JS6GV|tSdvd5
zWeF*-0p9)MtFJ*Ut!QY^T|<!BHGBCrG6*p8bh#YrYlNJ5xS}c90KVWzk)EuneOT7S
zDx9of-!dbJOZ92Zjq76$K~qea9?8goMQ>nYS}fs#JMo1t+0+v5NO<_cURS+<Onoz+
zFgVsv68Le9lXvynEG;jvSth}KTOjw_(68|?Xp91ph0~`=h`xgcxq8@|`TZq~B(Pn7
z2vz5S;0}d`I2ly&cKBq#9r)%2?h+i`$)(!0y?~us937BnVQ7f*oF<!3)h+Iy(HK;%
znUDY<gcTuYxv*<#nf6BO{5CFvRY*ie$i|_e=Mx023Y5BU4F<Jgv7ok%W~xAM5YT*g
z#&1(vdW1jX1pl9jXNhXkKIKn6iq#l>aq?6=dzy$gCYc6(WBia#Evb6eeiczU8&ww#
zs79PsA;ql0jggpA5WPSC8<8r;wc^ceGI$~$gQZUrwN<tl{fI3ziP|^FHVuTlI>$58
zDnkq&{04S283bNogc|izbHD<-S)tg>Z`FtHROlm8N0L&*?mVq*XGyIg<`ifx)RJ&j
fC@V%dGX#s!QUPxiU~L)e4n?~xFi<v52EG3PaD8J~

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.cleanup.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.cleanup.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..a12493641d50d9f0b593ce4914f0cf51721c0741
GIT binary patch
literal 6249
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
M78ocSC;iU<0iA163IG5A

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipgen.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipgen.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..8fc625699983bdcacf2e12e8bd355053b8403f88
GIT binary patch
literal 6841
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
C7$x=q

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..2d494a41e94b0710566eeb47f1f841443eb5bc97
GIT binary patch
literal 8183
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
SYeQLfDfs1af-dK@*ZD7Doer!3

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_npysim.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_npysim.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..8ed36707c989351fed68500d6d91ee4f8220bbcd
GIT binary patch
literal 6569
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.compile.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.compile.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..0a36c583dcb1c37f59ea28c0b6441ead5530b772
GIT binary patch
literal 6209
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..a446704bded33ea28f6691f1a5ce8e403588ee07
GIT binary patch
literal 7211
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
PkE&f>80a)kd)@y5^+49W

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..20f73c1d9fa5890a1e2ad6ec86976541fa6b41e9
GIT binary patch
literal 7641
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
Md0?R1IPG=*1B;Jyvj6}9

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.doctree
index 007833da517e60e7ecb71f43079e149b5313b613..3cee997c43a9cbdfc9e2df405a01c486a45bb496 100644
GIT binary patch
delta 768
zcmY*XUu)A)9PMqlr0Y7jRT1gtsyKDsR77<6XHK0Ux?ve2B4TA}bGs8wlaM9YK8$q?
z2E{x~?j3#dK@b!=D8ir*dr;p6=Lgsa@JYXc-ZVjHAdqv<pL=qD_f50w{isyy+8j<r
zK1yE++ejtZ9(i#Y5iede%a-XHDrY>q%9r^Vx*<W%bFY8Nf@W0CDXMCiDqZ59?3hKz
zrj)J3#-m8H<;3}ZnHr9*2{zBia^6L@k~qWWQ*nu}^PG3J19wLb1n_zXT31rtK6x!9
zdy<A#UDC=OM-X7<!ho3|j~)&J?sQ;Hm)TA8V6YUVEUfki@J66`9kNpa+>zL?R$_mN
z+RlF^zK8ap@V6gf;lMudbFfo*(hu7-N$<)!r(RMsin^=PlBNfLk9j=6Lp;J`Ji${u
z!vYFWQ3CKBI`!gZrJ_>H0iXRX9#1YRmZO=5IEt=C-7N6BCqYwHYKX7CF#YdB+;GbU
zYEzZZMM_@6(Hya@Y3Nm6cag;mhA@udIT>k8y9EVD{ZVG}9LN1phJ!o%(pD^s+FZd2
zL7f!u={)!SQ^Gd^f>@Yy#4S*EFN%gs$OQ?n1YKu?(kb?NR8C=ipEB(haEn!9cS)9g
zi5+X)kCN%WhR}y1&tQX-mm0fK@`<F|8!_@W8pU3FQX=nSx6#Hn)=)zWTdvn*C}rwY
zEpeWH`*sd%Ika*vGCtf!uMkdPOC&eN)s-B@UZjq=j6<Z^u=>czK!!vj|8~ZQwsVMN
F$sc#;8NC1i

literal 71069
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
A`v3p{

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..951f6fc94b4d18d3136b01ee1f84d020df532ce6
GIT binary patch
literal 6553
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..632480f19e3c8921ffb158802af93470ad598bb4
GIT binary patch
literal 6823
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_deployment.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_deployment.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..a315244a5c8af11290208dec82478dca3c8fe7a3
GIT binary patch
literal 7553
zcmd^E-EZVb5l^z2B$JQXk0VHElasXqH2X1=Jvec@(Sd*i2^290><S$xPQD(yXWA2w
zZR~b35iENLLfRG0!`=C$d*v_SFMxl8ZzSLq@qiFdJn*Y-+hfme$j82{#7dKOm#eF*
ztE;MiReopj!-MTP{ZF;r&`G7|C*2@)d6KCWB8+(;vk$WC?`99Owra-gFbUJx;hCBP
zha)`Sjd_s0m5DjEoNz~aVNmjmhFB8IZ)I(~Y)DV~yz)xj8F)d^l`#vFK^Tu2P3;b%
zA#<5z13x_Mj@dr{p6&9;506L@YaF^Mgpf>#T)fXGq?~%?RFa+|=%<<9muNhLGHNMe
zFoDd(B{459sHNOMJ+<h20nd7ApQ%+QW$g7+3B!^hFL-VOqp4-bXGsDgo*Mxho2L~w
zji!S>bM|9CAf8k$OE#oenP`ctVvSZ5Tk6f7!!X`YBIfWNvc(RLE-_C=8{5H|YQl*I
zub8PDC)n2Z-a^_}7n4YM!KBMvH}{W*7r1;<IZ<=i;zevwSU90;_<a(;Pvh67&B98t
zr?=RKnY>_#vs8D_e0Xi+2G?=$=Baa55t&%($&97qhUiqx`2MUJlh`p<tb6HB)k}BC
zORGkUj&{lX*lIAe!hv;G<+@+d4u3!V=68GFBJ<CuebF@$SVYw6j4XE5*Q&y-wstqm
z3(l+*jQ#m%+{n{R-V@u14{=K^BIP(w_);5hTJ*+FJh;6~<5~u}UEN&Ui*8wI!ea`L
zTULa)LQuH3EXm>_m$vK0*LCI~p%=AK76hTxd8e|nS~5m5S!S~wmbn6MepS3_BG2g0
zjz5m(WbE(iz(l%?Vh;Tdct(!*2Bh52<M;V=JaaPZ##9J<N;}0>fRy>tnf;+K={aWB
ztv^1U^@R`~nR<U}YB4H2uBrDmyQ%f6OBMRoiFH*ToK2M<JWZ7=S`}O)u(0H@?;-70
z41Min&n_L?L`x~EDrUipiVe|YeH$O(mO9pp3p>6C<$sQFeZNRXYNZIcLh_VQm;Z}%
z$}hsWlwT6+@_%_g`K#09P^?fT)z|pd8P?z@8uMpQctT~)9xHE8JQf#dW8l$^{8%mJ
zKuFy_YYYNr==6pgP^}D7-#1|5A%)4eq0#Hcou^@9!ruu4Sw(`yJw(W^N!~V$StP37
z_L(m;;F?`)S1-5w_R|!-U&DTH>l0{;O|_iQo%-mM1ReiY4LKz9^@s;9E?av7m{ir_
z=2;gf5bJvgLFQNGTsv9$!h24`TKB4d&3aW^E$WS^h3JSbjiZh^F<u2zbYB02E&ee(
zyUL`NU=U!DOuhOnFfaq|Cply01=(nBehyXwK^{ebZ@D|EHBk5@@;%2R4<&{}76*82
z0uU9z{dcq<b1Ip5sO6dn%*4NGOMeHLeLgS4y?OGyv|kC*8GK9n|3z$#Henz_ZQ%bi
zc`6d-U(1B~pVva)N12pZ%=fK;J3L8Pd;~n^^Ta|OWVzFFhXt<Xgb^UKB?TW_GNk`4
z!i82pWU<>_{puvr(!8Lop)A%9Q(57nc?43e#EGmZOcJl}^WD`OmKRxo^8h6Y;Z!XV
z)FP!@w0x0nwQ2>2IWh}~3TubZ{!s9kYu(H~P!L%O-f-6n15MXciy-;`HbNQxqZi3j
zu8y|oKV8V31SfMBd!9q2aQX8VEIk%Q{!#n7)qYyitrlLoJy0#Ys?f~>k`kedvgNgB
zlGD}d%+!l|k76q?UV24v7tM})1wnnHs*({!#VhxVO5}$nYa?HXS{s`xAC;~`HOJ_S
zr}mQqumNq3UM**-kDkB!wy>`*1J%?T+Day0OwneeLWPaYsBWWs*zNzi5(~=!%8p(?
zB`=U##fqaI8I<&$UIn99Kr10zKFU#>_|0SS+j9Ul@q6)5{6SrL(uH*S2(UJ~OPc7!
zF;z<ZsW9RR?HI}>e>_IWbY~?DEimX(jspxjSq}Rng9DaKz){-}^}42w-i3Z@IS5Uo
z=rOJM4XrQTjCuGRzf`W^3?x0CfAk|-jzH7s9eT=<$>_%zjNYR^Kf#}x7Hdyx(LR4u
z$@C#R^<Gh@nzA}{4R@wDd<QN}4NYE{`TVWSvPvMcHGw@Y7|#$lO#|=v>aOfqikmcd
zUbUPwrjDjvb~4usis@*om4r(P#EmZTW$F^^w(%g=MS`2DrSC95MW3&%VOu@b9P$9T
z8lWJ<04-jgNH&fzSj({~Wbb3Rnh(?1$7n-_j!hj<dW+>6)I$U;zA^|yiS7-ryxf~t
z8`Odh(y=`uIFy0XqDEYV{^yuF$O%MVH5Bf1O|cI>DQpd~p)yv?C*+OUo?4H26voo_
z`2qK{y#=)@m|qSX>N1~ruoW6fX;LsXRKw-{bO?DZg27asKrUxvP@3=%htsCAN2=uo
zQ7Ua7phF8TVC_^6I(Ir~cx7s<{?g`g9LBZ)F!Ol~JCmx8%+y5yzPgl#mXfLMnKv^c
zM!%*=X&Jdw9a>-N-TS)z#%H@PcV4>txjRs#&M_lJU82n-u$X|Yd~7aL8$Jt$DI0R#
zdd}1Wz7nVx02tAeqe~kl8`h(4a1SlEFc@IJFpcNh=#mY*2^FX<mdenclGK6+@7i$F
zab%Ys2n%b1hYA(FKc56%)RZz1r=%$1sT<m8%7N<=>Xk6zc6Fw97f0F$Ug8;Fy@<|X
z!ho2ukzC8=A~M8HwT{gshy~L|g!|-dwnoC#*Kb8UvZ*>kOabm=VHB(p{1!`-lPgO|
z86~?rJBNpd-RKCoCFq9naL45bJK#)qGPOxFNFvR!B_G4e5>{RTz4NKtFT*UYc;L(|
zLzL+<Tg5Um4Dpr6<8q*v5pwKfiKb+I#DXhDwzs0T;aOw546;&v+w?LYtB-4KyZ{YN
z`fvjWCL6i%=rw#KDu;-`OUY3n*~Av!Q26-4Ul;w5Tzx$mGX&Q6Q^awCnJ?(E8QOm6
zFw{h3!EHyN#o*w4O?=_RC=uD1y`M%XG3nct{=SsQ{bM*u=uk~GO$1jcH6&@j&UcBA
z``krr9$_uPIn}P4jvumpo1@<K?YuzJ`d#3`0e#O=D<&l%2H{1x-E<*jo3co2d>ISD
zD<m=_Y~#|`n+Hf*H7a#pG#Szc<$y|d`ZxskWg?pA_UI$Jz&^wuu_yL4!q9(G)g&&u
zZ}pcY&DRrqkM!F|sj%=h#>`tAWi)+GE#)P5nV$2{bY;s*GnQ~>+J5p9+*cWd-Wbg-
zKvekwN_-*zOtB~K8{G(XrfQ?=KzdIbXb<R6Ay+jN3i5)_7_Uk(d~gD|(YPP_rB7<s
zkIfKE?q*G5vshJ6x>A#m#2rhzDK=+i<!|QH3Q|zX)<U}rk&ClSkll>HGSk$^Yb9Ab
R%BoArFV7QnIj8;Ze*xVIG5Y`j

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_driver.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_driver.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..b6f2de2cf25f5ddb97534175854c6acf52b6dd41
GIT binary patch
literal 7309
zcmdT}TW=gm6}A(P?eS&eWY>#OY-p{xOg5P@3o8^Xfw&0?OeR^@LIF1F)O6QO^|+_I
zx4YUGL9`1JQjF?_-QESn@``vsE1vlcNW3AQ5s04=zEjoR(>;la9rF-&HBMLcsZ*y;
zedpTm%)S4!jT!x)YPq44O3zQaLFn=%Q;Re)=7G%K%dY)2dyutNGiC=#n8psz)C?#b
z;rVXNgX~@=X4FE$9qENZNiP~=UM$?p+IZQJp7eR;mD(P7LC}>k3z9(?j~OlP4x%A*
znPdY$Jm`+u9)Hu0j)J$|wB6X-=dm>o-4twyE11sh@<S3&-8>a9&1#C%&og~A(Kwep
zYCdAngUrO5m=zb*e6FRQn)AJYXT7w~)Dn|2_WG%Wc1fETJvV{o)Pm!)B*7$}8vz@e
zr$sl7CWAh6_F_IDnp7=FHl$aXXo;(0nRXN#>PK4#VZ4__%;8(4jxF3@VxEjNwu6h+
z6HnE8Ra4zK!MQefE~I^RDT#y^9Cn%O<|t`+fy)mo_iC<Od;%vF7H;Wf{62->XYgy&
zX`!ar(`Rf$PhK#@eV$VJRk5tL!NN7%zIp1L83dV_@5zj%;uX=UX!3(;O(wBp6j?{>
zRu!#Vgx0En-RNkWt^lVEhE_PR&MaQ{7Fgc-LGSf%YVgw~%%*+OHP%>I*XdL(w$)CZ
zoz>R3v%KK!l0oTTJ^yi@r2L-Pgt3SlY7S1wc??%=ylK%JJMmxxGL36KWvzb1_BHJ(
zXwfCThy_6?wWq0YR`W&?#;dHC!_qYX(pSX~jhPww*vU$79*+HOZG~`<QOpw_@AHfx
zb{AZBb7OseA!f9{V$=mQCqGjJ0C>sIpZ(eky*|s*`W=i<cLzcUj}*Q)QMectxN7Q?
zO&_aO2TmdK^mJXE2WJ!K$B&7_CotM!rKiMW;Vc^ikG$`(n$H8DdiBiuM^MrDhO<+P
zgVgs;=y;nn^gW1l+ni#eA#?Xm7|3eyFWe0U^CqGl8^$aWHE4XDA&PBV+j_h0`%jW|
zw-)a2=jOSt7V@=Oso}{KWc*!K)3D~1hzBm*s(px{Se4=WSvRM=#rGtSnP27e^3#Pc
zFmf8w@>JTDe1vRZa`Om~Z8fJ4qAo;7<TZ{u=Eit6a?*YM5xV%p^y(^+nukIVbu#tk
za|QhjxgIeZGcU-*pVb0J@+d;2&cURXF~bid-*Y?yC=nd6IKX2Qfv?EZ-lNl)JITb`
znyF;*kRzk`6CLRHNL-#@U$`?%*h~8rJDo~r=nTIV8{)4Nn?d|*0xIIyheeE5AAKX{
zOmd6jxOL}9iZHM!5wm27f8!WAvwwsj3<wU8x>-_iYsdotQgU~RIS%*fIgD?B$njHx
zy+tXqg-mY`gRL~kpSspA78joEP8^QFe5szZSmQL2mSFqb>T@1g%!hdHk;NihC3m|8
zs{h}_o><u5aSeZ~`ir`)Rjnnzz2_Z)kAv#n+o^QIF}J*dm88H(lEAZXTM3tmMi3QE
zd8K2!UTl@62c>%ivD>}g-KAT=p%0wM@Uw|E=2Dklb`*zEf}D{1?hWg}lR__WG>ly<
zFT^xcz1Pw{^HW{|C;MNE_K$adbAI6_@c1|2@vk$%L;MrQ-KZG%vnJrLlaU>@uUYLU
zMVD$Zp-bOdF;Q5xDFx`VMCc+7|JHd~b+u4am5@f9*vOOdUg6A&a{i5CLS3!PWtdTA
z#{DAq{z*yP$hV^6eO=|F$;}|k9xcw!%$)9WiX;zN)o89<r9ON<Yqvtnd2w?^C!v%@
z;UanLdr0ysNp?dk(758F-YJPsB7{cGvbsh;3Elj+j3L+KXp?k!b@cI5l7GyQPc%Pz
ziDu}0m1y~BlGWld&uYalkHx#slE@0A5aNCH;*&6^D=eh5qgfI|cSI%<iC+~Md`fqM
z0>TF;FsU4CDhW{Yd7@<Uw}r4jGP%;cF;nWLp=8x_qg#+qEd-(In;g@Qx3s*JJmeO4
z@>aQkQ%U>D^rP?4c9d3*zDrMe_BQHaFuF&7ZsSi)isi?pXrH6SVtR9(dKS{DI=jvo
zZH^8_td0pT9pIR{e7q=$&e7j1QAe6<!iirr;1JhMOY7w1plsra>$G-OwVV{`S|IJR
zxwlfxm?ocEMEsRV$<RH$Ox;u6P94O$l5#UO|9y&-$;5zLJ=M%}y)e!&Kwifa$;J@|
z%XtD1-g_7><-;`gF<O<OV^dR*-eS83b=6QiTp5I+M2~}4Uhd4QRcg%!>DWG`R%?ct
z7WJhfv;@c0;!VKvs+mE$sb_48{I;$`AToB$7v#Olo?3}{6voo_`9AlvoeOG7Fuxo&
z)Mb9?L04$Eq)9>4Pz{&&(;@h^s9K;B4tzNqW2Om=IGhfZJyb0(h*D|u0J$=#P>-Z?
z(7D+`+b2^S^_Mn}<1n@b3tZ&N&@+kZ$V^=dQ(5QI&|EULIrV0W#poAgEG@%#B17wI
zy*IvX-~B@Owa%+w`r=IpQm2^WqSojz2{b04D<6l;)T+;dVakSFcVjbk0o`-;0;+&8
zc5RnaU5ovwKiWehDhviVFI3~XNXz)ZJESVU#ZnpClPPt<1G-k-bR5|w0-<3&p(~4k
z`NZ&&o+(XnG8H8}bweAiD^RVWtP2xvS66DdIMUwt5)ZWq@j_miu)a?R$)#K<EJIvZ
zD>zI7TQJQwz$YiO2cD0^p%L7Qcw|!%37bL!3zn$rBj6TW6Udb%q>Pg7t*wKD12j{q
za_WZhaLeWUTcAv~GPO=Ch$F4AB_Bh}5?WrweCN}jdkt!7#RF$*8=9GHvr%j#!w_FT
zJT3=%8zIL&wrEP$hb_2LWIKy$6UZ9drID55+ot1ptX|U6cmdje^g#mvCLOsz^fEr4
zltWnHT5=Rfc4!N4D17{Y*Ev5VsIMer2E%$Qg&ikY`GOvsq3wqb%Qd*^2xJfr5(r~o
zxG{1>HdgPY5h`)|rlY^R<aU1ykc5sG3~<$jBe+7YAxZmnx-~xTa~HOGguMhuy?(6L
z9Y17yHb+muxA6r4y-oUR@lajl!9IQBP>aSTzy^UL1UQeXTiX=;`pz$7BcMXUGeS2m
zeb9ISr&XJ!_LQCmw?R3ez6O0S0r>(=n&<Y&r5MKWN9^GLN8(Ycn)IH6t^UlSDSBe(
zp?LH#6&5~A81m)OeOfi6=JSTcB>$R95;Wl?ktus~UV=E4f$1xwzYwePQ;hgZ-l^Xa
zyW)|~PE)m71&uz(Dmo|HJP4j<h77x)GYYHD7&@2^pfm1=eu+a(`r_1NN!_e*Y!<uf
zMOSM4;jCjx(P4d>SN>*3EyC@TWGy76uvXkx0*_`Gmfoc{y<ARfa4fmx@N(Zk0Xgk=
F{{yCq-+urA

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_proj.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_proj.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..3b94d08ece6af841e15988b51c2da034e9d8b6fc
GIT binary patch
literal 7685
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
L6LdMJ{qFw&U>;nK

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.set_exec_mode.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.set_exec_mode.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..962143668310625211d3e74e9be3e477931ddd1b
GIT binary patch
literal 6716
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
ZMW&e}uNP$PD7PI-ep#NN;+zaR{{<gr_>%wt

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..ee626d0580922430bd18d3ef81be3e01b21cdb21
GIT binary patch
literal 6813
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.templates.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.templates.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..3038d1db11c2f71dff096f655ef04f73ed291ca4
GIT binary patch
literal 2911
zcmbVOTZ<bv6yBS?>%Dk4o2C!VF4<B-H=(v05=t5<B#@V~;FpHdmm=gDjiv64G?g@K
z??a${C?ue_s{f)tvY+PWOJ9;045K6IT)*=j{ju}Un}dz==lZdV3M*1GlqzP%yS*UD
zn6&<H|L9Nu)?d1wrZb}o9Wn1Va3bO&jWv`0SI;-xu3?cCO19^Dhj;nzul^F79V=|g
zmbToJL`XTbno5%>ozZZ0nB-F$Q%jRn&4!j`c}gua7nzC++z!g1Yv&D{2d_Rw#b3S*
z1+JaCZcgF6_56fy@@?0xLmRuDR7mE>#e}+jYONNN0$!9U*cP!txNbK}sWA}ZyCZ2<
zeeK0XzF16Xbgfwu&J=Ff(rMW8ywAVj2f-r0@7|1NN?)6tMr;)FF+$Q!^;LO8B2=Rk
zd|0Z6+905_tF2<<j!n*moDXRn*EQ`38MFCP6{-U9b5xf<Kytst|110-;{SCB6Zz4i
z4DJ#M5^{<%xThacy349|k5H}ZYw+QhJ@1aKrv-n+zgbG!?RwITj;frkqG_~@rcsNg
zVSf7}q#1$9>4i!zKE|Q5tIcA<+Js$xN>mkY2dmBwmYp56&JJqmv!*nk0(#oiGi0)d
zOm0{3<Buz(&^DgNN^_xY3jR3U-E{q^(4lEa+boBTq-q+sXPC9fEGXno%PEOg(lQx)
z*ZrBM1pw8M3h$3yZ^|Uo)GF<<K>ssiX_jMgP<H`zUt_snFAJSwb!1gULX(AEnCk?v
z-g<YMC}pLxY-#gq(;WqVl0`=5fp0t{{eXcSEtUnIGf;WIlCYGO5;7B(lcv>SvA$6E
z{@5LAmMd*Z%5GTdueRJir)j(FxI1hvkSj}VVVXl7*NNGrn8I9tMzut)a6&VhLDB;%
zA{K)3?_6KVys(5xkN{43*DGu?cs?)!-)F0vglVlb;Z(*c)5vphHL~6vtHQ2o>6BW$
zJ73#bQ^9|8{YvS=f&Q!UPd}1ho(`W4o_zn^b9k|OVoilR36U72iz87fBJ=JjrE*%(
zDJ!YXyDiKQcUQAW>6pYU2TEWsaL(9uBPA0Ai@b=K<RDWq2PwEdEvzC7k=qi0)=^w!
zIcedC^p*kv<Y`IMpzyeqw4JvQ<%SipBJ(T&>x9j7Wf)n$Sz;x!<VF}#0ri-~!q7<?
z0;#>+ZQ6oAc83VYpb^T!2Bk;!F_MV1BvjYWSxyiWLqkPnyoW(Dp)ef~?k>2sxp^@f
z&1N&OmgSg`N>4{IyBXo68F_av+z1-O4bspCW;5i2hu=O!TKYPP*31OS!pvD?#wvyR
zFPKeAGu&n=O!O?Bpb=ur{neg32dpyEc3A5^DTkPU?>;ZR5z;UnMmo?Naufs32Y5cT
zOSIpKxs{gA2^UkI;t#Oyq$=S2&}0-{^?QLPHn@4WTvtnys)*JZJdZd<zo5QVbD?5^
zg$Qn67de~>ubT4ZQ8)d2fJ8+?CMb2o0;ho&OfgwKcfzs>i_w_3u*Dg(&~`6M6}=`b
zqar1ks+yHgfOl@2$(!(AaC;RWpaFp*3|j$QTVko6GVluq>KzyYDlDE_$W0tx2XDbx
zE7Ix(0Wq{C?V=mdkH-h(yFple^Vj^9alIh0w>gsa*7Mh6!ykl+{tEAmmv}IBD+d;w
zTR+SewEvR+kNG>oVD|WTf%pGiOke&3W(H<p;f|I;Q2KQg2{2s<48B&9(5TJ1Dgn!q
z>KxJnC}b0rwzw*fezqoTPxn?d_8P0@rPCGtU|wwl)!$p!Rqt%LJ<v#dtdA!lx)0Ae
d1BR*;wrsH?K4`^dvG?OZV0EvD=~_&N{{ho5fH?pF

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.general.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.general.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..4ed74a955612d2ecd9dd00f9ee199ec6f8e1a52c
GIT binary patch
literal 15515
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
WYir)2o2Axnx5yKxPD|yYv;PNq*z)cG

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.infer_datatypes.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.infer_datatypes.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..3984b1d7dee35f0a18c0f11e9f01abd61bd841a5
GIT binary patch
literal 6339
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.infer_shapes.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.infer_shapes.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..5b8271a7ccba07b43a16552a53fac02b4bd8fe61
GIT binary patch
literal 6165
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.absorb.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.absorb.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..488afd58674e2e6f64da237ed04804c455031f61
GIT binary patch
literal 17280
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.collapse_repeated.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.collapse_repeated.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..c19ec7207840b8eef6b2f951cb4741bc6856c3c2
GIT binary patch
literal 11501
zcmds7-H#<j6`%dM^RYW~ciCkK$?j@P)ZArv?tq{!6Ji96hK$S_S&gEk>FKUJ)jfT?
zo9^oQNPxft$xKpD(jX+tgE3Jb{D22F`mRr6;$NTy^~ne0MiXL;zf;wp_ug6V%#L9Z
zvb(pct4^JB>eM;EI(42u{_@+GC)9tk?SytJTtDdsp~I3)PE$vp1tNPXyZA!(Y}S!8
zv9+0mX>7AhPGE%1UEhgWkUg342|1N8Tex9Rj^`~t$)}#oI{4TUuJBpylf2S%gP<#7
zD@b}_+_z|IHxV(j`o0^mt{wWm6(#JOX3QdH3Fa96&`CjrXoBSNYix^{lb;@w(h#8+
zGbI;q-2^joGP0lok@3^~2tOt#a|Nx)<0MA5lCE0vge64muBHNtB}E={odimgQ?_p<
z2|Dq+6<B@!YuZVps<CR>>oM!mm{d*)YmGi-yv@(?le8i~FP~W44CD1AvTU|Ux>&^4
zCHj}<#<a1gs$&d=mul+93B<avd^BB^r;>=f!B*FDoZLQIZs4%3+K%eY<{yH9+`taq
zg+Cv~pO52DhlGWeVpoaSftuW44SOjc*!Sjjv>9B)#_L}T`z4X_$rX`VDZiU9)YSOe
zpc<3d)>>>@>0)K2i-na|N{hCaNc|8sSTn+&v0vu8kK~5`<=pHaava))Bk3yd>VsGu
ztnqZsm*mwEG>wijKEn<6%_3C)xx*3bgSQVj&-}7H4i{+;*?tFK+VsUtTpUx8#tn}*
zKVla;7nM7snWxlDD+ofNoMDZ;oYZ@zUEh4!EFBom-Z}ma?G9G>1#&uj8^_F6-(OPR
z0zN#7S;FECmeFbWI;ealcPh8^Y0$ect2G9fL@u!iQ*h_^?%O&G%^qN8a}$E`Hi5g`
zBaQo&#`(J1I9S4rl50??vm?x>V0+}ZCS%X-kFjTl7-N-1EnB5`$IrsSw|Xu`j9odI
z2WolGe)j=kP+2-Ww4CmxzORGb^Q5ZB!O@qr5S6O53D{vE>PV$@kP~tS;n`Y?t%%nR
z<nf0sgxw`$Nv*c@)PDIKa?)3$r}Be5FQ;<iS-AmK7i4(7z7g2%*@y)Wf`z$-Fkff#
zi-*n~p)}tWEVlgmLXRAR_=P1N3awIc%CG%&(3^GSaiuGHG}<N?w!NT@hSl)~naq!&
z?jH@#t`Cxv&^f|&CLg>Rq?7>~6P>>01{wdgoI*=%M}RlEIm?siVOx>!+Af_C8n9`_
z0e;Q^FciR638QyC<IgLi!iv`zVAvZZ&ky){{up5aGNW|0b|MGB77hMRZSZSkb2m~1
zP5AcE0o!{4IhjkV_h2eq^_l`tlMho}{LgYK2sK*VrFB-+0U-FQq#<8^Xu#&N)PKK$
z4OsYK0Zhd(VFrG+i7z|+TG1hgzzb%T;N^*O*jPa2KXnhdH&7{JB%zXb^%QxFqLNC5
z{ZbVNfD-CvJAV-P((stx+>wci{ppx+NUmdVmS!t^c(xQ~2w*6Q=^{QaM}BKEbZ*}a
z5&jrrsOFEZR}ch0a|pt}waZ^R0P5f`Bhb9!T>zKlpa^OFOY5(uj8_X~<QLuV7H#=H
zq6zQ50nPFsmTdhG@WW3^;)fFFb9+A&T1|udEN$h$C8)!HH4b9%9vm@uBxvBjt;c<D
z8T0lN`uXp?McTc$l;QE;dk@pXus;g(|I}e#?e92|z8HTGQ5-Ya57~I_d<_5!{<cyb
zf2Tk+{4ZWeOZ{~yq=S>23F#|?*PN@-%|-M>v96IBBYo4pQPlk8urQr4GU--x+2~vA
z44FBd=5$QDsPxU=R#2n__7_#X7xSIx=ie&>Pz$Wy3*{{N>aCgox*8$<MHY2Sgx0Lo
z*SK0nXsv14dx;1PMAtLJW>VazMty3!y6^3qBgEFx99@=YRO&&QBEvn=cX6SwC00K2
zp2nNsf{R30NvTd{DyLG&Shkyj{Stx=`tZ6R&du2SIVs?r_of=|{R01#QR>dU&RDVZ
z-UFJv{N^CM+`ygc^pE#5&3bhREAyx(d(U8033u|=;UJ#xlUN$@c+U|p>OrAmf)9Y6
z4zEzpC&tL3Tx&e<jGH3y-YHqhU2FwvF5M_8GHN+qVV1i_<vE&j3cDC*XwyRePO3a0
z;`rN$xphk~(-Z@U<KLLKPsH&@QtewFZ9EXiKWJf%IBse8PZ<wo6=OglZ|*2$Q%Mr<
zPb8*7Lp8(wL*Z?W@?{YTM7&<&{d0pEVTAk`y+$U+rYpEX--Hziqx5A79!*4e!ZP$D
zRyCu$XG}NxX(9}Ph;N9^&_K2_3FE}D0_Q}`@K6vKR^DlBa@Xd@8dymT!I{CHPTdX5
zM}8ChCaEusl-9+Ba`|pyw*QZ!mB-AxgEsb@cRT%~9MyY;U@~o_!ESxiuG#59Q(@Pv
zDDt;E7mdy+FIPQTmJjRIlVx!piWf&9?miPdbnwvk=pj(+D%P4wvGQmZaP>wo`oqH<
zYMS&G%=`i{SLupYzM@W0<gL<>D68yU8QY2qxJ<C={&JRl{Z@s`g}Mo3dT+o3mT;)0
z)TNw76DQR^Afc1Dn)+IX<b(089-{`(*cZkeo+F@2uiocL#l(9J0WG4hLO{B8(+Efh
z!B^y+ds&xy6Gbw}yO&tf(5U2Y5E@mlV*^)bazaS0k0erwSU#u~VwD%}NqrVG+_*Q1
zkH(E#AEW%nw>Pzdhfx@B?^&ZR{Vxu&KzV%ah$~8+gV$#0a-M}|$;CqDzZUHL#=KBO
z?}hyNgcUkGctuc|NhF2MAPsm-Z#%yPK!G}#y_3~t;Saw=bC1ZjoyJrcWR?X%vqg_C
z43g6c69SPO#a6dbv6ZU6>c#3U)5+xIS1mt9xlDQeYOlzdH5L#$3F8b62USskCjAJF
zlll7<Xs@GrB5$U#kJg+BZIcR#=qr|MQ7I0d&d&70P@vv`)jlpCk#khZ6{LN0iz>4+
z^t7p-B|@^IPZePaNS@O@%x9{{B&cMnXE?Bo74r#sebb7Z#cqYMFnzYc{A~HCJi#r$
zY_{ZWY|DkNQ2LN2#h{jKIczmu1HCrAmeC`rHU#v{z(Q<BLS;L$?FLaQOctQf38U~H
zmx|uPl?BvcWb%CTqsihpj7<*g<+B)iCRS~c$x~q}np9efN+vH1d>J6&y@^91+nR30
zL;InX#~(Gnc3=1Yg?k_P)D<w&95Fyeo+e=uXpBQwK7`BUoNondskKIVA_wiGD7KSl
zV`hi3V>&1hLJd}6Q&H6libBGm2YI0y7uh7dFuGgxj^4IX5t>z(JnF)_=A5)2nWY6n
z!>R+omc@bP6Twrer#y&N7pn47Cp1w;f>EdOtQjWEtj|>DVheM_O<ZlOr%cC9tW}=`
z$+?^=P6oduXCX|2v!DxKU_SXUv*-E{4%K7rh($mwJ%%%7D|zv59>H$0G#R-xxDZjY
zw79srx!H}j0bhb{7_TilY-154lf_KV(+r|WGfcty(6WG5r_sOgv3u@^TH0~X9$1EY
zs%6d>%ZM;Uv82mHPc6em-^UU&!dk^ya0Jhmr{x7$7E*e}AuHK8b@k1zyhCy0;_?yG
zjROWuI&xsqCsAuzHgN(^C)<IrwoLA>aUXwRugCq6Ono-#TR2!xr#Qz6W}a1T-8B8s
z#??V-@Pf^eVYIQo`g~!>$Pt;Cy`DyRiKY@zRi>Gr`&}4GXuClVTU|JUGvpeQbhSC|
zH0!T22WN8|YjKA6>RmZ+`=PaNGQ5fVCdvkJccDth9eIoe8&no4r?pGK8H5$#eb|Lv
z3sXOMD~@l&La+(}&j{T(R0R1foK~ZkQmLvN)Ouxup7p8562qscQ~&OG5(m}Wr4Y7^
z|F84wDx0GJB2?kgU#Xm-IrMm~$~D!j6~4T~ukWa#J8IZY$_>;yYH}yN9iloRC-VpU
z(rf2Muq8ZD14}GZyj;nan;?v3AbPiVok*4Co%}O&nMM9{8MRs0`Ma81N*O6O6eLaM
zT;0l);BzQ7Q0Iy4S@)19D8^|G*L(ChoHf{5e>L<=!&O6XALuMc&on5`6sxL9XBzb3
z-D5%FWPXrV{$)Z=!%vmN+PHD!cw>VTxIj&?bVrTulV!KErV|c%$lRIe`+xVp+^OXa

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.doctree
index 16323c25503426bed5e883cbdf7cd6cf657775df..60e87ad37806cb3e698eb0d0b865097f8b189d0c 100644
GIT binary patch
delta 1550
zcmZuxU2GIp6z-k<?b3F4)d$ipwAGf~r9b?{CJiN+)@X<ummdw$Xwli7Y0r+cGs|=*
zw28(NNp0gK)Sink3c3+fs32`>1TkU>QJ>W`gh!tIHv%ul81&qkEw$n%duPr)=ljl?
z^PPL|9P?f54UGGbcO@1AUo(7Hs>5sSr9P-}!g;e;GHpZQ$kRvoD?9}O2tsI(JJFF6
z6pYbsSy2pAQAfBFDx3MTrK%K*hjK{?8gVJo9Sx~Q*(y-LAWvnTZTLFtnDGUJe1d14
zox;NLfw*UGC$n?L2nB?%PZ;>#J5kTq>xNFB@Z<Q|$g2}vb?OR6Ubhu>sGxi7uow2j
z({KQuQJrv69#zy*8Tb=_)6WUz<x;s|8bs_L*3BHBa)MA$6xE=&`YO}ijj&-CbE>5(
zJX7OD%7rpzFb#c-PuY-$0odOJn<0@2K_l$4b24lYooOEA&?-7p?L*gLOD>gEi_7p3
zx!UQU9OQyvC*eAPfe$>M20N$XqY_}>x$QwXOkNweg*VOY3f%|Rzv5zc4*F5|?Z#W@
zo(sH2aTa#Wj|Vf197n0?J!~4|=Zgnjmj}#3A}e5ypG3;vqhpFZ4Z`!nNMYEJ%eE!-
zThZF7dx{j5i+aIOQ)w=QCjkB)7+~|FLVPyZ6!?hhn4>z5vVM$(8u8Ql0}@;%cQSn$
zz7XGgMMPA;V`-(HS~sg97u|t*exXN#?*wRT74*$LAa%9R6<M^}?P~=m!wI$#Z%7-r
zawm}2<&hB%K_@(9>$*!1%c6+W#P`8}ioid^JbHU=qwqxSWuN9}*xG(S8j)nJCb60t
z0^h;-z655ok?507t)&hrW>GE}T#I4r`Yo7TSKs!d6E2PIs8+D-29;%NSS@ocNF1Vy
zzi`X^%On`_-A0yfS$`9nv^J3-;cosWiXpvj;U6D6;Vw6`)`2XV#+DvGyD8ueYa(6U
zebdekT$)W`^Th}*eDYYEm;jdxnyM3UYDHA<0H@##Zn%(Q-{OslPPT_KY_4DJyp~}&
zci|0*#J(2oBw_urN2DQ!@ww)h7o{m)Z7;f;d#alUz0Hhxxbv+IidQj$tLkZw)81VH
zt5)@R!1q(|gX5~%%i$+jhM%3->JWC*iK1gz)l=L3KY8F+ar=mF#eaduwIO)KXvH(}
zt^_Bb6Ee(#p{S$Ysea!rn7W4Y+neeMx;iZwz0~}$_NKr{r7^Cdc&kpDcAO0Dlvv)P
z#l0X_s4VP1`v9K5bcn?kTR%G~N!QupmCt8=uqeXkX#o>-?L%Rm7FGo+Zadt?c521=
zmd8qTz0n1u2~-x$tP99OWzr3sw4qseUAlFkLx;y@X|oK+uO=mW9Q(56!6u0k(2e2g
V0$dCn4O#`}yp$QXc>Sw(_7A6dA0z+(

literal 51198
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
Wd%Z!uW`=IGg3g=pb9fkR@_zxL*)X#J

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.reorder.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.reorder.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..df8d05d07f42fc84427bd2f4d63990f62a8f54cf
GIT binary patch
literal 13465
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.round_thresholds.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.round_thresholds.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..1537b4cb415757c59fe4338f65e70047ef8beab6
GIT binary patch
literal 6961
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.sign_to_thres.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.sign_to_thres.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..ce0eb33fb3b5c5388f054220d7d603ee61f2ca8f
GIT binary patch
literal 6599
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
L1qRB-Nx$=7P_E|%

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.util.basic.doctree b/docs/finn/_build/doctrees/source_code/finn.util.basic.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..c8ace62eeb3bc4308309de16cc3a2c5464b90c88
GIT binary patch
literal 24782
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
G`hNi*SuzU%

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.util.data_packing.doctree b/docs/finn/_build/doctrees/source_code/finn.util.data_packing.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..c8e2f92b5f73be87502a77d68d501cf92f84d119
GIT binary patch
literal 27586
zcmeHQTZ|mXb)`t|k~`$CNJ)$xQ<T~pMIMT~!=*%16l2;VWl13DtZ0dfsZh+Mccy2%
zn={>`e(b}r3^}%erO`<cdyIU<1`GuG2x8bq1UNw8ALoTQMu2<-aU3ZR3;9Vtf*=9%
zLIUL6dUp48&tqpv1px(-oUX2_d+XM%x~Fd4s(xedmw)HxF7{tC*Yq24<g~+@=Qpje
zm+Ys6j^#zYFZGUpruTZUn#=^|dg#YN!|ElwkfUKc?Pg$ky&FAySF$g(8j<6BD!)Bt
zPuu%$^s0C{6**DcO1(-RYB`=)Ba*eI8JVxvyJq92<E<JUzZoMdl|;e4SFH_VAvu=K
zpU?jJ9^=uT8d`BO-8I2<)UyxS_t<-qY0;$RWN+K?tlo0GVkQ+ciUMaPjvxwZ`W~kl
zqM6CQM%xTSB;xm!XLk6n{mr<mA6C$iz-m#RIN2AOtMsa8&)G-q14Pk&FnRjqx*yyO
z(PZl+wd*8=9r9nCn|cGiz!J2GWRq(_2<DGn-W{(b_l8~D@iuB^vnl#*%JG`kMoQAW
z6YPi34BLQA=keze{CO0As?;RNB5+tkst^Xc0Mbt$E)jQ?ch7Nj2>-QMoUvz5FGoEy
zwjZ+>Qw=xs4G)6`Z#QYeNzw$>%<kqn5(}7vR`@NWm{83O0(0|m+uGncNiz4uD|U@5
ztyIF%+HaprPUq^Y9yh9vC$zGJ2T0@5QMr5f!~(^(7m~dg-Hkr=sN&5Wy{U%|^fiiu
z%wT;!FBJB?U^Ju6uC-uv&1OCF>)whJg?NJUI~(Ueu(a`k1tYN5tRS?`KWDZ>>o^<L
zMC%}<MOsT^L(VW5z3(ZJBcBhBl)qOK0QCK+eVq@qW&0Qn=km^<+32*-v2lp`42*|X
zux9m0YhOVvFN@)NN3@oA&kPexUMlzI<S(Vsm!6e^H<}b|$9Ad7ZQW%1CX*a`>ORI0
zrc88HWCd*plTWI@&TLN;lp=7YQ`M)do?=zYri!O*13x#Yb7ixB0nPd}bpNw*Mo6ZZ
z-m04UQ?}+WZm;Hp>7gJAWD~P=zP3F&2U3GflF6iHseEI5RAw`ySJKI)W+{DV3`$n%
zxRhP@sXmQNmAPyxTZW&~oK3YHvX8ftX#pgXA1j_xV8EF%howsPx8io2o9Ql%gqJ|~
z3LiXrB=9+_;d@aU6-fg_C})QBcr`G)c1n-0efFMRyRHBe7^}{j<r%(bEjAq>s}Nwx
zY#YmQ=gOwRblq5YBHMWG((<zLQCPyOm|Xc3YdBuy8>Rs(SK(%^R=MD98W%5JdEsLh
zUNqLsc5H<x-fkN!mH{3y>qb`7V5PWCH!wSM0;aKqd6~_2UIgP>Sv*y%q!rh2LL&}&
zab)XSUejn>W|Iu@C#}E_sa`YyRswT><0f))u0q)93MPLftUJxft{GQt%jh_s(}_Er
zOQYon8G}K@PA?c>vSFc#f>~;5(^&<}c-;c%B=*Cav?oTx^r)qhOQEPn1ae%I-M|5%
z$VbB%uB-|5z1toCN4i7L8-I_{_ReUgiU#N3*$>)3O(+k={+fzmZvT;-+ppb=(e~_y
z+3B{e@LYxIf(D1x>!%hB{{PaA1vSWO7cVVec=445<MeUkyfMGDVa<<Q@~kMiR9<um
zqzj2^lyo(SEm6_R_$(CGv-IS=)cl7h7R@_vd<DXJ=Z&v!OFXRf(xBpFh=^6TvK?0X
z#l#tV5|#C|R{jgr>z~Kh%8J&?l&#7wx=4-RLdL9(DbJrwH~o(3c)etIcN0rCf5j!_
z4b0k#J-+J3f*tUkrMk1|=wzSg^QGV|qPEOhLMu=<cnEB6cZKv3vZvimLi~L4udi%I
z78_|JE|yLeTjW}K#U;zh_RcRS2k}6Q3Ht>()kyEgRhf_sl8o165>jg>VX^9vr4?kC
zM?b47+?myo`zZ8bG)<Pk3#%V@UX@DT4LNs|6y7(ePsmMlBpH-N4{59n-4Ci(4O<*a
zSzuX|l7)MkDqx!My5jIBM(ABO3s+OCkbR<%#MSCK%kcA{HzKHZpJ91ZG={Hq+?OY*
z|Na6smhCBgmu*{PY}(~>r0g!N849~gmvkQlS+#f&Ph$OG|HUo)2c=5}`-d3xf8{<&
zZ1ZJ;OGcHCt(0cGEj2?p-!wd-?9a1xfN6Mfr@LtgEhxqQ<X*wzfsiemD>{A{0UC=1
zgkb`k2NoPQ9?K%&xPtd4xnvD9L_S3czO)z%inFx}p>t6})otjy<$3~ZgC<`M5EmZi
zdMk{KPTY<hz^n@DJ1gKhRmizPe%Ue`<f&i?7XmeU#R|xur|5t=mZ9Q!-8fP}{jR8n
zi%JbAmsXk3{Ld(L95%fPDD6H(B^a7^KP?Imnr;MiDb#yC#MH`M3@f*Ssu_5357IA<
zTiiK3yI-Nd2)gINiePUNymC(Yh9CF3<3g2%5~xyGX9-GK-FcK!LVg%PIbB$;s!|CW
zcl<T0o^mfqr|piTk~h)a<D-&qs#3`vma7INN0h+Q8YS&s$y+s4$wBS@o@&OhaVqT^
z!4Tbe_q$X<4u%|4d=+(M9{`zA*(K|#lq|b{4r+sD1<53Qt?r+(yeSZJU%ygGf<>>g
zl;0Vfa``MIxg>~CBuZV<{Y{Y75P?690}=j!*cK4s>-a4og6_2(M5t;PMsnd9?!V&>
zKjB)FF2J<Akc=p;_=Gt(l;1;&cL!=xz2WZOjb<EmchNs=8*`ZEN(=K_)P8PZ{zr%+
z?XpQer1UU7oT~Fnt))}*<PPC$%j>5;xL`0B3TyOvhGF>ZgcZQk#g)*~9@SuJKeQs<
z(nGwZbK7m{9*9Y|RBKh<DoR^gq#)&`hS}2NV7u6s@{X9umZmId%B?oq9%-2^Ev)m-
z+0qj7!))ov!gAGAYGy0+wwckVN7hm~{n6t7L#ov6Frz6UXf46cJgHvFjFx2MOZp?l
zZ`CMeX7mNsjA4_JY&@A!-FSDID#)49_ogUk`moP}9!TYsb8aRr%dH7wqgv4$EN{w+
zX14cObj*<?la{6Bk4>w5#*wlkyICYVUD7=Rvf6I)r*Z7&$BAuWH=n|9VK;R*jb=A<
zR+5>DzO6K2S!)CB=5}jRz2W{cHRGuJi>fulR8`u|vs8lH%`b?;8N2!6l=kUiRvlz5
z<t_zTR;jQTw^t2!nseK#-RACBd24@dyR9YLsavZxtIT#5DM@*$VYc(zV7u6M^3IsV
zcAgbZ^B`)6P6v)(I6Fpkm_Jss3N5Iy#BN$UzXmNNKFn&qP*4i-RS-qJ<+Kq?#D6n{
zN1m^AU{Qgu@wQpjKOI?r<>W|K^?RyRaz_QOZR-66@|6R<@SU2cm_2=4HDK5zC7Vt5
zR5#mwiz>+3({tPJ-#&}WeS}O`WV6yq+1C6Mm>JdH{v*qqwznxwl%x)%)3UVwdlFjN
z2q9tIvx!-1l|2)*tk5wph!(!f(thvQw9DsXsYQe=inK_VbblWL*2scCje{)yhB`<f
zi$B6|fh@Gb=8%P6kYDRy)hgHI<j7{8Z{@zu#qeNJ4(GbHim*qc8b*EqPdNPBt+sDQ
z;qgi<@H=9XqX|zg>sxI^99tgphSqDbMX@lb=*nhfllwkE@JnC@n~U(vH5>{Yg3@yu
ze0zW*bBMD7FMiE<$+8fXBcrWX%+P7n$m`Gd9%(<Jj>go@u#Po!ok#M(Fj1gR2kfKL
zmXEL{!}iySh>WN)SPXN`xYUwSIlMxO*a@v@p^PCJrc@F0c@q(%JXVM8MW88a3*fHc
z@3i36P<PK_m}69)p?}75_xvFZE)H9t5QPU#!qN#+G$!@%&%?iAK<?w9Tnywmdy@dU
zGuXr8@eg)8WRdzK!nmp)g_%hAzWPc)T;n!?xO`K@Dt$nd!zcRKt>(ACNiJ(<P^XYe
zK0#&Yn)4Lsv|xCCy=gVtw>kR39$AB>H6ke2RHc$TD0U6x4);k}f{=nYYSc0ix2{+p
z2gK<HyK7WI4#a(QC;GS#&Z(FO0YB7pwnewV(4aX)b{uU#e4gb^0l5)kAbxd{`VXeH
zU3OA7G25Eon1tGU`YksbO_Ffw`z#M{PQt@%X5dQ7xzsGZ?~YBceD0UMO`x$zYjsKY
z=Rj72M*cJoXxt>W1!y$!TYyGAK*~YmO@PK1d0@sfCr%(HyGfxDBI=rlWdPv~j{>QP
zwQx+4(MDR=MA!ss4Ji}@Z;24*UB_GjvZTqE&>6#P+4+}2v@W1z%dwi}Kn?s6s1zf=
zqQgO0$hVG3ms?bvMdp9f{wM|zg~EVt1<;Vf$E5|x^2@?m*p`+gwhB-jm=wzn5RLfy
zh;T8XP^;qrG0Vtv1sU&(T^tY~Tz&_{u7<h$BN`t^-M>}CWSI4le$Jn#5*#qTEea2s
z>?L3<8jpJDj|&+83zUliBWG_C!1!$coZYwD8s(7TlO_0ZSoI}vGT3=IIh>PW4#Jm)
zRnZ4F-#sVc;l0u#3{!P!vItqus#3|j*8>`8vPE~+JY<zq+V|lZ)m*?}sG-_9s&vSg
zsHNjROcmr{=&3vm9oqYh{cXhEJ`U=GrXks-ggI+0?|7K==}GF(`UXdE7%opjt<Whr
zy2J3*v1yl2<5KE`{fbmYmvr}mtj2!)X&me~Pizb9SHW+A{j^r*uwOca$GOrMv#aA>
z1%eUh0ogiFVl3_sgd0vA^P_Wk1nl}SRbQyj9i*s+x%(*+%Tf1}N;<<vx-|JSRDzrQ
zbx}C8wfUbH5cYFDds^!{oepCEFWtCNu~?3IoVQxQiLEp9Hws{Gb{?x<C^+#&=eEup
z)`iMNM)3L*3&s;Tq{aWGAH;)9Idy{w^PC{sVx(L1lx-g8tca23JhBWmVHZ=JynJc-
z>f;NBVC15hZLb~1@?k_F&`vC!s#-AU*BSg8frXtF1`D%NEVPIP2!&GVR265eNvR`n
zHb^*H^}fJWZ)>}%w-<V=RZmYFdE6+`X3-2#UTT<o^4Gz3G1}xKV-mFa5mG;^sZV9m
zNi9N--OUmGlx63$$}28Gn785F&>$X$VawOb3s>{6)Ilvjj%ar}w9T${ei^5?)%igV
znz;8;C*rWQV|usQr}?`htGzUsggn2kO5KhVU3m#=wd;%gdf%YD;zZYgENT{DIP-g|
zRl}^0lm+2TEerRLse&BNd^t~kNA#f&iyq38kzl+3MYhpzf#*@t=?_@m@zCi%Oj7^h
zzA+=4Rq!U;u796|?u0mXYH9+RJ|Lr0(&Jw?yZB|c<@b+Gz1;jrMJJS8r0BY&`z;7u
zqh$Ux4odz$b(lcOZ{oK=$$CuXP_o`uPrfe?!tp^M&cpFoJ+;h>J$h@<MG*WB40b&R
z!^6PQ6@I6Nye*?<q%}`o5)n#IC;1)uSp=+Qo9sFZwjD1wwc$-vyZQ?Tw!ek1l4gA>
ziwh^P7j6Z#r7sI2C3R@+|5uxog1S#YIiX9Z=%2ARgMXV;f&=}UC_HG|l4z?)leE(2
zG1@S+^)XN`Mq8Y{Nzm3)BAibs9$kYqGR`_t;?FCpvIJqZcHW0qOnn%(dbOxnl}m-T
zfFoO3PzI&=wy@Q_$nFe_%wW}u_-{FpvRD?jw{_d1{2C+cvz$>0M%7iR<j#s;JMA7Q
zlD4)sJi;`ik~&0}fu=yUVI0t;TkgI_734tEb34=BtQ~2O-88RPwog8)>4~-Ib6{xD
z)FOM3{B>`zyeUMqmlRai&mXe2e{qu9N7#Y>+C=rU5hdB5;!j!rzcESu%%Q=Dsw9$5
z%2N8yM3nSIpeUu1vXuU05=uCE$ZjSSi#XbjloX3zWhwvV*p$nSm()wbYDMEqmvmnN
zS&h~B(>PcyBDMuqdlkP0R?|bd6sujMD-&c0q={h0@uC$8yRnGK3LnW5%Ps4>&u{~n
zxyE;SVL)-wCU&sRh#3wX&@dbJpeRV%&&Iv1xUZI7c?O(jvfT=*kFE!09#>^z77<Np
zSZ#}Lx5a&x>$cOd)#f(Go178a{4R*7l>XZk_iFq3uADT4E|ilRNbY}-1|D_)O)26q
zOGK)R%fH;~RDxs5e-(uXP5cs57HPa5T;pQO!_#G$lCw7nro6<JFt;g3D~@c0?kIc4
zKUIP;M<G#yIoEa`bB@N%FbsNilxq6+k1-{2@1FMIap;-3vv$X?Kd3^1Mq5is3qjcP
z5mhRAce_Dj(MLv+y0opMWmb~}Lv~N9HV>O2q@>8frzPc{p$c+XwWd4_BED*{8ZiFT
zm{dh74vt*B1k!^hC&@9P(q~!T6e=A7H-2K0`e#&|W%r~~vVCApLT5t1TsSuE@@ZYl
zo6uH~hUk*+Lm;cs7JnKCZ9PS73$*oq{1#|SD`Pp@`tc0fO5qGLsn{J>*R7^~V(Dxv
zn+6}1*gUQfjOi;xiP|wn;phg%-7yaupAP%nXO%Dp42x{QG8322N*5Y#N2kijO-EbR
z%7aFrjC<Rf{f9&<#fL;V(?DOk78wXAPm3t1byrA(grtVA`z6x7qwcRL6&yB;N}Od-
z368UVNfaJ5l}Vgcr0aTEjf=Cs4$8&8JI)?(mae=y?5hO)GZKsRv4KU>`9-0%i{i3q
zOR_iYdlTxyX=?QhuJYW&hqrwK62q4n2HZI>KR98ZptAQQbB!1tWe*^Pe_LZYIVe;3
z2Pu;M@IzC4FFwn0Sbe7haFA}IZuXMtpJCTO>pQ3CmXjF~H|qyIJfNw#u??5v;^Bb!
z!UXERiN}g~jDt3wW+T5*rw>@rTacTgk3-<b(feAyA9;RcrCwgXCz+*het2=GzJbGH
zogPx=DEhRELopq;x<Zvld5T<b)#;Awy8Mg=D2f8&yBcUbf~5T*s<*K|Z}%?mPAaz9
zR*zH3VQa&ItRj4*Ae5P=aHYGo60d^X+`1WfkQJR{v&;@sW^i<_VNs)cTge<h!HENQ
zKKcK9$xIxz7SAr?vj@H8!R*UAJpF!9w{gW@+X^6OVzm+Vl6zq{X-`<!GR11aM=^45
za#grLgf=I0yk1>;?!xj*m+IG^sGVLs_0*ZOU?iI(S4(n;8WTcdHe}UC<9f+#+w@jr
zbJb$!k#J8eKFgB8?l%0Oi9<GYg*WKYXFisbY1|LqLVF<^rzx)b0@P3D%oy%#os{f$
zpk1>~91*H34TOYQ0<Gu+++R)=-pf)TW-lZ?&`I6Uikp5NA6Y=IL)J#u4=t=}bV;Tz
zji|ncLyb5pNp;~YVo34pXo%o)pBx$XiR2&}6Jji|0D5Gf71`K{VD?#-xvtf%;}aAX
z##Do~_aLR<*rQb^B~J`Hin`&slPA~L*K1vN!m{QEt0$Y*+DYULPxg`{RDxU(RH7bP
zxJ?=(h&~Zvbr*kf=`_SL7ql8VGL)jpJSfRTzK_r9I9AkRWbCNZ28o%-T)|ktCF#A(
z`;%kPtWI4GGR1zKf1BbK-AD;;91kC;pc@^bdL*MJH2MI(%A+1J0uP0oUSw|6ZD-YP
z;}7(8Z`&tTKNxlpKVN?>#yAd9@_zQrAM0(uVdBbc`moKhhK+md8|WoIzCe~HqB=_7
zjJvp6pFS4EKIkLH{Vgbo-=JfndLp=wriL(H$>uv`;r7QS#^xqy*_K5Y^&e^AXzb0p
zg$s_`b!^MwI0JoQXDiubd294Jo@76t5-<j#MYz=1fnG;-?iXYn9|j?4MTB`BvT4%C
zcV5S&l}V-J5G)zBwba8jeXIoE_CfZ2l*oTq-8aeXe2c8!W&1L_B9#9{H-WLs!PreF
z{4Y9-%#J6s<0kws3O8gCh-`zE|3wZv=EGyqlKmAYGenh;7yHl<qq}Th-eT0Y7^N*n
zWs6bRVzqCvnzvZ3Tdc+{R@+u=8~Dr*=lg*BO=5pnGR+00&4c(ZlluAs%czj9{*r<d
z!YcMq>0|EEeS{(8_lxWg6D&Z$-evn`E*82gn2Uw(RpVlzn_{?F=wvq+3mw<tVxizo
zE*9FL=3*iDCzlOD^EjDJ4+z#rvkeCmKXo$tji=D0CG&A*NT=|8P-+Z|&WhhwV~k~e
zAeX3e&tz(xkyKfs`!e;z5Csugz9ad%#2Z|8i78cOo5L9v%tX+|5VJL}P|ci~<O3?1
VDSib<C4HQPLF0SuHt%?)_P->=V|)Mr

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.util.doctree b/docs/finn/_build/doctrees/source_code/finn.util.doctree
index c76b2a37e1d3837d081201ec157666d46962daa1..132a89add156203d522ad64e7a3412346728bd79 100644
GIT binary patch
delta 642
zcmZ{gPis>_6vgvi(j?keV?~9;TKrSmSQ^otC_-I{g&-nTgkayFY0u!x%=5h&nl7Xj
zp;DOLOlhE-O7#Osg?<F_i@0+kR&b+ro`#Y|9T=Fo=XdV8+=I2kw_0(vu<>O$_o4X4
z(ev(*?mEwJA*ad#Z^vA+&}dVCWnP*|44{Zo%czrS49YqUFANzENorI{@IWMlSXRF{
zHSri#btdI93COd+64w?eV+|>2WKqIILanJ~CY!2uB-QY}lm=$aG}WbkK+n*#BS)0I
zPv=%LxY`dNW;QruoxiUC=z^re>O>7u7DO^63pDySARgc$9$^koh$^?ePDo+_bN|2|
zRSLXVP|j>_VKG|azFAjA&@d#-zJ`0P4hv-_+dfH1Xl8TjxS+yDa273_b%{FeqK2zD
zKU+c-cckxOG+X#s%iv<R@ZNf-ml7|INn$))w$ix06D^bZZ=bftDLBaY8l8|n(FGU!
z*Y_JmELm0Rw@;@>kn}+n>0?Ga`Fr}~{`G;^7E1Kj{XM6$`~FAjy7;_1`tx1>CU&q5
zjtE=mN_C8RZ6cOqyP<5xohEn_TTO|v?7NLY3r?YHgEqDLeZ|G*#;S9nGU()TSwJt|
K?9I7O-T4FWX!nr-

literal 66431
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
XnfU|LxU08?fesA+V4kG3zfk^vjW-q1

diff --git a/docs/finn/_build/doctrees/source_code/finn.util.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/finn.util.fpgadataflow.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..d73ae460387d36d94911508713eb9c2e2a2b5edc
GIT binary patch
literal 8928
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
H((C>YM<mhY

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.util.onnx.doctree b/docs/finn/_build/doctrees/source_code/finn.util.onnx.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..37b1cca4b5168af822e2985137bca78351fa4673
GIT binary patch
literal 4140
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/doctrees/source_code/finn.util.test.doctree b/docs/finn/_build/doctrees/source_code/finn.util.test.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..e60811840536576a89d784df9e24289cb5cba6ac
GIT binary patch
literal 7718
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

literal 0
HcmV?d00001

diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt
new file mode 100644
index 000000000..616064c16
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt
@@ -0,0 +1,7 @@
+finn.analysis.fpgadataflow.hls\_synth\_res\_estimation module
+=============================================================
+
+.. automodule:: finn.analysis.fpgadataflow.hls_synth_res_estimation
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt
new file mode 100644
index 000000000..eb5b773b1
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt
@@ -0,0 +1,7 @@
+finn.analysis.fpgadataflow.res\_estimation module
+=================================================
+
+.. automodule:: finn.analysis.fpgadataflow.res_estimation
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.rst.txt
index cd8075d75..4f5cd7cbb 100644
--- a/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.rst.txt
+++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.rst.txt
@@ -4,22 +4,10 @@ finn.analysis.fpgadataflow package
 Submodules
 ----------
 
-finn.analysis.fpgadataflow.hls\_synth\_res\_estimation module
--------------------------------------------------------------
-
-.. automodule:: finn.analysis.fpgadataflow.hls_synth_res_estimation
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.analysis.fpgadataflow.res\_estimation module
--------------------------------------------------
-
-.. automodule:: finn.analysis.fpgadataflow.res_estimation
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.analysis.fpgadataflow.hls_synth_res_estimation
+   finn.analysis.fpgadataflow.res_estimation
 
 Module contents
 ---------------
diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.rst.txt
index e4eec7717..079959859 100644
--- a/docs/finn/_build/html/_sources/source_code/finn.analysis.rst.txt
+++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.rst.txt
@@ -11,22 +11,10 @@ Subpackages
 Submodules
 ----------
 
-finn.analysis.topology module
------------------------------
-
-.. automodule:: finn.analysis.topology
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.analysis.verify\_custom\_nodes module
-------------------------------------------
-
-.. automodule:: finn.analysis.verify_custom_nodes
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.analysis.topology
+   finn.analysis.verify_custom_nodes
 
 Module contents
 ---------------
diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt
new file mode 100644
index 000000000..896f3fb8d
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt
@@ -0,0 +1,7 @@
+finn.analysis.topology module
+=============================
+
+.. automodule:: finn.analysis.topology
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt
new file mode 100644
index 000000000..60e1a33e2
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt
@@ -0,0 +1,7 @@
+finn.analysis.verify\_custom\_nodes module
+==========================================
+
+.. automodule:: finn.analysis.verify_custom_nodes
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.datatype.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.datatype.rst.txt
new file mode 100644
index 000000000..d55952ecf
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.core.datatype.rst.txt
@@ -0,0 +1,7 @@
+finn.core.datatype module
+=========================
+
+.. automodule:: finn.core.datatype
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.execute_custom_node.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.execute_custom_node.rst.txt
new file mode 100644
index 000000000..94d8ea143
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.core.execute_custom_node.rst.txt
@@ -0,0 +1,7 @@
+finn.core.execute\_custom\_node module
+======================================
+
+.. automodule:: finn.core.execute_custom_node
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.modelwrapper.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.modelwrapper.rst.txt
new file mode 100644
index 000000000..5bd74864b
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.core.modelwrapper.rst.txt
@@ -0,0 +1,7 @@
+finn.core.modelwrapper module
+=============================
+
+.. automodule:: finn.core.modelwrapper
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.onnx_exec.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.onnx_exec.rst.txt
new file mode 100644
index 000000000..87bf9d29d
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.core.onnx_exec.rst.txt
@@ -0,0 +1,7 @@
+finn.core.onnx\_exec module
+===========================
+
+.. automodule:: finn.core.onnx_exec
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.remote_exec.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.remote_exec.rst.txt
new file mode 100644
index 000000000..39c470eb0
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.core.remote_exec.rst.txt
@@ -0,0 +1,7 @@
+finn.core.remote\_exec module
+=============================
+
+.. automodule:: finn.core.remote_exec
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.rst.txt
index 6563d7a43..acb9de8a7 100644
--- a/docs/finn/_build/html/_sources/source_code/finn.core.rst.txt
+++ b/docs/finn/_build/html/_sources/source_code/finn.core.rst.txt
@@ -4,54 +4,14 @@ finn.core package
 Submodules
 ----------
 
-finn.core.datatype module
--------------------------
-
-.. automodule:: finn.core.datatype
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.core.execute\_custom\_node module
---------------------------------------
-
-.. automodule:: finn.core.execute_custom_node
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.core.modelwrapper module
------------------------------
-
-.. automodule:: finn.core.modelwrapper
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.core.onnx\_exec module
----------------------------
-
-.. automodule:: finn.core.onnx_exec
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.core.remote\_exec module
------------------------------
-
-.. automodule:: finn.core.remote_exec
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.core.rtlsim\_exec module
------------------------------
-
-.. automodule:: finn.core.rtlsim_exec
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
+.. toctree::
+
+   finn.core.datatype
+   finn.core.execute_custom_node
+   finn.core.modelwrapper
+   finn.core.onnx_exec
+   finn.core.remote_exec
+   finn.core.rtlsim_exec
 
 Module contents
 ---------------
diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt
new file mode 100644
index 000000000..9d4acef6e
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt
@@ -0,0 +1,7 @@
+finn.core.rtlsim\_exec module
+=============================
+
+.. automodule:: finn.core.rtlsim_exec
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt
new file mode 100644
index 000000000..aa36e86ee
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt
@@ -0,0 +1,7 @@
+finn.custom\_op.fpgadataflow.convolutioninputgenerator module
+=============================================================
+
+.. automodule:: finn.custom_op.fpgadataflow.convolutioninputgenerator
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.rst.txt
index 632c021be..79a05080b 100644
--- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.rst.txt
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.rst.txt
@@ -4,46 +4,13 @@ finn.custom\_op.fpgadataflow package
 Submodules
 ----------
 
-finn.custom\_op.fpgadataflow.convolutioninputgenerator module
--------------------------------------------------------------
-
-.. automodule:: finn.custom_op.fpgadataflow.convolutioninputgenerator
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.fpgadataflow.streamingfclayer\_batch module
------------------------------------------------------------
-
-.. automodule:: finn.custom_op.fpgadataflow.streamingfclayer_batch
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.fpgadataflow.streamingmaxpool\_batch module
------------------------------------------------------------
-
-.. automodule:: finn.custom_op.fpgadataflow.streamingmaxpool_batch
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.fpgadataflow.templates module
----------------------------------------------
-
-.. automodule:: finn.custom_op.fpgadataflow.templates
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.fpgadataflow.tlastmarker module
------------------------------------------------
-
-.. automodule:: finn.custom_op.fpgadataflow.tlastmarker
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.custom_op.fpgadataflow.convolutioninputgenerator
+   finn.custom_op.fpgadataflow.streamingfclayer_batch
+   finn.custom_op.fpgadataflow.streamingmaxpool_batch
+   finn.custom_op.fpgadataflow.templates
+   finn.custom_op.fpgadataflow.tlastmarker
 
 Module contents
 ---------------
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt
new file mode 100644
index 000000000..45a9a963a
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt
@@ -0,0 +1,7 @@
+finn.custom\_op.fpgadataflow.streamingfclayer\_batch module
+===========================================================
+
+.. automodule:: finn.custom_op.fpgadataflow.streamingfclayer_batch
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt
new file mode 100644
index 000000000..5bf7f666a
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt
@@ -0,0 +1,7 @@
+finn.custom\_op.fpgadataflow.streamingmaxpool\_batch module
+===========================================================
+
+.. automodule:: finn.custom_op.fpgadataflow.streamingmaxpool_batch
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt
new file mode 100644
index 000000000..a630867a4
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt
@@ -0,0 +1,7 @@
+finn.custom\_op.fpgadataflow.templates module
+=============================================
+
+.. automodule:: finn.custom_op.fpgadataflow.templates
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt
new file mode 100644
index 000000000..8a087851c
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt
@@ -0,0 +1,7 @@
+finn.custom\_op.fpgadataflow.tlastmarker module
+===============================================
+
+.. automodule:: finn.custom_op.fpgadataflow.tlastmarker
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.multithreshold.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.multithreshold.rst.txt
new file mode 100644
index 000000000..3cdf3cee7
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.multithreshold.rst.txt
@@ -0,0 +1,7 @@
+finn.custom\_op.multithreshold module
+=====================================
+
+.. automodule:: finn.custom_op.multithreshold
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.registry.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.registry.rst.txt
new file mode 100644
index 000000000..7805e833b
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.registry.rst.txt
@@ -0,0 +1,7 @@
+finn.custom\_op.registry module
+===============================
+
+.. automodule:: finn.custom_op.registry
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.rst.txt
index a984822ae..fd2f070f2 100644
--- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.rst.txt
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.rst.txt
@@ -11,38 +11,12 @@ Subpackages
 Submodules
 ----------
 
-finn.custom\_op.multithreshold module
--------------------------------------
-
-.. automodule:: finn.custom_op.multithreshold
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.registry module
--------------------------------
-
-.. automodule:: finn.custom_op.registry
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.streamingdataflowpartition module
--------------------------------------------------
-
-.. automodule:: finn.custom_op.streamingdataflowpartition
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.xnorpopcount module
------------------------------------
-
-.. automodule:: finn.custom_op.xnorpopcount
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.custom_op.multithreshold
+   finn.custom_op.registry
+   finn.custom_op.streamingdataflowpartition
+   finn.custom_op.xnorpopcount
 
 Module contents
 ---------------
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt
new file mode 100644
index 000000000..1d07f01ce
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt
@@ -0,0 +1,7 @@
+finn.custom\_op.streamingdataflowpartition module
+=================================================
+
+.. automodule:: finn.custom_op.streamingdataflowpartition
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.xnorpopcount.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.xnorpopcount.rst.txt
new file mode 100644
index 000000000..d91608278
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.xnorpopcount.rst.txt
@@ -0,0 +1,7 @@
+finn.custom\_op.xnorpopcount module
+===================================
+
+.. automodule:: finn.custom_op.xnorpopcount
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt
new file mode 100644
index 000000000..8d0ecfb75
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.batchnorm\_to\_affine module
+================================================
+
+.. automodule:: finn.transformation.batchnorm_to_affine
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt
new file mode 100644
index 000000000..dc34f4def
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.bipolar\_to\_xnor module
+============================================
+
+.. automodule:: finn.transformation.bipolar_to_xnor
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fold_constants.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fold_constants.rst.txt
new file mode 100644
index 000000000..792f8bfe0
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fold_constants.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fold\_constants module
+==========================================
+
+.. automodule:: finn.transformation.fold_constants
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt
new file mode 100644
index 000000000..38cc49897
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.cleanup module
+===============================================
+
+.. automodule:: finn.transformation.fpgadataflow.cleanup
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt
new file mode 100644
index 000000000..158ad7602
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.codegen\_ipgen module
+======================================================
+
+.. automodule:: finn.transformation.fpgadataflow.codegen_ipgen
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt
new file mode 100644
index 000000000..d3f7434e3
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.codegen\_ipstitch module
+=========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.codegen_ipstitch
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt
new file mode 100644
index 000000000..28796da29
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.codegen\_npysim module
+=======================================================
+
+.. automodule:: finn.transformation.fpgadataflow.codegen_npysim
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt
new file mode 100644
index 000000000..3d36a046b
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.compile module
+===============================================
+
+.. automodule:: finn.transformation.fpgadataflow.compile
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt
new file mode 100644
index 000000000..0ae11a41b
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.convert\_to\_hls\_layers module
+================================================================
+
+.. automodule:: finn.transformation.fpgadataflow.convert_to_hls_layers
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt
new file mode 100644
index 000000000..4827fd5b2
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.create\_dataflow\_partition module
+===================================================================
+
+.. automodule:: finn.transformation.fpgadataflow.create_dataflow_partition
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt
new file mode 100644
index 000000000..47af9049f
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.hlssynth\_ipgen module
+=======================================================
+
+.. automodule:: finn.transformation.fpgadataflow.hlssynth_ipgen
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt
new file mode 100644
index 000000000..d4bd00b8c
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.insert\_tlastmarker module
+===========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.insert_tlastmarker
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt
new file mode 100644
index 000000000..130c91989
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.make\_deployment module
+========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.make_deployment
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt
new file mode 100644
index 000000000..5238f0846
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.make\_pynq\_driver module
+==========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.make_pynq_driver
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt
new file mode 100644
index 000000000..1d040887f
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.make\_pynq\_proj module
+========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.make_pynq_proj
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.rst.txt
index 435eacf2c..f99673391 100644
--- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.rst.txt
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.rst.txt
@@ -4,126 +4,23 @@ finn.transformation.fpgadataflow package
 Submodules
 ----------
 
-finn.transformation.fpgadataflow.cleanup module
------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.cleanup
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.codegen\_ipgen module
-------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.codegen_ipgen
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.codegen\_ipstitch module
----------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.codegen_ipstitch
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.codegen\_npysim module
--------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.codegen_npysim
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.compile module
------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.compile
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.convert\_to\_hls\_layers module
-----------------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.convert_to_hls_layers
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.create\_dataflow\_partition module
--------------------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.create_dataflow_partition
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.hlssynth\_ipgen module
--------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.hlssynth_ipgen
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.insert\_tlastmarker module
------------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.insert_tlastmarker
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.make\_deployment module
---------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.make_deployment
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.make\_pynq\_driver module
-----------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.make_pynq_driver
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.make\_pynq\_proj module
---------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.make_pynq_proj
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.set\_exec\_mode module
--------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.set_exec_mode
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.synth\_pynq\_proj module
----------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.synth_pynq_proj
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.templates module
--------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.templates
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
+.. toctree::
+
+   finn.transformation.fpgadataflow.cleanup
+   finn.transformation.fpgadataflow.codegen_ipgen
+   finn.transformation.fpgadataflow.codegen_ipstitch
+   finn.transformation.fpgadataflow.codegen_npysim
+   finn.transformation.fpgadataflow.compile
+   finn.transformation.fpgadataflow.convert_to_hls_layers
+   finn.transformation.fpgadataflow.create_dataflow_partition
+   finn.transformation.fpgadataflow.hlssynth_ipgen
+   finn.transformation.fpgadataflow.insert_tlastmarker
+   finn.transformation.fpgadataflow.make_deployment
+   finn.transformation.fpgadataflow.make_pynq_driver
+   finn.transformation.fpgadataflow.make_pynq_proj
+   finn.transformation.fpgadataflow.set_exec_mode
+   finn.transformation.fpgadataflow.synth_pynq_proj
+   finn.transformation.fpgadataflow.templates
 
 Module contents
 ---------------
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt
new file mode 100644
index 000000000..7affa78b4
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.set\_exec\_mode module
+=======================================================
+
+.. automodule:: finn.transformation.fpgadataflow.set_exec_mode
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt
new file mode 100644
index 000000000..e902991a6
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.synth\_pynq\_proj module
+=========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.synth_pynq_proj
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt
new file mode 100644
index 000000000..a62f37783
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.templates module
+=================================================
+
+.. automodule:: finn.transformation.fpgadataflow.templates
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.general.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.general.rst.txt
new file mode 100644
index 000000000..bfae28100
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.general.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.general module
+==================================
+
+.. automodule:: finn.transformation.general
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_datatypes.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_datatypes.rst.txt
new file mode 100644
index 000000000..939d15521
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_datatypes.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.infer\_datatypes module
+===========================================
+
+.. automodule:: finn.transformation.infer_datatypes
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_shapes.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_shapes.rst.txt
new file mode 100644
index 000000000..946955706
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_shapes.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.infer\_shapes module
+========================================
+
+.. automodule:: finn.transformation.infer_shapes
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.rst.txt
index 172f6e300..da9618ed6 100644
--- a/docs/finn/_build/html/_sources/source_code/finn.transformation.rst.txt
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.rst.txt
@@ -12,54 +12,14 @@ Subpackages
 Submodules
 ----------
 
-finn.transformation.batchnorm\_to\_affine module
-------------------------------------------------
-
-.. automodule:: finn.transformation.batchnorm_to_affine
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.bipolar\_to\_xnor module
---------------------------------------------
-
-.. automodule:: finn.transformation.bipolar_to_xnor
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fold\_constants module
-------------------------------------------
-
-.. automodule:: finn.transformation.fold_constants
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.general module
-----------------------------------
-
-.. automodule:: finn.transformation.general
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.infer\_datatypes module
--------------------------------------------
-
-.. automodule:: finn.transformation.infer_datatypes
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.infer\_shapes module
-----------------------------------------
-
-.. automodule:: finn.transformation.infer_shapes
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.transformation.batchnorm_to_affine
+   finn.transformation.bipolar_to_xnor
+   finn.transformation.fold_constants
+   finn.transformation.general
+   finn.transformation.infer_datatypes
+   finn.transformation.infer_shapes
 
 Module contents
 ---------------
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt
new file mode 100644
index 000000000..597a98944
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.streamline.absorb module
+============================================
+
+.. automodule:: finn.transformation.streamline.absorb
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt
new file mode 100644
index 000000000..a15f72aea
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.streamline.collapse\_repeated module
+========================================================
+
+.. automodule:: finn.transformation.streamline.collapse_repeated
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.reorder.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.reorder.rst.txt
new file mode 100644
index 000000000..ac969e132
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.reorder.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.streamline.reorder module
+=============================================
+
+.. automodule:: finn.transformation.streamline.reorder
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt
new file mode 100644
index 000000000..031c65d07
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.streamline.round\_thresholds module
+=======================================================
+
+.. automodule:: finn.transformation.streamline.round_thresholds
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.rst.txt
index 33e593095..5b3a88384 100644
--- a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.rst.txt
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.rst.txt
@@ -4,46 +4,13 @@ finn.transformation.streamline package
 Submodules
 ----------
 
-finn.transformation.streamline.absorb module
---------------------------------------------
-
-.. automodule:: finn.transformation.streamline.absorb
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.streamline.collapse\_repeated module
---------------------------------------------------------
-
-.. automodule:: finn.transformation.streamline.collapse_repeated
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.streamline.reorder module
----------------------------------------------
-
-.. automodule:: finn.transformation.streamline.reorder
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.streamline.round\_thresholds module
--------------------------------------------------------
-
-.. automodule:: finn.transformation.streamline.round_thresholds
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.streamline.sign\_to\_thres module
------------------------------------------------------
-
-.. automodule:: finn.transformation.streamline.sign_to_thres
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.transformation.streamline.absorb
+   finn.transformation.streamline.collapse_repeated
+   finn.transformation.streamline.reorder
+   finn.transformation.streamline.round_thresholds
+   finn.transformation.streamline.sign_to_thres
 
 Module contents
 ---------------
diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt
new file mode 100644
index 000000000..166717eb3
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt
@@ -0,0 +1,7 @@
+finn.transformation.streamline.sign\_to\_thres module
+=====================================================
+
+.. automodule:: finn.transformation.streamline.sign_to_thres
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.basic.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.basic.rst.txt
new file mode 100644
index 000000000..10e8e1ac1
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.util.basic.rst.txt
@@ -0,0 +1,7 @@
+finn.util.basic module
+======================
+
+.. automodule:: finn.util.basic
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.data_packing.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.data_packing.rst.txt
new file mode 100644
index 000000000..6a39cc14b
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.util.data_packing.rst.txt
@@ -0,0 +1,7 @@
+finn.util.data\_packing module
+==============================
+
+.. automodule:: finn.util.data_packing
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.fpgadataflow.rst.txt
new file mode 100644
index 000000000..3472ed477
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.util.fpgadataflow.rst.txt
@@ -0,0 +1,7 @@
+finn.util.fpgadataflow module
+=============================
+
+.. automodule:: finn.util.fpgadataflow
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.onnx.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.onnx.rst.txt
new file mode 100644
index 000000000..057cb07ca
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.util.onnx.rst.txt
@@ -0,0 +1,7 @@
+finn.util.onnx module
+=====================
+
+.. automodule:: finn.util.onnx
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.rst.txt
index 1c85bcd44..c66d189b3 100644
--- a/docs/finn/_build/html/_sources/source_code/finn.util.rst.txt
+++ b/docs/finn/_build/html/_sources/source_code/finn.util.rst.txt
@@ -4,46 +4,13 @@ finn.util package
 Submodules
 ----------
 
-finn.util.basic module
-----------------------
-
-.. automodule:: finn.util.basic
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.util.data\_packing module
-------------------------------
-
-.. automodule:: finn.util.data_packing
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.util.fpgadataflow module
------------------------------
-
-.. automodule:: finn.util.fpgadataflow
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.util.onnx module
----------------------
-
-.. automodule:: finn.util.onnx
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.util.test module
----------------------
-
-.. automodule:: finn.util.test
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.util.basic
+   finn.util.data_packing
+   finn.util.fpgadataflow
+   finn.util.onnx
+   finn.util.test
 
 Module contents
 ---------------
diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt
new file mode 100644
index 000000000..3fe1bc15e
--- /dev/null
+++ b/docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt
@@ -0,0 +1,7 @@
+finn.util.test module
+=====================
+
+.. automodule:: finn.util.test
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/_build/html/genindex.html b/docs/finn/_build/html/genindex.html
index e6f72ed0b..3de735225 100644
--- a/docs/finn/_build/html/genindex.html
+++ b/docs/finn/_build/html/genindex.html
@@ -173,90 +173,90 @@
 <h2 id="A">A</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul">Absorb1BitMulIntoMatMul (class in finn.transformation.streamline.absorb)</a>
+      <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul">Absorb1BitMulIntoMatMul (class in finn.transformation.streamline.absorb)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold">AbsorbAddIntoMultiThreshold (class in finn.transformation.streamline.absorb)</a>
+      <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold">AbsorbAddIntoMultiThreshold (class in finn.transformation.streamline.absorb)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold">AbsorbMulIntoMultiThreshold (class in finn.transformation.streamline.absorb)</a>
+      <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold">AbsorbMulIntoMultiThreshold (class in finn.transformation.streamline.absorb)</a>
 </li>
-      <li><a href="source_code/finn.analysis.html#finn.analysis.topology.all_tensors_f32">all_tensors_f32() (in module finn.analysis.topology)</a>
+      <li><a href="source_code/finn.analysis.topology.html#finn.analysis.topology.all_tensors_f32">all_tensors_f32() (in module finn.analysis.topology)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.allowed">allowed() (finn.core.datatype.DataType method)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.allowed">allowed() (finn.core.datatype.DataType method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.analysis">analysis() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.analysis">analysis() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.CppBuilder.append_includes">append_includes() (finn.util.basic.CppBuilder method)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.CppBuilder.append_includes">append_includes() (finn.util.basic.CppBuilder method)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.CppBuilder.append_sources">append_sources() (finn.util.basic.CppBuilder method)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.CppBuilder.append_sources">append_sources() (finn.util.basic.CppBuilder method)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.fpgadataflow.IPGenBuilder.append_tcl">append_tcl() (finn.util.fpgadataflow.IPGenBuilder method)</a>
+      <li><a href="source_code/finn.util.fpgadataflow.html#finn.util.fpgadataflow.IPGenBuilder.append_tcl">append_tcl() (finn.util.fpgadataflow.IPGenBuilder method)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply">apply() (finn.transformation.batchnorm_to_affine.BatchNormToAffine method)</a>
+      <li><a href="source_code/finn.transformation.batchnorm_to_affine.html#finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply">apply() (finn.transformation.batchnorm_to_affine.BatchNormToAffine method)</a>
 
       <ul>
-        <li><a href="source_code/finn.transformation.html#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply">(finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount method)</a>
+        <li><a href="source_code/finn.transformation.bipolar_to_xnor.html#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply">(finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.html#finn.transformation.fold_constants.FoldConstants.apply">(finn.transformation.fold_constants.FoldConstants method)</a>
+        <li><a href="source_code/finn.transformation.fold_constants.html#finn.transformation.fold_constants.FoldConstants.apply">(finn.transformation.fold_constants.FoldConstants method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.cleanup.CleanUp.apply">(finn.transformation.fpgadataflow.cleanup.CleanUp method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.cleanup.html#finn.transformation.fpgadataflow.cleanup.CleanUp.apply">(finn.transformation.fpgadataflow.cleanup.CleanUp method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply">(finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipgen.html#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply">(finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply">(finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply">(finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply">(finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.codegen_npysim.html#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply">(finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.compile.Compile.apply">(finn.transformation.fpgadataflow.compile.Compile method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.compile.html#finn.transformation.fpgadataflow.compile.Compile.apply">(finn.transformation.fpgadataflow.compile.Compile method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply">(finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply">(finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply">(finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply">(finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply">(finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply">(finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply">(finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply">(finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply">(finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.make_deployment.html#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply">(finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply">(finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_driver.html#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply">(finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply">(finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_proj.html#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply">(finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply">(finn.transformation.fpgadataflow.set_exec_mode.SetExecMode method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.set_exec_mode.html#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply">(finn.transformation.fpgadataflow.set_exec_mode.SetExecMode method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply">(finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject method)</a>
+        <li><a href="source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply">(finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.html#finn.transformation.general.ConvertSubToAdd.apply">(finn.transformation.general.ConvertSubToAdd method)</a>
+        <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.ConvertSubToAdd.apply">(finn.transformation.general.ConvertSubToAdd method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveRandomTensorNames.apply">(finn.transformation.general.GiveRandomTensorNames method)</a>
+        <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveRandomTensorNames.apply">(finn.transformation.general.GiveRandomTensorNames method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveReadableTensorNames.apply">(finn.transformation.general.GiveReadableTensorNames method)</a>
+        <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveReadableTensorNames.apply">(finn.transformation.general.GiveReadableTensorNames method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveUniqueNodeNames.apply">(finn.transformation.general.GiveUniqueNodeNames method)</a>
+        <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveUniqueNodeNames.apply">(finn.transformation.general.GiveUniqueNodeNames method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.html#finn.transformation.infer_datatypes.InferDataTypes.apply">(finn.transformation.infer_datatypes.InferDataTypes method)</a>
+        <li><a href="source_code/finn.transformation.infer_datatypes.html#finn.transformation.infer_datatypes.InferDataTypes.apply">(finn.transformation.infer_datatypes.InferDataTypes method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.html#finn.transformation.infer_shapes.InferShapes.apply">(finn.transformation.infer_shapes.InferShapes method)</a>
+        <li><a href="source_code/finn.transformation.infer_shapes.html#finn.transformation.infer_shapes.InferShapes.apply">(finn.transformation.infer_shapes.InferShapes method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply">(finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul method)</a>
+        <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply">(finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply">(finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold method)</a>
+        <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply">(finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply">(finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold method)</a>
+        <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply">(finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply">(finn.transformation.streamline.absorb.FactorOutMulSignMagnitude method)</a>
+        <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply">(finn.transformation.streamline.absorb.FactorOutMulSignMagnitude method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply">(finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp method)</a>
+        <li><a href="source_code/finn.transformation.streamline.collapse_repeated.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply">(finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveAddPastMul.apply">(finn.transformation.streamline.reorder.MoveAddPastMul method)</a>
+        <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveAddPastMul.apply">(finn.transformation.streamline.reorder.MoveAddPastMul method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply">(finn.transformation.streamline.reorder.MoveScalarAddPastMatMul method)</a>
+        <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply">(finn.transformation.streamline.reorder.MoveScalarAddPastMatMul method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply">(finn.transformation.streamline.reorder.MoveScalarMulPastMatMul method)</a>
+        <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply">(finn.transformation.streamline.reorder.MoveScalarMulPastMatMul method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply">(finn.transformation.streamline.round_thresholds.RoundAndClipThresholds method)</a>
+        <li><a href="source_code/finn.transformation.streamline.round_thresholds.html#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply">(finn.transformation.streamline.round_thresholds.RoundAndClipThresholds method)</a>
 </li>
-        <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply">(finn.transformation.streamline.sign_to_thres.ConvertSignToThres method)</a>
+        <li><a href="source_code/finn.transformation.streamline.sign_to_thres.html#finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply">(finn.transformation.streamline.sign_to_thres.ConvertSignToThres method)</a>
 </li>
         <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.Streamline.apply">(finn.transformation.streamline.Streamline method)</a>
 </li>
@@ -265,7 +265,7 @@
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.util.html#finn.util.data_packing.array2hexstring">array2hexstring() (in module finn.util.data_packing)</a>
+      <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.array2hexstring">array2hexstring() (in module finn.util.data_packing)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -273,42 +273,42 @@
 <h2 id="B">B</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.transformation.html#finn.transformation.batchnorm_to_affine.BatchNormToAffine">BatchNormToAffine (class in finn.transformation.batchnorm_to_affine)</a>
+      <li><a href="source_code/finn.transformation.batchnorm_to_affine.html#finn.transformation.batchnorm_to_affine.BatchNormToAffine">BatchNormToAffine (class in finn.transformation.batchnorm_to_affine)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.BINARY">BINARY (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.BINARY">BINARY (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.BIPOLAR">BIPOLAR (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.BIPOLAR">BIPOLAR (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.bitwidth">bitwidth() (finn.core.datatype.DataType method)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.bitwidth">bitwidth() (finn.core.datatype.DataType method)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction">blackboxfunction() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction">blackboxfunction() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.blackboxfunction">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation">bram_estimation() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation">bram_estimation() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.bram_estimation">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.CppBuilder.build">build() (finn.util.basic.CppBuilder method)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.CppBuilder.build">build() (finn.util.basic.CppBuilder method)</a>
 
       <ul>
-        <li><a href="source_code/finn.util.html#finn.util.fpgadataflow.IPGenBuilder.build">(finn.util.fpgadataflow.IPGenBuilder method)</a>
+        <li><a href="source_code/finn.util.fpgadataflow.html#finn.util.fpgadataflow.IPGenBuilder.build">(finn.util.fpgadataflow.IPGenBuilder method)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -317,55 +317,55 @@
 <h2 id="C">C</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem">calc_tmem() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem">calc_tmem() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem">calc_wmem() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem">calc_wmem() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.calculate_signed_dot_prod_range">calculate_signed_dot_prod_range() (in module finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.calculate_signed_dot_prod_range">calculate_signed_dot_prod_range() (in module finn.util.basic)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified">check_all_tensor_shapes_specified() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified">check_all_tensor_shapes_specified() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.check_compatibility">check_compatibility() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.check_compatibility">check_compatibility() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.cleanup.CleanUp">CleanUp (class in finn.transformation.fpgadataflow.cleanup)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.cleanup.html#finn.transformation.fpgadataflow.cleanup.CleanUp">CleanUp (class in finn.transformation.fpgadataflow.cleanup)</a>
 </li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_ipgen">code_generation_ipgen() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_npysim">code_generation_npysim() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen">CodeGen_ipgen (class in finn.transformation.fpgadataflow.codegen_ipgen)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipgen.html#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen">CodeGen_ipgen (class in finn.transformation.fpgadataflow.codegen_ipgen)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch">CodeGen_ipstitch (class in finn.transformation.fpgadataflow.codegen_ipstitch)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch">CodeGen_ipstitch (class in finn.transformation.fpgadataflow.codegen_ipstitch)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim">CodeGen_npysim (class in finn.transformation.fpgadataflow.codegen_npysim)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.codegen_npysim.html#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim">CodeGen_npysim (class in finn.transformation.fpgadataflow.codegen_npysim)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd">CollapseRepeatedAdd (class in finn.transformation.streamline.collapse_repeated)</a>
+      <li><a href="source_code/finn.transformation.streamline.collapse_repeated.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd">CollapseRepeatedAdd (class in finn.transformation.streamline.collapse_repeated)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul">CollapseRepeatedMul (class in finn.transformation.streamline.collapse_repeated)</a>
+      <li><a href="source_code/finn.transformation.streamline.collapse_repeated.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul">CollapseRepeatedMul (class in finn.transformation.streamline.collapse_repeated)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp">CollapseRepeatedOp (class in finn.transformation.streamline.collapse_repeated)</a>
+      <li><a href="source_code/finn.transformation.streamline.collapse_repeated.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp">CollapseRepeatedOp (class in finn.transformation.streamline.collapse_repeated)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.compare">compare() (in module finn.custom_op.multithreshold)</a>
+      <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.compare">compare() (in module finn.custom_op.multithreshold)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.onnx_exec.compare_execution">compare_execution() (in module finn.core.onnx_exec)</a>
+      <li><a href="source_code/finn.core.onnx_exec.html#finn.core.onnx_exec.compare_execution">compare_execution() (in module finn.core.onnx_exec)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.compile.Compile">Compile (class in finn.transformation.fpgadataflow.compile)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.compile.html#finn.transformation.fpgadataflow.compile.Compile">Compile (class in finn.transformation.fpgadataflow.compile)</a>
 </li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.compile_singlenode_code">compile_singlenode_code() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount">ConvertBipolarMatMulToXnorPopcount (class in finn.transformation.bipolar_to_xnor)</a>
+      <li><a href="source_code/finn.transformation.bipolar_to_xnor.html#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount">ConvertBipolarMatMulToXnorPopcount (class in finn.transformation.bipolar_to_xnor)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.sign_to_thres.ConvertSignToThres">ConvertSignToThres (class in finn.transformation.streamline.sign_to_thres)</a>
+      <li><a href="source_code/finn.transformation.streamline.sign_to_thres.html#finn.transformation.streamline.sign_to_thres.ConvertSignToThres">ConvertSignToThres (class in finn.transformation.streamline.sign_to_thres)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#finn.transformation.general.ConvertSubToAdd">ConvertSubToAdd (class in finn.transformation.general)</a>
+      <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.ConvertSubToAdd">ConvertSubToAdd (class in finn.transformation.general)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator">ConvolutionInputGenerator (class in finn.custom_op.fpgadataflow.convolutioninputgenerator)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator">ConvolutionInputGenerator (class in finn.custom_op.fpgadataflow.convolutioninputgenerator)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.CppBuilder">CppBuilder (class in finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.CppBuilder">CppBuilder (class in finn.util.basic)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition">CreateDataflowPartition (class in finn.transformation.fpgadataflow.create_dataflow_partition)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition">CreateDataflowPartition (class in finn.transformation.fpgadataflow.create_dataflow_partition)</a>
 </li>
       <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp">CustomOp (class in finn.custom_op)</a>
 </li>
@@ -375,46 +375,46 @@
 <h2 id="D">D</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm">dataoutstrm() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm">dataoutstrm() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.dataoutstrm">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType">DataType (class in finn.core.datatype)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType">DataType (class in finn.core.datatype)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines">defines() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines">defines() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.defines">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ">DeployToPYNQ (class in finn.transformation.fpgadataflow.make_deployment)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.make_deployment.html#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ">DeployToPYNQ (class in finn.transformation.fpgadataflow.make_deployment)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute">docompute() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute">docompute() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.docompute">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.dynamic_input_to_npy">dynamic_input_to_npy() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
@@ -427,33 +427,33 @@
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.exec_precompiled_singlenode_model">exec_precompiled_singlenode_model() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.execute_custom_node.execute_custom_node">execute_custom_node() (in module finn.core.execute_custom_node)</a>
+      <li><a href="source_code/finn.core.execute_custom_node.html#finn.core.execute_custom_node.execute_custom_node">execute_custom_node() (in module finn.core.execute_custom_node)</a>
 </li>
       <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.execute_node">execute_node() (finn.custom_op.CustomOp method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 </li>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.execute_node">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold.execute_node">(finn.custom_op.multithreshold.MultiThreshold method)</a>
+        <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold.execute_node">(finn.custom_op.multithreshold.MultiThreshold method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
+        <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
+        <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
 </li>
-        <li><a href="source_code/finn.core.html#finn.core.onnx_exec.execute_node">(in module finn.core.onnx_exec)</a>
+        <li><a href="source_code/finn.core.onnx_exec.html#finn.core.onnx_exec.execute_node">(in module finn.core.onnx_exec)</a>
 </li>
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.core.html#finn.core.onnx_exec.execute_onnx">execute_onnx() (in module finn.core.onnx_exec)</a>
+      <li><a href="source_code/finn.core.onnx_exec.html#finn.core.onnx_exec.execute_onnx">execute_onnx() (in module finn.core.onnx_exec)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.onnx_exec.execute_onnx_and_make_model">execute_onnx_and_make_model() (in module finn.core.onnx_exec)</a>
+      <li><a href="source_code/finn.core.onnx_exec.html#finn.core.onnx_exec.execute_onnx_and_make_model">execute_onnx_and_make_model() (in module finn.core.onnx_exec)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -461,11 +461,11 @@
 <h2 id="F">F</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude">FactorOutMulSignMagnitude (class in finn.transformation.streamline.absorb)</a>
+      <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude">FactorOutMulSignMagnitude (class in finn.transformation.streamline.absorb)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.find_consumer">find_consumer() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.find_consumer">find_consumer() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.find_producer">find_producer() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.find_producer">find_producer() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
       <li><a href="source_code/finn.html#module-finn">finn (module)</a>
 </li>
@@ -473,127 +473,127 @@
 </li>
       <li><a href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow">finn.analysis.fpgadataflow (module)</a>
 </li>
-      <li><a href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation (module)</a>
+      <li><a href="source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation (module)</a>
 </li>
-      <li><a href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation (module)</a>
+      <li><a href="source_code/finn.analysis.fpgadataflow.res_estimation.html#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation (module)</a>
 </li>
-      <li><a href="source_code/finn.analysis.html#module-finn.analysis.topology">finn.analysis.topology (module)</a>
+      <li><a href="source_code/finn.analysis.topology.html#module-finn.analysis.topology">finn.analysis.topology (module)</a>
 </li>
-      <li><a href="source_code/finn.analysis.html#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes (module)</a>
+      <li><a href="source_code/finn.analysis.verify_custom_nodes.html#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes (module)</a>
 </li>
       <li><a href="source_code/finn.core.html#module-finn.core">finn.core (module)</a>
 </li>
-      <li><a href="source_code/finn.core.html#module-finn.core.datatype">finn.core.datatype (module)</a>
+      <li><a href="source_code/finn.core.datatype.html#module-finn.core.datatype">finn.core.datatype (module)</a>
 </li>
-      <li><a href="source_code/finn.core.html#module-finn.core.execute_custom_node">finn.core.execute_custom_node (module)</a>
+      <li><a href="source_code/finn.core.execute_custom_node.html#module-finn.core.execute_custom_node">finn.core.execute_custom_node (module)</a>
 </li>
-      <li><a href="source_code/finn.core.html#module-finn.core.modelwrapper">finn.core.modelwrapper (module)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#module-finn.core.modelwrapper">finn.core.modelwrapper (module)</a>
 </li>
-      <li><a href="source_code/finn.core.html#module-finn.core.onnx_exec">finn.core.onnx_exec (module)</a>
+      <li><a href="source_code/finn.core.onnx_exec.html#module-finn.core.onnx_exec">finn.core.onnx_exec (module)</a>
 </li>
-      <li><a href="source_code/finn.core.html#module-finn.core.remote_exec">finn.core.remote_exec (module)</a>
+      <li><a href="source_code/finn.core.remote_exec.html#module-finn.core.remote_exec">finn.core.remote_exec (module)</a>
 </li>
-      <li><a href="source_code/finn.core.html#module-finn.core.rtlsim_exec">finn.core.rtlsim_exec (module)</a>
+      <li><a href="source_code/finn.core.rtlsim_exec.html#module-finn.core.rtlsim_exec">finn.core.rtlsim_exec (module)</a>
 </li>
       <li><a href="source_code/finn.custom_op.html#module-finn.custom_op">finn.custom_op (module)</a>
 </li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow">finn.custom_op.fpgadataflow (module)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator (module)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator (module)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch (module)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch (module)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch (module)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch (module)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates (module)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.templates.html#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates (module)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker (module)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker (module)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.html#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold (module)</a>
+      <li><a href="source_code/finn.custom_op.multithreshold.html#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold (module)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.html#module-finn.custom_op.registry">finn.custom_op.registry (module)</a>
+      <li><a href="source_code/finn.custom_op.registry.html#module-finn.custom_op.registry">finn.custom_op.registry (module)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.html#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition (module)</a>
+      <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition (module)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.html#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount (module)</a>
+      <li><a href="source_code/finn.custom_op.xnorpopcount.html#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount (module)</a>
 </li>
       <li><a href="source_code/finn.transformation.html#module-finn.transformation">finn.transformation (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine (module)</a>
+      <li><a href="source_code/finn.transformation.batchnorm_to_affine.html#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor (module)</a>
+      <li><a href="source_code/finn.transformation.bipolar_to_xnor.html#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#module-finn.transformation.fold_constants">finn.transformation.fold_constants (module)</a>
+      <li><a href="source_code/finn.transformation.fold_constants.html#module-finn.transformation.fold_constants">finn.transformation.fold_constants (module)</a>
 </li>
       <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow">finn.transformation.fpgadataflow (module)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.cleanup.html#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipgen.html#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.codegen_npysim.html#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.compile.html#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.make_deployment.html#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_driver.html#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_proj.html#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.set_exec_mode">finn.transformation.fpgadataflow.set_exec_mode (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.set_exec_mode.html#module-finn.transformation.fpgadataflow.set_exec_mode">finn.transformation.fpgadataflow.set_exec_mode (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates (module)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.templates.html#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#module-finn.transformation.general">finn.transformation.general (module)</a>
+      <li><a href="source_code/finn.transformation.general.html#module-finn.transformation.general">finn.transformation.general (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes (module)</a>
+      <li><a href="source_code/finn.transformation.infer_datatypes.html#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes (module)</a>
+      <li><a href="source_code/finn.transformation.infer_shapes.html#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes (module)</a>
 </li>
       <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline">finn.transformation.streamline (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb (module)</a>
+      <li><a href="source_code/finn.transformation.streamline.absorb.html#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated (module)</a>
+      <li><a href="source_code/finn.transformation.streamline.collapse_repeated.html#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder (module)</a>
+      <li><a href="source_code/finn.transformation.streamline.reorder.html#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds (module)</a>
+      <li><a href="source_code/finn.transformation.streamline.round_thresholds.html#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds (module)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres (module)</a>
+      <li><a href="source_code/finn.transformation.streamline.sign_to_thres.html#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres (module)</a>
 </li>
       <li><a href="source_code/finn.util.html#module-finn.util">finn.util (module)</a>
 </li>
-      <li><a href="source_code/finn.util.html#module-finn.util.basic">finn.util.basic (module)</a>
+      <li><a href="source_code/finn.util.basic.html#module-finn.util.basic">finn.util.basic (module)</a>
 </li>
-      <li><a href="source_code/finn.util.html#module-finn.util.data_packing">finn.util.data_packing (module)</a>
+      <li><a href="source_code/finn.util.data_packing.html#module-finn.util.data_packing">finn.util.data_packing (module)</a>
 </li>
-      <li><a href="source_code/finn.util.html#module-finn.util.fpgadataflow">finn.util.fpgadataflow (module)</a>
+      <li><a href="source_code/finn.util.fpgadataflow.html#module-finn.util.fpgadataflow">finn.util.fpgadataflow (module)</a>
 </li>
-      <li><a href="source_code/finn.util.html#module-finn.util.onnx">finn.util.onnx (module)</a>
+      <li><a href="source_code/finn.util.onnx.html#module-finn.util.onnx">finn.util.onnx (module)</a>
 </li>
-      <li><a href="source_code/finn.util.html#module-finn.util.test">finn.util.test (module)</a>
+      <li><a href="source_code/finn.util.test.html#module-finn.util.test">finn.util.test (module)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.data_packing.finnpy_to_packed_bytearray">finnpy_to_packed_bytearray() (in module finn.util.data_packing)</a>
+      <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.finnpy_to_packed_bytearray">finnpy_to_packed_bytearray() (in module finn.util.data_packing)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.FLOAT32">FLOAT32 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.FLOAT32">FLOAT32 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#finn.transformation.fold_constants.FoldConstants">FoldConstants (class in finn.transformation.fold_constants)</a>
+      <li><a href="source_code/finn.transformation.fold_constants.html#finn.transformation.fold_constants.FoldConstants">FoldConstants (class in finn.transformation.fold_constants)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -601,159 +601,159 @@
 <h2 id="G">G</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.util.html#finn.util.basic.gen_finn_dt_tensor">gen_finn_dt_tensor() (in module finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.gen_finn_dt_tensor">gen_finn_dt_tensor() (in module finn.util.basic)</a>
 </li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.generate_params">generate_params() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_all_tensor_names">get_all_tensor_names() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_all_tensor_names">get_all_tensor_names() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.get_by_name">get_by_name() (in module finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.get_by_name">get_by_name() (in module finn.util.basic)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.get_finn_root">get_finn_root() (in module finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.get_finn_root">get_finn_root() (in module finn.util.basic)</a>
 </li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_input_shape">get_folded_input_shape() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_output_shape">get_folded_output_shape() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor">get_hls_compatible_threshold_tensor() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor">get_hls_compatible_threshold_tensor() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor">get_hls_compatible_weight_tensor() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor">get_hls_compatible_weight_tensor() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.get_hls_datatype_str">get_hls_datatype_str() (finn.core.datatype.DataType method)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.get_hls_datatype_str">get_hls_datatype_str() (finn.core.datatype.DataType method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_initializer">get_initializer() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_initializer">get_initializer() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype">get_input_datatype() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype">get_input_datatype() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
       </ul></li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_instream_width">get_instream_width() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_metadata_prop">get_metadata_prop() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_metadata_prop">get_metadata_prop() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
       <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.get_nodeattr">get_nodeattr() (finn.custom_op.CustomOp method)</a>
 </li>
       <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.get_nodeattr_types">get_nodeattr_types() (finn.custom_op.CustomOp method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 </li>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_nodeattr_types">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types">(finn.custom_op.multithreshold.MultiThreshold method)</a>
+        <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types">(finn.custom_op.multithreshold.MultiThreshold method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
+        <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
+        <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.get_num_possible_values">get_num_possible_values() (finn.core.datatype.DataType method)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.get_num_possible_values">get_num_possible_values() (finn.core.datatype.DataType method)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values">get_number_output_values() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values">get_number_output_values() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_number_output_values">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype">get_output_datatype() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype">get_output_datatype() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
       </ul></li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_outstream_width">get_outstream_width() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.analysis.html#finn.analysis.topology.get_per_tensor_fanouts">get_per_tensor_fanouts() (in module finn.analysis.topology)</a>
+      <li><a href="source_code/finn.analysis.topology.html#finn.analysis.topology.get_per_tensor_fanouts">get_per_tensor_fanouts() (in module finn.analysis.topology)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.get_smallest_possible">get_smallest_possible() (finn.core.datatype.DataType method)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.get_smallest_possible">get_smallest_possible() (finn.core.datatype.DataType method)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width">get_stream_width() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width">get_stream_width() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values">get_template_param_values() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values">get_template_param_values() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_tensor_datatype">get_tensor_datatype() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_tensor_datatype">get_tensor_datatype() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_tensor_fanout">get_tensor_fanout() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_tensor_fanout">get_tensor_fanout() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_tensor_shape">get_tensor_shape() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_tensor_shape">get_tensor_shape() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo">get_tensor_valueinfo() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo">get_tensor_valueinfo() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.test.get_test_model_def_fxn">get_test_model_def_fxn() (in module finn.util.test)</a>
+      <li><a href="source_code/finn.util.test.html#finn.util.test.get_test_model_def_fxn">get_test_model_def_fxn() (in module finn.util.test)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.test.get_test_model_trained">get_test_model_trained() (in module finn.util.test)</a>
+      <li><a href="source_code/finn.util.test.html#finn.util.test.get_test_model_trained">get_test_model_trained() (in module finn.util.test)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.test.get_test_model_untrained">get_test_model_untrained() (in module finn.util.test)</a>
+      <li><a href="source_code/finn.util.test.html#finn.util.test.get_test_model_untrained">get_test_model_untrained() (in module finn.util.test)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.test.get_trained_checkpoint">get_trained_checkpoint() (in module finn.util.test)</a>
+      <li><a href="source_code/finn.util.test.html#finn.util.test.get_trained_checkpoint">get_trained_checkpoint() (in module finn.util.test)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype">get_weight_datatype() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype">get_weight_datatype() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.html#finn.custom_op.registry.getCustomOp">getCustomOp() (in module finn.custom_op.registry)</a>
+      <li><a href="source_code/finn.custom_op.registry.html#finn.custom_op.registry.getCustomOp">getCustomOp() (in module finn.custom_op.registry)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveRandomTensorNames">GiveRandomTensorNames (class in finn.transformation.general)</a>
+      <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveRandomTensorNames">GiveRandomTensorNames (class in finn.transformation.general)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveReadableTensorNames">GiveReadableTensorNames (class in finn.transformation.general)</a>
+      <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveReadableTensorNames">GiveReadableTensorNames (class in finn.transformation.general)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveUniqueNodeNames">GiveUniqueNodeNames (class in finn.transformation.general)</a>
+      <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveUniqueNodeNames">GiveUniqueNodeNames (class in finn.transformation.general)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes">global_includes() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes">global_includes() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.global_includes">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.graph">graph() (finn.core.modelwrapper.ModelWrapper property)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.graph">graph() (finn.core.modelwrapper.ModelWrapper property)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -761,15 +761,15 @@
 <h2 id="H">H</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.util.html#finn.util.data_packing.hexstring2npbytearray">hexstring2npbytearray() (in module finn.util.data_packing)</a>
+      <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.hexstring2npbytearray">hexstring2npbytearray() (in module finn.util.data_packing)</a>
 </li>
-      <li><a href="source_code/finn.analysis.fpgadataflow.html#finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation">hls_synth_res_estimation() (in module finn.analysis.fpgadataflow.hls_synth_res_estimation)</a>
+      <li><a href="source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html#finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation">hls_synth_res_estimation() (in module finn.analysis.fpgadataflow.hls_synth_res_estimation)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp">HLSCustomOp (class in finn.custom_op.fpgadataflow)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen">HLSSynth_IPGen (class in finn.transformation.fpgadataflow.hlssynth_ipgen)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen">HLSSynth_IPGen (class in finn.transformation.fpgadataflow.hlssynth_ipgen)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -780,52 +780,52 @@
       <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.infer_node_datatype">infer_node_datatype() (finn.custom_op.CustomOp method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype">(finn.custom_op.multithreshold.MultiThreshold method)</a>
+        <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype">(finn.custom_op.multithreshold.MultiThreshold method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
+        <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
+        <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer">InferBinaryStreamingFCLayer (class in finn.transformation.fpgadataflow.convert_to_hls_layers)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer">InferBinaryStreamingFCLayer (class in finn.transformation.fpgadataflow.convert_to_hls_layers)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#finn.transformation.infer_datatypes.InferDataTypes">InferDataTypes (class in finn.transformation.infer_datatypes)</a>
+      <li><a href="source_code/finn.transformation.infer_datatypes.html#finn.transformation.infer_datatypes.InferDataTypes">InferDataTypes (class in finn.transformation.infer_datatypes)</a>
 </li>
-      <li><a href="source_code/finn.transformation.html#finn.transformation.infer_shapes.InferShapes">InferShapes (class in finn.transformation.infer_shapes)</a>
+      <li><a href="source_code/finn.transformation.infer_shapes.html#finn.transformation.infer_shapes.InferShapes">InferShapes (class in finn.transformation.infer_shapes)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker">InsertTLastMarker (class in finn.transformation.fpgadataflow.insert_tlastmarker)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker">InsertTLastMarker (class in finn.transformation.fpgadataflow.insert_tlastmarker)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT16">INT16 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT16">INT16 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT2">INT2 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT2">INT2 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT3">INT3 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT3">INT3 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT32">INT32 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT32">INT32 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT4">INT4 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT4">INT4 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT8">INT8 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT8">INT8 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.interleave_matrix_outer_dim_from_partitions">interleave_matrix_outer_dim_from_partitions() (in module finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.interleave_matrix_outer_dim_from_partitions">interleave_matrix_outer_dim_from_partitions() (in module finn.util.basic)</a>
 </li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.ipgen_singlenode_code">ipgen_singlenode_code() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.fpgadataflow.IPGenBuilder">IPGenBuilder (class in finn.util.fpgadataflow)</a>
+      <li><a href="source_code/finn.util.fpgadataflow.html#finn.util.fpgadataflow.IPGenBuilder">IPGenBuilder (class in finn.util.fpgadataflow)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.is_integer">is_integer() (finn.core.datatype.DataType method)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.is_integer">is_integer() (finn.core.datatype.DataType method)</a>
 </li>
-      <li><a href="source_code/finn.analysis.html#finn.analysis.topology.is_linear">is_linear() (in module finn.analysis.topology)</a>
+      <li><a href="source_code/finn.analysis.topology.html#finn.analysis.topology.is_linear">is_linear() (in module finn.analysis.topology)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -833,14 +833,14 @@
 <h2 id="L">L</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation">lut_estimation() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation">lut_estimation() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.lut_estimation">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -849,53 +849,53 @@
 <h2 id="M">M</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.util.html#finn.util.basic.make_build_dir">make_build_dir() (in module finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.make_build_dir">make_build_dir() (in module finn.util.basic)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.make_empty_exec_context">make_empty_exec_context() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.make_empty_exec_context">make_empty_exec_context() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name">make_new_valueinfo_name() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name">make_new_valueinfo_name() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
       <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.make_shape_compatible_op">make_shape_compatible_op() (finn.custom_op.CustomOp method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op">(finn.custom_op.multithreshold.MultiThreshold method)</a>
+        <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op">(finn.custom_op.multithreshold.MultiThreshold method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
+        <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
+        <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
 </li>
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver">MakePYNQDriver (class in finn.transformation.fpgadataflow.make_pynq_driver)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_driver.html#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver">MakePYNQDriver (class in finn.transformation.fpgadataflow.make_pynq_driver)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject">MakePYNQProject (class in finn.transformation.fpgadataflow.make_pynq_proj)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_proj.html#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject">MakePYNQProject (class in finn.transformation.fpgadataflow.make_pynq_proj)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.max">max() (finn.core.datatype.DataType method)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.max">max() (finn.core.datatype.DataType method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.min">min() (finn.core.datatype.DataType method)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.min">min() (finn.core.datatype.DataType method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.model">model() (finn.core.modelwrapper.ModelWrapper property)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.model">model() (finn.core.modelwrapper.ModelWrapper property)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper">ModelWrapper (class in finn.core.modelwrapper)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper">ModelWrapper (class in finn.core.modelwrapper)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveAddPastMul">MoveAddPastMul (class in finn.transformation.streamline.reorder)</a>
+      <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveAddPastMul">MoveAddPastMul (class in finn.transformation.streamline.reorder)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul">MoveScalarAddPastMatMul (class in finn.transformation.streamline.reorder)</a>
+      <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul">MoveScalarAddPastMatMul (class in finn.transformation.streamline.reorder)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul">MoveScalarMulPastMatMul (class in finn.transformation.streamline.reorder)</a>
+      <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul">MoveScalarMulPastMatMul (class in finn.transformation.streamline.reorder)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold">MultiThreshold (class in finn.custom_op.multithreshold)</a>
+      <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold">MultiThreshold (class in finn.custom_op.multithreshold)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.multithreshold">multithreshold() (in module finn.custom_op.multithreshold)</a>
+      <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.multithreshold">multithreshold() (in module finn.custom_op.multithreshold)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -903,19 +903,19 @@
 <h2 id="N">N</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.analysis.html#finn.analysis.topology.node_inputs_in_expected_order">node_inputs_in_expected_order() (in module finn.analysis.topology)</a>
+      <li><a href="source_code/finn.analysis.topology.html#finn.analysis.topology.node_inputs_in_expected_order">node_inputs_in_expected_order() (in module finn.analysis.topology)</a>
 </li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.node_res_estimation">node_res_estimation() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.data_packing.npbytearray2hexstring">npbytearray2hexstring() (in module finn.util.data_packing)</a>
+      <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.npbytearray2hexstring">npbytearray2hexstring() (in module finn.util.data_packing)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.npy_to_dynamic_output">npy_to_dynamic_output() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.data_packing.npy_to_rtlsim_input">npy_to_rtlsim_input() (in module finn.util.data_packing)</a>
+      <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.npy_to_rtlsim_input">npy_to_rtlsim_input() (in module finn.util.data_packing)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.data_packing.numpy_to_hls_code">numpy_to_hls_code() (in module finn.util.data_packing)</a>
+      <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.numpy_to_hls_code">numpy_to_hls_code() (in module finn.util.data_packing)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -923,27 +923,27 @@
 <h2 id="P">P</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.util.html#finn.util.data_packing.pack_innermost_dim_as_hex_string">pack_innermost_dim_as_hex_string() (in module finn.util.data_packing)</a>
+      <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.pack_innermost_dim_as_hex_string">pack_innermost_dim_as_hex_string() (in module finn.util.data_packing)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.data_packing.packed_bytearray_to_finnpy">packed_bytearray_to_finnpy() (in module finn.util.data_packing)</a>
+      <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.packed_bytearray_to_finnpy">packed_bytearray_to_finnpy() (in module finn.util.data_packing)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.pad_tensor_to_multiple_of">pad_tensor_to_multiple_of() (in module finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.pad_tensor_to_multiple_of">pad_tensor_to_multiple_of() (in module finn.util.basic)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas">pragmas() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas">pragmas() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.pragmas">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.util.html#finn.util.fpgadataflow.pyverilate_stitched_ip">pyverilate_stitched_ip() (in module finn.util.fpgadataflow)</a>
+      <li><a href="source_code/finn.util.fpgadataflow.html#finn.util.fpgadataflow.pyverilate_stitched_ip">pyverilate_stitched_ip() (in module finn.util.fpgadataflow)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -951,41 +951,41 @@
 <h2 id="R">R</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.util.html#finn.util.basic.random_string">random_string() (in module finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.random_string">random_string() (in module finn.util.basic)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data">read_npy_data() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data">read_npy_data() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.read_npy_data">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.core.html#finn.core.remote_exec.remote_exec">remote_exec() (in module finn.core.remote_exec)</a>
+      <li><a href="source_code/finn.core.remote_exec.html#finn.core.remote_exec.remote_exec">remote_exec() (in module finn.core.remote_exec)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.remove_by_name">remove_by_name() (in module finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.remove_by_name">remove_by_name() (in module finn.util.basic)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.rename_tensor">rename_tensor() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.rename_tensor">rename_tensor() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.analysis.fpgadataflow.html#finn.analysis.fpgadataflow.res_estimation.res_estimation">res_estimation() (in module finn.analysis.fpgadataflow.res_estimation)</a>
+      <li><a href="source_code/finn.analysis.fpgadataflow.res_estimation.html#finn.analysis.fpgadataflow.res_estimation.res_estimation">res_estimation() (in module finn.analysis.fpgadataflow.res_estimation)</a>
 </li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.reset_rtlsim">reset_rtlsim() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-      <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds">RoundAndClipThresholds (class in finn.transformation.streamline.round_thresholds)</a>
+      <li><a href="source_code/finn.transformation.streamline.round_thresholds.html#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds">RoundAndClipThresholds (class in finn.transformation.streamline.round_thresholds)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.roundup_to_integer_multiple">roundup_to_integer_multiple() (in module finn.util.basic)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.roundup_to_integer_multiple">roundup_to_integer_multiple() (in module finn.util.basic)</a>
 </li>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.rtlsim">rtlsim() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.rtlsim_exec.rtlsim_exec">rtlsim_exec() (in module finn.core.rtlsim_exec)</a>
+      <li><a href="source_code/finn.core.rtlsim_exec.html#finn.core.rtlsim_exec.rtlsim_exec">rtlsim_exec() (in module finn.core.rtlsim_exec)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.data_packing.rtlsim_output_to_npy">rtlsim_output_to_npy() (in module finn.util.data_packing)</a>
+      <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.rtlsim_output_to_npy">rtlsim_output_to_npy() (in module finn.util.data_packing)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -993,61 +993,61 @@
 <h2 id="S">S</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.save">save() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.save">save() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy">save_as_npy() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy">save_as_npy() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.save_as_npy">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.util.html#finn.util.basic.CppBuilder.set_executable_path">set_executable_path() (finn.util.basic.CppBuilder method)</a>
+      <li><a href="source_code/finn.util.basic.html#finn.util.basic.CppBuilder.set_executable_path">set_executable_path() (finn.util.basic.CppBuilder method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.set_initializer">set_initializer() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.set_initializer">set_initializer() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path">set_ipgen_path() (finn.util.fpgadataflow.IPGenBuilder method)</a>
+      <li><a href="source_code/finn.util.fpgadataflow.html#finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path">set_ipgen_path() (finn.util.fpgadataflow.IPGenBuilder method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.set_metadata_prop">set_metadata_prop() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.set_metadata_prop">set_metadata_prop() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
       <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.set_nodeattr">set_nodeattr() (finn.custom_op.CustomOp method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.set_tensor_datatype">set_tensor_datatype() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.set_tensor_datatype">set_tensor_datatype() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.set_tensor_shape">set_tensor_shape() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.set_tensor_shape">set_tensor_shape() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode">SetExecMode (class in finn.transformation.fpgadataflow.set_exec_mode)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.set_exec_mode.html#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode">SetExecMode (class in finn.transformation.fpgadataflow.set_exec_mode)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.signed">signed() (finn.core.datatype.DataType method)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.signed">signed() (finn.core.datatype.DataType method)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition">StreamingDataflowPartition (class in finn.custom_op.streamingdataflowpartition)</a>
+      <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition">StreamingDataflowPartition (class in finn.custom_op.streamingdataflowpartition)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch">StreamingFCLayer_Batch (class in finn.custom_op.fpgadataflow.streamingfclayer_batch)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch">StreamingFCLayer_Batch (class in finn.custom_op.fpgadataflow.streamingfclayer_batch)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch">StreamingMaxPool_Batch (class in finn.custom_op.fpgadataflow.streamingmaxpool_batch)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch">StreamingMaxPool_Batch (class in finn.custom_op.fpgadataflow.streamingmaxpool_batch)</a>
 </li>
       <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.Streamline">Streamline (class in finn.transformation.streamline)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl">strm_decl() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl">strm_decl() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 
       <ul>
         <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.strm_decl">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
       </ul></li>
-      <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject">SynthPYNQProject (class in finn.transformation.fpgadataflow.synth_pynq_proj)</a>
+      <li><a href="source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject">SynthPYNQProject (class in finn.transformation.fpgadataflow.synth_pynq_proj)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -1055,15 +1055,15 @@
 <h2 id="T">T</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.TERNARY">TERNARY (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.TERNARY">TERNARY (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker">TLastMarker (class in finn.custom_op.fpgadataflow.tlastmarker)</a>
+      <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker">TLastMarker (class in finn.custom_op.fpgadataflow.tlastmarker)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.toggle_clk">toggle_clk() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.transform">transform() (finn.core.modelwrapper.ModelWrapper method)</a>
+      <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.transform">transform() (finn.core.modelwrapper.ModelWrapper method)</a>
 </li>
       <li><a href="source_code/finn.transformation.html#finn.transformation.Transformation">Transformation (class in finn.transformation)</a>
 </li>
@@ -1073,21 +1073,21 @@
 <h2 id="U">U</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT16">UINT16 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT16">UINT16 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT2">UINT2 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT2">UINT2 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT3">UINT3 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT3">UINT3 (finn.core.datatype.DataType attribute)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT32">UINT32 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT32">UINT32 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT4">UINT4 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT4">UINT4 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT8">UINT8 (finn.core.datatype.DataType attribute)</a>
+      <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT8">UINT8 (finn.core.datatype.DataType attribute)</a>
 </li>
-      <li><a href="source_code/finn.util.html#finn.util.data_packing.unpack_innermost_dim_from_hex_string">unpack_innermost_dim_from_hex_string() (in module finn.util.data_packing)</a>
+      <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.unpack_innermost_dim_from_hex_string">unpack_innermost_dim_from_hex_string() (in module finn.util.data_packing)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -1095,29 +1095,29 @@
 <h2 id="V">V</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.util.html#finn.util.onnx.valueinfo_to_tensor">valueinfo_to_tensor() (in module finn.util.onnx)</a>
+      <li><a href="source_code/finn.util.onnx.html#finn.util.onnx.valueinfo_to_tensor">valueinfo_to_tensor() (in module finn.util.onnx)</a>
 </li>
       <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.verify_node">verify_node() (finn.custom_op.CustomOp method)</a>
 
       <ul>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+        <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold.verify_node">(finn.custom_op.multithreshold.MultiThreshold method)</a>
+        <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold.verify_node">(finn.custom_op.multithreshold.MultiThreshold method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
+        <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
 </li>
-        <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
+        <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
 </li>
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.analysis.html#finn.analysis.verify_custom_nodes.verify_nodes">verify_nodes() (in module finn.analysis.verify_custom_nodes)</a>
+      <li><a href="source_code/finn.analysis.verify_custom_nodes.html#finn.analysis.verify_custom_nodes.verify_nodes">verify_nodes() (in module finn.analysis.verify_custom_nodes)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -1125,11 +1125,11 @@
 <h2 id="X">X</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul">XnorPopcountMatMul (class in finn.custom_op.xnorpopcount)</a>
+      <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul">XnorPopcountMatMul (class in finn.custom_op.xnorpopcount)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.xnorpopcountmatmul">xnorpopcountmatmul() (in module finn.custom_op.xnorpopcount)</a>
+      <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.xnorpopcountmatmul">xnorpopcountmatmul() (in module finn.custom_op.xnorpopcount)</a>
 </li>
   </ul></td>
 </tr></table>
diff --git a/docs/finn/_build/html/objects.inv b/docs/finn/_build/html/objects.inv
index 2a4e77eea14176ccb516ab4444a424fe97632698..a971c58564a2f9c835ae2bab0f78f9db501f3457 100644
GIT binary patch
delta 4603
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

delta 3539
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
N<?s>d>i^eW@Vv8c7+U}U

diff --git a/docs/finn/_build/html/py-modindex.html b/docs/finn/_build/html/py-modindex.html
index 1a992f29a..423baaf74 100644
--- a/docs/finn/_build/html/py-modindex.html
+++ b/docs/finn/_build/html/py-modindex.html
@@ -175,22 +175,22 @@
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation"><code class="xref">finn.analysis.fpgadataflow.hls_synth_res_estimation</code></a></td><td>
+       <a href="source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation"><code class="xref">finn.analysis.fpgadataflow.hls_synth_res_estimation</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.res_estimation"><code class="xref">finn.analysis.fpgadataflow.res_estimation</code></a></td><td>
+       <a href="source_code/finn.analysis.fpgadataflow.res_estimation.html#module-finn.analysis.fpgadataflow.res_estimation"><code class="xref">finn.analysis.fpgadataflow.res_estimation</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.analysis.html#module-finn.analysis.topology"><code class="xref">finn.analysis.topology</code></a></td><td>
+       <a href="source_code/finn.analysis.topology.html#module-finn.analysis.topology"><code class="xref">finn.analysis.topology</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.analysis.html#module-finn.analysis.verify_custom_nodes"><code class="xref">finn.analysis.verify_custom_nodes</code></a></td><td>
+       <a href="source_code/finn.analysis.verify_custom_nodes.html#module-finn.analysis.verify_custom_nodes"><code class="xref">finn.analysis.verify_custom_nodes</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
@@ -200,32 +200,32 @@
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.core.html#module-finn.core.datatype"><code class="xref">finn.core.datatype</code></a></td><td>
+       <a href="source_code/finn.core.datatype.html#module-finn.core.datatype"><code class="xref">finn.core.datatype</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.core.html#module-finn.core.execute_custom_node"><code class="xref">finn.core.execute_custom_node</code></a></td><td>
+       <a href="source_code/finn.core.execute_custom_node.html#module-finn.core.execute_custom_node"><code class="xref">finn.core.execute_custom_node</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.core.html#module-finn.core.modelwrapper"><code class="xref">finn.core.modelwrapper</code></a></td><td>
+       <a href="source_code/finn.core.modelwrapper.html#module-finn.core.modelwrapper"><code class="xref">finn.core.modelwrapper</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.core.html#module-finn.core.onnx_exec"><code class="xref">finn.core.onnx_exec</code></a></td><td>
+       <a href="source_code/finn.core.onnx_exec.html#module-finn.core.onnx_exec"><code class="xref">finn.core.onnx_exec</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.core.html#module-finn.core.remote_exec"><code class="xref">finn.core.remote_exec</code></a></td><td>
+       <a href="source_code/finn.core.remote_exec.html#module-finn.core.remote_exec"><code class="xref">finn.core.remote_exec</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.core.html#module-finn.core.rtlsim_exec"><code class="xref">finn.core.rtlsim_exec</code></a></td><td>
+       <a href="source_code/finn.core.rtlsim_exec.html#module-finn.core.rtlsim_exec"><code class="xref">finn.core.rtlsim_exec</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
@@ -240,47 +240,47 @@
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator"><code class="xref">finn.custom_op.fpgadataflow.convolutioninputgenerator</code></a></td><td>
+       <a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator"><code class="xref">finn.custom_op.fpgadataflow.convolutioninputgenerator</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch"><code class="xref">finn.custom_op.fpgadataflow.streamingfclayer_batch</code></a></td><td>
+       <a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch"><code class="xref">finn.custom_op.fpgadataflow.streamingfclayer_batch</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch"><code class="xref">finn.custom_op.fpgadataflow.streamingmaxpool_batch</code></a></td><td>
+       <a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch"><code class="xref">finn.custom_op.fpgadataflow.streamingmaxpool_batch</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.templates"><code class="xref">finn.custom_op.fpgadataflow.templates</code></a></td><td>
+       <a href="source_code/finn.custom_op.fpgadataflow.templates.html#module-finn.custom_op.fpgadataflow.templates"><code class="xref">finn.custom_op.fpgadataflow.templates</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.tlastmarker"><code class="xref">finn.custom_op.fpgadataflow.tlastmarker</code></a></td><td>
+       <a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#module-finn.custom_op.fpgadataflow.tlastmarker"><code class="xref">finn.custom_op.fpgadataflow.tlastmarker</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.custom_op.html#module-finn.custom_op.multithreshold"><code class="xref">finn.custom_op.multithreshold</code></a></td><td>
+       <a href="source_code/finn.custom_op.multithreshold.html#module-finn.custom_op.multithreshold"><code class="xref">finn.custom_op.multithreshold</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.custom_op.html#module-finn.custom_op.registry"><code class="xref">finn.custom_op.registry</code></a></td><td>
+       <a href="source_code/finn.custom_op.registry.html#module-finn.custom_op.registry"><code class="xref">finn.custom_op.registry</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.custom_op.html#module-finn.custom_op.streamingdataflowpartition"><code class="xref">finn.custom_op.streamingdataflowpartition</code></a></td><td>
+       <a href="source_code/finn.custom_op.streamingdataflowpartition.html#module-finn.custom_op.streamingdataflowpartition"><code class="xref">finn.custom_op.streamingdataflowpartition</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.custom_op.html#module-finn.custom_op.xnorpopcount"><code class="xref">finn.custom_op.xnorpopcount</code></a></td><td>
+       <a href="source_code/finn.custom_op.xnorpopcount.html#module-finn.custom_op.xnorpopcount"><code class="xref">finn.custom_op.xnorpopcount</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
@@ -290,17 +290,17 @@
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.html#module-finn.transformation.batchnorm_to_affine"><code class="xref">finn.transformation.batchnorm_to_affine</code></a></td><td>
+       <a href="source_code/finn.transformation.batchnorm_to_affine.html#module-finn.transformation.batchnorm_to_affine"><code class="xref">finn.transformation.batchnorm_to_affine</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.html#module-finn.transformation.bipolar_to_xnor"><code class="xref">finn.transformation.bipolar_to_xnor</code></a></td><td>
+       <a href="source_code/finn.transformation.bipolar_to_xnor.html#module-finn.transformation.bipolar_to_xnor"><code class="xref">finn.transformation.bipolar_to_xnor</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.html#module-finn.transformation.fold_constants"><code class="xref">finn.transformation.fold_constants</code></a></td><td>
+       <a href="source_code/finn.transformation.fold_constants.html#module-finn.transformation.fold_constants"><code class="xref">finn.transformation.fold_constants</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
@@ -310,92 +310,92 @@
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.cleanup"><code class="xref">finn.transformation.fpgadataflow.cleanup</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.cleanup.html#module-finn.transformation.fpgadataflow.cleanup"><code class="xref">finn.transformation.fpgadataflow.cleanup</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipgen"><code class="xref">finn.transformation.fpgadataflow.codegen_ipgen</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.codegen_ipgen.html#module-finn.transformation.fpgadataflow.codegen_ipgen"><code class="xref">finn.transformation.fpgadataflow.codegen_ipgen</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipstitch"><code class="xref">finn.transformation.fpgadataflow.codegen_ipstitch</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html#module-finn.transformation.fpgadataflow.codegen_ipstitch"><code class="xref">finn.transformation.fpgadataflow.codegen_ipstitch</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_npysim"><code class="xref">finn.transformation.fpgadataflow.codegen_npysim</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.codegen_npysim.html#module-finn.transformation.fpgadataflow.codegen_npysim"><code class="xref">finn.transformation.fpgadataflow.codegen_npysim</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.compile"><code class="xref">finn.transformation.fpgadataflow.compile</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.compile.html#module-finn.transformation.fpgadataflow.compile"><code class="xref">finn.transformation.fpgadataflow.compile</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers"><code class="xref">finn.transformation.fpgadataflow.convert_to_hls_layers</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers"><code class="xref">finn.transformation.fpgadataflow.convert_to_hls_layers</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.create_dataflow_partition"><code class="xref">finn.transformation.fpgadataflow.create_dataflow_partition</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html#module-finn.transformation.fpgadataflow.create_dataflow_partition"><code class="xref">finn.transformation.fpgadataflow.create_dataflow_partition</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen"><code class="xref">finn.transformation.fpgadataflow.hlssynth_ipgen</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen"><code class="xref">finn.transformation.fpgadataflow.hlssynth_ipgen</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.insert_tlastmarker"><code class="xref">finn.transformation.fpgadataflow.insert_tlastmarker</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html#module-finn.transformation.fpgadataflow.insert_tlastmarker"><code class="xref">finn.transformation.fpgadataflow.insert_tlastmarker</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_deployment"><code class="xref">finn.transformation.fpgadataflow.make_deployment</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.make_deployment.html#module-finn.transformation.fpgadataflow.make_deployment"><code class="xref">finn.transformation.fpgadataflow.make_deployment</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_driver"><code class="xref">finn.transformation.fpgadataflow.make_pynq_driver</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.make_pynq_driver.html#module-finn.transformation.fpgadataflow.make_pynq_driver"><code class="xref">finn.transformation.fpgadataflow.make_pynq_driver</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_proj"><code class="xref">finn.transformation.fpgadataflow.make_pynq_proj</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.make_pynq_proj.html#module-finn.transformation.fpgadataflow.make_pynq_proj"><code class="xref">finn.transformation.fpgadataflow.make_pynq_proj</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.set_exec_mode"><code class="xref">finn.transformation.fpgadataflow.set_exec_mode</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.set_exec_mode.html#module-finn.transformation.fpgadataflow.set_exec_mode"><code class="xref">finn.transformation.fpgadataflow.set_exec_mode</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.synth_pynq_proj"><code class="xref">finn.transformation.fpgadataflow.synth_pynq_proj</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html#module-finn.transformation.fpgadataflow.synth_pynq_proj"><code class="xref">finn.transformation.fpgadataflow.synth_pynq_proj</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.templates"><code class="xref">finn.transformation.fpgadataflow.templates</code></a></td><td>
+       <a href="source_code/finn.transformation.fpgadataflow.templates.html#module-finn.transformation.fpgadataflow.templates"><code class="xref">finn.transformation.fpgadataflow.templates</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.html#module-finn.transformation.general"><code class="xref">finn.transformation.general</code></a></td><td>
+       <a href="source_code/finn.transformation.general.html#module-finn.transformation.general"><code class="xref">finn.transformation.general</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.html#module-finn.transformation.infer_datatypes"><code class="xref">finn.transformation.infer_datatypes</code></a></td><td>
+       <a href="source_code/finn.transformation.infer_datatypes.html#module-finn.transformation.infer_datatypes"><code class="xref">finn.transformation.infer_datatypes</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.html#module-finn.transformation.infer_shapes"><code class="xref">finn.transformation.infer_shapes</code></a></td><td>
+       <a href="source_code/finn.transformation.infer_shapes.html#module-finn.transformation.infer_shapes"><code class="xref">finn.transformation.infer_shapes</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
@@ -405,27 +405,27 @@
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.absorb"><code class="xref">finn.transformation.streamline.absorb</code></a></td><td>
+       <a href="source_code/finn.transformation.streamline.absorb.html#module-finn.transformation.streamline.absorb"><code class="xref">finn.transformation.streamline.absorb</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.collapse_repeated"><code class="xref">finn.transformation.streamline.collapse_repeated</code></a></td><td>
+       <a href="source_code/finn.transformation.streamline.collapse_repeated.html#module-finn.transformation.streamline.collapse_repeated"><code class="xref">finn.transformation.streamline.collapse_repeated</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.reorder"><code class="xref">finn.transformation.streamline.reorder</code></a></td><td>
+       <a href="source_code/finn.transformation.streamline.reorder.html#module-finn.transformation.streamline.reorder"><code class="xref">finn.transformation.streamline.reorder</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.round_thresholds"><code class="xref">finn.transformation.streamline.round_thresholds</code></a></td><td>
+       <a href="source_code/finn.transformation.streamline.round_thresholds.html#module-finn.transformation.streamline.round_thresholds"><code class="xref">finn.transformation.streamline.round_thresholds</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.sign_to_thres"><code class="xref">finn.transformation.streamline.sign_to_thres</code></a></td><td>
+       <a href="source_code/finn.transformation.streamline.sign_to_thres.html#module-finn.transformation.streamline.sign_to_thres"><code class="xref">finn.transformation.streamline.sign_to_thres</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
@@ -435,27 +435,27 @@
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.util.html#module-finn.util.basic"><code class="xref">finn.util.basic</code></a></td><td>
+       <a href="source_code/finn.util.basic.html#module-finn.util.basic"><code class="xref">finn.util.basic</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.util.html#module-finn.util.data_packing"><code class="xref">finn.util.data_packing</code></a></td><td>
+       <a href="source_code/finn.util.data_packing.html#module-finn.util.data_packing"><code class="xref">finn.util.data_packing</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.util.html#module-finn.util.fpgadataflow"><code class="xref">finn.util.fpgadataflow</code></a></td><td>
+       <a href="source_code/finn.util.fpgadataflow.html#module-finn.util.fpgadataflow"><code class="xref">finn.util.fpgadataflow</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.util.html#module-finn.util.onnx"><code class="xref">finn.util.onnx</code></a></td><td>
+       <a href="source_code/finn.util.onnx.html#module-finn.util.onnx"><code class="xref">finn.util.onnx</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="source_code/finn.util.html#module-finn.util.test"><code class="xref">finn.util.test</code></a></td><td>
+       <a href="source_code/finn.util.test.html#module-finn.util.test"><code class="xref">finn.util.test</code></a></td><td>
        <em></em></td></tr>
    </table>
 
diff --git a/docs/finn/_build/html/searchindex.js b/docs/finn/_build/html/searchindex.js
index 69ac8240f..9125c56f0 100644
--- a/docs/finn/_build/html/searchindex.js
+++ b/docs/finn/_build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["end_to_end_flow","getting_started","index","modules","source_code","source_code/finn","source_code/finn.analysis","source_code/finn.analysis.fpgadataflow","source_code/finn.core","source_code/finn.custom_op","source_code/finn.custom_op.fpgadataflow","source_code/finn.transformation","source_code/finn.transformation.fpgadataflow","source_code/finn.transformation.streamline","source_code/finn.util","source_code/modules"],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","getting_started.rst","index.rst","modules.rst","source_code.rst","source_code/finn.rst","source_code/finn.analysis.rst","source_code/finn.analysis.fpgadataflow.rst","source_code/finn.core.rst","source_code/finn.custom_op.rst","source_code/finn.custom_op.fpgadataflow.rst","source_code/finn.transformation.rst","source_code/finn.transformation.fpgadataflow.rst","source_code/finn.transformation.streamline.rst","source_code/finn.util.rst","source_code/modules.rst"],objects:{"":{finn:[5,0,0,"-"]},"finn.analysis":{fpgadataflow:[7,0,0,"-"],topology:[6,0,0,"-"],verify_custom_nodes:[6,0,0,"-"]},"finn.analysis.fpgadataflow":{hls_synth_res_estimation:[7,0,0,"-"],res_estimation:[7,0,0,"-"]},"finn.analysis.fpgadataflow.hls_synth_res_estimation":{hls_synth_res_estimation:[7,1,1,""]},"finn.analysis.fpgadataflow.res_estimation":{res_estimation:[7,1,1,""]},"finn.analysis.topology":{all_tensors_f32:[6,1,1,""],get_per_tensor_fanouts:[6,1,1,""],is_linear:[6,1,1,""],node_inputs_in_expected_order:[6,1,1,""]},"finn.analysis.verify_custom_nodes":{verify_nodes:[6,1,1,""]},"finn.core":{datatype:[8,0,0,"-"],execute_custom_node:[8,0,0,"-"],modelwrapper:[8,0,0,"-"],onnx_exec:[8,0,0,"-"],remote_exec:[8,0,0,"-"],rtlsim_exec:[8,0,0,"-"]},"finn.core.datatype":{DataType:[8,2,1,""]},"finn.core.datatype.DataType":{BINARY:[8,3,1,""],BIPOLAR:[8,3,1,""],FLOAT32:[8,3,1,""],INT16:[8,3,1,""],INT2:[8,3,1,""],INT32:[8,3,1,""],INT3:[8,3,1,""],INT4:[8,3,1,""],INT8:[8,3,1,""],TERNARY:[8,3,1,""],UINT16:[8,3,1,""],UINT2:[8,3,1,""],UINT32:[8,3,1,""],UINT3:[8,3,1,""],UINT4:[8,3,1,""],UINT8:[8,3,1,""],allowed:[8,4,1,""],bitwidth:[8,4,1,""],get_hls_datatype_str:[8,4,1,""],get_num_possible_values:[8,4,1,""],get_smallest_possible:[8,4,1,""],is_integer:[8,4,1,""],max:[8,4,1,""],min:[8,4,1,""],signed:[8,4,1,""]},"finn.core.execute_custom_node":{execute_custom_node:[8,1,1,""]},"finn.core.modelwrapper":{ModelWrapper:[8,2,1,""]},"finn.core.modelwrapper.ModelWrapper":{analysis:[8,4,1,""],check_all_tensor_shapes_specified:[8,4,1,""],check_compatibility:[8,4,1,""],find_consumer:[8,4,1,""],find_producer:[8,4,1,""],get_all_tensor_names:[8,4,1,""],get_initializer:[8,4,1,""],get_metadata_prop:[8,4,1,""],get_tensor_datatype:[8,4,1,""],get_tensor_fanout:[8,4,1,""],get_tensor_shape:[8,4,1,""],get_tensor_valueinfo:[8,4,1,""],graph:[8,4,1,""],make_empty_exec_context:[8,4,1,""],make_new_valueinfo_name:[8,4,1,""],model:[8,4,1,""],rename_tensor:[8,4,1,""],save:[8,4,1,""],set_initializer:[8,4,1,""],set_metadata_prop:[8,4,1,""],set_tensor_datatype:[8,4,1,""],set_tensor_shape:[8,4,1,""],transform:[8,4,1,""]},"finn.core.onnx_exec":{compare_execution:[8,1,1,""],execute_node:[8,1,1,""],execute_onnx:[8,1,1,""],execute_onnx_and_make_model:[8,1,1,""]},"finn.core.remote_exec":{remote_exec:[8,1,1,""]},"finn.core.rtlsim_exec":{rtlsim_exec:[8,1,1,""]},"finn.custom_op":{CustomOp:[9,2,1,""],fpgadataflow:[10,0,0,"-"],multithreshold:[9,0,0,"-"],registry:[9,0,0,"-"],streamingdataflowpartition:[9,0,0,"-"],xnorpopcount:[9,0,0,"-"]},"finn.custom_op.CustomOp":{execute_node:[9,4,1,""],get_nodeattr:[9,4,1,""],get_nodeattr_types:[9,4,1,""],infer_node_datatype:[9,4,1,""],make_shape_compatible_op:[9,4,1,""],set_nodeattr:[9,4,1,""],verify_node:[9,4,1,""]},"finn.custom_op.fpgadataflow":{HLSCustomOp:[10,2,1,""],convolutioninputgenerator:[10,0,0,"-"],streamingfclayer_batch:[10,0,0,"-"],streamingmaxpool_batch:[10,0,0,"-"],templates:[10,0,0,"-"],tlastmarker:[10,0,0,"-"]},"finn.custom_op.fpgadataflow.HLSCustomOp":{blackboxfunction:[10,4,1,""],bram_estimation:[10,4,1,""],code_generation_ipgen:[10,4,1,""],code_generation_npysim:[10,4,1,""],compile_singlenode_code:[10,4,1,""],dataoutstrm:[10,4,1,""],defines:[10,4,1,""],docompute:[10,4,1,""],dynamic_input_to_npy:[10,4,1,""],exec_precompiled_singlenode_model:[10,4,1,""],execute_node:[10,4,1,""],generate_params:[10,4,1,""],get_folded_input_shape:[10,4,1,""],get_folded_output_shape:[10,4,1,""],get_instream_width:[10,4,1,""],get_nodeattr_types:[10,4,1,""],get_number_output_values:[10,4,1,""],get_outstream_width:[10,4,1,""],global_includes:[10,4,1,""],ipgen_singlenode_code:[10,4,1,""],lut_estimation:[10,4,1,""],node_res_estimation:[10,4,1,""],npy_to_dynamic_output:[10,4,1,""],pragmas:[10,4,1,""],read_npy_data:[10,4,1,""],reset_rtlsim:[10,4,1,""],rtlsim:[10,4,1,""],save_as_npy:[10,4,1,""],strm_decl:[10,4,1,""],toggle_clk:[10,4,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator":{ConvolutionInputGenerator:[10,2,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator":{blackboxfunction:[10,4,1,""],bram_estimation:[10,4,1,""],dataoutstrm:[10,4,1,""],defines:[10,4,1,""],docompute:[10,4,1,""],execute_node:[10,4,1,""],get_input_datatype:[10,4,1,""],get_nodeattr_types:[10,4,1,""],get_number_output_values:[10,4,1,""],get_output_datatype:[10,4,1,""],get_stream_width:[10,4,1,""],global_includes:[10,4,1,""],infer_node_datatype:[10,4,1,""],lut_estimation:[10,4,1,""],make_shape_compatible_op:[10,4,1,""],pragmas:[10,4,1,""],read_npy_data:[10,4,1,""],save_as_npy:[10,4,1,""],strm_decl:[10,4,1,""],verify_node:[10,4,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch":{StreamingFCLayer_Batch:[10,2,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch":{blackboxfunction:[10,4,1,""],bram_estimation:[10,4,1,""],calc_tmem:[10,4,1,""],calc_wmem:[10,4,1,""],dataoutstrm:[10,4,1,""],defines:[10,4,1,""],docompute:[10,4,1,""],execute_node:[10,4,1,""],generate_params:[10,4,1,""],get_folded_input_shape:[10,4,1,""],get_folded_output_shape:[10,4,1,""],get_hls_compatible_threshold_tensor:[10,4,1,""],get_hls_compatible_weight_tensor:[10,4,1,""],get_input_datatype:[10,4,1,""],get_instream_width:[10,4,1,""],get_nodeattr_types:[10,4,1,""],get_number_output_values:[10,4,1,""],get_output_datatype:[10,4,1,""],get_outstream_width:[10,4,1,""],get_template_param_values:[10,4,1,""],get_weight_datatype:[10,4,1,""],global_includes:[10,4,1,""],infer_node_datatype:[10,4,1,""],lut_estimation:[10,4,1,""],make_shape_compatible_op:[10,4,1,""],pragmas:[10,4,1,""],read_npy_data:[10,4,1,""],save_as_npy:[10,4,1,""],strm_decl:[10,4,1,""],verify_node:[10,4,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch":{StreamingMaxPool_Batch:[10,2,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch":{blackboxfunction:[10,4,1,""],bram_estimation:[10,4,1,""],dataoutstrm:[10,4,1,""],defines:[10,4,1,""],docompute:[10,4,1,""],get_nodeattr_types:[10,4,1,""],get_number_output_values:[10,4,1,""],global_includes:[10,4,1,""],infer_node_datatype:[10,4,1,""],lut_estimation:[10,4,1,""],make_shape_compatible_op:[10,4,1,""],pragmas:[10,4,1,""],read_npy_data:[10,4,1,""],save_as_npy:[10,4,1,""],strm_decl:[10,4,1,""],verify_node:[10,4,1,""]},"finn.custom_op.fpgadataflow.tlastmarker":{TLastMarker:[10,2,1,""]},"finn.custom_op.fpgadataflow.tlastmarker.TLastMarker":{blackboxfunction:[10,4,1,""],dataoutstrm:[10,4,1,""],defines:[10,4,1,""],docompute:[10,4,1,""],execute_node:[10,4,1,""],get_folded_input_shape:[10,4,1,""],get_folded_output_shape:[10,4,1,""],get_instream_width:[10,4,1,""],get_nodeattr_types:[10,4,1,""],get_number_output_values:[10,4,1,""],get_outstream_width:[10,4,1,""],global_includes:[10,4,1,""],infer_node_datatype:[10,4,1,""],make_shape_compatible_op:[10,4,1,""],pragmas:[10,4,1,""],read_npy_data:[10,4,1,""],save_as_npy:[10,4,1,""],strm_decl:[10,4,1,""],verify_node:[10,4,1,""]},"finn.custom_op.multithreshold":{MultiThreshold:[9,2,1,""],compare:[9,1,1,""],multithreshold:[9,1,1,""]},"finn.custom_op.multithreshold.MultiThreshold":{execute_node:[9,4,1,""],get_nodeattr_types:[9,4,1,""],infer_node_datatype:[9,4,1,""],make_shape_compatible_op:[9,4,1,""],verify_node:[9,4,1,""]},"finn.custom_op.registry":{getCustomOp:[9,1,1,""]},"finn.custom_op.streamingdataflowpartition":{StreamingDataflowPartition:[9,2,1,""]},"finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition":{execute_node:[9,4,1,""],get_nodeattr_types:[9,4,1,""],infer_node_datatype:[9,4,1,""],make_shape_compatible_op:[9,4,1,""],verify_node:[9,4,1,""]},"finn.custom_op.xnorpopcount":{XnorPopcountMatMul:[9,2,1,""],xnorpopcountmatmul:[9,1,1,""]},"finn.custom_op.xnorpopcount.XnorPopcountMatMul":{execute_node:[9,4,1,""],get_nodeattr_types:[9,4,1,""],infer_node_datatype:[9,4,1,""],make_shape_compatible_op:[9,4,1,""],verify_node:[9,4,1,""]},"finn.transformation":{Transformation:[11,2,1,""],batchnorm_to_affine:[11,0,0,"-"],bipolar_to_xnor:[11,0,0,"-"],fold_constants:[11,0,0,"-"],fpgadataflow:[12,0,0,"-"],general:[11,0,0,"-"],infer_datatypes:[11,0,0,"-"],infer_shapes:[11,0,0,"-"],streamline:[13,0,0,"-"]},"finn.transformation.Transformation":{apply:[11,4,1,""]},"finn.transformation.batchnorm_to_affine":{BatchNormToAffine:[11,2,1,""]},"finn.transformation.batchnorm_to_affine.BatchNormToAffine":{apply:[11,4,1,""]},"finn.transformation.bipolar_to_xnor":{ConvertBipolarMatMulToXnorPopcount:[11,2,1,""]},"finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount":{apply:[11,4,1,""]},"finn.transformation.fold_constants":{FoldConstants:[11,2,1,""]},"finn.transformation.fold_constants.FoldConstants":{apply:[11,4,1,""]},"finn.transformation.fpgadataflow":{cleanup:[12,0,0,"-"],codegen_ipgen:[12,0,0,"-"],codegen_ipstitch:[12,0,0,"-"],codegen_npysim:[12,0,0,"-"],compile:[12,0,0,"-"],convert_to_hls_layers:[12,0,0,"-"],create_dataflow_partition:[12,0,0,"-"],hlssynth_ipgen:[12,0,0,"-"],insert_tlastmarker:[12,0,0,"-"],make_deployment:[12,0,0,"-"],make_pynq_driver:[12,0,0,"-"],make_pynq_proj:[12,0,0,"-"],set_exec_mode:[12,0,0,"-"],synth_pynq_proj:[12,0,0,"-"],templates:[12,0,0,"-"]},"finn.transformation.fpgadataflow.cleanup":{CleanUp:[12,2,1,""]},"finn.transformation.fpgadataflow.cleanup.CleanUp":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen":{CodeGen_ipgen:[12,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch":{CodeGen_ipstitch:[12,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.codegen_npysim":{CodeGen_npysim:[12,2,1,""]},"finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.compile":{Compile:[12,2,1,""]},"finn.transformation.fpgadataflow.compile.Compile":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers":{InferBinaryStreamingFCLayer:[12,2,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition":{CreateDataflowPartition:[12,2,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen":{HLSSynth_IPGen:[12,2,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker":{InsertTLastMarker:[12,2,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.make_deployment":{DeployToPYNQ:[12,2,1,""]},"finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver":{MakePYNQDriver:[12,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj":{MakePYNQProject:[12,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.set_exec_mode":{SetExecMode:[12,2,1,""]},"finn.transformation.fpgadataflow.set_exec_mode.SetExecMode":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj":{SynthPYNQProject:[12,2,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject":{apply:[12,4,1,""]},"finn.transformation.general":{ConvertSubToAdd:[11,2,1,""],GiveRandomTensorNames:[11,2,1,""],GiveReadableTensorNames:[11,2,1,""],GiveUniqueNodeNames:[11,2,1,""]},"finn.transformation.general.ConvertSubToAdd":{apply:[11,4,1,""]},"finn.transformation.general.GiveRandomTensorNames":{apply:[11,4,1,""]},"finn.transformation.general.GiveReadableTensorNames":{apply:[11,4,1,""]},"finn.transformation.general.GiveUniqueNodeNames":{apply:[11,4,1,""]},"finn.transformation.infer_datatypes":{InferDataTypes:[11,2,1,""]},"finn.transformation.infer_datatypes.InferDataTypes":{apply:[11,4,1,""]},"finn.transformation.infer_shapes":{InferShapes:[11,2,1,""]},"finn.transformation.infer_shapes.InferShapes":{apply:[11,4,1,""]},"finn.transformation.streamline":{Streamline:[13,2,1,""],absorb:[13,0,0,"-"],collapse_repeated:[13,0,0,"-"],reorder:[13,0,0,"-"],round_thresholds:[13,0,0,"-"],sign_to_thres:[13,0,0,"-"]},"finn.transformation.streamline.Streamline":{apply:[13,4,1,""]},"finn.transformation.streamline.absorb":{Absorb1BitMulIntoMatMul:[13,2,1,""],AbsorbAddIntoMultiThreshold:[13,2,1,""],AbsorbMulIntoMultiThreshold:[13,2,1,""],FactorOutMulSignMagnitude:[13,2,1,""]},"finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul":{apply:[13,4,1,""]},"finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold":{apply:[13,4,1,""]},"finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold":{apply:[13,4,1,""]},"finn.transformation.streamline.absorb.FactorOutMulSignMagnitude":{apply:[13,4,1,""]},"finn.transformation.streamline.collapse_repeated":{CollapseRepeatedAdd:[13,2,1,""],CollapseRepeatedMul:[13,2,1,""],CollapseRepeatedOp:[13,2,1,""]},"finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp":{apply:[13,4,1,""]},"finn.transformation.streamline.reorder":{MoveAddPastMul:[13,2,1,""],MoveScalarAddPastMatMul:[13,2,1,""],MoveScalarMulPastMatMul:[13,2,1,""]},"finn.transformation.streamline.reorder.MoveAddPastMul":{apply:[13,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarAddPastMatMul":{apply:[13,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarMulPastMatMul":{apply:[13,4,1,""]},"finn.transformation.streamline.round_thresholds":{RoundAndClipThresholds:[13,2,1,""]},"finn.transformation.streamline.round_thresholds.RoundAndClipThresholds":{apply:[13,4,1,""]},"finn.transformation.streamline.sign_to_thres":{ConvertSignToThres:[13,2,1,""]},"finn.transformation.streamline.sign_to_thres.ConvertSignToThres":{apply:[13,4,1,""]},"finn.util":{basic:[14,0,0,"-"],data_packing:[14,0,0,"-"],fpgadataflow:[14,0,0,"-"],onnx:[14,0,0,"-"],test:[14,0,0,"-"]},"finn.util.basic":{CppBuilder:[14,2,1,""],calculate_signed_dot_prod_range:[14,1,1,""],gen_finn_dt_tensor:[14,1,1,""],get_by_name:[14,1,1,""],get_finn_root:[14,1,1,""],interleave_matrix_outer_dim_from_partitions:[14,1,1,""],make_build_dir:[14,1,1,""],pad_tensor_to_multiple_of:[14,1,1,""],random_string:[14,1,1,""],remove_by_name:[14,1,1,""],roundup_to_integer_multiple:[14,1,1,""]},"finn.util.basic.CppBuilder":{append_includes:[14,4,1,""],append_sources:[14,4,1,""],build:[14,4,1,""],set_executable_path:[14,4,1,""]},"finn.util.data_packing":{array2hexstring:[14,1,1,""],finnpy_to_packed_bytearray:[14,1,1,""],hexstring2npbytearray:[14,1,1,""],npbytearray2hexstring:[14,1,1,""],npy_to_rtlsim_input:[14,1,1,""],numpy_to_hls_code:[14,1,1,""],pack_innermost_dim_as_hex_string:[14,1,1,""],packed_bytearray_to_finnpy:[14,1,1,""],rtlsim_output_to_npy:[14,1,1,""],unpack_innermost_dim_from_hex_string:[14,1,1,""]},"finn.util.fpgadataflow":{IPGenBuilder:[14,2,1,""],pyverilate_stitched_ip:[14,1,1,""]},"finn.util.fpgadataflow.IPGenBuilder":{append_tcl:[14,4,1,""],build:[14,4,1,""],set_ipgen_path:[14,4,1,""]},"finn.util.onnx":{valueinfo_to_tensor:[14,1,1,""]},"finn.util.test":{get_test_model_def_fxn:[14,1,1,""],get_test_model_trained:[14,1,1,""],get_test_model_untrained:[14,1,1,""],get_trained_checkpoint:[14,1,1,""]},finn:{analysis:[6,0,0,"-"],core:[8,0,0,"-"],custom_op:[9,0,0,"-"],transformation:[11,0,0,"-"],util:[14,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":14,"0x07":14,"0x0e":14,"0x0f01":14,"0xb":14,"0xe":14,"600px":[],"abstract":[9,10,11],"boolean":8,"class":[8,9,10,11,12,13,14],"const":11,"default":[9,10,11],"enum":8,"final":8,"float":14,"function":[1,8,11,14],"import":1,"new":[1,2,8],"return":[6,7,8,9,10,11,13,14],"static":6,"true":[8,14],"try":1,"var":10,For:13,HLS:[2,8],IPs:12,PEs:10,The:[1,2,6,8,11,12,13,14],There:1,Use:[8,14],abc:[9,11],abit:14,about:[2,6,12],abov:1,absorb1bitmulintomatmul:13,absorb:[4,5,11,12],absorbaddintomultithreshold:13,absorbmulintomultithreshold:13,acceler:[1,12],account:8,action:12,activ:8,add:[11,13],adding:1,addit:1,addition:13,address:12,after:14,aim:13,align:[],all:[1,6,8,9,10,11,12,14],all_tensors_f32:6,allow:8,alreadi:12,also:[9,10,12],amount:14,analysi:[4,5,8,15],analysis_fxn:8,anaylsis_fxn:8,ani:[1,8,11,12,14],annot:[6,9,10],anoth:12,append_includ:14,append_sourc:14,append_tcl:14,appli:[8,11,12,13],apply_rep:11,appropri:[1,11],arbitrari:14,architectur:2,argument:1,around:8,arrai:14,array2hexstr:14,arxiv:13,assign:8,associ:[8,11],assum:14,attribut:[6,9,10,12],attribute_nam:[9,10],attributeproto:[9,10],back:1,backend:12,base:[8,9,10,11,12,13,14],basic:[4,5,15],batchnorm:11,batchnorm_to_affin:[4,5,15],batchnormtoaffin:11,been:12,befor:14,between:[10,14],binari:[8,10,12,13,14],bipolar:[8,10,11,13,14],bipolar_to_xnor:[4,5,15],bit:[8,14],bitfil:1,bitwidth:8,blackboxfunct:10,block:12,blott:10,board:12,bool:[6,11],both:14,bram_estim:10,brevita:2,brien:10,browser:1,build:14,built:6,calc_tmem:10,calc_wmem:10,calcul:10,calculate_signed_dot_prod_rang:14,call:[1,8,10,11,12],can:[1,2,8,11,12,13,14],cannot:11,center:[],centerpiec:2,certain:6,chang:[1,8,11],check:[6,8,9,10],check_all_tensor_shapes_specifi:8,check_compat:8,cleanup:[4,5,11],clk:[10,12],clone:[1,14],code:[12,14],code_gen_dir:14,code_generation_ipgen:10,code_generation_npysim:10,codegen_ipgen:[4,5,11],codegen_ipstitch:[4,5,11],codegen_npysim:[4,5,11],collaps:13,collapse_rep:[4,5,11],collapserepeatedadd:13,collapserepeatedmul:13,collapserepeatedop:13,collect:[1,12],colloqui:2,come:[1,6],command:1,commun:2,compar:[8,9],compare_execut:8,compare_fxn:8,compat:[8,9,10],compil:[2,4,5,11],compile_singlenode_cod:10,complet:1,compon:2,comput:[1,8],consecut:13,constant:[6,8,13],construct:2,consum:8,contain:[1,2,8,9,12,14],content:[4,15],context:[8,9,10],contribut:2,convent:6,convert:[1,10,11,12,13,14],convert_to_hls_lay:[4,5,11],convertbipolarmatmultoxnorpopcount:11,convertsigntothr:13,convertsubtoadd:11,convolutioninputgener:[4,5,9],copi:[8,11,12],core:[4,5,15],corner:2,correct:11,correctli:[1,6,9,10,12],correspond:[2,8,9,10],count:10,cpp_file:14,cppbuilder:14,creat:[1,8,12,14],create_dataflow_partit:[4,5,11],createdataflowpartit:12,current:[2,8],custom:[1,2,6,8],custom_op:[4,5,15],customop:[9,10],data:[9,12,14],data_pack:[4,5,15],dataflow:[2,8,12],dataoutstrm:10,datatyp:[4,5,9,10,11,14,15],debug:8,declar:11,deep:[2,8,10,11],default_v:[9,10],default_valu:[9,10],defin:10,depend:1,deploi:1,deploy:12,deploytopynq:12,design:[1,12],detail:2,develop:2,dict:[8,9,10],dictionari:[6,8],differ:1,digit:14,dimens:14,dimension:14,dir:[12,14],directori:[1,12,14],distr_pad:14,divis:14,dnn:[],doc:2,docker:14,dockerfil:1,docomput:10,doe:1,don:11,done:6,dot:14,down:1,driver:12,dt_a:14,dt_b:14,dtype:[6,8,9,10,14],dynam:6,dynamic_input_to_npi:10,each:[2,6,8,11,13,14],editor:1,effect:11,either:1,element:14,embed:8,emit:14,emphasi:2,empti:8,end:10,ensur:[10,11,12,14],entir:1,enumer:[8,11],environ:1,equal:[9,10],equival:13,estim:7,even:11,evenli:14,everi:11,everyth:1,exampl:[1,14],excel:1,exec_precompiled_singlenode_model:10,execut:[8,9,10],execute_custom_nod:[4,5,15],execute_nod:[8,9,10],execute_onnx:8,execute_onnx_and_make_model:8,execution_context:8,exist:[9,14],exit:14,expect:[6,8,9,10,12],experi:2,experiment:2,explor:[2,8,10],expos:8,extens:1,extra:[1,6,14],extract:[6,7],f5c6bd32ae93ec103a88152214baedff4ce1850d81065bfc:1,factor:14,factoroutmulsignmagnitud:13,fals:[8,11,14],familiar:1,fan:6,fast:10,fewest:8,field:[12,14],file:[1,8,12,14],filenam:[8,12],find:8,find_consum:8,find_produc:8,finn:4,finn_dt:14,finnpy_to_packed_bytearrai:14,first:[6,13],fix:[11,14],flatten:14,float32:[6,8],flow:[],fold_const:[4,5,15],foldconst:11,folder:[1,12,14],follow:[1,2,6,12],form:10,forward:1,found:[2,12],four:14,fpga:[1,2],fpgadataflow:[4,5,6,9,11,15],fpgapart:[10,12],framework:[2,10],fraser:10,from:[1,2,7,8,12,14],full:8,further:11,gambardella:10,gen_finn_dt_tensor:14,gener:[2,4,5,12,14,15],generate_param:10,get:[8,9],get_all_tensor_nam:8,get_by_nam:14,get_finn_root:14,get_folded_input_shap:10,get_folded_output_shap:10,get_hls_compatible_threshold_tensor:10,get_hls_compatible_weight_tensor:10,get_hls_datatype_str:8,get_initi:8,get_input_datatyp:10,get_instream_width:10,get_metadata_prop:8,get_nodeattr:9,get_nodeattr_typ:[9,10],get_num_possible_valu:8,get_number_output_valu:10,get_output_datatyp:10,get_outstream_width:10,get_per_tensor_fanout:6,get_smallest_poss:8,get_stream_width:10,get_template_param_valu:10,get_tensor_datatyp:8,get_tensor_fanout:8,get_tensor_shap:8,get_tensor_valueinfo:8,get_test_model_def_fxn:14,get_test_model_train:14,get_test_model_untrain:14,get_trained_checkpoint:14,get_weight_datatyp:10,getcustomop:9,github:2,give:[1,11,13],give_unique_node_nam:11,given:[6,7,8,9,10,14],giverandomtensornam:11,givereadabletensornam:11,giveuniquenodenam:11,global_includ:10,graph:[6,8,9,10,11,12],graphic:2,guarante:11,guid:[4,5],hand:2,has:[6,8,11,12,14],have:[1,6,8,11,12,13],height:[],help:1,hex:14,hexstr:14,hexstring2npbytearrai:14,high:1,highli:2,hls_synth_res_estim:[4,5,6],hls_var_nam:14,hlscustomop:10,hlslib:[2,10],hlssynth_ipgen:[4,5,11],homepag:2,host:[1,14],how:[4,5,14],http:1,human:11,imag:[],img:[],immedi:12,implement:8,includ:[2,8,12],index:[],indic:[8,9,10,11,12],infer:[1,2,8,9,10,11,14],infer_datatyp:[4,5,15],infer_node_datatyp:[9,10],infer_shap:[4,5,15],inferbinarystreamingfclay:12,inferdatatyp:11,infershap:11,infinit:11,info:[11,14],info_messag:6,inform:[6,12],infrastructur:12,inherit:11,initi:[6,8],innermost:14,inp0:9,inp1:9,inp:10,input:[6,8,9,10,11,13,14],input_dict:8,input_dtyp:14,input_fil:14,insert:[12,14],insert_tlastmark:[4,5,11],inserttlastmark:12,insid:[1,9],instal:1,instanc:[8,9,10,13],instanti:12,instead:14,int16:8,int2:8,int32:8,int3:8,int4:8,int8:8,integ:[8,13,14],intend:[],interfac:12,interleav:10,interleave_matrix_outer_dim_from_partit:14,intermedi:[8,11],intern:11,involv:1,ipgen_singlenode_cod:10,ipgenbuild:14,is_integ:8,is_linear:6,item:14,jupyt:2,kei:8,know:11,lab:2,lambda:8,largest:8,launch:1,layer:[11,12],lead:14,learn:[2,10],leeser:10,len:14,let:11,letter:14,librari:2,library_path:14,like:1,linear:[6,8],link:[1,2],list:[6,8],locat:1,look:[1,6],loop:11,lut_estim:10,made:[8,11],magnitud:13,mai:1,make:[1,11,12],make_build_dir:14,make_collapsed_param_fxn:13,make_deepcopi:8,make_deploy:[4,5,11],make_empty_exec_context:8,make_new_valueinfo_nam:8,make_project:12,make_pynq_driv:[4,5,11],make_pynq_proj:[4,5,11],make_shape_compatible_op:[9,10],makepynqdriv:12,makepynqproject:12,mani:1,manipul:8,manual:11,matmul:[11,13],matrix:[10,13,14],max:[8,14],mean:14,meant:11,member:[9,10],metadata_prop:[8,12],min:[8,14],minimum:14,mixtur:6,mkdtemp:14,mode:[1,12],model:[6,7,8,9,10,11,12,13,14],model_a:8,model_b:8,model_was_chang:11,modelproto:[8,12],modelwrapp:[4,5,6,11,15],modul:[4,15],modular:2,more:[2,8,11,14],mount:1,move:13,moveaddpastmul:13,movescalaraddpastmatmul:13,movescalarmulpastmatmul:13,mul:[11,13],multidimension:14,multipl:[11,13,14],multipli:13,multithreshold:[4,5,12,13,15],must:[9,11,12,13,14],mvtu:12,n_partit:14,n_thres_step:10,name:[6,7,8,9,11,14],name_field:14,ndarrai:14,nearest:[13,14],necessari:12,need:[7,9,10,11],neg:[8,13],netnam:14,netron:1,network:[1,2,10],neural:[2,10],new_nam:8,next:13,no_decl:14,node:[6,7,8,9,10,11,12,13],node_inputs_in_expected_ord:6,node_res_estim:10,non:12,none:[8,9,14],note:1,notebook:2,notwithstand:6,now:[6,8],npbytearrai:14,npbytearray2hexstr:14,npy:14,npy_to_dynamic_output:10,npy_to_rtlsim_input:14,number:[8,9,10,14],numpi:[10,14],numpy_to_hls_cod:14,object:[8,14],old_nam:8,onc:11,one:[6,8,12,14],ones:1,onli:[6,8,11,12,13],onlin:1,onnx:[4,5,8,9,10,12,15],onnx_exec:[4,5,15],onnx_model_proto:8,onnx_nod:[9,10],onnxruntim:8,op_nam:13,op_typ:6,open:1,oper:[8,13],ops:[6,13],option:1,order:6,orig_thres_matrix:10,orig_weight_matrix:10,origin:10,other:[8,13],otherwis:[1,8,11,14],out:6,out_bia:9,out_scal:9,out_shap:14,outcom:12,output:[8,9,10,11,14],output_shap:14,overlai:12,overview:2,own:1,pack:[12,14],pack_innermost_dim:14,pack_innermost_dim_as_hex_str:14,packag:[4,15],packed_bytearrai:14,packed_bytearray_to_finnpi:14,packedbit:14,pad:14,pad_tensor_to_multiple_of:14,pad_to_dim:14,pad_to_nbit:14,page:[],pair:12,paramet:13,part:[9,14],particular:[9,10,14],partit:8,pass:[4,5,10],password:12,past:13,path:[10,14],per:12,perform:[1,9,10],permit:[9,10],place:12,platform:12,png:[],point:[1,11],port:1,posit:[10,13,14],possibl:[8,12],pragma:10,preced:13,precid:13,precis:14,precomput:11,prefer:8,prefix:14,prepend:14,preusser:10,previous:12,print:1,prior:[11,12,14],process:1,produc:[6,8],product:14,project:[2,12],properti:[6,8],provid:[1,8],pushbutton:1,pynq:12,pynq_driver_dir:12,python:[1,12,14],pyveril:[8,14],pyverilate_stitched_ip:14,qnn:[1,2],quantiz:[2,6,10],random:[11,14],random_str:14,randomli:14,rather:1,reach:11,read:2,read_npy_data:10,readabl:11,readthedoc:[],recommend:11,refer:2,reflect:1,registri:[4,5,15],relat:2,remot:8,remote_exec:[4,5,15],remov:[12,14],remove_by_nam:14,remove_prefix:14,renam:8,rename_tensor:8,reorder:[4,5,11],repeat:[11,13],repeatedli:8,replac:11,repo:1,repositori:[1,2],repositroi:[],repres:[8,14],represent:14,requir:[8,9,10],res_estim:[4,5,6],research:2,reset_rtlsim:10,reshap:10,resourc:[1,7],respect:14,result:[6,7,8,11,12,13,14],return_full_exec_context:8,returned_dict:[9,10],revers:14,reverse_endian:14,reverse_inn:14,right:2,root:[1,14],round:[13,14],round_threshold:[4,5,11],roundandclipthreshold:13,roundup_to_integer_multipl:14,row:10,rtlsim:[8,10],rtlsim_exec:[4,5,15],rtlsim_output_to_npi:14,run:[8,12],run_dock:1,same:[12,14],save:[8,14],save_as_npi:10,scalar:13,scale:[],scp:12,script:[1,12],search:[],second:[12,13],see:[13,14],seen:2,sep:10,separ:2,sequenc:14,server:1,set:[1,8,9,10,12,13,14],set_attribut:[],set_exec_mod:[4,5,11],set_executable_path:14,set_initi:8,set_ipgen_path:14,set_metadata_prop:8,set_nodeattr:9,set_sim_mod:[],set_tensor_datatyp:8,set_tensor_shap:8,setexecmod:12,setsimmod:[],settings64:1,sever:1,shape:[8,9,10,11,14],shell:12,should:[1,6,8,11],sign:[8,11,13,14],sign_to_thr:[4,5,11],sim:[10,14],sim_mod:12,simd:10,simpli:1,sinc:[8,14],singl:[1,8,13,14],small:6,smallest:8,some:[1,2,8,11],someth:1,space:[],spawn:1,specif:2,specifi:[8,11,14],split:[12,13,14],stai:2,standard:[8,9,10],stitch:[8,12,14],store:[9,12,14],streamingdataflowpartit:[4,5,12,15],streamingfclayer_batch:[4,5,9,12],streamingmaxpool_batch:[4,5,9],streamlin:[4,5,11],string:[6,14],stringlength:14,strm_decl:10,structur:6,style:2,sub:11,subdirectori:12,subgraph:8,submodul:[4,5,15],subpackag:[4,15],subset:6,success:12,suitabl:10,sure:1,surviv:14,synth_pynq_proj:[4,5,11],synthesi:[7,12],synthpynqproject:12,take:[1,6,8,11,13,14],taken:[2,8,12],target:[2,12],target_dir:12,targetbit:14,tcl:12,tcl_script:14,tempfil:14,templat:[4,5,9,11],temporari:14,tensor:[6,8,11,13,14],tensor_fanout:6,tensor_nam:[6,8],tensor_shap:[8,14],tensor_valu:8,termin:[1,12],ternari:8,test:[4,5,11,15],text:1,thei:13,them:[6,12,13],thi:[1,2,6,8,9,10,11,12,14],thing:2,thought:1,threshold:[9,10,13],time:[1,11],tlastmark:[4,5,9,12],tmem:10,togeth:12,toggle_clk:10,token:1,tool:[1,2],topolog:[4,5,15],train:[1,2],transform:[4,5,8,15],transformed_model:11,travers:6,tune:2,tupl:11,two:[2,8,12,13,14],type:[8,11,14],ubuntu:1,uint16:8,uint2:[8,14],uint32:8,uint3:8,uint4:8,uint8:[8,14],umuroglu:10,under:[2,12],uniqu:11,unpack:[12,14],unpack_innermost_dim_from_hex_str:14,unsign:[8,13],until:8,updat:[2,13],upper:2,use:2,used:[2,8,9,10,14],useful:8,user:11,usernam:12,using:[2,8,11,13,14],util:[4,5,8,9,10,15],val:14,valu:[8,9,10,12,13,14],value_info:8,valueinfo:[8,11],valueinfo_to_tensor:14,valueinfoproto:[8,14],variabl:[1,14],vector:[13,14],verif:6,verifi:[6,9,10],verify_custom_nod:[4,5,15],verify_nod:[6,9,10],version:2,via:8,view:2,visser:10,vivado:[1,2,7,8,12],vivado_path:1,vivado_pynq_proj:12,vivado_stitch_proj:12,wai:[1,6],want:13,wbit:14,websit:2,weight:[8,10],welcom:2,well:1,when:[6,11],where:[1,8,9,10,12,13],whether:[6,8,9,10,11],which:[1,2,8,9,10,12,13,14],width:14,without:1,wmem:10,work:[1,8,14],workspac:1,wrapper:8,write:[1,4,5],xdnn:[],xilinx:2,xnorpopcount:[4,5,15],xnorpopcountmatmul:[9,11,12],you:[1,11],your:[1,11],zero:[8,13,14]},titles:["FINN - End-to-End Flow","Getting Started","FINN","src","Source Code","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"],titleterms:{absorb:13,analysi:[6,7],basic:14,batchnorm_to_affin:11,bipolar_to_xnor:11,cleanup:12,code:4,codegen_ipgen:12,codegen_ipstitch:12,codegen_npysim:12,collapse_rep:13,compil:[1,12],content:[5,6,7,8,9,10,11,12,13,14],convert_to_hls_lay:12,convolutioninputgener:10,core:8,create_dataflow_partit:12,custom_op:[9,10],data_pack:14,datatyp:8,develop:1,directli:1,docker:1,document:[],end:0,execute_custom_nod:8,experiment:1,finn:[0,1,2,5,6,7,8,9,10,11,12,13,14,15],flow:0,fold_const:11,fpgadataflow:[7,10,12,14],gener:11,get:1,guid:11,hls_synth_res_estim:7,hlssynth_ipgen:12,how:[1,6],indic:[],infer_datatyp:11,infer_shap:11,insert_tlastmark:12,interact:1,jenkin:1,jupyt:1,make_deploy:12,make_pynq_driv:12,make_pynq_proj:12,modelwrapp:8,modul:[5,6,7,8,9,10,11,12,13,14],multithreshold:9,notebook:1,onnx:14,onnx_exec:8,packag:[5,6,7,8,9,10,11,12,13,14],pass:6,registri:9,remote_exec:8,reorder:13,requir:1,res_estim:7,round_threshold:13,rtlsim_exec:8,run:1,set_exec_mod:12,set_sim_mod:[],shell:1,sign_to_thr:13,sourc:4,src:3,start:1,streamingdataflowpartit:9,streamingfclayer_batch:10,streamingmaxpool_batch:10,streamlin:13,submodul:[6,7,8,9,10,11,12,13,14],subpackag:[5,6,9,11],suit:1,synth_pynq_proj:12,tabl:[],templat:[10,12],test:[1,14],tlastmark:10,topolog:6,transform:[11,12,13],use:1,using:1,util:14,verify_custom_nod:6,welcom:[],what:2,write:[6,11],xnorpopcount:9}})
\ No newline at end of file
+Search.setIndex({docnames:["end_to_end_flow","getting_started","index","modules","source_code","source_code/finn","source_code/finn.analysis","source_code/finn.analysis.fpgadataflow","source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation","source_code/finn.analysis.fpgadataflow.res_estimation","source_code/finn.analysis.topology","source_code/finn.analysis.verify_custom_nodes","source_code/finn.core","source_code/finn.core.datatype","source_code/finn.core.execute_custom_node","source_code/finn.core.modelwrapper","source_code/finn.core.onnx_exec","source_code/finn.core.remote_exec","source_code/finn.core.rtlsim_exec","source_code/finn.custom_op","source_code/finn.custom_op.fpgadataflow","source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator","source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch","source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch","source_code/finn.custom_op.fpgadataflow.templates","source_code/finn.custom_op.fpgadataflow.tlastmarker","source_code/finn.custom_op.multithreshold","source_code/finn.custom_op.registry","source_code/finn.custom_op.streamingdataflowpartition","source_code/finn.custom_op.xnorpopcount","source_code/finn.transformation","source_code/finn.transformation.batchnorm_to_affine","source_code/finn.transformation.bipolar_to_xnor","source_code/finn.transformation.fold_constants","source_code/finn.transformation.fpgadataflow","source_code/finn.transformation.fpgadataflow.cleanup","source_code/finn.transformation.fpgadataflow.codegen_ipgen","source_code/finn.transformation.fpgadataflow.codegen_ipstitch","source_code/finn.transformation.fpgadataflow.codegen_npysim","source_code/finn.transformation.fpgadataflow.compile","source_code/finn.transformation.fpgadataflow.convert_to_hls_layers","source_code/finn.transformation.fpgadataflow.create_dataflow_partition","source_code/finn.transformation.fpgadataflow.hlssynth_ipgen","source_code/finn.transformation.fpgadataflow.insert_tlastmarker","source_code/finn.transformation.fpgadataflow.make_deployment","source_code/finn.transformation.fpgadataflow.make_pynq_driver","source_code/finn.transformation.fpgadataflow.make_pynq_proj","source_code/finn.transformation.fpgadataflow.set_exec_mode","source_code/finn.transformation.fpgadataflow.synth_pynq_proj","source_code/finn.transformation.fpgadataflow.templates","source_code/finn.transformation.general","source_code/finn.transformation.infer_datatypes","source_code/finn.transformation.infer_shapes","source_code/finn.transformation.streamline","source_code/finn.transformation.streamline.absorb","source_code/finn.transformation.streamline.collapse_repeated","source_code/finn.transformation.streamline.reorder","source_code/finn.transformation.streamline.round_thresholds","source_code/finn.transformation.streamline.sign_to_thres","source_code/finn.util","source_code/finn.util.basic","source_code/finn.util.data_packing","source_code/finn.util.fpgadataflow","source_code/finn.util.onnx","source_code/finn.util.test","source_code/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:["end_to_end_flow.rst","getting_started.rst","index.rst","modules.rst","source_code.rst","source_code/finn.rst","source_code/finn.analysis.rst","source_code/finn.analysis.fpgadataflow.rst","source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst","source_code/finn.analysis.fpgadataflow.res_estimation.rst","source_code/finn.analysis.topology.rst","source_code/finn.analysis.verify_custom_nodes.rst","source_code/finn.core.rst","source_code/finn.core.datatype.rst","source_code/finn.core.execute_custom_node.rst","source_code/finn.core.modelwrapper.rst","source_code/finn.core.onnx_exec.rst","source_code/finn.core.remote_exec.rst","source_code/finn.core.rtlsim_exec.rst","source_code/finn.custom_op.rst","source_code/finn.custom_op.fpgadataflow.rst","source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst","source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst","source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst","source_code/finn.custom_op.fpgadataflow.templates.rst","source_code/finn.custom_op.fpgadataflow.tlastmarker.rst","source_code/finn.custom_op.multithreshold.rst","source_code/finn.custom_op.registry.rst","source_code/finn.custom_op.streamingdataflowpartition.rst","source_code/finn.custom_op.xnorpopcount.rst","source_code/finn.transformation.rst","source_code/finn.transformation.batchnorm_to_affine.rst","source_code/finn.transformation.bipolar_to_xnor.rst","source_code/finn.transformation.fold_constants.rst","source_code/finn.transformation.fpgadataflow.rst","source_code/finn.transformation.fpgadataflow.cleanup.rst","source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst","source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst","source_code/finn.transformation.fpgadataflow.codegen_npysim.rst","source_code/finn.transformation.fpgadataflow.compile.rst","source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst","source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst","source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst","source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst","source_code/finn.transformation.fpgadataflow.make_deployment.rst","source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst","source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst","source_code/finn.transformation.fpgadataflow.set_exec_mode.rst","source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst","source_code/finn.transformation.fpgadataflow.templates.rst","source_code/finn.transformation.general.rst","source_code/finn.transformation.infer_datatypes.rst","source_code/finn.transformation.infer_shapes.rst","source_code/finn.transformation.streamline.rst","source_code/finn.transformation.streamline.absorb.rst","source_code/finn.transformation.streamline.collapse_repeated.rst","source_code/finn.transformation.streamline.reorder.rst","source_code/finn.transformation.streamline.round_thresholds.rst","source_code/finn.transformation.streamline.sign_to_thres.rst","source_code/finn.util.rst","source_code/finn.util.basic.rst","source_code/finn.util.data_packing.rst","source_code/finn.util.fpgadataflow.rst","source_code/finn.util.onnx.rst","source_code/finn.util.test.rst","source_code/modules.rst"],objects:{"":{finn:[5,0,0,"-"]},"finn.analysis":{fpgadataflow:[7,0,0,"-"],topology:[10,0,0,"-"],verify_custom_nodes:[11,0,0,"-"]},"finn.analysis.fpgadataflow":{hls_synth_res_estimation:[8,0,0,"-"],res_estimation:[9,0,0,"-"]},"finn.analysis.fpgadataflow.hls_synth_res_estimation":{hls_synth_res_estimation:[8,1,1,""]},"finn.analysis.fpgadataflow.res_estimation":{res_estimation:[9,1,1,""]},"finn.analysis.topology":{all_tensors_f32:[10,1,1,""],get_per_tensor_fanouts:[10,1,1,""],is_linear:[10,1,1,""],node_inputs_in_expected_order:[10,1,1,""]},"finn.analysis.verify_custom_nodes":{verify_nodes:[11,1,1,""]},"finn.core":{datatype:[13,0,0,"-"],execute_custom_node:[14,0,0,"-"],modelwrapper:[15,0,0,"-"],onnx_exec:[16,0,0,"-"],remote_exec:[17,0,0,"-"],rtlsim_exec:[18,0,0,"-"]},"finn.core.datatype":{DataType:[13,2,1,""]},"finn.core.datatype.DataType":{BINARY:[13,3,1,""],BIPOLAR:[13,3,1,""],FLOAT32:[13,3,1,""],INT16:[13,3,1,""],INT2:[13,3,1,""],INT32:[13,3,1,""],INT3:[13,3,1,""],INT4:[13,3,1,""],INT8:[13,3,1,""],TERNARY:[13,3,1,""],UINT16:[13,3,1,""],UINT2:[13,3,1,""],UINT32:[13,3,1,""],UINT3:[13,3,1,""],UINT4:[13,3,1,""],UINT8:[13,3,1,""],allowed:[13,4,1,""],bitwidth:[13,4,1,""],get_hls_datatype_str:[13,4,1,""],get_num_possible_values:[13,4,1,""],get_smallest_possible:[13,4,1,""],is_integer:[13,4,1,""],max:[13,4,1,""],min:[13,4,1,""],signed:[13,4,1,""]},"finn.core.execute_custom_node":{execute_custom_node:[14,1,1,""]},"finn.core.modelwrapper":{ModelWrapper:[15,2,1,""]},"finn.core.modelwrapper.ModelWrapper":{analysis:[15,4,1,""],check_all_tensor_shapes_specified:[15,4,1,""],check_compatibility:[15,4,1,""],find_consumer:[15,4,1,""],find_producer:[15,4,1,""],get_all_tensor_names:[15,4,1,""],get_initializer:[15,4,1,""],get_metadata_prop:[15,4,1,""],get_tensor_datatype:[15,4,1,""],get_tensor_fanout:[15,4,1,""],get_tensor_shape:[15,4,1,""],get_tensor_valueinfo:[15,4,1,""],graph:[15,4,1,""],make_empty_exec_context:[15,4,1,""],make_new_valueinfo_name:[15,4,1,""],model:[15,4,1,""],rename_tensor:[15,4,1,""],save:[15,4,1,""],set_initializer:[15,4,1,""],set_metadata_prop:[15,4,1,""],set_tensor_datatype:[15,4,1,""],set_tensor_shape:[15,4,1,""],transform:[15,4,1,""]},"finn.core.onnx_exec":{compare_execution:[16,1,1,""],execute_node:[16,1,1,""],execute_onnx:[16,1,1,""],execute_onnx_and_make_model:[16,1,1,""]},"finn.core.remote_exec":{remote_exec:[17,1,1,""]},"finn.core.rtlsim_exec":{rtlsim_exec:[18,1,1,""]},"finn.custom_op":{CustomOp:[19,2,1,""],fpgadataflow:[20,0,0,"-"],multithreshold:[26,0,0,"-"],registry:[27,0,0,"-"],streamingdataflowpartition:[28,0,0,"-"],xnorpopcount:[29,0,0,"-"]},"finn.custom_op.CustomOp":{execute_node:[19,4,1,""],get_nodeattr:[19,4,1,""],get_nodeattr_types:[19,4,1,""],infer_node_datatype:[19,4,1,""],make_shape_compatible_op:[19,4,1,""],set_nodeattr:[19,4,1,""],verify_node:[19,4,1,""]},"finn.custom_op.fpgadataflow":{HLSCustomOp:[20,2,1,""],convolutioninputgenerator:[21,0,0,"-"],streamingfclayer_batch:[22,0,0,"-"],streamingmaxpool_batch:[23,0,0,"-"],templates:[24,0,0,"-"],tlastmarker:[25,0,0,"-"]},"finn.custom_op.fpgadataflow.HLSCustomOp":{blackboxfunction:[20,4,1,""],bram_estimation:[20,4,1,""],code_generation_ipgen:[20,4,1,""],code_generation_npysim:[20,4,1,""],compile_singlenode_code:[20,4,1,""],dataoutstrm:[20,4,1,""],defines:[20,4,1,""],docompute:[20,4,1,""],dynamic_input_to_npy:[20,4,1,""],exec_precompiled_singlenode_model:[20,4,1,""],execute_node:[20,4,1,""],generate_params:[20,4,1,""],get_folded_input_shape:[20,4,1,""],get_folded_output_shape:[20,4,1,""],get_instream_width:[20,4,1,""],get_nodeattr_types:[20,4,1,""],get_number_output_values:[20,4,1,""],get_outstream_width:[20,4,1,""],global_includes:[20,4,1,""],ipgen_singlenode_code:[20,4,1,""],lut_estimation:[20,4,1,""],node_res_estimation:[20,4,1,""],npy_to_dynamic_output:[20,4,1,""],pragmas:[20,4,1,""],read_npy_data:[20,4,1,""],reset_rtlsim:[20,4,1,""],rtlsim:[20,4,1,""],save_as_npy:[20,4,1,""],strm_decl:[20,4,1,""],toggle_clk:[20,4,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator":{ConvolutionInputGenerator:[21,2,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator":{blackboxfunction:[21,4,1,""],bram_estimation:[21,4,1,""],dataoutstrm:[21,4,1,""],defines:[21,4,1,""],docompute:[21,4,1,""],execute_node:[21,4,1,""],get_input_datatype:[21,4,1,""],get_nodeattr_types:[21,4,1,""],get_number_output_values:[21,4,1,""],get_output_datatype:[21,4,1,""],get_stream_width:[21,4,1,""],global_includes:[21,4,1,""],infer_node_datatype:[21,4,1,""],lut_estimation:[21,4,1,""],make_shape_compatible_op:[21,4,1,""],pragmas:[21,4,1,""],read_npy_data:[21,4,1,""],save_as_npy:[21,4,1,""],strm_decl:[21,4,1,""],verify_node:[21,4,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch":{StreamingFCLayer_Batch:[22,2,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch":{blackboxfunction:[22,4,1,""],bram_estimation:[22,4,1,""],calc_tmem:[22,4,1,""],calc_wmem:[22,4,1,""],dataoutstrm:[22,4,1,""],defines:[22,4,1,""],docompute:[22,4,1,""],execute_node:[22,4,1,""],generate_params:[22,4,1,""],get_folded_input_shape:[22,4,1,""],get_folded_output_shape:[22,4,1,""],get_hls_compatible_threshold_tensor:[22,4,1,""],get_hls_compatible_weight_tensor:[22,4,1,""],get_input_datatype:[22,4,1,""],get_instream_width:[22,4,1,""],get_nodeattr_types:[22,4,1,""],get_number_output_values:[22,4,1,""],get_output_datatype:[22,4,1,""],get_outstream_width:[22,4,1,""],get_template_param_values:[22,4,1,""],get_weight_datatype:[22,4,1,""],global_includes:[22,4,1,""],infer_node_datatype:[22,4,1,""],lut_estimation:[22,4,1,""],make_shape_compatible_op:[22,4,1,""],pragmas:[22,4,1,""],read_npy_data:[22,4,1,""],save_as_npy:[22,4,1,""],strm_decl:[22,4,1,""],verify_node:[22,4,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch":{StreamingMaxPool_Batch:[23,2,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch":{blackboxfunction:[23,4,1,""],bram_estimation:[23,4,1,""],dataoutstrm:[23,4,1,""],defines:[23,4,1,""],docompute:[23,4,1,""],get_nodeattr_types:[23,4,1,""],get_number_output_values:[23,4,1,""],global_includes:[23,4,1,""],infer_node_datatype:[23,4,1,""],lut_estimation:[23,4,1,""],make_shape_compatible_op:[23,4,1,""],pragmas:[23,4,1,""],read_npy_data:[23,4,1,""],save_as_npy:[23,4,1,""],strm_decl:[23,4,1,""],verify_node:[23,4,1,""]},"finn.custom_op.fpgadataflow.tlastmarker":{TLastMarker:[25,2,1,""]},"finn.custom_op.fpgadataflow.tlastmarker.TLastMarker":{blackboxfunction:[25,4,1,""],dataoutstrm:[25,4,1,""],defines:[25,4,1,""],docompute:[25,4,1,""],execute_node:[25,4,1,""],get_folded_input_shape:[25,4,1,""],get_folded_output_shape:[25,4,1,""],get_instream_width:[25,4,1,""],get_nodeattr_types:[25,4,1,""],get_number_output_values:[25,4,1,""],get_outstream_width:[25,4,1,""],global_includes:[25,4,1,""],infer_node_datatype:[25,4,1,""],make_shape_compatible_op:[25,4,1,""],pragmas:[25,4,1,""],read_npy_data:[25,4,1,""],save_as_npy:[25,4,1,""],strm_decl:[25,4,1,""],verify_node:[25,4,1,""]},"finn.custom_op.multithreshold":{MultiThreshold:[26,2,1,""],compare:[26,1,1,""],multithreshold:[26,1,1,""]},"finn.custom_op.multithreshold.MultiThreshold":{execute_node:[26,4,1,""],get_nodeattr_types:[26,4,1,""],infer_node_datatype:[26,4,1,""],make_shape_compatible_op:[26,4,1,""],verify_node:[26,4,1,""]},"finn.custom_op.registry":{getCustomOp:[27,1,1,""]},"finn.custom_op.streamingdataflowpartition":{StreamingDataflowPartition:[28,2,1,""]},"finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition":{execute_node:[28,4,1,""],get_nodeattr_types:[28,4,1,""],infer_node_datatype:[28,4,1,""],make_shape_compatible_op:[28,4,1,""],verify_node:[28,4,1,""]},"finn.custom_op.xnorpopcount":{XnorPopcountMatMul:[29,2,1,""],xnorpopcountmatmul:[29,1,1,""]},"finn.custom_op.xnorpopcount.XnorPopcountMatMul":{execute_node:[29,4,1,""],get_nodeattr_types:[29,4,1,""],infer_node_datatype:[29,4,1,""],make_shape_compatible_op:[29,4,1,""],verify_node:[29,4,1,""]},"finn.transformation":{Transformation:[30,2,1,""],batchnorm_to_affine:[31,0,0,"-"],bipolar_to_xnor:[32,0,0,"-"],fold_constants:[33,0,0,"-"],fpgadataflow:[34,0,0,"-"],general:[50,0,0,"-"],infer_datatypes:[51,0,0,"-"],infer_shapes:[52,0,0,"-"],streamline:[53,0,0,"-"]},"finn.transformation.Transformation":{apply:[30,4,1,""]},"finn.transformation.batchnorm_to_affine":{BatchNormToAffine:[31,2,1,""]},"finn.transformation.batchnorm_to_affine.BatchNormToAffine":{apply:[31,4,1,""]},"finn.transformation.bipolar_to_xnor":{ConvertBipolarMatMulToXnorPopcount:[32,2,1,""]},"finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount":{apply:[32,4,1,""]},"finn.transformation.fold_constants":{FoldConstants:[33,2,1,""]},"finn.transformation.fold_constants.FoldConstants":{apply:[33,4,1,""]},"finn.transformation.fpgadataflow":{cleanup:[35,0,0,"-"],codegen_ipgen:[36,0,0,"-"],codegen_ipstitch:[37,0,0,"-"],codegen_npysim:[38,0,0,"-"],compile:[39,0,0,"-"],convert_to_hls_layers:[40,0,0,"-"],create_dataflow_partition:[41,0,0,"-"],hlssynth_ipgen:[42,0,0,"-"],insert_tlastmarker:[43,0,0,"-"],make_deployment:[44,0,0,"-"],make_pynq_driver:[45,0,0,"-"],make_pynq_proj:[46,0,0,"-"],set_exec_mode:[47,0,0,"-"],synth_pynq_proj:[48,0,0,"-"],templates:[49,0,0,"-"]},"finn.transformation.fpgadataflow.cleanup":{CleanUp:[35,2,1,""]},"finn.transformation.fpgadataflow.cleanup.CleanUp":{apply:[35,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen":{CodeGen_ipgen:[36,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen":{apply:[36,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch":{CodeGen_ipstitch:[37,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch":{apply:[37,4,1,""]},"finn.transformation.fpgadataflow.codegen_npysim":{CodeGen_npysim:[38,2,1,""]},"finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim":{apply:[38,4,1,""]},"finn.transformation.fpgadataflow.compile":{Compile:[39,2,1,""]},"finn.transformation.fpgadataflow.compile.Compile":{apply:[39,4,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers":{InferBinaryStreamingFCLayer:[40,2,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer":{apply:[40,4,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition":{CreateDataflowPartition:[41,2,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition":{apply:[41,4,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen":{HLSSynth_IPGen:[42,2,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen":{apply:[42,4,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker":{InsertTLastMarker:[43,2,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker":{apply:[43,4,1,""]},"finn.transformation.fpgadataflow.make_deployment":{DeployToPYNQ:[44,2,1,""]},"finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ":{apply:[44,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver":{MakePYNQDriver:[45,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver":{apply:[45,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj":{MakePYNQProject:[46,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject":{apply:[46,4,1,""]},"finn.transformation.fpgadataflow.set_exec_mode":{SetExecMode:[47,2,1,""]},"finn.transformation.fpgadataflow.set_exec_mode.SetExecMode":{apply:[47,4,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj":{SynthPYNQProject:[48,2,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject":{apply:[48,4,1,""]},"finn.transformation.general":{ConvertSubToAdd:[50,2,1,""],GiveRandomTensorNames:[50,2,1,""],GiveReadableTensorNames:[50,2,1,""],GiveUniqueNodeNames:[50,2,1,""]},"finn.transformation.general.ConvertSubToAdd":{apply:[50,4,1,""]},"finn.transformation.general.GiveRandomTensorNames":{apply:[50,4,1,""]},"finn.transformation.general.GiveReadableTensorNames":{apply:[50,4,1,""]},"finn.transformation.general.GiveUniqueNodeNames":{apply:[50,4,1,""]},"finn.transformation.infer_datatypes":{InferDataTypes:[51,2,1,""]},"finn.transformation.infer_datatypes.InferDataTypes":{apply:[51,4,1,""]},"finn.transformation.infer_shapes":{InferShapes:[52,2,1,""]},"finn.transformation.infer_shapes.InferShapes":{apply:[52,4,1,""]},"finn.transformation.streamline":{Streamline:[53,2,1,""],absorb:[54,0,0,"-"],collapse_repeated:[55,0,0,"-"],reorder:[56,0,0,"-"],round_thresholds:[57,0,0,"-"],sign_to_thres:[58,0,0,"-"]},"finn.transformation.streamline.Streamline":{apply:[53,4,1,""]},"finn.transformation.streamline.absorb":{Absorb1BitMulIntoMatMul:[54,2,1,""],AbsorbAddIntoMultiThreshold:[54,2,1,""],AbsorbMulIntoMultiThreshold:[54,2,1,""],FactorOutMulSignMagnitude:[54,2,1,""]},"finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul":{apply:[54,4,1,""]},"finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold":{apply:[54,4,1,""]},"finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold":{apply:[54,4,1,""]},"finn.transformation.streamline.absorb.FactorOutMulSignMagnitude":{apply:[54,4,1,""]},"finn.transformation.streamline.collapse_repeated":{CollapseRepeatedAdd:[55,2,1,""],CollapseRepeatedMul:[55,2,1,""],CollapseRepeatedOp:[55,2,1,""]},"finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp":{apply:[55,4,1,""]},"finn.transformation.streamline.reorder":{MoveAddPastMul:[56,2,1,""],MoveScalarAddPastMatMul:[56,2,1,""],MoveScalarMulPastMatMul:[56,2,1,""]},"finn.transformation.streamline.reorder.MoveAddPastMul":{apply:[56,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarAddPastMatMul":{apply:[56,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarMulPastMatMul":{apply:[56,4,1,""]},"finn.transformation.streamline.round_thresholds":{RoundAndClipThresholds:[57,2,1,""]},"finn.transformation.streamline.round_thresholds.RoundAndClipThresholds":{apply:[57,4,1,""]},"finn.transformation.streamline.sign_to_thres":{ConvertSignToThres:[58,2,1,""]},"finn.transformation.streamline.sign_to_thres.ConvertSignToThres":{apply:[58,4,1,""]},"finn.util":{basic:[60,0,0,"-"],data_packing:[61,0,0,"-"],fpgadataflow:[62,0,0,"-"],onnx:[63,0,0,"-"],test:[64,0,0,"-"]},"finn.util.basic":{CppBuilder:[60,2,1,""],calculate_signed_dot_prod_range:[60,1,1,""],gen_finn_dt_tensor:[60,1,1,""],get_by_name:[60,1,1,""],get_finn_root:[60,1,1,""],interleave_matrix_outer_dim_from_partitions:[60,1,1,""],make_build_dir:[60,1,1,""],pad_tensor_to_multiple_of:[60,1,1,""],random_string:[60,1,1,""],remove_by_name:[60,1,1,""],roundup_to_integer_multiple:[60,1,1,""]},"finn.util.basic.CppBuilder":{append_includes:[60,4,1,""],append_sources:[60,4,1,""],build:[60,4,1,""],set_executable_path:[60,4,1,""]},"finn.util.data_packing":{array2hexstring:[61,1,1,""],finnpy_to_packed_bytearray:[61,1,1,""],hexstring2npbytearray:[61,1,1,""],npbytearray2hexstring:[61,1,1,""],npy_to_rtlsim_input:[61,1,1,""],numpy_to_hls_code:[61,1,1,""],pack_innermost_dim_as_hex_string:[61,1,1,""],packed_bytearray_to_finnpy:[61,1,1,""],rtlsim_output_to_npy:[61,1,1,""],unpack_innermost_dim_from_hex_string:[61,1,1,""]},"finn.util.fpgadataflow":{IPGenBuilder:[62,2,1,""],pyverilate_stitched_ip:[62,1,1,""]},"finn.util.fpgadataflow.IPGenBuilder":{append_tcl:[62,4,1,""],build:[62,4,1,""],set_ipgen_path:[62,4,1,""]},"finn.util.onnx":{valueinfo_to_tensor:[63,1,1,""]},"finn.util.test":{get_test_model_def_fxn:[64,1,1,""],get_test_model_trained:[64,1,1,""],get_test_model_untrained:[64,1,1,""],get_trained_checkpoint:[64,1,1,""]},finn:{analysis:[6,0,0,"-"],core:[12,0,0,"-"],custom_op:[19,0,0,"-"],transformation:[30,0,0,"-"],util:[59,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":61,"0x07":61,"0x0e":61,"0x0f01":61,"0xb":61,"0xe":61,"600px":[],"abstract":[19,20,30],"boolean":16,"class":[13,15,19,20,21,22,23,25,26,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,60,62],"const":33,"default":[19,20,21,22,23,25,26,28,29,30],"enum":13,"final":16,"float":61,"function":[1,15,16,30,60],"import":1,"new":[1,2,15,16],"return":[6,8,9,10,11,13,15,16,19,20,21,22,23,25,26,27,28,29,30,55,60,61,62],"static":10,"true":[15,16,61],"try":1,"var":[20,21,22,23,25],For:57,HLS:[2,13],IPs:37,PEs:22,The:[1,2,6,15,30,37,41,45,48,56,61],There:1,Use:[18,60],abc:[19,30],abit:64,about:[2,6,11,44],abov:1,absorb1bitmulintomatmul:54,absorb:[4,5,30,40,53],absorbaddintomultithreshold:54,absorbmulintomultithreshold:54,acceler:[1,45],account:15,action:41,activ:[15,16],add:[31,50,54,56],adding:1,addit:1,addition:57,address:44,after:60,aim:56,align:[],all:[1,10,11,15,16,19,21,22,23,25,26,28,29,32,36,37,38,39,42,44,46,47,50,51,60,63],all_tensors_f32:10,allow:[13,15],alreadi:[45,46],also:[19,21,22,23,25,26,28,29,37,40],amount:60,analysi:[4,5,15,65],analysis_fxn:15,anaylsis_fxn:15,ani:[1,15,30,31,35,40,60,61],annot:[10,19,21,22,23,25,26,28,29],anoth:41,append_includ:60,append_sourc:60,append_tcl:62,appli:[15,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58],apply_rep:30,appropri:[1,50],arbitrari:61,architectur:2,argument:1,around:15,arrai:61,array2hexstr:61,arxiv:53,assign:15,associ:[15,32],assum:61,attribut:[11,19,20,21,22,23,25,26,28,29,37,41,45,46,47],attribute_nam:[19,20,21,22,23,25,26,28,29],attributeproto:[19,20,21,22,23,25,26,28,29],back:1,backend:[37,46],base:[13,15,19,20,21,22,23,25,26,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,60,62],basic:[4,5,59,61],batchnorm:31,batchnorm_to_affin:[4,5,30],batchnormtoaffin:31,been:[37,45,46],befor:60,between:[22,60],binari:[13,22,40,54,61],bipolar:[13,22,32,54,61],bipolar_to_xnor:[4,5,30],bit:[13,61],bitfil:1,bitwidth:13,blackboxfunct:[20,21,22,23,25],block:[37,46],blott:22,board:44,bool:[10,30],both:60,bram_estim:[20,21,22,23],brevita:2,brien:22,browser:1,build:[60,62],built:11,calc_tmem:22,calc_wmem:22,calcul:22,calculate_signed_dot_prod_rang:60,call:[1,14,22,30,37],can:[1,2,13,15,30,37,54,56,60,61],cannot:30,center:[],centerpiec:2,certain:6,chang:[1,15,30],check:[10,11,13,15,19,21,22,23,25,26,28,29],check_all_tensor_shapes_specifi:15,check_compat:15,cleanup:[4,5,30,34],clk:[20,36],clone:[1,60],code:[36,38,45,61],code_gen_dir:[60,62],code_generation_ipgen:20,code_generation_npysim:20,codegen_ipgen:[4,5,30,34,37],codegen_ipstitch:[4,5,30,34,46],codegen_npysim:[4,5,30,34],collaps:[55,56],collapse_rep:[4,5,30,53],collapserepeatedadd:55,collapserepeatedmul:55,collapserepeatedop:55,collect:[1,44],colloqui:2,come:[1,10],command:1,commun:2,compar:[16,26],compare_execut:16,compare_fxn:16,compat:[15,19,21,22,23,25,26,28,29],compil:[2,4,5,30,34,42],compile_singlenode_cod:20,complet:1,compon:2,comput:[1,15],consecut:55,constant:[10,15,54,55],construct:2,consum:15,contain:[1,2,16,19,41,60],content:[4,65],context:[14,15,16,19,20,21,22,25,26,28,29],contribut:2,convent:6,convert:[1,22,32,40,50,58,61],convert_to_hls_lay:[4,5,30,34],convertbipolarmatmultoxnorpopcount:32,convertsigntothr:58,convertsubtoadd:50,convolutioninputgener:[4,5,19,20],copi:[15,30,44],core:[4,5,65],corner:2,correct:32,correctli:[1,11,19,21,22,23,25,26,28,29,45],correspond:[2,13,19,21,22,23,25,26,28,29],count:20,cpp_file:60,cppbuilder:60,creat:[1,15,37,45,46,60,63],create_dataflow_partit:[4,5,30,34],createdataflowpartit:41,current:[2,15],custom:[1,2,11,14,16],custom_op:[4,5,65],customop:[19,20,21,22,23,25,26,27,28,29],data:[19,45,61],data_pack:[4,5,59],dataflow:[2,16,41],dataoutstrm:[20,21,22,23,25],datatyp:[4,5,12,15,19,21,22,23,25,26,28,29,51,60,61],debug:16,declar:30,deep:[2,15,22,30],default_v:[19,20,21,22,23,25,26,28,29],default_valu:[19,20,21,22,23,25,26,28,29],defin:[20,21,22,23,25],depend:1,deploi:1,deploy:44,deploytopynq:44,design:[1,37],detail:2,develop:2,dict:[15,16,19,20,21,22,23,25,26,28,29],dictionari:[6,10,15],differ:1,digit:[60,61],dimens:[60,61],dimension:61,dir:[37,45,46,60],directori:[1,44,60],distr_pad:60,divis:60,dnn:[],doc:2,docker:60,dockerfil:1,docomput:[20,21,22,23,25],doe:1,don:30,done:10,dot:60,down:1,driver:45,dt_a:60,dt_b:60,dtype:[10,15,19,20,21,22,23,25,26,28,29,61],dynam:10,dynamic_input_to_npi:20,each:[2,10,16,50,56,60,61],editor:1,effect:30,either:1,element:[60,61],embed:15,emit:61,emphasi:2,empti:15,end:22,ensur:[22,43,52,60,61],entir:1,enumer:[13,50],environ:1,equal:[19,21,22,23,25,26,28,29],equival:55,estim:[8,9],even:30,evenli:60,everi:52,everyth:1,exampl:[1,61],excel:1,exec_precompiled_singlenode_model:20,execut:[14,15,16,18,19,20,21,22,25,26,28,29],execute_custom_nod:[4,5,12],execute_nod:[16,19,20,21,22,25,26,28,29],execute_onnx:16,execute_onnx_and_make_model:16,execution_context:[17,18],exist:[27,60],exit:60,expect:[10,15,19,21,22,23,25,26,28,29,44],experi:2,experiment:2,explor:[2,15,22],expos:15,extens:1,extra:[1,10,60],extract:[6,8],f5c6bd32ae93ec103a88152214baedff4ce1850d81065bfc:1,factor:60,factoroutmulsignmagnitud:54,fals:[15,16,30,60,61],familiar:1,fan:10,fast:22,fewest:13,field:[37,45,46,60],file:[1,15,35,44,60,61],filenam:[15,41],find:15,find_consum:15,find_produc:15,finn:4,finn_dt:60,finnpy_to_packed_bytearrai:61,first:[10,54],fix:[30,61],flatten:61,float32:[10,13],flow:[],fold_const:[4,5,30],foldconst:33,folder:[1,37,60],follow:[1,2,10,40],form:22,forward:1,found:[2,37],four:61,fpga:[1,2],fpgadataflow:[4,5,6,19,30,59],fpgapart:[20,36,37],framework:[2,22],fraser:22,from:[1,2,8,15,16,37,46,60,61,63],full:16,further:30,gambardella:22,gen_finn_dt_tensor:60,gener:[2,4,5,30,35,36,37,38,45,60,61],generate_param:[20,22],get:[15,19],get_all_tensor_nam:15,get_by_nam:60,get_finn_root:60,get_folded_input_shap:[20,22,25],get_folded_output_shap:[20,22,25],get_hls_compatible_threshold_tensor:22,get_hls_compatible_weight_tensor:22,get_hls_datatype_str:13,get_initi:15,get_input_datatyp:[21,22],get_instream_width:[20,22,25],get_metadata_prop:15,get_nodeattr:19,get_nodeattr_typ:[19,20,21,22,23,25,26,28,29],get_num_possible_valu:13,get_number_output_valu:[20,21,22,23,25],get_output_datatyp:[21,22],get_outstream_width:[20,22,25],get_per_tensor_fanout:10,get_smallest_poss:13,get_stream_width:21,get_template_param_valu:22,get_tensor_datatyp:15,get_tensor_fanout:15,get_tensor_shap:15,get_tensor_valueinfo:15,get_test_model_def_fxn:64,get_test_model_train:64,get_test_model_untrain:64,get_trained_checkpoint:64,get_weight_datatyp:22,getcustomop:27,github:2,give:[1,50,55],give_unique_node_nam:50,given:[9,10,13,15,16,18,19,20,21,22,25,26,27,28,29,60,61,62],giverandomtensornam:50,givereadabletensornam:50,giveuniquenodenam:50,global_includ:[20,21,22,23,25],graph:[6,10,11,14,15,16,19,20,21,22,25,26,28,29,37,41,43,46,48,50],graphic:2,guarante:30,guid:[4,5],hand:2,has:[10,15,41,52,61],have:[1,10,15,30,37,45,46,56],height:[],help:1,hex:61,hexstr:61,hexstring2npbytearrai:61,high:1,highli:2,hls_synth_res_estim:[4,5,6,7],hls_var_nam:61,hlscustomop:[20,21,22,23,25],hlslib:[2,22],hlssynth_ipgen:[4,5,30,34],homepag:2,host:[1,60],how:[4,5,61],http:1,human:50,imag:[],img:[],immedi:40,implement:[13,14],includ:[2,15,16,45,46],index:[],indic:[16,19,20,21,22,23,25,26,28,29,30,41],infer:[1,2,15,19,21,22,23,25,26,28,29,51,61],infer_datatyp:[4,5,30],infer_node_datatyp:[19,21,22,23,25,26,28,29],infer_shap:[4,5,30],inferbinarystreamingfclay:40,inferdatatyp:51,infershap:52,infinit:30,info:[51,61],info_messag:11,inform:[6,44],infrastructur:46,inherit:30,initi:[10,15,16],innermost:61,inp0:29,inp1:29,inp:20,input:[10,11,14,15,16,19,21,22,23,25,26,28,29,30,32,33,51,57,61],input_dict:16,input_dtyp:61,input_fil:61,insert:[43,60],insert_tlastmark:[4,5,30,34],inserttlastmark:43,insid:[1,19],instal:1,instanc:[15,19,20,21,22,25,26,27,28,29,58],instanti:37,instead:60,int16:13,int2:13,int32:13,int3:13,int4:13,int8:13,integ:[13,57,60,61],intend:[],interfac:45,interleav:22,interleave_matrix_outer_dim_from_partit:60,intermedi:[15,16,51],intern:50,involv:1,ipgen_singlenode_cod:20,ipgenbuild:62,is_integ:13,is_linear:10,item:60,jupyt:2,kei:15,know:30,lab:2,lambda:16,largest:13,launch:1,layer:[31,37,40],lead:61,learn:[2,22],leeser:22,len:60,let:30,letter:60,librari:2,library_path:60,like:1,linear:[10,15],link:[1,2],list:[11,15],locat:1,look:[1,10],loop:30,lut_estim:[20,21,22,23],made:[15,30],magnitud:54,mai:1,make:[1,30,44],make_build_dir:60,make_collapsed_param_fxn:55,make_deepcopi:15,make_deploy:[4,5,30,34],make_empty_exec_context:15,make_new_valueinfo_nam:15,make_project:37,make_pynq_driv:[4,5,30,34],make_pynq_proj:[4,5,30,34],make_shape_compatible_op:[19,21,22,23,25,26,28,29],makepynqdriv:45,makepynqproject:[45,46,48],mani:1,manipul:15,manual:30,matmul:[32,56],matrix:[22,54,60],max:[13,60],mean:60,meant:30,member:[19,20,21,22,23,25,26,28,29],metadata_prop:[15,37,45,46],min:[13,60],minimum:61,mixtur:10,mkdtemp:60,mode:[1,47],model:[8,9,10,11,15,16,17,18,19,20,21,22,23,25,26,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,62],model_a:16,model_b:16,model_was_chang:30,modelproto:[15,37,45,46],modelwrapp:[4,5,6,12,16,30],modul:[4,65],modular:2,more:[2,15,50,61],mount:1,move:56,moveaddpastmul:56,movescalaraddpastmatmul:56,movescalarmulpastmatmul:56,mul:[31,54,56],multidimension:61,multipl:[30,54,60,61],multipli:[54,56],multithreshold:[4,5,19,40,54,57,58],must:[19,30,37,45,46,48,55,60],mvtu:40,n_partit:60,n_thres_step:22,name:[6,8,9,13,15,16,19,50,60,61],name_field:60,ndarrai:[60,61],nearest:[57,60,61],necessari:[43,44],need:[9,19,21,22,23,25,26,28,29,30],neg:[13,57],netnam:64,netron:1,network:[1,2,22],neural:[2,22],new_nam:15,next:56,no_decl:61,node:[8,9,10,11,14,15,16,19,20,21,22,23,25,26,27,28,29,32,33,35,36,37,38,39,41,42,43,46,47,50,51,54,57,58],node_inputs_in_expected_ord:10,node_res_estim:20,non:41,none:[15,26,60,61],note:1,notebook:2,notwithstand:10,now:[10,13],npbytearrai:61,npbytearray2hexstr:61,npy:61,npy_to_dynamic_output:20,npy_to_rtlsim_input:61,number:[13,15,19,21,22,23,25,26,28,29,61],numpi:[22,60,61,63],numpy_to_hls_cod:61,object:[15,60,62],old_nam:15,onc:30,one:[10,15,41,43,60,61],ones:1,onli:[10,13,15,30,33,41,54],onlin:1,onnx:[4,5,15,16,19,20,21,22,23,25,26,27,28,29,37,45,46,59],onnx_exec:[4,5,12],onnx_model_proto:15,onnx_nod:[19,20,21,22,23,25,26,28,29],onnxruntim:16,op_nam:55,op_typ:[10,11],open:1,oper:[15,55,56,57],ops:[11,54],option:1,order:10,orig_thres_matrix:22,orig_weight_matrix:22,origin:22,other:[15,56],otherwis:[1,15,30,60],out:10,out_bia:26,out_scal:26,out_shap:61,outcom:[37,45,46],output:[14,15,16,19,21,22,23,25,26,28,29,33,51,61],output_shap:61,overlai:46,overview:2,own:1,pack:[45,61],pack_innermost_dim:61,pack_innermost_dim_as_hex_str:61,packag:[4,37,65],packed_bytearrai:61,packed_bytearray_to_finnpi:61,packedbit:61,pad:[60,61],pad_tensor_to_multiple_of:60,pad_to_dim:60,pad_to_nbit:61,page:[],pair:40,paramet:55,part:[19,61],particular:[19,21,22,23,25,26,28,29,60],partit:16,pass:[4,5,22],password:44,past:56,path:[20,22,60,61,62],per:37,perform:[1,19,21,22,23,25,26,28,29],permit:[19,20,21,22,23,25,26,28,29],place:37,platform:46,png:[],point:[1,30],port:1,posit:[22,54,60],possibl:[13,44],pragma:[20,21,22,23,25],preced:54,precid:54,precis:61,precomput:33,prefer:13,prefix:[60,61],prepend:61,preusser:22,previous:[37,46],print:1,prior:[48,50,61],process:1,produc:[6,15],product:60,project:[2,37,46,48],properti:[6,15],provid:[1,14,16],pushbutton:1,pynq:[44,45,46,48],pynq_driver_dir:45,python:[1,45,61],pyveril:[18,62],pyverilate_stitched_ip:62,qnn:[1,2],quantiz:[2,10,22],random:[50,60],random_str:60,randomli:60,rather:1,reach:30,read:2,read_npy_data:[20,21,22,23,25],readabl:50,readthedoc:[],recommend:50,refer:2,reflect:1,registri:[4,5,19],relat:2,remot:16,remote_exec:[4,5,12],remov:[35,60,61],remove_by_nam:60,remove_prefix:61,renam:15,rename_tensor:15,reorder:[4,5,30,53],repeat:[30,55],repeatedli:15,replac:[31,33],repo:1,repositori:[1,2],repositroi:[],repres:[13,61],represent:61,requir:[13,19,20,21,22,23,25,26,28,29],res_estim:[4,5,6,7],research:2,reset_rtlsim:20,reshap:22,resourc:[1,8,9],respect:60,result:[8,11,15,32,33,37,55,61],return_full_exec_context:16,returned_dict:[19,20,21,22,23,25,26,28,29],revers:61,reverse_endian:61,reverse_inn:61,right:2,root:[1,60],round:[57,60],round_threshold:[4,5,30,53],roundandclipthreshold:57,roundup_to_integer_multipl:60,row:22,rtlsim:[16,20],rtlsim_exec:[4,5,12],rtlsim_output_to_npi:61,run:[15,37,46,48],run_dock:1,same:[37,61],save:[15,61],save_as_npi:[20,21,22,23,25],scalar:[54,56],scale:[],scp:44,script:[1,37],search:[],second:[41,54],see:[53,61],seen:2,sep:22,separ:2,sequenc:61,server:1,set:[1,15,16,19,20,21,22,23,25,26,28,29,37,45,46,47,57,60,61],set_attribut:[],set_exec_mod:[4,5,30,34],set_executable_path:60,set_initi:15,set_ipgen_path:62,set_metadata_prop:15,set_nodeattr:19,set_sim_mod:[],set_tensor_datatyp:15,set_tensor_shap:15,setexecmod:47,setsimmod:[],settings64:1,sever:1,shape:[15,19,21,22,23,25,26,28,29,52,60,61],shell:46,should:[1,10,16,30],sign:[13,50,54,58,60],sign_to_thr:[4,5,30,53],sim:[20,62],sim_mod:47,simd:22,simpli:1,sinc:[16,61],singl:[1,14,16,55,56,61],small:10,smallest:13,some:[1,2,15,30],someth:1,space:[],spawn:1,specif:2,specifi:[15,52,61],split:[41,54,60],stai:2,standard:[15,19,21,22,23,25,26,28,29],stitch:[18,37,46,62],store:[19,44,61],streamingdataflowpartit:[4,5,19,41],streamingfclayer_batch:[4,5,19,20,40],streamingmaxpool_batch:[4,5,19,20],streamlin:[4,5,30],string:[11,60,61],stringlength:60,strm_decl:[20,21,22,23,25],structur:6,style:2,sub:50,subdirectori:37,subgraph:15,submodul:[4,5,65],subpackag:[4,65],subset:10,success:[37,45,46],suitabl:22,sure:1,surviv:60,synth_pynq_proj:[4,5,30,34],synthesi:[8,48],synthpynqproject:48,take:[1,6,13,16,30,55,60],taken:[2,15,16,41],target:[2,44],target_dir:44,targetbit:61,tcl:37,tcl_script:62,tempfil:60,templat:[4,5,19,20,30,34],temporari:60,tensor:[10,15,16,50,51,52,55,60,63],tensor_fanout:10,tensor_nam:[10,15],tensor_shap:[15,60],tensor_valu:15,termin:[1,43],ternari:13,test:[4,5,31,59],text:1,thei:56,them:[10,37,44,56],thi:[1,2,10,13,15,16,19,20,21,22,23,25,26,28,29,30,46,48,50,60],thing:2,thought:1,threshold:[22,26,54,57,58],time:[1,30,31],tlastmark:[4,5,19,20,43],tmem:22,togeth:37,toggle_clk:20,token:1,tool:[1,2],topolog:[4,5,6],train:[1,2],transform:[4,5,15,65],transformed_model:30,travers:6,tune:2,tupl:30,two:[2,16,41,54,55,60],type:[13,51,60,61],ubuntu:1,uint16:13,uint2:[13,61],uint32:13,uint3:13,uint4:13,uint8:[13,61],umuroglu:22,under:[2,37],uniqu:50,unpack:[45,61],unpack_innermost_dim_from_hex_str:61,unsign:[13,57],until:15,updat:[2,54],upper:2,use:2,used:[2,15,16,19,20,21,22,23,25,26,28,29,60,61],useful:[15,16],user:30,usernam:44,using:[2,16,30,50,55,60,61],util:[4,5,15,19,20,21,22,23,25,26,28,29,65],val:60,valu:[13,15,16,19,20,21,22,23,25,26,28,29,37,45,46,54,57,60,61],value_info:15,valueinfo:[15,52],valueinfo_to_tensor:63,valueinfoproto:[15,63],variabl:[1,61],vector:[54,60],verif:11,verifi:[10,19,21,22,23,25,26,28,29],verify_custom_nod:[4,5,6],verify_nod:[11,19,21,22,23,25,26,28,29],version:2,via:[14,16],view:2,visser:22,vivado:[1,2,8,13,37,46],vivado_path:1,vivado_pynq_proj:46,vivado_stitch_proj:37,wai:[1,10],want:56,wbit:64,websit:2,weight:[16,22],welcom:2,well:1,when:[10,30],where:[1,13,16,19,20,21,22,23,25,26,28,29,44,54],whether:[10,13,15,19,20,21,22,23,25,26,28,29,30],which:[1,2,15,19,20,21,22,23,25,26,28,29,37,41,55,61],width:61,without:1,wmem:22,work:[1,15,61],workspac:1,wrapper:15,write:[1,4,5],xdnn:[],xilinx:2,xnorpopcount:[4,5,19],xnorpopcountmatmul:[29,32,40],you:[1,30],your:[1,30],zero:[15,57,61,63]},titles:["FINN - End-to-End Flow","Getting Started","FINN","src","Source Code","finn package","finn.analysis package","finn.analysis.fpgadataflow package","finn.analysis.fpgadataflow.hls_synth_res_estimation module","finn.analysis.fpgadataflow.res_estimation module","finn.analysis.topology module","finn.analysis.verify_custom_nodes module","finn.core package","finn.core.datatype module","finn.core.execute_custom_node module","finn.core.modelwrapper module","finn.core.onnx_exec module","finn.core.remote_exec module","finn.core.rtlsim_exec module","finn.custom_op package","finn.custom_op.fpgadataflow package","finn.custom_op.fpgadataflow.convolutioninputgenerator module","finn.custom_op.fpgadataflow.streamingfclayer_batch module","finn.custom_op.fpgadataflow.streamingmaxpool_batch module","finn.custom_op.fpgadataflow.templates module","finn.custom_op.fpgadataflow.tlastmarker module","finn.custom_op.multithreshold module","finn.custom_op.registry module","finn.custom_op.streamingdataflowpartition module","finn.custom_op.xnorpopcount module","finn.transformation package","finn.transformation.batchnorm_to_affine module","finn.transformation.bipolar_to_xnor module","finn.transformation.fold_constants module","finn.transformation.fpgadataflow package","finn.transformation.fpgadataflow.cleanup module","finn.transformation.fpgadataflow.codegen_ipgen module","finn.transformation.fpgadataflow.codegen_ipstitch module","finn.transformation.fpgadataflow.codegen_npysim module","finn.transformation.fpgadataflow.compile module","finn.transformation.fpgadataflow.convert_to_hls_layers module","finn.transformation.fpgadataflow.create_dataflow_partition module","finn.transformation.fpgadataflow.hlssynth_ipgen module","finn.transformation.fpgadataflow.insert_tlastmarker module","finn.transformation.fpgadataflow.make_deployment module","finn.transformation.fpgadataflow.make_pynq_driver module","finn.transformation.fpgadataflow.make_pynq_proj module","finn.transformation.fpgadataflow.set_exec_mode module","finn.transformation.fpgadataflow.synth_pynq_proj module","finn.transformation.fpgadataflow.templates module","finn.transformation.general module","finn.transformation.infer_datatypes module","finn.transformation.infer_shapes module","finn.transformation.streamline package","finn.transformation.streamline.absorb module","finn.transformation.streamline.collapse_repeated module","finn.transformation.streamline.reorder module","finn.transformation.streamline.round_thresholds module","finn.transformation.streamline.sign_to_thres module","finn.util package","finn.util.basic module","finn.util.data_packing module","finn.util.fpgadataflow module","finn.util.onnx module","finn.util.test module","finn"],titleterms:{absorb:54,analysi:[6,7,8,9,10,11],basic:60,batchnorm_to_affin:31,bipolar_to_xnor:32,cleanup:35,code:4,codegen_ipgen:36,codegen_ipstitch:37,codegen_npysim:38,collapse_rep:55,compil:[1,39],content:[5,6,7,12,19,20,30,34,53,59],convert_to_hls_lay:40,convolutioninputgener:21,core:[12,13,14,15,16,17,18],create_dataflow_partit:41,custom_op:[19,20,21,22,23,24,25,26,27,28,29],data_pack:61,datatyp:13,develop:1,directli:1,docker:1,document:[],end:0,execute_custom_nod:14,experiment:1,finn:[0,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65],flow:0,fold_const:33,fpgadataflow:[7,8,9,20,21,22,23,24,25,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,62],gener:50,get:1,guid:30,hls_synth_res_estim:8,hlssynth_ipgen:42,how:[1,6],indic:[],infer_datatyp:51,infer_shap:52,insert_tlastmark:43,interact:1,jenkin:1,jupyt:1,make_deploy:44,make_pynq_driv:45,make_pynq_proj:46,modelwrapp:15,modul:[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64],multithreshold:26,notebook:1,onnx:63,onnx_exec:16,packag:[5,6,7,12,19,20,30,34,53,59],pass:6,registri:27,remote_exec:17,reorder:56,requir:1,res_estim:9,round_threshold:57,rtlsim_exec:18,run:1,set_exec_mod:47,set_sim_mod:[],shell:1,sign_to_thr:58,sourc:4,src:3,start:1,streamingdataflowpartit:28,streamingfclayer_batch:22,streamingmaxpool_batch:23,streamlin:[53,54,55,56,57,58],submodul:[6,7,12,19,20,30,34,53,59],subpackag:[5,6,19,30],suit:1,synth_pynq_proj:48,tabl:[],templat:[24,49],test:[1,64],tlastmark:25,topolog:10,transform:[30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],use:1,using:1,util:[59,60,61,62,63,64],verify_custom_nod:11,welcom:[],what:2,write:[6,30],xnorpopcount:29}})
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code.html b/docs/finn/_build/html/source_code.html
index 6662fd362..825d89aff 100644
--- a/docs/finn/_build/html/source_code.html
+++ b/docs/finn/_build/html/source_code.html
@@ -160,17 +160,21 @@
 <li class="toctree-l3"><a class="reference internal" href="source_code/finn.analysis.html">finn.analysis package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l5"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html">finn.analysis.fpgadataflow package</a><ul>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html#submodules">Submodules</a><ul>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.res_estimation.html">finn.analysis.fpgadataflow.res_estimation module</a></li>
+</ul>
+</li>
 <li class="toctree-l6"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#module-finn.analysis.topology">finn.analysis.topology module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#submodules">Submodules</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.analysis.topology.html">finn.analysis.topology module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.analysis.verify_custom_nodes.html">finn.analysis.verify_custom_nodes module</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#module-finn.analysis">Module contents</a><ul>
 <li class="toctree-l5"><a class="reference internal" href="source_code/finn.analysis.html#how-to-write-an-analysis-pass-for-finn">How to write an analysis pass for FINN</a></li>
 </ul>
@@ -178,79 +182,91 @@
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="source_code/finn.core.html">finn.core package</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.datatype">finn.core.datatype module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.execute_custom_node">finn.core.execute_custom_node module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.modelwrapper">finn.core.modelwrapper module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.onnx_exec">finn.core.onnx_exec module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.remote_exec">finn.core.remote_exec module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.rtlsim_exec">finn.core.rtlsim_exec module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#submodules">Submodules</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.datatype.html">finn.core.datatype module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.execute_custom_node.html">finn.core.execute_custom_node module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.modelwrapper.html">finn.core.modelwrapper module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.onnx_exec.html">finn.core.onnx_exec module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.remote_exec.html">finn.core.remote_exec module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.rtlsim_exec.html">finn.core.rtlsim_exec module</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="source_code/finn.custom_op.html">finn.custom_op package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l5"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a><ul>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#submodules">Submodules</a><ul>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.templates.html">finn.custom_op.fpgadataflow.templates module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html">finn.custom_op.fpgadataflow.tlastmarker module</a></li>
+</ul>
+</li>
 <li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#module-finn.custom_op.registry">finn.custom_op.registry module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#submodules">Submodules</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.custom_op.multithreshold.html">finn.custom_op.multithreshold module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.custom_op.registry.html">finn.custom_op.registry module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.custom_op.streamingdataflowpartition.html">finn.custom_op.streamingdataflowpartition module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.custom_op.xnorpopcount.html">finn.custom_op.xnorpopcount module</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#module-finn.custom_op">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="source_code/finn.transformation.html">finn.transformation package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a><ul>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.set_exec_mode">finn.transformation.fpgadataflow.set_exec_mode module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#submodules">Submodules</a><ul>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.cleanup.html">finn.transformation.fpgadataflow.cleanup module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.codegen_ipgen.html">finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.codegen_npysim.html">finn.transformation.fpgadataflow.codegen_npysim module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.compile.html">finn.transformation.fpgadataflow.compile module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.make_deployment.html">finn.transformation.fpgadataflow.make_deployment module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.make_pynq_driver.html">finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.make_pynq_proj.html">finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.set_exec_mode.html">finn.transformation.fpgadataflow.set_exec_mode module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.templates.html">finn.transformation.fpgadataflow.templates module</a></li>
+</ul>
+</li>
 <li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.streamline.html">finn.transformation.streamline package</a><ul>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#submodules">Submodules</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#submodules">Submodules</a><ul>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.streamline.absorb.html">finn.transformation.streamline.absorb module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.streamline.collapse_repeated.html">finn.transformation.streamline.collapse_repeated module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.streamline.reorder.html">finn.transformation.streamline.reorder module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.streamline.round_thresholds.html">finn.transformation.streamline.round_thresholds module</a></li>
+<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.streamline.sign_to_thres.html">finn.transformation.streamline.sign_to_thres module</a></li>
+</ul>
+</li>
 <li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.fold_constants">finn.transformation.fold_constants module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.general">finn.transformation.general module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#submodules">Submodules</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.batchnorm_to_affine.html">finn.transformation.batchnorm_to_affine module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.bipolar_to_xnor.html">finn.transformation.bipolar_to_xnor module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.fold_constants.html">finn.transformation.fold_constants module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.general.html">finn.transformation.general module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.infer_datatypes.html">finn.transformation.infer_datatypes module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.infer_shapes.html">finn.transformation.infer_shapes module</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation">Module contents</a><ul>
 <li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.html#guide-to-writing-finn-transformations">Guide to writing FINN transformations</a></li>
 </ul>
@@ -258,12 +274,14 @@
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="source_code/finn.util.html">finn.util package</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util.basic">finn.util.basic module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util.data_packing">finn.util.data_packing module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util.fpgadataflow">finn.util.fpgadataflow module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util.onnx">finn.util.onnx module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util.test">finn.util.test module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#submodules">Submodules</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.util.basic.html">finn.util.basic module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.util.data_packing.html">finn.util.data_packing module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.util.fpgadataflow.html">finn.util.fpgadataflow module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.util.onnx.html">finn.util.onnx module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="source_code/finn.util.test.html">finn.util.test module</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util">Module contents</a></li>
 </ul>
 </li>
diff --git a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html
new file mode 100644
index 000000000..a333ed66b
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html
@@ -0,0 +1,219 @@
+
+
+<!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.analysis.fpgadataflow.hls_synth_res_estimation module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.analysis.fpgadataflow.res_estimation module" href="finn.analysis.fpgadataflow.res_estimation.html" />
+    <link rel="prev" title="finn.analysis.fpgadataflow package" href="finn.analysis.fpgadataflow.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.analysis.html">finn.analysis package</a> &raquo;</li>
+        
+          <li><a href="finn.analysis.fpgadataflow.html">finn.analysis.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.analysis.fpgadataflow.hls_synth_res_estimation module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.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="module-finn.analysis.fpgadataflow.hls_synth_res_estimation">
+<span id="finn-analysis-fpgadataflow-hls-synth-res-estimation-module"></span><h1>finn.analysis.fpgadataflow.hls_synth_res_estimation module<a class="headerlink" href="#module-finn.analysis.fpgadataflow.hls_synth_res_estimation" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation">
+<code class="sig-prename descclassname">finn.analysis.fpgadataflow.hls_synth_res_estimation.</code><code class="sig-name descname">hls_synth_res_estimation</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation" title="Permalink to this definition">¶</a></dt>
+<dd><p>Extracts the results from the vivado synthesis.
+Returns {node name : resource estimation}</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.analysis.fpgadataflow.res_estimation.html" class="btn btn-neutral float-right" title="finn.analysis.fpgadataflow.res_estimation module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.analysis.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.analysis.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html
index bdaa8bda5..8f2fb5a29 100644
--- a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html
+++ b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html
@@ -35,7 +35,7 @@
   <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
-    <link rel="next" title="finn.core package" href="finn.core.html" />
+    <link rel="next" title="finn.analysis.fpgadataflow.hls_synth_res_estimation module" href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html" />
     <link rel="prev" title="finn.analysis package" href="finn.analysis.html" /> 
 </head>
 
@@ -158,26 +158,12 @@
 <h1>finn.analysis.fpgadataflow package<a class="headerlink" href="#finn-analysis-fpgadataflow-package" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.analysis.fpgadataflow.res_estimation.html">finn.analysis.fpgadataflow.res_estimation module</a></li>
+</ul>
 </div>
-<div class="section" id="module-finn.analysis.fpgadataflow.hls_synth_res_estimation">
-<span id="finn-analysis-fpgadataflow-hls-synth-res-estimation-module"></span><h2>finn.analysis.fpgadataflow.hls_synth_res_estimation module<a class="headerlink" href="#module-finn.analysis.fpgadataflow.hls_synth_res_estimation" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation">
-<code class="sig-prename descclassname">finn.analysis.fpgadataflow.hls_synth_res_estimation.</code><code class="sig-name descname">hls_synth_res_estimation</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation" title="Permalink to this definition">¶</a></dt>
-<dd><p>Extracts the results from the vivado synthesis.
-Returns {node name : resource estimation}</p>
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.analysis.fpgadataflow.res_estimation">
-<span id="finn-analysis-fpgadataflow-res-estimation-module"></span><h2>finn.analysis.fpgadataflow.res_estimation module<a class="headerlink" href="#module-finn.analysis.fpgadataflow.res_estimation" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.analysis.fpgadataflow.res_estimation.res_estimation">
-<code class="sig-prename descclassname">finn.analysis.fpgadataflow.res_estimation.</code><code class="sig-name descname">res_estimation</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.fpgadataflow.res_estimation.res_estimation" title="Permalink to this definition">¶</a></dt>
-<dd><p>Estimates the resources needed for the given model.
-Returns {node name : resource estimation}</p>
-</dd></dl>
-
 </div>
 <div class="section" id="module-finn.analysis.fpgadataflow">
 <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.analysis.fpgadataflow" title="Permalink to this headline">¶</a></h2>
@@ -192,7 +178,7 @@ Returns {node name : resource estimation}</p>
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="finn.core.html" class="btn btn-neutral float-right" title="finn.core package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html" class="btn btn-neutral float-right" title="finn.analysis.fpgadataflow.hls_synth_res_estimation module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="finn.analysis.html" class="btn btn-neutral float-left" title="finn.analysis package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
diff --git a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.res_estimation.html b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.res_estimation.html
new file mode 100644
index 000000000..7e52637fc
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.res_estimation.html
@@ -0,0 +1,219 @@
+
+
+<!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.analysis.fpgadataflow.res_estimation module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.analysis.topology module" href="finn.analysis.topology.html" />
+    <link rel="prev" title="finn.analysis.fpgadataflow.hls_synth_res_estimation module" href="finn.analysis.fpgadataflow.hls_synth_res_estimation.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.analysis.html">finn.analysis package</a> &raquo;</li>
+        
+          <li><a href="finn.analysis.fpgadataflow.html">finn.analysis.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.analysis.fpgadataflow.res_estimation module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.analysis.fpgadataflow.res_estimation.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="module-finn.analysis.fpgadataflow.res_estimation">
+<span id="finn-analysis-fpgadataflow-res-estimation-module"></span><h1>finn.analysis.fpgadataflow.res_estimation module<a class="headerlink" href="#module-finn.analysis.fpgadataflow.res_estimation" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.analysis.fpgadataflow.res_estimation.res_estimation">
+<code class="sig-prename descclassname">finn.analysis.fpgadataflow.res_estimation.</code><code class="sig-name descname">res_estimation</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.fpgadataflow.res_estimation.res_estimation" title="Permalink to this definition">¶</a></dt>
+<dd><p>Estimates the resources needed for the given model.
+Returns {node name : resource estimation}</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.analysis.topology.html" class="btn btn-neutral float-right" title="finn.analysis.topology module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html" class="btn btn-neutral float-left" title="finn.analysis.fpgadataflow.hls_synth_res_estimation module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.analysis.html b/docs/finn/_build/html/source_code/finn.analysis.html
index 095e50987..ef0bd5462 100644
--- a/docs/finn/_build/html/source_code/finn.analysis.html
+++ b/docs/finn/_build/html/source_code/finn.analysis.html
@@ -159,9 +159,11 @@
 <div class="toctree-wrapper compound">
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="finn.analysis.fpgadataflow.html">finn.analysis.fpgadataflow package</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="finn.analysis.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finn.analysis.fpgadataflow.html#submodules">Submodules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.analysis.fpgadataflow.res_estimation.html">finn.analysis.fpgadataflow.res_estimation module</a></li>
+</ul>
+</li>
 <li class="toctree-l2"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
@@ -170,50 +172,12 @@
 </div>
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="finn.analysis.topology.html">finn.analysis.topology module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.analysis.verify_custom_nodes.html">finn.analysis.verify_custom_nodes module</a></li>
+</ul>
 </div>
-<div class="section" id="module-finn.analysis.topology">
-<span id="finn-analysis-topology-module"></span><h2>finn.analysis.topology module<a class="headerlink" href="#module-finn.analysis.topology" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.analysis.topology.all_tensors_f32">
-<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">all_tensors_f32</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.all_tensors_f32" title="Permalink to this definition">¶</a></dt>
-<dd><p>Checks whether all tensors have a float32 dtype, extra quantization
-annotations notwithstanding.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.analysis.topology.get_per_tensor_fanouts">
-<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">get_per_tensor_fanouts</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.get_per_tensor_fanouts" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a dictionary of (tensor_name, tensor_fanout) for the model.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.analysis.topology.is_linear">
-<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">is_linear</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.is_linear" title="Permalink to this definition">¶</a></dt>
-<dd><p>Checks whether the given model graph is linear. This is done by looking
-at the fan-out of each tensor. All tensors have a fan-out &lt;= 1 in a linear
-graph. Returns {“is_linear”, Bool}</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.analysis.topology.node_inputs_in_expected_order">
-<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">node_inputs_in_expected_order</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.node_inputs_in_expected_order" title="Permalink to this definition">¶</a></dt>
-<dd><p>Verifies that the node inputs are ordered in the way that FINN expects
-them. When a node has a mixture of static (= constant, initialized) inputs
-and dynamic inputs, the dynamic input should come first, followed by the
-static one. Only verifiable for a small subset of op_types for now.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.analysis.verify_custom_nodes">
-<span id="finn-analysis-verify-custom-nodes-module"></span><h2>finn.analysis.verify_custom_nodes module<a class="headerlink" href="#module-finn.analysis.verify_custom_nodes" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.analysis.verify_custom_nodes.verify_nodes">
-<code class="sig-prename descclassname">finn.analysis.verify_custom_nodes.</code><code class="sig-name descname">verify_nodes</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.verify_custom_nodes.verify_nodes" title="Permalink to this definition">¶</a></dt>
-<dd><p>Checks if custom ops in graph are correctly built, with all attributes
-and inputs. Returns {node op_type : info_messages}
-<a href="#id1"><span class="problematic" id="id2">*</span></a>info_messages is list of strings about the result of the verification</p>
-</dd></dl>
-
 </div>
 <div class="section" id="module-finn.analysis">
 <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.analysis" title="Permalink to this headline">¶</a></h2>
diff --git a/docs/finn/_build/html/source_code/finn.analysis.topology.html b/docs/finn/_build/html/source_code/finn.analysis.topology.html
new file mode 100644
index 000000000..f602bb8f2
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.analysis.topology.html
@@ -0,0 +1,240 @@
+
+
+<!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.analysis.topology module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.analysis.verify_custom_nodes module" href="finn.analysis.verify_custom_nodes.html" />
+    <link rel="prev" title="finn.analysis.fpgadataflow.res_estimation module" href="finn.analysis.fpgadataflow.res_estimation.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.analysis.html">finn.analysis package</a> &raquo;</li>
+        
+      <li>finn.analysis.topology module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.analysis.topology.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="module-finn.analysis.topology">
+<span id="finn-analysis-topology-module"></span><h1>finn.analysis.topology module<a class="headerlink" href="#module-finn.analysis.topology" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.analysis.topology.all_tensors_f32">
+<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">all_tensors_f32</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.all_tensors_f32" title="Permalink to this definition">¶</a></dt>
+<dd><p>Checks whether all tensors have a float32 dtype, extra quantization
+annotations notwithstanding.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.analysis.topology.get_per_tensor_fanouts">
+<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">get_per_tensor_fanouts</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.get_per_tensor_fanouts" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a dictionary of (tensor_name, tensor_fanout) for the model.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.analysis.topology.is_linear">
+<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">is_linear</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.is_linear" title="Permalink to this definition">¶</a></dt>
+<dd><p>Checks whether the given model graph is linear. This is done by looking
+at the fan-out of each tensor. All tensors have a fan-out &lt;= 1 in a linear
+graph. Returns {“is_linear”, Bool}</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.analysis.topology.node_inputs_in_expected_order">
+<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">node_inputs_in_expected_order</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.node_inputs_in_expected_order" title="Permalink to this definition">¶</a></dt>
+<dd><p>Verifies that the node inputs are ordered in the way that FINN expects
+them. When a node has a mixture of static (= constant, initialized) inputs
+and dynamic inputs, the dynamic input should come first, followed by the
+static one. Only verifiable for a small subset of op_types for now.</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.analysis.verify_custom_nodes.html" class="btn btn-neutral float-right" title="finn.analysis.verify_custom_nodes module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.analysis.fpgadataflow.res_estimation.html" class="btn btn-neutral float-left" title="finn.analysis.fpgadataflow.res_estimation module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.analysis.verify_custom_nodes.html b/docs/finn/_build/html/source_code/finn.analysis.verify_custom_nodes.html
new file mode 100644
index 000000000..5c7b82a0d
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.analysis.verify_custom_nodes.html
@@ -0,0 +1,218 @@
+
+
+<!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.analysis.verify_custom_nodes module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.core package" href="finn.core.html" />
+    <link rel="prev" title="finn.analysis.topology module" href="finn.analysis.topology.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.analysis.html">finn.analysis package</a> &raquo;</li>
+        
+      <li>finn.analysis.verify_custom_nodes module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.analysis.verify_custom_nodes.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="module-finn.analysis.verify_custom_nodes">
+<span id="finn-analysis-verify-custom-nodes-module"></span><h1>finn.analysis.verify_custom_nodes module<a class="headerlink" href="#module-finn.analysis.verify_custom_nodes" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.analysis.verify_custom_nodes.verify_nodes">
+<code class="sig-prename descclassname">finn.analysis.verify_custom_nodes.</code><code class="sig-name descname">verify_nodes</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.verify_custom_nodes.verify_nodes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Checks if custom ops in graph are correctly built, with all attributes
+and inputs. Returns {node op_type : info_messages}
+<a href="#id1"><span class="problematic" id="id2">*</span></a>info_messages is list of strings about the result of the verification</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.core.html" class="btn btn-neutral float-right" title="finn.core package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.analysis.topology.html" class="btn btn-neutral float-left" title="finn.analysis.topology module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.core.datatype.html b/docs/finn/_build/html/source_code/finn.core.datatype.html
new file mode 100644
index 000000000..2d35ed438
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.core.datatype.html
@@ -0,0 +1,354 @@
+
+
+<!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.core.datatype module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.core.execute_custom_node module" href="finn.core.execute_custom_node.html" />
+    <link rel="prev" title="finn.core package" href="finn.core.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.core.html">finn.core package</a> &raquo;</li>
+        
+      <li>finn.core.datatype module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.core.datatype.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="module-finn.core.datatype">
+<span id="finn-core-datatype-module"></span><h1>finn.core.datatype module<a class="headerlink" href="#module-finn.core.datatype" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.core.datatype.DataType">
+<em class="property">class </em><code class="sig-prename descclassname">finn.core.datatype.</code><code class="sig-name descname">DataType</code><a class="headerlink" href="#finn.core.datatype.DataType" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">enum.Enum</span></code></p>
+<p>An enumeration.</p>
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.BINARY">
+<code class="sig-name descname">BINARY</code><em class="property"> = 1</em><a class="headerlink" href="#finn.core.datatype.DataType.BINARY" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.BIPOLAR">
+<code class="sig-name descname">BIPOLAR</code><em class="property"> = 8</em><a class="headerlink" href="#finn.core.datatype.DataType.BIPOLAR" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.FLOAT32">
+<code class="sig-name descname">FLOAT32</code><em class="property"> = 16</em><a class="headerlink" href="#finn.core.datatype.DataType.FLOAT32" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.INT16">
+<code class="sig-name descname">INT16</code><em class="property"> = 14</em><a class="headerlink" href="#finn.core.datatype.DataType.INT16" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.INT2">
+<code class="sig-name descname">INT2</code><em class="property"> = 10</em><a class="headerlink" href="#finn.core.datatype.DataType.INT2" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.INT3">
+<code class="sig-name descname">INT3</code><em class="property"> = 11</em><a class="headerlink" href="#finn.core.datatype.DataType.INT3" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.INT32">
+<code class="sig-name descname">INT32</code><em class="property"> = 15</em><a class="headerlink" href="#finn.core.datatype.DataType.INT32" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.INT4">
+<code class="sig-name descname">INT4</code><em class="property"> = 12</em><a class="headerlink" href="#finn.core.datatype.DataType.INT4" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.INT8">
+<code class="sig-name descname">INT8</code><em class="property"> = 13</em><a class="headerlink" href="#finn.core.datatype.DataType.INT8" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.TERNARY">
+<code class="sig-name descname">TERNARY</code><em class="property"> = 9</em><a class="headerlink" href="#finn.core.datatype.DataType.TERNARY" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.UINT16">
+<code class="sig-name descname">UINT16</code><em class="property"> = 6</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT16" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.UINT2">
+<code class="sig-name descname">UINT2</code><em class="property"> = 2</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT2" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.UINT3">
+<code class="sig-name descname">UINT3</code><em class="property"> = 3</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT3" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.UINT32">
+<code class="sig-name descname">UINT32</code><em class="property"> = 7</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT32" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.UINT4">
+<code class="sig-name descname">UINT4</code><em class="property"> = 4</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT4" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="finn.core.datatype.DataType.UINT8">
+<code class="sig-name descname">UINT8</code><em class="property"> = 5</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT8" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.core.datatype.DataType.allowed">
+<code class="sig-name descname">allowed</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.allowed" title="Permalink to this definition">¶</a></dt>
+<dd><p>Check whether given value is allowed for this DataType.</p>
+<p>value (float32): value to be checked</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.datatype.DataType.bitwidth">
+<code class="sig-name descname">bitwidth</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.bitwidth" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the number of bits required for this DataType.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.datatype.DataType.get_hls_datatype_str">
+<code class="sig-name descname">get_hls_datatype_str</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_hls_datatype_str" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the corresponding Vivado HLS datatype name.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.datatype.DataType.get_num_possible_values">
+<code class="sig-name descname">get_num_possible_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_num_possible_values" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the number of possible values this DataType can take. Only
+implemented for integer types for now.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.datatype.DataType.get_smallest_possible">
+<code class="sig-name descname">get_smallest_possible</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_smallest_possible" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return smallest (fewest bits) possible DataType that can represent
+value. Prefers unsigned integers where possible.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.datatype.DataType.is_integer">
+<code class="sig-name descname">is_integer</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.is_integer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return whether this DataType represents integer values only.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.datatype.DataType.max">
+<code class="sig-name descname">max</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.max" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the largest possible value allowed by this DataType.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.datatype.DataType.min">
+<code class="sig-name descname">min</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.min" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the smallest possible value allowed by this DataType.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.datatype.DataType.signed">
+<code class="sig-name descname">signed</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.signed" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return whether this DataType can represent negative numbers.</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.core.execute_custom_node.html" class="btn btn-neutral float-right" title="finn.core.execute_custom_node module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.core.html" class="btn btn-neutral float-left" title="finn.core package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.core.execute_custom_node.html b/docs/finn/_build/html/source_code/finn.core.execute_custom_node.html
new file mode 100644
index 000000000..45ac552b1
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.core.execute_custom_node.html
@@ -0,0 +1,217 @@
+
+
+<!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.core.execute_custom_node module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.core.modelwrapper module" href="finn.core.modelwrapper.html" />
+    <link rel="prev" title="finn.core.datatype module" href="finn.core.datatype.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.core.html">finn.core package</a> &raquo;</li>
+        
+      <li>finn.core.execute_custom_node module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.core.execute_custom_node.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="module-finn.core.execute_custom_node">
+<span id="finn-core-execute-custom-node-module"></span><h1>finn.core.execute_custom_node module<a class="headerlink" href="#module-finn.core.execute_custom_node" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.core.execute_custom_node.execute_custom_node">
+<code class="sig-prename descclassname">finn.core.execute_custom_node.</code><code class="sig-name descname">execute_custom_node</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.execute_custom_node.execute_custom_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Call custom implementation to execute a single custom node.
+Input/output provided via context.</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.core.modelwrapper.html" class="btn btn-neutral float-right" title="finn.core.modelwrapper module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.core.datatype.html" class="btn btn-neutral float-left" title="finn.core.datatype module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.core.html b/docs/finn/_build/html/source_code/finn.core.html
index 98aff76d9..383d44576 100644
--- a/docs/finn/_build/html/source_code/finn.core.html
+++ b/docs/finn/_build/html/source_code/finn.core.html
@@ -35,8 +35,8 @@
   <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="finn.custom_op package" href="finn.custom_op.html" />
-    <link rel="prev" title="finn.analysis.fpgadataflow package" href="finn.analysis.fpgadataflow.html" /> 
+    <link rel="next" title="finn.core.datatype module" href="finn.core.datatype.html" />
+    <link rel="prev" title="finn.analysis.verify_custom_nodes module" href="finn.analysis.verify_custom_nodes.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -156,379 +156,16 @@
 <h1>finn.core package<a class="headerlink" href="#finn-core-package" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="finn.core.datatype.html">finn.core.datatype module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.core.execute_custom_node.html">finn.core.execute_custom_node module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.core.modelwrapper.html">finn.core.modelwrapper module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.core.onnx_exec.html">finn.core.onnx_exec module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.core.remote_exec.html">finn.core.remote_exec module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.core.rtlsim_exec.html">finn.core.rtlsim_exec module</a></li>
+</ul>
 </div>
-<div class="section" id="module-finn.core.datatype">
-<span id="finn-core-datatype-module"></span><h2>finn.core.datatype module<a class="headerlink" href="#module-finn.core.datatype" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.core.datatype.DataType">
-<em class="property">class </em><code class="sig-prename descclassname">finn.core.datatype.</code><code class="sig-name descname">DataType</code><a class="headerlink" href="#finn.core.datatype.DataType" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">enum.Enum</span></code></p>
-<p>An enumeration.</p>
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.BINARY">
-<code class="sig-name descname">BINARY</code><em class="property"> = 1</em><a class="headerlink" href="#finn.core.datatype.DataType.BINARY" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.BIPOLAR">
-<code class="sig-name descname">BIPOLAR</code><em class="property"> = 8</em><a class="headerlink" href="#finn.core.datatype.DataType.BIPOLAR" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.FLOAT32">
-<code class="sig-name descname">FLOAT32</code><em class="property"> = 16</em><a class="headerlink" href="#finn.core.datatype.DataType.FLOAT32" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.INT16">
-<code class="sig-name descname">INT16</code><em class="property"> = 14</em><a class="headerlink" href="#finn.core.datatype.DataType.INT16" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.INT2">
-<code class="sig-name descname">INT2</code><em class="property"> = 10</em><a class="headerlink" href="#finn.core.datatype.DataType.INT2" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.INT3">
-<code class="sig-name descname">INT3</code><em class="property"> = 11</em><a class="headerlink" href="#finn.core.datatype.DataType.INT3" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.INT32">
-<code class="sig-name descname">INT32</code><em class="property"> = 15</em><a class="headerlink" href="#finn.core.datatype.DataType.INT32" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.INT4">
-<code class="sig-name descname">INT4</code><em class="property"> = 12</em><a class="headerlink" href="#finn.core.datatype.DataType.INT4" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.INT8">
-<code class="sig-name descname">INT8</code><em class="property"> = 13</em><a class="headerlink" href="#finn.core.datatype.DataType.INT8" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.TERNARY">
-<code class="sig-name descname">TERNARY</code><em class="property"> = 9</em><a class="headerlink" href="#finn.core.datatype.DataType.TERNARY" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.UINT16">
-<code class="sig-name descname">UINT16</code><em class="property"> = 6</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT16" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.UINT2">
-<code class="sig-name descname">UINT2</code><em class="property"> = 2</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT2" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.UINT3">
-<code class="sig-name descname">UINT3</code><em class="property"> = 3</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT3" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.UINT32">
-<code class="sig-name descname">UINT32</code><em class="property"> = 7</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT32" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.UINT4">
-<code class="sig-name descname">UINT4</code><em class="property"> = 4</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT4" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="finn.core.datatype.DataType.UINT8">
-<code class="sig-name descname">UINT8</code><em class="property"> = 5</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT8" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.core.datatype.DataType.allowed">
-<code class="sig-name descname">allowed</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.allowed" title="Permalink to this definition">¶</a></dt>
-<dd><p>Check whether given value is allowed for this DataType.</p>
-<p>value (float32): value to be checked</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.datatype.DataType.bitwidth">
-<code class="sig-name descname">bitwidth</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.bitwidth" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns the number of bits required for this DataType.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.datatype.DataType.get_hls_datatype_str">
-<code class="sig-name descname">get_hls_datatype_str</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_hls_datatype_str" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the corresponding Vivado HLS datatype name.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.datatype.DataType.get_num_possible_values">
-<code class="sig-name descname">get_num_possible_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_num_possible_values" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the number of possible values this DataType can take. Only
-implemented for integer types for now.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.datatype.DataType.get_smallest_possible">
-<code class="sig-name descname">get_smallest_possible</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_smallest_possible" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return smallest (fewest bits) possible DataType that can represent
-value. Prefers unsigned integers where possible.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.datatype.DataType.is_integer">
-<code class="sig-name descname">is_integer</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.is_integer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return whether this DataType represents integer values only.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.datatype.DataType.max">
-<code class="sig-name descname">max</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.max" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns the largest possible value allowed by this DataType.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.datatype.DataType.min">
-<code class="sig-name descname">min</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.min" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns the smallest possible value allowed by this DataType.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.datatype.DataType.signed">
-<code class="sig-name descname">signed</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.signed" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return whether this DataType can represent negative numbers.</p>
-</dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.core.execute_custom_node">
-<span id="finn-core-execute-custom-node-module"></span><h2>finn.core.execute_custom_node module<a class="headerlink" href="#module-finn.core.execute_custom_node" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.core.execute_custom_node.execute_custom_node">
-<code class="sig-prename descclassname">finn.core.execute_custom_node.</code><code class="sig-name descname">execute_custom_node</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.execute_custom_node.execute_custom_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Call custom implementation to execute a single custom node.
-Input/output provided via context.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.core.modelwrapper">
-<span id="finn-core-modelwrapper-module"></span><h2>finn.core.modelwrapper module<a class="headerlink" href="#module-finn.core.modelwrapper" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.core.modelwrapper.ModelWrapper">
-<em class="property">class </em><code class="sig-prename descclassname">finn.core.modelwrapper.</code><code class="sig-name descname">ModelWrapper</code><span class="sig-paren">(</span><em class="sig-param">onnx_model_proto</em>, <em class="sig-param">make_deepcopy=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
-<p>A wrapper around ONNX ModelProto that exposes some useful utility
-functions for graph manipulation and exploration.</p>
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.analysis">
-<code class="sig-name descname">analysis</code><span class="sig-paren">(</span><em class="sig-param">analysis_fxn</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.analysis" title="Permalink to this definition">¶</a></dt>
-<dd><p>Run given anaylsis_fxn on this model and return resulting dict.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified">
-<code class="sig-name descname">check_all_tensor_shapes_specified</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified" title="Permalink to this definition">¶</a></dt>
-<dd><p>Checks whether all tensors have a specified shape (ValueInfo).
-The ONNX standard allows for intermediate activations to have no
-associated ValueInfo, but FINN expects this.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.check_compatibility">
-<code class="sig-name descname">check_compatibility</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.check_compatibility" title="Permalink to this definition">¶</a></dt>
-<dd><p>Checks this model for FINN compatibility:
-* no embedded subgraphs
-* all tensor shapes are specified, including activations
-* all constants are initializers</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.find_consumer">
-<code class="sig-name descname">find_consumer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.find_consumer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Find and return the node that consumes the tensor with given name.
-Currently only works for linear graphs.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.find_producer">
-<code class="sig-name descname">find_producer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.find_producer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Find and return the node that produces the tensor with given name.
-Currently only works for linear graphs.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.get_all_tensor_names">
-<code class="sig-name descname">get_all_tensor_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_all_tensor_names" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return a list of all (input, output and value_info) tensor names
-in the graph.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.get_initializer">
-<code class="sig-name descname">get_initializer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_initializer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Get the initializer value for tensor with given name, if any.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.get_metadata_prop">
-<code class="sig-name descname">get_metadata_prop</code><span class="sig-paren">(</span><em class="sig-param">key</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_metadata_prop" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns the value associated with metadata_prop with given key,
-or None otherwise.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_datatype">
-<code class="sig-name descname">get_tensor_datatype</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_datatype" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns the FINN DataType of tensor with given name.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_fanout">
-<code class="sig-name descname">get_tensor_fanout</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_fanout" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the number of nodes for which the tensor with given name is
-as input.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_shape">
-<code class="sig-name descname">get_tensor_shape</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_shape" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns the shape of tensor with given name, if it has ValueInfoProto.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo">
-<code class="sig-name descname">get_tensor_valueinfo</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns ValueInfoProto of tensor with given name, if it has one.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.graph">
-<em class="property">property </em><code class="sig-name descname">graph</code><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.graph" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.make_empty_exec_context">
-<code class="sig-name descname">make_empty_exec_context</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.make_empty_exec_context" title="Permalink to this definition">¶</a></dt>
-<dd><p>Creates an empty execution context for this model.
-The execution context is a dictionary of all tensors used for the
-inference computation. Any initializer values will be taken into
-account, all other tensors will be zero.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name">
-<code class="sig-name descname">make_new_valueinfo_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a name that can be used for a new value_info.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.model">
-<em class="property">property </em><code class="sig-name descname">model</code><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.model" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.rename_tensor">
-<code class="sig-name descname">rename_tensor</code><span class="sig-paren">(</span><em class="sig-param">old_name</em>, <em class="sig-param">new_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.rename_tensor" title="Permalink to this definition">¶</a></dt>
-<dd><p>Rename a tensor from old_name to new_name.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.save">
-<code class="sig-name descname">save</code><span class="sig-paren">(</span><em class="sig-param">filename</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.save" title="Permalink to this definition">¶</a></dt>
-<dd><p>Save the wrapper ONNX ModelProto into a file with given name.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.set_initializer">
-<code class="sig-name descname">set_initializer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">tensor_value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_initializer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set the initializer value for tensor with given name.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.set_metadata_prop">
-<code class="sig-name descname">set_metadata_prop</code><span class="sig-paren">(</span><em class="sig-param">key</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_metadata_prop" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.set_tensor_datatype">
-<code class="sig-name descname">set_tensor_datatype</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">datatype</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_tensor_datatype" title="Permalink to this definition">¶</a></dt>
-<dd><p>Sets the FINN DataType of tensor with given name.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.set_tensor_shape">
-<code class="sig-name descname">set_tensor_shape</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">tensor_shape</em>, <em class="sig-param">dtype=1</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_tensor_shape" title="Permalink to this definition">¶</a></dt>
-<dd><p>Assign shape in ValueInfoProto for tensor with given name.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.core.modelwrapper.ModelWrapper.transform">
-<code class="sig-name descname">transform</code><span class="sig-paren">(</span><em class="sig-param">transformation</em>, <em class="sig-param">make_deepcopy=True</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.transform" title="Permalink to this definition">¶</a></dt>
-<dd><p>Applies given Transformation repeatedly until no more changes can be made
-and returns a transformed ModelWrapper instance.
-If make_deepcopy is specified, operates on a new (deep)copy of model.</p>
-</dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.core.onnx_exec">
-<span id="finn-core-onnx-exec-module"></span><h2>finn.core.onnx_exec module<a class="headerlink" href="#module-finn.core.onnx_exec" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.core.onnx_exec.compare_execution">
-<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">compare_execution</code><span class="sig-paren">(</span><em class="sig-param">model_a</em>, <em class="sig-param">model_b</em>, <em class="sig-param">input_dict</em>, <em class="sig-param">compare_fxn=&lt;function &lt;lambda&gt;&gt;</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.compare_execution" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute two ONNX models and compare their outputs using given function.
-compare_fxn should take in two tensors and return a Boolean</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.core.onnx_exec.execute_node">
-<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute a single node by using onnxruntime, with custom function or
-if dataflow partition by using remote execution or rtlsim.
-Input/output provided via context.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.core.onnx_exec.execute_onnx">
-<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_onnx</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">input_dict</em>, <em class="sig-param">return_full_exec_context=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_onnx" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute given ONNX ModelWrapper with given named inputs.
-If return_full_exec_context is False, a dict of named outputs is returned
-as indicated by the model.graph.output.
-If return return_full_exec_context is True, the full set of tensors used by
-the execution (including inputs, weights, activations and final outputs)
-will be returned as a dict.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.core.onnx_exec.execute_onnx_and_make_model">
-<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_onnx_and_make_model</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">input_dict</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_onnx_and_make_model" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute given ONNX ModelWrapper with given named inputs and return a new
-ModelWrapper where an initializer is provided for each tensor as taken from
-the execution. This new model is useful for debugging, since it contains
-all the intermediate activation values.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.core.remote_exec">
-<span id="finn-core-remote-exec-module"></span><h2>finn.core.remote_exec module<a class="headerlink" href="#module-finn.core.remote_exec" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.core.remote_exec.remote_exec">
-<code class="sig-prename descclassname">finn.core.remote_exec.</code><code class="sig-name descname">remote_exec</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">execution_context</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.remote_exec.remote_exec" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</div>
-<div class="section" id="module-finn.core.rtlsim_exec">
-<span id="finn-core-rtlsim-exec-module"></span><h2>finn.core.rtlsim_exec module<a class="headerlink" href="#module-finn.core.rtlsim_exec" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.core.rtlsim_exec.rtlsim_exec">
-<code class="sig-prename descclassname">finn.core.rtlsim_exec.</code><code class="sig-name descname">rtlsim_exec</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">execution_context</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.rtlsim_exec.rtlsim_exec" title="Permalink to this definition">¶</a></dt>
-<dd><p>Use PyVerilator to execute given model with stitched IP.</p>
-</dd></dl>
-
 </div>
 <div class="section" id="module-finn.core">
 <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.core" title="Permalink to this headline">¶</a></h2>
@@ -543,10 +180,10 @@ all the intermediate activation values.</p>
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="finn.custom_op.html" class="btn btn-neutral float-right" title="finn.custom_op package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="finn.core.datatype.html" class="btn btn-neutral float-right" title="finn.core.datatype module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="finn.analysis.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.analysis.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="finn.analysis.verify_custom_nodes.html" class="btn btn-neutral float-left" title="finn.analysis.verify_custom_nodes module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/docs/finn/_build/html/source_code/finn.core.modelwrapper.html b/docs/finn/_build/html/source_code/finn.core.modelwrapper.html
new file mode 100644
index 000000000..a1db61212
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.core.modelwrapper.html
@@ -0,0 +1,368 @@
+
+
+<!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.core.modelwrapper module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.core.onnx_exec module" href="finn.core.onnx_exec.html" />
+    <link rel="prev" title="finn.core.execute_custom_node module" href="finn.core.execute_custom_node.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.core.html">finn.core package</a> &raquo;</li>
+        
+      <li>finn.core.modelwrapper module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.core.modelwrapper.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="module-finn.core.modelwrapper">
+<span id="finn-core-modelwrapper-module"></span><h1>finn.core.modelwrapper module<a class="headerlink" href="#module-finn.core.modelwrapper" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.core.modelwrapper.ModelWrapper">
+<em class="property">class </em><code class="sig-prename descclassname">finn.core.modelwrapper.</code><code class="sig-name descname">ModelWrapper</code><span class="sig-paren">(</span><em class="sig-param">onnx_model_proto</em>, <em class="sig-param">make_deepcopy=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
+<p>A wrapper around ONNX ModelProto that exposes some useful utility
+functions for graph manipulation and exploration.</p>
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.analysis">
+<code class="sig-name descname">analysis</code><span class="sig-paren">(</span><em class="sig-param">analysis_fxn</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.analysis" title="Permalink to this definition">¶</a></dt>
+<dd><p>Run given anaylsis_fxn on this model and return resulting dict.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified">
+<code class="sig-name descname">check_all_tensor_shapes_specified</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified" title="Permalink to this definition">¶</a></dt>
+<dd><p>Checks whether all tensors have a specified shape (ValueInfo).
+The ONNX standard allows for intermediate activations to have no
+associated ValueInfo, but FINN expects this.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.check_compatibility">
+<code class="sig-name descname">check_compatibility</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.check_compatibility" title="Permalink to this definition">¶</a></dt>
+<dd><p>Checks this model for FINN compatibility:
+* no embedded subgraphs
+* all tensor shapes are specified, including activations
+* all constants are initializers</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.find_consumer">
+<code class="sig-name descname">find_consumer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.find_consumer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Find and return the node that consumes the tensor with given name.
+Currently only works for linear graphs.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.find_producer">
+<code class="sig-name descname">find_producer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.find_producer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Find and return the node that produces the tensor with given name.
+Currently only works for linear graphs.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.get_all_tensor_names">
+<code class="sig-name descname">get_all_tensor_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_all_tensor_names" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a list of all (input, output and value_info) tensor names
+in the graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.get_initializer">
+<code class="sig-name descname">get_initializer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_initializer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get the initializer value for tensor with given name, if any.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.get_metadata_prop">
+<code class="sig-name descname">get_metadata_prop</code><span class="sig-paren">(</span><em class="sig-param">key</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_metadata_prop" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the value associated with metadata_prop with given key,
+or None otherwise.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_datatype">
+<code class="sig-name descname">get_tensor_datatype</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_datatype" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the FINN DataType of tensor with given name.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_fanout">
+<code class="sig-name descname">get_tensor_fanout</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_fanout" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the number of nodes for which the tensor with given name is
+as input.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_shape">
+<code class="sig-name descname">get_tensor_shape</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_shape" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the shape of tensor with given name, if it has ValueInfoProto.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo">
+<code class="sig-name descname">get_tensor_valueinfo</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns ValueInfoProto of tensor with given name, if it has one.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.graph">
+<em class="property">property </em><code class="sig-name descname">graph</code><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.graph" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.make_empty_exec_context">
+<code class="sig-name descname">make_empty_exec_context</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.make_empty_exec_context" title="Permalink to this definition">¶</a></dt>
+<dd><p>Creates an empty execution context for this model.
+The execution context is a dictionary of all tensors used for the
+inference computation. Any initializer values will be taken into
+account, all other tensors will be zero.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name">
+<code class="sig-name descname">make_new_valueinfo_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a name that can be used for a new value_info.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.model">
+<em class="property">property </em><code class="sig-name descname">model</code><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.model" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.rename_tensor">
+<code class="sig-name descname">rename_tensor</code><span class="sig-paren">(</span><em class="sig-param">old_name</em>, <em class="sig-param">new_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.rename_tensor" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rename a tensor from old_name to new_name.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.save">
+<code class="sig-name descname">save</code><span class="sig-paren">(</span><em class="sig-param">filename</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.save" title="Permalink to this definition">¶</a></dt>
+<dd><p>Save the wrapper ONNX ModelProto into a file with given name.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.set_initializer">
+<code class="sig-name descname">set_initializer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">tensor_value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_initializer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set the initializer value for tensor with given name.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.set_metadata_prop">
+<code class="sig-name descname">set_metadata_prop</code><span class="sig-paren">(</span><em class="sig-param">key</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_metadata_prop" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.set_tensor_datatype">
+<code class="sig-name descname">set_tensor_datatype</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">datatype</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_tensor_datatype" title="Permalink to this definition">¶</a></dt>
+<dd><p>Sets the FINN DataType of tensor with given name.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.set_tensor_shape">
+<code class="sig-name descname">set_tensor_shape</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">tensor_shape</em>, <em class="sig-param">dtype=1</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_tensor_shape" title="Permalink to this definition">¶</a></dt>
+<dd><p>Assign shape in ValueInfoProto for tensor with given name.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.core.modelwrapper.ModelWrapper.transform">
+<code class="sig-name descname">transform</code><span class="sig-paren">(</span><em class="sig-param">transformation</em>, <em class="sig-param">make_deepcopy=True</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.transform" title="Permalink to this definition">¶</a></dt>
+<dd><p>Applies given Transformation repeatedly until no more changes can be made
+and returns a transformed ModelWrapper instance.
+If make_deepcopy is specified, operates on a new (deep)copy of model.</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.core.onnx_exec.html" class="btn btn-neutral float-right" title="finn.core.onnx_exec module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.core.execute_custom_node.html" class="btn btn-neutral float-left" title="finn.core.execute_custom_node module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.core.onnx_exec.html b/docs/finn/_build/html/source_code/finn.core.onnx_exec.html
new file mode 100644
index 000000000..a6e8dd8d9
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.core.onnx_exec.html
@@ -0,0 +1,245 @@
+
+
+<!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.core.onnx_exec module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.core.remote_exec module" href="finn.core.remote_exec.html" />
+    <link rel="prev" title="finn.core.modelwrapper module" href="finn.core.modelwrapper.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.core.html">finn.core package</a> &raquo;</li>
+        
+      <li>finn.core.onnx_exec module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.core.onnx_exec.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="module-finn.core.onnx_exec">
+<span id="finn-core-onnx-exec-module"></span><h1>finn.core.onnx_exec module<a class="headerlink" href="#module-finn.core.onnx_exec" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.core.onnx_exec.compare_execution">
+<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">compare_execution</code><span class="sig-paren">(</span><em class="sig-param">model_a</em>, <em class="sig-param">model_b</em>, <em class="sig-param">input_dict</em>, <em class="sig-param">compare_fxn=&lt;function &lt;lambda&gt;&gt;</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.compare_execution" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute two ONNX models and compare their outputs using given function.
+compare_fxn should take in two tensors and return a Boolean</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.core.onnx_exec.execute_node">
+<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute a single node by using onnxruntime, with custom function or
+if dataflow partition by using remote execution or rtlsim.
+Input/output provided via context.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.core.onnx_exec.execute_onnx">
+<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_onnx</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">input_dict</em>, <em class="sig-param">return_full_exec_context=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_onnx" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute given ONNX ModelWrapper with given named inputs.
+If return_full_exec_context is False, a dict of named outputs is returned
+as indicated by the model.graph.output.
+If return return_full_exec_context is True, the full set of tensors used by
+the execution (including inputs, weights, activations and final outputs)
+will be returned as a dict.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.core.onnx_exec.execute_onnx_and_make_model">
+<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_onnx_and_make_model</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">input_dict</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_onnx_and_make_model" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute given ONNX ModelWrapper with given named inputs and return a new
+ModelWrapper where an initializer is provided for each tensor as taken from
+the execution. This new model is useful for debugging, since it contains
+all the intermediate activation values.</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.core.remote_exec.html" class="btn btn-neutral float-right" title="finn.core.remote_exec module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.core.modelwrapper.html" class="btn btn-neutral float-left" title="finn.core.modelwrapper module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.core.remote_exec.html b/docs/finn/_build/html/source_code/finn.core.remote_exec.html
new file mode 100644
index 000000000..771b6d0de
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.core.remote_exec.html
@@ -0,0 +1,215 @@
+
+
+<!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.core.remote_exec module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.core.rtlsim_exec module" href="finn.core.rtlsim_exec.html" />
+    <link rel="prev" title="finn.core.onnx_exec module" href="finn.core.onnx_exec.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.core.html">finn.core package</a> &raquo;</li>
+        
+      <li>finn.core.remote_exec module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.core.remote_exec.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="module-finn.core.remote_exec">
+<span id="finn-core-remote-exec-module"></span><h1>finn.core.remote_exec module<a class="headerlink" href="#module-finn.core.remote_exec" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.core.remote_exec.remote_exec">
+<code class="sig-prename descclassname">finn.core.remote_exec.</code><code class="sig-name descname">remote_exec</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">execution_context</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.remote_exec.remote_exec" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.core.rtlsim_exec.html" class="btn btn-neutral float-right" title="finn.core.rtlsim_exec module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.core.onnx_exec.html" class="btn btn-neutral float-left" title="finn.core.onnx_exec module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.core.rtlsim_exec.html b/docs/finn/_build/html/source_code/finn.core.rtlsim_exec.html
new file mode 100644
index 000000000..8d6ea24d4
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.core.rtlsim_exec.html
@@ -0,0 +1,216 @@
+
+
+<!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.core.rtlsim_exec module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.custom_op package" href="finn.custom_op.html" />
+    <link rel="prev" title="finn.core.remote_exec module" href="finn.core.remote_exec.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.core.html">finn.core package</a> &raquo;</li>
+        
+      <li>finn.core.rtlsim_exec module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.core.rtlsim_exec.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="module-finn.core.rtlsim_exec">
+<span id="finn-core-rtlsim-exec-module"></span><h1>finn.core.rtlsim_exec module<a class="headerlink" href="#module-finn.core.rtlsim_exec" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.core.rtlsim_exec.rtlsim_exec">
+<code class="sig-prename descclassname">finn.core.rtlsim_exec.</code><code class="sig-name descname">rtlsim_exec</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">execution_context</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.rtlsim_exec.rtlsim_exec" title="Permalink to this definition">¶</a></dt>
+<dd><p>Use PyVerilator to execute given model with stitched IP.</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.custom_op.html" class="btn btn-neutral float-right" title="finn.custom_op package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.core.remote_exec.html" class="btn btn-neutral float-left" title="finn.core.remote_exec module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html
new file mode 100644
index 000000000..742ecdeae
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html
@@ -0,0 +1,334 @@
+
+
+<!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.custom_op.fpgadataflow.convolutioninputgenerator module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.custom_op.fpgadataflow.streamingfclayer_batch module" href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html" />
+    <link rel="prev" title="finn.custom_op.fpgadataflow package" href="finn.custom_op.fpgadataflow.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.html">finn.custom_op package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.custom_op.fpgadataflow.convolutioninputgenerator module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.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="module-finn.custom_op.fpgadataflow.convolutioninputgenerator">
+<span id="finn-custom-op-fpgadataflow-convolutioninputgenerator-module"></span><h1>finn.custom_op.fpgadataflow.convolutioninputgenerator module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.convolutioninputgenerator" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator">
+<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.convolutioninputgenerator.</code><code class="sig-name descname">ConvolutionInputGenerator</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p>
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction">
+<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation">
+<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm">
+<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines">
+<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute">
+<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node">
+<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute this CustomOp instance, given the execution context and
+ONNX graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype">
+<code class="sig-name descname">get_input_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types">
+<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a dict of permitted attributes for node, where:
+returned_dict[attribute_name] = (dtype, require, default_value)
+- dtype indicates which member of the ONNX AttributeProto
+will be utilized
+- require indicates whether this attribute is required
+- default_val indicates the default value that will be used if the
+attribute is not set</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values">
+<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype">
+<code class="sig-name descname">get_output_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width">
+<code class="sig-name descname">get_stream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes">
+<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype">
+<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set the DataType annotations corresponding to the outputs of this
+node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation">
+<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op">
+<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
+for performing shape inference.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas">
+<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data">
+<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy">
+<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl">
+<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node">
+<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Verifies that all attributes the node needs are there and
+that particular attributes are set correctly. Also checks if
+the number of inputs is equal to the expected number</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow.streamingfclayer_batch module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.custom_op.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html
index f263769e1..caa62f142 100644
--- a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html
+++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html
@@ -35,7 +35,7 @@
   <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
-    <link rel="next" title="finn.transformation package" href="finn.transformation.html" />
+    <link rel="next" title="finn.custom_op.fpgadataflow.convolutioninputgenerator module" href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html" />
     <link rel="prev" title="finn.custom_op package" href="finn.custom_op.html" /> 
 </head>
 
@@ -158,556 +158,15 @@
 <h1>finn.custom_op.fpgadataflow package<a class="headerlink" href="#finn-custom-op-fpgadataflow-package" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.templates.html">finn.custom_op.fpgadataflow.templates module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.tlastmarker.html">finn.custom_op.fpgadataflow.tlastmarker module</a></li>
+</ul>
 </div>
-<div class="section" id="module-finn.custom_op.fpgadataflow.convolutioninputgenerator">
-<span id="finn-custom-op-fpgadataflow-convolutioninputgenerator-module"></span><h2>finn.custom_op.fpgadataflow.convolutioninputgenerator module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.convolutioninputgenerator" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator">
-<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.convolutioninputgenerator.</code><code class="sig-name descname">ConvolutionInputGenerator</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p>
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction">
-<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation">
-<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm">
-<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines">
-<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute">
-<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node">
-<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute this CustomOp instance, given the execution context and
-ONNX graph.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype">
-<code class="sig-name descname">get_input_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types">
-<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a dict of permitted attributes for node, where:
-returned_dict[attribute_name] = (dtype, require, default_value)
-- dtype indicates which member of the ONNX AttributeProto
-will be utilized
-- require indicates whether this attribute is required
-- default_val indicates the default value that will be used if the
-attribute is not set</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values">
-<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype">
-<code class="sig-name descname">get_output_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width">
-<code class="sig-name descname">get_stream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes">
-<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype">
-<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set the DataType annotations corresponding to the outputs of this
-node.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation">
-<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op">
-<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
-for performing shape inference.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas">
-<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data">
-<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy">
-<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl">
-<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node">
-<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Verifies that all attributes the node needs are there and
-that particular attributes are set correctly. Also checks if
-the number of inputs is equal to the expected number</p>
-</dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.custom_op.fpgadataflow.streamingfclayer_batch">
-<span id="finn-custom-op-fpgadataflow-streamingfclayer-batch-module"></span><h2>finn.custom_op.fpgadataflow.streamingfclayer_batch module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.streamingfclayer_batch" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch">
-<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.streamingfclayer_batch.</code><code class="sig-name descname">StreamingFCLayer_Batch</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p>
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction">
-<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation">
-<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation" title="Permalink to this definition">¶</a></dt>
-<dd><p>the calculations are based on:
-- FINN-R: An End-to-End Deep-Learning Framework for Fast
-Exploration of Quantized Neural Networks
-- M. Blott, T. B. Preusser, N. J. Fraser, G. Gambardella, K. O’Brien,
-Y. Umuroglu, M. Leeser and K. Vissers
-- 12. Sep 2018</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem">
-<code class="sig-name descname">calc_tmem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem">
-<code class="sig-name descname">calc_wmem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm">
-<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines">
-<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute">
-<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node">
-<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute this CustomOp instance, given the execution context and
-ONNX graph.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params">
-<code class="sig-name descname">generate_params</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape">
-<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape">
-<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor">
-<code class="sig-name descname">get_hls_compatible_threshold_tensor</code><span class="sig-paren">(</span><em class="sig-param">orig_thres_matrix</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor" title="Permalink to this definition">¶</a></dt>
-<dd><p>Convert the original numpy weight matrix orig_weight_matrix into
-a form suitable for passing to the hlslib call:
-* ensure MH % PE == 0
-* for bipolar weights&amp;inputs, ensure thresholds are positive
-* interleave rows between PEs
-* reshape into (PE, TMEM, n_thres_steps) and return</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor">
-<code class="sig-name descname">get_hls_compatible_weight_tensor</code><span class="sig-paren">(</span><em class="sig-param">orig_weight_matrix</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor" title="Permalink to this definition">¶</a></dt>
-<dd><p>Convert the original numpy weight matrix orig_weight_matrix into
-a form suitable for passing to the hlslib call:
-* ensure MH % PE == 0 and MW % SIMD == 0
-* for bipolar {-1,+1} weights, convert to binary {0, 1}
-* interleave rows between PEs
-* reshape into (1, PE, WMEM, SIMD) and return</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype">
-<code class="sig-name descname">get_input_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width">
-<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types">
-<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a dict of permitted attributes for node, where:
-returned_dict[attribute_name] = (dtype, require, default_value)
-- dtype indicates which member of the ONNX AttributeProto
-will be utilized
-- require indicates whether this attribute is required
-- default_val indicates the default value that will be used if the
-attribute is not set</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values">
-<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype">
-<code class="sig-name descname">get_output_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width">
-<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values">
-<code class="sig-name descname">get_template_param_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype">
-<code class="sig-name descname">get_weight_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes">
-<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype">
-<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set the DataType annotations corresponding to the outputs of this
-node.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation">
-<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation" title="Permalink to this definition">¶</a></dt>
-<dd><p>the calculations are based on:
-- FINN-R: An End-to-End Deep-Learning Framework for Fast
-Exploration of Quantized Neural Networks
-- M. Blott, T. B. Preusser, N. J. Fraser, G. Gambardella, K. O’Brien,
-Y. Umuroglu, M. Leeser and K. Vissers
-- 12. Sep 2018</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op">
-<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
-for performing shape inference.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas">
-<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data">
-<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy">
-<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl">
-<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node">
-<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Verifies that all attributes the node needs are there and
-that particular attributes are set correctly. Also checks if
-the number of inputs is equal to the expected number</p>
-</dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">
-<span id="finn-custom-op-fpgadataflow-streamingmaxpool-batch-module"></span><h2>finn.custom_op.fpgadataflow.streamingmaxpool_batch module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch">
-<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.streamingmaxpool_batch.</code><code class="sig-name descname">StreamingMaxPool_Batch</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p>
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction">
-<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation">
-<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm">
-<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines">
-<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute">
-<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types">
-<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a dict of permitted attributes for node, where:
-returned_dict[attribute_name] = (dtype, require, default_value)
-- dtype indicates which member of the ONNX AttributeProto
-will be utilized
-- require indicates whether this attribute is required
-- default_val indicates the default value that will be used if the
-attribute is not set</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values">
-<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes">
-<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype">
-<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set the DataType annotations corresponding to the outputs of this
-node.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation">
-<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op">
-<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
-for performing shape inference.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas">
-<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data">
-<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy">
-<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl">
-<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node">
-<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Verifies that all attributes the node needs are there and
-that particular attributes are set correctly. Also checks if
-the number of inputs is equal to the expected number</p>
-</dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.custom_op.fpgadataflow.templates">
-<span id="finn-custom-op-fpgadataflow-templates-module"></span><h2>finn.custom_op.fpgadataflow.templates module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.templates" title="Permalink to this headline">¶</a></h2>
-</div>
-<div class="section" id="module-finn.custom_op.fpgadataflow.tlastmarker">
-<span id="finn-custom-op-fpgadataflow-tlastmarker-module"></span><h2>finn.custom_op.fpgadataflow.tlastmarker module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.tlastmarker" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker">
-<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.tlastmarker.</code><code class="sig-name descname">TLastMarker</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p>
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction">
-<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm">
-<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines">
-<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute">
-<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node">
-<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute this CustomOp instance, given the execution context and
-ONNX graph.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape">
-<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape">
-<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width">
-<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types">
-<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a dict of permitted attributes for node, where:
-returned_dict[attribute_name] = (dtype, require, default_value)
-- dtype indicates which member of the ONNX AttributeProto
-will be utilized
-- require indicates whether this attribute is required
-- default_val indicates the default value that will be used if the
-attribute is not set</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values">
-<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width">
-<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes">
-<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype">
-<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set the DataType annotations corresponding to the outputs of this
-node.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op">
-<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
-for performing shape inference.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas">
-<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data">
-<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy">
-<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl">
-<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node">
-<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Verifies that all attributes the node needs are there and
-that particular attributes are set correctly. Also checks if
-the number of inputs is equal to the expected number</p>
-</dd></dl>
-
-</dd></dl>
-
 </div>
 <div class="section" id="module-finn.custom_op.fpgadataflow">
 <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.custom_op.fpgadataflow" title="Permalink to this headline">¶</a></h2>
@@ -887,7 +346,7 @@ attribute is not set</p>
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="finn.transformation.html" class="btn btn-neutral float-right" title="finn.transformation package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow.convolutioninputgenerator module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="finn.custom_op.html" class="btn btn-neutral float-left" title="finn.custom_op package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html
new file mode 100644
index 000000000..87ed52c67
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html
@@ -0,0 +1,408 @@
+
+
+<!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.custom_op.fpgadataflow.streamingfclayer_batch module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.custom_op.fpgadataflow.streamingmaxpool_batch module" href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html" />
+    <link rel="prev" title="finn.custom_op.fpgadataflow.convolutioninputgenerator module" href="finn.custom_op.fpgadataflow.convolutioninputgenerator.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.html">finn.custom_op package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.custom_op.fpgadataflow.streamingfclayer_batch module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.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="module-finn.custom_op.fpgadataflow.streamingfclayer_batch">
+<span id="finn-custom-op-fpgadataflow-streamingfclayer-batch-module"></span><h1>finn.custom_op.fpgadataflow.streamingfclayer_batch module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.streamingfclayer_batch" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch">
+<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.streamingfclayer_batch.</code><code class="sig-name descname">StreamingFCLayer_Batch</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p>
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction">
+<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation">
+<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation" title="Permalink to this definition">¶</a></dt>
+<dd><p>the calculations are based on:
+- FINN-R: An End-to-End Deep-Learning Framework for Fast
+Exploration of Quantized Neural Networks
+- M. Blott, T. B. Preusser, N. J. Fraser, G. Gambardella, K. O’Brien,
+Y. Umuroglu, M. Leeser and K. Vissers
+- 12. Sep 2018</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem">
+<code class="sig-name descname">calc_tmem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem">
+<code class="sig-name descname">calc_wmem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm">
+<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines">
+<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute">
+<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node">
+<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute this CustomOp instance, given the execution context and
+ONNX graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params">
+<code class="sig-name descname">generate_params</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape">
+<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape">
+<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor">
+<code class="sig-name descname">get_hls_compatible_threshold_tensor</code><span class="sig-paren">(</span><em class="sig-param">orig_thres_matrix</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor" title="Permalink to this definition">¶</a></dt>
+<dd><p>Convert the original numpy weight matrix orig_weight_matrix into
+a form suitable for passing to the hlslib call:
+* ensure MH % PE == 0
+* for bipolar weights&amp;inputs, ensure thresholds are positive
+* interleave rows between PEs
+* reshape into (PE, TMEM, n_thres_steps) and return</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor">
+<code class="sig-name descname">get_hls_compatible_weight_tensor</code><span class="sig-paren">(</span><em class="sig-param">orig_weight_matrix</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor" title="Permalink to this definition">¶</a></dt>
+<dd><p>Convert the original numpy weight matrix orig_weight_matrix into
+a form suitable for passing to the hlslib call:
+* ensure MH % PE == 0 and MW % SIMD == 0
+* for bipolar {-1,+1} weights, convert to binary {0, 1}
+* interleave rows between PEs
+* reshape into (1, PE, WMEM, SIMD) and return</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype">
+<code class="sig-name descname">get_input_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width">
+<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types">
+<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a dict of permitted attributes for node, where:
+returned_dict[attribute_name] = (dtype, require, default_value)
+- dtype indicates which member of the ONNX AttributeProto
+will be utilized
+- require indicates whether this attribute is required
+- default_val indicates the default value that will be used if the
+attribute is not set</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values">
+<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype">
+<code class="sig-name descname">get_output_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width">
+<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values">
+<code class="sig-name descname">get_template_param_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype">
+<code class="sig-name descname">get_weight_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes">
+<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype">
+<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set the DataType annotations corresponding to the outputs of this
+node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation">
+<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation" title="Permalink to this definition">¶</a></dt>
+<dd><p>the calculations are based on:
+- FINN-R: An End-to-End Deep-Learning Framework for Fast
+Exploration of Quantized Neural Networks
+- M. Blott, T. B. Preusser, N. J. Fraser, G. Gambardella, K. O’Brien,
+Y. Umuroglu, M. Leeser and K. Vissers
+- 12. Sep 2018</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op">
+<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
+for performing shape inference.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas">
+<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data">
+<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy">
+<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl">
+<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node">
+<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Verifies that all attributes the node needs are there and
+that particular attributes are set correctly. Also checks if
+the number of inputs is equal to the expected number</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow.streamingmaxpool_batch module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow.convolutioninputgenerator module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html
new file mode 100644
index 000000000..1f0df0549
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html
@@ -0,0 +1,312 @@
+
+
+<!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.custom_op.fpgadataflow.streamingmaxpool_batch module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.custom_op.fpgadataflow.templates module" href="finn.custom_op.fpgadataflow.templates.html" />
+    <link rel="prev" title="finn.custom_op.fpgadataflow.streamingfclayer_batch module" href="finn.custom_op.fpgadataflow.streamingfclayer_batch.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.html">finn.custom_op package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.custom_op.fpgadataflow.streamingmaxpool_batch module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.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="module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">
+<span id="finn-custom-op-fpgadataflow-streamingmaxpool-batch-module"></span><h1>finn.custom_op.fpgadataflow.streamingmaxpool_batch module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch">
+<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.streamingmaxpool_batch.</code><code class="sig-name descname">StreamingMaxPool_Batch</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p>
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction">
+<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation">
+<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm">
+<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines">
+<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute">
+<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types">
+<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a dict of permitted attributes for node, where:
+returned_dict[attribute_name] = (dtype, require, default_value)
+- dtype indicates which member of the ONNX AttributeProto
+will be utilized
+- require indicates whether this attribute is required
+- default_val indicates the default value that will be used if the
+attribute is not set</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values">
+<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes">
+<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype">
+<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set the DataType annotations corresponding to the outputs of this
+node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation">
+<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op">
+<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
+for performing shape inference.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas">
+<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data">
+<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy">
+<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl">
+<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node">
+<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Verifies that all attributes the node needs are there and
+that particular attributes are set correctly. Also checks if
+the number of inputs is equal to the expected number</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.custom_op.fpgadataflow.templates.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow.templates module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow.streamingfclayer_batch module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.templates.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.templates.html
new file mode 100644
index 000000000..6a18a9d3b
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.templates.html
@@ -0,0 +1,212 @@
+
+
+<!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.custom_op.fpgadataflow.templates module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.custom_op.fpgadataflow.tlastmarker module" href="finn.custom_op.fpgadataflow.tlastmarker.html" />
+    <link rel="prev" title="finn.custom_op.fpgadataflow.streamingmaxpool_batch module" href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.html">finn.custom_op package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.custom_op.fpgadataflow.templates module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.custom_op.fpgadataflow.templates.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="module-finn.custom_op.fpgadataflow.templates">
+<span id="finn-custom-op-fpgadataflow-templates-module"></span><h1>finn.custom_op.fpgadataflow.templates module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.templates" title="Permalink to this headline">¶</a></h1>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.custom_op.fpgadataflow.tlastmarker.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow.tlastmarker module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow.streamingmaxpool_batch module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.tlastmarker.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.tlastmarker.html
new file mode 100644
index 000000000..bbee90cff
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.tlastmarker.html
@@ -0,0 +1,329 @@
+
+
+<!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.custom_op.fpgadataflow.tlastmarker module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.custom_op.multithreshold module" href="finn.custom_op.multithreshold.html" />
+    <link rel="prev" title="finn.custom_op.fpgadataflow.templates module" href="finn.custom_op.fpgadataflow.templates.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.html">finn.custom_op package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.custom_op.fpgadataflow.tlastmarker module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.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="module-finn.custom_op.fpgadataflow.tlastmarker">
+<span id="finn-custom-op-fpgadataflow-tlastmarker-module"></span><h1>finn.custom_op.fpgadataflow.tlastmarker module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.tlastmarker" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker">
+<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.tlastmarker.</code><code class="sig-name descname">TLastMarker</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p>
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction">
+<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm">
+<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines">
+<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute">
+<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node">
+<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute this CustomOp instance, given the execution context and
+ONNX graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape">
+<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape">
+<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width">
+<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types">
+<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a dict of permitted attributes for node, where:
+returned_dict[attribute_name] = (dtype, require, default_value)
+- dtype indicates which member of the ONNX AttributeProto
+will be utilized
+- require indicates whether this attribute is required
+- default_val indicates the default value that will be used if the
+attribute is not set</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values">
+<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width">
+<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes">
+<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype">
+<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set the DataType annotations corresponding to the outputs of this
+node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op">
+<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
+for performing shape inference.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas">
+<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data">
+<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy">
+<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl">
+<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node">
+<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Verifies that all attributes the node needs are there and
+that particular attributes are set correctly. Also checks if
+the number of inputs is equal to the expected number</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.custom_op.multithreshold.html" class="btn btn-neutral float-right" title="finn.custom_op.multithreshold module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.custom_op.fpgadataflow.templates.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow.templates module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.html b/docs/finn/_build/html/source_code/finn.custom_op.html
index 59373404b..867145184 100644
--- a/docs/finn/_build/html/source_code/finn.custom_op.html
+++ b/docs/finn/_build/html/source_code/finn.custom_op.html
@@ -36,7 +36,7 @@
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
     <link rel="next" title="finn.custom_op.fpgadataflow package" href="finn.custom_op.fpgadataflow.html" />
-    <link rel="prev" title="finn.core package" href="finn.core.html" /> 
+    <link rel="prev" title="finn.core.rtlsim_exec module" href="finn.core.rtlsim_exec.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -159,12 +159,14 @@
 <div class="toctree-wrapper compound">
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#submodules">Submodules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.templates.html">finn.custom_op.fpgadataflow.templates module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.tlastmarker.html">finn.custom_op.fpgadataflow.tlastmarker module</a></li>
+</ul>
+</li>
 <li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
@@ -173,180 +175,14 @@
 </div>
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.multithreshold.html">finn.custom_op.multithreshold module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.registry.html">finn.custom_op.registry module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.streamingdataflowpartition.html">finn.custom_op.streamingdataflowpartition module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.xnorpopcount.html">finn.custom_op.xnorpopcount module</a></li>
+</ul>
 </div>
-<div class="section" id="module-finn.custom_op.multithreshold">
-<span id="finn-custom-op-multithreshold-module"></span><h2>finn.custom_op.multithreshold module<a class="headerlink" href="#module-finn.custom_op.multithreshold" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.custom_op.multithreshold.MultiThreshold">
-<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">MultiThreshold</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p>
-<dl class="method">
-<dt id="finn.custom_op.multithreshold.MultiThreshold.execute_node">
-<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.execute_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute this CustomOp instance, given the execution context and
-ONNX graph.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types">
-<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a dict of permitted attributes for node, where:
-returned_dict[attribute_name] = (dtype, require, default_value)
-- dtype indicates which member of the ONNX AttributeProto
-will be utilized
-- require indicates whether this attribute is required
-- default_val indicates the default value that will be used if the
-attribute is not set</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype">
-<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set the DataType annotations corresponding to the outputs of this
-node.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op">
-<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
-for performing shape inference.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.multithreshold.MultiThreshold.verify_node">
-<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.verify_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Verifies that all attributes the node needs are there and
-that particular attributes are set correctly. Also checks if
-the number of inputs is equal to the expected number</p>
-</dd></dl>
-
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.custom_op.multithreshold.compare">
-<code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">compare</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">y</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.compare" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="function">
-<dt id="finn.custom_op.multithreshold.multithreshold">
-<code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">multithreshold</code><span class="sig-paren">(</span><em class="sig-param">v</em>, <em class="sig-param">thresholds</em>, <em class="sig-param">out_scale=None</em>, <em class="sig-param">out_bias=None</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.multithreshold" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</div>
-<div class="section" id="module-finn.custom_op.registry">
-<span id="finn-custom-op-registry-module"></span><h2>finn.custom_op.registry module<a class="headerlink" href="#module-finn.custom_op.registry" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.custom_op.registry.getCustomOp">
-<code class="sig-prename descclassname">finn.custom_op.registry.</code><code class="sig-name descname">getCustomOp</code><span class="sig-paren">(</span><em class="sig-param">node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.registry.getCustomOp" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return a FINN CustomOp instance for the given ONNX node, if it exists.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.custom_op.streamingdataflowpartition">
-<span id="finn-custom-op-streamingdataflowpartition-module"></span><h2>finn.custom_op.streamingdataflowpartition module<a class="headerlink" href="#module-finn.custom_op.streamingdataflowpartition" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition">
-<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.streamingdataflowpartition.</code><code class="sig-name descname">StreamingDataflowPartition</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p>
-<dl class="method">
-<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node">
-<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute this CustomOp instance, given the execution context and
-ONNX graph.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types">
-<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a dict of permitted attributes for node, where:
-returned_dict[attribute_name] = (dtype, require, default_value)
-- dtype indicates which member of the ONNX AttributeProto
-will be utilized
-- require indicates whether this attribute is required
-- default_val indicates the default value that will be used if the
-attribute is not set</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype">
-<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set the DataType annotations corresponding to the outputs of this
-node.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op">
-<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
-for performing shape inference.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node">
-<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Verifies that all attributes the node needs are there and
-that particular attributes are set correctly. Also checks if
-the number of inputs is equal to the expected number</p>
-</dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.custom_op.xnorpopcount">
-<span id="finn-custom-op-xnorpopcount-module"></span><h2>finn.custom_op.xnorpopcount module<a class="headerlink" href="#module-finn.custom_op.xnorpopcount" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul">
-<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.xnorpopcount.</code><code class="sig-name descname">XnorPopcountMatMul</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p>
-<dl class="method">
-<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node">
-<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute this CustomOp instance, given the execution context and
-ONNX graph.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types">
-<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a dict of permitted attributes for node, where:
-returned_dict[attribute_name] = (dtype, require, default_value)
-- dtype indicates which member of the ONNX AttributeProto
-will be utilized
-- require indicates whether this attribute is required
-- default_val indicates the default value that will be used if the
-attribute is not set</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype">
-<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set the DataType annotations corresponding to the outputs of this
-node.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op">
-<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
-for performing shape inference.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node">
-<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Verifies that all attributes the node needs are there and
-that particular attributes are set correctly. Also checks if
-the number of inputs is equal to the expected number</p>
-</dd></dl>
-
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.custom_op.xnorpopcount.xnorpopcountmatmul">
-<code class="sig-prename descclassname">finn.custom_op.xnorpopcount.</code><code class="sig-name descname">xnorpopcountmatmul</code><span class="sig-paren">(</span><em class="sig-param">inp0</em>, <em class="sig-param">inp1</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.xnorpopcountmatmul" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
 </div>
 <div class="section" id="module-finn.custom_op">
 <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.custom_op" title="Permalink to this headline">¶</a></h2>
@@ -426,7 +262,7 @@ the number of inputs is equal to the expected number</p>
         <a href="finn.custom_op.fpgadataflow.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="finn.core.html" class="btn btn-neutral float-left" title="finn.core package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="finn.core.rtlsim_exec.html" class="btn btn-neutral float-left" title="finn.core.rtlsim_exec module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.multithreshold.html b/docs/finn/_build/html/source_code/finn.custom_op.multithreshold.html
new file mode 100644
index 000000000..0ba6f08e3
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.custom_op.multithreshold.html
@@ -0,0 +1,267 @@
+
+
+<!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.custom_op.multithreshold module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.custom_op.registry module" href="finn.custom_op.registry.html" />
+    <link rel="prev" title="finn.custom_op.fpgadataflow.tlastmarker module" href="finn.custom_op.fpgadataflow.tlastmarker.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.html">finn.custom_op package</a> &raquo;</li>
+        
+      <li>finn.custom_op.multithreshold module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.custom_op.multithreshold.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="module-finn.custom_op.multithreshold">
+<span id="finn-custom-op-multithreshold-module"></span><h1>finn.custom_op.multithreshold module<a class="headerlink" href="#module-finn.custom_op.multithreshold" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.custom_op.multithreshold.MultiThreshold">
+<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">MultiThreshold</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.custom_op.html#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p>
+<dl class="method">
+<dt id="finn.custom_op.multithreshold.MultiThreshold.execute_node">
+<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.execute_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute this CustomOp instance, given the execution context and
+ONNX graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types">
+<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a dict of permitted attributes for node, where:
+returned_dict[attribute_name] = (dtype, require, default_value)
+- dtype indicates which member of the ONNX AttributeProto
+will be utilized
+- require indicates whether this attribute is required
+- default_val indicates the default value that will be used if the
+attribute is not set</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype">
+<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set the DataType annotations corresponding to the outputs of this
+node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op">
+<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
+for performing shape inference.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.multithreshold.MultiThreshold.verify_node">
+<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.verify_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Verifies that all attributes the node needs are there and
+that particular attributes are set correctly. Also checks if
+the number of inputs is equal to the expected number</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.custom_op.multithreshold.compare">
+<code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">compare</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">y</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.compare" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="finn.custom_op.multithreshold.multithreshold">
+<code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">multithreshold</code><span class="sig-paren">(</span><em class="sig-param">v</em>, <em class="sig-param">thresholds</em>, <em class="sig-param">out_scale=None</em>, <em class="sig-param">out_bias=None</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.multithreshold" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.custom_op.registry.html" class="btn btn-neutral float-right" title="finn.custom_op.registry module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.custom_op.fpgadataflow.tlastmarker.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow.tlastmarker module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.registry.html b/docs/finn/_build/html/source_code/finn.custom_op.registry.html
new file mode 100644
index 000000000..257e4a9d8
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.custom_op.registry.html
@@ -0,0 +1,216 @@
+
+
+<!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.custom_op.registry module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.custom_op.streamingdataflowpartition module" href="finn.custom_op.streamingdataflowpartition.html" />
+    <link rel="prev" title="finn.custom_op.multithreshold module" href="finn.custom_op.multithreshold.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.html">finn.custom_op package</a> &raquo;</li>
+        
+      <li>finn.custom_op.registry module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.custom_op.registry.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="module-finn.custom_op.registry">
+<span id="finn-custom-op-registry-module"></span><h1>finn.custom_op.registry module<a class="headerlink" href="#module-finn.custom_op.registry" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.custom_op.registry.getCustomOp">
+<code class="sig-prename descclassname">finn.custom_op.registry.</code><code class="sig-name descname">getCustomOp</code><span class="sig-paren">(</span><em class="sig-param">node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.registry.getCustomOp" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a FINN CustomOp instance for the given ONNX node, if it exists.</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.custom_op.streamingdataflowpartition.html" class="btn btn-neutral float-right" title="finn.custom_op.streamingdataflowpartition module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.custom_op.multithreshold.html" class="btn btn-neutral float-left" title="finn.custom_op.multithreshold module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.streamingdataflowpartition.html b/docs/finn/_build/html/source_code/finn.custom_op.streamingdataflowpartition.html
new file mode 100644
index 000000000..82daf99f8
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.custom_op.streamingdataflowpartition.html
@@ -0,0 +1,257 @@
+
+
+<!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.custom_op.streamingdataflowpartition module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.custom_op.xnorpopcount module" href="finn.custom_op.xnorpopcount.html" />
+    <link rel="prev" title="finn.custom_op.registry module" href="finn.custom_op.registry.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.html">finn.custom_op package</a> &raquo;</li>
+        
+      <li>finn.custom_op.streamingdataflowpartition module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.custom_op.streamingdataflowpartition.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="module-finn.custom_op.streamingdataflowpartition">
+<span id="finn-custom-op-streamingdataflowpartition-module"></span><h1>finn.custom_op.streamingdataflowpartition module<a class="headerlink" href="#module-finn.custom_op.streamingdataflowpartition" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition">
+<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.streamingdataflowpartition.</code><code class="sig-name descname">StreamingDataflowPartition</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.custom_op.html#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p>
+<dl class="method">
+<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node">
+<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute this CustomOp instance, given the execution context and
+ONNX graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types">
+<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a dict of permitted attributes for node, where:
+returned_dict[attribute_name] = (dtype, require, default_value)
+- dtype indicates which member of the ONNX AttributeProto
+will be utilized
+- require indicates whether this attribute is required
+- default_val indicates the default value that will be used if the
+attribute is not set</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype">
+<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set the DataType annotations corresponding to the outputs of this
+node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op">
+<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
+for performing shape inference.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node">
+<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Verifies that all attributes the node needs are there and
+that particular attributes are set correctly. Also checks if
+the number of inputs is equal to the expected number</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.custom_op.xnorpopcount.html" class="btn btn-neutral float-right" title="finn.custom_op.xnorpopcount module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.custom_op.registry.html" class="btn btn-neutral float-left" title="finn.custom_op.registry module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.custom_op.xnorpopcount.html b/docs/finn/_build/html/source_code/finn.custom_op.xnorpopcount.html
new file mode 100644
index 000000000..e4e92ce4b
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.custom_op.xnorpopcount.html
@@ -0,0 +1,262 @@
+
+
+<!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.custom_op.xnorpopcount module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation package" href="finn.transformation.html" />
+    <link rel="prev" title="finn.custom_op.streamingdataflowpartition module" href="finn.custom_op.streamingdataflowpartition.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.custom_op.html">finn.custom_op package</a> &raquo;</li>
+        
+      <li>finn.custom_op.xnorpopcount module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.custom_op.xnorpopcount.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="module-finn.custom_op.xnorpopcount">
+<span id="finn-custom-op-xnorpopcount-module"></span><h1>finn.custom_op.xnorpopcount module<a class="headerlink" href="#module-finn.custom_op.xnorpopcount" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul">
+<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.xnorpopcount.</code><code class="sig-name descname">XnorPopcountMatMul</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.custom_op.html#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p>
+<dl class="method">
+<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node">
+<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute this CustomOp instance, given the execution context and
+ONNX graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types">
+<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a dict of permitted attributes for node, where:
+returned_dict[attribute_name] = (dtype, require, default_value)
+- dtype indicates which member of the ONNX AttributeProto
+will be utilized
+- require indicates whether this attribute is required
+- default_val indicates the default value that will be used if the
+attribute is not set</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype">
+<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set the DataType annotations corresponding to the outputs of this
+node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op">
+<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a standard ONNX op which is compatible with this CustomOp
+for performing shape inference.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node">
+<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Verifies that all attributes the node needs are there and
+that particular attributes are set correctly. Also checks if
+the number of inputs is equal to the expected number</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.custom_op.xnorpopcount.xnorpopcountmatmul">
+<code class="sig-prename descclassname">finn.custom_op.xnorpopcount.</code><code class="sig-name descname">xnorpopcountmatmul</code><span class="sig-paren">(</span><em class="sig-param">inp0</em>, <em class="sig-param">inp1</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.xnorpopcountmatmul" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.html" class="btn btn-neutral float-right" title="finn.transformation package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.custom_op.streamingdataflowpartition.html" class="btn btn-neutral float-left" title="finn.custom_op.streamingdataflowpartition module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.html b/docs/finn/_build/html/source_code/finn.html
index 51b1f6b6f..2f11a60b2 100644
--- a/docs/finn/_build/html/source_code/finn.html
+++ b/docs/finn/_build/html/source_code/finn.html
@@ -159,17 +159,21 @@
 <li class="toctree-l1"><a class="reference internal" href="finn.analysis.html">finn.analysis package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="finn.analysis.fpgadataflow.html">finn.analysis.fpgadataflow package</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="finn.analysis.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="finn.analysis.fpgadataflow.html#submodules">Submodules</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.analysis.fpgadataflow.res_estimation.html">finn.analysis.fpgadataflow.res_estimation module</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#module-finn.analysis.topology">finn.analysis.topology module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#submodules">Submodules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="finn.analysis.topology.html">finn.analysis.topology module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.analysis.verify_custom_nodes.html">finn.analysis.verify_custom_nodes module</a></li>
+</ul>
+</li>
 <li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#module-finn.analysis">Module contents</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="finn.analysis.html#how-to-write-an-analysis-pass-for-finn">How to write an analysis pass for FINN</a></li>
 </ul>
@@ -177,79 +181,91 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="finn.core.html">finn.core package</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="finn.core.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.datatype">finn.core.datatype module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.execute_custom_node">finn.core.execute_custom_node module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.modelwrapper">finn.core.modelwrapper module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.onnx_exec">finn.core.onnx_exec module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.remote_exec">finn.core.remote_exec module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.rtlsim_exec">finn.core.rtlsim_exec module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finn.core.html#submodules">Submodules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="finn.core.datatype.html">finn.core.datatype module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.core.execute_custom_node.html">finn.core.execute_custom_node module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.core.modelwrapper.html">finn.core.modelwrapper module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.core.onnx_exec.html">finn.core.onnx_exec module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.core.remote_exec.html">finn.core.remote_exec module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.core.rtlsim_exec.html">finn.core.rtlsim_exec module</a></li>
+</ul>
+</li>
 <li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="finn.custom_op.html">finn.custom_op package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#submodules">Submodules</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.custom_op.fpgadataflow.templates.html">finn.custom_op.fpgadataflow.templates module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.custom_op.fpgadataflow.tlastmarker.html">finn.custom_op.fpgadataflow.tlastmarker module</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.registry">finn.custom_op.registry module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#submodules">Submodules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.multithreshold.html">finn.custom_op.multithreshold module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.registry.html">finn.custom_op.registry module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.streamingdataflowpartition.html">finn.custom_op.streamingdataflowpartition module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.xnorpopcount.html">finn.custom_op.xnorpopcount module</a></li>
+</ul>
+</li>
 <li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="finn.transformation.html">finn.transformation package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.set_exec_mode">finn.transformation.fpgadataflow.set_exec_mode module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#submodules">Submodules</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.cleanup.html">finn.transformation.fpgadataflow.cleanup module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipgen.html">finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipstitch.html">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_npysim.html">finn.transformation.fpgadataflow.codegen_npysim module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.compile.html">finn.transformation.fpgadataflow.compile module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.convert_to_hls_layers.html">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.create_dataflow_partition.html">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.hlssynth_ipgen.html">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.insert_tlastmarker.html">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.make_deployment.html">finn.transformation.fpgadataflow.make_deployment module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_driver.html">finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_proj.html">finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.set_exec_mode.html">finn.transformation.fpgadataflow.set_exec_mode module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.synth_pynq_proj.html">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.templates.html">finn.transformation.fpgadataflow.templates module</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.html">finn.transformation.streamline package</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#submodules">Submodules</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.streamline.absorb.html">finn.transformation.streamline.absorb module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.streamline.collapse_repeated.html">finn.transformation.streamline.collapse_repeated module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.streamline.reorder.html">finn.transformation.streamline.reorder module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.streamline.round_thresholds.html">finn.transformation.streamline.round_thresholds module</a></li>
+<li class="toctree-l5"><a class="reference internal" href="finn.transformation.streamline.sign_to_thres.html">finn.transformation.streamline.sign_to_thres module</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.fold_constants">finn.transformation.fold_constants module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.general">finn.transformation.general module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#submodules">Submodules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.batchnorm_to_affine.html">finn.transformation.batchnorm_to_affine module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.bipolar_to_xnor.html">finn.transformation.bipolar_to_xnor module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fold_constants.html">finn.transformation.fold_constants module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.general.html">finn.transformation.general module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.infer_datatypes.html">finn.transformation.infer_datatypes module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.infer_shapes.html">finn.transformation.infer_shapes module</a></li>
+</ul>
+</li>
 <li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation">Module contents</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="finn.transformation.html#guide-to-writing-finn-transformations">Guide to writing FINN transformations</a></li>
 </ul>
@@ -257,12 +273,14 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="finn.util.html">finn.util package</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="finn.util.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util.basic">finn.util.basic module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util.data_packing">finn.util.data_packing module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util.fpgadataflow">finn.util.fpgadataflow module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util.onnx">finn.util.onnx module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util.test">finn.util.test module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finn.util.html#submodules">Submodules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="finn.util.basic.html">finn.util.basic module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.util.data_packing.html">finn.util.data_packing module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.util.fpgadataflow.html">finn.util.fpgadataflow module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.util.onnx.html">finn.util.onnx module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.util.test.html">finn.util.test module</a></li>
+</ul>
+</li>
 <li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util">Module contents</a></li>
 </ul>
 </li>
diff --git a/docs/finn/_build/html/source_code/finn.transformation.batchnorm_to_affine.html b/docs/finn/_build/html/source_code/finn.transformation.batchnorm_to_affine.html
new file mode 100644
index 000000000..956339611
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.batchnorm_to_affine.html
@@ -0,0 +1,222 @@
+
+
+<!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.transformation.batchnorm_to_affine module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.bipolar_to_xnor module" href="finn.transformation.bipolar_to_xnor.html" />
+    <link rel="prev" title="finn.transformation.streamline.sign_to_thres module" href="finn.transformation.streamline.sign_to_thres.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+      <li>finn.transformation.batchnorm_to_affine module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.batchnorm_to_affine.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="module-finn.transformation.batchnorm_to_affine">
+<span id="finn-transformation-batchnorm-to-affine-module"></span><h1>finn.transformation.batchnorm_to_affine module<a class="headerlink" href="#module-finn.transformation.batchnorm_to_affine" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.batchnorm_to_affine.BatchNormToAffine">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.batchnorm_to_affine.</code><code class="sig-name descname">BatchNormToAffine</code><a class="headerlink" href="#finn.transformation.batchnorm_to_affine.BatchNormToAffine" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Replaces any test-time BatchNorm layers with Mul-Add layers.</p>
+<dl class="method">
+<dt id="finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.bipolar_to_xnor.html" class="btn btn-neutral float-right" title="finn.transformation.bipolar_to_xnor module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.streamline.sign_to_thres.html" class="btn btn-neutral float-left" title="finn.transformation.streamline.sign_to_thres module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.bipolar_to_xnor.html b/docs/finn/_build/html/source_code/finn.transformation.bipolar_to_xnor.html
new file mode 100644
index 000000000..60ba89ae7
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.bipolar_to_xnor.html
@@ -0,0 +1,223 @@
+
+
+<!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.transformation.bipolar_to_xnor module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fold_constants module" href="finn.transformation.fold_constants.html" />
+    <link rel="prev" title="finn.transformation.batchnorm_to_affine module" href="finn.transformation.batchnorm_to_affine.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+      <li>finn.transformation.bipolar_to_xnor module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.bipolar_to_xnor.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="module-finn.transformation.bipolar_to_xnor">
+<span id="finn-transformation-bipolar-to-xnor-module"></span><h1>finn.transformation.bipolar_to_xnor module<a class="headerlink" href="#module-finn.transformation.bipolar_to_xnor" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.bipolar_to_xnor.</code><code class="sig-name descname">ConvertBipolarMatMulToXnorPopcount</code><a class="headerlink" href="#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Convert MatMul nodes with all-bipolar inputs to XnorPopcountMatMul
+and associated result correction.</p>
+<dl class="method">
+<dt id="finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fold_constants.html" class="btn btn-neutral float-right" title="finn.transformation.fold_constants module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.batchnorm_to_affine.html" class="btn btn-neutral float-left" title="finn.transformation.batchnorm_to_affine module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fold_constants.html b/docs/finn/_build/html/source_code/finn.transformation.fold_constants.html
new file mode 100644
index 000000000..d02be3647
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fold_constants.html
@@ -0,0 +1,223 @@
+
+
+<!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.transformation.fold_constants module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.general module" href="finn.transformation.general.html" />
+    <link rel="prev" title="finn.transformation.bipolar_to_xnor module" href="finn.transformation.bipolar_to_xnor.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+      <li>finn.transformation.fold_constants module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fold_constants.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="module-finn.transformation.fold_constants">
+<span id="finn-transformation-fold-constants-module"></span><h1>finn.transformation.fold_constants module<a class="headerlink" href="#module-finn.transformation.fold_constants" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fold_constants.FoldConstants">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fold_constants.</code><code class="sig-name descname">FoldConstants</code><a class="headerlink" href="#finn.transformation.fold_constants.FoldConstants" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Replace the output of a node with const-only inputs with a precomputed
+result.</p>
+<dl class="method">
+<dt id="finn.transformation.fold_constants.FoldConstants.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fold_constants.FoldConstants.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.general.html" class="btn btn-neutral float-right" title="finn.transformation.general module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.bipolar_to_xnor.html" class="btn btn-neutral float-left" title="finn.transformation.bipolar_to_xnor module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.cleanup.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.cleanup.html
new file mode 100644
index 000000000..ce38981d4
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.cleanup.html
@@ -0,0 +1,224 @@
+
+
+<!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.transformation.fpgadataflow.cleanup module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.codegen_ipgen module" href="finn.transformation.fpgadataflow.codegen_ipgen.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow package" href="finn.transformation.fpgadataflow.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.cleanup module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.cleanup.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="module-finn.transformation.fpgadataflow.cleanup">
+<span id="finn-transformation-fpgadataflow-cleanup-module"></span><h1>finn.transformation.fpgadataflow.cleanup module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.cleanup" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.cleanup.CleanUp">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.cleanup.</code><code class="sig-name descname">CleanUp</code><a class="headerlink" href="#finn.transformation.fpgadataflow.cleanup.CleanUp" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Remove any generated files for fpgadataflow nodes.</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.cleanup.CleanUp.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.cleanup.CleanUp.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.codegen_ipgen.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.codegen_ipgen module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipgen.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipgen.html
new file mode 100644
index 000000000..15ee3487e
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipgen.html
@@ -0,0 +1,224 @@
+
+
+<!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.transformation.fpgadataflow.codegen_ipgen module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.codegen_ipstitch module" href="finn.transformation.fpgadataflow.codegen_ipstitch.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.cleanup module" href="finn.transformation.fpgadataflow.cleanup.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.codegen_ipgen module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.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="module-finn.transformation.fpgadataflow.codegen_ipgen">
+<span id="finn-transformation-fpgadataflow-codegen-ipgen-module"></span><h1>finn.transformation.fpgadataflow.codegen_ipgen module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_ipgen" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_ipgen.</code><code class="sig-name descname">CodeGen_ipgen</code><span class="sig-paren">(</span><em class="sig-param">fpgapart</em>, <em class="sig-param">clk</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Code generation for all nodes in model</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.codegen_ipstitch.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.codegen_ipstitch module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.cleanup.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.cleanup module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html
new file mode 100644
index 000000000..53fcfe117
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html
@@ -0,0 +1,232 @@
+
+
+<!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.transformation.fpgadataflow.codegen_ipstitch module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.codegen_npysim module" href="finn.transformation.fpgadataflow.codegen_npysim.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.codegen_ipgen module" href="finn.transformation.fpgadataflow.codegen_ipgen.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.codegen_ipstitch module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.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="module-finn.transformation.fpgadataflow.codegen_ipstitch">
+<span id="finn-transformation-fpgadataflow-codegen-ipstitch-module"></span><h1>finn.transformation.fpgadataflow.codegen_ipstitch module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_ipstitch" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_ipstitch.</code><code class="sig-name descname">CodeGen_ipstitch</code><span class="sig-paren">(</span><em class="sig-param">fpgapart</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Create a Vivado IP Block Design project from all the generated IPs of a
+graph. All nodes in the graph must have the fpgadataflow backend attribute,
+and the CodeGen_ipgen transformation must have been previously run on
+the graph. The resulting block design is also packaged as IP.</p>
+<p>Outcome if successful: sets the vivado_stitch_proj attribute in the ONNX
+ModelProto’s metadata_props field, with the created project dir as the
+value. A make_project.tcl script is also placed under the same folder,
+which is called to instantiate the per-layer IPs and stitch them together.
+The packaged block design IP can be found under the ip subdirectory.</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.codegen_npysim.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.codegen_npysim module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.codegen_ipgen.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.codegen_ipgen module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_npysim.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_npysim.html
new file mode 100644
index 000000000..36e1774c5
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_npysim.html
@@ -0,0 +1,224 @@
+
+
+<!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.transformation.fpgadataflow.codegen_npysim module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.compile module" href="finn.transformation.fpgadataflow.compile.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.codegen_ipstitch module" href="finn.transformation.fpgadataflow.codegen_ipstitch.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.codegen_npysim module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.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="module-finn.transformation.fpgadataflow.codegen_npysim">
+<span id="finn-transformation-fpgadataflow-codegen-npysim-module"></span><h1>finn.transformation.fpgadataflow.codegen_npysim module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_npysim" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_npysim.</code><code class="sig-name descname">CodeGen_npysim</code><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Code generation for all nodes in model</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.compile.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.compile module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.codegen_ipstitch.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.codegen_ipstitch module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.compile.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.compile.html
new file mode 100644
index 000000000..3ee88f9b1
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.compile.html
@@ -0,0 +1,224 @@
+
+
+<!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.transformation.fpgadataflow.compile module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.convert_to_hls_layers module" href="finn.transformation.fpgadataflow.convert_to_hls_layers.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.codegen_npysim module" href="finn.transformation.fpgadataflow.codegen_npysim.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.compile module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.compile.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="module-finn.transformation.fpgadataflow.compile">
+<span id="finn-transformation-fpgadataflow-compile-module"></span><h1>finn.transformation.fpgadataflow.compile module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.compile" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.compile.Compile">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.compile.</code><code class="sig-name descname">Compile</code><a class="headerlink" href="#finn.transformation.fpgadataflow.compile.Compile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Compile for all nodes in model</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.compile.Compile.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.compile.Compile.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.convert_to_hls_layers.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.convert_to_hls_layers module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.codegen_npysim.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.codegen_npysim module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html
new file mode 100644
index 000000000..31b287d2b
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html
@@ -0,0 +1,226 @@
+
+
+<!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.transformation.fpgadataflow.convert_to_hls_layers module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.create_dataflow_partition module" href="finn.transformation.fpgadataflow.create_dataflow_partition.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.compile module" href="finn.transformation.fpgadataflow.compile.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.convert_to_hls_layers module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.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="module-finn.transformation.fpgadataflow.convert_to_hls_layers">
+<span id="finn-transformation-fpgadataflow-convert-to-hls-layers-module"></span><h1>finn.transformation.fpgadataflow.convert_to_hls_layers module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.convert_to_hls_layers" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.convert_to_hls_layers.</code><code class="sig-name descname">InferBinaryStreamingFCLayer</code><a class="headerlink" href="#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Convert pairs of binary XnorPopcountMatMul layers to
+StreamingFCLayer_Batch layers. Any immediately following MultiThreshold
+layers will also be absorbed into the MVTU.</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.create_dataflow_partition.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.create_dataflow_partition module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.compile.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.compile module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html
new file mode 100644
index 000000000..e47ba3493
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html
@@ -0,0 +1,228 @@
+
+
+<!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.transformation.fpgadataflow.create_dataflow_partition module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.hlssynth_ipgen module" href="finn.transformation.fpgadataflow.hlssynth_ipgen.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.convert_to_hls_layers module" href="finn.transformation.fpgadataflow.convert_to_hls_layers.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.create_dataflow_partition module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.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="module-finn.transformation.fpgadataflow.create_dataflow_partition">
+<span id="finn-transformation-fpgadataflow-create-dataflow-partition-module"></span><h1>finn.transformation.fpgadataflow.create_dataflow_partition module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.create_dataflow_partition" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.create_dataflow_partition.</code><code class="sig-name descname">CreateDataflowPartition</code><a class="headerlink" href="#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Split a graph into two graphs; one which contains non-FINN-dataflow nodes
+and a StreamingDataflowPartition node, and another which only contains
+FINN dataflow nodes. The StreamingDataflowPartition has a model attribute
+that indicates the filename for the second graph that only contains
+dataflow nodes. No action is taken if there are no dataflow nodes.</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.hlssynth_ipgen.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.hlssynth_ipgen module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.convert_to_hls_layers.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.convert_to_hls_layers module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html
new file mode 100644
index 000000000..1d2a3d9ec
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html
@@ -0,0 +1,224 @@
+
+
+<!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.transformation.fpgadataflow.hlssynth_ipgen module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.insert_tlastmarker module" href="finn.transformation.fpgadataflow.insert_tlastmarker.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.create_dataflow_partition module" href="finn.transformation.fpgadataflow.create_dataflow_partition.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.hlssynth_ipgen module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.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="module-finn.transformation.fpgadataflow.hlssynth_ipgen">
+<span id="finn-transformation-fpgadataflow-hlssynth-ipgen-module"></span><h1>finn.transformation.fpgadataflow.hlssynth_ipgen module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.hlssynth_ipgen" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.hlssynth_ipgen.</code><code class="sig-name descname">HLSSynth_IPGen</code><a class="headerlink" href="#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Compile for all nodes in model</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.insert_tlastmarker.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.insert_tlastmarker module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.create_dataflow_partition.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.create_dataflow_partition module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html
index 194aa7cc1..6d71ce401 100644
--- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html
@@ -35,7 +35,7 @@
   <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
-    <link rel="next" title="finn.transformation.streamline package" href="finn.transformation.streamline.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.cleanup module" href="finn.transformation.fpgadataflow.cleanup.html" />
     <link rel="prev" title="finn.transformation package" href="finn.transformation.html" /> 
 </head>
 
@@ -158,251 +158,25 @@
 <h1>finn.transformation.fpgadataflow package<a class="headerlink" href="#finn-transformation-fpgadataflow-package" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.cleanup.html">finn.transformation.fpgadataflow.cleanup module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipgen.html">finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipstitch.html">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_npysim.html">finn.transformation.fpgadataflow.codegen_npysim module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.compile.html">finn.transformation.fpgadataflow.compile module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.convert_to_hls_layers.html">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.create_dataflow_partition.html">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.hlssynth_ipgen.html">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.insert_tlastmarker.html">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.make_deployment.html">finn.transformation.fpgadataflow.make_deployment module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_driver.html">finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_proj.html">finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.set_exec_mode.html">finn.transformation.fpgadataflow.set_exec_mode module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.synth_pynq_proj.html">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.templates.html">finn.transformation.fpgadataflow.templates module</a></li>
+</ul>
 </div>
-<div class="section" id="module-finn.transformation.fpgadataflow.cleanup">
-<span id="finn-transformation-fpgadataflow-cleanup-module"></span><h2>finn.transformation.fpgadataflow.cleanup module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.cleanup" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.cleanup.CleanUp">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.cleanup.</code><code class="sig-name descname">CleanUp</code><a class="headerlink" href="#finn.transformation.fpgadataflow.cleanup.CleanUp" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Remove any generated files for fpgadataflow nodes.</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.cleanup.CleanUp.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.cleanup.CleanUp.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.codegen_ipgen">
-<span id="finn-transformation-fpgadataflow-codegen-ipgen-module"></span><h2>finn.transformation.fpgadataflow.codegen_ipgen module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_ipgen" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_ipgen.</code><code class="sig-name descname">CodeGen_ipgen</code><span class="sig-paren">(</span><em class="sig-param">fpgapart</em>, <em class="sig-param">clk</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Code generation for all nodes in model</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.codegen_ipstitch">
-<span id="finn-transformation-fpgadataflow-codegen-ipstitch-module"></span><h2>finn.transformation.fpgadataflow.codegen_ipstitch module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_ipstitch" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_ipstitch.</code><code class="sig-name descname">CodeGen_ipstitch</code><span class="sig-paren">(</span><em class="sig-param">fpgapart</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Create a Vivado IP Block Design project from all the generated IPs of a
-graph. All nodes in the graph must have the fpgadataflow backend attribute,
-and the CodeGen_ipgen transformation must have been previously run on
-the graph. The resulting block design is also packaged as IP.</p>
-<p>Outcome if successful: sets the vivado_stitch_proj attribute in the ONNX
-ModelProto’s metadata_props field, with the created project dir as the
-value. A make_project.tcl script is also placed under the same folder,
-which is called to instantiate the per-layer IPs and stitch them together.
-The packaged block design IP can be found under the ip subdirectory.</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.codegen_npysim">
-<span id="finn-transformation-fpgadataflow-codegen-npysim-module"></span><h2>finn.transformation.fpgadataflow.codegen_npysim module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_npysim" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_npysim.</code><code class="sig-name descname">CodeGen_npysim</code><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Code generation for all nodes in model</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.compile">
-<span id="finn-transformation-fpgadataflow-compile-module"></span><h2>finn.transformation.fpgadataflow.compile module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.compile" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.compile.Compile">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.compile.</code><code class="sig-name descname">Compile</code><a class="headerlink" href="#finn.transformation.fpgadataflow.compile.Compile" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Compile for all nodes in model</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.compile.Compile.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.compile.Compile.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.convert_to_hls_layers">
-<span id="finn-transformation-fpgadataflow-convert-to-hls-layers-module"></span><h2>finn.transformation.fpgadataflow.convert_to_hls_layers module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.convert_to_hls_layers" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.convert_to_hls_layers.</code><code class="sig-name descname">InferBinaryStreamingFCLayer</code><a class="headerlink" href="#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Convert pairs of binary XnorPopcountMatMul layers to
-StreamingFCLayer_Batch layers. Any immediately following MultiThreshold
-layers will also be absorbed into the MVTU.</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.create_dataflow_partition">
-<span id="finn-transformation-fpgadataflow-create-dataflow-partition-module"></span><h2>finn.transformation.fpgadataflow.create_dataflow_partition module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.create_dataflow_partition" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.create_dataflow_partition.</code><code class="sig-name descname">CreateDataflowPartition</code><a class="headerlink" href="#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Split a graph into two graphs; one which contains non-FINN-dataflow nodes
-and a StreamingDataflowPartition node, and another which only contains
-FINN dataflow nodes. The StreamingDataflowPartition has a model attribute
-that indicates the filename for the second graph that only contains
-dataflow nodes. No action is taken if there are no dataflow nodes.</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.hlssynth_ipgen">
-<span id="finn-transformation-fpgadataflow-hlssynth-ipgen-module"></span><h2>finn.transformation.fpgadataflow.hlssynth_ipgen module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.hlssynth_ipgen" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.hlssynth_ipgen.</code><code class="sig-name descname">HLSSynth_IPGen</code><a class="headerlink" href="#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Compile for all nodes in model</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.insert_tlastmarker">
-<span id="finn-transformation-fpgadataflow-insert-tlastmarker-module"></span><h2>finn.transformation.fpgadataflow.insert_tlastmarker module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.insert_tlastmarker" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.insert_tlastmarker.</code><code class="sig-name descname">InsertTLastMarker</code><a class="headerlink" href="#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Ensure that the graph is terminated with a TLastMarker node, inserting
-one if necessary.</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.make_deployment">
-<span id="finn-transformation-fpgadataflow-make-deployment-module"></span><h2>finn.transformation.fpgadataflow.make_deployment module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_deployment" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_deployment.</code><code class="sig-name descname">DeployToPYNQ</code><span class="sig-paren">(</span><em class="sig-param">ip</em>, <em class="sig-param">username</em>, <em class="sig-param">password</em>, <em class="sig-param">target_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Collects all necessary files for deployment and copies them to the PYNQ board.
-Expects information about PYNQ board to make scp possible:
-* ip address of board
-* username and password for board
-* target directory where the files are stored on the board</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.make_pynq_driver">
-<span id="finn-transformation-fpgadataflow-make-pynq-driver-module"></span><h2>finn.transformation.fpgadataflow.make_pynq_driver module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_pynq_driver" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_pynq_driver.</code><code class="sig-name descname">MakePYNQDriver</code><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Create PYNQ Python code to correctly interface the generated
-accelerator, including data packing/unpacking. The MakePYNQProject
-transformation must have been already applied.</p>
-<p>Outcome if successful: sets the pynq_driver_dir attribute in the ONNX
-ModelProto’s metadata_props field, with the created driver dir as the
-value.</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.make_pynq_proj">
-<span id="finn-transformation-fpgadataflow-make-pynq-proj-module"></span><h2>finn.transformation.fpgadataflow.make_pynq_proj module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_pynq_proj" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_pynq_proj.</code><code class="sig-name descname">MakePYNQProject</code><span class="sig-paren">(</span><em class="sig-param">platform</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Create a Vivado PYNQ overlay project (including the shell infrastructure)
-from the already-stitched IP block for this graph.
-All nodes in the graph must have the fpgadataflow backend attribute,
-and the CodeGen_ipstitch transformation must have been previously run on
-the graph.</p>
-<p>Outcome if successful: sets the vivado_pynq_proj attribute in the ONNX
-ModelProto’s metadata_props field, with the created project dir as the
-value.</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.set_exec_mode">
-<span id="finn-transformation-fpgadataflow-set-exec-mode-module"></span><h2>finn.transformation.fpgadataflow.set_exec_mode module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.set_exec_mode" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.set_exec_mode.SetExecMode">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.set_exec_mode.</code><code class="sig-name descname">SetExecMode</code><span class="sig-paren">(</span><em class="sig-param">mode</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Set attribute sim_mode in all fpgadataflow nodes</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.synth_pynq_proj">
-<span id="finn-transformation-fpgadataflow-synth-pynq-proj-module"></span><h2>finn.transformation.fpgadataflow.synth_pynq_proj module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.synth_pynq_proj" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.synth_pynq_proj.</code><code class="sig-name descname">SynthPYNQProject</code><a class="headerlink" href="#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Run synthesis for the PYNQ project for this graph. The MakePYNQProject
-transformation must be applied prior to this transformation.</p>
-<dl class="method">
-<dt id="finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fpgadataflow.templates">
-<span id="finn-transformation-fpgadataflow-templates-module"></span><h2>finn.transformation.fpgadataflow.templates module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.templates" title="Permalink to this headline">¶</a></h2>
 </div>
 <div class="section" id="module-finn.transformation.fpgadataflow">
 <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.transformation.fpgadataflow" title="Permalink to this headline">¶</a></h2>
@@ -417,7 +191,7 @@ transformation must be applied prior to this transformation.</p>
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="finn.transformation.streamline.html" class="btn btn-neutral float-right" title="finn.transformation.streamline package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="finn.transformation.fpgadataflow.cleanup.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.cleanup module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="finn.transformation.html" class="btn btn-neutral float-left" title="finn.transformation package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html
new file mode 100644
index 000000000..1b972534f
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html
@@ -0,0 +1,225 @@
+
+
+<!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.transformation.fpgadataflow.insert_tlastmarker module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.make_deployment module" href="finn.transformation.fpgadataflow.make_deployment.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.hlssynth_ipgen module" href="finn.transformation.fpgadataflow.hlssynth_ipgen.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.insert_tlastmarker module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.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="module-finn.transformation.fpgadataflow.insert_tlastmarker">
+<span id="finn-transformation-fpgadataflow-insert-tlastmarker-module"></span><h1>finn.transformation.fpgadataflow.insert_tlastmarker module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.insert_tlastmarker" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.insert_tlastmarker.</code><code class="sig-name descname">InsertTLastMarker</code><a class="headerlink" href="#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Ensure that the graph is terminated with a TLastMarker node, inserting
+one if necessary.</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.make_deployment.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.make_deployment module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.hlssynth_ipgen.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.hlssynth_ipgen module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_deployment.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_deployment.html
new file mode 100644
index 000000000..8a3bb6955
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_deployment.html
@@ -0,0 +1,228 @@
+
+
+<!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.transformation.fpgadataflow.make_deployment module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.make_pynq_driver module" href="finn.transformation.fpgadataflow.make_pynq_driver.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.insert_tlastmarker module" href="finn.transformation.fpgadataflow.insert_tlastmarker.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.make_deployment module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.make_deployment.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="module-finn.transformation.fpgadataflow.make_deployment">
+<span id="finn-transformation-fpgadataflow-make-deployment-module"></span><h1>finn.transformation.fpgadataflow.make_deployment module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_deployment" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_deployment.</code><code class="sig-name descname">DeployToPYNQ</code><span class="sig-paren">(</span><em class="sig-param">ip</em>, <em class="sig-param">username</em>, <em class="sig-param">password</em>, <em class="sig-param">target_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Collects all necessary files for deployment and copies them to the PYNQ board.
+Expects information about PYNQ board to make scp possible:
+* ip address of board
+* username and password for board
+* target directory where the files are stored on the board</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.make_pynq_driver.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.make_pynq_driver module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.insert_tlastmarker.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.insert_tlastmarker module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_driver.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_driver.html
new file mode 100644
index 000000000..1e21d93b9
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_driver.html
@@ -0,0 +1,229 @@
+
+
+<!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.transformation.fpgadataflow.make_pynq_driver module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.make_pynq_proj module" href="finn.transformation.fpgadataflow.make_pynq_proj.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.make_deployment module" href="finn.transformation.fpgadataflow.make_deployment.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.make_pynq_driver module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.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="module-finn.transformation.fpgadataflow.make_pynq_driver">
+<span id="finn-transformation-fpgadataflow-make-pynq-driver-module"></span><h1>finn.transformation.fpgadataflow.make_pynq_driver module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_pynq_driver" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_pynq_driver.</code><code class="sig-name descname">MakePYNQDriver</code><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Create PYNQ Python code to correctly interface the generated
+accelerator, including data packing/unpacking. The MakePYNQProject
+transformation must have been already applied.</p>
+<p>Outcome if successful: sets the pynq_driver_dir attribute in the ONNX
+ModelProto’s metadata_props field, with the created driver dir as the
+value.</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.make_pynq_proj.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.make_pynq_proj module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.make_deployment.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.make_deployment module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_proj.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_proj.html
new file mode 100644
index 000000000..c95642fa5
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_proj.html
@@ -0,0 +1,231 @@
+
+
+<!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.transformation.fpgadataflow.make_pynq_proj module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.set_exec_mode module" href="finn.transformation.fpgadataflow.set_exec_mode.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.make_pynq_driver module" href="finn.transformation.fpgadataflow.make_pynq_driver.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.make_pynq_proj module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.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="module-finn.transformation.fpgadataflow.make_pynq_proj">
+<span id="finn-transformation-fpgadataflow-make-pynq-proj-module"></span><h1>finn.transformation.fpgadataflow.make_pynq_proj module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_pynq_proj" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_pynq_proj.</code><code class="sig-name descname">MakePYNQProject</code><span class="sig-paren">(</span><em class="sig-param">platform</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Create a Vivado PYNQ overlay project (including the shell infrastructure)
+from the already-stitched IP block for this graph.
+All nodes in the graph must have the fpgadataflow backend attribute,
+and the CodeGen_ipstitch transformation must have been previously run on
+the graph.</p>
+<p>Outcome if successful: sets the vivado_pynq_proj attribute in the ONNX
+ModelProto’s metadata_props field, with the created project dir as the
+value.</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.set_exec_mode.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.set_exec_mode module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.make_pynq_driver.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.make_pynq_driver module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.set_exec_mode.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.set_exec_mode.html
new file mode 100644
index 000000000..f7263416c
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.set_exec_mode.html
@@ -0,0 +1,224 @@
+
+
+<!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.transformation.fpgadataflow.set_exec_mode module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.synth_pynq_proj module" href="finn.transformation.fpgadataflow.synth_pynq_proj.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.make_pynq_proj module" href="finn.transformation.fpgadataflow.make_pynq_proj.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.set_exec_mode module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.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="module-finn.transformation.fpgadataflow.set_exec_mode">
+<span id="finn-transformation-fpgadataflow-set-exec-mode-module"></span><h1>finn.transformation.fpgadataflow.set_exec_mode module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.set_exec_mode" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.set_exec_mode.SetExecMode">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.set_exec_mode.</code><code class="sig-name descname">SetExecMode</code><span class="sig-paren">(</span><em class="sig-param">mode</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Set attribute sim_mode in all fpgadataflow nodes</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.synth_pynq_proj.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.synth_pynq_proj module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.make_pynq_proj.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.make_pynq_proj module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html
new file mode 100644
index 000000000..4f24fdad4
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html
@@ -0,0 +1,225 @@
+
+
+<!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.transformation.fpgadataflow.synth_pynq_proj module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.fpgadataflow.templates module" href="finn.transformation.fpgadataflow.templates.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.set_exec_mode module" href="finn.transformation.fpgadataflow.set_exec_mode.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.synth_pynq_proj module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.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="module-finn.transformation.fpgadataflow.synth_pynq_proj">
+<span id="finn-transformation-fpgadataflow-synth-pynq-proj-module"></span><h1>finn.transformation.fpgadataflow.synth_pynq_proj module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.synth_pynq_proj" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.synth_pynq_proj.</code><code class="sig-name descname">SynthPYNQProject</code><a class="headerlink" href="#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Run synthesis for the PYNQ project for this graph. The MakePYNQProject
+transformation must be applied prior to this transformation.</p>
+<dl class="method">
+<dt id="finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.fpgadataflow.templates.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.templates module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.set_exec_mode.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.set_exec_mode module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.templates.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.templates.html
new file mode 100644
index 000000000..9777fad44
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.templates.html
@@ -0,0 +1,212 @@
+
+
+<!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.transformation.fpgadataflow.templates module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.streamline package" href="finn.transformation.streamline.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.synth_pynq_proj module" href="finn.transformation.fpgadataflow.synth_pynq_proj.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> &raquo;</li>
+        
+      <li>finn.transformation.fpgadataflow.templates module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.fpgadataflow.templates.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="module-finn.transformation.fpgadataflow.templates">
+<span id="finn-transformation-fpgadataflow-templates-module"></span><h1>finn.transformation.fpgadataflow.templates module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.templates" title="Permalink to this headline">¶</a></h1>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.streamline.html" class="btn btn-neutral float-right" title="finn.transformation.streamline package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fpgadataflow.synth_pynq_proj.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.synth_pynq_proj module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.general.html b/docs/finn/_build/html/source_code/finn.transformation.general.html
new file mode 100644
index 000000000..0c1dc50f0
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.general.html
@@ -0,0 +1,259 @@
+
+
+<!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.transformation.general module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.infer_datatypes module" href="finn.transformation.infer_datatypes.html" />
+    <link rel="prev" title="finn.transformation.fold_constants module" href="finn.transformation.fold_constants.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+      <li>finn.transformation.general module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.general.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="module-finn.transformation.general">
+<span id="finn-transformation-general-module"></span><h1>finn.transformation.general module<a class="headerlink" href="#module-finn.transformation.general" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.general.ConvertSubToAdd">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">ConvertSubToAdd</code><a class="headerlink" href="#finn.transformation.general.ConvertSubToAdd" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Convert sub nodes to add nodes of appropriate sign.</p>
+<dl class="method">
+<dt id="finn.transformation.general.ConvertSubToAdd.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.ConvertSubToAdd.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="finn.transformation.general.GiveRandomTensorNames">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveRandomTensorNames</code><a class="headerlink" href="#finn.transformation.general.GiveRandomTensorNames" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Give random tensor names to all tensors.</p>
+<dl class="method">
+<dt id="finn.transformation.general.GiveRandomTensorNames.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveRandomTensorNames.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="finn.transformation.general.GiveReadableTensorNames">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveReadableTensorNames</code><a class="headerlink" href="#finn.transformation.general.GiveReadableTensorNames" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Give more human-readable names to all internal tensors. It’s recommended
+to apply give_unique_node_names prior to this transform.</p>
+<dl class="method">
+<dt id="finn.transformation.general.GiveReadableTensorNames.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveReadableTensorNames.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="finn.transformation.general.GiveUniqueNodeNames">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveUniqueNodeNames</code><a class="headerlink" href="#finn.transformation.general.GiveUniqueNodeNames" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Give unique names to each node in the graph using enumeration.</p>
+<dl class="method">
+<dt id="finn.transformation.general.GiveUniqueNodeNames.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveUniqueNodeNames.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.infer_datatypes.html" class="btn btn-neutral float-right" title="finn.transformation.infer_datatypes module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.fold_constants.html" class="btn btn-neutral float-left" title="finn.transformation.fold_constants module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.html b/docs/finn/_build/html/source_code/finn.transformation.html
index 939edb332..d7a4042b0 100644
--- a/docs/finn/_build/html/source_code/finn.transformation.html
+++ b/docs/finn/_build/html/source_code/finn.transformation.html
@@ -36,7 +36,7 @@
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
     <link rel="next" title="finn.transformation.fpgadataflow package" href="finn.transformation.fpgadataflow.html" />
-    <link rel="prev" title="finn.custom_op.fpgadataflow package" href="finn.custom_op.fpgadataflow.html" /> 
+    <link rel="prev" title="finn.custom_op.xnorpopcount module" href="finn.custom_op.xnorpopcount.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -159,32 +159,36 @@
 <div class="toctree-wrapper compound">
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.set_exec_mode">finn.transformation.fpgadataflow.set_exec_mode module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#submodules">Submodules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.cleanup.html">finn.transformation.fpgadataflow.cleanup module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipgen.html">finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipstitch.html">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_npysim.html">finn.transformation.fpgadataflow.codegen_npysim module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.compile.html">finn.transformation.fpgadataflow.compile module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.convert_to_hls_layers.html">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.create_dataflow_partition.html">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.hlssynth_ipgen.html">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.insert_tlastmarker.html">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.make_deployment.html">finn.transformation.fpgadataflow.make_deployment module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_driver.html">finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_proj.html">finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.set_exec_mode.html">finn.transformation.fpgadataflow.set_exec_mode module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.synth_pynq_proj.html">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.templates.html">finn.transformation.fpgadataflow.templates module</a></li>
+</ul>
+</li>
 <li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.html">finn.transformation.streamline package</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#submodules">Submodules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.absorb.html">finn.transformation.streamline.absorb module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.collapse_repeated.html">finn.transformation.streamline.collapse_repeated module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.reorder.html">finn.transformation.streamline.reorder module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.round_thresholds.html">finn.transformation.streamline.round_thresholds module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.sign_to_thres.html">finn.transformation.streamline.sign_to_thres module</a></li>
+</ul>
+</li>
 <li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline">Module contents</a></li>
 </ul>
 </li>
@@ -193,136 +197,16 @@
 </div>
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.batchnorm_to_affine.html">finn.transformation.batchnorm_to_affine module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.bipolar_to_xnor.html">finn.transformation.bipolar_to_xnor module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fold_constants.html">finn.transformation.fold_constants module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.general.html">finn.transformation.general module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.infer_datatypes.html">finn.transformation.infer_datatypes module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.infer_shapes.html">finn.transformation.infer_shapes module</a></li>
+</ul>
 </div>
-<div class="section" id="module-finn.transformation.batchnorm_to_affine">
-<span id="finn-transformation-batchnorm-to-affine-module"></span><h2>finn.transformation.batchnorm_to_affine module<a class="headerlink" href="#module-finn.transformation.batchnorm_to_affine" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.batchnorm_to_affine.BatchNormToAffine">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.batchnorm_to_affine.</code><code class="sig-name descname">BatchNormToAffine</code><a class="headerlink" href="#finn.transformation.batchnorm_to_affine.BatchNormToAffine" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Replaces any test-time BatchNorm layers with Mul-Add layers.</p>
-<dl class="method">
-<dt id="finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.bipolar_to_xnor">
-<span id="finn-transformation-bipolar-to-xnor-module"></span><h2>finn.transformation.bipolar_to_xnor module<a class="headerlink" href="#module-finn.transformation.bipolar_to_xnor" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.bipolar_to_xnor.</code><code class="sig-name descname">ConvertBipolarMatMulToXnorPopcount</code><a class="headerlink" href="#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Convert MatMul nodes with all-bipolar inputs to XnorPopcountMatMul
-and associated result correction.</p>
-<dl class="method">
-<dt id="finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.fold_constants">
-<span id="finn-transformation-fold-constants-module"></span><h2>finn.transformation.fold_constants module<a class="headerlink" href="#module-finn.transformation.fold_constants" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.fold_constants.FoldConstants">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fold_constants.</code><code class="sig-name descname">FoldConstants</code><a class="headerlink" href="#finn.transformation.fold_constants.FoldConstants" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Replace the output of a node with const-only inputs with a precomputed
-result.</p>
-<dl class="method">
-<dt id="finn.transformation.fold_constants.FoldConstants.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fold_constants.FoldConstants.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.general">
-<span id="finn-transformation-general-module"></span><h2>finn.transformation.general module<a class="headerlink" href="#module-finn.transformation.general" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.general.ConvertSubToAdd">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">ConvertSubToAdd</code><a class="headerlink" href="#finn.transformation.general.ConvertSubToAdd" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Convert sub nodes to add nodes of appropriate sign.</p>
-<dl class="method">
-<dt id="finn.transformation.general.ConvertSubToAdd.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.ConvertSubToAdd.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="finn.transformation.general.GiveRandomTensorNames">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveRandomTensorNames</code><a class="headerlink" href="#finn.transformation.general.GiveRandomTensorNames" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Give random tensor names to all tensors.</p>
-<dl class="method">
-<dt id="finn.transformation.general.GiveRandomTensorNames.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveRandomTensorNames.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="finn.transformation.general.GiveReadableTensorNames">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveReadableTensorNames</code><a class="headerlink" href="#finn.transformation.general.GiveReadableTensorNames" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Give more human-readable names to all internal tensors. It’s recommended
-to apply give_unique_node_names prior to this transform.</p>
-<dl class="method">
-<dt id="finn.transformation.general.GiveReadableTensorNames.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveReadableTensorNames.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="finn.transformation.general.GiveUniqueNodeNames">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveUniqueNodeNames</code><a class="headerlink" href="#finn.transformation.general.GiveUniqueNodeNames" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Give unique names to each node in the graph using enumeration.</p>
-<dl class="method">
-<dt id="finn.transformation.general.GiveUniqueNodeNames.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveUniqueNodeNames.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.infer_datatypes">
-<span id="finn-transformation-infer-datatypes-module"></span><h2>finn.transformation.infer_datatypes module<a class="headerlink" href="#module-finn.transformation.infer_datatypes" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.infer_datatypes.InferDataTypes">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.infer_datatypes.</code><code class="sig-name descname">InferDataTypes</code><a class="headerlink" href="#finn.transformation.infer_datatypes.InferDataTypes" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Infer FINN DataType info for all intermediate/output tensors based on
-inputs and node type.</p>
-<dl class="method">
-<dt id="finn.transformation.infer_datatypes.InferDataTypes.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.infer_datatypes.InferDataTypes.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.infer_shapes">
-<span id="finn-transformation-infer-shapes-module"></span><h2>finn.transformation.infer_shapes module<a class="headerlink" href="#module-finn.transformation.infer_shapes" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.infer_shapes.InferShapes">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.infer_shapes.</code><code class="sig-name descname">InferShapes</code><a class="headerlink" href="#finn.transformation.infer_shapes.InferShapes" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Ensure every tensor in the model has a specified shape (ValueInfo).</p>
-<dl class="method">
-<dt id="finn.transformation.infer_shapes.InferShapes.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.infer_shapes.InferShapes.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
 </div>
 <div class="section" id="module-finn.transformation">
 <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.transformation" title="Permalink to this headline">¶</a></h2>
@@ -371,7 +255,7 @@ manually re-apply the transform.</p></li>
         <a href="finn.transformation.fpgadataflow.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="finn.custom_op.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="finn.custom_op.xnorpopcount.html" class="btn btn-neutral float-left" title="finn.custom_op.xnorpopcount module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/docs/finn/_build/html/source_code/finn.transformation.infer_datatypes.html b/docs/finn/_build/html/source_code/finn.transformation.infer_datatypes.html
new file mode 100644
index 000000000..5987f219e
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.infer_datatypes.html
@@ -0,0 +1,223 @@
+
+
+<!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.transformation.infer_datatypes module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.infer_shapes module" href="finn.transformation.infer_shapes.html" />
+    <link rel="prev" title="finn.transformation.general module" href="finn.transformation.general.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+      <li>finn.transformation.infer_datatypes module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.infer_datatypes.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="module-finn.transformation.infer_datatypes">
+<span id="finn-transformation-infer-datatypes-module"></span><h1>finn.transformation.infer_datatypes module<a class="headerlink" href="#module-finn.transformation.infer_datatypes" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.infer_datatypes.InferDataTypes">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.infer_datatypes.</code><code class="sig-name descname">InferDataTypes</code><a class="headerlink" href="#finn.transformation.infer_datatypes.InferDataTypes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Infer FINN DataType info for all intermediate/output tensors based on
+inputs and node type.</p>
+<dl class="method">
+<dt id="finn.transformation.infer_datatypes.InferDataTypes.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.infer_datatypes.InferDataTypes.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.infer_shapes.html" class="btn btn-neutral float-right" title="finn.transformation.infer_shapes module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.general.html" class="btn btn-neutral float-left" title="finn.transformation.general module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.infer_shapes.html b/docs/finn/_build/html/source_code/finn.transformation.infer_shapes.html
new file mode 100644
index 000000000..f2b1f440d
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.infer_shapes.html
@@ -0,0 +1,222 @@
+
+
+<!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.transformation.infer_shapes module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.util package" href="finn.util.html" />
+    <link rel="prev" title="finn.transformation.infer_datatypes module" href="finn.transformation.infer_datatypes.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+      <li>finn.transformation.infer_shapes module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.infer_shapes.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="module-finn.transformation.infer_shapes">
+<span id="finn-transformation-infer-shapes-module"></span><h1>finn.transformation.infer_shapes module<a class="headerlink" href="#module-finn.transformation.infer_shapes" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.infer_shapes.InferShapes">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.infer_shapes.</code><code class="sig-name descname">InferShapes</code><a class="headerlink" href="#finn.transformation.infer_shapes.InferShapes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Ensure every tensor in the model has a specified shape (ValueInfo).</p>
+<dl class="method">
+<dt id="finn.transformation.infer_shapes.InferShapes.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.infer_shapes.InferShapes.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.util.html" class="btn btn-neutral float-right" title="finn.util package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.infer_datatypes.html" class="btn btn-neutral float-left" title="finn.transformation.infer_datatypes module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.absorb.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.absorb.html
new file mode 100644
index 000000000..72ae8104a
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.absorb.html
@@ -0,0 +1,265 @@
+
+
+<!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.transformation.streamline.absorb module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.streamline.collapse_repeated module" href="finn.transformation.streamline.collapse_repeated.html" />
+    <link rel="prev" title="finn.transformation.streamline package" href="finn.transformation.streamline.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.streamline.html">finn.transformation.streamline package</a> &raquo;</li>
+        
+      <li>finn.transformation.streamline.absorb module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.streamline.absorb.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="module-finn.transformation.streamline.absorb">
+<span id="finn-transformation-streamline-absorb-module"></span><h1>finn.transformation.streamline.absorb module<a class="headerlink" href="#module-finn.transformation.streamline.absorb" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">Absorb1BitMulIntoMatMul</code><a class="headerlink" href="#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Absorb bipolar or binary multiplications into the preciding matrix
+multiply.</p>
+<dl class="method">
+<dt id="finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbAddIntoMultiThreshold</code><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Absorb preceding Add ops into MultiThreshold by updating the threshold
+values. Only scalar/1D add vectors can be absorbed.</p>
+<dl class="method">
+<dt id="finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbMulIntoMultiThreshold</code><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Absorb preceding Mul ops into MultiThreshold by updating the threshold
+values. Only <em>positive</em> scalar/1D mul vectors can be absorbed.</p>
+<dl class="method">
+<dt id="finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="finn.transformation.streamline.absorb.FactorOutMulSignMagnitude">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">FactorOutMulSignMagnitude</code><a class="headerlink" href="#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Split multiply-by-constant nodes into two multiply-by-constant nodes,
+where the first node is a bipolar vector (of signs) and the second is a
+vector of magnitudes.</p>
+<dl class="method">
+<dt id="finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.streamline.collapse_repeated.html" class="btn btn-neutral float-right" title="finn.transformation.streamline.collapse_repeated module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.streamline.html" class="btn btn-neutral float-left" title="finn.transformation.streamline package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.collapse_repeated.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.collapse_repeated.html
new file mode 100644
index 000000000..bae88456a
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.collapse_repeated.html
@@ -0,0 +1,238 @@
+
+
+<!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.transformation.streamline.collapse_repeated module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.streamline.reorder module" href="finn.transformation.streamline.reorder.html" />
+    <link rel="prev" title="finn.transformation.streamline.absorb module" href="finn.transformation.streamline.absorb.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.streamline.html">finn.transformation.streamline package</a> &raquo;</li>
+        
+      <li>finn.transformation.streamline.collapse_repeated module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.streamline.collapse_repeated.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="module-finn.transformation.streamline.collapse_repeated">
+<span id="finn-transformation-streamline-collapse-repeated-module"></span><h1>finn.transformation.streamline.collapse_repeated module<a class="headerlink" href="#module-finn.transformation.streamline.collapse_repeated" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedAdd</code><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p>
+</dd></dl>
+
+<dl class="class">
+<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedMul</code><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p>
+</dd></dl>
+
+<dl class="class">
+<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedOp</code><span class="sig-paren">(</span><em class="sig-param">op_name</em>, <em class="sig-param">make_collapsed_param_fxn</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Collapse repeated consecutive operations with constant parameters into
+a single operation. make_collapsed_param_fxn must take two tensors and
+return a tensor which gives the equivalent result using a single op.</p>
+<dl class="method">
+<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.streamline.reorder.html" class="btn btn-neutral float-right" title="finn.transformation.streamline.reorder module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.streamline.absorb.html" class="btn btn-neutral float-left" title="finn.transformation.streamline.absorb module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.html
index c3faa75ab..fb8d76b59 100644
--- a/docs/finn/_build/html/source_code/finn.transformation.streamline.html
+++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.html
@@ -35,8 +35,8 @@
   <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="finn.util package" href="finn.util.html" />
-    <link rel="prev" title="finn.transformation.fpgadataflow package" href="finn.transformation.fpgadataflow.html" /> 
+    <link rel="next" title="finn.transformation.streamline.absorb module" href="finn.transformation.streamline.absorb.html" />
+    <link rel="prev" title="finn.transformation.fpgadataflow.templates module" href="finn.transformation.fpgadataflow.templates.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -158,165 +158,15 @@
 <h1>finn.transformation.streamline package<a class="headerlink" href="#finn-transformation-streamline-package" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.absorb.html">finn.transformation.streamline.absorb module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.collapse_repeated.html">finn.transformation.streamline.collapse_repeated module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.reorder.html">finn.transformation.streamline.reorder module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.round_thresholds.html">finn.transformation.streamline.round_thresholds module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.sign_to_thres.html">finn.transformation.streamline.sign_to_thres module</a></li>
+</ul>
 </div>
-<div class="section" id="module-finn.transformation.streamline.absorb">
-<span id="finn-transformation-streamline-absorb-module"></span><h2>finn.transformation.streamline.absorb module<a class="headerlink" href="#module-finn.transformation.streamline.absorb" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">Absorb1BitMulIntoMatMul</code><a class="headerlink" href="#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Absorb bipolar or binary multiplications into the preciding matrix
-multiply.</p>
-<dl class="method">
-<dt id="finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbAddIntoMultiThreshold</code><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Absorb preceding Add ops into MultiThreshold by updating the threshold
-values. Only scalar/1D add vectors can be absorbed.</p>
-<dl class="method">
-<dt id="finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbMulIntoMultiThreshold</code><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Absorb preceding Mul ops into MultiThreshold by updating the threshold
-values. Only <em>positive</em> scalar/1D mul vectors can be absorbed.</p>
-<dl class="method">
-<dt id="finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="finn.transformation.streamline.absorb.FactorOutMulSignMagnitude">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">FactorOutMulSignMagnitude</code><a class="headerlink" href="#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Split multiply-by-constant nodes into two multiply-by-constant nodes,
-where the first node is a bipolar vector (of signs) and the second is a
-vector of magnitudes.</p>
-<dl class="method">
-<dt id="finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.streamline.collapse_repeated">
-<span id="finn-transformation-streamline-collapse-repeated-module"></span><h2>finn.transformation.streamline.collapse_repeated module<a class="headerlink" href="#module-finn.transformation.streamline.collapse_repeated" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedAdd</code><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p>
-</dd></dl>
-
-<dl class="class">
-<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedMul</code><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p>
-</dd></dl>
-
-<dl class="class">
-<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedOp</code><span class="sig-paren">(</span><em class="sig-param">op_name</em>, <em class="sig-param">make_collapsed_param_fxn</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Collapse repeated consecutive operations with constant parameters into
-a single operation. make_collapsed_param_fxn must take two tensors and
-return a tensor which gives the equivalent result using a single op.</p>
-<dl class="method">
-<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.streamline.reorder">
-<span id="finn-transformation-streamline-reorder-module"></span><h2>finn.transformation.streamline.reorder module<a class="headerlink" href="#module-finn.transformation.streamline.reorder" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.streamline.reorder.MoveAddPastMul">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveAddPastMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveAddPastMul" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Move add operations past multiply operations. The aim is to have them
-next to each other such that they can be collapsed into a single add.</p>
-<dl class="method">
-<dt id="finn.transformation.streamline.reorder.MoveAddPastMul.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveAddPastMul.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="finn.transformation.streamline.reorder.MoveScalarAddPastMatMul">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarAddPastMatMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Move scalar add operations past matmul operations. We want to have adds
-next to each other such that they can be collapsed into a single add.</p>
-<dl class="method">
-<dt id="finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="finn.transformation.streamline.reorder.MoveScalarMulPastMatMul">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarMulPastMatMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Move scalar mul operations past matmul operations. We want to have muls
-next to each other such that they can be collapsed into a single mul.</p>
-<dl class="method">
-<dt id="finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.streamline.round_thresholds">
-<span id="finn-transformation-streamline-round-thresholds-module"></span><h2>finn.transformation.streamline.round_thresholds module<a class="headerlink" href="#module-finn.transformation.streamline.round_thresholds" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.streamline.round_thresholds.RoundAndClipThresholds">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.round_thresholds.</code><code class="sig-name descname">RoundAndClipThresholds</code><a class="headerlink" href="#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>For MultiThreshold nodes operating on integer inputs, round up
-thresholds values to the nearest integer. Additionally, if the input
-is unsigned, sets negative thresholds to zero.</p>
-<dl class="method">
-<dt id="finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.transformation.streamline.sign_to_thres">
-<span id="finn-transformation-streamline-sign-to-thres-module"></span><h2>finn.transformation.streamline.sign_to_thres module<a class="headerlink" href="#module-finn.transformation.streamline.sign_to_thres" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.transformation.streamline.sign_to_thres.ConvertSignToThres">
-<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.sign_to_thres.</code><code class="sig-name descname">ConvertSignToThres</code><a class="headerlink" href="#finn.transformation.streamline.sign_to_thres.ConvertSignToThres" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
-<p>Convert Sign node instances to MultiThreshold with threshold at 0.</p>
-<dl class="method">
-<dt id="finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
 </div>
 <div class="section" id="module-finn.transformation.streamline">
 <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.transformation.streamline" title="Permalink to this headline">¶</a></h2>
@@ -343,10 +193,10 @@ is unsigned, sets negative thresholds to zero.</p>
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="finn.util.html" class="btn btn-neutral float-right" title="finn.util package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="finn.transformation.streamline.absorb.html" class="btn btn-neutral float-right" title="finn.transformation.streamline.absorb module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="finn.transformation.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="finn.transformation.fpgadataflow.templates.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.templates module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.reorder.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.reorder.html
new file mode 100644
index 000000000..042fffbda
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.reorder.html
@@ -0,0 +1,251 @@
+
+
+<!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.transformation.streamline.reorder module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.streamline.round_thresholds module" href="finn.transformation.streamline.round_thresholds.html" />
+    <link rel="prev" title="finn.transformation.streamline.collapse_repeated module" href="finn.transformation.streamline.collapse_repeated.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.streamline.html">finn.transformation.streamline package</a> &raquo;</li>
+        
+      <li>finn.transformation.streamline.reorder module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.streamline.reorder.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="module-finn.transformation.streamline.reorder">
+<span id="finn-transformation-streamline-reorder-module"></span><h1>finn.transformation.streamline.reorder module<a class="headerlink" href="#module-finn.transformation.streamline.reorder" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.streamline.reorder.MoveAddPastMul">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveAddPastMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveAddPastMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Move add operations past multiply operations. The aim is to have them
+next to each other such that they can be collapsed into a single add.</p>
+<dl class="method">
+<dt id="finn.transformation.streamline.reorder.MoveAddPastMul.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveAddPastMul.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="finn.transformation.streamline.reorder.MoveScalarAddPastMatMul">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarAddPastMatMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Move scalar add operations past matmul operations. We want to have adds
+next to each other such that they can be collapsed into a single add.</p>
+<dl class="method">
+<dt id="finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="finn.transformation.streamline.reorder.MoveScalarMulPastMatMul">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarMulPastMatMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Move scalar mul operations past matmul operations. We want to have muls
+next to each other such that they can be collapsed into a single mul.</p>
+<dl class="method">
+<dt id="finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.streamline.round_thresholds.html" class="btn btn-neutral float-right" title="finn.transformation.streamline.round_thresholds module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.streamline.collapse_repeated.html" class="btn btn-neutral float-left" title="finn.transformation.streamline.collapse_repeated module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.round_thresholds.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.round_thresholds.html
new file mode 100644
index 000000000..78981939a
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.round_thresholds.html
@@ -0,0 +1,226 @@
+
+
+<!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.transformation.streamline.round_thresholds module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.streamline.sign_to_thres module" href="finn.transformation.streamline.sign_to_thres.html" />
+    <link rel="prev" title="finn.transformation.streamline.reorder module" href="finn.transformation.streamline.reorder.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.streamline.html">finn.transformation.streamline package</a> &raquo;</li>
+        
+      <li>finn.transformation.streamline.round_thresholds module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.streamline.round_thresholds.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="module-finn.transformation.streamline.round_thresholds">
+<span id="finn-transformation-streamline-round-thresholds-module"></span><h1>finn.transformation.streamline.round_thresholds module<a class="headerlink" href="#module-finn.transformation.streamline.round_thresholds" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.streamline.round_thresholds.RoundAndClipThresholds">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.round_thresholds.</code><code class="sig-name descname">RoundAndClipThresholds</code><a class="headerlink" href="#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>For MultiThreshold nodes operating on integer inputs, round up
+thresholds values to the nearest integer. Additionally, if the input
+is unsigned, sets negative thresholds to zero.</p>
+<dl class="method">
+<dt id="finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.streamline.sign_to_thres.html" class="btn btn-neutral float-right" title="finn.transformation.streamline.sign_to_thres module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.streamline.reorder.html" class="btn btn-neutral float-left" title="finn.transformation.streamline.reorder module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.sign_to_thres.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.sign_to_thres.html
new file mode 100644
index 000000000..a4a663b62
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.sign_to_thres.html
@@ -0,0 +1,224 @@
+
+
+<!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.transformation.streamline.sign_to_thres module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.transformation.batchnorm_to_affine module" href="finn.transformation.batchnorm_to_affine.html" />
+    <link rel="prev" title="finn.transformation.streamline.round_thresholds module" href="finn.transformation.streamline.round_thresholds.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.html">finn.transformation package</a> &raquo;</li>
+        
+          <li><a href="finn.transformation.streamline.html">finn.transformation.streamline package</a> &raquo;</li>
+        
+      <li>finn.transformation.streamline.sign_to_thres module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.transformation.streamline.sign_to_thres.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="module-finn.transformation.streamline.sign_to_thres">
+<span id="finn-transformation-streamline-sign-to-thres-module"></span><h1>finn.transformation.streamline.sign_to_thres module<a class="headerlink" href="#module-finn.transformation.streamline.sign_to_thres" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.transformation.streamline.sign_to_thres.ConvertSignToThres">
+<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.sign_to_thres.</code><code class="sig-name descname">ConvertSignToThres</code><a class="headerlink" href="#finn.transformation.streamline.sign_to_thres.ConvertSignToThres" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p>
+<p>Convert Sign node instances to MultiThreshold with threshold at 0.</p>
+<dl class="method">
+<dt id="finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply">
+<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.transformation.batchnorm_to_affine.html" class="btn btn-neutral float-right" title="finn.transformation.batchnorm_to_affine module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.transformation.streamline.round_thresholds.html" class="btn btn-neutral float-left" title="finn.transformation.streamline.round_thresholds module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.util.basic.html b/docs/finn/_build/html/source_code/finn.util.basic.html
new file mode 100644
index 000000000..8b2eefee4
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.util.basic.html
@@ -0,0 +1,305 @@
+
+
+<!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.util.basic module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.util.data_packing module" href="finn.util.data_packing.html" />
+    <link rel="prev" title="finn.util package" href="finn.util.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.util.html">finn.util package</a> &raquo;</li>
+        
+      <li>finn.util.basic module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.util.basic.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="module-finn.util.basic">
+<span id="finn-util-basic-module"></span><h1>finn.util.basic module<a class="headerlink" href="#module-finn.util.basic" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.util.basic.CppBuilder">
+<em class="property">class </em><code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">CppBuilder</code><a class="headerlink" href="#finn.util.basic.CppBuilder" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
+<dl class="method">
+<dt id="finn.util.basic.CppBuilder.append_includes">
+<code class="sig-name descname">append_includes</code><span class="sig-paren">(</span><em class="sig-param">library_path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.append_includes" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.util.basic.CppBuilder.append_sources">
+<code class="sig-name descname">append_sources</code><span class="sig-paren">(</span><em class="sig-param">cpp_file</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.append_sources" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.util.basic.CppBuilder.build">
+<code class="sig-name descname">build</code><span class="sig-paren">(</span><em class="sig-param">code_gen_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.build" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.util.basic.CppBuilder.set_executable_path">
+<code class="sig-name descname">set_executable_path</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.set_executable_path" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.basic.calculate_signed_dot_prod_range">
+<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">calculate_signed_dot_prod_range</code><span class="sig-paren">(</span><em class="sig-param">dt_a</em>, <em class="sig-param">dt_b</em>, <em class="sig-param">len</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.calculate_signed_dot_prod_range" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the (min,max) values a dot product between two signed vectors of
+types dt_a and dt_b of len elements can take.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.basic.gen_finn_dt_tensor">
+<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">gen_finn_dt_tensor</code><span class="sig-paren">(</span><em class="sig-param">finn_dt</em>, <em class="sig-param">tensor_shape</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.gen_finn_dt_tensor" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generates random tensor in given shape and with given FINN DataType</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.basic.get_by_name">
+<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">get_by_name</code><span class="sig-paren">(</span><em class="sig-param">container</em>, <em class="sig-param">name</em>, <em class="sig-param">name_field='name'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.get_by_name" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return item from container by .name field if it exists, None otherwise</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.basic.get_finn_root">
+<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">get_finn_root</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.get_finn_root" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the root directory that FINN is cloned into.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.basic.interleave_matrix_outer_dim_from_partitions">
+<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">interleave_matrix_outer_dim_from_partitions</code><span class="sig-paren">(</span><em class="sig-param">matrix</em>, <em class="sig-param">n_partitions</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.interleave_matrix_outer_dim_from_partitions" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="finn.util.basic.make_build_dir">
+<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">make_build_dir</code><span class="sig-paren">(</span><em class="sig-param">prefix=''</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.make_build_dir" title="Permalink to this definition">¶</a></dt>
+<dd><p>Creates a temporary folder with given prefix to be used as a build dir.
+Use this function instead of tempfile.mkdtemp to ensure any generated files
+will survive on the host after the FINN Docker container exits.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.basic.pad_tensor_to_multiple_of">
+<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">pad_tensor_to_multiple_of</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">pad_to_dims</em>, <em class="sig-param">val=0</em>, <em class="sig-param">distr_pad=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.pad_tensor_to_multiple_of" title="Permalink to this definition">¶</a></dt>
+<dd><p>Pad each dimension of given NumPy ndarray using val, so that each
+dimension is a multiple of the respective value in pad_to_dims. -1 means
+do not pad that particular dimension. If distr_pad is False, all padding
+will be inserted after the existing values; otherwise it will be split
+evenly between before and after the existing values, with one extra value
+inserted after if the padding amount is not divisible by two.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.basic.random_string">
+<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">random_string</code><span class="sig-paren">(</span><em class="sig-param">stringLength=6</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.random_string" title="Permalink to this definition">¶</a></dt>
+<dd><p>Randomly generate a string of letters and digits.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.basic.remove_by_name">
+<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">remove_by_name</code><span class="sig-paren">(</span><em class="sig-param">container</em>, <em class="sig-param">name</em>, <em class="sig-param">name_field='name'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.remove_by_name" title="Permalink to this definition">¶</a></dt>
+<dd><p>Remove item from container by .name field if it exists</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.basic.roundup_to_integer_multiple">
+<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">roundup_to_integer_multiple</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">factor</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.roundup_to_integer_multiple" title="Permalink to this definition">¶</a></dt>
+<dd><p>Round up integer x to the nearest integer multiple of integer factor.
+Returns x if factor is set to -1. Both x and factor must otherwise be
+positive.</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.util.data_packing.html" class="btn btn-neutral float-right" title="finn.util.data_packing module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.util.html" class="btn btn-neutral float-left" title="finn.util package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.util.data_packing.html b/docs/finn/_build/html/source_code/finn.util.data_packing.html
new file mode 100644
index 000000000..de8e3cc3c
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.util.data_packing.html
@@ -0,0 +1,313 @@
+
+
+<!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.util.data_packing module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.util.fpgadataflow module" href="finn.util.fpgadataflow.html" />
+    <link rel="prev" title="finn.util.basic module" href="finn.util.basic.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.util.html">finn.util package</a> &raquo;</li>
+        
+      <li>finn.util.data_packing module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.util.data_packing.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="module-finn.util.data_packing">
+<span id="finn-util-data-packing-module"></span><h1>finn.util.data_packing module<a class="headerlink" href="#module-finn.util.data_packing" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.util.data_packing.array2hexstring">
+<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">array2hexstring</code><span class="sig-paren">(</span><em class="sig-param">array</em>, <em class="sig-param">dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">prefix='0x'</em>, <em class="sig-param">reverse=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.array2hexstring" title="Permalink to this definition">¶</a></dt>
+<dd><p>Pack given one-dimensional NumPy array with FINN DataType dtype into a hex
+string.
+Any BIPOLAR values will be converted to a single bit with a 0 representing
+-1.
+pad_to_nbits is used to prepend leading zeros to ensure packed strings of
+fixed width. The minimum value for pad_to_nbits is 4, since a single hex
+digit is four bits. reverse can be used to reverse the array prior to
+packing.</p>
+<p>Examples:
+array2hexstring([1, 1, 1, 0], DataType.BINARY, 4) = “0xe”
+array2hexstring([1, 1, 1, 0], DataType.BINARY, 8) = “0x0e”
+array2hexstring([1, 1, 0, 1], DataType.BINARY, 4, reverse=True) = “0xb”
+array2hexstring([1, 1, 1, 0], DataType.BINARY, 8, reverse=True) = “0x07”</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.data_packing.finnpy_to_packed_bytearray">
+<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">finnpy_to_packed_bytearray</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.finnpy_to_packed_bytearray" title="Permalink to this definition">¶</a></dt>
+<dd><p>Given a numpy ndarray with FINN DataType dtype, pack the innermost
+dimension and return the packed representation as an ndarray of uint8.
+The packed innermost dimension will be padded to the nearest multiple
+of 8 bits. The returned ndarray has the same number of dimensions as the
+input.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.data_packing.hexstring2npbytearray">
+<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">hexstring2npbytearray</code><span class="sig-paren">(</span><em class="sig-param">hexstring</em>, <em class="sig-param">remove_prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.hexstring2npbytearray" title="Permalink to this definition">¶</a></dt>
+<dd><p>Convert a hex string into a NumPy array of dtype uint8. Examples:</p>
+<p>hexstring2npbytearray(“0f01”) = array([15,  1], dtype=uint8)</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.data_packing.npbytearray2hexstring">
+<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">npbytearray2hexstring</code><span class="sig-paren">(</span><em class="sig-param">npbytearray</em>, <em class="sig-param">prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.npbytearray2hexstring" title="Permalink to this definition">¶</a></dt>
+<dd><p>Convert a NumPy array of uint8 dtype into a hex string. Examples:</p>
+<p>npbytearray2hexstring(array([15,  1], dtype=uint8)) = “0x0f01”</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.data_packing.npy_to_rtlsim_input">
+<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">npy_to_rtlsim_input</code><span class="sig-paren">(</span><em class="sig-param">input_file</em>, <em class="sig-param">input_dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.npy_to_rtlsim_input" title="Permalink to this definition">¶</a></dt>
+<dd><p>Convert the multidimensional NumPy array of integers (stored as floats)
+from input_file into a flattened sequence of Python arbitrary-precision
+integers, packing the innermost dimension. See
+finn.util.basic.pack_innermost_dim_as_hex_string() for more info on how the
+packing works. If reverse_inner is set, the innermost dimension will be
+reversed prior to packing.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.data_packing.numpy_to_hls_code">
+<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">numpy_to_hls_code</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">hls_var_name</em>, <em class="sig-param">pack_innermost_dim=True</em>, <em class="sig-param">no_decl=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.numpy_to_hls_code" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return C++ code representation of a numpy ndarray with FINN DataType
+dtype, using hls_var_name as the resulting C++ variable name. If
+pack_innermost_dim is specified, the innermost dimension of the ndarray
+will be packed into a hex string using array2hexstring. If no_decl is
+set to True, no variable name and type will be generated as part of the
+emitted string.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.data_packing.pack_innermost_dim_as_hex_string">
+<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">pack_innermost_dim_as_hex_string</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.pack_innermost_dim_as_hex_string" title="Permalink to this definition">¶</a></dt>
+<dd><p>Pack the innermost dimension of the given numpy ndarray into hex
+strings using array2hexstring. Examples:</p>
+<p>A = [[1, 1, 1, 0], [0, 1, 1, 0]]
+eA = [“0e”, “06”]
+pack_innermost_dim_as_hex_string(A, DataType.BINARY, 8) == eA
+B = [[[3, 3], [3, 3]], [[1, 3], [3, 1]]]
+eB = [[ “0f”, “0f”], [“07”, “0d”]]
+pack_innermost_dim_as_hex_string(B, DataType.UINT2, 8) == eB</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.data_packing.packed_bytearray_to_finnpy">
+<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">packed_bytearray_to_finnpy</code><span class="sig-paren">(</span><em class="sig-param">packed_bytearray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">output_shape=None</em>, <em class="sig-param">reverse_inner=False</em>, <em class="sig-param">reverse_endian=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.packed_bytearray_to_finnpy" title="Permalink to this definition">¶</a></dt>
+<dd><p>Given a packed numpy uint8 ndarray, unpack it into a FINN array of
+given DataType. output_shape can be specified to remove padding from the
+packed dimension, or set to None to be inferred from the input.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.data_packing.rtlsim_output_to_npy">
+<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">rtlsim_output_to_npy</code><span class="sig-paren">(</span><em class="sig-param">output</em>, <em class="sig-param">path</em>, <em class="sig-param">dtype</em>, <em class="sig-param">shape</em>, <em class="sig-param">packedBits</em>, <em class="sig-param">targetBits</em>, <em class="sig-param">reverse_inner=True</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.rtlsim_output_to_npy" title="Permalink to this definition">¶</a></dt>
+<dd><p>Convert a flattened sequence of Python arbitrary-precision integers
+output into a NumPy array, saved as npy file at path. Each arbitrary-precision
+integer is assumed to be a packed array of targetBits-bit elements, which
+will be unpacked as the innermost dimension of the NumPy array.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.data_packing.unpack_innermost_dim_from_hex_string">
+<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">unpack_innermost_dim_from_hex_string</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">out_shape</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.unpack_innermost_dim_from_hex_string" title="Permalink to this definition">¶</a></dt>
+<dd><p>Convert a NumPy array of hex strings into a FINN NumPy array by unpacking
+the hex strings into the specified data type. out_shape can be specified
+such that any padding in the packing dimension is removed. If reverse_inner
+is set, the innermost unpacked dimension will be reversed.</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.util.fpgadataflow.html" class="btn btn-neutral float-right" title="finn.util.fpgadataflow module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.util.basic.html" class="btn btn-neutral float-left" title="finn.util.basic module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.util.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.util.fpgadataflow.html
new file mode 100644
index 000000000..e78854a1b
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.util.fpgadataflow.html
@@ -0,0 +1,237 @@
+
+
+<!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.util.fpgadataflow module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.util.onnx module" href="finn.util.onnx.html" />
+    <link rel="prev" title="finn.util.data_packing module" href="finn.util.data_packing.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.util.html">finn.util package</a> &raquo;</li>
+        
+      <li>finn.util.fpgadataflow module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.util.fpgadataflow.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="module-finn.util.fpgadataflow">
+<span id="finn-util-fpgadataflow-module"></span><h1>finn.util.fpgadataflow module<a class="headerlink" href="#module-finn.util.fpgadataflow" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="finn.util.fpgadataflow.IPGenBuilder">
+<em class="property">class </em><code class="sig-prename descclassname">finn.util.fpgadataflow.</code><code class="sig-name descname">IPGenBuilder</code><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
+<dl class="method">
+<dt id="finn.util.fpgadataflow.IPGenBuilder.append_tcl">
+<code class="sig-name descname">append_tcl</code><span class="sig-paren">(</span><em class="sig-param">tcl_script</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.append_tcl" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.util.fpgadataflow.IPGenBuilder.build">
+<code class="sig-name descname">build</code><span class="sig-paren">(</span><em class="sig-param">code_gen_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.build" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path">
+<code class="sig-name descname">set_ipgen_path</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="finn.util.fpgadataflow.pyverilate_stitched_ip">
+<code class="sig-prename descclassname">finn.util.fpgadataflow.</code><code class="sig-name descname">pyverilate_stitched_ip</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.pyverilate_stitched_ip" title="Permalink to this definition">¶</a></dt>
+<dd><p>Given a model with stitched IP, return a PyVerilator sim object.</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.util.onnx.html" class="btn btn-neutral float-right" title="finn.util.onnx module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.util.data_packing.html" class="btn btn-neutral float-left" title="finn.util.data_packing module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.util.html b/docs/finn/_build/html/source_code/finn.util.html
index eff5daeba..900b9619f 100644
--- a/docs/finn/_build/html/source_code/finn.util.html
+++ b/docs/finn/_build/html/source_code/finn.util.html
@@ -35,7 +35,8 @@
   <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="finn.transformation.streamline package" href="finn.transformation.streamline.html" /> 
+    <link rel="next" title="finn.util.basic module" href="finn.util.basic.html" />
+    <link rel="prev" title="finn.transformation.infer_shapes module" href="finn.transformation.infer_shapes.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -155,272 +156,15 @@
 <h1>finn.util package<a class="headerlink" href="#finn-util-package" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="finn.util.basic.html">finn.util.basic module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.util.data_packing.html">finn.util.data_packing module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.util.fpgadataflow.html">finn.util.fpgadataflow module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.util.onnx.html">finn.util.onnx module</a></li>
+<li class="toctree-l1"><a class="reference internal" href="finn.util.test.html">finn.util.test module</a></li>
+</ul>
 </div>
-<div class="section" id="module-finn.util.basic">
-<span id="finn-util-basic-module"></span><h2>finn.util.basic module<a class="headerlink" href="#module-finn.util.basic" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.util.basic.CppBuilder">
-<em class="property">class </em><code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">CppBuilder</code><a class="headerlink" href="#finn.util.basic.CppBuilder" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
-<dl class="method">
-<dt id="finn.util.basic.CppBuilder.append_includes">
-<code class="sig-name descname">append_includes</code><span class="sig-paren">(</span><em class="sig-param">library_path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.append_includes" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.util.basic.CppBuilder.append_sources">
-<code class="sig-name descname">append_sources</code><span class="sig-paren">(</span><em class="sig-param">cpp_file</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.append_sources" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.util.basic.CppBuilder.build">
-<code class="sig-name descname">build</code><span class="sig-paren">(</span><em class="sig-param">code_gen_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.build" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.util.basic.CppBuilder.set_executable_path">
-<code class="sig-name descname">set_executable_path</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.set_executable_path" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.basic.calculate_signed_dot_prod_range">
-<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">calculate_signed_dot_prod_range</code><span class="sig-paren">(</span><em class="sig-param">dt_a</em>, <em class="sig-param">dt_b</em>, <em class="sig-param">len</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.calculate_signed_dot_prod_range" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns the (min,max) values a dot product between two signed vectors of
-types dt_a and dt_b of len elements can take.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.basic.gen_finn_dt_tensor">
-<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">gen_finn_dt_tensor</code><span class="sig-paren">(</span><em class="sig-param">finn_dt</em>, <em class="sig-param">tensor_shape</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.gen_finn_dt_tensor" title="Permalink to this definition">¶</a></dt>
-<dd><p>Generates random tensor in given shape and with given FINN DataType</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.basic.get_by_name">
-<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">get_by_name</code><span class="sig-paren">(</span><em class="sig-param">container</em>, <em class="sig-param">name</em>, <em class="sig-param">name_field='name'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.get_by_name" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return item from container by .name field if it exists, None otherwise</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.basic.get_finn_root">
-<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">get_finn_root</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.get_finn_root" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the root directory that FINN is cloned into.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.basic.interleave_matrix_outer_dim_from_partitions">
-<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">interleave_matrix_outer_dim_from_partitions</code><span class="sig-paren">(</span><em class="sig-param">matrix</em>, <em class="sig-param">n_partitions</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.interleave_matrix_outer_dim_from_partitions" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="function">
-<dt id="finn.util.basic.make_build_dir">
-<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">make_build_dir</code><span class="sig-paren">(</span><em class="sig-param">prefix=''</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.make_build_dir" title="Permalink to this definition">¶</a></dt>
-<dd><p>Creates a temporary folder with given prefix to be used as a build dir.
-Use this function instead of tempfile.mkdtemp to ensure any generated files
-will survive on the host after the FINN Docker container exits.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.basic.pad_tensor_to_multiple_of">
-<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">pad_tensor_to_multiple_of</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">pad_to_dims</em>, <em class="sig-param">val=0</em>, <em class="sig-param">distr_pad=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.pad_tensor_to_multiple_of" title="Permalink to this definition">¶</a></dt>
-<dd><p>Pad each dimension of given NumPy ndarray using val, so that each
-dimension is a multiple of the respective value in pad_to_dims. -1 means
-do not pad that particular dimension. If distr_pad is False, all padding
-will be inserted after the existing values; otherwise it will be split
-evenly between before and after the existing values, with one extra value
-inserted after if the padding amount is not divisible by two.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.basic.random_string">
-<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">random_string</code><span class="sig-paren">(</span><em class="sig-param">stringLength=6</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.random_string" title="Permalink to this definition">¶</a></dt>
-<dd><p>Randomly generate a string of letters and digits.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.basic.remove_by_name">
-<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">remove_by_name</code><span class="sig-paren">(</span><em class="sig-param">container</em>, <em class="sig-param">name</em>, <em class="sig-param">name_field='name'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.remove_by_name" title="Permalink to this definition">¶</a></dt>
-<dd><p>Remove item from container by .name field if it exists</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.basic.roundup_to_integer_multiple">
-<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">roundup_to_integer_multiple</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">factor</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.roundup_to_integer_multiple" title="Permalink to this definition">¶</a></dt>
-<dd><p>Round up integer x to the nearest integer multiple of integer factor.
-Returns x if factor is set to -1. Both x and factor must otherwise be
-positive.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.util.data_packing">
-<span id="finn-util-data-packing-module"></span><h2>finn.util.data_packing module<a class="headerlink" href="#module-finn.util.data_packing" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.util.data_packing.array2hexstring">
-<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">array2hexstring</code><span class="sig-paren">(</span><em class="sig-param">array</em>, <em class="sig-param">dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">prefix='0x'</em>, <em class="sig-param">reverse=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.array2hexstring" title="Permalink to this definition">¶</a></dt>
-<dd><p>Pack given one-dimensional NumPy array with FINN DataType dtype into a hex
-string.
-Any BIPOLAR values will be converted to a single bit with a 0 representing
--1.
-pad_to_nbits is used to prepend leading zeros to ensure packed strings of
-fixed width. The minimum value for pad_to_nbits is 4, since a single hex
-digit is four bits. reverse can be used to reverse the array prior to
-packing.</p>
-<p>Examples:
-array2hexstring([1, 1, 1, 0], DataType.BINARY, 4) = “0xe”
-array2hexstring([1, 1, 1, 0], DataType.BINARY, 8) = “0x0e”
-array2hexstring([1, 1, 0, 1], DataType.BINARY, 4, reverse=True) = “0xb”
-array2hexstring([1, 1, 1, 0], DataType.BINARY, 8, reverse=True) = “0x07”</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.data_packing.finnpy_to_packed_bytearray">
-<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">finnpy_to_packed_bytearray</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.finnpy_to_packed_bytearray" title="Permalink to this definition">¶</a></dt>
-<dd><p>Given a numpy ndarray with FINN DataType dtype, pack the innermost
-dimension and return the packed representation as an ndarray of uint8.
-The packed innermost dimension will be padded to the nearest multiple
-of 8 bits. The returned ndarray has the same number of dimensions as the
-input.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.data_packing.hexstring2npbytearray">
-<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">hexstring2npbytearray</code><span class="sig-paren">(</span><em class="sig-param">hexstring</em>, <em class="sig-param">remove_prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.hexstring2npbytearray" title="Permalink to this definition">¶</a></dt>
-<dd><p>Convert a hex string into a NumPy array of dtype uint8. Examples:</p>
-<p>hexstring2npbytearray(“0f01”) = array([15,  1], dtype=uint8)</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.data_packing.npbytearray2hexstring">
-<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">npbytearray2hexstring</code><span class="sig-paren">(</span><em class="sig-param">npbytearray</em>, <em class="sig-param">prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.npbytearray2hexstring" title="Permalink to this definition">¶</a></dt>
-<dd><p>Convert a NumPy array of uint8 dtype into a hex string. Examples:</p>
-<p>npbytearray2hexstring(array([15,  1], dtype=uint8)) = “0x0f01”</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.data_packing.npy_to_rtlsim_input">
-<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">npy_to_rtlsim_input</code><span class="sig-paren">(</span><em class="sig-param">input_file</em>, <em class="sig-param">input_dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.npy_to_rtlsim_input" title="Permalink to this definition">¶</a></dt>
-<dd><p>Convert the multidimensional NumPy array of integers (stored as floats)
-from input_file into a flattened sequence of Python arbitrary-precision
-integers, packing the innermost dimension. See
-finn.util.basic.pack_innermost_dim_as_hex_string() for more info on how the
-packing works. If reverse_inner is set, the innermost dimension will be
-reversed prior to packing.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.data_packing.numpy_to_hls_code">
-<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">numpy_to_hls_code</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">hls_var_name</em>, <em class="sig-param">pack_innermost_dim=True</em>, <em class="sig-param">no_decl=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.numpy_to_hls_code" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return C++ code representation of a numpy ndarray with FINN DataType
-dtype, using hls_var_name as the resulting C++ variable name. If
-pack_innermost_dim is specified, the innermost dimension of the ndarray
-will be packed into a hex string using array2hexstring. If no_decl is
-set to True, no variable name and type will be generated as part of the
-emitted string.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.data_packing.pack_innermost_dim_as_hex_string">
-<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">pack_innermost_dim_as_hex_string</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.pack_innermost_dim_as_hex_string" title="Permalink to this definition">¶</a></dt>
-<dd><p>Pack the innermost dimension of the given numpy ndarray into hex
-strings using array2hexstring. Examples:</p>
-<p>A = [[1, 1, 1, 0], [0, 1, 1, 0]]
-eA = [“0e”, “06”]
-pack_innermost_dim_as_hex_string(A, DataType.BINARY, 8) == eA
-B = [[[3, 3], [3, 3]], [[1, 3], [3, 1]]]
-eB = [[ “0f”, “0f”], [“07”, “0d”]]
-pack_innermost_dim_as_hex_string(B, DataType.UINT2, 8) == eB</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.data_packing.packed_bytearray_to_finnpy">
-<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">packed_bytearray_to_finnpy</code><span class="sig-paren">(</span><em class="sig-param">packed_bytearray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">output_shape=None</em>, <em class="sig-param">reverse_inner=False</em>, <em class="sig-param">reverse_endian=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.packed_bytearray_to_finnpy" title="Permalink to this definition">¶</a></dt>
-<dd><p>Given a packed numpy uint8 ndarray, unpack it into a FINN array of
-given DataType. output_shape can be specified to remove padding from the
-packed dimension, or set to None to be inferred from the input.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.data_packing.rtlsim_output_to_npy">
-<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">rtlsim_output_to_npy</code><span class="sig-paren">(</span><em class="sig-param">output</em>, <em class="sig-param">path</em>, <em class="sig-param">dtype</em>, <em class="sig-param">shape</em>, <em class="sig-param">packedBits</em>, <em class="sig-param">targetBits</em>, <em class="sig-param">reverse_inner=True</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.rtlsim_output_to_npy" title="Permalink to this definition">¶</a></dt>
-<dd><p>Convert a flattened sequence of Python arbitrary-precision integers
-output into a NumPy array, saved as npy file at path. Each arbitrary-precision
-integer is assumed to be a packed array of targetBits-bit elements, which
-will be unpacked as the innermost dimension of the NumPy array.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.data_packing.unpack_innermost_dim_from_hex_string">
-<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">unpack_innermost_dim_from_hex_string</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">out_shape</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.unpack_innermost_dim_from_hex_string" title="Permalink to this definition">¶</a></dt>
-<dd><p>Convert a NumPy array of hex strings into a FINN NumPy array by unpacking
-the hex strings into the specified data type. out_shape can be specified
-such that any padding in the packing dimension is removed. If reverse_inner
-is set, the innermost unpacked dimension will be reversed.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.util.fpgadataflow">
-<span id="finn-util-fpgadataflow-module"></span><h2>finn.util.fpgadataflow module<a class="headerlink" href="#module-finn.util.fpgadataflow" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="finn.util.fpgadataflow.IPGenBuilder">
-<em class="property">class </em><code class="sig-prename descclassname">finn.util.fpgadataflow.</code><code class="sig-name descname">IPGenBuilder</code><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
-<dl class="method">
-<dt id="finn.util.fpgadataflow.IPGenBuilder.append_tcl">
-<code class="sig-name descname">append_tcl</code><span class="sig-paren">(</span><em class="sig-param">tcl_script</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.append_tcl" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.util.fpgadataflow.IPGenBuilder.build">
-<code class="sig-name descname">build</code><span class="sig-paren">(</span><em class="sig-param">code_gen_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.build" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path">
-<code class="sig-name descname">set_ipgen_path</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="function">
-<dt id="finn.util.fpgadataflow.pyverilate_stitched_ip">
-<code class="sig-prename descclassname">finn.util.fpgadataflow.</code><code class="sig-name descname">pyverilate_stitched_ip</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.pyverilate_stitched_ip" title="Permalink to this definition">¶</a></dt>
-<dd><p>Given a model with stitched IP, return a PyVerilator sim object.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.util.onnx">
-<span id="finn-util-onnx-module"></span><h2>finn.util.onnx module<a class="headerlink" href="#module-finn.util.onnx" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.util.onnx.valueinfo_to_tensor">
-<code class="sig-prename descclassname">finn.util.onnx.</code><code class="sig-name descname">valueinfo_to_tensor</code><span class="sig-paren">(</span><em class="sig-param">vi</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.onnx.valueinfo_to_tensor" title="Permalink to this definition">¶</a></dt>
-<dd><p>Creates an all-zeroes numpy tensor from a ValueInfoProto.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="module-finn.util.test">
-<span id="finn-util-test-module"></span><h2>finn.util.test module<a class="headerlink" href="#module-finn.util.test" title="Permalink to this headline">¶</a></h2>
-<dl class="function">
-<dt id="finn.util.test.get_test_model_def_fxn">
-<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_def_fxn</code><span class="sig-paren">(</span><em class="sig-param">netname</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_def_fxn" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="function">
-<dt id="finn.util.test.get_test_model_trained">
-<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_trained</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_trained" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="function">
-<dt id="finn.util.test.get_test_model_untrained">
-<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_untrained</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_untrained" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="function">
-<dt id="finn.util.test.get_trained_checkpoint">
-<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_trained_checkpoint</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_trained_checkpoint" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
 </div>
 <div class="section" id="module-finn.util">
 <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.util" title="Permalink to this headline">¶</a></h2>
@@ -435,8 +179,10 @@ is set, the innermost unpacked dimension will be reversed.</p>
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
+        <a href="finn.util.basic.html" class="btn btn-neutral float-right" title="finn.util.basic module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
       
-        <a href="finn.transformation.streamline.html" class="btn btn-neutral float-left" title="finn.transformation.streamline package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="finn.transformation.infer_shapes.html" class="btn btn-neutral float-left" title="finn.transformation.infer_shapes module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/docs/finn/_build/html/source_code/finn.util.onnx.html b/docs/finn/_build/html/source_code/finn.util.onnx.html
new file mode 100644
index 000000000..ef69d1d79
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.util.onnx.html
@@ -0,0 +1,216 @@
+
+
+<!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.util.onnx module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="finn.util.test module" href="finn.util.test.html" />
+    <link rel="prev" title="finn.util.fpgadataflow module" href="finn.util.fpgadataflow.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.util.html">finn.util package</a> &raquo;</li>
+        
+      <li>finn.util.onnx module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.util.onnx.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="module-finn.util.onnx">
+<span id="finn-util-onnx-module"></span><h1>finn.util.onnx module<a class="headerlink" href="#module-finn.util.onnx" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.util.onnx.valueinfo_to_tensor">
+<code class="sig-prename descclassname">finn.util.onnx.</code><code class="sig-name descname">valueinfo_to_tensor</code><span class="sig-paren">(</span><em class="sig-param">vi</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.onnx.valueinfo_to_tensor" title="Permalink to this definition">¶</a></dt>
+<dd><p>Creates an all-zeroes numpy tensor from a ValueInfoProto.</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="finn.util.test.html" class="btn btn-neutral float-right" title="finn.util.test module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="finn.util.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.util.fpgadataflow module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/finn.util.test.html b/docs/finn/_build/html/source_code/finn.util.test.html
new file mode 100644
index 000000000..6c9a032f1
--- /dev/null
+++ b/docs/finn/_build/html/source_code/finn.util.test.html
@@ -0,0 +1,227 @@
+
+
+<!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.util.test module &mdash; FINN  documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="prev" title="finn.util.onnx module" href="finn.util.onnx.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>
+<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>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">FINN</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../source_code.html">Source Code</a> &raquo;</li>
+        
+          <li><a href="finn.html">finn package</a> &raquo;</li>
+        
+          <li><a href="finn.util.html">finn.util package</a> &raquo;</li>
+        
+      <li>finn.util.test module</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/source_code/finn.util.test.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="module-finn.util.test">
+<span id="finn-util-test-module"></span><h1>finn.util.test module<a class="headerlink" href="#module-finn.util.test" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="finn.util.test.get_test_model_def_fxn">
+<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_def_fxn</code><span class="sig-paren">(</span><em class="sig-param">netname</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_def_fxn" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="finn.util.test.get_test_model_trained">
+<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_trained</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_trained" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="finn.util.test.get_test_model_untrained">
+<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_untrained</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_untrained" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="finn.util.test.get_trained_checkpoint">
+<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_trained_checkpoint</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_trained_checkpoint" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+      
+        <a href="finn.util.onnx.html" class="btn btn-neutral float-left" title="finn.util.onnx module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Y. Umuroglu, J. Petri-Koenig
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/source_code/modules.html b/docs/finn/_build/html/source_code/modules.html
index bd87c9b3e..9ab863aa3 100644
--- a/docs/finn/_build/html/source_code/modules.html
+++ b/docs/finn/_build/html/source_code/modules.html
@@ -155,51 +155,28 @@
 <li class="toctree-l3"><a class="reference internal" href="finn.analysis.html">finn.analysis package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="finn.analysis.html#subpackages">Subpackages</a></li>
 <li class="toctree-l4"><a class="reference internal" href="finn.analysis.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.analysis.html#module-finn.analysis.topology">finn.analysis.topology module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.analysis.html#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes module</a></li>
 <li class="toctree-l4"><a class="reference internal" href="finn.analysis.html#module-finn.analysis">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="finn.core.html">finn.core package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="finn.core.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.datatype">finn.core.datatype module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.execute_custom_node">finn.core.execute_custom_node module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.modelwrapper">finn.core.modelwrapper module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.onnx_exec">finn.core.onnx_exec module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.remote_exec">finn.core.remote_exec module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.rtlsim_exec">finn.core.rtlsim_exec module</a></li>
 <li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="finn.custom_op.html">finn.custom_op package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#subpackages">Subpackages</a></li>
 <li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.registry">finn.custom_op.registry module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount module</a></li>
 <li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="finn.transformation.html">finn.transformation package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#subpackages">Subpackages</a></li>
 <li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.fold_constants">finn.transformation.fold_constants module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.general">finn.transformation.general module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes module</a></li>
 <li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="finn.util.html">finn.util package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="finn.util.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util.basic">finn.util.basic module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util.data_packing">finn.util.data_packing module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util.fpgadataflow">finn.util.fpgadataflow module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util.onnx">finn.util.onnx module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util.test">finn.util.test module</a></li>
 <li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util">Module contents</a></li>
 </ul>
 </li>
diff --git a/docs/finn/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst b/docs/finn/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst
new file mode 100644
index 000000000..616064c16
--- /dev/null
+++ b/docs/finn/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst
@@ -0,0 +1,7 @@
+finn.analysis.fpgadataflow.hls\_synth\_res\_estimation module
+=============================================================
+
+.. automodule:: finn.analysis.fpgadataflow.hls_synth_res_estimation
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.analysis.fpgadataflow.res_estimation.rst b/docs/finn/source_code/finn.analysis.fpgadataflow.res_estimation.rst
new file mode 100644
index 000000000..eb5b773b1
--- /dev/null
+++ b/docs/finn/source_code/finn.analysis.fpgadataflow.res_estimation.rst
@@ -0,0 +1,7 @@
+finn.analysis.fpgadataflow.res\_estimation module
+=================================================
+
+.. automodule:: finn.analysis.fpgadataflow.res_estimation
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.analysis.fpgadataflow.rst b/docs/finn/source_code/finn.analysis.fpgadataflow.rst
index cd8075d75..4f5cd7cbb 100644
--- a/docs/finn/source_code/finn.analysis.fpgadataflow.rst
+++ b/docs/finn/source_code/finn.analysis.fpgadataflow.rst
@@ -4,22 +4,10 @@ finn.analysis.fpgadataflow package
 Submodules
 ----------
 
-finn.analysis.fpgadataflow.hls\_synth\_res\_estimation module
--------------------------------------------------------------
-
-.. automodule:: finn.analysis.fpgadataflow.hls_synth_res_estimation
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.analysis.fpgadataflow.res\_estimation module
--------------------------------------------------
-
-.. automodule:: finn.analysis.fpgadataflow.res_estimation
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.analysis.fpgadataflow.hls_synth_res_estimation
+   finn.analysis.fpgadataflow.res_estimation
 
 Module contents
 ---------------
diff --git a/docs/finn/source_code/finn.analysis.rst b/docs/finn/source_code/finn.analysis.rst
index e4eec7717..079959859 100644
--- a/docs/finn/source_code/finn.analysis.rst
+++ b/docs/finn/source_code/finn.analysis.rst
@@ -11,22 +11,10 @@ Subpackages
 Submodules
 ----------
 
-finn.analysis.topology module
------------------------------
-
-.. automodule:: finn.analysis.topology
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.analysis.verify\_custom\_nodes module
-------------------------------------------
-
-.. automodule:: finn.analysis.verify_custom_nodes
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.analysis.topology
+   finn.analysis.verify_custom_nodes
 
 Module contents
 ---------------
diff --git a/docs/finn/source_code/finn.analysis.topology.rst b/docs/finn/source_code/finn.analysis.topology.rst
new file mode 100644
index 000000000..896f3fb8d
--- /dev/null
+++ b/docs/finn/source_code/finn.analysis.topology.rst
@@ -0,0 +1,7 @@
+finn.analysis.topology module
+=============================
+
+.. automodule:: finn.analysis.topology
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.analysis.verify_custom_nodes.rst b/docs/finn/source_code/finn.analysis.verify_custom_nodes.rst
new file mode 100644
index 000000000..60e1a33e2
--- /dev/null
+++ b/docs/finn/source_code/finn.analysis.verify_custom_nodes.rst
@@ -0,0 +1,7 @@
+finn.analysis.verify\_custom\_nodes module
+==========================================
+
+.. automodule:: finn.analysis.verify_custom_nodes
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.core.datatype.rst b/docs/finn/source_code/finn.core.datatype.rst
new file mode 100644
index 000000000..d55952ecf
--- /dev/null
+++ b/docs/finn/source_code/finn.core.datatype.rst
@@ -0,0 +1,7 @@
+finn.core.datatype module
+=========================
+
+.. automodule:: finn.core.datatype
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.core.execute_custom_node.rst b/docs/finn/source_code/finn.core.execute_custom_node.rst
new file mode 100644
index 000000000..94d8ea143
--- /dev/null
+++ b/docs/finn/source_code/finn.core.execute_custom_node.rst
@@ -0,0 +1,7 @@
+finn.core.execute\_custom\_node module
+======================================
+
+.. automodule:: finn.core.execute_custom_node
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.core.modelwrapper.rst b/docs/finn/source_code/finn.core.modelwrapper.rst
new file mode 100644
index 000000000..5bd74864b
--- /dev/null
+++ b/docs/finn/source_code/finn.core.modelwrapper.rst
@@ -0,0 +1,7 @@
+finn.core.modelwrapper module
+=============================
+
+.. automodule:: finn.core.modelwrapper
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.core.onnx_exec.rst b/docs/finn/source_code/finn.core.onnx_exec.rst
new file mode 100644
index 000000000..87bf9d29d
--- /dev/null
+++ b/docs/finn/source_code/finn.core.onnx_exec.rst
@@ -0,0 +1,7 @@
+finn.core.onnx\_exec module
+===========================
+
+.. automodule:: finn.core.onnx_exec
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.core.remote_exec.rst b/docs/finn/source_code/finn.core.remote_exec.rst
new file mode 100644
index 000000000..39c470eb0
--- /dev/null
+++ b/docs/finn/source_code/finn.core.remote_exec.rst
@@ -0,0 +1,7 @@
+finn.core.remote\_exec module
+=============================
+
+.. automodule:: finn.core.remote_exec
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.core.rst b/docs/finn/source_code/finn.core.rst
index 6563d7a43..acb9de8a7 100644
--- a/docs/finn/source_code/finn.core.rst
+++ b/docs/finn/source_code/finn.core.rst
@@ -4,54 +4,14 @@ finn.core package
 Submodules
 ----------
 
-finn.core.datatype module
--------------------------
-
-.. automodule:: finn.core.datatype
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.core.execute\_custom\_node module
---------------------------------------
-
-.. automodule:: finn.core.execute_custom_node
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.core.modelwrapper module
------------------------------
-
-.. automodule:: finn.core.modelwrapper
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.core.onnx\_exec module
----------------------------
-
-.. automodule:: finn.core.onnx_exec
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.core.remote\_exec module
------------------------------
-
-.. automodule:: finn.core.remote_exec
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.core.rtlsim\_exec module
------------------------------
-
-.. automodule:: finn.core.rtlsim_exec
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
+.. toctree::
+
+   finn.core.datatype
+   finn.core.execute_custom_node
+   finn.core.modelwrapper
+   finn.core.onnx_exec
+   finn.core.remote_exec
+   finn.core.rtlsim_exec
 
 Module contents
 ---------------
diff --git a/docs/finn/source_code/finn.core.rtlsim_exec.rst b/docs/finn/source_code/finn.core.rtlsim_exec.rst
new file mode 100644
index 000000000..9d4acef6e
--- /dev/null
+++ b/docs/finn/source_code/finn.core.rtlsim_exec.rst
@@ -0,0 +1,7 @@
+finn.core.rtlsim\_exec module
+=============================
+
+.. automodule:: finn.core.rtlsim_exec
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst
new file mode 100644
index 000000000..aa36e86ee
--- /dev/null
+++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst
@@ -0,0 +1,7 @@
+finn.custom\_op.fpgadataflow.convolutioninputgenerator module
+=============================================================
+
+.. automodule:: finn.custom_op.fpgadataflow.convolutioninputgenerator
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.rst
index 632c021be..79a05080b 100644
--- a/docs/finn/source_code/finn.custom_op.fpgadataflow.rst
+++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.rst
@@ -4,46 +4,13 @@ finn.custom\_op.fpgadataflow package
 Submodules
 ----------
 
-finn.custom\_op.fpgadataflow.convolutioninputgenerator module
--------------------------------------------------------------
-
-.. automodule:: finn.custom_op.fpgadataflow.convolutioninputgenerator
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.fpgadataflow.streamingfclayer\_batch module
------------------------------------------------------------
-
-.. automodule:: finn.custom_op.fpgadataflow.streamingfclayer_batch
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.fpgadataflow.streamingmaxpool\_batch module
------------------------------------------------------------
-
-.. automodule:: finn.custom_op.fpgadataflow.streamingmaxpool_batch
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.fpgadataflow.templates module
----------------------------------------------
-
-.. automodule:: finn.custom_op.fpgadataflow.templates
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.fpgadataflow.tlastmarker module
------------------------------------------------
-
-.. automodule:: finn.custom_op.fpgadataflow.tlastmarker
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.custom_op.fpgadataflow.convolutioninputgenerator
+   finn.custom_op.fpgadataflow.streamingfclayer_batch
+   finn.custom_op.fpgadataflow.streamingmaxpool_batch
+   finn.custom_op.fpgadataflow.templates
+   finn.custom_op.fpgadataflow.tlastmarker
 
 Module contents
 ---------------
diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst
new file mode 100644
index 000000000..45a9a963a
--- /dev/null
+++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst
@@ -0,0 +1,7 @@
+finn.custom\_op.fpgadataflow.streamingfclayer\_batch module
+===========================================================
+
+.. automodule:: finn.custom_op.fpgadataflow.streamingfclayer_batch
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst
new file mode 100644
index 000000000..5bf7f666a
--- /dev/null
+++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst
@@ -0,0 +1,7 @@
+finn.custom\_op.fpgadataflow.streamingmaxpool\_batch module
+===========================================================
+
+.. automodule:: finn.custom_op.fpgadataflow.streamingmaxpool_batch
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.templates.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.templates.rst
new file mode 100644
index 000000000..a630867a4
--- /dev/null
+++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.templates.rst
@@ -0,0 +1,7 @@
+finn.custom\_op.fpgadataflow.templates module
+=============================================
+
+.. automodule:: finn.custom_op.fpgadataflow.templates
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst
new file mode 100644
index 000000000..8a087851c
--- /dev/null
+++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst
@@ -0,0 +1,7 @@
+finn.custom\_op.fpgadataflow.tlastmarker module
+===============================================
+
+.. automodule:: finn.custom_op.fpgadataflow.tlastmarker
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.custom_op.multithreshold.rst b/docs/finn/source_code/finn.custom_op.multithreshold.rst
new file mode 100644
index 000000000..3cdf3cee7
--- /dev/null
+++ b/docs/finn/source_code/finn.custom_op.multithreshold.rst
@@ -0,0 +1,7 @@
+finn.custom\_op.multithreshold module
+=====================================
+
+.. automodule:: finn.custom_op.multithreshold
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.custom_op.registry.rst b/docs/finn/source_code/finn.custom_op.registry.rst
new file mode 100644
index 000000000..7805e833b
--- /dev/null
+++ b/docs/finn/source_code/finn.custom_op.registry.rst
@@ -0,0 +1,7 @@
+finn.custom\_op.registry module
+===============================
+
+.. automodule:: finn.custom_op.registry
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.custom_op.rst b/docs/finn/source_code/finn.custom_op.rst
index a984822ae..fd2f070f2 100644
--- a/docs/finn/source_code/finn.custom_op.rst
+++ b/docs/finn/source_code/finn.custom_op.rst
@@ -11,38 +11,12 @@ Subpackages
 Submodules
 ----------
 
-finn.custom\_op.multithreshold module
--------------------------------------
-
-.. automodule:: finn.custom_op.multithreshold
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.registry module
--------------------------------
-
-.. automodule:: finn.custom_op.registry
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.streamingdataflowpartition module
--------------------------------------------------
-
-.. automodule:: finn.custom_op.streamingdataflowpartition
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.custom\_op.xnorpopcount module
------------------------------------
-
-.. automodule:: finn.custom_op.xnorpopcount
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.custom_op.multithreshold
+   finn.custom_op.registry
+   finn.custom_op.streamingdataflowpartition
+   finn.custom_op.xnorpopcount
 
 Module contents
 ---------------
diff --git a/docs/finn/source_code/finn.custom_op.streamingdataflowpartition.rst b/docs/finn/source_code/finn.custom_op.streamingdataflowpartition.rst
new file mode 100644
index 000000000..1d07f01ce
--- /dev/null
+++ b/docs/finn/source_code/finn.custom_op.streamingdataflowpartition.rst
@@ -0,0 +1,7 @@
+finn.custom\_op.streamingdataflowpartition module
+=================================================
+
+.. automodule:: finn.custom_op.streamingdataflowpartition
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.custom_op.xnorpopcount.rst b/docs/finn/source_code/finn.custom_op.xnorpopcount.rst
new file mode 100644
index 000000000..d91608278
--- /dev/null
+++ b/docs/finn/source_code/finn.custom_op.xnorpopcount.rst
@@ -0,0 +1,7 @@
+finn.custom\_op.xnorpopcount module
+===================================
+
+.. automodule:: finn.custom_op.xnorpopcount
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.batchnorm_to_affine.rst b/docs/finn/source_code/finn.transformation.batchnorm_to_affine.rst
new file mode 100644
index 000000000..8d0ecfb75
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.batchnorm_to_affine.rst
@@ -0,0 +1,7 @@
+finn.transformation.batchnorm\_to\_affine module
+================================================
+
+.. automodule:: finn.transformation.batchnorm_to_affine
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.bipolar_to_xnor.rst b/docs/finn/source_code/finn.transformation.bipolar_to_xnor.rst
new file mode 100644
index 000000000..dc34f4def
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.bipolar_to_xnor.rst
@@ -0,0 +1,7 @@
+finn.transformation.bipolar\_to\_xnor module
+============================================
+
+.. automodule:: finn.transformation.bipolar_to_xnor
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fold_constants.rst b/docs/finn/source_code/finn.transformation.fold_constants.rst
new file mode 100644
index 000000000..792f8bfe0
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fold_constants.rst
@@ -0,0 +1,7 @@
+finn.transformation.fold\_constants module
+==========================================
+
+.. automodule:: finn.transformation.fold_constants
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.cleanup.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.cleanup.rst
new file mode 100644
index 000000000..38cc49897
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.cleanup.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.cleanup module
+===============================================
+
+.. automodule:: finn.transformation.fpgadataflow.cleanup
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst
new file mode 100644
index 000000000..158ad7602
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.codegen\_ipgen module
+======================================================
+
+.. automodule:: finn.transformation.fpgadataflow.codegen_ipgen
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst
new file mode 100644
index 000000000..d3f7434e3
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.codegen\_ipstitch module
+=========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.codegen_ipstitch
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst
new file mode 100644
index 000000000..28796da29
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.codegen\_npysim module
+=======================================================
+
+.. automodule:: finn.transformation.fpgadataflow.codegen_npysim
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.compile.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.compile.rst
new file mode 100644
index 000000000..3d36a046b
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.compile.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.compile module
+===============================================
+
+.. automodule:: finn.transformation.fpgadataflow.compile
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst
new file mode 100644
index 000000000..0ae11a41b
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.convert\_to\_hls\_layers module
+================================================================
+
+.. automodule:: finn.transformation.fpgadataflow.convert_to_hls_layers
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst
new file mode 100644
index 000000000..4827fd5b2
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.create\_dataflow\_partition module
+===================================================================
+
+.. automodule:: finn.transformation.fpgadataflow.create_dataflow_partition
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst
new file mode 100644
index 000000000..47af9049f
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.hlssynth\_ipgen module
+=======================================================
+
+.. automodule:: finn.transformation.fpgadataflow.hlssynth_ipgen
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst
new file mode 100644
index 000000000..d4bd00b8c
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.insert\_tlastmarker module
+===========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.insert_tlastmarker
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.make_deployment.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.make_deployment.rst
new file mode 100644
index 000000000..130c91989
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.make_deployment.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.make\_deployment module
+========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.make_deployment
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst
new file mode 100644
index 000000000..5238f0846
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.make\_pynq\_driver module
+==========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.make_pynq_driver
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst
new file mode 100644
index 000000000..1d040887f
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.make\_pynq\_proj module
+========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.make_pynq_proj
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.rst
index 435eacf2c..f99673391 100644
--- a/docs/finn/source_code/finn.transformation.fpgadataflow.rst
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.rst
@@ -4,126 +4,23 @@ finn.transformation.fpgadataflow package
 Submodules
 ----------
 
-finn.transformation.fpgadataflow.cleanup module
------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.cleanup
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.codegen\_ipgen module
-------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.codegen_ipgen
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.codegen\_ipstitch module
----------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.codegen_ipstitch
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.codegen\_npysim module
--------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.codegen_npysim
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.compile module
------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.compile
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.convert\_to\_hls\_layers module
-----------------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.convert_to_hls_layers
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.create\_dataflow\_partition module
--------------------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.create_dataflow_partition
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.hlssynth\_ipgen module
--------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.hlssynth_ipgen
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.insert\_tlastmarker module
------------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.insert_tlastmarker
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.make\_deployment module
---------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.make_deployment
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.make\_pynq\_driver module
-----------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.make_pynq_driver
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.make\_pynq\_proj module
---------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.make_pynq_proj
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.set\_exec\_mode module
--------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.set_exec_mode
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.synth\_pynq\_proj module
----------------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.synth_pynq_proj
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fpgadataflow.templates module
--------------------------------------------------
-
-.. automodule:: finn.transformation.fpgadataflow.templates
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
+.. toctree::
+
+   finn.transformation.fpgadataflow.cleanup
+   finn.transformation.fpgadataflow.codegen_ipgen
+   finn.transformation.fpgadataflow.codegen_ipstitch
+   finn.transformation.fpgadataflow.codegen_npysim
+   finn.transformation.fpgadataflow.compile
+   finn.transformation.fpgadataflow.convert_to_hls_layers
+   finn.transformation.fpgadataflow.create_dataflow_partition
+   finn.transformation.fpgadataflow.hlssynth_ipgen
+   finn.transformation.fpgadataflow.insert_tlastmarker
+   finn.transformation.fpgadataflow.make_deployment
+   finn.transformation.fpgadataflow.make_pynq_driver
+   finn.transformation.fpgadataflow.make_pynq_proj
+   finn.transformation.fpgadataflow.set_exec_mode
+   finn.transformation.fpgadataflow.synth_pynq_proj
+   finn.transformation.fpgadataflow.templates
 
 Module contents
 ---------------
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst
new file mode 100644
index 000000000..7affa78b4
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.set\_exec\_mode module
+=======================================================
+
+.. automodule:: finn.transformation.fpgadataflow.set_exec_mode
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst
new file mode 100644
index 000000000..e902991a6
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.synth\_pynq\_proj module
+=========================================================
+
+.. automodule:: finn.transformation.fpgadataflow.synth_pynq_proj
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.templates.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.templates.rst
new file mode 100644
index 000000000..a62f37783
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.templates.rst
@@ -0,0 +1,7 @@
+finn.transformation.fpgadataflow.templates module
+=================================================
+
+.. automodule:: finn.transformation.fpgadataflow.templates
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.general.rst b/docs/finn/source_code/finn.transformation.general.rst
new file mode 100644
index 000000000..bfae28100
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.general.rst
@@ -0,0 +1,7 @@
+finn.transformation.general module
+==================================
+
+.. automodule:: finn.transformation.general
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.infer_datatypes.rst b/docs/finn/source_code/finn.transformation.infer_datatypes.rst
new file mode 100644
index 000000000..939d15521
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.infer_datatypes.rst
@@ -0,0 +1,7 @@
+finn.transformation.infer\_datatypes module
+===========================================
+
+.. automodule:: finn.transformation.infer_datatypes
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.infer_shapes.rst b/docs/finn/source_code/finn.transformation.infer_shapes.rst
new file mode 100644
index 000000000..946955706
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.infer_shapes.rst
@@ -0,0 +1,7 @@
+finn.transformation.infer\_shapes module
+========================================
+
+.. automodule:: finn.transformation.infer_shapes
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.rst b/docs/finn/source_code/finn.transformation.rst
index 172f6e300..da9618ed6 100644
--- a/docs/finn/source_code/finn.transformation.rst
+++ b/docs/finn/source_code/finn.transformation.rst
@@ -12,54 +12,14 @@ Subpackages
 Submodules
 ----------
 
-finn.transformation.batchnorm\_to\_affine module
-------------------------------------------------
-
-.. automodule:: finn.transformation.batchnorm_to_affine
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.bipolar\_to\_xnor module
---------------------------------------------
-
-.. automodule:: finn.transformation.bipolar_to_xnor
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.fold\_constants module
-------------------------------------------
-
-.. automodule:: finn.transformation.fold_constants
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.general module
-----------------------------------
-
-.. automodule:: finn.transformation.general
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.infer\_datatypes module
--------------------------------------------
-
-.. automodule:: finn.transformation.infer_datatypes
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.infer\_shapes module
-----------------------------------------
-
-.. automodule:: finn.transformation.infer_shapes
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.transformation.batchnorm_to_affine
+   finn.transformation.bipolar_to_xnor
+   finn.transformation.fold_constants
+   finn.transformation.general
+   finn.transformation.infer_datatypes
+   finn.transformation.infer_shapes
 
 Module contents
 ---------------
diff --git a/docs/finn/source_code/finn.transformation.streamline.absorb.rst b/docs/finn/source_code/finn.transformation.streamline.absorb.rst
new file mode 100644
index 000000000..597a98944
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.streamline.absorb.rst
@@ -0,0 +1,7 @@
+finn.transformation.streamline.absorb module
+============================================
+
+.. automodule:: finn.transformation.streamline.absorb
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.streamline.collapse_repeated.rst b/docs/finn/source_code/finn.transformation.streamline.collapse_repeated.rst
new file mode 100644
index 000000000..a15f72aea
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.streamline.collapse_repeated.rst
@@ -0,0 +1,7 @@
+finn.transformation.streamline.collapse\_repeated module
+========================================================
+
+.. automodule:: finn.transformation.streamline.collapse_repeated
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.streamline.reorder.rst b/docs/finn/source_code/finn.transformation.streamline.reorder.rst
new file mode 100644
index 000000000..ac969e132
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.streamline.reorder.rst
@@ -0,0 +1,7 @@
+finn.transformation.streamline.reorder module
+=============================================
+
+.. automodule:: finn.transformation.streamline.reorder
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.streamline.round_thresholds.rst b/docs/finn/source_code/finn.transformation.streamline.round_thresholds.rst
new file mode 100644
index 000000000..031c65d07
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.streamline.round_thresholds.rst
@@ -0,0 +1,7 @@
+finn.transformation.streamline.round\_thresholds module
+=======================================================
+
+.. automodule:: finn.transformation.streamline.round_thresholds
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.transformation.streamline.rst b/docs/finn/source_code/finn.transformation.streamline.rst
index 33e593095..5b3a88384 100644
--- a/docs/finn/source_code/finn.transformation.streamline.rst
+++ b/docs/finn/source_code/finn.transformation.streamline.rst
@@ -4,46 +4,13 @@ finn.transformation.streamline package
 Submodules
 ----------
 
-finn.transformation.streamline.absorb module
---------------------------------------------
-
-.. automodule:: finn.transformation.streamline.absorb
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.streamline.collapse\_repeated module
---------------------------------------------------------
-
-.. automodule:: finn.transformation.streamline.collapse_repeated
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.streamline.reorder module
----------------------------------------------
-
-.. automodule:: finn.transformation.streamline.reorder
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.streamline.round\_thresholds module
--------------------------------------------------------
-
-.. automodule:: finn.transformation.streamline.round_thresholds
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.transformation.streamline.sign\_to\_thres module
------------------------------------------------------
-
-.. automodule:: finn.transformation.streamline.sign_to_thres
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.transformation.streamline.absorb
+   finn.transformation.streamline.collapse_repeated
+   finn.transformation.streamline.reorder
+   finn.transformation.streamline.round_thresholds
+   finn.transformation.streamline.sign_to_thres
 
 Module contents
 ---------------
diff --git a/docs/finn/source_code/finn.transformation.streamline.sign_to_thres.rst b/docs/finn/source_code/finn.transformation.streamline.sign_to_thres.rst
new file mode 100644
index 000000000..166717eb3
--- /dev/null
+++ b/docs/finn/source_code/finn.transformation.streamline.sign_to_thres.rst
@@ -0,0 +1,7 @@
+finn.transformation.streamline.sign\_to\_thres module
+=====================================================
+
+.. automodule:: finn.transformation.streamline.sign_to_thres
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.util.basic.rst b/docs/finn/source_code/finn.util.basic.rst
new file mode 100644
index 000000000..10e8e1ac1
--- /dev/null
+++ b/docs/finn/source_code/finn.util.basic.rst
@@ -0,0 +1,7 @@
+finn.util.basic module
+======================
+
+.. automodule:: finn.util.basic
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.util.data_packing.rst b/docs/finn/source_code/finn.util.data_packing.rst
new file mode 100644
index 000000000..6a39cc14b
--- /dev/null
+++ b/docs/finn/source_code/finn.util.data_packing.rst
@@ -0,0 +1,7 @@
+finn.util.data\_packing module
+==============================
+
+.. automodule:: finn.util.data_packing
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.util.fpgadataflow.rst b/docs/finn/source_code/finn.util.fpgadataflow.rst
new file mode 100644
index 000000000..3472ed477
--- /dev/null
+++ b/docs/finn/source_code/finn.util.fpgadataflow.rst
@@ -0,0 +1,7 @@
+finn.util.fpgadataflow module
+=============================
+
+.. automodule:: finn.util.fpgadataflow
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.util.onnx.rst b/docs/finn/source_code/finn.util.onnx.rst
new file mode 100644
index 000000000..057cb07ca
--- /dev/null
+++ b/docs/finn/source_code/finn.util.onnx.rst
@@ -0,0 +1,7 @@
+finn.util.onnx module
+=====================
+
+.. automodule:: finn.util.onnx
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/finn/source_code/finn.util.rst b/docs/finn/source_code/finn.util.rst
index 1c85bcd44..c66d189b3 100644
--- a/docs/finn/source_code/finn.util.rst
+++ b/docs/finn/source_code/finn.util.rst
@@ -4,46 +4,13 @@ finn.util package
 Submodules
 ----------
 
-finn.util.basic module
-----------------------
-
-.. automodule:: finn.util.basic
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.util.data\_packing module
-------------------------------
-
-.. automodule:: finn.util.data_packing
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.util.fpgadataflow module
------------------------------
-
-.. automodule:: finn.util.fpgadataflow
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.util.onnx module
----------------------
-
-.. automodule:: finn.util.onnx
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-finn.util.test module
----------------------
-
-.. automodule:: finn.util.test
-   :members:
-   :undoc-members:
-   :show-inheritance:
+.. toctree::
 
+   finn.util.basic
+   finn.util.data_packing
+   finn.util.fpgadataflow
+   finn.util.onnx
+   finn.util.test
 
 Module contents
 ---------------
diff --git a/docs/finn/source_code/finn.util.test.rst b/docs/finn/source_code/finn.util.test.rst
new file mode 100644
index 000000000..3fe1bc15e
--- /dev/null
+++ b/docs/finn/source_code/finn.util.test.rst
@@ -0,0 +1,7 @@
+finn.util.test module
+=====================
+
+.. automodule:: finn.util.test
+   :members:
+   :undoc-members:
+   :show-inheritance:
-- 
GitLab