diff --git a/docs/finn/_build/doctrees/environment.pickle b/docs/finn/_build/doctrees/environment.pickle
index db73cdb3d6629496c1d514b4412d95aad0cdb2ce..31b218738648a933793de0dd609f43751f0be3f1 100644
Binary files a/docs/finn/_build/doctrees/environment.pickle and b/docs/finn/_build/doctrees/environment.pickle differ
diff --git a/docs/finn/_build/doctrees/src.doctree b/docs/finn/_build/doctrees/src.doctree
index d71667b930ca0ee273c54937c32309d0641d3f8e..effdd10387320a6fcbce245d0bbbee330b41883e 100644
Binary files a/docs/finn/_build/doctrees/src.doctree and b/docs/finn/_build/doctrees/src.doctree differ
diff --git a/docs/finn/_build/doctrees/src.finn.analysis.doctree b/docs/finn/_build/doctrees/src.finn.analysis.doctree
index 537a9eb857e80c8d3cbe6886828cdef7bf00afba..4a8f4e7ce7dc0b2bb6a258960c17e41a817d3c69 100644
Binary files a/docs/finn/_build/doctrees/src.finn.analysis.doctree and b/docs/finn/_build/doctrees/src.finn.analysis.doctree differ
diff --git a/docs/finn/_build/doctrees/src.finn.analysis.fpgadataflow.doctree b/docs/finn/_build/doctrees/src.finn.analysis.fpgadataflow.doctree
index 107cf3a879dfe49d9fbdf80241468c71890e7218..e0d66e2d6de1bcb04b67fee1cf7d2aa92f98b695 100644
Binary files a/docs/finn/_build/doctrees/src.finn.analysis.fpgadataflow.doctree and b/docs/finn/_build/doctrees/src.finn.analysis.fpgadataflow.doctree differ
diff --git a/docs/finn/_build/doctrees/src.finn.core.doctree b/docs/finn/_build/doctrees/src.finn.core.doctree
index 06a5ac92b36d3535b27233b9e82d7ae502b7055f..391b283db87ea052186bb28e9967c77d1120814e 100644
Binary files a/docs/finn/_build/doctrees/src.finn.core.doctree and b/docs/finn/_build/doctrees/src.finn.core.doctree differ
diff --git a/docs/finn/_build/doctrees/src.finn.custom_op.doctree b/docs/finn/_build/doctrees/src.finn.custom_op.doctree
index 3d6b71eb873e4071d0613924d309092e80a2103a..385263a26e09aff393a9678199e40ca505c41f14 100644
Binary files a/docs/finn/_build/doctrees/src.finn.custom_op.doctree and b/docs/finn/_build/doctrees/src.finn.custom_op.doctree differ
diff --git a/docs/finn/_build/doctrees/src.finn.custom_op.fpgadataflow.doctree b/docs/finn/_build/doctrees/src.finn.custom_op.fpgadataflow.doctree
index 0fe9a8e1172fc91a4003101ae3bb8c582ba7391f..7f8ef8497181b3b51e256dca3d9535b9aa6648fa 100644
Binary files a/docs/finn/_build/doctrees/src.finn.custom_op.fpgadataflow.doctree and b/docs/finn/_build/doctrees/src.finn.custom_op.fpgadataflow.doctree differ
diff --git a/docs/finn/_build/doctrees/src.finn.doctree b/docs/finn/_build/doctrees/src.finn.doctree
index 2c58e6ccbbfde1ef72247beb6b45cd87034fdc1c..d8bf6824f2f39ee4cc130bf10504e2d11e32ba0b 100644
Binary files a/docs/finn/_build/doctrees/src.finn.doctree and b/docs/finn/_build/doctrees/src.finn.doctree differ
diff --git a/docs/finn/_build/doctrees/src.finn.transformation.doctree b/docs/finn/_build/doctrees/src.finn.transformation.doctree
index 04d3e4ed4ac83d23cae0df7a51a5e5f7c6bf4aac..188aa0d987f5b57ed21c44a1dcd8a0b880807335 100644
Binary files a/docs/finn/_build/doctrees/src.finn.transformation.doctree and b/docs/finn/_build/doctrees/src.finn.transformation.doctree differ
diff --git a/docs/finn/_build/doctrees/src.finn.transformation.fpgadataflow.doctree b/docs/finn/_build/doctrees/src.finn.transformation.fpgadataflow.doctree
index e03344480c1ebd48a08ced5d12185a0330580224..d7140a2a9a72b9aafd1194f6c25c2600044cfa3f 100644
Binary files a/docs/finn/_build/doctrees/src.finn.transformation.fpgadataflow.doctree and b/docs/finn/_build/doctrees/src.finn.transformation.fpgadataflow.doctree differ
diff --git a/docs/finn/_build/doctrees/src.finn.transformation.streamline.doctree b/docs/finn/_build/doctrees/src.finn.transformation.streamline.doctree
index 7ca4e6ad55290f4099446bf15837a107d6f77c32..fc4787c61b9dc5c94645cc5b08e29a6b1317f55a 100644
Binary files a/docs/finn/_build/doctrees/src.finn.transformation.streamline.doctree and b/docs/finn/_build/doctrees/src.finn.transformation.streamline.doctree differ
diff --git a/docs/finn/_build/doctrees/src.finn.util.doctree b/docs/finn/_build/doctrees/src.finn.util.doctree
index f8b86c8b13813fb4a809a9e606a2450248c017eb..b8ec438f0cf9c2738df4b83f592496f2209345bd 100644
Binary files a/docs/finn/_build/doctrees/src.finn.util.doctree and b/docs/finn/_build/doctrees/src.finn.util.doctree differ
diff --git a/docs/finn/_build/html/genindex.html b/docs/finn/_build/html/genindex.html
index 256c0a1c29c55568ed3e120d3b318ba06caf666f..7b89b2f704d7c4c1a6066b50d285087e963a1d21 100644
--- a/docs/finn/_build/html/genindex.html
+++ b/docs/finn/_build/html/genindex.html
@@ -35,8 +35,987 @@
 <h1 id="index">Index</h1>
 
 <div class="genindex-jumpbox">
+ <a href="#A"><strong>A</strong></a>
+ | <a href="#B"><strong>B</strong></a>
+ | <a href="#C"><strong>C</strong></a>
+ | <a href="#D"><strong>D</strong></a>
+ | <a href="#E"><strong>E</strong></a>
+ | <a href="#F"><strong>F</strong></a>
+ | <a href="#G"><strong>G</strong></a>
+ | <a href="#H"><strong>H</strong></a>
+ | <a href="#I"><strong>I</strong></a>
+ | <a href="#L"><strong>L</strong></a>
+ | <a href="#M"><strong>M</strong></a>
+ | <a href="#N"><strong>N</strong></a>
+ | <a href="#P"><strong>P</strong></a>
+ | <a href="#R"><strong>R</strong></a>
+ | <a href="#S"><strong>S</strong></a>
+ | <a href="#T"><strong>T</strong></a>
+ | <a href="#U"><strong>U</strong></a>
+ | <a href="#V"><strong>V</strong></a>
+ | <a href="#X"><strong>X</strong></a>
  
 </div>
+<h2 id="A">A</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul">Absorb1BitMulIntoMatMul (class in src.finn.transformation.streamline.absorb)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold">AbsorbAddIntoMultiThreshold (class in src.finn.transformation.streamline.absorb)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold">AbsorbMulIntoMultiThreshold (class in src.finn.transformation.streamline.absorb)</a>
+</li>
+      <li><a href="src.finn.analysis.html#src.finn.analysis.topology.all_tensors_f32">all_tensors_f32() (in module src.finn.analysis.topology)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.allowed">allowed() (src.finn.core.datatype.DataType method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.analysis">analysis() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.CppBuilder.append_includes">append_includes() (src.finn.util.basic.CppBuilder method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.CppBuilder.append_sources">append_sources() (src.finn.util.basic.CppBuilder method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.fpgadataflow.IPGenBuilder.append_tcl">append_tcl() (src.finn.util.fpgadataflow.IPGenBuilder method)</a>
+</li>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply">apply() (src.finn.transformation.batchnorm_to_affine.BatchNormToAffine method)</a>
+
+      <ul>
+        <li><a href="src.finn.transformation.html#src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply">(src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount method)</a>
+</li>
+        <li><a href="src.finn.transformation.html#src.finn.transformation.fold_constants.FoldConstants.apply">(src.finn.transformation.fold_constants.FoldConstants method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.cleanup.CleanUp.apply">(src.finn.transformation.fpgadataflow.cleanup.CleanUp method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply">(src.finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply">(src.finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply">(src.finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.compile.Compile.apply">(src.finn.transformation.fpgadataflow.compile.Compile method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply">(src.finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply">(src.finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply">(src.finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply">(src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply">(src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply">(src.finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply">(src.finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode.apply">(src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode method)</a>
+</li>
+        <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply">(src.finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject method)</a>
+</li>
+        <li><a href="src.finn.transformation.html#src.finn.transformation.general.ConvertSubToAdd.apply">(src.finn.transformation.general.ConvertSubToAdd method)</a>
+</li>
+        <li><a href="src.finn.transformation.html#src.finn.transformation.general.GiveRandomTensorNames.apply">(src.finn.transformation.general.GiveRandomTensorNames method)</a>
+</li>
+        <li><a href="src.finn.transformation.html#src.finn.transformation.general.GiveReadableTensorNames.apply">(src.finn.transformation.general.GiveReadableTensorNames method)</a>
+</li>
+        <li><a href="src.finn.transformation.html#src.finn.transformation.general.GiveUniqueNodeNames.apply">(src.finn.transformation.general.GiveUniqueNodeNames method)</a>
+</li>
+        <li><a href="src.finn.transformation.html#src.finn.transformation.infer_datatypes.InferDataTypes.apply">(src.finn.transformation.infer_datatypes.InferDataTypes method)</a>
+</li>
+        <li><a href="src.finn.transformation.html#src.finn.transformation.infer_shapes.InferShapes.apply">(src.finn.transformation.infer_shapes.InferShapes method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply">(src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply">(src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply">(src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply">(src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply">(src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.reorder.MoveAddPastMul.apply">(src.finn.transformation.streamline.reorder.MoveAddPastMul method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply">(src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply">(src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply">(src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply">(src.finn.transformation.streamline.sign_to_thres.ConvertSignToThres method)</a>
+</li>
+        <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.Streamline.apply">(src.finn.transformation.streamline.Streamline method)</a>
+</li>
+        <li><a href="src.finn.transformation.html#src.finn.transformation.Transformation.apply">(src.finn.transformation.Transformation method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.util.html#src.finn.util.data_packing.array2hexstring">array2hexstring() (in module src.finn.util.data_packing)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="B">B</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.batchnorm_to_affine.BatchNormToAffine">BatchNormToAffine (class in src.finn.transformation.batchnorm_to_affine)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.BINARY">BINARY (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.BIPOLAR">BIPOLAR (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.bitwidth">bitwidth() (src.finn.core.datatype.DataType method)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction">blackboxfunction() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.blackboxfunction">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation">bram_estimation() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.bram_estimation">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.CppBuilder.build">build() (src.finn.util.basic.CppBuilder method)</a>
+
+      <ul>
+        <li><a href="src.finn.util.html#src.finn.util.fpgadataflow.IPGenBuilder.build">(src.finn.util.fpgadataflow.IPGenBuilder method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+</tr></table>
+
+<h2 id="C">C</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem">calc_tmem() (src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem">calc_wmem() (src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.calculate_signed_dot_prod_range">calculate_signed_dot_prod_range() (in module src.finn.util.basic)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified">check_all_tensor_shapes_specified() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.check_compatibility">check_compatibility() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.cleanup.CleanUp">CleanUp (class in src.finn.transformation.fpgadataflow.cleanup)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_ipgen">code_generation_ipgen() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_npysim">code_generation_npysim() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen">CodeGen_ipgen (class in src.finn.transformation.fpgadataflow.codegen_ipgen)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch">CodeGen_ipstitch (class in src.finn.transformation.fpgadataflow.codegen_ipstitch)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim">CodeGen_npysim (class in src.finn.transformation.fpgadataflow.codegen_npysim)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd">CollapseRepeatedAdd (class in src.finn.transformation.streamline.collapse_repeated)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul">CollapseRepeatedMul (class in src.finn.transformation.streamline.collapse_repeated)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp">CollapseRepeatedOp (class in src.finn.transformation.streamline.collapse_repeated)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.multithreshold.compare">compare() (in module src.finn.custom_op.multithreshold)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.onnx_exec.compare_execution">compare_execution() (in module src.finn.core.onnx_exec)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.compile.Compile">Compile (class in src.finn.transformation.fpgadataflow.compile)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.compile_singlenode_code">compile_singlenode_code() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount">ConvertBipolarMatMulToXnorPopcount (class in src.finn.transformation.bipolar_to_xnor)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.sign_to_thres.ConvertSignToThres">ConvertSignToThres (class in src.finn.transformation.streamline.sign_to_thres)</a>
+</li>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.general.ConvertSubToAdd">ConvertSubToAdd (class in src.finn.transformation.general)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator">ConvolutionInputGenerator (class in src.finn.custom_op.fpgadataflow.convolutioninputgenerator)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.CppBuilder">CppBuilder (class in src.finn.util.basic)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition">CreateDataflowPartition (class in src.finn.transformation.fpgadataflow.create_dataflow_partition)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.CustomOp">CustomOp (class in src.finn.custom_op)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="D">D</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm">dataoutstrm() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.dataoutstrm">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType">DataType (class in src.finn.core.datatype)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines">defines() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.defines">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ">DeployToPYNQ (class in src.finn.transformation.fpgadataflow.make_deployment)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute">docompute() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.docompute">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.dynamic_input_to_npy">dynamic_input_to_npy() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="E">E</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.exec_precompiled_singlenode_model">exec_precompiled_singlenode_model() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.execute_custom_node.execute_custom_node">execute_custom_node() (in module src.finn.core.execute_custom_node)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.onnx_exec.execute_node">execute_node() (in module src.finn.core.onnx_exec)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.CustomOp.execute_node">(src.finn.custom_op.CustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node">(src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.execute_node">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.multithreshold.MultiThreshold.execute_node">(src.finn.custom_op.multithreshold.MultiThreshold method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node">(src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node">(src.finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.core.html#src.finn.core.onnx_exec.execute_onnx">execute_onnx() (in module src.finn.core.onnx_exec)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.onnx_exec.execute_onnx_and_make_model">execute_onnx_and_make_model() (in module src.finn.core.onnx_exec)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="F">F</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude">FactorOutMulSignMagnitude (class in src.finn.transformation.streamline.absorb)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.find_consumer">find_consumer() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.find_producer">find_producer() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.util.html#src.finn.util.data_packing.finnpy_to_packed_bytearray">finnpy_to_packed_bytearray() (in module src.finn.util.data_packing)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.FLOAT32">FLOAT32 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.fold_constants.FoldConstants">FoldConstants (class in src.finn.transformation.fold_constants)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="G">G</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.util.html#src.finn.util.basic.gen_finn_dt_tensor">gen_finn_dt_tensor() (in module src.finn.util.basic)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.generate_params">generate_params() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.get_all_tensor_names">get_all_tensor_names() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.get_by_name">get_by_name() (in module src.finn.util.basic)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.get_finn_root">get_finn_root() (in module src.finn.util.basic)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_input_shape">get_folded_input_shape() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_output_shape">get_folded_output_shape() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor">get_hls_compatible_threshold_tensor() (src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor">get_hls_compatible_weight_tensor() (src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.get_hls_datatype_str">get_hls_datatype_str() (src.finn.core.datatype.DataType method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.get_initializer">get_initializer() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype">get_input_datatype() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_instream_width">get_instream_width() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.get_metadata_prop">get_metadata_prop() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.CustomOp.get_nodeattr">get_nodeattr() (src.finn.custom_op.CustomOp method)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.CustomOp.get_nodeattr_types">get_nodeattr_types() (src.finn.custom_op.CustomOp method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types">(src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_nodeattr_types">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types">(src.finn.custom_op.multithreshold.MultiThreshold method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types">(src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types">(src.finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.get_num_possible_values">get_num_possible_values() (src.finn.core.datatype.DataType method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values">get_number_output_values() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_number_output_values">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype">get_output_datatype() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_outstream_width">get_outstream_width() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.analysis.html#src.finn.analysis.topology.get_per_tensor_fanouts">get_per_tensor_fanouts() (in module src.finn.analysis.topology)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.get_smallest_possible">get_smallest_possible() (src.finn.core.datatype.DataType method)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width">get_stream_width() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values">get_template_param_values() (src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.get_tensor_datatype">get_tensor_datatype() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.get_tensor_fanout">get_tensor_fanout() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.get_tensor_shape">get_tensor_shape() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo">get_tensor_valueinfo() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.test.get_test_model_def_fxn">get_test_model_def_fxn() (in module src.finn.util.test)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.test.get_test_model_trained">get_test_model_trained() (in module src.finn.util.test)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.test.get_test_model_untrained">get_test_model_untrained() (in module src.finn.util.test)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.test.get_trained_checkpoint">get_trained_checkpoint() (in module src.finn.util.test)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype">get_weight_datatype() (src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.registry.getCustomOp">getCustomOp() (in module src.finn.custom_op.registry)</a>
+</li>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.general.GiveRandomTensorNames">GiveRandomTensorNames (class in src.finn.transformation.general)</a>
+</li>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.general.GiveReadableTensorNames">GiveReadableTensorNames (class in src.finn.transformation.general)</a>
+</li>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.general.GiveUniqueNodeNames">GiveUniqueNodeNames (class in src.finn.transformation.general)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes">global_includes() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.global_includes">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.graph">graph() (src.finn.core.modelwrapper.ModelWrapper property)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="H">H</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.util.html#src.finn.util.data_packing.hexstring2npbytearray">hexstring2npbytearray() (in module src.finn.util.data_packing)</a>
+</li>
+      <li><a href="src.finn.analysis.fpgadataflow.html#src.finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation">hls_synth_res_estimation() (in module src.finn.analysis.fpgadataflow.hls_synth_res_estimation)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp">HLSCustomOp (class in src.finn.custom_op.fpgadataflow)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen">HLSSynth_IPGen (class in src.finn.transformation.fpgadataflow.hlssynth_ipgen)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="I">I</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.CustomOp.infer_node_datatype">infer_node_datatype() (src.finn.custom_op.CustomOp method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype">(src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype">(src.finn.custom_op.multithreshold.MultiThreshold method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype">(src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype">(src.finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer">InferBinaryStreamingFCLayer (class in src.finn.transformation.fpgadataflow.convert_to_hls_layers)</a>
+</li>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.infer_datatypes.InferDataTypes">InferDataTypes (class in src.finn.transformation.infer_datatypes)</a>
+</li>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.infer_shapes.InferShapes">InferShapes (class in src.finn.transformation.infer_shapes)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker">InsertTLastMarker (class in src.finn.transformation.fpgadataflow.insert_tlastmarker)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.INT16">INT16 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.INT2">INT2 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.INT3">INT3 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.INT32">INT32 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.INT4">INT4 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.INT8">INT8 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.interleave_matrix_outer_dim_from_partitions">interleave_matrix_outer_dim_from_partitions() (in module src.finn.util.basic)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.ipgen_singlenode_code">ipgen_singlenode_code() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.fpgadataflow.IPGenBuilder">IPGenBuilder (class in src.finn.util.fpgadataflow)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.is_integer">is_integer() (src.finn.core.datatype.DataType method)</a>
+</li>
+      <li><a href="src.finn.analysis.html#src.finn.analysis.topology.is_linear">is_linear() (in module src.finn.analysis.topology)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="L">L</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation">lut_estimation() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.lut_estimation">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+</tr></table>
+
+<h2 id="M">M</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.util.html#src.finn.util.basic.make_build_dir">make_build_dir() (in module src.finn.util.basic)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.make_empty_exec_context">make_empty_exec_context() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name">make_new_valueinfo_name() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.CustomOp.make_shape_compatible_op">make_shape_compatible_op() (src.finn.custom_op.CustomOp method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op">(src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op">(src.finn.custom_op.multithreshold.MultiThreshold method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op">(src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op">(src.finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver">MakePYNQDriver (class in src.finn.transformation.fpgadataflow.make_pynq_driver)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject">MakePYNQProject (class in src.finn.transformation.fpgadataflow.make_pynq_proj)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.max">max() (src.finn.core.datatype.DataType method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.min">min() (src.finn.core.datatype.DataType method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.model">model() (src.finn.core.modelwrapper.ModelWrapper property)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper">ModelWrapper (class in src.finn.core.modelwrapper)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.reorder.MoveAddPastMul">MoveAddPastMul (class in src.finn.transformation.streamline.reorder)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul">MoveScalarAddPastMatMul (class in src.finn.transformation.streamline.reorder)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul">MoveScalarMulPastMatMul (class in src.finn.transformation.streamline.reorder)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.multithreshold.MultiThreshold">MultiThreshold (class in src.finn.custom_op.multithreshold)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.multithreshold.multithreshold">multithreshold() (in module src.finn.custom_op.multithreshold)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="N">N</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.analysis.html#src.finn.analysis.topology.node_inputs_in_expected_order">node_inputs_in_expected_order() (in module src.finn.analysis.topology)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.node_res_estimation">node_res_estimation() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.data_packing.npbytearray2hexstring">npbytearray2hexstring() (in module src.finn.util.data_packing)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.npy_to_dynamic_output">npy_to_dynamic_output() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.data_packing.npy_to_rtlsim_input">npy_to_rtlsim_input() (in module src.finn.util.data_packing)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.data_packing.numpy_to_hls_code">numpy_to_hls_code() (in module src.finn.util.data_packing)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="P">P</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.util.html#src.finn.util.data_packing.pack_innermost_dim_as_hex_string">pack_innermost_dim_as_hex_string() (in module src.finn.util.data_packing)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.data_packing.packed_bytearray_to_finnpy">packed_bytearray_to_finnpy() (in module src.finn.util.data_packing)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.pad_tensor_to_multiple_of">pad_tensor_to_multiple_of() (in module src.finn.util.basic)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas">pragmas() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.pragmas">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.util.html#src.finn.util.fpgadataflow.pyverilate_stitched_ip">pyverilate_stitched_ip() (in module src.finn.util.fpgadataflow)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="R">R</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.util.html#src.finn.util.basic.random_string">random_string() (in module src.finn.util.basic)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data">read_npy_data() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.read_npy_data">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.remove_by_name">remove_by_name() (in module src.finn.util.basic)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.rename_tensor">rename_tensor() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.analysis.fpgadataflow.html#src.finn.analysis.fpgadataflow.res_estimation.res_estimation">res_estimation() (in module src.finn.analysis.fpgadataflow.res_estimation)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.reset_rtlsim">reset_rtlsim() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds">RoundAndClipThresholds (class in src.finn.transformation.streamline.round_thresholds)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.roundup_to_integer_multiple">roundup_to_integer_multiple() (in module src.finn.util.basic)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.rtlsim">rtlsim() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.data_packing.rtlsim_output_to_npy">rtlsim_output_to_npy() (in module src.finn.util.data_packing)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="S">S</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.save">save() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy">save_as_npy() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.save_as_npy">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.set_attribute">set_attribute() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.basic.CppBuilder.set_executable_path">set_executable_path() (src.finn.util.basic.CppBuilder method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.set_initializer">set_initializer() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path">set_ipgen_path() (src.finn.util.fpgadataflow.IPGenBuilder method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.set_metadata_prop">set_metadata_prop() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.CustomOp.set_nodeattr">set_nodeattr() (src.finn.custom_op.CustomOp method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.set_tensor_datatype">set_tensor_datatype() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.set_tensor_shape">set_tensor_shape() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode">SetSimMode (class in src.finn.transformation.fpgadataflow.set_sim_mode)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.signed">signed() (src.finn.core.datatype.DataType method)</a>
+</li>
+      <li><a href="src.html#module-src">src (module)</a>
+</li>
+      <li><a href="src.finn.html#module-src.finn">src.finn (module)</a>
+</li>
+      <li><a href="src.finn.analysis.html#module-src.finn.analysis">src.finn.analysis (module)</a>
+</li>
+      <li><a href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow">src.finn.analysis.fpgadataflow (module)</a>
+</li>
+      <li><a href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation">src.finn.analysis.fpgadataflow.hls_synth_res_estimation (module)</a>
+</li>
+      <li><a href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.res_estimation">src.finn.analysis.fpgadataflow.res_estimation (module)</a>
+</li>
+      <li><a href="src.finn.analysis.html#module-src.finn.analysis.topology">src.finn.analysis.topology (module)</a>
+</li>
+      <li><a href="src.finn.analysis.html#module-src.finn.analysis.verify_custom_nodes">src.finn.analysis.verify_custom_nodes (module)</a>
+</li>
+      <li><a href="src.finn.core.html#module-src.finn.core">src.finn.core (module)</a>
+</li>
+      <li><a href="src.finn.core.html#module-src.finn.core.datatype">src.finn.core.datatype (module)</a>
+</li>
+      <li><a href="src.finn.core.html#module-src.finn.core.execute_custom_node">src.finn.core.execute_custom_node (module)</a>
+</li>
+      <li><a href="src.finn.core.html#module-src.finn.core.modelwrapper">src.finn.core.modelwrapper (module)</a>
+</li>
+      <li><a href="src.finn.core.html#module-src.finn.core.onnx_exec">src.finn.core.onnx_exec (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#module-src.finn.custom_op">src.finn.custom_op (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow">src.finn.custom_op.fpgadataflow (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator">src.finn.custom_op.fpgadataflow.convolutioninputgenerator (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch">src.finn.custom_op.fpgadataflow.streamingfclayer_batch (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.templates">src.finn.custom_op.fpgadataflow.templates (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.tlastmarker">src.finn.custom_op.fpgadataflow.tlastmarker (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#module-src.finn.custom_op.multithreshold">src.finn.custom_op.multithreshold (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#module-src.finn.custom_op.registry">src.finn.custom_op.registry (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#module-src.finn.custom_op.streamingdataflowpartition">src.finn.custom_op.streamingdataflowpartition (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#module-src.finn.custom_op.xnorpopcount">src.finn.custom_op.xnorpopcount (module)</a>
+</li>
+      <li><a href="src.finn.transformation.html#module-src.finn.transformation">src.finn.transformation (module)</a>
+</li>
+      <li><a href="src.finn.transformation.html#module-src.finn.transformation.batchnorm_to_affine">src.finn.transformation.batchnorm_to_affine (module)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.transformation.html#module-src.finn.transformation.bipolar_to_xnor">src.finn.transformation.bipolar_to_xnor (module)</a>
+</li>
+      <li><a href="src.finn.transformation.html#module-src.finn.transformation.fold_constants">src.finn.transformation.fold_constants (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow">src.finn.transformation.fpgadataflow (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.cleanup">src.finn.transformation.fpgadataflow.cleanup (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipgen">src.finn.transformation.fpgadataflow.codegen_ipgen (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipstitch">src.finn.transformation.fpgadataflow.codegen_ipstitch (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_npysim">src.finn.transformation.fpgadataflow.codegen_npysim (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.compile">src.finn.transformation.fpgadataflow.compile (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.convert_to_hls_layers">src.finn.transformation.fpgadataflow.convert_to_hls_layers (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.create_dataflow_partition">src.finn.transformation.fpgadataflow.create_dataflow_partition (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.hlssynth_ipgen">src.finn.transformation.fpgadataflow.hlssynth_ipgen (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.insert_tlastmarker">src.finn.transformation.fpgadataflow.insert_tlastmarker (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_deployment">src.finn.transformation.fpgadataflow.make_deployment (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_driver">src.finn.transformation.fpgadataflow.make_pynq_driver (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_proj">src.finn.transformation.fpgadataflow.make_pynq_proj (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.set_sim_mode">src.finn.transformation.fpgadataflow.set_sim_mode (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.synth_pynq_proj">src.finn.transformation.fpgadataflow.synth_pynq_proj (module)</a>
+</li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.templates">src.finn.transformation.fpgadataflow.templates (module)</a>
+</li>
+      <li><a href="src.finn.transformation.html#module-src.finn.transformation.general">src.finn.transformation.general (module)</a>
+</li>
+      <li><a href="src.finn.transformation.html#module-src.finn.transformation.infer_datatypes">src.finn.transformation.infer_datatypes (module)</a>
+</li>
+      <li><a href="src.finn.transformation.html#module-src.finn.transformation.infer_shapes">src.finn.transformation.infer_shapes (module)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline">src.finn.transformation.streamline (module)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.absorb">src.finn.transformation.streamline.absorb (module)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.collapse_repeated">src.finn.transformation.streamline.collapse_repeated (module)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.reorder">src.finn.transformation.streamline.reorder (module)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.round_thresholds">src.finn.transformation.streamline.round_thresholds (module)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.sign_to_thres">src.finn.transformation.streamline.sign_to_thres (module)</a>
+</li>
+      <li><a href="src.finn.util.html#module-src.finn.util">src.finn.util (module)</a>
+</li>
+      <li><a href="src.finn.util.html#module-src.finn.util.basic">src.finn.util.basic (module)</a>
+</li>
+      <li><a href="src.finn.util.html#module-src.finn.util.data_packing">src.finn.util.data_packing (module)</a>
+</li>
+      <li><a href="src.finn.util.html#module-src.finn.util.fpgadataflow">src.finn.util.fpgadataflow (module)</a>
+</li>
+      <li><a href="src.finn.util.html#module-src.finn.util.onnx">src.finn.util.onnx (module)</a>
+</li>
+      <li><a href="src.finn.util.html#module-src.finn.util.test">src.finn.util.test (module)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition">StreamingDataflowPartition (class in src.finn.custom_op.streamingdataflowpartition)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch">StreamingFCLayer_Batch (class in src.finn.custom_op.fpgadataflow.streamingfclayer_batch)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch">StreamingMaxPool_Batch (class in src.finn.custom_op.fpgadataflow.streamingmaxpool_batch)</a>
+</li>
+      <li><a href="src.finn.transformation.streamline.html#src.finn.transformation.streamline.Streamline">Streamline (class in src.finn.transformation.streamline)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl">strm_decl() (src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.strm_decl">(src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+      </ul></li>
+      <li><a href="src.finn.transformation.fpgadataflow.html#src.finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject">SynthPYNQProject (class in src.finn.transformation.fpgadataflow.synth_pynq_proj)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="T">T</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.TERNARY">TERNARY (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker">TLastMarker (class in src.finn.custom_op.fpgadataflow.tlastmarker)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.HLSCustomOp.toggle_clk">toggle_clk() (src.finn.custom_op.fpgadataflow.HLSCustomOp method)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.modelwrapper.ModelWrapper.transform">transform() (src.finn.core.modelwrapper.ModelWrapper method)</a>
+</li>
+      <li><a href="src.finn.transformation.html#src.finn.transformation.Transformation">Transformation (class in src.finn.transformation)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="U">U</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.UINT16">UINT16 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.UINT2">UINT2 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.UINT3">UINT3 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.UINT32">UINT32 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.UINT4">UINT4 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.core.html#src.finn.core.datatype.DataType.UINT8">UINT8 (src.finn.core.datatype.DataType attribute)</a>
+</li>
+      <li><a href="src.finn.util.html#src.finn.util.data_packing.unpack_innermost_dim_from_hex_string">unpack_innermost_dim_from_hex_string() (in module src.finn.util.data_packing)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="V">V</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.util.html#src.finn.util.onnx.valueinfo_to_tensor">valueinfo_to_tensor() (in module src.finn.util.onnx)</a>
+</li>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.CustomOp.verify_node">verify_node() (src.finn.custom_op.CustomOp method)</a>
+
+      <ul>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node">(src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node">(src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node">(src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a>
+</li>
+        <li><a href="src.finn.custom_op.fpgadataflow.html#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node">(src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.multithreshold.MultiThreshold.verify_node">(src.finn.custom_op.multithreshold.MultiThreshold method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node">(src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a>
+</li>
+        <li><a href="src.finn.custom_op.html#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node">(src.finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.analysis.html#src.finn.analysis.verify_custom_nodes.verify_nodes">verify_nodes() (in module src.finn.analysis.verify_custom_nodes)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="X">X</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul">XnorPopcountMatMul (class in src.finn.custom_op.xnorpopcount)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="src.finn.custom_op.html#src.finn.custom_op.xnorpopcount.xnorpopcountmatmul">xnorpopcountmatmul() (in module src.finn.custom_op.xnorpopcount)</a>
+</li>
+  </ul></td>
+</tr></table>
+
 
 
           </div>
diff --git a/docs/finn/_build/html/modules.html b/docs/finn/_build/html/modules.html
index 5b41dccb4be635ef0bd1b17df25595282a12fe8b..0b1993b0f905739bbf718fdb3853f42861541230 100644
--- a/docs/finn/_build/html/modules.html
+++ b/docs/finn/_build/html/modules.html
@@ -38,12 +38,12 @@
 <li class="toctree-l2"><a class="reference internal" href="src.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="src.finn.html">src.finn package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.html#subpackages">Subpackages</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.html#module-contents">Module contents</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.html#module-src.finn">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="src.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.html#module-src">Module contents</a></li>
 </ul>
 </li>
 </ul>
diff --git a/docs/finn/_build/html/objects.inv b/docs/finn/_build/html/objects.inv
index 4f056627b7ea7514493cad64a0f8cd5b946f8411..8c49eed300d5e25b1fc0f539939b5ce97011b988 100644
Binary files a/docs/finn/_build/html/objects.inv and b/docs/finn/_build/html/objects.inv differ
diff --git a/docs/finn/_build/html/py-modindex.html b/docs/finn/_build/html/py-modindex.html
new file mode 100644
index 0000000000000000000000000000000000000000..4df1f6a948b2d33594c0e7a300d19d4062cc508e
--- /dev/null
+++ b/docs/finn/_build/html/py-modindex.html
@@ -0,0 +1,405 @@
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="utf-8" />
+    <title>Python Module Index &#8212; FINN  documentation</title>
+    <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <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>
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+
+   
+  <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+  
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
+
+
+  </head><body>
+  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          
+
+          <div class="body" role="main">
+            
+
+   <h1>Python Module Index</h1>
+
+   <div class="modindex-jumpbox">
+   <a href="#cap-s"><strong>s</strong></a>
+   </div>
+
+   <table class="indextable modindextable">
+     <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
+     <tr class="cap" id="cap-s"><td></td><td>
+       <strong>s</strong></td><td></td></tr>
+     <tr>
+       <td><img src="_static/minus.png" class="toggler"
+              id="toggle-1" style="display: none" alt="-" /></td>
+       <td>
+       <a href="src.html#module-src"><code class="xref">src</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.html#module-src.finn"><code class="xref">src.finn</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.analysis.html#module-src.finn.analysis"><code class="xref">src.finn.analysis</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow"><code class="xref">src.finn.analysis.fpgadataflow</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation"><code class="xref">src.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="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.res_estimation"><code class="xref">src.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="src.finn.analysis.html#module-src.finn.analysis.topology"><code class="xref">src.finn.analysis.topology</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.analysis.html#module-src.finn.analysis.verify_custom_nodes"><code class="xref">src.finn.analysis.verify_custom_nodes</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.core.html#module-src.finn.core"><code class="xref">src.finn.core</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.core.html#module-src.finn.core.datatype"><code class="xref">src.finn.core.datatype</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.core.html#module-src.finn.core.execute_custom_node"><code class="xref">src.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="src.finn.core.html#module-src.finn.core.modelwrapper"><code class="xref">src.finn.core.modelwrapper</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.core.html#module-src.finn.core.onnx_exec"><code class="xref">src.finn.core.onnx_exec</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.custom_op.html#module-src.finn.custom_op"><code class="xref">src.finn.custom_op</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow"><code class="xref">src.finn.custom_op.fpgadataflow</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator"><code class="xref">src.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="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch"><code class="xref">src.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="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch"><code class="xref">src.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="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.templates"><code class="xref">src.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="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.tlastmarker"><code class="xref">src.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="src.finn.custom_op.html#module-src.finn.custom_op.multithreshold"><code class="xref">src.finn.custom_op.multithreshold</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.custom_op.html#module-src.finn.custom_op.registry"><code class="xref">src.finn.custom_op.registry</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.custom_op.html#module-src.finn.custom_op.streamingdataflowpartition"><code class="xref">src.finn.custom_op.streamingdataflowpartition</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.custom_op.html#module-src.finn.custom_op.xnorpopcount"><code class="xref">src.finn.custom_op.xnorpopcount</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.html#module-src.finn.transformation"><code class="xref">src.finn.transformation</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.html#module-src.finn.transformation.batchnorm_to_affine"><code class="xref">src.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="src.finn.transformation.html#module-src.finn.transformation.bipolar_to_xnor"><code class="xref">src.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="src.finn.transformation.html#module-src.finn.transformation.fold_constants"><code class="xref">src.finn.transformation.fold_constants</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow"><code class="xref">src.finn.transformation.fpgadataflow</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.cleanup"><code class="xref">src.finn.transformation.fpgadataflow.cleanup</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipgen"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipstitch"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_npysim"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.compile"><code class="xref">src.finn.transformation.fpgadataflow.compile</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.convert_to_hls_layers"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.create_dataflow_partition"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.hlssynth_ipgen"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.insert_tlastmarker"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_deployment"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_driver"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_proj"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.set_sim_mode"><code class="xref">src.finn.transformation.fpgadataflow.set_sim_mode</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.synth_pynq_proj"><code class="xref">src.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="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.templates"><code class="xref">src.finn.transformation.fpgadataflow.templates</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.html#module-src.finn.transformation.general"><code class="xref">src.finn.transformation.general</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.html#module-src.finn.transformation.infer_datatypes"><code class="xref">src.finn.transformation.infer_datatypes</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.html#module-src.finn.transformation.infer_shapes"><code class="xref">src.finn.transformation.infer_shapes</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline"><code class="xref">src.finn.transformation.streamline</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.absorb"><code class="xref">src.finn.transformation.streamline.absorb</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.collapse_repeated"><code class="xref">src.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="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.reorder"><code class="xref">src.finn.transformation.streamline.reorder</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.round_thresholds"><code class="xref">src.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="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.sign_to_thres"><code class="xref">src.finn.transformation.streamline.sign_to_thres</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.util.html#module-src.finn.util"><code class="xref">src.finn.util</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.util.html#module-src.finn.util.basic"><code class="xref">src.finn.util.basic</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.util.html#module-src.finn.util.data_packing"><code class="xref">src.finn.util.data_packing</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.util.html#module-src.finn.util.fpgadataflow"><code class="xref">src.finn.util.fpgadataflow</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.util.html#module-src.finn.util.onnx"><code class="xref">src.finn.util.onnx</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="src.finn.util.html#module-src.finn.util.test"><code class="xref">src.finn.util.test</code></a></td><td>
+       <em></em></td></tr>
+   </table>
+
+
+          </div>
+          
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+<h1 class="logo"><a href="index.html">FINN</a></h1>
+
+
+
+
+
+
+
+
+<h3>Navigation</h3>
+
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="index.html">Documentation overview</a><ul>
+  </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" />
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+
+
+
+
+
+
+
+
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="footer">
+      &copy;2020, Y. Umuroglu, J. Petri-Koenig.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
+      
+    </div>
+
+    
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/finn/_build/html/searchindex.js b/docs/finn/_build/html/searchindex.js
index 5d80d1eefdf8bc589015aad5b9b09c413881528b..30505be391a3e5248a6bdd6f906b91e9717664d7 100644
--- a/docs/finn/_build/html/searchindex.js
+++ b/docs/finn/_build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["index","modules","src","src.finn","src.finn.analysis","src.finn.analysis.fpgadataflow","src.finn.core","src.finn.custom_op","src.finn.custom_op.fpgadataflow","src.finn.transformation","src.finn.transformation.fpgadataflow","src.finn.transformation.streamline","src.finn.util"],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:["index.rst","modules.rst","src.rst","src.finn.rst","src.finn.analysis.rst","src.finn.analysis.fpgadataflow.rst","src.finn.core.rst","src.finn.custom_op.rst","src.finn.custom_op.fpgadataflow.rst","src.finn.transformation.rst","src.finn.transformation.fpgadataflow.rst","src.finn.transformation.streamline.rst","src.finn.util.rst"],objects:{},objnames:{},objtypes:{},terms:{absorb:[2,3,9],analysi:[2,3],basic:[2,3],batchnorm_to_affin:[2,3],bipolar_to_xnor:[2,3],cleanup:[2,3,9],codegen_ipgen:[2,3,9],codegen_ipstitch:[2,3,9],codegen_npysim:[2,3,9],collapse_rep:[2,3,9],compil:[2,3,9],content:1,convert_to_hls_lay:[2,3,9],convolutioninputgener:[2,3,7],core:[2,3],create_dataflow_partit:[2,3,9],custom_op:[2,3],data_pack:[2,3],datatyp:[2,3],execute_custom_nod:[2,3],finn:[1,2],fold_const:[2,3],fpgadataflow:[2,3,4,7,9],gener:[2,3],hls_synth_res_estim:[2,3,4],hlssynth_ipgen:[2,3,9],index:0,infer_datatyp:[2,3],infer_shap:[2,3],insert_tlastmark:[2,3,9],make_deploy:[2,3,9],make_pynq_driv:[2,3,9],make_pynq_proj:[2,3,9],modelwrapp:[2,3],modul:[0,1],multithreshold:[2,3],onnx:[2,3],onnx_exec:[2,3],packag:1,page:0,registri:[2,3],reorder:[2,3,9],res_estim:[2,3,4],round_threshold:[2,3,9],search:0,set_sim_mod:[2,3,9],sign_to_thr:[2,3,9],streamingdataflowpartit:[2,3],streamingfclayer_batch:[2,3,7],streamingmaxpool_batch:[2,3,7],streamlin:[2,3,9],submodul:[2,3],subpackag:1,synth_pynq_proj:[2,3,9],templat:[2,3,7,9],test:[2,3],tlastmark:[2,3,7],topolog:[2,3],transform:[2,3],util:[2,3],verify_custom_nod:[2,3],xnorpopcount:[2,3]},titles:["Welcome to FINN\u2019s documentation!","src","src package","src.finn package","src.finn.analysis package","src.finn.analysis.fpgadataflow package","src.finn.core package","src.finn.custom_op package","src.finn.custom_op.fpgadataflow package","src.finn.transformation package","src.finn.transformation.fpgadataflow package","src.finn.transformation.streamline package","src.finn.util package"],titleterms:{absorb:11,analysi:[4,5],basic:12,batchnorm_to_affin:9,bipolar_to_xnor:9,cleanup:10,codegen_ipgen:10,codegen_ipstitch:10,codegen_npysim:10,collapse_rep:11,compil:10,content:[2,3,4,5,6,7,8,9,10,11,12],convert_to_hls_lay:10,convolutioninputgener:8,core:6,create_dataflow_partit:10,custom_op:[7,8],data_pack:12,datatyp:6,document:0,execute_custom_nod:6,finn:[0,3,4,5,6,7,8,9,10,11,12],fold_const:9,fpgadataflow:[5,8,10,12],gener:9,hls_synth_res_estim:5,hlssynth_ipgen:10,indic:0,infer_datatyp:9,infer_shap:9,insert_tlastmark:10,make_deploy:10,make_pynq_driv:10,make_pynq_proj:10,modelwrapp:6,modul:[2,3,4,5,6,7,8,9,10,11,12],multithreshold:7,onnx:12,onnx_exec:6,packag:[2,3,4,5,6,7,8,9,10,11,12],registri:7,reorder:11,res_estim:5,round_threshold:11,set_sim_mod:10,sign_to_thr:11,src:[1,2,3,4,5,6,7,8,9,10,11,12],streamingdataflowpartit:7,streamingfclayer_batch:8,streamingmaxpool_batch:8,streamlin:11,submodul:[4,5,6,7,8,9,10,11,12],subpackag:[2,3,4,7,9],synth_pynq_proj:10,tabl:0,templat:[8,10],test:12,tlastmark:8,topolog:4,transform:[9,10,11],util:12,verify_custom_nod:4,welcom:0,xnorpopcount:7}})
\ No newline at end of file
+Search.setIndex({docnames:["index","modules","src","src.finn","src.finn.analysis","src.finn.analysis.fpgadataflow","src.finn.core","src.finn.custom_op","src.finn.custom_op.fpgadataflow","src.finn.transformation","src.finn.transformation.fpgadataflow","src.finn.transformation.streamline","src.finn.util"],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:["index.rst","modules.rst","src.rst","src.finn.rst","src.finn.analysis.rst","src.finn.analysis.fpgadataflow.rst","src.finn.core.rst","src.finn.custom_op.rst","src.finn.custom_op.fpgadataflow.rst","src.finn.transformation.rst","src.finn.transformation.fpgadataflow.rst","src.finn.transformation.streamline.rst","src.finn.util.rst"],objects:{"":{src:[2,0,0,"-"]},"src.finn":{analysis:[4,0,0,"-"],core:[6,0,0,"-"],custom_op:[7,0,0,"-"],transformation:[9,0,0,"-"],util:[12,0,0,"-"]},"src.finn.analysis":{fpgadataflow:[5,0,0,"-"],topology:[4,0,0,"-"],verify_custom_nodes:[4,0,0,"-"]},"src.finn.analysis.fpgadataflow":{hls_synth_res_estimation:[5,0,0,"-"],res_estimation:[5,0,0,"-"]},"src.finn.analysis.fpgadataflow.hls_synth_res_estimation":{hls_synth_res_estimation:[5,1,1,""]},"src.finn.analysis.fpgadataflow.res_estimation":{res_estimation:[5,1,1,""]},"src.finn.analysis.topology":{all_tensors_f32:[4,1,1,""],get_per_tensor_fanouts:[4,1,1,""],is_linear:[4,1,1,""],node_inputs_in_expected_order:[4,1,1,""]},"src.finn.analysis.verify_custom_nodes":{verify_nodes:[4,1,1,""]},"src.finn.core":{datatype:[6,0,0,"-"],execute_custom_node:[6,0,0,"-"],modelwrapper:[6,0,0,"-"],onnx_exec:[6,0,0,"-"]},"src.finn.core.datatype":{DataType:[6,2,1,""]},"src.finn.core.datatype.DataType":{BINARY:[6,3,1,""],BIPOLAR:[6,3,1,""],FLOAT32:[6,3,1,""],INT16:[6,3,1,""],INT2:[6,3,1,""],INT32:[6,3,1,""],INT3:[6,3,1,""],INT4:[6,3,1,""],INT8:[6,3,1,""],TERNARY:[6,3,1,""],UINT16:[6,3,1,""],UINT2:[6,3,1,""],UINT32:[6,3,1,""],UINT3:[6,3,1,""],UINT4:[6,3,1,""],UINT8:[6,3,1,""],allowed:[6,4,1,""],bitwidth:[6,4,1,""],get_hls_datatype_str:[6,4,1,""],get_num_possible_values:[6,4,1,""],get_smallest_possible:[6,4,1,""],is_integer:[6,4,1,""],max:[6,4,1,""],min:[6,4,1,""],signed:[6,4,1,""]},"src.finn.core.execute_custom_node":{execute_custom_node:[6,1,1,""]},"src.finn.core.modelwrapper":{ModelWrapper:[6,2,1,""]},"src.finn.core.modelwrapper.ModelWrapper":{analysis:[6,4,1,""],check_all_tensor_shapes_specified:[6,4,1,""],check_compatibility:[6,4,1,""],find_consumer:[6,4,1,""],find_producer:[6,4,1,""],get_all_tensor_names:[6,4,1,""],get_initializer:[6,4,1,""],get_metadata_prop:[6,4,1,""],get_tensor_datatype:[6,4,1,""],get_tensor_fanout:[6,4,1,""],get_tensor_shape:[6,4,1,""],get_tensor_valueinfo:[6,4,1,""],graph:[6,4,1,""],make_empty_exec_context:[6,4,1,""],make_new_valueinfo_name:[6,4,1,""],model:[6,4,1,""],rename_tensor:[6,4,1,""],save:[6,4,1,""],set_attribute:[6,4,1,""],set_initializer:[6,4,1,""],set_metadata_prop:[6,4,1,""],set_tensor_datatype:[6,4,1,""],set_tensor_shape:[6,4,1,""],transform:[6,4,1,""]},"src.finn.core.onnx_exec":{compare_execution:[6,1,1,""],execute_node:[6,1,1,""],execute_onnx:[6,1,1,""],execute_onnx_and_make_model:[6,1,1,""]},"src.finn.custom_op":{CustomOp:[7,2,1,""],fpgadataflow:[8,0,0,"-"],multithreshold:[7,0,0,"-"],registry:[7,0,0,"-"],streamingdataflowpartition:[7,0,0,"-"],xnorpopcount:[7,0,0,"-"]},"src.finn.custom_op.CustomOp":{execute_node:[7,4,1,""],get_nodeattr:[7,4,1,""],get_nodeattr_types:[7,4,1,""],infer_node_datatype:[7,4,1,""],make_shape_compatible_op:[7,4,1,""],set_nodeattr:[7,4,1,""],verify_node:[7,4,1,""]},"src.finn.custom_op.fpgadataflow":{HLSCustomOp:[8,2,1,""],convolutioninputgenerator:[8,0,0,"-"],streamingfclayer_batch:[8,0,0,"-"],streamingmaxpool_batch:[8,0,0,"-"],templates:[8,0,0,"-"],tlastmarker:[8,0,0,"-"]},"src.finn.custom_op.fpgadataflow.HLSCustomOp":{blackboxfunction:[8,4,1,""],bram_estimation:[8,4,1,""],code_generation_ipgen:[8,4,1,""],code_generation_npysim:[8,4,1,""],compile_singlenode_code:[8,4,1,""],dataoutstrm:[8,4,1,""],defines:[8,4,1,""],docompute:[8,4,1,""],dynamic_input_to_npy:[8,4,1,""],exec_precompiled_singlenode_model:[8,4,1,""],execute_node:[8,4,1,""],generate_params:[8,4,1,""],get_folded_input_shape:[8,4,1,""],get_folded_output_shape:[8,4,1,""],get_instream_width:[8,4,1,""],get_nodeattr_types:[8,4,1,""],get_number_output_values:[8,4,1,""],get_outstream_width:[8,4,1,""],global_includes:[8,4,1,""],ipgen_singlenode_code:[8,4,1,""],lut_estimation:[8,4,1,""],node_res_estimation:[8,4,1,""],npy_to_dynamic_output:[8,4,1,""],pragmas:[8,4,1,""],read_npy_data:[8,4,1,""],reset_rtlsim:[8,4,1,""],rtlsim:[8,4,1,""],save_as_npy:[8,4,1,""],strm_decl:[8,4,1,""],toggle_clk:[8,4,1,""]},"src.finn.custom_op.fpgadataflow.convolutioninputgenerator":{ConvolutionInputGenerator:[8,2,1,""]},"src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator":{blackboxfunction:[8,4,1,""],bram_estimation:[8,4,1,""],dataoutstrm:[8,4,1,""],defines:[8,4,1,""],docompute:[8,4,1,""],execute_node:[8,4,1,""],get_input_datatype:[8,4,1,""],get_nodeattr_types:[8,4,1,""],get_number_output_values:[8,4,1,""],get_output_datatype:[8,4,1,""],get_stream_width:[8,4,1,""],global_includes:[8,4,1,""],infer_node_datatype:[8,4,1,""],lut_estimation:[8,4,1,""],make_shape_compatible_op:[8,4,1,""],pragmas:[8,4,1,""],read_npy_data:[8,4,1,""],save_as_npy:[8,4,1,""],strm_decl:[8,4,1,""],verify_node:[8,4,1,""]},"src.finn.custom_op.fpgadataflow.streamingfclayer_batch":{StreamingFCLayer_Batch:[8,2,1,""]},"src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch":{blackboxfunction:[8,4,1,""],bram_estimation:[8,4,1,""],calc_tmem:[8,4,1,""],calc_wmem:[8,4,1,""],dataoutstrm:[8,4,1,""],defines:[8,4,1,""],docompute:[8,4,1,""],execute_node:[8,4,1,""],generate_params:[8,4,1,""],get_folded_input_shape:[8,4,1,""],get_folded_output_shape:[8,4,1,""],get_hls_compatible_threshold_tensor:[8,4,1,""],get_hls_compatible_weight_tensor:[8,4,1,""],get_input_datatype:[8,4,1,""],get_instream_width:[8,4,1,""],get_nodeattr_types:[8,4,1,""],get_number_output_values:[8,4,1,""],get_output_datatype:[8,4,1,""],get_outstream_width:[8,4,1,""],get_template_param_values:[8,4,1,""],get_weight_datatype:[8,4,1,""],global_includes:[8,4,1,""],infer_node_datatype:[8,4,1,""],lut_estimation:[8,4,1,""],make_shape_compatible_op:[8,4,1,""],pragmas:[8,4,1,""],read_npy_data:[8,4,1,""],save_as_npy:[8,4,1,""],strm_decl:[8,4,1,""],verify_node:[8,4,1,""]},"src.finn.custom_op.fpgadataflow.streamingmaxpool_batch":{StreamingMaxPool_Batch:[8,2,1,""]},"src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch":{blackboxfunction:[8,4,1,""],bram_estimation:[8,4,1,""],dataoutstrm:[8,4,1,""],defines:[8,4,1,""],docompute:[8,4,1,""],get_nodeattr_types:[8,4,1,""],get_number_output_values:[8,4,1,""],global_includes:[8,4,1,""],infer_node_datatype:[8,4,1,""],lut_estimation:[8,4,1,""],make_shape_compatible_op:[8,4,1,""],pragmas:[8,4,1,""],read_npy_data:[8,4,1,""],save_as_npy:[8,4,1,""],strm_decl:[8,4,1,""],verify_node:[8,4,1,""]},"src.finn.custom_op.fpgadataflow.tlastmarker":{TLastMarker:[8,2,1,""]},"src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker":{blackboxfunction:[8,4,1,""],dataoutstrm:[8,4,1,""],defines:[8,4,1,""],docompute:[8,4,1,""],execute_node:[8,4,1,""],get_folded_input_shape:[8,4,1,""],get_folded_output_shape:[8,4,1,""],get_instream_width:[8,4,1,""],get_nodeattr_types:[8,4,1,""],get_number_output_values:[8,4,1,""],get_outstream_width:[8,4,1,""],global_includes:[8,4,1,""],infer_node_datatype:[8,4,1,""],make_shape_compatible_op:[8,4,1,""],pragmas:[8,4,1,""],read_npy_data:[8,4,1,""],save_as_npy:[8,4,1,""],strm_decl:[8,4,1,""],verify_node:[8,4,1,""]},"src.finn.custom_op.multithreshold":{MultiThreshold:[7,2,1,""],compare:[7,1,1,""],multithreshold:[7,1,1,""]},"src.finn.custom_op.multithreshold.MultiThreshold":{execute_node:[7,4,1,""],get_nodeattr_types:[7,4,1,""],infer_node_datatype:[7,4,1,""],make_shape_compatible_op:[7,4,1,""],verify_node:[7,4,1,""]},"src.finn.custom_op.registry":{getCustomOp:[7,1,1,""]},"src.finn.custom_op.streamingdataflowpartition":{StreamingDataflowPartition:[7,2,1,""]},"src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition":{execute_node:[7,4,1,""],get_nodeattr_types:[7,4,1,""],infer_node_datatype:[7,4,1,""],make_shape_compatible_op:[7,4,1,""],verify_node:[7,4,1,""]},"src.finn.custom_op.xnorpopcount":{XnorPopcountMatMul:[7,2,1,""],xnorpopcountmatmul:[7,1,1,""]},"src.finn.custom_op.xnorpopcount.XnorPopcountMatMul":{execute_node:[7,4,1,""],get_nodeattr_types:[7,4,1,""],infer_node_datatype:[7,4,1,""],make_shape_compatible_op:[7,4,1,""],verify_node:[7,4,1,""]},"src.finn.transformation":{Transformation:[9,2,1,""],batchnorm_to_affine:[9,0,0,"-"],bipolar_to_xnor:[9,0,0,"-"],fold_constants:[9,0,0,"-"],fpgadataflow:[10,0,0,"-"],general:[9,0,0,"-"],infer_datatypes:[9,0,0,"-"],infer_shapes:[9,0,0,"-"],streamline:[11,0,0,"-"]},"src.finn.transformation.Transformation":{apply:[9,4,1,""]},"src.finn.transformation.batchnorm_to_affine":{BatchNormToAffine:[9,2,1,""]},"src.finn.transformation.batchnorm_to_affine.BatchNormToAffine":{apply:[9,4,1,""]},"src.finn.transformation.bipolar_to_xnor":{ConvertBipolarMatMulToXnorPopcount:[9,2,1,""]},"src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount":{apply:[9,4,1,""]},"src.finn.transformation.fold_constants":{FoldConstants:[9,2,1,""]},"src.finn.transformation.fold_constants.FoldConstants":{apply:[9,4,1,""]},"src.finn.transformation.fpgadataflow":{cleanup:[10,0,0,"-"],codegen_ipgen:[10,0,0,"-"],codegen_ipstitch:[10,0,0,"-"],codegen_npysim:[10,0,0,"-"],compile:[10,0,0,"-"],convert_to_hls_layers:[10,0,0,"-"],create_dataflow_partition:[10,0,0,"-"],hlssynth_ipgen:[10,0,0,"-"],insert_tlastmarker:[10,0,0,"-"],make_deployment:[10,0,0,"-"],make_pynq_driver:[10,0,0,"-"],make_pynq_proj:[10,0,0,"-"],set_sim_mode:[10,0,0,"-"],synth_pynq_proj:[10,0,0,"-"],templates:[10,0,0,"-"]},"src.finn.transformation.fpgadataflow.cleanup":{CleanUp:[10,2,1,""]},"src.finn.transformation.fpgadataflow.cleanup.CleanUp":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.codegen_ipgen":{CodeGen_ipgen:[10,2,1,""]},"src.finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.codegen_ipstitch":{CodeGen_ipstitch:[10,2,1,""]},"src.finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.codegen_npysim":{CodeGen_npysim:[10,2,1,""]},"src.finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.compile":{Compile:[10,2,1,""]},"src.finn.transformation.fpgadataflow.compile.Compile":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.convert_to_hls_layers":{InferBinaryStreamingFCLayer:[10,2,1,""]},"src.finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.create_dataflow_partition":{CreateDataflowPartition:[10,2,1,""]},"src.finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.hlssynth_ipgen":{HLSSynth_IPGen:[10,2,1,""]},"src.finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.insert_tlastmarker":{InsertTLastMarker:[10,2,1,""]},"src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.make_deployment":{DeployToPYNQ:[10,2,1,""]},"src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.make_pynq_driver":{MakePYNQDriver:[10,2,1,""]},"src.finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.make_pynq_proj":{MakePYNQProject:[10,2,1,""]},"src.finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.set_sim_mode":{SetSimMode:[10,2,1,""]},"src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode":{apply:[10,4,1,""]},"src.finn.transformation.fpgadataflow.synth_pynq_proj":{SynthPYNQProject:[10,2,1,""]},"src.finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject":{apply:[10,4,1,""]},"src.finn.transformation.general":{ConvertSubToAdd:[9,2,1,""],GiveRandomTensorNames:[9,2,1,""],GiveReadableTensorNames:[9,2,1,""],GiveUniqueNodeNames:[9,2,1,""]},"src.finn.transformation.general.ConvertSubToAdd":{apply:[9,4,1,""]},"src.finn.transformation.general.GiveRandomTensorNames":{apply:[9,4,1,""]},"src.finn.transformation.general.GiveReadableTensorNames":{apply:[9,4,1,""]},"src.finn.transformation.general.GiveUniqueNodeNames":{apply:[9,4,1,""]},"src.finn.transformation.infer_datatypes":{InferDataTypes:[9,2,1,""]},"src.finn.transformation.infer_datatypes.InferDataTypes":{apply:[9,4,1,""]},"src.finn.transformation.infer_shapes":{InferShapes:[9,2,1,""]},"src.finn.transformation.infer_shapes.InferShapes":{apply:[9,4,1,""]},"src.finn.transformation.streamline":{Streamline:[11,2,1,""],absorb:[11,0,0,"-"],collapse_repeated:[11,0,0,"-"],reorder:[11,0,0,"-"],round_thresholds:[11,0,0,"-"],sign_to_thres:[11,0,0,"-"]},"src.finn.transformation.streamline.Streamline":{apply:[11,4,1,""]},"src.finn.transformation.streamline.absorb":{Absorb1BitMulIntoMatMul:[11,2,1,""],AbsorbAddIntoMultiThreshold:[11,2,1,""],AbsorbMulIntoMultiThreshold:[11,2,1,""],FactorOutMulSignMagnitude:[11,2,1,""]},"src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul":{apply:[11,4,1,""]},"src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold":{apply:[11,4,1,""]},"src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold":{apply:[11,4,1,""]},"src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude":{apply:[11,4,1,""]},"src.finn.transformation.streamline.collapse_repeated":{CollapseRepeatedAdd:[11,2,1,""],CollapseRepeatedMul:[11,2,1,""],CollapseRepeatedOp:[11,2,1,""]},"src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp":{apply:[11,4,1,""]},"src.finn.transformation.streamline.reorder":{MoveAddPastMul:[11,2,1,""],MoveScalarAddPastMatMul:[11,2,1,""],MoveScalarMulPastMatMul:[11,2,1,""]},"src.finn.transformation.streamline.reorder.MoveAddPastMul":{apply:[11,4,1,""]},"src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul":{apply:[11,4,1,""]},"src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul":{apply:[11,4,1,""]},"src.finn.transformation.streamline.round_thresholds":{RoundAndClipThresholds:[11,2,1,""]},"src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds":{apply:[11,4,1,""]},"src.finn.transformation.streamline.sign_to_thres":{ConvertSignToThres:[11,2,1,""]},"src.finn.transformation.streamline.sign_to_thres.ConvertSignToThres":{apply:[11,4,1,""]},"src.finn.util":{basic:[12,0,0,"-"],data_packing:[12,0,0,"-"],fpgadataflow:[12,0,0,"-"],onnx:[12,0,0,"-"],test:[12,0,0,"-"]},"src.finn.util.basic":{CppBuilder:[12,2,1,""],calculate_signed_dot_prod_range:[12,1,1,""],gen_finn_dt_tensor:[12,1,1,""],get_by_name:[12,1,1,""],get_finn_root:[12,1,1,""],interleave_matrix_outer_dim_from_partitions:[12,1,1,""],make_build_dir:[12,1,1,""],pad_tensor_to_multiple_of:[12,1,1,""],random_string:[12,1,1,""],remove_by_name:[12,1,1,""],roundup_to_integer_multiple:[12,1,1,""]},"src.finn.util.basic.CppBuilder":{append_includes:[12,4,1,""],append_sources:[12,4,1,""],build:[12,4,1,""],set_executable_path:[12,4,1,""]},"src.finn.util.data_packing":{array2hexstring:[12,1,1,""],finnpy_to_packed_bytearray:[12,1,1,""],hexstring2npbytearray:[12,1,1,""],npbytearray2hexstring:[12,1,1,""],npy_to_rtlsim_input:[12,1,1,""],numpy_to_hls_code:[12,1,1,""],pack_innermost_dim_as_hex_string:[12,1,1,""],packed_bytearray_to_finnpy:[12,1,1,""],rtlsim_output_to_npy:[12,1,1,""],unpack_innermost_dim_from_hex_string:[12,1,1,""]},"src.finn.util.fpgadataflow":{IPGenBuilder:[12,2,1,""],pyverilate_stitched_ip:[12,1,1,""]},"src.finn.util.fpgadataflow.IPGenBuilder":{append_tcl:[12,4,1,""],build:[12,4,1,""],set_ipgen_path:[12,4,1,""]},"src.finn.util.onnx":{valueinfo_to_tensor:[12,1,1,""]},"src.finn.util.test":{get_test_model_def_fxn:[12,1,1,""],get_test_model_trained:[12,1,1,""],get_test_model_untrained:[12,1,1,""],get_trained_checkpoint:[12,1,1,""]},src:{finn:[3,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":12,"0x0f01":12,"abstract":[7,8,9],"boolean":6,"class":[6,7,8,9,10,11,12],"const":9,"default":[7,8,9],"enum":6,"final":6,"float":12,"function":[6,9,12],"new":6,"return":[4,5,6,7,8,9,11,12],"static":4,"true":[6,12],"var":8,For:11,HLS:6,IPs:10,PEs:8,The:[4,6,9,10,11,12],Use:12,abc:[7,9],abit:12,about:[4,10],absorb1bitmulintomatmul:11,absorb:[2,3,9,10],absorbaddintomultithreshold:11,absorbmulintomultithreshold:11,acceler:10,account:6,action:10,activ:6,add:[9,11],addition:11,address:10,after:12,aim:11,all:[4,6,7,8,9,10,12],all_tensors_f32:4,allow:6,alreadi:10,also:[7,8,10],amount:12,analysi:[2,3,6],analysis_fxn:6,anaylsis_fxn:6,ani:[6,9,10,12],annot:[4,7,8],anoth:10,append_includ:12,append_sourc:12,append_tcl:12,appli:[6,9,10,11],apply_rep:9,appropri:9,arbitrari:12,around:6,arrai:12,array2hexstr:12,arxiv:11,assign:6,associ:[6,9],assum:12,attribut:[4,6,7,8,10],attribute_nam:[6,7,8],attributeproto:[7,8],backend:10,base:[6,7,8,9,10,11,12],basic:[2,3],batchnorm:9,batchnorm_to_affin:[2,3],batchnormtoaffin:9,been:10,befor:12,between:[8,12],binari:[6,8,10,11,12],bipolar:[6,8,9,11,12],bipolar_to_xnor:[2,3],bit:[6,12],bitwidth:6,blackboxfunct:8,block:10,blott:8,board:10,bool:[4,9],both:12,bram_estim:8,brien:8,build:12,built:4,calc_tmem:8,calc_wmem:8,calcul:8,calculate_signed_dot_prod_rang:12,call:[6,8,9,10],can:[6,9,10,11,12],cannot:9,certain:4,chang:[6,9],check:[4,6,7,8],check_all_tensor_shapes_specifi:6,check_compat:6,cleanup:[2,3,9],clk:[8,10],clone:12,code:[10,12],code_gen_dir:12,code_generation_ipgen:8,code_generation_npysim:8,codegen_ipgen:[2,3,9],codegen_ipstitch:[2,3,9],codegen_npysim:[2,3,9],collaps:11,collapse_rep:[2,3,9],collapserepeatedadd:11,collapserepeatedmul:11,collapserepeatedop:11,collect:10,come:4,compar:[6,7],compare_execut:6,compare_fxn:6,compat:[6,7,8],compil:[2,3,9],compile_singlenode_cod:8,comput:6,consecut:11,constant:[4,6,11],consum:6,contain:[6,7,10,12],content:1,context:[6,7,8],convent:4,convert:[8,9,10,11,12],convert_to_hls_lay:[2,3,9],convertbipolarmatmultoxnorpopcount:9,convertsigntothr:11,convertsubtoadd:9,convolutioninputgener:[2,3,7],copi:[6,9,10],core:[2,3],correct:9,correctli:[4,7,8,10],correspond:[6,7,8],count:8,cpp_file:12,cppbuilder:12,creat:[6,10,12],create_dataflow_partit:[2,3,9],createdataflowpartit:10,current:6,custom:[4,6],custom_op:[2,3],customop:[7,8],data:[7,10,12],data_pack:[2,3],dataflow:10,dataoutstrm:8,datatyp:[2,3,7,8,9,12],debug:6,declar:9,deep:[6,8,9],default_v:[7,8],default_valu:[7,8],defin:8,deploy:10,deploytopynq:10,design:10,dict:[6,7,8],dictionari:[4,6],digit:12,dimens:12,dimension:12,dir:[10,12],directori:[10,12],distr_pad:12,divis:12,docker:12,docomput:8,don:9,done:4,dot:12,driver:10,dt_a:12,dt_b:12,dtype:[4,6,7,8,12],dynam:4,dynamic_input_to_npi:8,each:[4,6,9,11,12],effect:9,element:12,embed:6,emit:12,empti:6,end:8,ensur:[8,9,10,12],enumer:[6,9],equal:[7,8],equival:11,estim:5,even:9,evenli:12,everi:9,exampl:12,exec_precompiled_singlenode_model:8,execut:[6,7,8],execute_custom_nod:[2,3],execute_nod:[6,7,8],execute_onnx:6,execute_onnx_and_make_model:6,exist:[7,12],exit:12,expect:[4,6,7,8,10],explor:[6,8],expos:6,extra:[4,12],extract:[4,5],factor:12,factoroutmulsignmagnitud:11,fals:[6,9,12],fan:4,fast:8,fewest:6,field:[10,12],file:[6,10,12],filenam:[6,10],find:6,find_consum:6,find_produc:6,finn:[1,2],finn_dt:12,finnpy_to_packed_bytearrai:12,first:[4,11],fix:[9,12],flatten:12,float32:[4,6],fold_const:[2,3],foldconst:9,folder:[10,12],follow:[4,10],form:8,found:10,four:12,fpgadataflow:[2,3,4,7,9],fpgapart:[8,10],framework:8,fraser:8,from:[5,6,10,12],full:6,further:9,gambardella:8,gen_finn_dt_tensor:12,gener:[2,3,10,12],generate_param:8,get:[6,7],get_all_tensor_nam:6,get_by_nam:12,get_finn_root:12,get_folded_input_shap:8,get_folded_output_shap:8,get_hls_compatible_threshold_tensor:8,get_hls_compatible_weight_tensor:8,get_hls_datatype_str:6,get_initi:6,get_input_datatyp:8,get_instream_width:8,get_metadata_prop:6,get_nodeattr:7,get_nodeattr_typ:[7,8],get_num_possible_valu:6,get_number_output_valu:8,get_output_datatyp:8,get_outstream_width:8,get_per_tensor_fanout:4,get_smallest_poss:6,get_stream_width:8,get_template_param_valu:8,get_tensor_datatyp:6,get_tensor_fanout:6,get_tensor_shap:6,get_tensor_valueinfo:6,get_test_model_def_fxn:12,get_test_model_train:12,get_test_model_untrain:12,get_trained_checkpoint:12,get_weight_datatyp:8,getcustomop:7,give:[9,11],give_unique_node_nam:9,given:[4,5,6,7,8,12],giverandomtensornam:9,givereadabletensornam:9,giveuniquenodenam:9,global_includ:8,graph:[4,6,7,8,9,10],guarante:9,guid:[2,3],has:[4,6,9,10,12],have:[4,6,9,10,11],hex:12,hexstr:12,hexstring2npbytearrai:12,hls_synth_res_estim:[2,3,4],hls_var_nam:12,hlscustomop:8,hlslib:8,hlssynth_ipgen:[2,3,9],host:12,how:[2,3,12],human:9,immedi:10,implement:6,includ:[6,10],index:0,indic:[6,7,8,9,10],infer:[6,7,8,9,12],infer_datatyp:[2,3],infer_node_datatyp:[7,8],infer_shap:[2,3],inferbinarystreamingfclay:10,inferdatatyp:9,infershap:9,infinit:9,info:[9,12],info_messag:4,inform:[4,10],infrastructur:10,inherit:9,initi:[4,6],innermost:12,inp0:7,inp1:7,inp:8,input:[4,6,7,8,9,11,12],input_dict:6,input_dtyp:12,input_fil:12,insert:[10,12],insert_tlastmark:[2,3,9],inserttlastmark:10,insid:7,instanc:[6,7,8,11],instanti:10,instead:12,int16:6,int2:6,int32:6,int3:6,int4:6,int8:6,integ:[6,11,12],interfac:10,interleav:8,interleave_matrix_outer_dim_from_partit:12,intermedi:[6,9],intern:9,ipgen_singlenode_cod:8,ipgenbuild:12,is_integ:6,is_linear:4,item:12,kei:6,know:9,lambda:6,largest:6,layer:[9,10],lead:12,learn:8,leeser:8,len:12,let:9,letter:12,library_path:12,linear:[4,6],list:[4,6],look:4,loop:9,lut_estim:8,made:[6,9],magnitud:11,make:[9,10],make_build_dir:12,make_collapsed_param_fxn:11,make_deepcopi:6,make_deploy:[2,3,9],make_empty_exec_context:6,make_new_valueinfo_nam:6,make_project:10,make_pynq_driv:[2,3,9],make_pynq_proj:[2,3,9],make_shape_compatible_op:[7,8],makepynqdriv:10,makepynqproject:10,manipul:6,manual:9,matmul:[9,11],matrix:[8,11,12],max:[6,12],mean:12,meant:9,member:[7,8],metadata_prop:[6,10],min:[6,12],minimum:12,mixtur:4,mkdtemp:12,mode:10,model:[4,5,6,7,8,9,10,11,12],model_a:6,model_b:6,model_was_chang:9,modelproto:[6,10],modelwrapp:[2,3,4,9],modul:[0,1],more:[6,9,12],move:11,moveaddpastmul:11,movescalaraddpastmatmul:11,movescalarmulpastmatmul:11,mul:[9,11],multidimension:12,multipl:[9,11,12],multipli:11,multithreshold:[2,3,10,11],must:[7,9,10,11,12],mvtu:10,n_partit:12,n_thres_step:8,name:[4,5,6,7,9,12],name_field:12,ndarrai:12,nearest:[11,12],necessari:10,need:[5,7,8,9],neg:[6,11],netnam:12,network:8,neural:8,new_nam:6,next:11,no_decl:12,node:[4,5,6,7,8,9,10,11],node_inputs_in_expected_ord:4,node_res_estim:8,non:10,none:[6,7,12],notwithstand:4,now:[4,6],npbytearrai:12,npbytearray2hexstr:12,npy:12,npy_to_dynamic_output:8,npy_to_rtlsim_input:12,number:[6,7,8,12],numpi:[8,12],numpy_to_hls_cod:12,object:[6,12],old_nam:6,onc:9,one:[4,6,10,12],onli:[4,6,9,10,11],onnx:[2,3,6,7,8,10],onnx_exec:[2,3],onnx_model_proto:6,onnx_nod:[7,8],onnxruntim:6,op_nam:11,op_typ:4,oper:[6,11],ops:[4,11],order:4,orig_thres_matrix:8,orig_weight_matrix:8,origin:8,other:[6,11],otherwis:[6,9,12],out:4,out_bia:7,out_scal:7,out_shap:12,outcom:10,output:[6,7,8,9,12],output_shap:12,overlai:10,pack:[10,12],pack_innermost_dim:12,pack_innermost_dim_as_hex_str:12,packag:1,packed_bytearrai:12,packed_bytearray_to_finnpi:12,packedbit:12,pad:12,pad_tensor_to_multiple_of:12,pad_to_dim:12,pad_to_nbit:12,page:0,pair:10,paramet:11,part:[7,12],particular:[7,8,12],pass:[2,3,8],password:10,past:11,path:[8,12],per:10,perform:[7,8],permit:[7,8],place:10,platform:10,point:9,posit:[8,11,12],possibl:[6,10],pragma:8,preced:11,precid:11,precis:12,precomput:9,prefer:6,prefix:12,prepend:12,preusser:8,previous:10,prior:[9,10],produc:[4,6],product:12,project:10,properti:[4,6],provid:6,pynq:10,pynq_driver_dir:10,python:[10,12],pyveril:12,pyverilate_stitched_ip:12,quantiz:[4,8],random:[9,12],random_str:12,randomli:12,reach:9,read_npy_data:8,readabl:9,recommend:9,registri:[2,3],remov:[10,12],remove_by_nam:12,remove_prefix:12,renam:6,rename_tensor:6,reorder:[2,3,9],repeat:[9,11],repeatedli:6,replac:9,repres:[6,12],represent:12,requir:[6,7,8],res_estim:[2,3,4],reset_rtlsim:8,reshap:8,resourc:5,respect:12,result:[4,5,6,9,10,11,12],return_full_exec_context:6,returned_dict:[7,8],revers:12,reverse_endian:12,reverse_inn:12,root:12,round:[11,12],round_threshold:[2,3,9],roundandclipthreshold:11,roundup_to_integer_multipl:12,row:8,rtlsim:8,rtlsim_output_to_npi:12,run:[6,10],same:[10,12],save:[6,12],save_as_npi:8,scalar:11,scp:10,script:10,search:0,second:[10,11],see:[11,12],sep:8,sequenc:12,set:[6,7,8,10,11,12],set_attribut:6,set_executable_path:12,set_initi:6,set_ipgen_path:12,set_metadata_prop:6,set_nodeattr:7,set_sim_mod:[2,3,9],set_tensor_datatyp:6,set_tensor_shap:6,setsimmod:10,shape:[6,7,8,9,12],shell:10,should:[4,6,9],sign:[6,9,11,12],sign_to_thr:[2,3,9],sim:[8,12],sim_mod:10,simd:8,sinc:[6,12],singl:[6,11,12],small:4,smallest:6,some:[6,9],specifi:[6,9,12],split:[10,11,12],standard:[6,7,8],stitch:[10,12],store:[7,10,12],streamingdataflowpartit:[2,3,10],streamingfclayer_batch:[2,3,7,10],streamingmaxpool_batch:[2,3,7],streamlin:[2,3,9],string:[4,12],stringlength:12,strm_decl:8,structur:4,sub:9,subdirectori:10,subgraph:6,submodul:[2,3],subpackag:1,subset:4,success:10,suitabl:8,surviv:12,synth_pynq_proj:[2,3,9],synthesi:[5,10],synthpynqproject:10,take:[4,6,9,11,12],taken:[6,10],target:10,target_dir:10,targetbit:12,tcl:10,tcl_script:12,tempfil:12,templat:[2,3,7,9],temporari:12,tensor:[4,6,9,11,12],tensor_fanout:4,tensor_nam:[4,6],tensor_shap:[6,12],tensor_valu:6,termin:10,ternari:6,test:[2,3,9],thei:11,them:[4,10,11],thi:[4,6,7,8,9,10,12],threshold:[7,8,11],time:9,tlastmark:[2,3,7,10],tmem:8,togeth:10,toggle_clk:8,topolog:[2,3],transform:[2,3,6],transformed_model:9,travers:4,tupl:9,two:[6,10,11,12],type:[6,9,12],uint16:6,uint2:[6,12],uint32:6,uint3:6,uint4:6,uint8:[6,12],umuroglu:8,under:10,uniqu:9,unpack:[10,12],unpack_innermost_dim_from_hex_str:12,unsign:[6,11],until:6,updat:11,used:[6,7,8,12],useful:6,user:9,usernam:10,using:[6,9,11,12],util:[2,3,6,7,8],val:12,valu:[6,7,8,10,11,12],value_info:6,valueinfo:[6,9],valueinfo_to_tensor:12,valueinfoproto:[6,12],variabl:12,vector:[11,12],verif:4,verifi:[4,7,8],verify_custom_nod:[2,3],verify_nod:[4,7,8],via:6,visser:8,vivado:[5,6,10],vivado_pynq_proj:10,vivado_stitch_proj:10,wai:4,want:11,wbit:12,weight:[6,8],when:[4,9],where:[6,7,8,10,11],whether:[4,6,7,8,9],which:[6,7,8,10,11,12],width:12,wmem:8,work:[6,12],wrapper:6,write:[2,3],xnorpopcount:[2,3],xnorpopcountmatmul:[7,9,10],you:9,your:9,zero:[6,11,12]},titles:["Welcome to FINN\u2019s documentation!","src","src package","src.finn package","src.finn.analysis package","src.finn.analysis.fpgadataflow package","src.finn.core package","src.finn.custom_op package","src.finn.custom_op.fpgadataflow package","src.finn.transformation package","src.finn.transformation.fpgadataflow package","src.finn.transformation.streamline package","src.finn.util package"],titleterms:{absorb:11,analysi:[4,5],basic:12,batchnorm_to_affin:9,bipolar_to_xnor:9,cleanup:10,codegen_ipgen:10,codegen_ipstitch:10,codegen_npysim:10,collapse_rep:11,compil:10,content:[2,3,4,5,6,7,8,9,10,11,12],convert_to_hls_lay:10,convolutioninputgener:8,core:6,create_dataflow_partit:10,custom_op:[7,8],data_pack:12,datatyp:6,document:0,execute_custom_nod:6,finn:[0,3,4,5,6,7,8,9,10,11,12],fold_const:9,fpgadataflow:[5,8,10,12],gener:9,guid:9,hls_synth_res_estim:5,hlssynth_ipgen:10,how:4,indic:0,infer_datatyp:9,infer_shap:9,insert_tlastmark:10,make_deploy:10,make_pynq_driv:10,make_pynq_proj:10,modelwrapp:6,modul:[2,3,4,5,6,7,8,9,10,11,12],multithreshold:7,onnx:12,onnx_exec:6,packag:[2,3,4,5,6,7,8,9,10,11,12],pass:4,registri:7,reorder:11,res_estim:5,round_threshold:11,set_sim_mod:10,sign_to_thr:11,src:[1,2,3,4,5,6,7,8,9,10,11,12],streamingdataflowpartit:7,streamingfclayer_batch:8,streamingmaxpool_batch:8,streamlin:11,submodul:[4,5,6,7,8,9,10,11,12],subpackag:[2,3,4,7,9],synth_pynq_proj:10,tabl:0,templat:[8,10],test:12,tlastmark:8,topolog:4,transform:[9,10,11],util:12,verify_custom_nod:4,welcom:0,write:[4,9],xnorpopcount:7}})
\ No newline at end of file
diff --git a/docs/finn/_build/html/src.finn.analysis.fpgadataflow.html b/docs/finn/_build/html/src.finn.analysis.fpgadataflow.html
index 8fb899333edb6c62147aa94c51a7c977cff313c4..d5f674b8c764c84299d7ff9dcbe66d6730d0a265 100644
--- a/docs/finn/_build/html/src.finn.analysis.fpgadataflow.html
+++ b/docs/finn/_build/html/src.finn.analysis.fpgadataflow.html
@@ -35,14 +35,28 @@
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="src-finn-analysis-fpgadataflow-hls-synth-res-estimation-module">
-<h2>src.finn.analysis.fpgadataflow.hls_synth_res_estimation module<a class="headerlink" href="#src-finn-analysis-fpgadataflow-hls-synth-res-estimation-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation">
+<span id="src-finn-analysis-fpgadataflow-hls-synth-res-estimation-module"></span><h2>src.finn.analysis.fpgadataflow.hls_synth_res_estimation module<a class="headerlink" href="#module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="src.finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation">
+<code class="sig-prename descclassname">src.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="#src.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="src-finn-analysis-fpgadataflow-res-estimation-module">
-<h2>src.finn.analysis.fpgadataflow.res_estimation module<a class="headerlink" href="#src-finn-analysis-fpgadataflow-res-estimation-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.analysis.fpgadataflow.res_estimation">
+<span id="src-finn-analysis-fpgadataflow-res-estimation-module"></span><h2>src.finn.analysis.fpgadataflow.res_estimation module<a class="headerlink" href="#module-src.finn.analysis.fpgadataflow.res_estimation" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="src.finn.analysis.fpgadataflow.res_estimation.res_estimation">
+<code class="sig-prename descclassname">src.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="#src.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-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.analysis.fpgadataflow">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.analysis.fpgadataflow" title="Permalink to this headline">¶</a></h2>
 </div>
 </div>
 
diff --git a/docs/finn/_build/html/src.finn.analysis.html b/docs/finn/_build/html/src.finn.analysis.html
index 523e6a287ebcebc1c2e68b66edfc3e27470fde13..e9492e7bd689832d196139f58bf450679cb04af6 100644
--- a/docs/finn/_build/html/src.finn.analysis.html
+++ b/docs/finn/_build/html/src.finn.analysis.html
@@ -38,9 +38,9 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html">src.finn.analysis.fpgadataflow package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#src-finn-analysis-fpgadataflow-hls-synth-res-estimation-module">src.finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#src-finn-analysis-fpgadataflow-res-estimation-module">src.finn.analysis.fpgadataflow.res_estimation module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation">src.finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.res_estimation">src.finn.analysis.fpgadataflow.res_estimation module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 </ul>
@@ -49,14 +49,58 @@
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="src-finn-analysis-topology-module">
-<h2>src.finn.analysis.topology module<a class="headerlink" href="#src-finn-analysis-topology-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.analysis.topology">
+<span id="src-finn-analysis-topology-module"></span><h2>src.finn.analysis.topology module<a class="headerlink" href="#module-src.finn.analysis.topology" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="src.finn.analysis.topology.all_tensors_f32">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.analysis.topology.get_per_tensor_fanouts">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.analysis.topology.is_linear">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.analysis.topology.node_inputs_in_expected_order">
+<code class="sig-prename descclassname">src.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="#src.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-src.finn.analysis.verify_custom_nodes">
+<span id="src-finn-analysis-verify-custom-nodes-module"></span><h2>src.finn.analysis.verify_custom_nodes module<a class="headerlink" href="#module-src.finn.analysis.verify_custom_nodes" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="src.finn.analysis.verify_custom_nodes.verify_nodes">
+<code class="sig-prename descclassname">src.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="#src.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="src-finn-analysis-verify-custom-nodes-module">
-<h2>src.finn.analysis.verify_custom_nodes module<a class="headerlink" href="#src-finn-analysis-verify-custom-nodes-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.analysis">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.analysis" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="how-to-write-an-analysis-pass-for-finn">
+<h3>How to write an analysis pass for FINN<a class="headerlink" href="#how-to-write-an-analysis-pass-for-finn" title="Permalink to this headline">¶</a></h3>
+<p>An analysis pass traverses the graph structure and produces information about
+certain properties. The convention is to take in a ModelWrapper, and return
+a dictionary of named properties that the analysis extracts.</p>
 </div>
-<div class="section" id="module-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
 </div>
 </div>
 
diff --git a/docs/finn/_build/html/src.finn.core.html b/docs/finn/_build/html/src.finn.core.html
index e43f4f3c7525724ba95824e8d16e2d82be0cab1a..dbddb71c34f12f4329a487ba108ce7e55fef49db 100644
--- a/docs/finn/_build/html/src.finn.core.html
+++ b/docs/finn/_build/html/src.finn.core.html
@@ -35,20 +35,368 @@
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="src-finn-core-datatype-module">
-<h2>src.finn.core.datatype module<a class="headerlink" href="#src-finn-core-datatype-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.core.datatype">
+<span id="src-finn-core-datatype-module"></span><h2>src.finn.core.datatype module<a class="headerlink" href="#module-src.finn.core.datatype" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.core.datatype.DataType">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.core.datatype.</code><code class="sig-name descname">DataType</code><a class="headerlink" href="#src.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="src.finn.core.datatype.DataType.BINARY">
+<code class="sig-name descname">BINARY</code><em class="property"> = 1</em><a class="headerlink" href="#src.finn.core.datatype.DataType.BINARY" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.BIPOLAR">
+<code class="sig-name descname">BIPOLAR</code><em class="property"> = 8</em><a class="headerlink" href="#src.finn.core.datatype.DataType.BIPOLAR" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.FLOAT32">
+<code class="sig-name descname">FLOAT32</code><em class="property"> = 16</em><a class="headerlink" href="#src.finn.core.datatype.DataType.FLOAT32" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.INT16">
+<code class="sig-name descname">INT16</code><em class="property"> = 14</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT16" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.INT2">
+<code class="sig-name descname">INT2</code><em class="property"> = 10</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT2" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.INT3">
+<code class="sig-name descname">INT3</code><em class="property"> = 11</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT3" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.INT32">
+<code class="sig-name descname">INT32</code><em class="property"> = 15</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT32" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.INT4">
+<code class="sig-name descname">INT4</code><em class="property"> = 12</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT4" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.INT8">
+<code class="sig-name descname">INT8</code><em class="property"> = 13</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT8" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.TERNARY">
+<code class="sig-name descname">TERNARY</code><em class="property"> = 9</em><a class="headerlink" href="#src.finn.core.datatype.DataType.TERNARY" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.UINT16">
+<code class="sig-name descname">UINT16</code><em class="property"> = 6</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT16" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.UINT2">
+<code class="sig-name descname">UINT2</code><em class="property"> = 2</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT2" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.UINT3">
+<code class="sig-name descname">UINT3</code><em class="property"> = 3</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT3" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.UINT32">
+<code class="sig-name descname">UINT32</code><em class="property"> = 7</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT32" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.UINT4">
+<code class="sig-name descname">UINT4</code><em class="property"> = 4</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT4" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="src.finn.core.datatype.DataType.UINT8">
+<code class="sig-name descname">UINT8</code><em class="property"> = 5</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT8" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src-finn-core-execute-custom-node-module">
-<h2>src.finn.core.execute_custom_node module<a class="headerlink" href="#src-finn-core-execute-custom-node-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.core.execute_custom_node">
+<span id="src-finn-core-execute-custom-node-module"></span><h2>src.finn.core.execute_custom_node module<a class="headerlink" href="#module-src.finn.core.execute_custom_node" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="src.finn.core.execute_custom_node.execute_custom_node">
+<code class="sig-prename descclassname">src.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="#src.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="src-finn-core-modelwrapper-module">
-<h2>src.finn.core.modelwrapper module<a class="headerlink" href="#src-finn-core-modelwrapper-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.core.modelwrapper">
+<span id="src-finn-core-modelwrapper-module"></span><h2>src.finn.core.modelwrapper module<a class="headerlink" href="#module-src.finn.core.modelwrapper" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.core.modelwrapper.ModelWrapper">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.finn.core.modelwrapper.ModelWrapper.graph">
+<em class="property">property </em><code class="sig-name descname">graph</code><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.graph" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.finn.core.modelwrapper.ModelWrapper.model">
+<em class="property">property </em><code class="sig-name descname">model</code><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.model" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.finn.core.modelwrapper.ModelWrapper.set_attribute">
+<code class="sig-name descname">set_attribute</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">attribute_name</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.set_attribute" title="Permalink to this definition">¶</a></dt>
+<dd><p>Sets a custom node attribute of given name with given value</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.finn.core.modelwrapper.ModelWrapper.set_metadata_prop" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src-finn-core-onnx-exec-module">
-<h2>src.finn.core.onnx_exec module<a class="headerlink" href="#src-finn-core-onnx-exec-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.core.onnx_exec">
+<span id="src-finn-core-onnx-exec-module"></span><h2>src.finn.core.onnx_exec module<a class="headerlink" href="#module-src.finn.core.onnx_exec" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="src.finn.core.onnx_exec.compare_execution">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.core.onnx_exec.execute_node">
+<code class="sig-prename descclassname">src.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="#src.finn.core.onnx_exec.execute_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Call onnxruntime to execute a single node. Input/output provided via context.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="src.finn.core.onnx_exec.execute_onnx">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.core.onnx_exec.execute_onnx_and_make_model">
+<code class="sig-prename descclassname">src.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="#src.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-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.core">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.core" title="Permalink to this headline">¶</a></h2>
 </div>
 </div>
 
diff --git a/docs/finn/_build/html/src.finn.custom_op.fpgadataflow.html b/docs/finn/_build/html/src.finn.custom_op.fpgadataflow.html
index 2178d49805f4a06e8cd3d9e830176a79d66c5fd1..8cc164d7b72dd39649e77b858663f326384f08ec 100644
--- a/docs/finn/_build/html/src.finn.custom_op.fpgadataflow.html
+++ b/docs/finn/_build/html/src.finn.custom_op.fpgadataflow.html
@@ -35,23 +35,723 @@
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="src-finn-custom-op-fpgadataflow-convolutioninputgenerator-module">
-<h2>src.finn.custom_op.fpgadataflow.convolutioninputgenerator module<a class="headerlink" href="#src-finn-custom-op-fpgadataflow-convolutioninputgenerator-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator">
+<span id="src-finn-custom-op-fpgadataflow-convolutioninputgenerator-module"></span><h2>src.finn.custom_op.fpgadataflow.convolutioninputgenerator module<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></p>
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src-finn-custom-op-fpgadataflow-streamingfclayer-batch-module">
-<h2>src.finn.custom_op.fpgadataflow.streamingfclayer_batch module<a class="headerlink" href="#src-finn-custom-op-fpgadataflow-streamingfclayer-batch-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch">
+<span id="src-finn-custom-op-fpgadataflow-streamingfclayer-batch-module"></span><h2>src.finn.custom_op.fpgadataflow.streamingfclayer_batch module<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></p>
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src-finn-custom-op-fpgadataflow-streamingmaxpool-batch-module">
-<h2>src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module<a class="headerlink" href="#src-finn-custom-op-fpgadataflow-streamingmaxpool-batch-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch">
+<span id="src-finn-custom-op-fpgadataflow-streamingmaxpool-batch-module"></span><h2>src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></p>
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src-finn-custom-op-fpgadataflow-templates-module">
-<h2>src.finn.custom_op.fpgadataflow.templates module<a class="headerlink" href="#src-finn-custom-op-fpgadataflow-templates-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op.fpgadataflow.templates">
+<span id="src-finn-custom-op-fpgadataflow-templates-module"></span><h2>src.finn.custom_op.fpgadataflow.templates module<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow.templates" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="src-finn-custom-op-fpgadataflow-tlastmarker-module">
-<h2>src.finn.custom_op.fpgadataflow.tlastmarker module<a class="headerlink" href="#src-finn-custom-op-fpgadataflow-tlastmarker-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op.fpgadataflow.tlastmarker">
+<span id="src-finn-custom-op-fpgadataflow-tlastmarker-module"></span><h2>src.finn.custom_op.fpgadataflow.tlastmarker module<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow.tlastmarker" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></p>
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.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-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op.fpgadataflow">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.fpgadataflow.</code><code class="sig-name descname">HLSCustomOp</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></p>
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.blackboxfunction">
+<em class="property">abstract </em><code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.blackboxfunction" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.bram_estimation">
+<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.bram_estimation" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_ipgen">
+<code class="sig-name descname">code_generation_ipgen</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">fpgapart</em>, <em class="sig-param">clk</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_ipgen" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_npysim">
+<code class="sig-name descname">code_generation_npysim</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_npysim" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.compile_singlenode_code">
+<code class="sig-name descname">compile_singlenode_code</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.compile_singlenode_code" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.dataoutstrm">
+<em class="property">abstract </em><code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.dataoutstrm" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.defines">
+<em class="property">abstract </em><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="#src.finn.custom_op.fpgadataflow.HLSCustomOp.defines" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.docompute">
+<em class="property">abstract </em><code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.docompute" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.dynamic_input_to_npy">
+<code class="sig-name descname">dynamic_input_to_npy</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">count</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.dynamic_input_to_npy" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.exec_precompiled_singlenode_model">
+<code class="sig-name descname">exec_precompiled_singlenode_model</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.exec_precompiled_singlenode_model" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.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="#src.finn.custom_op.fpgadataflow.HLSCustomOp.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="src.finn.custom_op.fpgadataflow.HLSCustomOp.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="#src.finn.custom_op.fpgadataflow.HLSCustomOp.generate_params" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.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="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_input_shape" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.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="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_output_shape" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.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="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_instream_width" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.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="#src.finn.custom_op.fpgadataflow.HLSCustomOp.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="src.finn.custom_op.fpgadataflow.HLSCustomOp.get_number_output_values">
+<em class="property">abstract </em><code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_number_output_values" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.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="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_outstream_width" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.global_includes">
+<em class="property">abstract </em><code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.global_includes" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.ipgen_singlenode_code">
+<code class="sig-name descname">ipgen_singlenode_code</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.ipgen_singlenode_code" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.lut_estimation">
+<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.lut_estimation" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.node_res_estimation">
+<code class="sig-name descname">node_res_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.node_res_estimation" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.npy_to_dynamic_output">
+<code class="sig-name descname">npy_to_dynamic_output</code><span class="sig-paren">(</span><em class="sig-param">context</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.npy_to_dynamic_output" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.pragmas">
+<em class="property">abstract </em><code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.pragmas" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.read_npy_data">
+<em class="property">abstract </em><code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.read_npy_data" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.reset_rtlsim">
+<code class="sig-name descname">reset_rtlsim</code><span class="sig-paren">(</span><em class="sig-param">sim</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.reset_rtlsim" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.rtlsim">
+<code class="sig-name descname">rtlsim</code><span class="sig-paren">(</span><em class="sig-param">sim</em>, <em class="sig-param">inp</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.rtlsim" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.save_as_npy">
+<em class="property">abstract </em><code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.save_as_npy" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.strm_decl">
+<em class="property">abstract </em><code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.strm_decl" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.toggle_clk">
+<code class="sig-name descname">toggle_clk</code><span class="sig-paren">(</span><em class="sig-param">sim</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.toggle_clk" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
 </div>
 
diff --git a/docs/finn/_build/html/src.finn.custom_op.html b/docs/finn/_build/html/src.finn.custom_op.html
index 696e8adad210ff0e05720ceae452aebee08c776e..e25274619b30e56cdef10b6d0e6da382be9ef653 100644
--- a/docs/finn/_build/html/src.finn.custom_op.html
+++ b/docs/finn/_build/html/src.finn.custom_op.html
@@ -38,12 +38,12 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html">src.finn.custom_op.fpgadataflow package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-convolutioninputgenerator-module">src.finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-streamingfclayer-batch-module">src.finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-streamingmaxpool-batch-module">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-templates-module">src.finn.custom_op.fpgadataflow.templates module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-tlastmarker-module">src.finn.custom_op.fpgadataflow.tlastmarker module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator">src.finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch">src.finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.templates">src.finn.custom_op.fpgadataflow.templates module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.tlastmarker">src.finn.custom_op.fpgadataflow.tlastmarker module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 </ul>
@@ -52,20 +52,244 @@
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="src-finn-custom-op-multithreshold-module">
-<h2>src.finn.custom_op.multithreshold module<a class="headerlink" href="#src-finn-custom-op-multithreshold-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op.multithreshold">
+<span id="src-finn-custom-op-multithreshold-module"></span><h2>src.finn.custom_op.multithreshold module<a class="headerlink" href="#module-src.finn.custom_op.multithreshold" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.custom_op.multithreshold.MultiThreshold">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.custom_op.multithreshold.MultiThreshold" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></p>
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.finn.custom_op.multithreshold.compare">
+<code class="sig-prename descclassname">src.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="#src.finn.custom_op.multithreshold.compare" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="src.finn.custom_op.multithreshold.multithreshold">
+<code class="sig-prename descclassname">src.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="#src.finn.custom_op.multithreshold.multithreshold" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
 </div>
-<div class="section" id="src-finn-custom-op-registry-module">
-<h2>src.finn.custom_op.registry module<a class="headerlink" href="#src-finn-custom-op-registry-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op.registry">
+<span id="src-finn-custom-op-registry-module"></span><h2>src.finn.custom_op.registry module<a class="headerlink" href="#module-src.finn.custom_op.registry" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="src.finn.custom_op.registry.getCustomOp">
+<code class="sig-prename descclassname">src.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="#src.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="src-finn-custom-op-streamingdataflowpartition-module">
-<h2>src.finn.custom_op.streamingdataflowpartition module<a class="headerlink" href="#src-finn-custom-op-streamingdataflowpartition-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op.streamingdataflowpartition">
+<span id="src-finn-custom-op-streamingdataflowpartition-module"></span><h2>src.finn.custom_op.streamingdataflowpartition module<a class="headerlink" href="#module-src.finn.custom_op.streamingdataflowpartition" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></p>
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src-finn-custom-op-xnorpopcount-module">
-<h2>src.finn.custom_op.xnorpopcount module<a class="headerlink" href="#src-finn-custom-op-xnorpopcount-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op.xnorpopcount">
+<span id="src-finn-custom-op-xnorpopcount-module"></span><h2>src.finn.custom_op.xnorpopcount module<a class="headerlink" href="#module-src.finn.custom_op.xnorpopcount" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.custom_op.xnorpopcount.XnorPopcountMatMul">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></p>
+<dl class="method">
+<dt id="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.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="#src.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="src.finn.custom_op.xnorpopcount.xnorpopcountmatmul">
+<code class="sig-prename descclassname">src.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="#src.finn.custom_op.xnorpopcount.xnorpopcountmatmul" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
 </div>
-<div class="section" id="module-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.custom_op">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.custom_op" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.custom_op.CustomOp">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.</code><code class="sig-name descname">CustomOp</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">abc.ABC</span></code></p>
+<dl class="method">
+<dt id="src.finn.custom_op.CustomOp.execute_node">
+<em class="property">abstract </em><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="#src.finn.custom_op.CustomOp.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="src.finn.custom_op.CustomOp.get_nodeattr">
+<code class="sig-name descname">get_nodeattr</code><span class="sig-paren">(</span><em class="sig-param">name</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.get_nodeattr" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get a node attribute by name. Data is stored inside the ONNX node’s
+AttributeProto container. Attribute must be part of get_nodeattr_types.
+Default value is returned if attribute is not set.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.CustomOp.get_nodeattr_types">
+<em class="property">abstract </em><code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.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="src.finn.custom_op.CustomOp.infer_node_datatype">
+<em class="property">abstract </em><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="#src.finn.custom_op.CustomOp.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="src.finn.custom_op.CustomOp.make_shape_compatible_op">
+<em class="property">abstract </em><code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.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="src.finn.custom_op.CustomOp.set_nodeattr">
+<code class="sig-name descname">set_nodeattr</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.set_nodeattr" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set a node attribute by name. Data is stored inside the ONNX node’s
+AttributeProto container. Attribute must be part of get_nodeattr_types.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="src.finn.custom_op.CustomOp.verify_node">
+<em class="property">abstract </em><code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.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>
 
diff --git a/docs/finn/_build/html/src.finn.html b/docs/finn/_build/html/src.finn.html
index e321de7c2c96180026553b5566b83ff21c2a37b3..b9f583576959b4b9d40a63c4496ec3ee843e54fe 100644
--- a/docs/finn/_build/html/src.finn.html
+++ b/docs/finn/_build/html/src.finn.html
@@ -40,109 +40,115 @@
 <li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html">src.finn.analysis.fpgadataflow package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#src-finn-analysis-fpgadataflow-hls-synth-res-estimation-module">src.finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#src-finn-analysis-fpgadataflow-res-estimation-module">src.finn.analysis.fpgadataflow.res_estimation module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-contents">Module contents</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation">src.finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.res_estimation">src.finn.analysis.fpgadataflow.res_estimation module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#src-finn-analysis-topology-module">src.finn.analysis.topology module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#src-finn-analysis-verify-custom-nodes-module">src.finn.analysis.verify_custom_nodes module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis.topology">src.finn.analysis.topology module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis.verify_custom_nodes">src.finn.analysis.verify_custom_nodes module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis">Module contents</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="src.finn.analysis.html#how-to-write-an-analysis-pass-for-finn">How to write an analysis pass for FINN</a></li>
+</ul>
+</li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="src.finn.core.html">src.finn.core package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#src-finn-core-datatype-module">src.finn.core.datatype module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#src-finn-core-execute-custom-node-module">src.finn.core.execute_custom_node module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#src-finn-core-modelwrapper-module">src.finn.core.modelwrapper module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#src-finn-core-onnx-exec-module">src.finn.core.onnx_exec module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.datatype">src.finn.core.datatype module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.execute_custom_node">src.finn.core.execute_custom_node module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.modelwrapper">src.finn.core.modelwrapper module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.onnx_exec">src.finn.core.onnx_exec module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-src.finn.core">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="src.finn.custom_op.html">src.finn.custom_op package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html">src.finn.custom_op.fpgadataflow package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-convolutioninputgenerator-module">src.finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-streamingfclayer-batch-module">src.finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-streamingmaxpool-batch-module">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-templates-module">src.finn.custom_op.fpgadataflow.templates module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-tlastmarker-module">src.finn.custom_op.fpgadataflow.tlastmarker module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-contents">Module contents</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator">src.finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch">src.finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.templates">src.finn.custom_op.fpgadataflow.templates module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.tlastmarker">src.finn.custom_op.fpgadataflow.tlastmarker module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#src-finn-custom-op-multithreshold-module">src.finn.custom_op.multithreshold module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#src-finn-custom-op-registry-module">src.finn.custom_op.registry module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#src-finn-custom-op-streamingdataflowpartition-module">src.finn.custom_op.streamingdataflowpartition module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#src-finn-custom-op-xnorpopcount-module">src.finn.custom_op.xnorpopcount module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.multithreshold">src.finn.custom_op.multithreshold module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.registry">src.finn.custom_op.registry module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.streamingdataflowpartition">src.finn.custom_op.streamingdataflowpartition module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.xnorpopcount">src.finn.custom_op.xnorpopcount module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="src.finn.transformation.html">src.finn.transformation package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html">src.finn.transformation.fpgadataflow package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-cleanup-module">src.finn.transformation.fpgadataflow.cleanup module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-codegen-ipgen-module">src.finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-codegen-ipstitch-module">src.finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-codegen-npysim-module">src.finn.transformation.fpgadataflow.codegen_npysim module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-compile-module">src.finn.transformation.fpgadataflow.compile module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-convert-to-hls-layers-module">src.finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-create-dataflow-partition-module">src.finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-hlssynth-ipgen-module">src.finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-insert-tlastmarker-module">src.finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-make-deployment-module">src.finn.transformation.fpgadataflow.make_deployment module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-make-pynq-driver-module">src.finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-make-pynq-proj-module">src.finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-set-sim-mode-module">src.finn.transformation.fpgadataflow.set_sim_mode module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-synth-pynq-proj-module">src.finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-templates-module">src.finn.transformation.fpgadataflow.templates module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-contents">Module contents</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.cleanup">src.finn.transformation.fpgadataflow.cleanup module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipgen">src.finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipstitch">src.finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_npysim">src.finn.transformation.fpgadataflow.codegen_npysim module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.compile">src.finn.transformation.fpgadataflow.compile module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.convert_to_hls_layers">src.finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.create_dataflow_partition">src.finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.hlssynth_ipgen">src.finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.insert_tlastmarker">src.finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_deployment">src.finn.transformation.fpgadataflow.make_deployment module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_driver">src.finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_proj">src.finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.set_sim_mode">src.finn.transformation.fpgadataflow.set_sim_mode module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.synth_pynq_proj">src.finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.templates">src.finn.transformation.fpgadataflow.templates module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="src.finn.transformation.streamline.html">src.finn.transformation.streamline package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-absorb-module">src.finn.transformation.streamline.absorb module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-collapse-repeated-module">src.finn.transformation.streamline.collapse_repeated module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-reorder-module">src.finn.transformation.streamline.reorder module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-round-thresholds-module">src.finn.transformation.streamline.round_thresholds module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-sign-to-thres-module">src.finn.transformation.streamline.sign_to_thres module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-contents">Module contents</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.absorb">src.finn.transformation.streamline.absorb module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.collapse_repeated">src.finn.transformation.streamline.collapse_repeated module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.reorder">src.finn.transformation.streamline.reorder module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.round_thresholds">src.finn.transformation.streamline.round_thresholds module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.sign_to_thres">src.finn.transformation.streamline.sign_to_thres module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-batchnorm-to-affine-module">src.finn.transformation.batchnorm_to_affine module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-bipolar-to-xnor-module">src.finn.transformation.bipolar_to_xnor module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-fold-constants-module">src.finn.transformation.fold_constants module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-general-module">src.finn.transformation.general module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-infer-datatypes-module">src.finn.transformation.infer_datatypes module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-infer-shapes-module">src.finn.transformation.infer_shapes module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.batchnorm_to_affine">src.finn.transformation.batchnorm_to_affine module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.bipolar_to_xnor">src.finn.transformation.bipolar_to_xnor module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.fold_constants">src.finn.transformation.fold_constants module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.general">src.finn.transformation.general module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.infer_datatypes">src.finn.transformation.infer_datatypes module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.infer_shapes">src.finn.transformation.infer_shapes module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation">Module contents</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="src.finn.transformation.html#guide-to-writing-finn-transformations">Guide to writing FINN transformations</a></li>
+</ul>
+</li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="src.finn.util.html">src.finn.util package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#src-finn-util-basic-module">src.finn.util.basic module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#src-finn-util-data-packing-module">src.finn.util.data_packing module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#src-finn-util-fpgadataflow-module">src.finn.util.fpgadataflow module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#src-finn-util-onnx-module">src.finn.util.onnx module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#src-finn-util-test-module">src.finn.util.test module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.basic">src.finn.util.basic module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.data_packing">src.finn.util.data_packing module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.fpgadataflow">src.finn.util.fpgadataflow module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.onnx">src.finn.util.onnx module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.test">src.finn.util.test module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </div>
 </div>
-<div class="section" id="module-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn" title="Permalink to this headline">¶</a></h2>
 </div>
 </div>
 
diff --git a/docs/finn/_build/html/src.finn.transformation.fpgadataflow.html b/docs/finn/_build/html/src.finn.transformation.fpgadataflow.html
index de3f3d6fd1406ac82aa9e9c9bcfd61be2a202dd2..ddc7ad2bb596a915ee91e665f111bde7ddce97bf 100644
--- a/docs/finn/_build/html/src.finn.transformation.fpgadataflow.html
+++ b/docs/finn/_build/html/src.finn.transformation.fpgadataflow.html
@@ -35,53 +35,253 @@
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="src-finn-transformation-fpgadataflow-cleanup-module">
-<h2>src.finn.transformation.fpgadataflow.cleanup module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-cleanup-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.cleanup">
+<span id="src-finn-transformation-fpgadataflow-cleanup-module"></span><h2>src.finn.transformation.fpgadataflow.cleanup module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.cleanup" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.cleanup.CleanUp">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.cleanup.</code><code class="sig-name descname">CleanUp</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.cleanup.CleanUp" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Remove any generated files for fpgadataflow nodes.</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.fpgadataflow.cleanup.CleanUp.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-fpgadataflow-codegen-ipgen-module">
-<h2>src.finn.transformation.fpgadataflow.codegen_ipgen module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-codegen-ipgen-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.codegen_ipgen">
+<span id="src-finn-transformation-fpgadataflow-codegen-ipgen-module"></span><h2>src.finn.transformation.fpgadataflow.codegen_ipgen module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.codegen_ipgen" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Code generation for all nodes in model</p>
+<dl class="method">
+<dt id="src.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="#src.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="src-finn-transformation-fpgadataflow-codegen-ipstitch-module">
-<h2>src.finn.transformation.fpgadataflow.codegen_ipstitch module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-codegen-ipstitch-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.codegen_ipstitch">
+<span id="src-finn-transformation-fpgadataflow-codegen-ipstitch-module"></span><h2>src.finn.transformation.fpgadataflow.codegen_ipstitch module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.codegen_ipstitch" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.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="src-finn-transformation-fpgadataflow-codegen-npysim-module">
-<h2>src.finn.transformation.fpgadataflow.codegen_npysim module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-codegen-npysim-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.codegen_npysim">
+<span id="src-finn-transformation-fpgadataflow-codegen-npysim-module"></span><h2>src.finn.transformation.fpgadataflow.codegen_npysim module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.codegen_npysim" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.codegen_npysim.</code><code class="sig-name descname">CodeGen_npysim</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Code generation for all nodes in model</p>
+<dl class="method">
+<dt id="src.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="#src.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="src-finn-transformation-fpgadataflow-compile-module">
-<h2>src.finn.transformation.fpgadataflow.compile module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-compile-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.compile">
+<span id="src-finn-transformation-fpgadataflow-compile-module"></span><h2>src.finn.transformation.fpgadataflow.compile module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.compile" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.compile.Compile">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.compile.</code><code class="sig-name descname">Compile</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.compile.Compile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Compile for all nodes in model</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.fpgadataflow.compile.Compile.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-fpgadataflow-convert-to-hls-layers-module">
-<h2>src.finn.transformation.fpgadataflow.convert_to_hls_layers module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-convert-to-hls-layers-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.convert_to_hls_layers">
+<span id="src-finn-transformation-fpgadataflow-convert-to-hls-layers-module"></span><h2>src.finn.transformation.fpgadataflow.convert_to_hls_layers module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.convert_to_hls_layers" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.convert_to_hls_layers.</code><code class="sig-name descname">InferBinaryStreamingFCLayer</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.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="src-finn-transformation-fpgadataflow-create-dataflow-partition-module">
-<h2>src.finn.transformation.fpgadataflow.create_dataflow_partition module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-create-dataflow-partition-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.create_dataflow_partition">
+<span id="src-finn-transformation-fpgadataflow-create-dataflow-partition-module"></span><h2>src.finn.transformation.fpgadataflow.create_dataflow_partition module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.create_dataflow_partition" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.create_dataflow_partition.</code><code class="sig-name descname">CreateDataflowPartition</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.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="src-finn-transformation-fpgadataflow-hlssynth-ipgen-module">
-<h2>src.finn.transformation.fpgadataflow.hlssynth_ipgen module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-hlssynth-ipgen-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.hlssynth_ipgen">
+<span id="src-finn-transformation-fpgadataflow-hlssynth-ipgen-module"></span><h2>src.finn.transformation.fpgadataflow.hlssynth_ipgen module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.hlssynth_ipgen" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.hlssynth_ipgen.</code><code class="sig-name descname">HLSSynth_IPGen</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Compile for all nodes in model</p>
+<dl class="method">
+<dt id="src.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="#src.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="src-finn-transformation-fpgadataflow-insert-tlastmarker-module">
-<h2>src.finn.transformation.fpgadataflow.insert_tlastmarker module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-insert-tlastmarker-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.insert_tlastmarker">
+<span id="src-finn-transformation-fpgadataflow-insert-tlastmarker-module"></span><h2>src.finn.transformation.fpgadataflow.insert_tlastmarker module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.insert_tlastmarker" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.insert_tlastmarker.</code><code class="sig-name descname">InsertTLastMarker</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Ensure that the graph is terminated with a TLastMarker node, inserting
+one if necessary.</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-fpgadataflow-make-deployment-module">
-<h2>src.finn.transformation.fpgadataflow.make_deployment module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-make-deployment-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.make_deployment">
+<span id="src-finn-transformation-fpgadataflow-make-deployment-module"></span><h2>src.finn.transformation.fpgadataflow.make_deployment module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.make_deployment" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-fpgadataflow-make-pynq-driver-module">
-<h2>src.finn.transformation.fpgadataflow.make_pynq_driver module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-make-pynq-driver-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.make_pynq_driver">
+<span id="src-finn-transformation-fpgadataflow-make-pynq-driver-module"></span><h2>src.finn.transformation.fpgadataflow.make_pynq_driver module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.make_pynq_driver" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.make_pynq_driver.</code><code class="sig-name descname">MakePYNQDriver</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.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="src-finn-transformation-fpgadataflow-make-pynq-proj-module">
-<h2>src.finn.transformation.fpgadataflow.make_pynq_proj module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-make-pynq-proj-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.make_pynq_proj">
+<span id="src-finn-transformation-fpgadataflow-make-pynq-proj-module"></span><h2>src.finn.transformation.fpgadataflow.make_pynq_proj module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.make_pynq_proj" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.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="src-finn-transformation-fpgadataflow-set-sim-mode-module">
-<h2>src.finn.transformation.fpgadataflow.set_sim_mode module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-set-sim-mode-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.set_sim_mode">
+<span id="src-finn-transformation-fpgadataflow-set-sim-mode-module"></span><h2>src.finn.transformation.fpgadataflow.set_sim_mode module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.set_sim_mode" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.set_sim_mode.</code><code class="sig-name descname">SetSimMode</code><span class="sig-paren">(</span><em class="sig-param">mode</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Set attribute sim_mode in all fpgadataflow nodes</p>
+<dl class="method">
+<dt id="src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode.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="#src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-fpgadataflow-synth-pynq-proj-module">
-<h2>src.finn.transformation.fpgadataflow.synth_pynq_proj module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-synth-pynq-proj-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.synth_pynq_proj">
+<span id="src-finn-transformation-fpgadataflow-synth-pynq-proj-module"></span><h2>src.finn.transformation.fpgadataflow.synth_pynq_proj module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.synth_pynq_proj" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.synth_pynq_proj.</code><code class="sig-name descname">SynthPYNQProject</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.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="src-finn-transformation-fpgadataflow-templates-module">
-<h2>src.finn.transformation.fpgadataflow.templates module<a class="headerlink" href="#src-finn-transformation-fpgadataflow-templates-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow.templates">
+<span id="src-finn-transformation-fpgadataflow-templates-module"></span><h2>src.finn.transformation.fpgadataflow.templates module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.templates" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="module-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fpgadataflow">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow" title="Permalink to this headline">¶</a></h2>
 </div>
 </div>
 
diff --git a/docs/finn/_build/html/src.finn.transformation.html b/docs/finn/_build/html/src.finn.transformation.html
index 6e79f620ae972045de5da8d35020de44e88bc4e1..c59cf567071a1025e60a72b2c23beeea1c3c4373 100644
--- a/docs/finn/_build/html/src.finn.transformation.html
+++ b/docs/finn/_build/html/src.finn.transformation.html
@@ -38,32 +38,32 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html">src.finn.transformation.fpgadataflow package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-cleanup-module">src.finn.transformation.fpgadataflow.cleanup module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-codegen-ipgen-module">src.finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-codegen-ipstitch-module">src.finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-codegen-npysim-module">src.finn.transformation.fpgadataflow.codegen_npysim module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-compile-module">src.finn.transformation.fpgadataflow.compile module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-convert-to-hls-layers-module">src.finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-create-dataflow-partition-module">src.finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-hlssynth-ipgen-module">src.finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-insert-tlastmarker-module">src.finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-make-deployment-module">src.finn.transformation.fpgadataflow.make_deployment module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-make-pynq-driver-module">src.finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-make-pynq-proj-module">src.finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-set-sim-mode-module">src.finn.transformation.fpgadataflow.set_sim_mode module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-synth-pynq-proj-module">src.finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-templates-module">src.finn.transformation.fpgadataflow.templates module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.cleanup">src.finn.transformation.fpgadataflow.cleanup module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipgen">src.finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipstitch">src.finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_npysim">src.finn.transformation.fpgadataflow.codegen_npysim module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.compile">src.finn.transformation.fpgadataflow.compile module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.convert_to_hls_layers">src.finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.create_dataflow_partition">src.finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.hlssynth_ipgen">src.finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.insert_tlastmarker">src.finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_deployment">src.finn.transformation.fpgadataflow.make_deployment module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_driver">src.finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_proj">src.finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.set_sim_mode">src.finn.transformation.fpgadataflow.set_sim_mode module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.synth_pynq_proj">src.finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.templates">src.finn.transformation.fpgadataflow.templates module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="src.finn.transformation.streamline.html">src.finn.transformation.streamline package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-absorb-module">src.finn.transformation.streamline.absorb module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-collapse-repeated-module">src.finn.transformation.streamline.collapse_repeated module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-reorder-module">src.finn.transformation.streamline.reorder module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-round-thresholds-module">src.finn.transformation.streamline.round_thresholds module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-sign-to-thres-module">src.finn.transformation.streamline.sign_to_thres module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.absorb">src.finn.transformation.streamline.absorb module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.collapse_repeated">src.finn.transformation.streamline.collapse_repeated module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.reorder">src.finn.transformation.streamline.reorder module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.round_thresholds">src.finn.transformation.streamline.round_thresholds module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.sign_to_thres">src.finn.transformation.streamline.sign_to_thres module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline">Module contents</a></li>
 </ul>
 </li>
 </ul>
@@ -72,26 +72,169 @@
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="src-finn-transformation-batchnorm-to-affine-module">
-<h2>src.finn.transformation.batchnorm_to_affine module<a class="headerlink" href="#src-finn-transformation-batchnorm-to-affine-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.batchnorm_to_affine">
+<span id="src-finn-transformation-batchnorm-to-affine-module"></span><h2>src.finn.transformation.batchnorm_to_affine module<a class="headerlink" href="#module-src.finn.transformation.batchnorm_to_affine" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.batchnorm_to_affine.BatchNormToAffine">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.batchnorm_to_affine.</code><code class="sig-name descname">BatchNormToAffine</code><a class="headerlink" href="#src.finn.transformation.batchnorm_to_affine.BatchNormToAffine" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Replaces any test-time BatchNorm layers with Mul-Add layers.</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-bipolar-to-xnor-module">
-<h2>src.finn.transformation.bipolar_to_xnor module<a class="headerlink" href="#src-finn-transformation-bipolar-to-xnor-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.bipolar_to_xnor">
+<span id="src-finn-transformation-bipolar-to-xnor-module"></span><h2>src.finn.transformation.bipolar_to_xnor module<a class="headerlink" href="#module-src.finn.transformation.bipolar_to_xnor" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.bipolar_to_xnor.</code><code class="sig-name descname">ConvertBipolarMatMulToXnorPopcount</code><a class="headerlink" href="#src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Convert MatMul nodes with all-bipolar inputs to XnorPopcountMatMul
+and associated result correction.</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-fold-constants-module">
-<h2>src.finn.transformation.fold_constants module<a class="headerlink" href="#src-finn-transformation-fold-constants-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.fold_constants">
+<span id="src-finn-transformation-fold-constants-module"></span><h2>src.finn.transformation.fold_constants module<a class="headerlink" href="#module-src.finn.transformation.fold_constants" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.fold_constants.FoldConstants">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fold_constants.</code><code class="sig-name descname">FoldConstants</code><a class="headerlink" href="#src.finn.transformation.fold_constants.FoldConstants" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Replace the output of a node with const-only inputs with a precomputed
+result.</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.fold_constants.FoldConstants.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+<div class="section" id="module-src.finn.transformation.general">
+<span id="src-finn-transformation-general-module"></span><h2>src.finn.transformation.general module<a class="headerlink" href="#module-src.finn.transformation.general" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.general.ConvertSubToAdd">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.general.</code><code class="sig-name descname">ConvertSubToAdd</code><a class="headerlink" href="#src.finn.transformation.general.ConvertSubToAdd" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Convert sub nodes to add nodes of appropriate sign.</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.general.ConvertSubToAdd.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="src.finn.transformation.general.GiveRandomTensorNames">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.general.</code><code class="sig-name descname">GiveRandomTensorNames</code><a class="headerlink" href="#src.finn.transformation.general.GiveRandomTensorNames" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Give random tensor names to all tensors.</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.general.GiveRandomTensorNames.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="src.finn.transformation.general.GiveReadableTensorNames">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.general.</code><code class="sig-name descname">GiveReadableTensorNames</code><a class="headerlink" href="#src.finn.transformation.general.GiveReadableTensorNames" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.finn.transformation.general.GiveReadableTensorNames.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="src.finn.transformation.general.GiveUniqueNodeNames">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.general.</code><code class="sig-name descname">GiveUniqueNodeNames</code><a class="headerlink" href="#src.finn.transformation.general.GiveUniqueNodeNames" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Give unique names to each node in the graph using enumeration.</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.general.GiveUniqueNodeNames.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-general-module">
-<h2>src.finn.transformation.general module<a class="headerlink" href="#src-finn-transformation-general-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.infer_datatypes">
+<span id="src-finn-transformation-infer-datatypes-module"></span><h2>src.finn.transformation.infer_datatypes module<a class="headerlink" href="#module-src.finn.transformation.infer_datatypes" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.infer_datatypes.InferDataTypes">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.infer_datatypes.</code><code class="sig-name descname">InferDataTypes</code><a class="headerlink" href="#src.finn.transformation.infer_datatypes.InferDataTypes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Infer FINN DataType info for all intermediate/output tensors based on
+inputs and node type.</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.infer_datatypes.InferDataTypes.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-infer-datatypes-module">
-<h2>src.finn.transformation.infer_datatypes module<a class="headerlink" href="#src-finn-transformation-infer-datatypes-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.infer_shapes">
+<span id="src-finn-transformation-infer-shapes-module"></span><h2>src.finn.transformation.infer_shapes module<a class="headerlink" href="#module-src.finn.transformation.infer_shapes" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.infer_shapes.InferShapes">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.infer_shapes.</code><code class="sig-name descname">InferShapes</code><a class="headerlink" href="#src.finn.transformation.infer_shapes.InferShapes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Ensure every tensor in the model has a specified shape (ValueInfo).</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.infer_shapes.InferShapes.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-infer-shapes-module">
-<h2>src.finn.transformation.infer_shapes module<a class="headerlink" href="#src-finn-transformation-infer-shapes-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.transformation" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="guide-to-writing-finn-transformations">
+<h3>Guide to writing FINN transformations<a class="headerlink" href="#guide-to-writing-finn-transformations" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li><p>Your transformation must inherit the Transformation abstract base class.</p></li>
+<li><p>Your transformation’s apply function should take in a ModelWrapper, and return
+a tuple with (transformed_model: ModelWrapper, model_was_changed: Bool)</p></li>
+<li><p>The transformations are meant to be applied using the .transform function
+in ModelWrapper. This makes a deep copy of the input model by default, so
+you don’t have to.</p></li>
+<li><p>model_was_changed indicates whether your transformation made any changes to
+the model. If you know your transformation needs to be called only once and
+repeated calls have no further effect, you can return False even if the model
+was changed.</p></li>
+<li><p>You MUST return model_was_changed=False at some point when your transformation
+is called multiple times, otherwise apply_repeated() will loop infinitely.</p></li>
+<li><p>If you cannot guarantee that the transformation will reach a fixed point,
+you must declare this, return model_was_changed = False and let the user
+manually re-apply the transform.</p></li>
+</ul>
+<dl class="class">
+<dt id="src.finn.transformation.Transformation">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.</code><code class="sig-name descname">Transformation</code><a class="headerlink" href="#src.finn.transformation.Transformation" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">abc.ABC</span></code></p>
+<dl class="method">
+<dt id="src.finn.transformation.Transformation.apply">
+<em class="property">abstract </em><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="#src.finn.transformation.Transformation.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="module-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
 </div>
 </div>
 
diff --git a/docs/finn/_build/html/src.finn.transformation.streamline.html b/docs/finn/_build/html/src.finn.transformation.streamline.html
index 8a68cad55d9af5e8b529acf5a219f8341bd11536..c10e10cf9058bd09f390d2a8aae0b5af5d802f0e 100644
--- a/docs/finn/_build/html/src.finn.transformation.streamline.html
+++ b/docs/finn/_build/html/src.finn.transformation.streamline.html
@@ -35,23 +35,179 @@
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="src-finn-transformation-streamline-absorb-module">
-<h2>src.finn.transformation.streamline.absorb module<a class="headerlink" href="#src-finn-transformation-streamline-absorb-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.streamline.absorb">
+<span id="src-finn-transformation-streamline-absorb-module"></span><h2>src.finn.transformation.streamline.absorb module<a class="headerlink" href="#module-src.finn.transformation.streamline.absorb" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.absorb.</code><code class="sig-name descname">Absorb1BitMulIntoMatMul</code><a class="headerlink" href="#src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Absorb bipolar or binary multiplications into the preciding matrix
+multiply.</p>
+<dl class="method">
+<dt id="src.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="#src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbAddIntoMultiThreshold</code><a class="headerlink" href="#src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbMulIntoMultiThreshold</code><a class="headerlink" href="#src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.absorb.</code><code class="sig-name descname">FactorOutMulSignMagnitude</code><a class="headerlink" href="#src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-streamline-collapse-repeated-module">
-<h2>src.finn.transformation.streamline.collapse_repeated module<a class="headerlink" href="#src-finn-transformation-streamline-collapse-repeated-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.streamline.collapse_repeated">
+<span id="src-finn-transformation-streamline-collapse-repeated-module"></span><h2>src.finn.transformation.streamline.collapse_repeated module<a class="headerlink" href="#module-src.finn.transformation.streamline.collapse_repeated" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedAdd</code><a class="headerlink" href="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p>
+</dd></dl>
+
+<dl class="class">
+<dt id="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedMul</code><a class="headerlink" href="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p>
+</dd></dl>
+
+<dl class="class">
+<dt id="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp">
+<em class="property">class </em><code class="sig-prename descclassname">src.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="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-streamline-reorder-module">
-<h2>src.finn.transformation.streamline.reorder module<a class="headerlink" href="#src-finn-transformation-streamline-reorder-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.streamline.reorder">
+<span id="src-finn-transformation-streamline-reorder-module"></span><h2>src.finn.transformation.streamline.reorder module<a class="headerlink" href="#module-src.finn.transformation.streamline.reorder" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.streamline.reorder.MoveAddPastMul">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveAddPastMul</code><a class="headerlink" href="#src.finn.transformation.streamline.reorder.MoveAddPastMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.finn.transformation.streamline.reorder.MoveAddPastMul.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarAddPastMatMul</code><a class="headerlink" href="#src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarMulPastMatMul</code><a class="headerlink" href="#src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-streamline-round-thresholds-module">
-<h2>src.finn.transformation.streamline.round_thresholds module<a class="headerlink" href="#src-finn-transformation-streamline-round-thresholds-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.streamline.round_thresholds">
+<span id="src-finn-transformation-streamline-round-thresholds-module"></span><h2>src.finn.transformation.streamline.round_thresholds module<a class="headerlink" href="#module-src.finn.transformation.streamline.round_thresholds" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.round_thresholds.</code><code class="sig-name descname">RoundAndClipThresholds</code><a class="headerlink" href="#src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></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="src.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="#src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
-<div class="section" id="src-finn-transformation-streamline-sign-to-thres-module">
-<h2>src.finn.transformation.streamline.sign_to_thres module<a class="headerlink" href="#src-finn-transformation-streamline-sign-to-thres-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.streamline.sign_to_thres">
+<span id="src-finn-transformation-streamline-sign-to-thres-module"></span><h2>src.finn.transformation.streamline.sign_to_thres module<a class="headerlink" href="#module-src.finn.transformation.streamline.sign_to_thres" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.streamline.sign_to_thres.ConvertSignToThres">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.sign_to_thres.</code><code class="sig-name descname">ConvertSignToThres</code><a class="headerlink" href="#src.finn.transformation.streamline.sign_to_thres.ConvertSignToThres" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Convert Sign node instances to MultiThreshold with threshold at 0.</p>
+<dl class="method">
+<dt id="src.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="#src.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-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.transformation.streamline">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.transformation.streamline" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.transformation.streamline.Streamline">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.</code><code class="sig-name descname">Streamline</code><a class="headerlink" href="#src.finn.transformation.streamline.Streamline" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p>
+<p>Apply the streamlining transform, see arXiv:1709.04060.</p>
+<dl class="method">
+<dt id="src.finn.transformation.streamline.Streamline.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="#src.finn.transformation.streamline.Streamline.apply" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 </div>
 </div>
 
diff --git a/docs/finn/_build/html/src.finn.util.html b/docs/finn/_build/html/src.finn.util.html
index ba23c0888dce05591a2256b78f09460d8da18eeb..1bb5f9360753bb5ccf5cfa94614b0f8bf4bce976 100644
--- a/docs/finn/_build/html/src.finn.util.html
+++ b/docs/finn/_build/html/src.finn.util.html
@@ -35,23 +35,270 @@
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="src-finn-util-basic-module">
-<h2>src.finn.util.basic module<a class="headerlink" href="#src-finn-util-basic-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.util.basic">
+<span id="src-finn-util-basic-module"></span><h2>src.finn.util.basic module<a class="headerlink" href="#module-src.finn.util.basic" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.util.basic.CppBuilder">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">CppBuilder</code><a class="headerlink" href="#src.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="src.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="#src.finn.util.basic.CppBuilder.append_includes" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.util.basic.CppBuilder.append_sources" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.util.basic.CppBuilder.build" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.util.basic.CppBuilder.set_executable_path" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="src.finn.util.basic.calculate_signed_dot_prod_range">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.basic.gen_finn_dt_tensor">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.basic.get_by_name">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.basic.get_finn_root">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.basic.interleave_matrix_outer_dim_from_partitions">
+<code class="sig-prename descclassname">src.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="#src.finn.util.basic.interleave_matrix_outer_dim_from_partitions" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="src.finn.util.basic.make_build_dir">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.basic.pad_tensor_to_multiple_of">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.basic.random_string">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.basic.remove_by_name">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.basic.roundup_to_integer_multiple">
+<code class="sig-prename descclassname">src.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="#src.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="src-finn-util-data-packing-module">
-<h2>src.finn.util.data_packing module<a class="headerlink" href="#src-finn-util-data-packing-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.util.data_packing">
+<span id="src-finn-util-data-packing-module"></span><h2>src.finn.util.data_packing module<a class="headerlink" href="#module-src.finn.util.data_packing" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="src.finn.util.data_packing.array2hexstring">
+<code class="sig-prename descclassname">src.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><span class="sig-paren">)</span><a class="headerlink" href="#src.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.</p>
+<p>Examples:
+array2hexstring([1, 1, 1, 0], DataType.BINARY, 4) = “e”
+array2hexstring([1, 1, 1, 0], DataType.BINARY, 8) = “0e”</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="src.finn.util.data_packing.finnpy_to_packed_bytearray">
+<code class="sig-prename descclassname">src.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><span class="sig-paren">)</span><a class="headerlink" href="#src.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="src.finn.util.data_packing.hexstring2npbytearray">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.data_packing.npbytearray2hexstring">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.data_packing.npy_to_rtlsim_input">
+<code class="sig-prename descclassname">src.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><span class="sig-paren">)</span><a class="headerlink" href="#src.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.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="src.finn.util.data_packing.numpy_to_hls_code">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.data_packing.pack_innermost_dim_as_hex_string">
+<code class="sig-prename descclassname">src.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><span class="sig-paren">)</span><a class="headerlink" href="#src.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="src.finn.util.data_packing.packed_bytearray_to_finnpy">
+<code class="sig-prename descclassname">src.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="#src.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="src.finn.util.data_packing.rtlsim_output_to_npy">
+<code class="sig-prename descclassname">src.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><span class="sig-paren">)</span><a class="headerlink" href="#src.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="src.finn.util.data_packing.unpack_innermost_dim_from_hex_string">
+<code class="sig-prename descclassname">src.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="#src.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="src-finn-util-fpgadataflow-module">
-<h2>src.finn.util.fpgadataflow module<a class="headerlink" href="#src-finn-util-fpgadataflow-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.util.fpgadataflow">
+<span id="src-finn-util-fpgadataflow-module"></span><h2>src.finn.util.fpgadataflow module<a class="headerlink" href="#module-src.finn.util.fpgadataflow" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="src.finn.util.fpgadataflow.IPGenBuilder">
+<em class="property">class </em><code class="sig-prename descclassname">src.finn.util.fpgadataflow.</code><code class="sig-name descname">IPGenBuilder</code><a class="headerlink" href="#src.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="src.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="#src.finn.util.fpgadataflow.IPGenBuilder.append_tcl" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.util.fpgadataflow.IPGenBuilder.build" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="src.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="#src.finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="src.finn.util.fpgadataflow.pyverilate_stitched_ip">
+<code class="sig-prename descclassname">src.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="#src.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="src-finn-util-onnx-module">
-<h2>src.finn.util.onnx module<a class="headerlink" href="#src-finn-util-onnx-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.util.onnx">
+<span id="src-finn-util-onnx-module"></span><h2>src.finn.util.onnx module<a class="headerlink" href="#module-src.finn.util.onnx" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="src.finn.util.onnx.valueinfo_to_tensor">
+<code class="sig-prename descclassname">src.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="#src.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="src-finn-util-test-module">
-<h2>src.finn.util.test module<a class="headerlink" href="#src-finn-util-test-module" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.util.test">
+<span id="src-finn-util-test-module"></span><h2>src.finn.util.test module<a class="headerlink" href="#module-src.finn.util.test" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="src.finn.util.test.get_test_model_def_fxn">
+<code class="sig-prename descclassname">src.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="#src.finn.util.test.get_test_model_def_fxn" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="src.finn.util.test.get_test_model_trained">
+<code class="sig-prename descclassname">src.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="#src.finn.util.test.get_test_model_trained" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="src.finn.util.test.get_test_model_untrained">
+<code class="sig-prename descclassname">src.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="#src.finn.util.test.get_test_model_untrained" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="src.finn.util.test.get_trained_checkpoint">
+<code class="sig-prename descclassname">src.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="#src.finn.util.test.get_trained_checkpoint" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
 </div>
-<div class="section" id="module-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src.finn.util">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.util" title="Permalink to this headline">¶</a></h2>
 </div>
 </div>
 
diff --git a/docs/finn/_build/html/src.html b/docs/finn/_build/html/src.html
index 419017f78e539379c33fa121fdfb2966a2a94f8c..e27a39891794d8be74209b622c6151f168933f67 100644
--- a/docs/finn/_build/html/src.html
+++ b/docs/finn/_build/html/src.html
@@ -42,114 +42,120 @@
 <li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l5"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html">src.finn.analysis.fpgadataflow package</a><ul>
 <li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#src-finn-analysis-fpgadataflow-hls-synth-res-estimation-module">src.finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#src-finn-analysis-fpgadataflow-res-estimation-module">src.finn.analysis.fpgadataflow.res_estimation module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-contents">Module contents</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation">src.finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.res_estimation">src.finn.analysis.fpgadataflow.res_estimation module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#src-finn-analysis-topology-module">src.finn.analysis.topology module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#src-finn-analysis-verify-custom-nodes-module">src.finn.analysis.verify_custom_nodes module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#module-contents">Module contents</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis.topology">src.finn.analysis.topology module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis.verify_custom_nodes">src.finn.analysis.verify_custom_nodes module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis">Module contents</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="src.finn.analysis.html#how-to-write-an-analysis-pass-for-finn">How to write an analysis pass for FINN</a></li>
+</ul>
+</li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="src.finn.core.html">src.finn.core package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#src-finn-core-datatype-module">src.finn.core.datatype module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#src-finn-core-execute-custom-node-module">src.finn.core.execute_custom_node module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#src-finn-core-modelwrapper-module">src.finn.core.modelwrapper module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#src-finn-core-onnx-exec-module">src.finn.core.onnx_exec module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-contents">Module contents</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.datatype">src.finn.core.datatype module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.execute_custom_node">src.finn.core.execute_custom_node module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.modelwrapper">src.finn.core.modelwrapper module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.onnx_exec">src.finn.core.onnx_exec module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-src.finn.core">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="src.finn.custom_op.html">src.finn.custom_op package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l5"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html">src.finn.custom_op.fpgadataflow package</a><ul>
 <li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-convolutioninputgenerator-module">src.finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-streamingfclayer-batch-module">src.finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-streamingmaxpool-batch-module">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-templates-module">src.finn.custom_op.fpgadataflow.templates module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#src-finn-custom-op-fpgadataflow-tlastmarker-module">src.finn.custom_op.fpgadataflow.tlastmarker module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-contents">Module contents</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator">src.finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch">src.finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.templates">src.finn.custom_op.fpgadataflow.templates module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.tlastmarker">src.finn.custom_op.fpgadataflow.tlastmarker module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#src-finn-custom-op-multithreshold-module">src.finn.custom_op.multithreshold module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#src-finn-custom-op-registry-module">src.finn.custom_op.registry module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#src-finn-custom-op-streamingdataflowpartition-module">src.finn.custom_op.streamingdataflowpartition module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#src-finn-custom-op-xnorpopcount-module">src.finn.custom_op.xnorpopcount module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-contents">Module contents</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.multithreshold">src.finn.custom_op.multithreshold module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.registry">src.finn.custom_op.registry module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.streamingdataflowpartition">src.finn.custom_op.streamingdataflowpartition module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.xnorpopcount">src.finn.custom_op.xnorpopcount module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="src.finn.transformation.html">src.finn.transformation package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#subpackages">Subpackages</a><ul>
 <li class="toctree-l5"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html">src.finn.transformation.fpgadataflow package</a><ul>
 <li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#submodules">Submodules</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-cleanup-module">src.finn.transformation.fpgadataflow.cleanup module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-codegen-ipgen-module">src.finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-codegen-ipstitch-module">src.finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-codegen-npysim-module">src.finn.transformation.fpgadataflow.codegen_npysim module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-compile-module">src.finn.transformation.fpgadataflow.compile module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-convert-to-hls-layers-module">src.finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-create-dataflow-partition-module">src.finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-hlssynth-ipgen-module">src.finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-insert-tlastmarker-module">src.finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-make-deployment-module">src.finn.transformation.fpgadataflow.make_deployment module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-make-pynq-driver-module">src.finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-make-pynq-proj-module">src.finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-set-sim-mode-module">src.finn.transformation.fpgadataflow.set_sim_mode module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-synth-pynq-proj-module">src.finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#src-finn-transformation-fpgadataflow-templates-module">src.finn.transformation.fpgadataflow.templates module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-contents">Module contents</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.cleanup">src.finn.transformation.fpgadataflow.cleanup module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipgen">src.finn.transformation.fpgadataflow.codegen_ipgen module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipstitch">src.finn.transformation.fpgadataflow.codegen_ipstitch module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_npysim">src.finn.transformation.fpgadataflow.codegen_npysim module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.compile">src.finn.transformation.fpgadataflow.compile module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.convert_to_hls_layers">src.finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.create_dataflow_partition">src.finn.transformation.fpgadataflow.create_dataflow_partition module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.hlssynth_ipgen">src.finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.insert_tlastmarker">src.finn.transformation.fpgadataflow.insert_tlastmarker module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_deployment">src.finn.transformation.fpgadataflow.make_deployment module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_driver">src.finn.transformation.fpgadataflow.make_pynq_driver module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_proj">src.finn.transformation.fpgadataflow.make_pynq_proj module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.set_sim_mode">src.finn.transformation.fpgadataflow.set_sim_mode module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.synth_pynq_proj">src.finn.transformation.fpgadataflow.synth_pynq_proj module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.templates">src.finn.transformation.fpgadataflow.templates module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow">Module contents</a></li>
 </ul>
 </li>
 <li class="toctree-l5"><a class="reference internal" href="src.finn.transformation.streamline.html">src.finn.transformation.streamline package</a><ul>
 <li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#submodules">Submodules</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-absorb-module">src.finn.transformation.streamline.absorb module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-collapse-repeated-module">src.finn.transformation.streamline.collapse_repeated module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-reorder-module">src.finn.transformation.streamline.reorder module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-round-thresholds-module">src.finn.transformation.streamline.round_thresholds module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#src-finn-transformation-streamline-sign-to-thres-module">src.finn.transformation.streamline.sign_to_thres module</a></li>
-<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-contents">Module contents</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.absorb">src.finn.transformation.streamline.absorb module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.collapse_repeated">src.finn.transformation.streamline.collapse_repeated module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.reorder">src.finn.transformation.streamline.reorder module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.round_thresholds">src.finn.transformation.streamline.round_thresholds module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.sign_to_thres">src.finn.transformation.streamline.sign_to_thres module</a></li>
+<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-batchnorm-to-affine-module">src.finn.transformation.batchnorm_to_affine module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-bipolar-to-xnor-module">src.finn.transformation.bipolar_to_xnor module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-fold-constants-module">src.finn.transformation.fold_constants module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-general-module">src.finn.transformation.general module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-infer-datatypes-module">src.finn.transformation.infer_datatypes module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#src-finn-transformation-infer-shapes-module">src.finn.transformation.infer_shapes module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-contents">Module contents</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.batchnorm_to_affine">src.finn.transformation.batchnorm_to_affine module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.bipolar_to_xnor">src.finn.transformation.bipolar_to_xnor module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.fold_constants">src.finn.transformation.fold_constants module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.general">src.finn.transformation.general module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.infer_datatypes">src.finn.transformation.infer_datatypes module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.infer_shapes">src.finn.transformation.infer_shapes module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation">Module contents</a><ul>
+<li class="toctree-l5"><a class="reference internal" href="src.finn.transformation.html#guide-to-writing-finn-transformations">Guide to writing FINN transformations</a></li>
+</ul>
+</li>
 </ul>
 </li>
 <li class="toctree-l3"><a class="reference internal" href="src.finn.util.html">src.finn.util package</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#submodules">Submodules</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#src-finn-util-basic-module">src.finn.util.basic module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#src-finn-util-data-packing-module">src.finn.util.data_packing module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#src-finn-util-fpgadataflow-module">src.finn.util.fpgadataflow module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#src-finn-util-onnx-module">src.finn.util.onnx module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#src-finn-util-test-module">src.finn.util.test module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-contents">Module contents</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.basic">src.finn.util.basic module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.data_packing">src.finn.util.data_packing module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.fpgadataflow">src.finn.util.fpgadataflow module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.onnx">src.finn.util.onnx module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.test">src.finn.util.test module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="src.finn.html#module-contents">Module contents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.finn.html#module-src.finn">Module contents</a></li>
 </ul>
 </li>
 </ul>
 </div>
 </div>
-<div class="section" id="module-contents">
-<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-src">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src" title="Permalink to this headline">¶</a></h2>
 </div>
 </div>
 
diff --git a/docs/finn/conf.py b/docs/finn/conf.py
index 36f13a1cb1d2d01d74432ad4d93a266a903fdde0..860f66d739249aafb1897cc337c33a51d5c5c8f2 100644
--- a/docs/finn/conf.py
+++ b/docs/finn/conf.py
@@ -29,6 +29,7 @@ author = 'Y. Umuroglu, J. Petri-Koenig'
 # ones.
 extensions = [
 ]
+extensions.append('sphinx.ext.autodoc')
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']