From 03df43e8ee4aa60dfa9d5330394c91ae09db4bf1 Mon Sep 17 00:00:00 2001 From: auphelia <jakobapk@web.de> Date: Fri, 21 Feb 2020 15:50:49 +0000 Subject: [PATCH] [Sphinx Documentation] Add -e flag to command to put each module file in its own page --- docs/finn/_build/doctrees/environment.pickle | Bin 133413 -> 158738 bytes .../source_code/finn.analysis.doctree | Bin 15581 -> 4913 bytes .../finn.analysis.fpgadataflow.doctree | Bin 8772 -> 3701 bytes ...adataflow.hls_synth_res_estimation.doctree | Bin 0 -> 5024 bytes ...alysis.fpgadataflow.res_estimation.doctree | Bin 0 -> 4748 bytes .../finn.analysis.topology.doctree | Bin 0 -> 9376 bytes .../finn.analysis.verify_custom_nodes.doctree | Bin 0 -> 5445 bytes .../source_code/finn.core.datatype.doctree | Bin 0 -> 29083 bytes .../doctrees/source_code/finn.core.doctree | Bin 81755 -> 3632 bytes .../finn.core.execute_custom_node.doctree | Bin 0 -> 4768 bytes .../finn.core.modelwrapper.doctree | Bin 0 -> 37452 bytes .../source_code/finn.core.onnx_exec.doctree | Bin 0 -> 10978 bytes .../source_code/finn.core.remote_exec.doctree | Bin 0 -> 4084 bytes .../source_code/finn.core.rtlsim_exec.doctree | Bin 0 -> 4406 bytes .../source_code/finn.custom_op.doctree | Bin 56521 -> 17339 bytes ...dataflow.convolutioninputgenerator.doctree | Bin 0 -> 31441 bytes .../finn.custom_op.fpgadataflow.doctree | Bin 160747 -> 39345 bytes ...pgadataflow.streamingfclayer_batch.doctree | Bin 0 -> 45944 bytes ...pgadataflow.streamingmaxpool_batch.doctree | Bin 0 -> 25637 bytes ...n.custom_op.fpgadataflow.templates.doctree | Bin 0 -> 2908 bytes ...custom_op.fpgadataflow.tlastmarker.doctree | Bin 0 -> 27147 bytes .../finn.custom_op.multithreshold.doctree | Bin 0 -> 15531 bytes .../finn.custom_op.registry.doctree | Bin 0 -> 4314 bytes ...stom_op.streamingdataflowpartition.doctree | Bin 0 -> 13945 bytes .../finn.custom_op.xnorpopcount.doctree | Bin 0 -> 14107 bytes ...transformation.batchnorm_to_affine.doctree | Bin 0 -> 6433 bytes ...inn.transformation.bipolar_to_xnor.doctree | Bin 0 -> 6639 bytes .../source_code/finn.transformation.doctree | Bin 45675 -> 11756 bytes ...finn.transformation.fold_constants.doctree | Bin 0 -> 6271 bytes ...ransformation.fpgadataflow.cleanup.doctree | Bin 0 -> 6249 bytes ...rmation.fpgadataflow.codegen_ipgen.doctree | Bin 0 -> 6841 bytes ...tion.fpgadataflow.codegen_ipstitch.doctree | Bin 0 -> 8183 bytes ...mation.fpgadataflow.codegen_npysim.doctree | Bin 0 -> 6569 bytes ...ransformation.fpgadataflow.compile.doctree | Bin 0 -> 6209 bytes ...fpgadataflow.convert_to_hls_layers.doctree | Bin 0 -> 7211 bytes ...dataflow.create_dataflow_partition.doctree | Bin 0 -> 7641 bytes .../finn.transformation.fpgadataflow.doctree | Bin 71069 -> 4647 bytes ...mation.fpgadataflow.hlssynth_ipgen.doctree | Bin 0 -> 6553 bytes ...on.fpgadataflow.insert_tlastmarker.doctree | Bin 0 -> 6823 bytes ...ation.fpgadataflow.make_deployment.doctree | Bin 0 -> 7553 bytes ...tion.fpgadataflow.make_pynq_driver.doctree | Bin 0 -> 7309 bytes ...mation.fpgadataflow.make_pynq_proj.doctree | Bin 0 -> 7685 bytes ...rmation.fpgadataflow.set_exec_mode.doctree | Bin 0 -> 6716 bytes ...ation.fpgadataflow.synth_pynq_proj.doctree | Bin 0 -> 6813 bytes ...nsformation.fpgadataflow.templates.doctree | Bin 0 -> 2911 bytes .../finn.transformation.general.doctree | Bin 0 -> 15515 bytes ...inn.transformation.infer_datatypes.doctree | Bin 0 -> 6339 bytes .../finn.transformation.infer_shapes.doctree | Bin 0 -> 6165 bytes ...n.transformation.streamline.absorb.doctree | Bin 0 -> 17280 bytes ...ation.streamline.collapse_repeated.doctree | Bin 0 -> 11501 bytes .../finn.transformation.streamline.doctree | Bin 51198 -> 7224 bytes ....transformation.streamline.reorder.doctree | Bin 0 -> 13465 bytes ...mation.streamline.round_thresholds.doctree | Bin 0 -> 6961 bytes ...formation.streamline.sign_to_thres.doctree | Bin 0 -> 6599 bytes .../source_code/finn.util.basic.doctree | Bin 0 -> 24782 bytes .../finn.util.data_packing.doctree | Bin 0 -> 27586 bytes .../doctrees/source_code/finn.util.doctree | Bin 66431 -> 3569 bytes .../finn.util.fpgadataflow.doctree | Bin 0 -> 8928 bytes .../source_code/finn.util.onnx.doctree | Bin 0 -> 4140 bytes .../source_code/finn.util.test.doctree | Bin 0 -> 7718 bytes ...adataflow.hls_synth_res_estimation.rst.txt | 7 + ...alysis.fpgadataflow.res_estimation.rst.txt | 7 + .../finn.analysis.fpgadataflow.rst.txt | 18 +- .../source_code/finn.analysis.rst.txt | 18 +- .../finn.analysis.topology.rst.txt | 7 + .../finn.analysis.verify_custom_nodes.rst.txt | 7 + .../source_code/finn.core.datatype.rst.txt | 7 + .../finn.core.execute_custom_node.rst.txt | 7 + .../finn.core.modelwrapper.rst.txt | 7 + .../source_code/finn.core.onnx_exec.rst.txt | 7 + .../source_code/finn.core.remote_exec.rst.txt | 7 + .../_sources/source_code/finn.core.rst.txt | 56 +- .../source_code/finn.core.rtlsim_exec.rst.txt | 7 + ...dataflow.convolutioninputgenerator.rst.txt | 7 + .../finn.custom_op.fpgadataflow.rst.txt | 45 +- ...pgadataflow.streamingfclayer_batch.rst.txt | 7 + ...pgadataflow.streamingmaxpool_batch.rst.txt | 7 + ...n.custom_op.fpgadataflow.templates.rst.txt | 7 + ...custom_op.fpgadataflow.tlastmarker.rst.txt | 7 + .../finn.custom_op.multithreshold.rst.txt | 7 + .../finn.custom_op.registry.rst.txt | 7 + .../source_code/finn.custom_op.rst.txt | 36 +- ...stom_op.streamingdataflowpartition.rst.txt | 7 + .../finn.custom_op.xnorpopcount.rst.txt | 7 + ...transformation.batchnorm_to_affine.rst.txt | 7 + ...inn.transformation.bipolar_to_xnor.rst.txt | 7 + ...finn.transformation.fold_constants.rst.txt | 7 + ...ransformation.fpgadataflow.cleanup.rst.txt | 7 + ...rmation.fpgadataflow.codegen_ipgen.rst.txt | 7 + ...tion.fpgadataflow.codegen_ipstitch.rst.txt | 7 + ...mation.fpgadataflow.codegen_npysim.rst.txt | 7 + ...ransformation.fpgadataflow.compile.rst.txt | 7 + ...fpgadataflow.convert_to_hls_layers.rst.txt | 7 + ...dataflow.create_dataflow_partition.rst.txt | 7 + ...mation.fpgadataflow.hlssynth_ipgen.rst.txt | 7 + ...on.fpgadataflow.insert_tlastmarker.rst.txt | 7 + ...ation.fpgadataflow.make_deployment.rst.txt | 7 + ...tion.fpgadataflow.make_pynq_driver.rst.txt | 7 + ...mation.fpgadataflow.make_pynq_proj.rst.txt | 7 + .../finn.transformation.fpgadataflow.rst.txt | 137 +--- ...rmation.fpgadataflow.set_exec_mode.rst.txt | 7 + ...ation.fpgadataflow.synth_pynq_proj.rst.txt | 7 + ...nsformation.fpgadataflow.templates.rst.txt | 7 + .../finn.transformation.general.rst.txt | 7 + ...inn.transformation.infer_datatypes.rst.txt | 7 + .../finn.transformation.infer_shapes.rst.txt | 7 + .../source_code/finn.transformation.rst.txt | 54 +- ...n.transformation.streamline.absorb.rst.txt | 7 + ...ation.streamline.collapse_repeated.rst.txt | 7 + ....transformation.streamline.reorder.rst.txt | 7 + ...mation.streamline.round_thresholds.rst.txt | 7 + .../finn.transformation.streamline.rst.txt | 45 +- ...formation.streamline.sign_to_thres.rst.txt | 7 + .../source_code/finn.util.basic.rst.txt | 7 + .../finn.util.data_packing.rst.txt | 7 + .../finn.util.fpgadataflow.rst.txt | 7 + .../source_code/finn.util.onnx.rst.txt | 7 + .../_sources/source_code/finn.util.rst.txt | 45 +- .../source_code/finn.util.test.rst.txt | 7 + docs/finn/_build/html/genindex.html | 656 +++++++++--------- docs/finn/_build/html/objects.inv | Bin 3619 -> 4675 bytes docs/finn/_build/html/py-modindex.html | 100 +-- docs/finn/_build/html/searchindex.js | 2 +- docs/finn/_build/html/source_code.html | 136 ++-- ...fpgadataflow.hls_synth_res_estimation.html | 219 ++++++ .../finn.analysis.fpgadataflow.html | 28 +- ....analysis.fpgadataflow.res_estimation.html | 219 ++++++ .../html/source_code/finn.analysis.html | 56 +- .../source_code/finn.analysis.topology.html | 240 +++++++ .../finn.analysis.verify_custom_nodes.html | 218 ++++++ .../html/source_code/finn.core.datatype.html | 354 ++++++++++ .../finn.core.execute_custom_node.html | 217 ++++++ .../_build/html/source_code/finn.core.html | 389 +---------- .../source_code/finn.core.modelwrapper.html | 368 ++++++++++ .../html/source_code/finn.core.onnx_exec.html | 245 +++++++ .../source_code/finn.core.remote_exec.html | 215 ++++++ .../source_code/finn.core.rtlsim_exec.html | 216 ++++++ ...pgadataflow.convolutioninputgenerator.html | 334 +++++++++ .../finn.custom_op.fpgadataflow.html | 561 +-------------- ...p.fpgadataflow.streamingfclayer_batch.html | 408 +++++++++++ ...p.fpgadataflow.streamingmaxpool_batch.html | 312 +++++++++ ...finn.custom_op.fpgadataflow.templates.html | 212 ++++++ ...nn.custom_op.fpgadataflow.tlastmarker.html | 329 +++++++++ .../html/source_code/finn.custom_op.html | 198 +----- .../finn.custom_op.multithreshold.html | 267 +++++++ .../source_code/finn.custom_op.registry.html | 216 ++++++ ....custom_op.streamingdataflowpartition.html | 257 +++++++ .../finn.custom_op.xnorpopcount.html | 262 +++++++ docs/finn/_build/html/source_code/finn.html | 136 ++-- ...nn.transformation.batchnorm_to_affine.html | 222 ++++++ .../finn.transformation.bipolar_to_xnor.html | 223 ++++++ .../finn.transformation.fold_constants.html | 223 ++++++ ...n.transformation.fpgadataflow.cleanup.html | 224 ++++++ ...sformation.fpgadataflow.codegen_ipgen.html | 224 ++++++ ...rmation.fpgadataflow.codegen_ipstitch.html | 232 +++++++ ...formation.fpgadataflow.codegen_npysim.html | 224 ++++++ ...n.transformation.fpgadataflow.compile.html | 224 ++++++ ...on.fpgadataflow.convert_to_hls_layers.html | 226 ++++++ ...pgadataflow.create_dataflow_partition.html | 228 ++++++ ...formation.fpgadataflow.hlssynth_ipgen.html | 224 ++++++ .../finn.transformation.fpgadataflow.html | 266 +------ ...ation.fpgadataflow.insert_tlastmarker.html | 225 ++++++ ...ormation.fpgadataflow.make_deployment.html | 228 ++++++ ...rmation.fpgadataflow.make_pynq_driver.html | 229 ++++++ ...formation.fpgadataflow.make_pynq_proj.html | 231 ++++++ ...sformation.fpgadataflow.set_exec_mode.html | 224 ++++++ ...ormation.fpgadataflow.synth_pynq_proj.html | 225 ++++++ ...transformation.fpgadataflow.templates.html | 212 ++++++ .../finn.transformation.general.html | 259 +++++++ .../html/source_code/finn.transformation.html | 190 +---- .../finn.transformation.infer_datatypes.html | 223 ++++++ .../finn.transformation.infer_shapes.html | 222 ++++++ ...finn.transformation.streamline.absorb.html | 265 +++++++ ...ormation.streamline.collapse_repeated.html | 238 +++++++ .../finn.transformation.streamline.html | 174 +---- ...inn.transformation.streamline.reorder.html | 251 +++++++ ...formation.streamline.round_thresholds.html | 226 ++++++ ...ansformation.streamline.sign_to_thres.html | 224 ++++++ .../html/source_code/finn.util.basic.html | 305 ++++++++ .../source_code/finn.util.data_packing.html | 313 +++++++++ .../source_code/finn.util.fpgadataflow.html | 237 +++++++ .../_build/html/source_code/finn.util.html | 280 +------- .../html/source_code/finn.util.onnx.html | 216 ++++++ .../html/source_code/finn.util.test.html | 227 ++++++ .../finn/_build/html/source_code/modules.html | 23 - ....fpgadataflow.hls_synth_res_estimation.rst | 7 + ...n.analysis.fpgadataflow.res_estimation.rst | 7 + .../finn.analysis.fpgadataflow.rst | 18 +- docs/finn/source_code/finn.analysis.rst | 18 +- .../source_code/finn.analysis.topology.rst | 7 + .../finn.analysis.verify_custom_nodes.rst | 7 + docs/finn/source_code/finn.core.datatype.rst | 7 + .../finn.core.execute_custom_node.rst | 7 + .../source_code/finn.core.modelwrapper.rst | 7 + docs/finn/source_code/finn.core.onnx_exec.rst | 7 + .../source_code/finn.core.remote_exec.rst | 7 + docs/finn/source_code/finn.core.rst | 56 +- .../source_code/finn.core.rtlsim_exec.rst | 7 + ...fpgadataflow.convolutioninputgenerator.rst | 7 + .../finn.custom_op.fpgadataflow.rst | 45 +- ...op.fpgadataflow.streamingfclayer_batch.rst | 7 + ...op.fpgadataflow.streamingmaxpool_batch.rst | 7 + .../finn.custom_op.fpgadataflow.templates.rst | 7 + ...inn.custom_op.fpgadataflow.tlastmarker.rst | 7 + .../finn.custom_op.multithreshold.rst | 7 + .../source_code/finn.custom_op.registry.rst | 7 + docs/finn/source_code/finn.custom_op.rst | 36 +- ...n.custom_op.streamingdataflowpartition.rst | 7 + .../finn.custom_op.xnorpopcount.rst | 7 + ...inn.transformation.batchnorm_to_affine.rst | 7 + .../finn.transformation.bipolar_to_xnor.rst | 7 + .../finn.transformation.fold_constants.rst | 7 + ...nn.transformation.fpgadataflow.cleanup.rst | 7 + ...nsformation.fpgadataflow.codegen_ipgen.rst | 7 + ...ormation.fpgadataflow.codegen_ipstitch.rst | 7 + ...sformation.fpgadataflow.codegen_npysim.rst | 7 + ...nn.transformation.fpgadataflow.compile.rst | 7 + ...ion.fpgadataflow.convert_to_hls_layers.rst | 7 + ...fpgadataflow.create_dataflow_partition.rst | 7 + ...sformation.fpgadataflow.hlssynth_ipgen.rst | 7 + ...mation.fpgadataflow.insert_tlastmarker.rst | 7 + ...formation.fpgadataflow.make_deployment.rst | 7 + ...ormation.fpgadataflow.make_pynq_driver.rst | 7 + ...sformation.fpgadataflow.make_pynq_proj.rst | 7 + .../finn.transformation.fpgadataflow.rst | 137 +--- ...nsformation.fpgadataflow.set_exec_mode.rst | 7 + ...formation.fpgadataflow.synth_pynq_proj.rst | 7 + ....transformation.fpgadataflow.templates.rst | 7 + .../finn.transformation.general.rst | 7 + .../finn.transformation.infer_datatypes.rst | 7 + .../finn.transformation.infer_shapes.rst | 7 + docs/finn/source_code/finn.transformation.rst | 54 +- .../finn.transformation.streamline.absorb.rst | 7 + ...formation.streamline.collapse_repeated.rst | 7 + ...finn.transformation.streamline.reorder.rst | 7 + ...sformation.streamline.round_thresholds.rst | 7 + .../finn.transformation.streamline.rst | 45 +- ...ransformation.streamline.sign_to_thres.rst | 7 + docs/finn/source_code/finn.util.basic.rst | 7 + .../source_code/finn.util.data_packing.rst | 7 + .../source_code/finn.util.fpgadataflow.rst | 7 + docs/finn/source_code/finn.util.onnx.rst | 7 + docs/finn/source_code/finn.util.rst | 45 +- docs/finn/source_code/finn.util.test.rst | 7 + 244 files changed, 13856 insertions(+), 3309 deletions(-) create mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.res_estimation.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.topology.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.verify_custom_nodes.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.datatype.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.execute_custom_node.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.modelwrapper.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.onnx_exec.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.remote_exec.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.core.rtlsim_exec.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.templates.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.tlastmarker.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.multithreshold.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.registry.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.streamingdataflowpartition.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.xnorpopcount.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.batchnorm_to_affine.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.bipolar_to_xnor.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fold_constants.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.cleanup.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipgen.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_npysim.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.compile.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_deployment.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_driver.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_proj.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.set_exec_mode.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.templates.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.general.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.infer_datatypes.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.infer_shapes.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.absorb.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.collapse_repeated.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.reorder.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.round_thresholds.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.sign_to_thres.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.util.basic.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.util.data_packing.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.util.fpgadataflow.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.util.onnx.doctree create mode 100644 docs/finn/_build/doctrees/source_code/finn.util.test.doctree create mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.datatype.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.execute_custom_node.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.modelwrapper.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.onnx_exec.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.remote_exec.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.multithreshold.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.registry.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.xnorpopcount.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fold_constants.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.general.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.infer_datatypes.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.infer_shapes.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.reorder.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.basic.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.data_packing.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.fpgadataflow.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.onnx.rst.txt create mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt create mode 100644 docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html create mode 100644 docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.res_estimation.html create mode 100644 docs/finn/_build/html/source_code/finn.analysis.topology.html create mode 100644 docs/finn/_build/html/source_code/finn.analysis.verify_custom_nodes.html create mode 100644 docs/finn/_build/html/source_code/finn.core.datatype.html create mode 100644 docs/finn/_build/html/source_code/finn.core.execute_custom_node.html create mode 100644 docs/finn/_build/html/source_code/finn.core.modelwrapper.html create mode 100644 docs/finn/_build/html/source_code/finn.core.onnx_exec.html create mode 100644 docs/finn/_build/html/source_code/finn.core.remote_exec.html create mode 100644 docs/finn/_build/html/source_code/finn.core.rtlsim_exec.html create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.templates.html create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.tlastmarker.html create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.multithreshold.html create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.registry.html create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.streamingdataflowpartition.html create mode 100644 docs/finn/_build/html/source_code/finn.custom_op.xnorpopcount.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.batchnorm_to_affine.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.bipolar_to_xnor.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fold_constants.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.cleanup.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipgen.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_npysim.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.compile.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_deployment.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_driver.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_proj.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.set_exec_mode.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.templates.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.general.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.infer_datatypes.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.infer_shapes.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.absorb.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.collapse_repeated.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.reorder.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.round_thresholds.html create mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.sign_to_thres.html create mode 100644 docs/finn/_build/html/source_code/finn.util.basic.html create mode 100644 docs/finn/_build/html/source_code/finn.util.data_packing.html create mode 100644 docs/finn/_build/html/source_code/finn.util.fpgadataflow.html create mode 100644 docs/finn/_build/html/source_code/finn.util.onnx.html create mode 100644 docs/finn/_build/html/source_code/finn.util.test.html create mode 100644 docs/finn/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst create mode 100644 docs/finn/source_code/finn.analysis.fpgadataflow.res_estimation.rst create mode 100644 docs/finn/source_code/finn.analysis.topology.rst create mode 100644 docs/finn/source_code/finn.analysis.verify_custom_nodes.rst create mode 100644 docs/finn/source_code/finn.core.datatype.rst create mode 100644 docs/finn/source_code/finn.core.execute_custom_node.rst create mode 100644 docs/finn/source_code/finn.core.modelwrapper.rst create mode 100644 docs/finn/source_code/finn.core.onnx_exec.rst create mode 100644 docs/finn/source_code/finn.core.remote_exec.rst create mode 100644 docs/finn/source_code/finn.core.rtlsim_exec.rst create mode 100644 docs/finn/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst create mode 100644 docs/finn/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst create mode 100644 docs/finn/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst create mode 100644 docs/finn/source_code/finn.custom_op.fpgadataflow.templates.rst create mode 100644 docs/finn/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst create mode 100644 docs/finn/source_code/finn.custom_op.multithreshold.rst create mode 100644 docs/finn/source_code/finn.custom_op.registry.rst create mode 100644 docs/finn/source_code/finn.custom_op.streamingdataflowpartition.rst create mode 100644 docs/finn/source_code/finn.custom_op.xnorpopcount.rst create mode 100644 docs/finn/source_code/finn.transformation.batchnorm_to_affine.rst create mode 100644 docs/finn/source_code/finn.transformation.bipolar_to_xnor.rst create mode 100644 docs/finn/source_code/finn.transformation.fold_constants.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.cleanup.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.compile.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.make_deployment.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst create mode 100644 docs/finn/source_code/finn.transformation.fpgadataflow.templates.rst create mode 100644 docs/finn/source_code/finn.transformation.general.rst create mode 100644 docs/finn/source_code/finn.transformation.infer_datatypes.rst create mode 100644 docs/finn/source_code/finn.transformation.infer_shapes.rst create mode 100644 docs/finn/source_code/finn.transformation.streamline.absorb.rst create mode 100644 docs/finn/source_code/finn.transformation.streamline.collapse_repeated.rst create mode 100644 docs/finn/source_code/finn.transformation.streamline.reorder.rst create mode 100644 docs/finn/source_code/finn.transformation.streamline.round_thresholds.rst create mode 100644 docs/finn/source_code/finn.transformation.streamline.sign_to_thres.rst create mode 100644 docs/finn/source_code/finn.util.basic.rst create mode 100644 docs/finn/source_code/finn.util.data_packing.rst create mode 100644 docs/finn/source_code/finn.util.fpgadataflow.rst create mode 100644 docs/finn/source_code/finn.util.onnx.rst create mode 100644 docs/finn/source_code/finn.util.test.rst diff --git a/docs/finn/_build/doctrees/environment.pickle b/docs/finn/_build/doctrees/environment.pickle index 308b1065423e8dad87e585ffc1778c06a0b2718d..3c761e8ff31cba2be3dd8edd2a14773c03beef36 100644 GIT binary patch literal 158738 zcmd752e=&7c{dIS)GI}FxJDESxO)MKE+JHqkc5PggaIS5%-x-PcSn17mo1X69h^9c zvDeuIIV^UF<C4Tqb-r{v@#n;`W5*@!OLLn2x08HMbBkN*Kk@gLIcLr}b7p7G?A5h- zc=l>$&iTFVl=sy4yUu;_th3HO3;*k%-)>f_^-~4EexllH)Mxy9XV720y<4r7A5dPs zFxc>#!Lx(){RLjLIXKW?T5gm&E#EI!TZ8_FiIa`i@pjWI`4dysdVK;uw)tPhNkqaI zn7TdaFKo9;l<CsMOpvJ5s83a=2mKWxcj9^B4*nq7S<*P+w_4RQKtDU^pV#&~U1HBa z)$!}?YNOsB92-PJp6V35Zl?k447~oLW~&kSC6M>rU3(5381$Ev8qL{Ob-DttuDR`& z+itme?1{qIqch!BW4hM8d2DZC?4aLiRmb-={5rC?5Wp%8(7+YL)2;0IGtHXU@!Q3w z*Qp>&ON;Uyu(H}eRjPH%K7Q`_E#i88e<5oR7&}tw&P=uo<w^K=VdvrE;ZCFF5B&bp zN@u24>{R?2AFRg8Dz-Xh`HH@`J6@++ib&6RZ6H!aE%eW;*315>L4T#+>`oR-?RIgh zS_5qYiz_L!_G$&a3Y0`E+Kq0j<QLoBsi`X9EGso?HBc(4zQ63@R@ra)<(*YfGZ^g< z=(^BqV-ail?M|y(>U80A2h25S_gB=rGhp`ORHHTHb*Q*4YBLrn>@fdp>^dw(kPI>o z`ipi|rwjDzypA_ngExzh;9q*RwA3j3<CC>U={V$nsM_vS>(lt9+h2IXt97Z+tgo!C zT-;v(<$rMCb%V-fmCGwT@E?~{F72O-;^OQ6A}D59oCf`~2K2qZsO8suuk8;id-%n9 zP_DdL`M880i&Hb5!2wRNxaQTTyWX@fUMvI7yqaHx`alX_#Lw-4#~ChRDT^W>nWpZc zt=GP))o65{Exby6d-heJ!)KYd%KFL%La5wQ*~Cz*LNobw&<SV(%2Bs7HGbE48_F>! zSs5m2daX7H3+iW#t1DxiV0qb}^18K7vDE-YheBQAmCMDcZk;R+MXUu4NX2i1YG2Q} zR%3#hM!5@uBJc9Ul~9vrz}AgUz0vWDEq@A1N*#+5HY9^yNVHvPoGfxZYm1jFo3qo{ zQnici&Mfh=3ypMs1?p}M>#tN9ST5u`lyXg!rqSe5Dg?cva%F{ZR*9-voP?%@>_zWa z9QXZZ@ub(Pg9artYuepr6H0SC`f@BJwie{3`c*77W@Z}oBBaAw0^bR6DO81`->lXe z(?Xy03K}Nm)%m0-Y(k;R6sKw)&<>TmvI#o$TC-4>XS^zu&U2bj0<rw|m)D_n1_e>` zJ~(gy->v3%O5^w}e8I#sUcCt=vt8`ApujW2;(E2ytd@??4tkVmW%yjIPS>&dImUSx za;+7%xge~>P;ud3#j@Xo25;Zl1X;PWau;K-f(l+KLV`(Xh`d@&<X%JX{bxW=q8SLe zStfEor4ZsT?bO;usF~HNS@CKazA8ZhYIWK|kY#PqQRkU16f>#0^Obi+k4o>Lzu=jj zP@hSC7pmXG)*0)>`u-A8<*3e{6L`>mFQ#q|Yt1q2BSD+c&{3=AcNuR5wXc)VU{D3F zT+Di>x1w#?eg9(Wl+Ws)i|?u7SxPCmg|ED)@*cF-`O&+gQi$nWn7-P9YEikE(=Vg+ zVP6I98zp3hge*{U{Q7{ua902f)T-@@-x`P<VHY9$$jYUheigw(A6)NLr>c;lzo=V3 zUT>TffK0z#qHe14an7}va&@ca0lXoVGwUVn(Ffdq_4(B_r1Hh9kh_*IJF2im5ni)_ zRV3`e=tJek%1um>)h2pcEm5Df(P@;z^16UQnR9#%Zbew<WYRXc3!vntN*`)>5o#pV zBvGO-B)(?6@O|-QwTu<wEY8K!P#Xs|4|}$1y;iLQEE$PEciVoEyXn{S>(zt_PEV;- zrA7>ONE!GGxJ%GxOoFEa)(gL^p*$yBRqO<@L55yrDL60HS3+X1#sn+ZR;~-%K<eqK z+zH2lKb)_8PzoQnXZ(!{U;hGhs>a5k-Rfdn4K4_DpNz4Z(t*^iPO+1knw=c2rC&k- z&_*_(juYwS^k&LCQ3c_{mzA3<<Mg#ss7&xbuCLs{=~q#DXbD@MF5g8A4K7l#+bo06 z2HhL=;oJq#*EW>LN$4iAkEGX}33@uvZlmti01}IU_<RB7;x-yBSuIgRL|OS8c9KmW z+#WFgaVQ4oeCRzPG<#uc5uj|L3Y)cRCoCI1W`#eXCtKtW9m*}`xR6=L?vy_uDe-YF ze<WWH-%Ee)+(HL@Ge%%mkrgQT^|tS|N)_~X6o#-?iM*j@m?0H3{J?Nj_9MqTWLB0C zV3vEZ@B`Z!3po0WLcuIsquXhAp+l8E&UxhHgxqt%g^n293vdv?8^q3lcxUr*kA)qQ zaAwabjD?v)<&nsdbD;~uAI&<!WLa57Xfj&ZqC(Apc05!%`haC_HGr+iCM+s;8Q3Wc zJu@D4hTtxtcij^G9A(&4#5xWy!}0)Kd#4gW^Ft$#{*#qXr`f(|Vxm;82kk<s*65bO zrD*vD(9DDf2`6gR$@WB;YvQ)TorT*cXzbD{1nsS$dFX(*9Pu9?-?sno`2PJ56(2mZ z|Di?;{uSzq`gWvfs$!*JC2ZrcuRQ1IdMNEjHw=6>h0I*8wqeLLOC9PtN1wz*$3!9t z#N3EBVAZq_qo-3H^tRB*gV*;Lg|DbDT`j(&pH0ot>w_m@984aN_}0ZPsVCo`FW%$0 zF&vMD9l>StQ&jIeUJKr$8^G=Ra@5=@D3a6IsP`8)QQ7c@U8hz2RWy<0JybUI7vmth zfT_gD^x7v1NAG{tv)WjcUKrz1a6G!umUjjo6|kj@&+R0=S<P=?5D#UCnxW8(yPQ8@ z<>r6QfTs^_X{|d`5B<N8TTF5a8ZqG(Udrh^jb_b1;n#}chz$oB>~&tq3C!k?_z5wU z4)B~hwCQM(3pg8n!sZlQLg-ZK(@OpX127r|Kr=wE*Yazn85W(qnhUgDs(Ec}o$2*z ztaIR-l#UyY?V9LA3y1yCX74+jvM66V)fpe!olsQe15SycL%8oeGmBR*LC*(`4}G{K zq7r_H*yx}0)XPFsE&<bqy$VztC?w}%A%XEb^|DyrF8B7GEeyW`Q%6c=tzFOto78;0 z2Mbm~1>mZ;21;DDKGnd90qU|vd1O-HO<o@S6r}E7{cznM1GfD!#RVB_OpVD2l@<G| z?UG*u?-G>LmgVt$K_OoLR*O$DqlypK@*{bUgoWx8jw#u`7YTqmNalCEY7GiaH!Mk* zzaxrlse*laf6<Lw#$SESO;3kacm*Y?`zKLi_<U}+4nsJu-WSj}?7U^?Ax9WUm!QK@ zj@GHL!+Q!QZ(vB+>B!;B#ieGG`}6pak@Bpe1mz;k6Oo4p9ErB(Li|J{aNF05K<8k5 zzt)6StX>XB<1j|(FOgrUmApVciiFT09ti#@Y$z{`K9~IyFl?WuX_52%`Z!oxCc7j` z7LpUAoc`IjM#)x2$=Gp|01BPslb|J-LBOdxD(~YF!0HG9lF{hZ2GR0oaFRj)esPqS zN9m$w_9VomQIeTz9p>y>GsPOT=HS9dDp54nhGr0Iez`rUd`N;QJn{^W`f*i6A#{b8 zP?dfVEES1)d6Wt#wP4n!UgQxMl%0qZMe8ydPZ%7Fu+~OcBsMra>>I3_=(bxElhyh} zrP}ROYf%<OQxcc+tdV)dhbY%rL<o9woR%v>m4N9@aF9EV1`Kz&VOk9Zi3_GNJYIus zmHwr_2-`hqp}2CBUq&e`o@ewC+gRb%g-+Y5XJBxHmBFC7I($!aRWuV7W>_A6;IVlB zygE4gCxm;bevA1%YtVO~J_jl_IIcLwejfKh+>Bg^2|%Xej879HP=LUJ>o4_c&5Aea zLq8n0Hy4S7Vk%A;mvJsOKPw&>wH}wt1TaGn4G4?`u_$>s3oFLA5i>Av3T|l=Mrlza zL$V;No!O=jD+lnYza+w7KGq5{;api2CKOvR78Q<@_*|{S`~nPM0FSv5jc2zz*<ZoV z9Zc~7d)W2%FVNm#S!#LU7xx!}-+_!AP^R=(hARiMOIma=ob8uu2VyCrvIOTz`-_1K zo}hdl{L&l3*-$Liw3JaOb)j<4fN=|_VEU`sXqFmXwB*KEN?@zr=1FX58w-<Or&NI~ zGf?P@9!!&?C%7vu*Hm-bgW;z)Rco9qlv+M`jYaW{tvoaq)bL&t1H!6XP_qyEH^&kg zJVL*Z<DQDw#4c_kE%{`%*?>U<3WUlS^j{Xsfg_zl*zEeJd{}C@Czi%wLgl#tOF3X+ zAL;~6Ra_d&>_Ia!+pYq;x5vIkwt{lyd(d=G3*9NI+aAj|j3Fp|(1pQ-MWa}OIYt<p zpnKQ9H4TJ0K<A<0O|}~?Si{*G%Oix*>{dWJ?OB*mhi<lAgxO!1T4JjYE1s$v2mL!@ zw1x>OX1+nNZLy4zR#g%(aIBwzaRM?{t-}C(+OPX959glxSI051STyQ&7!y&UxHpz! z7<*V70lrvog5_rh{kzg~E6S%n6O7lXfHDXDRKiNu7SwcHQ-h3^Mh!am#PSZa&#<V$ zqQ#4)-O8qIx1<TBX@AB$4$FqK^=FFZRu!jC`<tBdmtYmE4zrtbB`{Sn8hI$9Ttcf& zFwCHTS&X<WHMZiQ8+*{dFFCtjHDtY>f{qkwBJ|_X%EDT78~{rkTBHjtXvj>R+7y~E zpgs_W?J&_d=-(F0tut6q3xywc)60}h8QM;6YOy)OE)>er^-6y3YOLjC(03~sqOMe% z&~A`!E{YK%FVE7~8B%kNuEDB!41t<?Y@%x?Tj1_t`P&>zWWZ?!h{`X_y4M=BIGBfV zznUG8Vc`&zl-h%-po9L6DhN-f=$&$8NNbsqeLYQs$eM4{0Cl%$PUw|O$DugkN<1%$ zOXp$Gzsh_C%_fvfQ4E}GEzEGiRIAPVko8TkFddll=)gJ{OiI8ISL$^<#+NL7(3rr& znp$PR4)N|TiJsW<kfA_C#sICrtU(i|m|A`leIBTkZsmzvBWe)Q_Z#$A!Auu++V}^Z zsX_npn9O8D7zu!*ZE3;iD=xlf=rz=0ScuwYW@TNBaHKpONP`|`ZQjAK`cs98c=SqC z^A=)sOa$n~a4Z78HF@yydM!%<3}|sN8u*Gg?W7p&%m@8=+k)jgPlFCiWlb0yiU!@y zYm6E_?2S&tFhcI!z_r_Oi%fy%l3@B9hZUEELk0P=0{b*z3quD#UTl7>hAUa{P3)bL z8DVP_yuQ@P5_l&(Ua6x&jPVuc#0UG%0R{3#ECJS>g{?((%wdwj{WF%=?M@kAFJzp- zzPq~p3&S}V?Bl@NygD`L_0QMd!(2I7ss}qI8n}r7Cr0~=L3~^�O9t4ohK<3pZQ9 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 bOK?4vb_L?ovKE-R)Bq3SR0p2BlZF2W$avzZ literal 133413 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 diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.doctree index 5b78d4a9400210bebe1e8d3ffb1cf0c58cde3ae9..7f88373377a4fbc03f33b3ce9b3c0e2f3c9ec355 100644 GIT binary patch delta 503 zcmYjNJ4ho@6wORBS>h*!2^R5(8;#%iSuB)jv)dVc#iHv6qfBtf!6h0qP7z#xjTo8k zJwXVFyM@&@65Cb8%F0F4Y9UytAS?l4E4?F8d~mt<-FMDA=ibZIen44uYy~{~%B`Kp zTTA$V`}Z>RHLZyy(Fg@je255q;Zy#G68JC(77>li{K$XGKHgsLQq~1CgD<xuzh_0P z3k_chf(>kH80vqbgJFhmX^f;Xn#NezhVit4CVWN(no${c)4z*GR7I5~SwnKQ6q73a zl<FxOBErJ=5^e?(>;+z#5!K!}W|3}0<9xv}##61IoY*Ds4zE?(N;B^$UOu4=@Qz@Q z@|)f>d_H*L#0izh7F0T<#*jxgqOh5+gql=iNi_k%MfR%gRB|Fm$a6wAm;NOWXXM>M zokO1QSS-S;&KY0sOiJGDzs?`BTq$Mey7ug0JR*-6rm>AJJm4NTxHe4JtQyxAQVC6e z+4dttjA5JMf#HT3sIm5uM={Y_h&DsC4DR@Scb!Zr5vul0N;aD{NMXc3<VYg-*W~FS Zl=Diao2JmUsko-=YK&weg8%9bJp<qGz6AgP literal 15581 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 NUOPsLMzd!9e*pwG;ST@+ diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.doctree index cf4f42a3ff0da4b19a0cd112d9d7051650e47744..7146b0ef06b6bab62c68008c3f08f7bb43f520e4 100644 GIT binary patch delta 524 zcmYk2PiqrF7{)XCvx&Bwnu8dV)>ulLq(!Bos3?l!K@2Y9J%`=Q)Ms=vyKZ-|J%rke zP#A=ECYM6NgC9W2P4T3+eiY9hJn1YA>cGG}@B4e7nP<K~{5fBGQyjmjeky$-`m;N$ zkIBp1$f?R88pe?n)M(S)H6znO2@cAAqvkeaaItmSr&L6gZ5mZhqd}T5W?B7fu3bb! zt>_)HQnM{4(u7;6Z#tg3XRB@f(WyJ;t?|@#D?56j>h4&{)GQZ+P*S$R!;=9##WSWV zLw}31IE8uq+b&fe_;Jc3VGWAU!zeI&$^oa8343y<9)AlJA%_7=7&X0|I-T;=dPgGM zHhU6XJU|nxn19kMqk+3J@Uf6ZZS@Tnv#8TxmtH4+9J9puShB5UyW4$}8QigRYal3` z81-gk!1Rqg^tE$W9lWyLNbjCq)$gmtTKFI5$^iHE*TN&Rq)D}*o%&68Wa%lR0=-_j zqDS=!aVP8N$N4<IO^%x%3b$~CLvU<hj034o34h4a?b!ZT_U<DO+{4(DXl3#cGZtLK dfwkS&KU&LVU)L^PI8!3I+`qf<Zqi)rl0Qd)y}JMa literal 8772 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 diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d2a9383f4aadf300d64d26b7d54850798cdf74f6 GIT binary patch literal 5024 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.res_estimation.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.res_estimation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8b1fa4f0540c52d0bbbb4d5e7cb4a5923acf7d64 GIT binary patch literal 4748 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 E2dcg}D*ylh literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.topology.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.topology.doctree new file mode 100644 index 0000000000000000000000000000000000000000..451f72dee0acfd8238d8ab0bc0cfe36bdd8f955d GIT binary patch literal 9376 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.verify_custom_nodes.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.verify_custom_nodes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b8b840f01e19afe06f90d50f68fb939bdf400311 GIT binary patch literal 5445 zcmd5=TW=&s6}H!&vB#IO*Nb`CHEJRf&3ZHAghWxW5K@E?T8%P-gai;-wQ9O+rpoT= zZn~;{0TuxQX;-Q@nqPpB0<S2~;U)irmqg0H;5${_J(t~$*HWZqq>;Mrr@lJpJ73iw zR{wUqzhr-=9VS7pWu$s>5^`0Tb*h-~SQmdS?*6fOSaeJ)W9KT#vw#<72|WTKqcG!f z@t_b(W=-)x%OtM*i-u^5wFgB9jSVez#Alk!;Yh}DkHsvyR8sZMcqT`eANfJ9bTawK zw^n$QB+N04X2B$@KjRl<j_EvYY&mp(<X;MFx@cT$J=07X_N5E4E0)EIX_mVlnAJ$e zycpy|W;U4CnH=UCXc0OqGE_jqtOXHM3YGY7#BAce*26rV7KSW1&G?A=<YrB?F*OyU zEpCfVT2b6F{iE|FJ5?zQ_z`XQ2<M^Pm$SwXa8R~l5yd$qdYQsL4*ECpq1jQXknu&2 zg<*Nh4H<|0V&+`jk%@0%N5TW@FX8_k{9nPpL%RbknY4TA02djLaXwE6cg_s2<IeIf zPS1UHuRO#;GzYq1xi}Qv8D#V#GAaukFqJnQId7UXpqE}A6NIon9(&2iyK?!`C!IqP zgv<F*^js`dzWsbaiDUEq(j<#}=dRb0ap~Px8v@LF*R}Tl3OU4!c-5?eSAr*8t%H^} zwfIUR40N8&(ZsDe+~7Gpx@-A>#%<Yg<joX56;C19U%DDDM=JZz)wO03M8|FMD;J>y zaX>uqY!7H%Orm2Oz~IU><BDfzydZD>C1&}cjPn=e&F)NE7QsdMwq`-EfSRwIha`SJ zNQ4w8wEt+je{pJI#9{7PQ$V~pOU<)Lg12Ulv|-QQ8B=*o-T7G^_f0u$-rPTb)wxwh z{s~6@{&_n7?up&-sZ;b>O`-U#ShO*cM9Ys&({W*8zI~;~BAeLE0#-EZqdbaS&PWN+ z_hG_M+!;&(b<q(dv7XK1HFGVQ7U4I}SSn`m`_B&r4^EXQN1jW@UXr2|d$y;C#OMV{ zmLb_km)<a!k$%-Xms)r%io9t~++cBtQE9GK&wGy}u4Co>mgo=j`T8>D-Z9!oiH{7a z*qEz_8;5gcPb!bRfXLd>w({68$+f2i_YhBcWZS4@9aaX+3J@nc_RViz+)j$x;a;c} zaEpJ<h9*SRW|}3#h))33EE${S!z$46Ra<Wf?~~amAf5BwV(QhkOGD4du%PDGEy?|x z76<X~n;(5W$66cpbxpX4&P>=Y$R3KZkHsDFE~x+v`v-wKi%K2jB^)&1@8~!ml+Rwk zG{a=VWL%gV=_OQFGCZLWLE;$Yv6IzM<j9h?R{Ynj#fg({k7=oaJ!BG()<$sqbg9lY z1ea6R-AYGwT^{H<9_U)_(k&T_S6jY@8m|eEY;FObm6EgWIf42W$+VK-;vS7%Htiq> z2gTa2rTJD><0QISS6pjoJ=|q()|Z=6X6X=q+We43Idp8DV%h`K8uOTEOea}^LdYQP zHJhX;Y?hiEbDyHPQ5N$oLTOtkflrd2TCrS%G%`+cZ<HiDPBfos>@S;bx+ul@#J?CN z*`z>Co9Hctpr6o%OJT~}u7)E}sm3RQ^{a~oRxAgUH;sYW%6OV&+K>1dkBa^cvmsbi z7aQg#zmUL6Ltm+?Q^PbuKFr5hu6@q37+9f4#@PflEuG=!L7OTbnYQI|pU1dzpjTm9 zxgK@j?n1E@=FWVh&$BGad;$88cm|xw)Ib+z2h5FZFf&WT&Qh3zg_eaWPIi`;mQ35t zJGG(x&fxv~{x9C>z1e;JdvCoBL*{!d%wl$FGYW_aU=?9=h1rf+JkF7O>|F}6hr6t~ zh18a0p&#;;<8l-SblVx2CKBlg`vo*I^daX)@`6%vo8>z3r&Z<#vEX)?Pg1}3Kp<=@ zByw?vD=$sBV`~6&tjG_hRjJ~6nD|hS=(Wo)(nN88cBFNeK>KG>N$0COekc_Ktz#pl zm1|XGh<j!Wn^A}bmmc9hWjB8$BYTxI?UbiJ_QVlWf!*&G)eISyCMP$Z&^lGeM@Q%9 z=eSB~k;J_u8y|)I><B&8QDOFJ1kFeze9b37Srdh!zWefPZvvKfHVPJ&p_=J3cdBJ{ zlHe^uay_!k2tA3gL`$<FVj<L`=&zdtc-F+PgRC~+ccS~T`KGl-#!%iQ4B&c%Q3#LT z#8XCHL<H`t%UH7uU&yhD@Q1&yMhUt4mYOgG)~|EKvBJn(w(N?2lmx6q@E{OSQvuG` z#TQPDh{(t2(>#ULqZbzY3R1@XV>n3?*wk1P!5&eA%7^p)cKKw;L&WAK))JhPaNG}~ zgq`}x<1+Gb1A-i)H-|@Ng~w;~Kw;J$B_IajMaUJBB%7~UHs+uhT;*?KA$Wzxvk$Nd z={e#dNNcW^G^VY_Y@@o+B=5&-2fD9OrTgxPFU1$4FZ#J@Q7xq^`!piH9Ekp-TzK@T z@CB08=g=WdXUUX*%h#f*bpHG)B10;qp8|6op8OQ7fD}@`mxv#f7xX@ER-a-1wz^dC z!Ae~|xz0bUo4k4LzC9`r9xE6gqo6i%<Xs{zJQWc2lIR2(lvTY-DP4bHtzk%5oeZ&s zt5n3t=;tr?`|Js5#HY+OYW81s;$iLQ@4Pp-Klm{@Gre2E(d#_=E@Ak<VQA${DQ_Ta z#HZqu+-%PVmObn3Kq7&Vv*7$)4Uu2f&pFj>jq3+jLwHSwNmR$G?fQ*{%DQ)JZpK!% zsvWd9H@`h7+SdN!TxH9WSqC+jg%!{o%fM*WjRR3&v1Mkj=Hb~!vsqW$Fxm(yHIyvs HBw+7<sNgm> literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.core.datatype.doctree b/docs/finn/_build/doctrees/source_code/finn.core.datatype.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e2576c7df3a7905e05ad1e9dd13a228f05b6eaff GIT binary patch literal 29083 zcmc&-ZH(N;dDho`>Ek4yqc}cE*7_?wIleueCCjpE8<oEjTh7^)CC5%7ta-b<BS&0v zO>*x}tpg-QQ>@TIk|rBBiCeTq+n@=O{EFM6ANk?hNrT4!i~vbdpheLBXj7<e@+1A% z_nqOqLvp#h<gTdN5OFg*^UnLe^FGfEhvdvBcYX15uWS?l@!5t~Z-=%MR9&xO23<al z8BNm-yI<%Y`&9Q6-33158=HaG_UmSsZ-Wwb%XS*R>2@!5t!;cNFzcc1xm4bouqLgk zOWg(daU!%s$Bg~NZ(Xxpw_5jnv)V91BfQcwD^0J_hEiAw>g>8;Zei<#ihjB)RD-7G z_+-lfWx}p?z}jx@<dc!AD}0w@yJmN#y=w5?Mi~0`YC8lI(WISrBLMaJRNXOx05ak4 z3D;=Kzor}QmQJi1^~=7whGp7(Dm2#dr>-??&0Bl0Me7iMXlc{)F9$87ZZ4sHOW?#n z{w1}k)xo<WBWZfo4?yw5=XSJL`Tn3~+3r@=Xf&d}n6TZ3xfS!CbgXp*Ot6lEvu=lf zcf!BB;omQzIp7E17Dg<9BW!ma+{zDSxO_qS{1|vy{<YX!sB2BGgk7U;9kcF@8GAl$ zY~a_Wt=Owes#mM6D`(IRppd&>@zyH64OAb82)F<dfG*hHUbPlw#Hk3%XQ=fc|DY07 zSr8psvE7X3z}O5|#FWS~cf~pk5oCRc?*e$#d-`GlewoEzYJm-b5w`tAv`;I=L~vu_ z{i3kpx*i075;lBNDldU>kdivsC!rf&k})UsGWxq{W~=F(5g`eXZTV(k`Wt2!JM&{8 z<@qRb%jrz%vAxn%2xkP0q7!R^-<%N&%IM7Bk{)pKdB9q?EHsyCb1hr-=8VuSrI>Y5 zP|!iHyDi!BtHoOW^`4eZ-Cs`|1Yh`5A$VfVMoPHKCnHkibG^<2t`d;~0OiwbZO4&} zbP=unRcLcXs;RA&JyG}EFiz|WW=PaCK%&OFZ?vp<N8S3U0pxh5az-?F=4I1uH>*#; z<>e@z5Avy~NS8dNvp|*C;~s<X-`g_X1`tAR3n(?-)Lfr7aD;K}(DV%_UVMgBQGpZ7 zAyt4c=dEwR0HECtl)1oniPrg!))mCYl||`IGtQ;x%dbQ2ucm9q3-L*?0!XgQZyU_> zT^K~MWYe(SuJu=Z3Q{=qQBU$ckYjGO9J_8~_hW%g!*}7&86Z+MLjEqQD?Qb<E()Qc z;jf!8h<pn*{!<u?%7OH`?bw^`)mQ|lMjved%hn<59VBxo{2F#WQ0G?^sq_73-3s;_ zbS6??RdroYzV5&uf}nTfF_i4ecxOcImubH;Y1DD5`sh<DXV1S>S?I+y4MP>0s=#=4 z$AE&7u+%6mRJ0C7!`4TY@70v-yvpGF)zCz8#GLInsKBIDR&|m}>b^m6{UTrAC@w}u z{JE^cU%LMD2r@;C*)NhQyDAS?mX#qgkuZZzZQr)7m?b!fMwYNitc^{^z;R8}JNy~Z zyY<<t*5@)A-TFKXK40kV6bx#l^!KE8x+&|6%DN$wLX^<Wk`Plig=9V%F_mP<DQ}fY zvYMgT#2W>e^@wb?1orbO*OSxLtJvZ*LSG~S6^f%`X6ezVo_qG0v*+`J=FY*O5z<CQ z&4CzdB0(wGOhx*taHDiG;yzqB;s87BF{;HsUJ867n=<foS{a1+Ijx6#9AnuFq}Q-{ zsbT`aPs|#25d|b6#2$e>LQ#~;3#8tDijc&9g;dpz76ntLkp6gL_d=TjORS22#bCsa zLk4>lFUxSb-q?BanP<;lIC0-~!cHV@eC&{*G<M=YSTMO%=_GbO51uN<)`*?YP_0t1 zqg0i57<%lPz_I6)0#B4m+VjVxSrPPTd)ObLfE0SJLY_vCOch6uvPz-ncSu#;XkqkZ z2^j-D-vgb>K+ob+D;Jhe<;TwLgT@^pYgFXS(x?-ON#SNfX9H@YR5Hf?nK~|Sj3H)z zM78*fC5$(b+Nse-VB};1F(*^w%}+_Myw>1&qpe~8i2_oHc^C3DVq_{WV$waN@bW`a zR5w`|FIhsyz{}i@a`195bZ3E~CS!$;Zi1>PYE-oBi=zdkq`<OE%7$FPicBP-vH<=m zKD^vTwfM)%feM(Cg_Pq7q#REn<pENw2vW2$>=X(}A>}CKX{5+hUZkXYM*-z_(o?rs z7${jn#sJDC(5Z}p1%YxR|F|*?C?~E9P(VrsP-JcdloP4g3aHQW#ukn#9@Q!fD4=u} zP-q1}3^2<nV}6s=%4-Y`DcTtJDHM<b3WGci6qy<cC?~|qJ*)&UhxF7f76wX|kTHPr z=b%#=K*1SUk-L{+Gq4jQk12`q9mS-uf^)7YJDPz(DmkothdM5AfFWA`nrf9b14Fg5 z;BtRrT)97G%{!!5UTY98+8Xu)6p(_;8<3~rB2#(clI|fju>2({s+%l~mn<P;;N@qa zQyF-{f#u}&8(3fto_Hjhdu=%}#><)ff~8lManeQedznZ=WoG9nGq4G&Ro1`)N@pQO z(gETg@AcET{{X2~1S#4Wb_)tfA!QrnX{5+hUZkXYM*(FA>8V>R43sP(V*uq5(5Wn- zoW6cQfwj@=02H~xng)tqcLmg>*Ih4ApXH4$98;d7T4ezRl+FSQ%_ap<($mR0sg>6l z98$C~Y!wBhfN~D<G*Dz}B%qw88Q4cjPu*f+pkxUd11MKPr!s)Dbm58f#U5D>eEJee z8x<~kRi6Z<=3!IuAApf5og85Pkh(B$s3C4%r&^_~Ad~7T=->mF2i0UuCX&{Ci}cEC z4FX47!@h|EQowl)@-%Q{Dlc$)`$-KlUm{g?qlK}PC1ecjybC&&ft~6_VC*6b$OE7D zOJSoTM?dXXa#FyVjO7DvR5BT8|3ST%H_#9^|4y|^dFHPa&p-`5c0tsfO5MTyFR7K+ z7(|UWhW!Esq)_v(kf%{2Q+ZL-(?<$4KOs$Zn}tD>C1ecH9Nkq8Xcn<M3#=j!yyX|N zMum*Np^U_&5Hq2(aq2HqNxa+-PAa~VyiB!9x#f@4&VUQu#~@tNw=s{CRz={VZDEh0 zfD~Nrg**)xnaT^7bpI%{R7p|YWMQ;q2^j+|40I}Eh!JQhu#`L$EigkL?M^1y8*-u_ zzm*aA(DQ!`!u0(Alhko}BMe8ESE*KMXaTh|&_c!_TGF<BmbA)i3l1*Y7WNqwkV4BQ z<Y~0X)M#kY%gI+rQQc%=v}6ex11)cWPGz7)Ovs9?Cl8&F;o9kFcu5ZS(b91oFk%K4 z<*Nx9B$EToKT_}I4Kswy_o!BB6Eajh12YfAZ(|-v8S`UOE3Yw#8Ep*v5ei6Q=1s`c zn31WxnCa;wHN?C{n(8(SgC<MJ7@*lUQ4VOt5K~}LdFT)`@~U!ji0NHc7DEiJD@Um$ zUfvH*Dn22bqgtg6F}*9xII55_GLf|9Zqlj<T(m9hE)<Z0%Rb1{aFMCJa7p)%Ld$+q zR5w`|Em=awK+8GMsf-~;prydd@=&ylytJI`jo!6ofe%_-j#9}8GpOV8Mi`DRm#9{0 zXz5*EMu5-*OPNU8(ju+$+Jb|NwuN~pAcd9}Ay1=4rba`HUS0k;DXN<+jFv1RW1!_V z(5VcxR1L@RHqFMuvBA$`nr3Ku4fq~r;No&5EPF;)%8D(uD5g3CKDN1qUP)6HZx~M7 zJl69b!4!#v)dpO@R_SCkf0KeFZ!{w^zecrgfHywG=fpRb_+cURpXoa`eApQK3Uora zKu!qNN3>M9UqM)Ck=2s^cnd5W^r2q#)d71GJuuI{le75W%HrB@>~An9#R7i<d71@e zDlZG@m2%b5YSjEHwj@3;*NvumU?KK#-2;zVX8m$y(*mrRer4U>Fx`sqRmBb}k@U)% z=T|}tGAJO`jC|z!)D!IAq`Q7Xnhy(3v=u%XWPgS=#8-ptU!uy14+rm(b}Xzpo)Mn7 z@7S5hu+Xclnw2^lZZ?!5`3h^Te<rnlZ&a;!LO^M)`?D+>3m;;!td8wpEB)=rq~yY` z{BUINWFKOVT#6rJkNn})svU0HjnK-?&UX!Z0bWV#L(jif!aK9N$zl9_Gr>XCS?J~F zY4w|mG@U`wB)*2a6MCiiUB*$W#mjdF`#T8toL>+s@{HI}>&cc;<rEv<3VE6hWhyTl z-qh0#^w9k<c}KUJro$K;o;q*BUJPykWM@|3ljBvOMA(A@dN8Q?<|}R6HyZ=UaMbD) z2kaxL?>u{w)XvL=hp>j^!pEY@gGM&RDp~#+l~oLAH*>njq;li1$}hvm>NU#=YK>_3 zmm2I4lAB?U4`P@s$$i*ny#%(&Zhjc^9Ho%Ys-M9^@5?Hu7%BTlib}ywTe(A0eXEIc z$B=6A8|%C=m`dx+ejC+KF_jB>nyF+eFH;>E*lomGuaMWY1_M~@KFL~wv|uwG*tDhP ziS05fFW4JK!>fGcndd7CI2GLWgZ5Aur7Fb*`vcSyUI`&}^RiV7Ye=^GQdBt)TV?rW zRJQsHXg8a!q;li1)guTt7(Qw(F9_^a$E=B&Xpoz*P7EWg4B>q^i<QJ#nHmhEtveF& zpCKZHxo+v>OhsOOf2TMV{Pj-mAdU0a_o)`Y;f@@G!nE4#pU{F7h5bF`X$q66ycDKy z0sHlfx)uE{`A#b_fW@pBi$P>WQ!j-edFzG~v)El|rEa*D(70??E6=*lmECr;<(Rk& zT{KIx;jeX=!r^`sfta_s-X?M1jcbr1k^K+)WS;#uxh5}TzKt~`WBylEIS*rI^}(o& zxo4^$V@l=5Va$gxn1Uv(H<&?4w3(YPmxu9XkLW&ZX_ds58SM|_$|TTw1Y|Jf!AvJA zp6v50#in4%JD`t?--F&pwfGHo;20dKm1f6L{}e}l0P-|P%2ZyCye%=z^>iK0^A3^U zv<d?lGKd&b353;ea})3)?oW?Zh$>a<K$b=*IMO%8R(@`{TTDc%mFIBZFh8iYUEF{W z=rW?p09OKilVlND{=c+MvB^G+o|<P*ki+uw<~-Jry!mKUIS+4U^~|We`7*SdJ=2uR zjl-MEc2JADE;m_za1dE)d3_l2QV9$hZ*&+f9#qj?)wMFXaJT+d5nw!vB1^E|X6~?x z&kX~r#czaD#-KW_Df=`kouaxX<Y}stsk~IDmq23<S2MsCc}TZAfZra9_)R^GNY3?$ z!vaNCYEJ0E+>eNAJRuYp?DtXkdG-}DAur>2SVJ<-??sjKFiw`QMrE8gpxtc7k;;w3 zIQKM-t=v>|bP&~mpgtV)LJ1rrS{p_#`t1i{rC^Tu+jTpI6#0x*{7vy9c;pAUgC))* z|3I~PsfLe1AX-KCW7IZ9Aa6pRCJ>p*OCWoR&(XJvIo>9p=mv)~hg`RJaBEYT714Z1 zJ_c0JGFPu8Zz9voF`^KP1oj^4KF_X^33-|0EvzA#<EK&OJj{{ht5KO__jEtzkjjn6 z9JYI%m;<-N&3b{h8~|Z!1(*Y^%wP_bqL>5zrg#y|aXa|E_<h$As#UJxV=#wSku9ON zDdxBZ@-%bE)CkN0{#48{Pd?EN4q%Rl<(xx;o^Gs)QpcE5C>Ge0sQo;9oQ%lJ9k*f) z$sK2-%6YgW%Uh#zM-AG|o^?p&#^H`dd7GM>J_f#mFJ<*%kTUicRt*j#5&a-rncKr7 za6ALvuPZ81Ns1uBCL6iKCq57Hsa7fP_bbKG31bk7){^}eDx4w|2l6zb$W&fJ(J$^t zx++fb$TPal0h}`U76jL<>0YMdn(MHu`G$JiAV|+f=*_I;&CoC*6c6lm)P0_PnM}yb zC@$8JjPhDkIS->``D#=~`8Kqh%_veih@}3avGZ^T>*TQp{mZ9cnTifekZ(-AnW@Ph zwN15_x-jTu6nQqyA|80M*oa<aSd2F5H`TcggATBvEy2;a88B|AoHSVXKu^JGF#Wf= zrvq-Rd$8_yK3i|YlVTTE-Q^iQD}1lYkq6-L>A(y_ICKGy_qhp=_Yvp)toh<Nh(?!B zzJTwd2KtrD*%dysZo0Tlzvp)$0Vcvc+-SBSu_rp|0Ayc=<nAch_8my=3%z;`56r<| zp}7e>kOmG}m|OF_5RN=CV?UnT&iCQjLHO`+3*Jj?b|GgL&x>inaXC$V`V)Z2Lo&yd z&x3;6rX5-}abN?e3@t_#qH}z}cz~qmhc(CCFrDtX9elTCIFy{=H<?>D_zF&6X$Pv% z1fOV_tL=4=H;bn(-~kmN*EE`tGZXr7t`8d3?eJOKZMDOi>B50NPzug<XoqWyr*Ty4 z^25m=Yo_mee$6u6hGY8RXH>NwcKLp<9VVqr2q|5DB=t*51iJ>&%V(urt;6iumFJ(T zy?CN}a&h^=Q>Q_ZWQmj%egKULz+)Ep$^qlLe4k^u>uqD*6eksR`3^YViQnv-5aEql z!^BfNpglZVXa&xt@!U1A7hGdEYOo%?X5;-opEcT{SJPR1hYiuSuhDL{Y7~LsVUdAr zoxW>0C~&{X0XMq=#(~ai1!lY9)!-x>D0Kji$M6DEtdgplB3$ZWZNm<18LRti4LdOK zNj+&frI2CW!}o$Q0boI%y#wJB6|1e;@W2X>ftqcZt(sU=2ZM#ZaArvh;uf05Am<e; z3|qmOrKQcyO*rHT-b{C^p1;1-FgKQ<WU$ob2eAf9#2U5Ggr}K+AUtctY%Sh>{3N(# z)?cfqn!z01%wg3`=y`BFmu-e?q8Te}I?%*SXsiMj;PuSzxoLg`BCA;=kdgW|c>vH= z{(hm2?ZPQQc=QGYF#4zg5xoaa_o5^q@IY|I4UMguWv^Qf{DXMi<#-tCdtp`$z<Q+( zI1ZrZ%_1$6HOH$Pkq3{|EqLd<4*e_f1wDpDRD;@=+buZJ1P>h(2ZKepzY0O()ophT zx>^yz98yEjUQL!eV8Y|%24M3Fv}Ktl9+h&i4sQitu9<MQic^Ebv*4{6JkhJecbe`7 z9{<IsB_#j`A&TIT0(kikVn!aEBKrI$Xb7Sr1ZD)^H1M#mPXK8pa`9~&kqy$;D1isS z;8|i&d<rw=-wW*fILv$(F4oiV|26BH*uP$0a4&8qF1W`q6Bpb=m5B>(63N5`_rGJ} zg8O?hals9Yn7H7MEKFQ*mkA~=_yIi=7yLMwi3@)6$ixM|=3?T4U#c*1!MD|!xZs<b zOkD6yC?+oWLID#Od~C+V1y_}sxZv^-6BoSQW8#AIG=`TppFw|!2lja6n()Yq^>oL& z))8*#2p4pO`5j?;N0{9aCU=Cn9bsxmnAs5~c7%ByVOmF+)e$CjggG5yN=KN{5hiqm z`W>NqN2m?8K<|!Fw<A>Tw5_A4q3EtX>}~9|ZG191SVw=c05fvD?N_I-iGnmkRY!dA z2|Iv^Ko^7_W6Lu*WmCt*Sr6kZ4Bp6o8jjz(X8l}710LxhqX9Q`m(hS5Rm*6=jd*1= z;7+458gLUu84b8eoQwwC1xrQ)ZtEkX0k<lV(SW-!$Y{VX%w;s-ce64Y@RL9p4fwf} zj0XJVK}G|<?kl4KU#FANfN!P9XuxN$G8*vFgp3AUW0cW=YX-u_3@7_-zAw&D0yO*J zxFf;E$b~WoM-f#{qBEW&%K=XVPc>IPhe%HpeP1e*O3x%D&Zt&JrMZNBm>KvXPDKu; wWktVi<I^z4QL$P0W(9@@Acp{kPbrXwvPAYC$`(wtyMd!?G!WtJuf1CRKOs#9>Hq)$ literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.core.doctree b/docs/finn/_build/doctrees/source_code/finn.core.doctree index 515b78771ea6d47c72f723398dfa31aaad4f25f4..9fed3972759b5f7fc14e5769d93ac1d88ca55d79 100644 GIT binary patch delta 662 zcmZvaL2DC16vs13x*KC_Z9xh(X-GAiG-jo}6}6xzX(foLs1WLAcj|vJncZ$?X>t(t zpi-EFu%oNRUW&cjQ$B=V1aF?itDm7d8$*fUz%cXP`@Q#nyqWKZ=}$TBS^7=sMB+eu zMZ$;4@$emad<hAWvD~)j2F#YBtUQ-bWEo@7pf{wL?09fk*D!6Hxi;-cp>x;bKBbBc zi>u}Pv*J|84Sb8PTMD?i;V@=cu1^(78TTEP(~#x5nENkf*d{l5&!h6Ctc%Jh6CSkk z(*yVXKkly|W)@<&FzP*$HC)EJ>$FR)L25B<keTRLo@BKV`%8&rpDLS*afey0z@{5c z>u;mDiCeghySRr3RAky_*QOqaT>Y(<&@I#Bj?0vM`ccbm%59;+v2DuKZDLsK$dO?| zyGea&%e92aa)&Dom$iCwJ3!?QuHiHmkXzF+i<O{hA|Fq_(2yv`lON8xw&k0iM}2AH zj0%<1KHre404}S%DhN`;I+H<@hUp}t3pKK&p{K%I;g9)q(d!z~r@=?isi29gp`N-P z{j8D2u@?&EQO+QJGS&ZPkWMm*&;1*V<YQ_X``E)K7<RD}h-1ub)A+qQgKx55$7UV7 r^#Fyq_dOg}U==$`?0r;SCTElCJiJ2YPEL?SB32nT@wUITLMr4BHHh^$ literal 81755 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 J(CN%f{XekSxlaH9 diff --git a/docs/finn/_build/doctrees/source_code/finn.core.execute_custom_node.doctree b/docs/finn/_build/doctrees/source_code/finn.core.execute_custom_node.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ab4f77e7bdba1d31b3967260f86eeb114389c2cc GIT binary patch literal 4768 zcmd5=U27!A6_s{1BaK#?)oQ(Y*_CO6V@BScnV6X1>_bAxLoh>zfb9?yJ55b@%~Y+r zyE@g?(g@;^PuPWeO4{%FCm|3*{zqPH@Q=v3UEMuBv$CQXf-M*{^>ypkx#!+GHNV~Y z<dfsA^3V1|734-n*(gyV&kDOo9WhT#@t5NCcg4rW!1gq|$W*QaUf3<n2!xD6&6DDz zLTuUHj0Z-lq?s=|qAPYkDh3$r7-=Hj8nUm?Ws-~nrTK_2Irios`azx<6@TcH3tp_k z981Uo4D7tem*k3l?WJ|qvb9xzDoU3{=f?ZkZpv^LQ-~w6EpFRxb<(NbiDbfyX+C3i zpBba&49;dHBDZCj;q-Plh**}P6W==ti`}=qFi%&F84J!dpVOS&?i#kBp+fY<Lve?8 z6p!qW#}`VUWho2zn2tF{3^Mo4dE*B_rtDZlu8qJ*XE?*j<W@ejce7N;WI1ACSVgrX zlaMc4ad06LuOhy}1Jd8b=QVs@$7et%10-6O=NSMKnJf^KD?n|#;0;{tP7y8lZFp_a z3elaKg5}~3F>IlcZK9Fsz=1)m8CR@nZ#+sbpAuy7I9YgV?p?cW&AYY*LT)>siIJmx zP2rp2Bc9qHT;bK=)Emg8;`8+`0kJo~gwJ0m_>d>!iQPdB30|Vv03&@G@iPhfn_RDz zgww0QBjP^s0+kpPfG6HUvs9dxRe`J>l-7vfluUJ{LfXH2J&dlbJovBEnmU3!c_@D2 z@^mUrs2Y4RDSFE|dRnG2s${Bp#`QTbh~FQ;%KKHee?|Ou0qT{&ZK8JniU`zDT{*Un zPjWMSgcQ#RjA#XhI4dzlM2}0yP>T^z!*wK4&RTJO<tjcjba3Qq7PlAf(8BsGuCea? zAFm5(?eg#8@^8TKKh*UBrQcDrHr=$>t^fJUS?`p5uWeVYb<2PKA1w1P<ZOMwU%wQS z)|v@x?gxCWuZYfE(w+0dcB?Dfo?M%JxFXBz5@p}+&GRU77hy`2co*CM)Ujwq376z0 z&Mi68)aEVQqli1CT2%Svk609WPE&X?P9siohLJ|`jPfd~d(3mUT0N6^GTMJ9Npmw+ zxxqg#)#_Y^JoL^bt4q<S4$A*~n^m;`1#td(vlJsN{~;cUpU{1VWq+q-*Aayl{Ou+1 zTe0612HjA_OeTfBm0m(7sM#}fnL-*MqKVUikdP?#Wv}?R-A$C!9xrICX?YA%KBbSS zNvo{}H&hKy3JysO469%cU9^W3!(qinUUT+_(y<{n`Pl;`w<|tAcB<-{x?gKX@tD?b z+kTL1(v*IqB@gNzrz!1T#*Kkkf#AN^DDb(al9Ggl?f#5KImB1P>i*RB7Chma8Kny} zLIy2rSe&A9rxJ;<eTL?K)y#E-)}c{>Pa2d)v0aCR9U^x;SIQ*H@YdjD+a8jdPx9Db z&XtY}^z=zqrBI+TrBMcx4_yy;iIw>m(g?p+!q~A|P)XydJ<vQ=+V~Ma=TR}aW%mV( znr6q|<4XywkfM23PwLoC$Y=Qi+x0J)PJk6=XwG8v^o)j7rb89aZC_H#`aFR~#;n5j zax)*kJ%rRK?4$KTpKGnOFIW;rTmxrvH86#}>oUG&rBhld?8(N+hKXm#+gn?<@9eI8 z=>Kr~?mPa^zcYGk_~!S%`!*a|pRr-Z9?@YkASQrSgu@l~Fk;CfXA546f8-k;T=u@^ z;C<+aJOxp(A4&A7?V?D|ab7?pLm$dxE|*kh`z$xgUv=4A66`t*^EmYz1_I%-LxOxd zVG$X;TlN6vBqJWIy3&m2q4FVgFzbjfQ<ZVQy|ScBVEl8LNypW@eke0Gi|8Pgm%DXl zh{yH-hslr&Wr2p#!)ls8mr?otu>F*$KF-9EQ$cy&1L~PEY)vG$o-iiOo{q;C7Z-R7 z7@?Ap(u;A(&&QaVjSKsLR**$n;Tw)?0U1Oxji<wJefurI(%17~V;kyOZS$z!#wdjc zv*c!8ZX-+_VT+z&Gvq>OL^0X3Ctz0WH%ZpG?>l|?!hWOlMkWx6bTxr`gi#1a-@$vk zX(9uUvP;}wOJB%^i0}blcOpepKgeQ+#QIf^JkGH4e%W?SKT-j!5IhM4Zpr}hb@_#e zQ6ciN`Ycazh11Uf<x{=N`xhXI3S=@zsOv&-Or;^qXY2Ehcs%1Fa`O^<3C>9nJP0Di z&U}uGBJv^9p@iv?{M_E=$vM5K?Vc+M$U(3O_k#qljc=G<aFiIlKks29u)^TC31Ab_ z`}t!Ot+ig#4`ny3&6`G-*pKHqrteax`#un#i_gSFOmf?!Ub>#jx4ig#Dkjf!;n7R@ zGh9rc;#Y^R^JG<jtDiJhGV0TnBx>}K%y9J-u=U2X_fQpZg;WoG@%`#~IT7#Y_OMNg z($B*{I(<U)b3K%}^*jeiyT{D~OrS<QQ&GdSa_TD^oz3jtn#EqdYq{un%|42;HdOr| tY}%?uw(K6tN;9nwC5CK7JTg=)XRxUrYu$I6?lSoMAr-VL_nlZ7{Rfe$I!XWl literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.core.modelwrapper.doctree b/docs/finn/_build/doctrees/source_code/finn.core.modelwrapper.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3384f0c4528f2bc42bcb9c27884ac86ad9753563 GIT binary patch literal 37452 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 K27RKtvh;slser5i literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.core.onnx_exec.doctree b/docs/finn/_build/doctrees/source_code/finn.core.onnx_exec.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7529c89d10f492df2d88b0823fb81557dcfc3ac1 GIT binary patch literal 10978 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 SE8}W<6fld}LV%ui+W!GIQ@R8I literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.core.remote_exec.doctree b/docs/finn/_build/doctrees/source_code/finn.core.remote_exec.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8b4675413117862af218c9588e64c4cacc682b0a GIT binary patch literal 4084 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 K`_ygA+30`A-7x?F literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.core.rtlsim_exec.doctree b/docs/finn/_build/doctrees/source_code/finn.core.rtlsim_exec.doctree new file mode 100644 index 0000000000000000000000000000000000000000..44778b6af972760799db23060282fde4f910b0ff GIT binary patch literal 4406 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.doctree index c28b05b9f09f01e8bc7bb0b0828224caafc9d9b4..18f4422ecf11f4fbb86597f46bd8752726432d0b 100644 GIT binary patch delta 4379 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 literal 56521 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 diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.doctree new file mode 100644 index 0000000000000000000000000000000000000000..44a33132d6edf7bc09b33711106b98799d663884 GIT binary patch literal 31441 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.doctree index 87980c4e555347115205ca81c434b5863b6ff31e..d39d8db86aa9882418fc1cde01329a8be3e575f2 100644 GIT binary patch literal 39345 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 E06SaU#{d8T literal 160747 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 CCOBpQ diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f592107cc5cd75a779aea4343ab1b18dea38adef GIT binary patch literal 45944 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.doctree new file mode 100644 index 0000000000000000000000000000000000000000..12982cc9549116a8f4d603bfecbfe604ca7f34f9 GIT binary patch literal 25637 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.templates.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.templates.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d06fe5a5e4013093e7488b6f0b88bad5964e98d2 GIT binary patch literal 2908 zcmb7GTZ<bv6yBS?>%Dk4Nz<2P%Tn5~X==Nrp`>{zB#?));8I#j9~y)_qp`%!NK;+b z-iJW@P)I;;RewhRV?WJ|$M%-c#9$a5N$2vN@0_FGcmDq2V59o^eyS2@MQ(;trOX7s z7X<~AHvAPH{t;e<bKlc+W|Y$j3w{G95-##oGZ|h6zTtNbORP|`J<mJ5%XeRfb8L33 zusK`V@`FrBIZT|fs`!<ta+sA<no>)%T+N1-6=hB>GiQZL9d1TN(6jRsn@5lQ=PTF$ z|Ms7uihy_C*R1cB6cO6MPxvO^_T47_vERvsWMS+k)bCSkwU{`#Tj8`VQUgr<Zjw`D zAjEe^(xU#_OI^8KOlWecSr*SYzia6<ZUx@w_xM4y$nX2_M>C}_O-U0ricyb{8B>4N z-jD<-s{{?6ZwF+k4PrUH*m4tpY)UTVd`Q!@$$3Y}l+9PNR40&sgzWP(B;aHGKf(V2 z{^v15K%+$!*Ez5ea*9;>;k)JLyiV;yB(wfnrNrAq2)sMCfja&fAFQCHZlYv#QiD`; z3<^i96dSb^8<y8kBczB#PR~?!_D=3c6gS<3wcwn;XBahw2eo$tRSs6Y8?@dHngU=8 z@ZXdAbdjtGSPy`0*R<k~Y8ucsfQ5m@g_i96QM|k9`-#)B7)V<LhYLwv41UirYk?yA z$E~)ZWLinfWEy<;XPP^(WzkW1f9!ixCYh#I>3{_q05g^rB^Cz_yP^9M%l&5QbdJ@L zRSAj36L(>*6Pb7&{OwFBE0tv{n-`n@C^jeQ3Np`>E&?R|nC}v$Q^Y1`pz>ZVVL7WL zWF{;pixP&#=0a1`V}Gbwsk9|IyJC5`*z)_F=IyfMZ?U-mR+d_47Kb{%ld_4M!d!nw zwFFi;p&2b8=~;~$k3ogkzAt3yEMXGGjZ?w*oXrML21elf{`w|iS}RRBm1)j2aE`7f zHuz)Z?7Egtr6u^&8#^~t@JrvXl`b9VKO6t}9r@*};p4%V-+cW9UaX(Ep~9cUNDScO z04hgh!5`&RP92@Hs$~Vgh2i1vXqG6Ql9ZKT3GBs&GWOj>$qc~)7m<<@O;XHJ`@T<| zRb(mhTLRQNN?lQsmVSV@5(qF)OPWW8$CU&aOA|@36qSa#RFQcRiFLx}r811H-mJKi zSaKzdsEK+^Qeo&MkAXB^?k>uLKk|nN#-I>rH4wp_<`~IDUUf^~FIh<t6GK5IRlJ8$ zGNCXX8Sc-xwWWDF8qH=ibSTS}94b8>rR-{ilV%kB-FPEvj5o-lV_+~tKKS&D$AG1; zv*d=EC|R1hzc6E!!tfW&W|bLkiyS6;mQGLzspa8f&!2);1!*g+b)QtjDZKF?R^A9{ zn2wQyy%D1nbUwh_p<SZ<PRzBmbWXUK@*IDVbthMm=ZB`CsH)!_irC=hooZb#Nv;yw zAb6T^ih4nQ>*7MjVizK~ed$U#6Q4BIv!f~cHz0{hgv^lYMHjdo`+{+k^>Zhzn6MOu zc@0~fF$-;XlU&hD!U`&Kf|03NHQHbMZ6>ecJHYSN{Qw0B7GaVK@Y)hf^^~E%U|QaS zA+W;Yods;tIQ3tlW35T+mjT4kmbHs+WIrAikncue{mozS=f?M<z+RUC>s8<{#)hB8 zas3?chi7;(b!!KfJ-2z4E!+Mx`k&6<5e8!?ypDbUpXHF{-_}FV`J+`5RDK;L0-Y`f z248DQEY!uh8h}+veGagI3dKa_Ew8GhAKVbOr+aG}dkd@8rQ2)z(RsCvt^V#!UCqvh q-$NT|kM;4?L-paAX3(K(g>AQ36CbqVD%tyKY+y~T$LZ=O!+!yv;C<Tw literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.tlastmarker.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.tlastmarker.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6bb7fdef37d72c0b9e21f1888ea0111464485aa2 GIT binary patch literal 27147 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 TruYJQGC=llm7J_(ZRvji1ddHb literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.multithreshold.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.multithreshold.doctree new file mode 100644 index 0000000000000000000000000000000000000000..40ce00f406b1ace0c7141edf75bef5d70f19a98d GIT binary patch literal 15531 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.registry.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.registry.doctree new file mode 100644 index 0000000000000000000000000000000000000000..676dad32797a5f4c4e6470db2bedbcc5d1bf17b3 GIT binary patch literal 4314 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.streamingdataflowpartition.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.streamingdataflowpartition.doctree new file mode 100644 index 0000000000000000000000000000000000000000..93ddbfe4aa871e46574ad732284f5f85b4807004 GIT binary patch literal 13945 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.custom_op.xnorpopcount.doctree b/docs/finn/_build/doctrees/source_code/finn.custom_op.xnorpopcount.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5c1950c03f6c89f0c0d5dffbfa42e1f47e50b7b6 GIT binary patch literal 14107 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 G7yk{)x=wHa literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.batchnorm_to_affine.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.batchnorm_to_affine.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7e7c0e91d44c7655c96717fddf955046b3f2799c GIT binary patch literal 6433 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.bipolar_to_xnor.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.bipolar_to_xnor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7ab9e0301f6adb07765038346c29882bcb5cd984 GIT binary patch literal 6639 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.doctree index 8517257fd55c81aa3df449dba743af1678a13412..213c8c2d329eed44a0a4e18a09075e624af1c7d0 100644 GIT binary patch delta 1928 zcmaJ?drX^E6z6_@&_a2a^6Y4J3uQcXn{$ayBg~)^ZNw}-7`PSJdAI_rKpjjc5FfOx zV{GReX0S0>K%B`ENRv%tW@5HP5;Hd+$ucz=h_d<k$ArX06ZPEt71lO$Bt7@ubAIP{ ze?8~)^4m|!@7oPM`lIvZGlmECcxIyoYxJ*V!b2s!>VDM)1~5Wmg9=+P!&q#Ae0U1n z4XVo>+JLVz2l~ue2K8Ol9YP;-;^l&LgE&;k*qkfXC}YL)c%{;$UqKG`7_q0tti{V@ ze6YvTO>i%4BYx<I5DdT|90Bq?`^3NW2hX|T`5?Rygt{PXuStOVpdU)03JPE?6xO7X zxc&Y{57>q7BGT-n&rT2AP0Jek6gQ{>znO5&z(5zt%kejQBRTk~-h*o2dLw*DpbxM& zSe^=#QP@1x8K1<)S}X1dtV=mdphz^d4Qq2;IDD)Omjb;;xJ02ZM1B&?YWY!!wEjal zo}8<|0#5hW8DW9IH}DVUNcovGU8C=!C(pd_Sg+IWhlm1-xc!YVhoJ+L3M`5RzYk5B z5?De4!TyP%Fp%f3|ED-VaF#8G&kr;+bFNJ1Hin-abf&?whD6BcnbMaHw^I?GKCCd} zphYp?t8rAsaU>DP+B<OIoO+rl=G3Q|`EiY+I*uZhD5~y6F*9_LiV@!T-rLN)Q{#9s zjw78o>ZH%8eHG-#Mr`n1RJCQ7sJQ2F#<7uIz`Efb2GQSHEHXWczYOQ%o2Dv-4`FRy z3Enj2CvjD~Ymgy~bl`Dw0WOYIveN>vnom%WPm-aD<5SB>YLlEh{yurIK4}$8#Zik5 z@%SqCu}G|rO+0toL^%b^Bio?zK0<lqu+yZ=6Q(2=vMihrSn-+U>>~aNA%u_tjqiY1 zqJ->AcCkf#<HS~W6>XMMTsUFFHcJjBjux|<c*C;Uyr?Dq$gtObzp}*edUwU9klEMu zK+B$8{${VrFB2kUBF9V3p7wTCUKujCd3Ses+Ftf{sQgy~2n}=i_h_4PmEm}Wvrr5h zHz_2iu!d2SzKtkbZiMavy)%!b+tFc9#mupX%c&(RASiIlQt*DtihZtJ{1EwY?^vmU z9~HZavHO(O3VLj=oY)day68|aeZ0%SKN4WiTV=`y365)Iq#q6;SgYT9+M+A7oo&S) zdyy@c`!Rvb=UYUmJ~mXTh2ogvJ6k}gTb<QTk(Z2LBBeq8CE1YdbOygdds%n>mGD|| z-B`9Ws_k}h=PlV<?Y_ao?^Ia7rUX(NgTM@MqRv|G*h_h##MV7ct-HLPs(5pGP~ZiX z=mt(#xw0Y*(W8a)S$A#X9U@!tb*cO{u`@*GqmvH2Pna$;aisLCYnpgHY58%5Yq&Jg z$@0Q2lL1A!sD%HVn$mTTisTV8&;+~T6rAKk!h^yb6sBJo@#D~pC?6NbA2PRkTD%=y zK5x7DAIAlg8=Bm3$}KtEGT$xJ0x~7wha!QL*Co?+rI2zGn&o9M$&V;Fex_KV#W(G^ g$EXv<ToM1dm~DTflmoMxmO-IP3UVmn>X|j{KY8MA761SM literal 45675 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 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fold_constants.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fold_constants.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e663ce9c4f22c0e6f2aebca1088d4103a0c7099d GIT binary patch literal 6271 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.cleanup.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.cleanup.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a12493641d50d9f0b593ce4914f0cf51721c0741 GIT binary patch literal 6249 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 M78ocSC;iU<0iA163IG5A literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipgen.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipgen.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8fc625699983bdcacf2e12e8bd355053b8403f88 GIT binary patch literal 6841 zcmd5>-EJgD753lEc-HpVyNkJqZ8VBPG@H$gAqh#a5E9`cLRJQetk4P(b!xh6rh44d z-E>#mW0BRu1=3m+LXge_zyt6C{38Lkhzo?c&P#B|cdEL3x@T?H<J{~@w!2SPojUc^ zcYf;ZkJdi<%?nHVpK3XQok-V<dw$^XI92N;m~daFAE)<zoIXlBsu{7fI7lL!r)mi! zY~gxN#QpSxR4l1R%x&ogelcFuL|rsKNIUpgldkl5>63bM==y$7M$C_gK{R1BwKoh$ z%wduZz2K~8!;lg8zi+uA{<J57lRyP&gu=B4d`hONuUuD8Rn1RQy(dw-u_3A+GHhO^ zVn-~CRaMWR>8mx*^?BM)229;zQbz6|k${vSTy>ooaH)pvu{eeh&o!S-%+tD)gtM0c zvri&Eq%nzVNH(HRsc4Bku|X?}ef9A0EQn6xklFl@a5%)F#pcOaV-bj2a2==(M7=1+ zrVfr*l7ZTeL*e?<9&?<G7d6*+__TDA=8(k~uszYn*}RCKm+<p4emb;OU=+D}gB^h6 z`Xij8dTYUB>zL!ehXXfH-Nh87qTZJ&OT;UpTLSRs^8m(?ZSboy^RUd!!;G03T;cf< z!H!M(qjoTCFJ@Tpn>e9&xo?ya?#szQ^o+~pE_6L~#gTfqqOIN0G;6#5f<^)6uYI;{ zT!waE9Kb2Wt7;7q#(s)I9eiog7b|wbb(ut!fU#fMT89n<4k%x3+uq4N9TrHzwpPG= zKae`4lvYu7gN6wqyTxk}3c%z&@jc^O##VMU@XhJOJJOzqNEk*u=FurniC+()<w544 z&mq6e5o{Wq;MNpW@(_=3xM;A*(Oh_5752&XU>8ETgz?D?V=>NY)zo{M-_TZtH@UfU z(yB3!7Bl9Dml<<M8v}*{U&$lSMNlolyj9_EL0`lFVpe&^dOjoH!c0)L{$nJbD|wp( z_zT$lGdSZf^FX6k;YYb@{an@hs|B?3XD<KKrywiMIc7x?!DF6BYD1S2(}k*Mm4NCk z7NU@8bpSvrQ0v3Q^GrT{Onmwd?D@7i^%<XxkJy1P%Vkg=lc}s}(n*aX7K-voz4i`6 zYCmcp>E(_-yv)o8mBQ!4i~zf;k<CpD^k*X2`1dk15$-la?mNgk))bXO*@pXzE>0Dk z=YpxsE9-gj*~aIjxz5mHS31`Id!ADrwWc?sR>E@%tLI&FV!T{Y(0Tm}Sp0K-c6pGh z0}!O;R2|*C5=v3>l9mZ`{ZxFa8hDfEA<CDGNooTUJ`FwBc8Qua;EY8+9-Al&@{;xU zv=wt8sd%iFN*0Yc%B=s;ZvKH%?m5g9$IHaHWKeR=x#EtD|Et&+|E018ga1PGL{#}( z5mjEM=-Wp94q{P>-$t?DW}es9<s?-m0Ev4!hps!k;L&(xd1*=PjhE<;E{dO(xig!e zTflP+Z(0Jr$HLG%@7!y5E_2;-9h={<vO2bsC)>zcB5+U$zVlhs^t3T^#kby}*w4zr ze$JKrw)lQ7P%l(WGP>v@z`eZS`=}UO%T}W6;jYTw3Yt*38NYOGj^tSqnSI<YW~on} zv)e+Bt}d(942qIV&GLJ#Bn3d`tqRav*y{fasyQqu9>%X<b1X7_3BvJfgeKWL3o7G1 z$cmJoy=7Tn{PsfpZs9~P{vaNUKdQTz&_`G3$oAs{GDHWAnN8x)IfjOdSC%mpL;iGy zlG(<JDkd*s>RBo=>8%kA#wMH8jk8hH1=k-f8*|vF8h&7|+ZVLrd)i)#vYGE(y;Nr4 zTupQJ`0;?2qpUl2=qbx@;~`$g3H=)3SH+5rr>*GR^m1;xINj=<yIYP`T^nwXG}6`0 zpf1=;%^;pbeA6~iQC<>YO=PfD!wGTUG(fH{q>Fx!xKDGJRm)By>IYdxA80d|n0}C2 zkGYg6*3ezMP2Dx!ZW~6rzI0Mm|1R?q^ht_aLaVQuS>_C)6fbCv@mR7+h?kA5tby(m zyxz)QlgPu{mJDo*`bYE?%hjj{gNo|TFbE{B#=P|Lcv)>x>&{Om)|6UtDI_gwXN2e; zO{fJJL*<^4aF1(=b>>Q8>FNw7W5sMj*4FB)&4`CVBrT7hBE284s9S=0#cNI7=2I6~ z;g+7n`JkGrIed_epsz(`6cx76%h?2yCfH$f+En^PwOl_;q{V&E0;5o<C34t(yNk|2 zs`jfNEgnTdWC`Xw9*=-CnQF^aZ3l_0YN=^0sXCbZGN)qvYx0qn(L1xD^^N}f-?ARQ z-g~3_<*&Z^HVmnbnA4(mXfrVo6Tr&D=2ErgF@Kb>5!a2oRIQ-9s_sVI4kE{LI92;t zkGg4n^e+N`i2VW@*Rjxo7`jus+q76B18XKyD=yfz<s_5PDi{cawZO&YCi0m_3b(bS zaKf1=jCtY&7CIgnwS#&$h`Cjssp(=%>(q^1skypsId04b9&IGEvXOg+xUV*`nHauc zdNiO<Hq08j9yW)zVJqaJMb$NY%GUeET_*%@u{4ofwS|;nd~|qtc6Qba&rz-Ty&xJL zI{fqyBjdwV?a~a=NHZ+SCqP*O<#ourU;NS=fTa};?YU)0GFxUpUq%K2y5laFL%ocU z6Aw!?B^$sO94XS{b#(w{O{~Jn3iB<~D7sLe*Vec`x<ynCgTRE514eJ4xn8`&19#$c zU$Uts+>!9`1HP_#0a1N3o}lk#{UCuK$C!CnznfRf3v8Alcwh_MPHmj8@h_Yh1tJTx zPm&N<6zciwzI^8Q7a&PsyZ#VIod<$D6dK}WP#w3!Cj;)lH_x$_;JC<Ks9oC&*onn) zS@JCOi_sFJ2KN)S%KcO7hO2cG65xYi5%QV~UQ5f|g!Gx;#zJ6)L}Uau4)wktA!t>k zbZOUOXd4zUblaoWI)*n$Xr4Rck0^DW<Ci!V$GWu8zY^7?QIu(QUtW*vi{mHy>yt#Z z(akpVHpWw$zNG5em8}TR*?(^oMS>n!)G@QZg&QMVrBM3H_)}6<wC}~&vu^LPcwlU! zS~F2wWdi9vZQ**UU4^J>B;@4zI0If;V#dLZK%>bZ@Cr`qp`V)*7NeULjm>;jJ?TzG zKLU3oDO2pu>&m_?sda>)Vpt2E5_m4oE=F`S3X4cn5pNV?O_W;>1-~p#P;yQNz5fCF C7$x=q literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2d494a41e94b0710566eeb47f1f841443eb5bc97 GIT binary patch literal 8183 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 SYeQLfDfs1af-dK@*ZD7Doer!3 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_npysim.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_npysim.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8ed36707c989351fed68500d6d91ee4f8220bbcd GIT binary patch literal 6569 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.compile.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.compile.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0a36c583dcb1c37f59ea28c0b6441ead5530b772 GIT binary patch literal 6209 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a446704bded33ea28f6691f1a5ce8e403588ee07 GIT binary patch literal 7211 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 PkE&f>80a)kd)@y5^+49W literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.doctree new file mode 100644 index 0000000000000000000000000000000000000000..20f73c1d9fa5890a1e2ad6ec86976541fa6b41e9 GIT binary patch literal 7641 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 Md0?R1IPG=*1B;Jyvj6}9 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.doctree index 007833da517e60e7ecb71f43079e149b5313b613..3cee997c43a9cbdfc9e2df405a01c486a45bb496 100644 GIT binary patch delta 768 zcmY*XUu)A)9PMqlr0Y7jRT1gtsyKDsR77<6XHK0Ux?ve2B4TA}bGs8wlaM9YK8$q? z2E{x~?j3#dK@b!=D8ir*dr;p6=Lgsa@JYXc-ZVjHAdqv<pL=qD_f50w{isyy+8j<r zK1yE++ejtZ9(i#Y5iede%a-XHDrY>q%9r^Vx*<W%bFY8Nf@W0CDXMCiDqZ59?3hKz zrj)J3#-m8H<;3}ZnHr9*2{zBia^6L@k~qWWQ*nu}^PG3J19wLb1n_zXT31rtK6x!9 zdy<A#UDC=OM-X7<!ho3|j~)&J?sQ;Hm)TA8V6YUVEUfki@J66`9kNpa+>zL?R$_mN z+RlF^zK8ap@V6gf;lMudbFfo*(hu7-N$<)!r(RMsin^=PlBNfLk9j=6Lp;J`Ji${u z!vYFWQ3CKBI`!gZrJ_>H0iXRX9#1YRmZO=5IEt=C-7N6BCqYwHYKX7CF#YdB+;GbU zYEzZZMM_@6(Hya@Y3Nm6cag;mhA@udIT>k8y9EVD{ZVG}9LN1phJ!o%(pD^s+FZd2 zL7f!u={)!SQ^Gd^f>@Yy#4S*EFN%gs$OQ?n1YKu?(kb?NR8C=ipEB(haEn!9cS)9g zi5+X)kCN%WhR}y1&tQX-mm0fK@`<F|8!_@W8pU3FQX=nSx6#Hn)=)zWTdvn*C}rwY zEpeWH`*sd%Ika*vGCtf!uMkdPOC&eN)s-B@UZjq=j6<Z^u=>czK!!vj|8~ZQwsVMN F$sc#;8NC1i literal 71069 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 A`v3p{ diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.doctree new file mode 100644 index 0000000000000000000000000000000000000000..951f6fc94b4d18d3136b01ee1f84d020df532ce6 GIT binary patch literal 6553 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.doctree new file mode 100644 index 0000000000000000000000000000000000000000..632480f19e3c8921ffb158802af93470ad598bb4 GIT binary patch literal 6823 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_deployment.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_deployment.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a315244a5c8af11290208dec82478dca3c8fe7a3 GIT binary patch literal 7553 zcmd^E-EZVb5l^z2B$JQXk0VHElasXqH2X1=Jvec@(Sd*i2^290><S$xPQD(yXWA2w zZR~b35iENLLfRG0!`=C$d*v_SFMxl8ZzSLq@qiFdJn*Y-+hfme$j82{#7dKOm#eF* ztE;MiReopj!-MTP{ZF;r&`G7|C*2@)d6KCWB8+(;vk$WC?`99Owra-gFbUJx;hCBP zha)`Sjd_s0m5DjEoNz~aVNmjmhFB8IZ)I(~Y)DV~yz)xj8F)d^l`#vFK^Tu2P3;b% zA#<5z13x_Mj@dr{p6&9;506L@YaF^Mgpf>#T)fXGq?~%?RFa+|=%<<9muNhLGHNMe zFoDd(B{459sHNOMJ+<h20nd7ApQ%+QW$g7+3B!^hFL-VOqp4-bXGsDgo*Mxho2L~w zji!S>bM|9CAf8k$OE#oenP`ctVvSZ5Tk6f7!!X`YBIfWNvc(RLE-_C=8{5H|YQl*I zub8PDC)n2Z-a^_}7n4YM!KBMvH}{W*7r1;<IZ<=i;zevwSU90;_<a(;Pvh67&B98t zr?=RKnY>_#vs8D_e0Xi+2G?=$=Baa55t&%($&97qhUiqx`2MUJlh`p<tb6HB)k}BC zORGkUj&{lX*lIAe!hv;G<+@+d4u3!V=68GFBJ<CuebF@$SVYw6j4XE5*Q&y-wstqm z3(l+*jQ#m%+{n{R-V@u14{=K^BIP(w_);5hTJ*+FJh;6~<5~u}UEN&Ui*8wI!ea`L zTULa)LQuH3EXm>_m$vK0*LCI~p%=AK76hTxd8e|nS~5m5S!S~wmbn6MepS3_BG2g0 zjz5m(WbE(iz(l%?Vh;Tdct(!*2Bh52<M;V=JaaPZ##9J<N;}0>fRy>tnf;+K={aWB ztv^1U^@R`~nR<U}YB4H2uBrDmyQ%f6OBMRoiFH*ToK2M<JWZ7=S`}O)u(0H@?;-70 z41Min&n_L?L`x~EDrUipiVe|YeH$O(mO9pp3p>6C<$sQFeZNRXYNZIcLh_VQm;Z}% z$}hsWlwT6+@_%_g`K#09P^?fT)z|pd8P?z@8uMpQctT~)9xHE8JQf#dW8l$^{8%mJ zKuFy_YYYNr==6pgP^}D7-#1|5A%)4eq0#Hcou^@9!ruu4Sw(`yJw(W^N!~V$StP37 z_L(m;;F?`)S1-5w_R|!-U&DTH>l0{;O|_iQo%-mM1ReiY4LKz9^@s;9E?av7m{ir_ z=2;gf5bJvgLFQNGTsv9$!h24`TKB4d&3aW^E$WS^h3JSbjiZh^F<u2zbYB02E&ee( zyUL`NU=U!DOuhOnFfaq|Cply01=(nBehyXwK^{ebZ@D|EHBk5@@;%2R4<&{}76*82 z0uU9z{dcq<b1Ip5sO6dn%*4NGOMeHLeLgS4y?OGyv|kC*8GK9n|3z$#Henz_ZQ%bi zc`6d-U(1B~pVva)N12pZ%=fK;J3L8Pd;~n^^Ta|OWVzFFhXt<Xgb^UKB?TW_GNk`4 z!i82pWU<>_{puvr(!8Lop)A%9Q(57nc?43e#EGmZOcJl}^WD`OmKRxo^8h6Y;Z!XV z)FP!@w0x0nwQ2>2IWh}~3TubZ{!s9kYu(H~P!L%O-f-6n15MXciy-;`HbNQxqZi3j zu8y|oKV8V31SfMBd!9q2aQX8VEIk%Q{!#n7)qYyitrlLoJy0#Ys?f~>k`kedvgNgB zlGD}d%+!l|k76q?UV24v7tM})1wnnHs*({!#VhxVO5}$nYa?HXS{s`xAC;~`HOJ_S zr}mQqumNq3UM**-kDkB!wy>`*1J%?T+Day0OwneeLWPaYsBWWs*zNzi5(~=!%8p(? zB`=U##fqaI8I<&$UIn99Kr10zKFU#>_|0SS+j9Ul@q6)5{6SrL(uH*S2(UJ~OPc7! zF;z<ZsW9RR?HI}>e>_IWbY~?DEimX(jspxjSq}Rng9DaKz){-}^}42w-i3Z@IS5Uo z=rOJM4XrQTjCuGRzf`W^3?x0CfAk|-jzH7s9eT=<$>_%zjNYR^Kf#}x7Hdyx(LR4u z$@C#R^<Gh@nzA}{4R@wDd<QN}4NYE{`TVWSvPvMcHGw@Y7|#$lO#|=v>aOfqikmcd zUbUPwrjDjvb~4usis@*om4r(P#EmZTW$F^^w(%g=MS`2DrSC95MW3&%VOu@b9P$9T z8lWJ<04-jgNH&fzSj({~Wbb3Rnh(?1$7n-_j!hj<dW+>6)I$U;zA^|yiS7-ryxf~t z8`Odh(y=`uIFy0XqDEYV{^yuF$O%MVH5Bf1O|cI>DQpd~p)yv?C*+OUo?4H26voo_ z`2qK{y#=)@m|qSX>N1~ruoW6fX;LsXRKw-{bO?DZg27asKrUxvP@3=%htsCAN2=uo zQ7Ua7phF8TVC_^6I(Ir~cx7s<{?g`g9LBZ)F!Ol~JCmx8%+y5yzPgl#mXfLMnKv^c zM!%*=X&Jdw9a>-N-TS)z#%H@PcV4>txjRs#&M_lJU82n-u$X|Yd~7aL8$Jt$DI0R# zdd}1Wz7nVx02tAeqe~kl8`h(4a1SlEFc@IJFpcNh=#mY*2^FX<mdenclGK6+@7i$F zab%Ys2n%b1hYA(FKc56%)RZz1r=%$1sT<m8%7N<=>Xk6zc6Fw97f0F$Ug8;Fy@<|X z!ho2ukzC8=A~M8HwT{gshy~L|g!|-dwnoC#*Kb8UvZ*>kOabm=VHB(p{1!`-lPgO| z86~?rJBNpd-RKCoCFq9naL45bJK#)qGPOxFNFvR!B_G4e5>{RTz4NKtFT*UYc;L(| zLzL+<Tg5Um4Dpr6<8q*v5pwKfiKb+I#DXhDwzs0T;aOw546;&v+w?LYtB-4KyZ{YN z`fvjWCL6i%=rw#KDu;-`OUY3n*~Av!Q26-4Ul;w5Tzx$mGX&Q6Q^awCnJ?(E8QOm6 zFw{h3!EHyN#o*w4O?=_RC=uD1y`M%XG3nct{=SsQ{bM*u=uk~GO$1jcH6&@j&UcBA z``krr9$_uPIn}P4jvumpo1@<K?YuzJ`d#3`0e#O=D<&l%2H{1x-E<*jo3co2d>ISD zD<m=_Y~#|`n+Hf*H7a#pG#Szc<$y|d`ZxskWg?pA_UI$Jz&^wuu_yL4!q9(G)g&&u zZ}pcY&DRrqkM!F|sj%=h#>`tAWi)+GE#)P5nV$2{bY;s*GnQ~>+J5p9+*cWd-Wbg- zKvekwN_-*zOtB~K8{G(XrfQ?=KzdIbXb<R6Ay+jN3i5)_7_Uk(d~gD|(YPP_rB7<s zkIfKE?q*G5vshJ6x>A#m#2rhzDK=+i<!|QH3Q|zX)<U}rk&ClSkll>HGSk$^Yb9Ab R%BoArFV7QnIj8;Ze*xVIG5Y`j literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_driver.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_driver.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b6f2de2cf25f5ddb97534175854c6acf52b6dd41 GIT binary patch literal 7309 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 F{{yCq-+urA literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_proj.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_proj.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3b94d08ece6af841e15988b51c2da034e9d8b6fc GIT binary patch literal 7685 zcmeHM&2Jn@6}J<Q?XjJ4lEp|UHfpUFm~1lRWp}j%BY~C`LW`A2V53zQvFfequ9@m_ zPj_#3we1lbWjP?lqBy`dNPFeZHxh6~91!BnAAq=VL!3DAdsY246MJJPd&q%Eo^-u_ z_3G8D-+T4m>-QIa^53mF{ZF;r&`G7|C*2@)d6KDRB8+(;vk$VX-^=c0ZPkp~K@z61 z!!tDp4o7&t8}lH0I}>wiDdCRv!l2|A4Y4Se-p<;1*^r*}dF_?DG4O(*D`OTUgD@U5 zn%W&iL*_Ec27Y+Z9kV_D9Xpx?@8UNON7guWQwSlM5V>%NAChwFl~YO5f~MqrKhxV1 zjVI7WEk+C$keRqB=EZrnnA@kP7JM(@SugD~wZf!~y?!cTSF+=I&rM)6wdD9LNkGJN zBVc3mwCtu)HRv;EFXjW{N!5~MLwc2ombfBTX+^QA-r7D0<Gmze4&NqIY~$n-^JKKK z9UQ49Jks8kmAY|)U2W~2OZ#d)iG&v%cA4wu=xBI>%MWYkX^vWa8v7F#&gWVDJ%_)~ z;;&76g^^-U@30LkdBG4Tc}l}qN?C1#fvY%m^VB)x;b&s8Co`6c=S8Px!w+U{n8c1T z;WR?G>j>Q@gjULRqsb1L9{UW2RyeTEs9N_X#NB?Y_s!b?JA8?(KcDtR*SKHdPN%c6 z*iqk@k!Q6v-YhRTt7b6wSDtt?$JxCnw%{S+x>`WYaUOzG8*f_l#!fr{U#9U?2>H~^ z2HTO(Bn6YJI!4g!bv>H}K`3>EsV$)vjX6v_*(ir)SOBE2h;JJwGm5g4ZQnc``#ahP z5g4PGCp_Ng8Nuu>q}<6}^(lp!IfFH0EBH8tm?G*UJic(&voB0~_KDNRAD_<nLI{s6 zy;oUUj0$8m^{!^Ov_1o!LgR<%(+b@?n?m0`PNB<MAzT}<vgEPvA<ou}y<C9Us8l#W z$^Q|&8$e#}0ok<PAK)4~5xa%?egtiQcpAnZJhUxd3EyR9?8jpf{u=|2?vo?6m|x=R ztoISFNbRo(;A(l0`o6gc@6*A53kuybM^hcVfwL0^vYx~gQIwLBCK+`Yvq;p9`r=m^ z?&KY7M=!VY&T-(sGnKZyqmQaBHq=r+w=#c4f{uTz!w1o6E#iTT%fddy6<^ok+F2K; z{LA+MC+64XJo{+n3*?`MbsAKEoyAI9E$EG?bJ2vN;G|<tjMp;(I<LRL7Jr_dU1w5@ zFbM9_OnvDIQkV=GD~TC1FUZ8-)e=T>5+U!%p`=zp;fIm$IUa$N7!Ft*;IWCzyvR3y zNqaFTl8O6TsATbw<A(klZRbx&!k*H|zB^B_OZznkoyp8-1HTuW;$M_)fcbZXQQXOY zD6)>b8}oB>uf?26ZZYdkZ=boLMQMr^?jwA$iABjd@)fJ?1&*H*pe-r5l?d+p$TkKs zLr#=BbbVi48N}gOzh*vUx|2?V(!deiwO+q%_5IM<vv7rj!%Hmfo86UHAx7t&l)8{) zO}EBrA}zu8xu(?<GmEljxRzBW-q%+chBWsz<icO)f$c?RVQV_Ut4Zy19$;^L-wV^k zpIC7kSYfbID$vbc=l=#e(Lhze_z$4<?|S$<`98`K`Bb~qLtdh?Td8!yF}J*dm86ct zlLWWaj+JnkXyEN@&#B6V3Y-P3Z}ob2S8f8IJ}LkielD?)A?SLT>eeVh+RlCVx^>`5 zp+!2{E8WroT`#tnUTtNc`6(|Ds($*hEBBB0Kl~WfEAcTpk02wijOOV-UDiG-<IYhs znxh$8yGymu^|%GoZ5BoTq<z(DA9rom1B~uXR7W{mxzV|a&_&twwI`I+)hf*ttr~n{ zGcTTcMW8OaEpHSAwK<dJ8fjERbHAvO-YdBq`C8Oo*--hYJRz!vM$eu4c#5PFDe%ZD zXQ>aL!aBRKu`WebWe#m76XSn;EEPsFJkv({0=D~6$xUGz<lCc{PRWauyJp7Gi)2yK zx4PFyS3oOs?|hV}-{R*-;umMnxW%u;eer9xaV&~-ZHvTvv_-mTm#x$izby>*h`tbc z@o!ELQthp*D2j4oF;D7DrnwaMM<%aZG>%8zOLPr1ZN#CUS_(qbu{xp^Z)$xh*U6pe z<fU>2XUdC{`A2<PjuPOJOHX;GIT~OvO6g~apD8U?AJ(G%*zGOT4ed-PHJy6w>WtB5 z>QGy?Ly21l5T>pwFO2-y{nWDBBbzl5kIx%eh-;>ec=C;3woSz~nmeyrP8w5N)h^qq zYX!x$Rn;=?Rf$X!o$5=}sn)G)<d#(JxtUsglkUHys)brT)g1Bw1(FQo3<I>8c_P_3 z!eBKoG9Y^o!<BrP#y&<DWa!wGP|{m0*Pu=&>YK}hFqG&k@!HGXd3Ax>;6XaJ52+KC zfzqOmV1y>@nA+(HL|!oz?sHAC=|Z=4tpt^^Vm=}74)@er%%d=tw$JyupY5JgD}wpu zu%RyTLl3q>iz`hEriN;`yq^vsuSGQtm6?#s*%*{2@ZoUURQ5o%ydX-Y%>%TF!G)?R zm4nWW4tj2x+MIrA^EeJ;TOgbEc?>&~s%TZJ^)QvwQW{!HrnY9@%!nBMjNGJU<W@Sg zUhTc{x_$Sh?#rFefAN(YP-L28MvA&fn@M0X0bBXlT&6DgEEuM2$aViaQ|IudLOm06 zCyZU&<y3oPJ?csK(EJO70rm^icrLOnKJX5y)6in64DE`f&UrxB1vec>c8Ne(SQ9*e zFAkVb0@pRAbi;}iB|LRQ8|^}HT}1I2Cfu&i)Npa6z3(NS!Ros0dI{_Mw2@rPrNT4B zHMNG#pq4>@l)k<IJ~^8`@O*3z&G%NsBb!QH_!JUT@SyV$0k>G1K&~tyWt8k}Zyy{S zppA{>CFq9naNFhk+u%&LGqpi8NFvR!B_C6(307VPz4MtDUWQp(@xYl`hA7oCo5eCR z4DqGO<8q*v5pwKfiKb+I_<}1%w!5shfUL1yI$5c{ZMv*S>XTX<FF>o6b`AiOja(pl z6(6d~Aw2M6G6^I*w1qbmKK_8$1wSOHuO(v!$9gw~A19dkj2@ezjbfDL7Tj_KdPNS- z*Z3Dsi~^C3*?Vb(egS<y)8Dvqzdr&<LI=e!j=Bg0mnk$PX@8pUA|Lm;3*VezEy2-M zI8qyqAF@50qjTZg`09dwGJPj{pw9DPpFS$7WfKzMgFq3kHV?R#wrNY~Grxp|sKP~L zgl$~<gme!<Yl=!OG);!IK{=q_3w@yi`w|h&b9?k2-Ch&?h+VO(6Ab;6swQ#KWvf4L zX}+G=eW2eyNQH%OLT29T=#Zw*sl~j1QuRG&@&wITW;0bA(Mxb$Wf1!O=$|C2{0b(% zoPRCZ6?cqoly#=+LLESQPZ!YZ(XK*JH5794g3lPQPBDCNBfx0f5B(C8n)MSi#FD!? zC9zqoswZ8Zl8?Y0OS&mGW@Y7X=F~DmP|4Op-x8jSvr7=&jKDI|Op#YhvIfeEOTjOX L6LdMJ{qFw&U>;nK literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.set_exec_mode.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.set_exec_mode.doctree new file mode 100644 index 0000000000000000000000000000000000000000..962143668310625211d3e74e9be3e477931ddd1b GIT binary patch literal 6716 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 ZMW&e}uNP$PD7PI-ep#NN;+zaR{{<gr_>%wt literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ee626d0580922430bd18d3ef81be3e01b21cdb21 GIT binary patch literal 6813 zcmd5>&2J<}6}P>fvBw`{?*`|<u2CxjG@E6{2}F=sQDC_sWHL#1S5b(FIyK!jQ$6nK z?sQlCLu3^YLRw38A?XAp!WD5q5oZqk3*1ot4GSp;PW)a~cTe}Mm$i2}I4h63s$RW% z@73>p)XT3HKmGXYbNWBkc0(tXo}cuB(B(;{mT6+b1DSo2-TZZSKkKMg%np+<jUAq; zIZ!yl^WB&S*?XCoQ%ebVq!$Jyy=aK0Sb8t(V6h=R>GR5xdS&PZK~KgkNQPlNVYIb3 zj7H35k`4Xvu$LSMQvAY>j)M>I8;4_S61pk45L576yvL77I`xC|vC^DsjDDMG#YE$2 zq*2X?!3Z)Fn_^yEQO(>$eYNO&0nhsBfT<NGW$X=73Dc4(uXt_(v#BM=XGwxdd^Z9% zF<;AW8chcS=IqCONHnQhl59jvnP`jaVwFx5H`Kd3hhe;*M9kqkWQ-kLUShtCG`53V z)f105`P5FmIDuN*dkg76Z6uNKf}<XD-5eneFL3!$<xb6Yi*G<dVd09N!{0aY_ig-j zNLg4Z_Oyx}n8^!9xXkmKekzsKF*vx1n>SzGivl1M&A!Z7DxMeJiWxtfHDeMx#)@^E z?o@HQqj5SFuNNKflKG)(FtWm-by4AZcM14!{=EOzn*cqWimqTj9f+Rs!@{r5XK1mj zem2X{>S)+mUT|UIVD#Jn2Zhcue_w3FSHySJA_9=}5Ux5{Y14|GcyIxk#<h5IZC1(7 zO&us`+lJo8f*_PS&Qy4-rZI&HDqH2S3=IJFb@8t8Gb15;wBcJv6Mt8`A;M!6^MuC- zJR_LB11|S+Z@s)QGxlFI=7OVBpee#XqU4JgzWKtePq4Fo1C#UJfDpnXbMH^hEye|| zT3WAJr8Z}QQ^@@ALS3Z$7Zd514~fL5K-yzvw8Uo-FdIXUBJhc7=9y2uaM2q;TG0SU z#8b<|)b~yD_=t>j2NJzul$aXHT)q<qvYPvgm_xa|g?z_GF^fbM8{hpgLmu0;cJ*<) z@1G^;y;`<^KljfqwUqD8N&`=)Amg8^hK4(@MLcj3T<s&I#i|UqE_yhXExspt%={{! z=N>P70h05OmRjjp@&)RF>BS>QcGRL)L@h+e6gG~#=Eit6dD4CT6}I@x?CvU&YQiAM zJ(+s-Y0`d%N{{$Vm=|Q??`jDnc^n~E=U7s!nBhl}?>Qd9lL!u39N@Es>{pa&pO7-< zN;2`0W-3`c;z($JBYpmi%H{IL!o7KdUOK3F=}bXGI{Z=G5dWn74B|f!PLaVrFY>hd z&7Cx`5=!Sh@e&J#u7yvFa=S$pEs}daiB;`VJ?kC_UT6EfQUI*f%MWXkCej*ki$%Bs z?t+y^oI@}NpE_}`K<cHCW$FrF!eIZZI(FSDs<6)OeA%&5T>q1nX?N&4k2^Q5&ROB7 zT5_7FQKjUZO<~rAOA)##)_(HTyn0%!nTlEKDsJQ@TfYE&@!-2#OsMTy(F{8(;kjQ_ zXdjm3jr=fr;ccmWGzAUSV*fcGXo^aJ((YGgi~9U>*7t>l^YZtaE>kGU;ud-Adnf@a zMOZ_d&UkfE5tqb|B7`l?wwf)+SLf&E{#QcDjX2%_owz<;JtuiflNV+mFVm2etAx_i zX~Bcfyx<YPI}sm0L5(AjUc{&B*|V{x>u;)c{%v3|l}G%(0N!Jst`vbjJBvd_qnYHO znt1{>X?-aij7<)08sDT23m!9iZu~=7NG%1Sc~PIxaj$D(DXHXM_UNMu>FTxIqv^-5 z(s5L6j9;U#Jgbj?gu(a?`niptniQ)KOVN4q*SG1|bnA(#Ta9pCoiw}D`{`1m?B+EE zFUsU6Z~ByIBeS(|saFgv#4Xe5cyt~rTRY+w?VVR`CylA~W0x(TwPMD!e$;Zpr9`QU zhT2tXsOb*dFxJ(zo2lm8%umq}Dc!r>SFI5bP>{+n&M-hXj3<&!A`DjZq7J<GF<i-q zY3yUPE<?wrRuQe@xCS*_P)}YPhM~m6msb||=G8iN>w<J*A5r%$!%Ukx77-dn6YBaU zV0qolaG&cL`_PlZ*0m`_#)<icyo1$OYcY?)SlT{6;C{BZpjHI)%V9%Z<wqWDg*SMb z6hsZxaQPq|fnS?SNGj{Wm$M0GT0n@yNvZ6CYI{MHN}C60Wq}GsYAT1_m%Hc&Wa>tJ z(dKa+#<pOA>+=|PCQ;EyQ5#_@>s%U|OQyDGR%Td?KO|3S8@^K++PC|6e`>$;z1~aR z7hn1Q%MheaF~db|k}?S_CSWTc%4KTZXTd0CBd&XNnOZ<YRXr1PCyZU&<@DCUdDJ%R zqdO4>L+A_BcrIF*eCQp~%dX8*8QRk+wcr6=>ux%U>=J>nu%7Vnw2K4g6T=NXQ##^w zDoS|jhBo>cpxQ*OA12(c?$mH`q<!Eep26yd?Rp6t_@qcK<x=4p;+9&2G6{UabYK9V zoXj42K9oa$upRNprk4eL%F+7br56FWIGRANEFoo-?C$Iw9v-62h7u>}h4E;|<p(>U zOm;H0MLUQi?XV@Ez{(O<UdDX)TQ9r>v$W%(Gjj~hOpm!y93#UJ4RMdlp*}{)iH{>% zk`3Sst`yncvf2i+CU)s$rTDgK1D&X6wKQIUUJ&)T0bsI`3q-G?pI#2(ftwWc*pV%~ zk?`>cye|47L47TmFgVr+Df~FW&S&)43~fJjSZ={>N1$wQaKFaCaAOpRZ0z1oBRtQj z&97VWx!<1vB%$L4LtJ$c2(D3RNYX)_Zj(<2+=Xu*<1E4Ph&xeRjvumpo8zJA+h`1< z;YGdd2kHtB4yf_1mQ6^24+2HVZXR$gZSxA$cYYNI0TmLF5w>xu&3zw1t2Rq53q1{P z!*W1xUFxEPe2FH_cW3-IC9u2r5qtP|Do#_?qIJr&y7{gt`eN^aIDL=`3*Bl%zB;}` zyXI6gf2EdDIsYFS<*Qv2P79c_UE?K4QyG{(KmG@?DjW3TwY-J9hbG{u_$pQFRm5l| z*726szCqYDGvw6;ov~JR#?ZlUfSbu6^h*$G(yz@-mej2p$5wHw-gK?TACWqilp3~X tdF3l}Y8f%7Bx|D#g{$JS5`;6uunaA=>D6*tBV)y-XqN{D%EsxS_g{AmIq?7h literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.templates.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.templates.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3038d1db11c2f71dff096f655ef04f73ed291ca4 GIT binary patch literal 2911 zcmbVOTZ<bv6yBS?>%Dk4o2C!VF4<B-H=(v05=t5<B#@V~;FpHdmm=gDjiv64G?g@K z??a${C?ue_s{f)tvY+PWOJ9;045K6IT)*=j{ju}Un}dz==lZdV3M*1GlqzP%yS*UD zn6&<H|L9Nu)?d1wrZb}o9Wn1Va3bO&jWv`0SI;-xu3?cCO19^Dhj;nzul^F79V=|g zmbToJL`XTbno5%>ozZZ0nB-F$Q%jRn&4!j`c}gua7nzC++z!g1Yv&D{2d_Rw#b3S* z1+JaCZcgF6_56fy@@?0xLmRuDR7mE>#e}+jYONNN0$!9U*cP!txNbK}sWA}ZyCZ2< zeeK0XzF16Xbgfwu&J=Ff(rMW8ywAVj2f-r0@7|1NN?)6tMr;)FF+$Q!^;LO8B2=Rk zd|0Z6+905_tF2<<j!n*moDXRn*EQ`38MFCP6{-U9b5xf<Kytst|110-;{SCB6Zz4i z4DJ#M5^{<%xThacy349|k5H}ZYw+QhJ@1aKrv-n+zgbG!?RwITj;frkqG_~@rcsNg zVSf7}q#1$9>4i!zKE|Q5tIcA<+Js$xN>mkY2dmBwmYp56&JJqmv!*nk0(#oiGi0)d zOm0{3<Buz(&^DgNN^_xY3jR3U-E{q^(4lEa+boBTq-q+sXPC9fEGXno%PEOg(lQx) z*ZrBM1pw8M3h$3yZ^|Uo)GF<<K>ssiX_jMgP<H`zUt_snFAJSwb!1gULX(AEnCk?v z-g<YMC}pLxY-#gq(;WqVl0`=5fp0t{{eXcSEtUnIGf;WIlCYGO5;7B(lcv>SvA$6E z{@5LAmMd*Z%5GTdueRJir)j(FxI1hvkSj}VVVXl7*NNGrn8I9tMzut)a6&VhLDB;% zA{K)3?_6KVys(5xkN{43*DGu?cs?)!-)F0vglVlb;Z(*c)5vphHL~6vtHQ2o>6BW$ zJ73#bQ^9|8{YvS=f&Q!UPd}1ho(`W4o_zn^b9k|OVoilR36U72iz87fBJ=JjrE*%( zDJ!YXyDiKQcUQAW>6pYU2TEWsaL(9uBPA0Ai@b=K<RDWq2PwEdEvzC7k=qi0)=^w! zIcedC^p*kv<Y`IMpzyeqw4JvQ<%SipBJ(T&>x9j7Wf)n$Sz;x!<VF}#0ri-~!q7<? z0;#>+ZQ6oAc83VYpb^T!2Bk;!F_MV1BvjYWSxyiWLqkPnyoW(Dp)ef~?k>2sxp^@f z&1N&OmgSg`N>4{IyBXo68F_av+z1-O4bspCW;5i2hu=O!TKYPP*31OS!pvD?#wvyR zFPKeAGu&n=O!O?Bpb=ur{neg32dpyEc3A5^DTkPU?>;ZR5z;UnMmo?Naufs32Y5cT zOSIpKxs{gA2^UkI;t#Oyq$=S2&}0-{^?QLPHn@4WTvtnys)*JZJdZd<zo5QVbD?5^ zg$Qn67de~>ubT4ZQ8)d2fJ8+?CMb2o0;ho&OfgwKcfzs>i_w_3u*Dg(&~`6M6}=`b zqar1ks+yHgfOl@2$(!(AaC;RWpaFp*3|j$QTVko6GVluq>KzyYDlDE_$W0tx2XDbx zE7Ix(0Wq{C?V=mdkH-h(yFple^Vj^9alIh0w>gsa*7Mh6!ykl+{tEAmmv}IBD+d;w zTR+SewEvR+kNG>oVD|WTf%pGiOke&3W(H<p;f|I;Q2KQg2{2s<48B&9(5TJ1Dgn!q z>KxJnC}b0rwzw*fezqoTPxn?d_8P0@rPCGtU|wwl)!$p!Rqt%LJ<v#dtdA!lx)0Ae d1BR*;wrsH?K4`^dvG?OZV0EvD=~_&N{{ho5fH?pF literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.general.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.general.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4ed74a955612d2ecd9dd00f9ee199ec6f8e1a52c GIT binary patch literal 15515 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 WYir)2o2Axnx5yKxPD|yYv;PNq*z)cG literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.infer_datatypes.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.infer_datatypes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3984b1d7dee35f0a18c0f11e9f01abd61bd841a5 GIT binary patch literal 6339 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.infer_shapes.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.infer_shapes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5b8271a7ccba07b43a16552a53fac02b4bd8fe61 GIT binary patch literal 6165 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.absorb.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.absorb.doctree new file mode 100644 index 0000000000000000000000000000000000000000..488afd58674e2e6f64da237ed04804c455031f61 GIT binary patch literal 17280 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.collapse_repeated.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.collapse_repeated.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c19ec7207840b8eef6b2f951cb4741bc6856c3c2 GIT binary patch literal 11501 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.doctree index 16323c25503426bed5e883cbdf7cd6cf657775df..60e87ad37806cb3e698eb0d0b865097f8b189d0c 100644 GIT binary patch delta 1550 zcmZuxU2GIp6z-k<?b3F4)d$ipwAGf~r9b?{CJiN+)@X<ummdw$Xwli7Y0r+cGs|=* zw28(NNp0gK)Sink3c3+fs32`>1TkU>QJ>W`gh!tIHv%ul81&qkEw$n%duPr)=ljl? z^PPL|9P?f54UGGbcO@1AUo(7Hs>5sSr9P-}!g;e;GHpZQ$kRvoD?9}O2tsI(JJFF6 z6pYbsSy2pAQAfBFDx3MTrK%K*hjK{?8gVJo9Sx~Q*(y-LAWvnTZTLFtnDGUJe1d14 zox;NLfw*UGC$n?L2nB?%PZ;>#J5kTq>xNFB@Z<Q|$g2}vb?OR6Ubhu>sGxi7uow2j z({KQuQJrv69#zy*8Tb=_)6WUz<x;s|8bs_L*3BHBa)MA$6xE=&`YO}ijj&-CbE>5( zJX7OD%7rpzFb#c-PuY-$0odOJn<0@2K_l$4b24lYooOEA&?-7p?L*gLOD>gEi_7p3 zx!UQU9OQyvC*eAPfe$>M20N$XqY_}>x$QwXOkNweg*VOY3f%|Rzv5zc4*F5|?Z#W@ zo(sH2aTa#Wj|Vf197n0?J!~4|=Zgnjmj}#3A}e5ypG3;vqhpFZ4Z`!nNMYEJ%eE!- zThZF7dx{j5i+aIOQ)w=QCjkB)7+~|FLVPyZ6!?hhn4>z5vVM$(8u8Ql0}@;%cQSn$ zz7XGgMMPA;V`-(HS~sg97u|t*exXN#?*wRT74*$LAa%9R6<M^}?P~=m!wI$#Z%7-r zawm}2<&hB%K_@(9>$*!1%c6+W#P`8}ioid^JbHU=qwqxSWuN9}*xG(S8j)nJCb60t z0^h;-z655ok?507t)&hrW>GE}T#I4r`Yo7TSKs!d6E2PIs8+D-29;%NSS@ocNF1Vy zzi`X^%On`_-A0yfS$`9nv^J3-;cosWiXpvj;U6D6;Vw6`)`2XV#+DvGyD8ueYa(6U zebdekT$)W`^Th}*eDYYEm;jdxnyM3UYDHA<0H@##Zn%(Q-{OslPPT_KY_4DJyp~}& zci|0*#J(2oBw_urN2DQ!@ww)h7o{m)Z7;f;d#alUz0Hhxxbv+IidQj$tLkZw)81VH zt5)@R!1q(|gX5~%%i$+jhM%3->JWC*iK1gz)l=L3KY8F+ar=mF#eaduwIO)KXvH(} zt^_Bb6Ee(#p{S$Ysea!rn7W4Y+neeMx;iZwz0~}$_NKr{r7^Cdc&kpDcAO0Dlvv)P z#l0X_s4VP1`v9K5bcn?kTR%G~N!QupmCt8=uqeXkX#o>-?L%Rm7FGo+Zadt?c521= zmd8qTz0n1u2~-x$tP99OWzr3sw4qseUAlFkLx;y@X|oK+uO=mW9Q(56!6u0k(2e2g V0$dCn4O#`}yp$QXc>Sw(_7A6dA0z+( literal 51198 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 Wd%Z!uW`=IGg3g=pb9fkR@_zxL*)X#J diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.reorder.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.reorder.doctree new file mode 100644 index 0000000000000000000000000000000000000000..df8d05d07f42fc84427bd2f4d63990f62a8f54cf GIT binary patch literal 13465 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.round_thresholds.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.round_thresholds.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1537b4cb415757c59fe4338f65e70047ef8beab6 GIT binary patch literal 6961 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.sign_to_thres.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.streamline.sign_to_thres.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ce0eb33fb3b5c5388f054220d7d603ee61f2ca8f GIT binary patch literal 6599 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 L1qRB-Nx$=7P_E|% literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.util.basic.doctree b/docs/finn/_build/doctrees/source_code/finn.util.basic.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c8ace62eeb3bc4308309de16cc3a2c5464b90c88 GIT binary patch literal 24782 zcmeHPeXJbURrkmH@O!r3bDX#kJ5Hu8sn_;<`|Kt$wJVo4K?#Y|*TzlKHc~Q~-JN|i z<Jp;IKHf)ZBR~{AOY=u**0f3^B#;n-swx73h*Y7f1%v<<A^xB=Dv|-E5L86PKNO10 z@7z20-kI6i-P!ln;X@?yzL`7s-gEA`=lsr@d+(f|p1Se%7x%FLl7*Jvj3e6(>z>~- z!(MWL3Oc42^<M6s{+ZsVdbMOOFg8Lz4w_~!*@GHQ%XV9V>GhuPS$mS%&}>Gw@5%bs zv^8VRKHsb1;dEq2u9<n1ysd3}UY$tR8%Ah1wT|D4QH5Hd!PL{{CXpUk@6$cT6o?#6 zX1WI0h<er$Yp=CGnMs*kO{QGiGkdFX!${_hC<^RG9AR)YnEiGu1mnqU(>1~ng}9#f zj1Ip#(2Be2reQR%1!kM-#K~-AtkI*MwO}2$4iZJ{L~?Ou!w;^7U88BP(8yLGzK~yW zZuBPP$_g@rt_LBwzURumxRES|UCZ`1>qe`UPQkS8wam?o(6~IUli=UF4`O;d{=F0b z?#I7VG!_UUu-OP|kb>>4L7>SG7bRWeqCO4b@~h=Sjh;2L8ug6WI&Cdw#<*G>V;D5~ z5NR4$*fiF=TbF3);KN(f{I*u;y8cMF`)~}sF#{U--nd~cbM+GHQf+wF#pHg~l~!Z3 zsM%hT9tL@Q7z<?sUA69k%2;QUDOf_YPyRJLS)eC+XhRdCILImXA;nhhG*f44u*e!1 zp65qK!Ag=D&OBHBWAavM_zWiD<6O}=Z^mFD&24tvOH2=8q20g?&0yW^(NumEy?i89 z*U3*Mm)IdbOsFtfh(Hc&Iyq9D1TotF2l;Wk)y8eDSr!e_QG>K>F^_YMt0GJDYN7-) z*`hofpB#^kPxP^2swsQIkd})}VZ76Ao6z8TGLs@<vRIHA0E%e}%riOAj$N0-&`UJ# zr$BI(^QgwnXQSzRQ5MIAp%E_60XdDe!01}p$$Hzv1`zR*c8QU@^rGKzfbB1)%6u%D zO`rFqj8qZ$cr`04=>DOu>9qg{`X)d$OJ}i+0J##^j?BPtvvp@U6Jn;st>ggMc-;CD zkY33d@K{Tx7|~>3cZ=*{Yne;X%;F}=?~7>tYsJ>tO34hE2eS2&6GH&K2Pa9@I)?4_ ztk;rR+(lbmpl~{M$w8Eun_bs#+BDfzVZ#VKT+RVHg%kWN@yeysvtDAIMn<q^!drZq z*!@+woXOkpmAy23aU-Lv1s6lKU$IVD-yrNp<<HSn?*hXgGP<N3y6rXH7*<+4t<?%z zpYa%4$BZn$1x!CPxKh2)Wx<&-j;#|Z#(yyHdurBIQIOOWJQTaExppHkf-SvkM3%t# zpOP&X`#7MO=2+5Ko>$&Cvu2Z5<E$bIq$7xVgEvWDn5<_mju)Pq!~0PNq=Xrm2{UkQ z09FR%4`t=TEmgQm*=9ujV@bY~oQRygd-v=aW~4$kw;-GUs8aF!N{H6Ku~BAp|E9ue zT&6f}edfCL3;ob+y==W?A=VhIG|UGRO#dC9w3MFpi$ZTkM0aF*H~N}q*e#f9GLym( z$G%zMCr6?gZbcO0BZy&T&I$yZ%z8eLIIk0}CmEY$;=)*V8mK*(+5^YU$~Jy_w2h}d z?$pHJ**{x?$7Z*yw{6$#x9)}fXoN#57UvcBG01mp^L8GQt&-<&kA+JCG6Vm2p^A97 zOUKWK=j;I^1D*lbROS4jpF^uEMhI(lo~>9H2AdI!^9)Idcvp7dybop4a?`s?#(Vcb zbr81eyr1Z?H$FvrTnjGkMDZ_U!<1)d2{f4vJ9WAe=Iflpo%8eba~?kvw%M}{dP%G5 zj*D+y8J}He9qrUY@6AjJ=ZIdT^)=JeTXxWIoYN^a?r_t)yjH#nVU2H!pO>wYrzdQR zDa!>5Jd_=1i52!ghb86<^W*+9Mo`rnzgV#@S)-DS^BW|jf;GO3GG&eYu97t#DNemK z!W%?}8=<5)wh@+fvQr~`9Sq$LBfJ=zk#269SeY{#uF1m9swP<<;yp{c-Kl~8NM@Ew zx~-K*$aj`h6^^v@SzeXDClz4Sa)<~B5iC33m93J-giW|~I0b{AB2knWvMPrG^PBu= zr}kAh+&vZRlHn?OIJZbN1;hOZlqtjIca;n`i`iv@q2Lm6u=A#z4@G}$GcN07r)GQ( z!W&}7gS!=>d42(AaQ&i7PuB*xM}J=_7YBD8g<ozOZZmd`$Ykr5W=n7Rk=_mbmL3@1 znn}Qd^;5nAQFQ2d<?dU%9?@R`QN%)da}uUEk~FiuAuspmM)Xi?MY^%1;kU7*xuz!~ zjcYOr?q9cLI~T`FRyy<M{0!!Iy!Zoan$A<QRq_@}P_1d)H$q?ny+_u|3!^26H4c(1 zVK`0dpn$ZCg~?;Q)$%VfQ&dMV&2RFYt)t_r;Znfr_7iAi2{hDdDXmpHKetN)`=OSi ze|DYc|FdIvKNzos7bUMzCVSP=xdO7vYw){~USr1UIc?%M^$e@HP6IqOzr}TuFGy2d zziMI=#tXH`GPPRA_Le%v=4ox+aAPyn3=KG^5zfWUNNbqUhG}|QwBc*CePgz?b*yds zL5R(&d0Gq!$?6Tw@LJ6LX%7pM)=bx=-Ox~L8fa}?GwVY5|6Szed^^8I@;dJPrWD&K zV<JIg8Q1wBwO}i`&X>~0!*o9Nb57a(C><E}0*kE+kM9(7hxezT-0ybb@KW|@>2aq^ zPv_`Oks@IolZsuC&<{rWxpx!;=l(7RxVC2};o8cmjq+xv`x~)UbPRe)<D=F?%jnA0 ztO>ZWzpbon0zJr${f%su++JxZ&vmq4IKpzv9!aZWApJeb?<kWJqog+tHA?4SsDpxk zI+iMAer_031ur$5))WlO`#hKX_gD8-x4=-`$or~8Ssf9y@`ZVVcZ^MNFgyssk#i{% zoNDQO6TB<u!tW|Mmw%-}r_SYdni0NwpeARqb9v-3)5BgQj*Vytld+_p8Wf#1ShLsR z8JJ};f3aalR$BPz<EyLMj~kKkH0}PSq2WaOk~86)$1Ff-EA)pAXq1i$*#8!ZfW!V$ z+PDhrmq|{|&bYAu1SproK4)(?un#~)<i4fT2KgwwKhcl(vh4t%|IlQBK0{^{!mnfp zL>v0pUp9j!jRwen;pI%Xb@>#PoSNY4icwj+gdr2oKQCJ)w@FwE;16bGBP=afCM||R zdRMYG%3Q>N2-4Mn9G^NUK>9mI&k19#fbVm%nP5Cql4tv8L3Nms3TA0D<t0`(kMUFd zun1om=Qnu*pV=jWJBUC|3&og9p5#gY(%7U2!;X*xxs$R<Q!Sm3f~;~U{H~Ha35eg+ zojix@)SW2B80=0S<?kvQ4!Cr*b^v!GRX}TOX>}4J7GGe>n%zb%&D_K$d$^>n`ktxz zc*6-c>`;1?Np&aZ!})z0&vEA~a#*9RL^zd?Qw#1?UP~Jf(^qPS?QEw^erk@!bt-=a z%H>Xlv$q?ka+Yw01!RHmN2A=z$uhShTMuw7Pfg0PWC)FNEsKR=ah$Ry@QU!ym32rM zExC?2Wvk@2i9<P$!@1E5#440Z>tGJ#KP7{sOhXKd9Ecj0^8@N2??BKoA@iV<y`m!m zwX%+s!8m`9&K0QfyGo#T3k?OReMb&4!|Y&CdmsfhT7Mzi(6Bel7FD*eBx6Jx3x;hh zowxuo0Gk*2a`j|KZRLbG+7yGUd+E<uG4LB~66g?{b0TeA1+K~@qohABTwMg^a=7B` z?FOzMhnR6h%QV(ay<^}!_NMOR^m~Af^NvoQ2iu7Oj^*RXK0A^#Z0-NOMKBwq?{cW) zreh6RqW{1cG-`Z+h=enPnqUz8p~~tdER~S#ifonmlK}QH1d^WEQ#f~atj0V_9IK5q zNrsUx$f1vekxF3B^VC5eBa^$zW|_OIe5^aeD+)9hw|N%3pfJqh#Y|E_?XtRgB8RfN zCP?KA^8{ZSo8Vwz5zLW8D3h9M={yRu$|3N(N)F*g;x~<Qe*)KOl&fZ@=nw{ZFA?gM zb)py@7dw9)ER|ws3N1TbGREe?HB)DYa_EfFs5tN5A~fckm!n^DbrN_`q%<nhyF1^Y zhOa}~_U7eNlUy$Ns#KJ!hEGWO71`=GN=AX<LS7KUc#Fk(^Zj$lW7UyS*r!J3e1keD zK-!#~1I9!iVG0j%JS0<+XYMBYt_o(~u2`3_rHp-Lvd-_KD}^omt`fHV1@Vw#%WJq! zu|<ifh%H}`yM2H8NMN$%SOY7uovu#@@wK*3UzBN?1z0XvE%LGDr^O+{PJ{LWnO#$S zTAzO=G!dR6EEW4v2u#DsG+MOfM_tqT-+Jd-i>|37Y#-rUFRb)#Y1mU>i^46utGi}6 zzhS$shNtUT5!QTc5F!$`{4mmtHbO3T%U6W`<~7`_cYeIyN1+Uc|4)uhYO1q$8Z&*| zxg{rjlqHdh&_3nwQ47Ad@PoARFl`qOr%bby_Kxdtj)VJBhm*3mn_&G%yGASBpVT8? z@5F9ocX8s+Z;$dneW&CH_B6m1P2^<x5Tc{J(qjYL*1VPx1jg2q#;W-A=7N<l?CW1X zhqF0Y7Yh*Xw=O?wxZxzXHqVoqR(hEfVHo+aW!Y*nhxG@Fr7yO>dq`Ct$q%U^t&_#= z@0WuZWtw8><mA-QogbqP3QlfmoOxt^u&_)%n|2@^wY<+We-*Tc!Gd6!BKlQUH}7u` zX4FiO%9Z8Gy|_zq(@c>Cq4X|K!rLW@#e$ItVtwU#vY#BA>|j(CLZ@h=Oixrx=M>1Q zXoBBWiY6W=e$!~;46f5?Lh0hbXyRkPf<veuhRZjNrUgjB5uXqXA`}7e&E3_w^WiNm z)jz}$^i@0NZAlA#zP3dT=T$?56NV<>n*|bx1n?Dhmy#nOHeiR6Xzw_qYjth;JU(qS zyl}qdYxqK(9`fGV5)GZ&3>0&9?eVrkKMfQa04`|;Vi2^XPi=WXg2)FUjTuA~{m4Ls z?I@(<zyYcEs$B)zZ(xxO8ix2pHJUfE!R>CzQ&SDI?Xw7INPkN_3Zv}`q;LofKIHiV zBiP)a7%62}Gdh0kMKl%~e#>6BLmMaFX-fnrwM2aM|FiYKW40ukIIog59(P`mMmfr@ zh=}hrwcruo=hDW*pj||KW!A3{X55JHcR;y3;^XY?CgMBGPm}08Q^u$$uWvUg*Lpx? zH<9g=0-;gS+{s-18Xw)0rneSZmoH3kMfT4sYm{(66r=sIY&Ds^rQBfq;<Ceq$2=A* zluBD+@z?8;!BK`HhDGt08kX}d>YxyRE#zl`1p)cUr>q8+8;ZqwUcU=c!)#J;Na5B$ zR;)`=LfL4P4Le^$S1L;2ca@@qZxat`l<<eRPNM`Rv4K%Sa{eki`UOuYUi{(Zxm5Z2 z;0SN|@cbUm4BKnjH~Jm4lu~vM&oJ~nNPjB5j|lYq0~#Jj&jV@WVKXJrvrH;V^5dfC zyFj@dJvn>3LC>YY?D*K&s(8k$Z;>|Nd;oq<WRbQ=X%v9IJKvxtmx|ts!(NvwYnm`_ zLe-11)nrz0^AhNT)rI17j;qCDX+{iKpOid~1FULf&K2sQ0IawF)Yl83I?Qs#G!Vu< z$Li*RedMVxcb5c8&UU4TT}z(ir{oi3lOBvkLJs6V$|g;<bRGa%<v;jcCI7KX{HFfn z0<Kg4p%i1V|G03K!PU5@zQpVLPMb@4JFgJG_*Pr8J<1A%CwYika8Gh0Z9GgLg(oSK zkD7yVJ;`r_a=9nr?Cr*rTnzB$iEMwg>`Hs&Yd9ex-rq+><!6g~e?$5j;A8YjYy=J^ zJIdj_Ye?(b=91Pn=<}!vhVFk-SqX(zlau))*(!O9WTy5DPYe-}u+gD)q#-h2^w)AI zqpVN}fP#D_0Oy<3LBSWz$*E!-6;@F9ZVEnemFMQ4(AhAP7CexP`3|d_cQG?uK}7%J zHc#aHV-p#S7J?zd`ZA%Ymd;l}R$)EAtAzEh6Td0ee;wB;)+@me#`+sq2~f1SOXu7O zPP9$hJfzhw&qSV5Yzm480%zzQLX>f7*5}1Hjhl21m>1IW7(S?{-j>hTwTE#U7=6=A zNBX=IqjPyi7^`;kT|dMLuXXjY;{Q<Yq_#MB&oWQ-L-c2?cb>1&G;vRLSK4@(S_@BA zHoHoL#`RS12IX>3#o2?WQk~ZZ=3nJmZ<i^p>M~2Kx|}8kGzCKg^Ww@xWi-G!<O|!+ z#b}*@aFAzqaAG-`H`h8tZTBV%%{ZXEx;oDi)mue=nY4uG)lCjS9V09yBVX_xlrNYi z5XRX;N;ui-B{R>mPjFSrw}sVYE`5Xc1N1l7qMiK6=yY*&kdx8T_ch$kr?+w7;_h(d zH+9OxOHV;=8hiyv>3Fn_^QKrc#;c%wcx7*Ln355DaYx_8f_0~d61JAnMHb!;`-~S| zo}d@_t}Z_8)#>nn&eB67gDxoY$Ex5^VB)kvq`O!YcY9a%CG(cy%G>GW4%*AddLA;u zhN9ARGTky8@f!MDpfrz=6|MN0Mh7KxSRHSg#CLByS+KosjBGC+^8TO}5=q8Ud-*-f z_(-{z+>?K(n?c|Qx&_mBkw+I3hmka+Ub2W2p7~y;SuefhWZ_An3rC0ICJVe@#lyk} zRzLE%{;>z@4=$g-c;P)@BwwS@OLBw;6C$Cq1zEWmTrWB7BDq9tteGqUaxdA3uhx@0 zaXi=$kb%Oa?2n*FNsCvJ`PTQ^7%xO)w~(5Gjwc~*N*0WmqBB{P?6aX=hg)%{t4j@p zgjoRrY2aZ?7~L$g5{TIgNe@&}H#FmxuOnA3Y8^p7PCqnR_$OL2b!kRAZA2jap}w&F z9I`Y#lFM0P8P=KP5C#*%7I=1Fs1L?VgTWUAI3PmVr5CzpSEuZsu&E{+FA}46p|>DS zN}gy|6m`Q(D=Qlt8_1)KRF_`e57t&%=K2b1hAX|~7`31tsRa%UbRgvjQa*t4<@?V) z2(c^#?Ph@tl_)az2r`lHBj2}eMr}sMiaIVx%punhY@vl@HCGNKC!tw5E-Z{pvaj<L z!`BIizzyHs!Oj^Jm}Jy~Mju4FaCr+0JQ8l<yR}W-vezsZ|Ddl^I1mo?J`{Fv6j}et z7<L?@<(=%F-|DW9)Dv8SCz}>hPd4cgGc!VvB_P7_=HOb~MG95QV$L#+r*?lGO5!(d zuZ^h|KyZ|xA&eXOdPmGo11V9$XbZF~6Ny%@C&zGJ-MFTkNapJ5*jIz^rbOY}$$ryY zr>x@10S*bUL1+<jC$eMjI?vR~=KKy2f>uO8M#!c`ImAB&(8`t4CqJwhy|v{HrJJP` z<)}VOh5WkaTqF;3fgIcu`2VJLlV!N$Ka^d|VLz0v$6-H|f`MgaU|-MjANtgZef`9~ z7T`a0FqEAYWrw=>4{gD+U0Js1%75sEnY}}^;EMgk$sBRWk|$7Zb;jeW^~APybDJ@? z&6wI|3~e)JwizSajEQZ=z&0bk%?NKZqT7t%HY2vp2yMsKebhf2{z2y<k^&OqrI~S6 zB2q-zv?e6Zqq2%J3>1kxlW9AISM8zG)6OqbS2CNsb(sPQq#bwy3A1lnZ*b{SHbyR8 zN_obmOF5LdbSW<emo9z8%%w};pK<BZM;lzaS4hruQjVRi<I-IwInzouTl?nHrBw_r zVv2F&<Z#vonOYo124RLaWbM3!a8lIc`j;)?^?*dM#7@I^rCGD8cNGd{?YUf!bAl>s zbTrpLd|wcevprVqD}AyjIRF%w)fTY54e*2dhj0+QLkZTo;)Al7+1h-I{6`A46yL;+ G`hNi*SuzU% literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.util.data_packing.doctree b/docs/finn/_build/doctrees/source_code/finn.util.data_packing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c8e2f92b5f73be87502a77d68d501cf92f84d119 GIT binary patch literal 27586 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 VDSib<C4HQPLF0SuHt%?)_P->=V|)Mr literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.util.doctree b/docs/finn/_build/doctrees/source_code/finn.util.doctree index c76b2a37e1d3837d081201ec157666d46962daa1..132a89add156203d522ad64e7a3412346728bd79 100644 GIT binary patch delta 642 zcmZ{gPis>_6vgvi(j?keV?~9;TKrSmSQ^otC_-I{g&-nTgkayFY0u!x%=5h&nl7Xj zp;DOLOlhE-O7#Osg?<F_i@0+kR&b+ro`#Y|9T=Fo=XdV8+=I2kw_0(vu<>O$_o4X4 z(ev(*?mEwJA*ad#Z^vA+&}dVCWnP*|44{Zo%czrS49YqUFANzENorI{@IWMlSXRF{ zHSri#btdI93COd+64w?eV+|>2WKqIILanJ~CY!2uB-QY}lm=$aG}WbkK+n*#BS)0I zPv=%LxY`dNW;QruoxiUC=z^re>O>7u7DO^63pDySARgc$9$^koh$^?ePDo+_bN|2| zRSLXVP|j>_VKG|azFAjA&@d#-zJ`0P4hv-_+dfH1Xl8TjxS+yDa273_b%{FeqK2zD zKU+c-cckxOG+X#s%iv<R@ZNf-ml7|INn$))w$ix06D^bZZ=bftDLBaY8l8|n(FGU! z*Y_JmELm0Rw@;@>kn}+n>0?Ga`Fr}~{`G;^7E1Kj{XM6$`~FAjy7;_1`tx1>CU&q5 zjtE=mN_C8RZ6cOqyP<5xohEn_TTO|v?7NLY3r?YHgEqDLeZ|G*#;S9nGU()TSwJt| K?9I7O-T4FWX!nr- literal 66431 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 XnfU|LxU08?fesA+V4kG3zfk^vjW-q1 diff --git a/docs/finn/_build/doctrees/source_code/finn.util.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/finn.util.fpgadataflow.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d73ae460387d36d94911508713eb9c2e2a2b5edc GIT binary patch literal 8928 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 H((C>YM<mhY literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.util.onnx.doctree b/docs/finn/_build/doctrees/source_code/finn.util.onnx.doctree new file mode 100644 index 0000000000000000000000000000000000000000..37b1cca4b5168af822e2985137bca78351fa4673 GIT binary patch literal 4140 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/doctrees/source_code/finn.util.test.doctree b/docs/finn/_build/doctrees/source_code/finn.util.test.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e60811840536576a89d784df9e24289cb5cba6ac GIT binary patch literal 7718 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 literal 0 HcmV?d00001 diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt new file mode 100644 index 000000000..616064c16 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt @@ -0,0 +1,7 @@ +finn.analysis.fpgadataflow.hls\_synth\_res\_estimation module +============================================================= + +.. automodule:: finn.analysis.fpgadataflow.hls_synth_res_estimation + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt new file mode 100644 index 000000000..eb5b773b1 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt @@ -0,0 +1,7 @@ +finn.analysis.fpgadataflow.res\_estimation module +================================================= + +.. automodule:: finn.analysis.fpgadataflow.res_estimation + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.rst.txt index cd8075d75..4f5cd7cbb 100644 --- a/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.rst.txt +++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.rst.txt @@ -4,22 +4,10 @@ finn.analysis.fpgadataflow package Submodules ---------- -finn.analysis.fpgadataflow.hls\_synth\_res\_estimation module -------------------------------------------------------------- - -.. automodule:: finn.analysis.fpgadataflow.hls_synth_res_estimation - :members: - :undoc-members: - :show-inheritance: - -finn.analysis.fpgadataflow.res\_estimation module -------------------------------------------------- - -.. automodule:: finn.analysis.fpgadataflow.res_estimation - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.analysis.fpgadataflow.hls_synth_res_estimation + finn.analysis.fpgadataflow.res_estimation Module contents --------------- diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.rst.txt index e4eec7717..079959859 100644 --- a/docs/finn/_build/html/_sources/source_code/finn.analysis.rst.txt +++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.rst.txt @@ -11,22 +11,10 @@ Subpackages Submodules ---------- -finn.analysis.topology module ------------------------------ - -.. automodule:: finn.analysis.topology - :members: - :undoc-members: - :show-inheritance: - -finn.analysis.verify\_custom\_nodes module ------------------------------------------- - -.. automodule:: finn.analysis.verify_custom_nodes - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.analysis.topology + finn.analysis.verify_custom_nodes Module contents --------------- diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt new file mode 100644 index 000000000..896f3fb8d --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt @@ -0,0 +1,7 @@ +finn.analysis.topology module +============================= + +.. automodule:: finn.analysis.topology + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt new file mode 100644 index 000000000..60e1a33e2 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt @@ -0,0 +1,7 @@ +finn.analysis.verify\_custom\_nodes module +========================================== + +.. automodule:: finn.analysis.verify_custom_nodes + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.datatype.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.datatype.rst.txt new file mode 100644 index 000000000..d55952ecf --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.core.datatype.rst.txt @@ -0,0 +1,7 @@ +finn.core.datatype module +========================= + +.. automodule:: finn.core.datatype + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.execute_custom_node.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.execute_custom_node.rst.txt new file mode 100644 index 000000000..94d8ea143 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.core.execute_custom_node.rst.txt @@ -0,0 +1,7 @@ +finn.core.execute\_custom\_node module +====================================== + +.. automodule:: finn.core.execute_custom_node + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.modelwrapper.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.modelwrapper.rst.txt new file mode 100644 index 000000000..5bd74864b --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.core.modelwrapper.rst.txt @@ -0,0 +1,7 @@ +finn.core.modelwrapper module +============================= + +.. automodule:: finn.core.modelwrapper + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.onnx_exec.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.onnx_exec.rst.txt new file mode 100644 index 000000000..87bf9d29d --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.core.onnx_exec.rst.txt @@ -0,0 +1,7 @@ +finn.core.onnx\_exec module +=========================== + +.. automodule:: finn.core.onnx_exec + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.remote_exec.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.remote_exec.rst.txt new file mode 100644 index 000000000..39c470eb0 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.core.remote_exec.rst.txt @@ -0,0 +1,7 @@ +finn.core.remote\_exec module +============================= + +.. automodule:: finn.core.remote_exec + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.rst.txt index 6563d7a43..acb9de8a7 100644 --- a/docs/finn/_build/html/_sources/source_code/finn.core.rst.txt +++ b/docs/finn/_build/html/_sources/source_code/finn.core.rst.txt @@ -4,54 +4,14 @@ finn.core package Submodules ---------- -finn.core.datatype module -------------------------- - -.. automodule:: finn.core.datatype - :members: - :undoc-members: - :show-inheritance: - -finn.core.execute\_custom\_node module --------------------------------------- - -.. automodule:: finn.core.execute_custom_node - :members: - :undoc-members: - :show-inheritance: - -finn.core.modelwrapper module ------------------------------ - -.. automodule:: finn.core.modelwrapper - :members: - :undoc-members: - :show-inheritance: - -finn.core.onnx\_exec module ---------------------------- - -.. automodule:: finn.core.onnx_exec - :members: - :undoc-members: - :show-inheritance: - -finn.core.remote\_exec module ------------------------------ - -.. automodule:: finn.core.remote_exec - :members: - :undoc-members: - :show-inheritance: - -finn.core.rtlsim\_exec module ------------------------------ - -.. automodule:: finn.core.rtlsim_exec - :members: - :undoc-members: - :show-inheritance: - +.. toctree:: + + finn.core.datatype + finn.core.execute_custom_node + finn.core.modelwrapper + finn.core.onnx_exec + finn.core.remote_exec + finn.core.rtlsim_exec Module contents --------------- diff --git a/docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt new file mode 100644 index 000000000..9d4acef6e --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt @@ -0,0 +1,7 @@ +finn.core.rtlsim\_exec module +============================= + +.. automodule:: finn.core.rtlsim_exec + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt new file mode 100644 index 000000000..aa36e86ee --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt @@ -0,0 +1,7 @@ +finn.custom\_op.fpgadataflow.convolutioninputgenerator module +============================================================= + +.. automodule:: finn.custom_op.fpgadataflow.convolutioninputgenerator + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.rst.txt index 632c021be..79a05080b 100644 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.rst.txt +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.rst.txt @@ -4,46 +4,13 @@ finn.custom\_op.fpgadataflow package Submodules ---------- -finn.custom\_op.fpgadataflow.convolutioninputgenerator module -------------------------------------------------------------- - -.. automodule:: finn.custom_op.fpgadataflow.convolutioninputgenerator - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.fpgadataflow.streamingfclayer\_batch module ------------------------------------------------------------ - -.. automodule:: finn.custom_op.fpgadataflow.streamingfclayer_batch - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.fpgadataflow.streamingmaxpool\_batch module ------------------------------------------------------------ - -.. automodule:: finn.custom_op.fpgadataflow.streamingmaxpool_batch - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.fpgadataflow.templates module ---------------------------------------------- - -.. automodule:: finn.custom_op.fpgadataflow.templates - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.fpgadataflow.tlastmarker module ------------------------------------------------ - -.. automodule:: finn.custom_op.fpgadataflow.tlastmarker - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.custom_op.fpgadataflow.convolutioninputgenerator + finn.custom_op.fpgadataflow.streamingfclayer_batch + finn.custom_op.fpgadataflow.streamingmaxpool_batch + finn.custom_op.fpgadataflow.templates + finn.custom_op.fpgadataflow.tlastmarker Module contents --------------- diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt new file mode 100644 index 000000000..45a9a963a --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt @@ -0,0 +1,7 @@ +finn.custom\_op.fpgadataflow.streamingfclayer\_batch module +=========================================================== + +.. automodule:: finn.custom_op.fpgadataflow.streamingfclayer_batch + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt new file mode 100644 index 000000000..5bf7f666a --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt @@ -0,0 +1,7 @@ +finn.custom\_op.fpgadataflow.streamingmaxpool\_batch module +=========================================================== + +.. automodule:: finn.custom_op.fpgadataflow.streamingmaxpool_batch + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt new file mode 100644 index 000000000..a630867a4 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt @@ -0,0 +1,7 @@ +finn.custom\_op.fpgadataflow.templates module +============================================= + +.. automodule:: finn.custom_op.fpgadataflow.templates + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt new file mode 100644 index 000000000..8a087851c --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt @@ -0,0 +1,7 @@ +finn.custom\_op.fpgadataflow.tlastmarker module +=============================================== + +.. automodule:: finn.custom_op.fpgadataflow.tlastmarker + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.multithreshold.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.multithreshold.rst.txt new file mode 100644 index 000000000..3cdf3cee7 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.multithreshold.rst.txt @@ -0,0 +1,7 @@ +finn.custom\_op.multithreshold module +===================================== + +.. automodule:: finn.custom_op.multithreshold + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.registry.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.registry.rst.txt new file mode 100644 index 000000000..7805e833b --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.registry.rst.txt @@ -0,0 +1,7 @@ +finn.custom\_op.registry module +=============================== + +.. automodule:: finn.custom_op.registry + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.rst.txt index a984822ae..fd2f070f2 100644 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.rst.txt +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.rst.txt @@ -11,38 +11,12 @@ Subpackages Submodules ---------- -finn.custom\_op.multithreshold module -------------------------------------- - -.. automodule:: finn.custom_op.multithreshold - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.registry module -------------------------------- - -.. automodule:: finn.custom_op.registry - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.streamingdataflowpartition module -------------------------------------------------- - -.. automodule:: finn.custom_op.streamingdataflowpartition - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.xnorpopcount module ------------------------------------ - -.. automodule:: finn.custom_op.xnorpopcount - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.custom_op.multithreshold + finn.custom_op.registry + finn.custom_op.streamingdataflowpartition + finn.custom_op.xnorpopcount Module contents --------------- diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt new file mode 100644 index 000000000..1d07f01ce --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt @@ -0,0 +1,7 @@ +finn.custom\_op.streamingdataflowpartition module +================================================= + +.. automodule:: finn.custom_op.streamingdataflowpartition + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.custom_op.xnorpopcount.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.xnorpopcount.rst.txt new file mode 100644 index 000000000..d91608278 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.custom_op.xnorpopcount.rst.txt @@ -0,0 +1,7 @@ +finn.custom\_op.xnorpopcount module +=================================== + +.. automodule:: finn.custom_op.xnorpopcount + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt new file mode 100644 index 000000000..8d0ecfb75 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.batchnorm\_to\_affine module +================================================ + +.. automodule:: finn.transformation.batchnorm_to_affine + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt new file mode 100644 index 000000000..dc34f4def --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.bipolar\_to\_xnor module +============================================ + +.. automodule:: finn.transformation.bipolar_to_xnor + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fold_constants.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fold_constants.rst.txt new file mode 100644 index 000000000..792f8bfe0 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fold_constants.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fold\_constants module +========================================== + +.. automodule:: finn.transformation.fold_constants + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt new file mode 100644 index 000000000..38cc49897 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.cleanup module +=============================================== + +.. automodule:: finn.transformation.fpgadataflow.cleanup + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt new file mode 100644 index 000000000..158ad7602 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.codegen\_ipgen module +====================================================== + +.. automodule:: finn.transformation.fpgadataflow.codegen_ipgen + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt new file mode 100644 index 000000000..d3f7434e3 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.codegen\_ipstitch module +========================================================= + +.. automodule:: finn.transformation.fpgadataflow.codegen_ipstitch + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt new file mode 100644 index 000000000..28796da29 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.codegen\_npysim module +======================================================= + +.. automodule:: finn.transformation.fpgadataflow.codegen_npysim + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt new file mode 100644 index 000000000..3d36a046b --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.compile module +=============================================== + +.. automodule:: finn.transformation.fpgadataflow.compile + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt new file mode 100644 index 000000000..0ae11a41b --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.convert\_to\_hls\_layers module +================================================================ + +.. automodule:: finn.transformation.fpgadataflow.convert_to_hls_layers + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt new file mode 100644 index 000000000..4827fd5b2 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.create\_dataflow\_partition module +=================================================================== + +.. automodule:: finn.transformation.fpgadataflow.create_dataflow_partition + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt new file mode 100644 index 000000000..47af9049f --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.hlssynth\_ipgen module +======================================================= + +.. automodule:: finn.transformation.fpgadataflow.hlssynth_ipgen + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt new file mode 100644 index 000000000..d4bd00b8c --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.insert\_tlastmarker module +=========================================================== + +.. automodule:: finn.transformation.fpgadataflow.insert_tlastmarker + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt new file mode 100644 index 000000000..130c91989 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.make\_deployment module +======================================================== + +.. automodule:: finn.transformation.fpgadataflow.make_deployment + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt new file mode 100644 index 000000000..5238f0846 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.make\_pynq\_driver module +========================================================== + +.. automodule:: finn.transformation.fpgadataflow.make_pynq_driver + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt new file mode 100644 index 000000000..1d040887f --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.make\_pynq\_proj module +======================================================== + +.. automodule:: finn.transformation.fpgadataflow.make_pynq_proj + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.rst.txt index 435eacf2c..f99673391 100644 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.rst.txt +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.rst.txt @@ -4,126 +4,23 @@ finn.transformation.fpgadataflow package Submodules ---------- -finn.transformation.fpgadataflow.cleanup module ------------------------------------------------ - -.. automodule:: finn.transformation.fpgadataflow.cleanup - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.codegen\_ipgen module ------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.codegen_ipgen - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.codegen\_ipstitch module ---------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.codegen_ipstitch - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.codegen\_npysim module -------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.codegen_npysim - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.compile module ------------------------------------------------ - -.. automodule:: finn.transformation.fpgadataflow.compile - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.convert\_to\_hls\_layers module ----------------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.convert_to_hls_layers - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.create\_dataflow\_partition module -------------------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.create_dataflow_partition - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.hlssynth\_ipgen module -------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.hlssynth_ipgen - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.insert\_tlastmarker module ------------------------------------------------------------ - -.. automodule:: finn.transformation.fpgadataflow.insert_tlastmarker - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.make\_deployment module --------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.make_deployment - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.make\_pynq\_driver module ----------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.make_pynq_driver - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.make\_pynq\_proj module --------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.make_pynq_proj - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.set\_exec\_mode module -------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.set_exec_mode - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.synth\_pynq\_proj module ---------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.synth_pynq_proj - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.templates module -------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.templates - :members: - :undoc-members: - :show-inheritance: - +.. toctree:: + + finn.transformation.fpgadataflow.cleanup + finn.transformation.fpgadataflow.codegen_ipgen + finn.transformation.fpgadataflow.codegen_ipstitch + finn.transformation.fpgadataflow.codegen_npysim + finn.transformation.fpgadataflow.compile + finn.transformation.fpgadataflow.convert_to_hls_layers + finn.transformation.fpgadataflow.create_dataflow_partition + finn.transformation.fpgadataflow.hlssynth_ipgen + finn.transformation.fpgadataflow.insert_tlastmarker + finn.transformation.fpgadataflow.make_deployment + finn.transformation.fpgadataflow.make_pynq_driver + finn.transformation.fpgadataflow.make_pynq_proj + finn.transformation.fpgadataflow.set_exec_mode + finn.transformation.fpgadataflow.synth_pynq_proj + finn.transformation.fpgadataflow.templates Module contents --------------- diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt new file mode 100644 index 000000000..7affa78b4 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.set\_exec\_mode module +======================================================= + +.. automodule:: finn.transformation.fpgadataflow.set_exec_mode + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt new file mode 100644 index 000000000..e902991a6 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.synth\_pynq\_proj module +========================================================= + +.. automodule:: finn.transformation.fpgadataflow.synth_pynq_proj + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt new file mode 100644 index 000000000..a62f37783 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.templates module +================================================= + +.. automodule:: finn.transformation.fpgadataflow.templates + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.general.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.general.rst.txt new file mode 100644 index 000000000..bfae28100 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.general.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.general module +================================== + +.. automodule:: finn.transformation.general + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_datatypes.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_datatypes.rst.txt new file mode 100644 index 000000000..939d15521 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_datatypes.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.infer\_datatypes module +=========================================== + +.. automodule:: finn.transformation.infer_datatypes + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_shapes.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_shapes.rst.txt new file mode 100644 index 000000000..946955706 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_shapes.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.infer\_shapes module +======================================== + +.. automodule:: finn.transformation.infer_shapes + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.rst.txt index 172f6e300..da9618ed6 100644 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.rst.txt +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.rst.txt @@ -12,54 +12,14 @@ Subpackages Submodules ---------- -finn.transformation.batchnorm\_to\_affine module ------------------------------------------------- - -.. automodule:: finn.transformation.batchnorm_to_affine - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.bipolar\_to\_xnor module --------------------------------------------- - -.. automodule:: finn.transformation.bipolar_to_xnor - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fold\_constants module ------------------------------------------- - -.. automodule:: finn.transformation.fold_constants - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.general module ----------------------------------- - -.. automodule:: finn.transformation.general - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.infer\_datatypes module -------------------------------------------- - -.. automodule:: finn.transformation.infer_datatypes - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.infer\_shapes module ----------------------------------------- - -.. automodule:: finn.transformation.infer_shapes - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.transformation.batchnorm_to_affine + finn.transformation.bipolar_to_xnor + finn.transformation.fold_constants + finn.transformation.general + finn.transformation.infer_datatypes + finn.transformation.infer_shapes Module contents --------------- diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt new file mode 100644 index 000000000..597a98944 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.streamline.absorb module +============================================ + +.. automodule:: finn.transformation.streamline.absorb + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt new file mode 100644 index 000000000..a15f72aea --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.streamline.collapse\_repeated module +======================================================== + +.. automodule:: finn.transformation.streamline.collapse_repeated + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.reorder.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.reorder.rst.txt new file mode 100644 index 000000000..ac969e132 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.reorder.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.streamline.reorder module +============================================= + +.. automodule:: finn.transformation.streamline.reorder + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt new file mode 100644 index 000000000..031c65d07 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.streamline.round\_thresholds module +======================================================= + +.. automodule:: finn.transformation.streamline.round_thresholds + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.rst.txt index 33e593095..5b3a88384 100644 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.rst.txt +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.rst.txt @@ -4,46 +4,13 @@ finn.transformation.streamline package Submodules ---------- -finn.transformation.streamline.absorb module --------------------------------------------- - -.. automodule:: finn.transformation.streamline.absorb - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.streamline.collapse\_repeated module --------------------------------------------------------- - -.. automodule:: finn.transformation.streamline.collapse_repeated - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.streamline.reorder module ---------------------------------------------- - -.. automodule:: finn.transformation.streamline.reorder - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.streamline.round\_thresholds module -------------------------------------------------------- - -.. automodule:: finn.transformation.streamline.round_thresholds - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.streamline.sign\_to\_thres module ------------------------------------------------------ - -.. automodule:: finn.transformation.streamline.sign_to_thres - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.transformation.streamline.absorb + finn.transformation.streamline.collapse_repeated + finn.transformation.streamline.reorder + finn.transformation.streamline.round_thresholds + finn.transformation.streamline.sign_to_thres Module contents --------------- diff --git a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt new file mode 100644 index 000000000..166717eb3 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt @@ -0,0 +1,7 @@ +finn.transformation.streamline.sign\_to\_thres module +===================================================== + +.. automodule:: finn.transformation.streamline.sign_to_thres + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.basic.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.basic.rst.txt new file mode 100644 index 000000000..10e8e1ac1 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.util.basic.rst.txt @@ -0,0 +1,7 @@ +finn.util.basic module +====================== + +.. automodule:: finn.util.basic + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.data_packing.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.data_packing.rst.txt new file mode 100644 index 000000000..6a39cc14b --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.util.data_packing.rst.txt @@ -0,0 +1,7 @@ +finn.util.data\_packing module +============================== + +.. automodule:: finn.util.data_packing + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.fpgadataflow.rst.txt new file mode 100644 index 000000000..3472ed477 --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.util.fpgadataflow.rst.txt @@ -0,0 +1,7 @@ +finn.util.fpgadataflow module +============================= + +.. automodule:: finn.util.fpgadataflow + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.onnx.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.onnx.rst.txt new file mode 100644 index 000000000..057cb07ca --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.util.onnx.rst.txt @@ -0,0 +1,7 @@ +finn.util.onnx module +===================== + +.. automodule:: finn.util.onnx + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.rst.txt index 1c85bcd44..c66d189b3 100644 --- a/docs/finn/_build/html/_sources/source_code/finn.util.rst.txt +++ b/docs/finn/_build/html/_sources/source_code/finn.util.rst.txt @@ -4,46 +4,13 @@ finn.util package Submodules ---------- -finn.util.basic module ----------------------- - -.. automodule:: finn.util.basic - :members: - :undoc-members: - :show-inheritance: - -finn.util.data\_packing module ------------------------------- - -.. automodule:: finn.util.data_packing - :members: - :undoc-members: - :show-inheritance: - -finn.util.fpgadataflow module ------------------------------ - -.. automodule:: finn.util.fpgadataflow - :members: - :undoc-members: - :show-inheritance: - -finn.util.onnx module ---------------------- - -.. automodule:: finn.util.onnx - :members: - :undoc-members: - :show-inheritance: - -finn.util.test module ---------------------- - -.. automodule:: finn.util.test - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.util.basic + finn.util.data_packing + finn.util.fpgadataflow + finn.util.onnx + finn.util.test Module contents --------------- diff --git a/docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt new file mode 100644 index 000000000..3fe1bc15e --- /dev/null +++ b/docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt @@ -0,0 +1,7 @@ +finn.util.test module +===================== + +.. automodule:: finn.util.test + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/_build/html/genindex.html b/docs/finn/_build/html/genindex.html index e6f72ed0b..3de735225 100644 --- a/docs/finn/_build/html/genindex.html +++ b/docs/finn/_build/html/genindex.html @@ -173,90 +173,90 @@ <h2 id="A">A</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul">Absorb1BitMulIntoMatMul (class in finn.transformation.streamline.absorb)</a> + <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul">Absorb1BitMulIntoMatMul (class in finn.transformation.streamline.absorb)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold">AbsorbAddIntoMultiThreshold (class in finn.transformation.streamline.absorb)</a> + <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold">AbsorbAddIntoMultiThreshold (class in finn.transformation.streamline.absorb)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold">AbsorbMulIntoMultiThreshold (class in finn.transformation.streamline.absorb)</a> + <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold">AbsorbMulIntoMultiThreshold (class in finn.transformation.streamline.absorb)</a> </li> - <li><a href="source_code/finn.analysis.html#finn.analysis.topology.all_tensors_f32">all_tensors_f32() (in module finn.analysis.topology)</a> + <li><a href="source_code/finn.analysis.topology.html#finn.analysis.topology.all_tensors_f32">all_tensors_f32() (in module finn.analysis.topology)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.allowed">allowed() (finn.core.datatype.DataType method)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.allowed">allowed() (finn.core.datatype.DataType method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.analysis">analysis() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.analysis">analysis() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.basic.CppBuilder.append_includes">append_includes() (finn.util.basic.CppBuilder method)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.CppBuilder.append_includes">append_includes() (finn.util.basic.CppBuilder method)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.basic.CppBuilder.append_sources">append_sources() (finn.util.basic.CppBuilder method)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.CppBuilder.append_sources">append_sources() (finn.util.basic.CppBuilder method)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.fpgadataflow.IPGenBuilder.append_tcl">append_tcl() (finn.util.fpgadataflow.IPGenBuilder method)</a> + <li><a href="source_code/finn.util.fpgadataflow.html#finn.util.fpgadataflow.IPGenBuilder.append_tcl">append_tcl() (finn.util.fpgadataflow.IPGenBuilder method)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply">apply() (finn.transformation.batchnorm_to_affine.BatchNormToAffine method)</a> + <li><a href="source_code/finn.transformation.batchnorm_to_affine.html#finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply">apply() (finn.transformation.batchnorm_to_affine.BatchNormToAffine method)</a> <ul> - <li><a href="source_code/finn.transformation.html#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply">(finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount method)</a> + <li><a href="source_code/finn.transformation.bipolar_to_xnor.html#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply">(finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount method)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.fold_constants.FoldConstants.apply">(finn.transformation.fold_constants.FoldConstants method)</a> + <li><a href="source_code/finn.transformation.fold_constants.html#finn.transformation.fold_constants.FoldConstants.apply">(finn.transformation.fold_constants.FoldConstants method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.cleanup.CleanUp.apply">(finn.transformation.fpgadataflow.cleanup.CleanUp method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.cleanup.html#finn.transformation.fpgadataflow.cleanup.CleanUp.apply">(finn.transformation.fpgadataflow.cleanup.CleanUp method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply">(finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipgen.html#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply">(finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply">(finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply">(finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply">(finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.codegen_npysim.html#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply">(finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.compile.Compile.apply">(finn.transformation.fpgadataflow.compile.Compile method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.compile.html#finn.transformation.fpgadataflow.compile.Compile.apply">(finn.transformation.fpgadataflow.compile.Compile method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply">(finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply">(finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply">(finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply">(finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply">(finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply">(finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply">(finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply">(finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply">(finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.make_deployment.html#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply">(finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply">(finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_driver.html#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply">(finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply">(finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_proj.html#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply">(finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply">(finn.transformation.fpgadataflow.set_exec_mode.SetExecMode method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.set_exec_mode.html#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply">(finn.transformation.fpgadataflow.set_exec_mode.SetExecMode method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply">(finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject method)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply">(finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject method)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.general.ConvertSubToAdd.apply">(finn.transformation.general.ConvertSubToAdd method)</a> + <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.ConvertSubToAdd.apply">(finn.transformation.general.ConvertSubToAdd method)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveRandomTensorNames.apply">(finn.transformation.general.GiveRandomTensorNames method)</a> + <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveRandomTensorNames.apply">(finn.transformation.general.GiveRandomTensorNames method)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveReadableTensorNames.apply">(finn.transformation.general.GiveReadableTensorNames method)</a> + <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveReadableTensorNames.apply">(finn.transformation.general.GiveReadableTensorNames method)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveUniqueNodeNames.apply">(finn.transformation.general.GiveUniqueNodeNames method)</a> + <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveUniqueNodeNames.apply">(finn.transformation.general.GiveUniqueNodeNames method)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.infer_datatypes.InferDataTypes.apply">(finn.transformation.infer_datatypes.InferDataTypes method)</a> + <li><a href="source_code/finn.transformation.infer_datatypes.html#finn.transformation.infer_datatypes.InferDataTypes.apply">(finn.transformation.infer_datatypes.InferDataTypes method)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.infer_shapes.InferShapes.apply">(finn.transformation.infer_shapes.InferShapes method)</a> + <li><a href="source_code/finn.transformation.infer_shapes.html#finn.transformation.infer_shapes.InferShapes.apply">(finn.transformation.infer_shapes.InferShapes method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply">(finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul method)</a> + <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply">(finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply">(finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold method)</a> + <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply">(finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply">(finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold method)</a> + <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply">(finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply">(finn.transformation.streamline.absorb.FactorOutMulSignMagnitude method)</a> + <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply">(finn.transformation.streamline.absorb.FactorOutMulSignMagnitude method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply">(finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp method)</a> + <li><a href="source_code/finn.transformation.streamline.collapse_repeated.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply">(finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveAddPastMul.apply">(finn.transformation.streamline.reorder.MoveAddPastMul method)</a> + <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveAddPastMul.apply">(finn.transformation.streamline.reorder.MoveAddPastMul method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply">(finn.transformation.streamline.reorder.MoveScalarAddPastMatMul method)</a> + <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply">(finn.transformation.streamline.reorder.MoveScalarAddPastMatMul method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply">(finn.transformation.streamline.reorder.MoveScalarMulPastMatMul method)</a> + <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply">(finn.transformation.streamline.reorder.MoveScalarMulPastMatMul method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply">(finn.transformation.streamline.round_thresholds.RoundAndClipThresholds method)</a> + <li><a href="source_code/finn.transformation.streamline.round_thresholds.html#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply">(finn.transformation.streamline.round_thresholds.RoundAndClipThresholds method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply">(finn.transformation.streamline.sign_to_thres.ConvertSignToThres method)</a> + <li><a href="source_code/finn.transformation.streamline.sign_to_thres.html#finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply">(finn.transformation.streamline.sign_to_thres.ConvertSignToThres method)</a> </li> <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.Streamline.apply">(finn.transformation.streamline.Streamline method)</a> </li> @@ -265,7 +265,7 @@ </ul></li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.util.html#finn.util.data_packing.array2hexstring">array2hexstring() (in module finn.util.data_packing)</a> + <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.array2hexstring">array2hexstring() (in module finn.util.data_packing)</a> </li> </ul></td> </tr></table> @@ -273,42 +273,42 @@ <h2 id="B">B</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.transformation.html#finn.transformation.batchnorm_to_affine.BatchNormToAffine">BatchNormToAffine (class in finn.transformation.batchnorm_to_affine)</a> + <li><a href="source_code/finn.transformation.batchnorm_to_affine.html#finn.transformation.batchnorm_to_affine.BatchNormToAffine">BatchNormToAffine (class in finn.transformation.batchnorm_to_affine)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.BINARY">BINARY (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.BINARY">BINARY (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.BIPOLAR">BIPOLAR (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.BIPOLAR">BIPOLAR (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.bitwidth">bitwidth() (finn.core.datatype.DataType method)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.bitwidth">bitwidth() (finn.core.datatype.DataType method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction">blackboxfunction() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction">blackboxfunction() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.blackboxfunction">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation">bram_estimation() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation">bram_estimation() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.bram_estimation">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> </ul></li> - <li><a href="source_code/finn.util.html#finn.util.basic.CppBuilder.build">build() (finn.util.basic.CppBuilder method)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.CppBuilder.build">build() (finn.util.basic.CppBuilder method)</a> <ul> - <li><a href="source_code/finn.util.html#finn.util.fpgadataflow.IPGenBuilder.build">(finn.util.fpgadataflow.IPGenBuilder method)</a> + <li><a href="source_code/finn.util.fpgadataflow.html#finn.util.fpgadataflow.IPGenBuilder.build">(finn.util.fpgadataflow.IPGenBuilder method)</a> </li> </ul></li> </ul></td> @@ -317,55 +317,55 @@ <h2 id="C">C</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem">calc_tmem() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem">calc_tmem() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem">calc_wmem() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem">calc_wmem() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.basic.calculate_signed_dot_prod_range">calculate_signed_dot_prod_range() (in module finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.calculate_signed_dot_prod_range">calculate_signed_dot_prod_range() (in module finn.util.basic)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified">check_all_tensor_shapes_specified() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified">check_all_tensor_shapes_specified() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.check_compatibility">check_compatibility() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.check_compatibility">check_compatibility() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.cleanup.CleanUp">CleanUp (class in finn.transformation.fpgadataflow.cleanup)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.cleanup.html#finn.transformation.fpgadataflow.cleanup.CleanUp">CleanUp (class in finn.transformation.fpgadataflow.cleanup)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_ipgen">code_generation_ipgen() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_npysim">code_generation_npysim() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen">CodeGen_ipgen (class in finn.transformation.fpgadataflow.codegen_ipgen)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipgen.html#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen">CodeGen_ipgen (class in finn.transformation.fpgadataflow.codegen_ipgen)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch">CodeGen_ipstitch (class in finn.transformation.fpgadataflow.codegen_ipstitch)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch">CodeGen_ipstitch (class in finn.transformation.fpgadataflow.codegen_ipstitch)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim">CodeGen_npysim (class in finn.transformation.fpgadataflow.codegen_npysim)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.codegen_npysim.html#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim">CodeGen_npysim (class in finn.transformation.fpgadataflow.codegen_npysim)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd">CollapseRepeatedAdd (class in finn.transformation.streamline.collapse_repeated)</a> + <li><a href="source_code/finn.transformation.streamline.collapse_repeated.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd">CollapseRepeatedAdd (class in finn.transformation.streamline.collapse_repeated)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul">CollapseRepeatedMul (class in finn.transformation.streamline.collapse_repeated)</a> + <li><a href="source_code/finn.transformation.streamline.collapse_repeated.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul">CollapseRepeatedMul (class in finn.transformation.streamline.collapse_repeated)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp">CollapseRepeatedOp (class in finn.transformation.streamline.collapse_repeated)</a> + <li><a href="source_code/finn.transformation.streamline.collapse_repeated.html#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp">CollapseRepeatedOp (class in finn.transformation.streamline.collapse_repeated)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.compare">compare() (in module finn.custom_op.multithreshold)</a> + <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.compare">compare() (in module finn.custom_op.multithreshold)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.onnx_exec.compare_execution">compare_execution() (in module finn.core.onnx_exec)</a> + <li><a href="source_code/finn.core.onnx_exec.html#finn.core.onnx_exec.compare_execution">compare_execution() (in module finn.core.onnx_exec)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.compile.Compile">Compile (class in finn.transformation.fpgadataflow.compile)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.compile.html#finn.transformation.fpgadataflow.compile.Compile">Compile (class in finn.transformation.fpgadataflow.compile)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.compile_singlenode_code">compile_singlenode_code() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount">ConvertBipolarMatMulToXnorPopcount (class in finn.transformation.bipolar_to_xnor)</a> + <li><a href="source_code/finn.transformation.bipolar_to_xnor.html#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount">ConvertBipolarMatMulToXnorPopcount (class in finn.transformation.bipolar_to_xnor)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.sign_to_thres.ConvertSignToThres">ConvertSignToThres (class in finn.transformation.streamline.sign_to_thres)</a> + <li><a href="source_code/finn.transformation.streamline.sign_to_thres.html#finn.transformation.streamline.sign_to_thres.ConvertSignToThres">ConvertSignToThres (class in finn.transformation.streamline.sign_to_thres)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.general.ConvertSubToAdd">ConvertSubToAdd (class in finn.transformation.general)</a> + <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.ConvertSubToAdd">ConvertSubToAdd (class in finn.transformation.general)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator">ConvolutionInputGenerator (class in finn.custom_op.fpgadataflow.convolutioninputgenerator)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator">ConvolutionInputGenerator (class in finn.custom_op.fpgadataflow.convolutioninputgenerator)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.basic.CppBuilder">CppBuilder (class in finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.CppBuilder">CppBuilder (class in finn.util.basic)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition">CreateDataflowPartition (class in finn.transformation.fpgadataflow.create_dataflow_partition)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition">CreateDataflowPartition (class in finn.transformation.fpgadataflow.create_dataflow_partition)</a> </li> <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp">CustomOp (class in finn.custom_op)</a> </li> @@ -375,46 +375,46 @@ <h2 id="D">D</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm">dataoutstrm() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm">dataoutstrm() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.dataoutstrm">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType">DataType (class in finn.core.datatype)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType">DataType (class in finn.core.datatype)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines">defines() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines">defines() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.defines">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ">DeployToPYNQ (class in finn.transformation.fpgadataflow.make_deployment)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.make_deployment.html#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ">DeployToPYNQ (class in finn.transformation.fpgadataflow.make_deployment)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute">docompute() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute">docompute() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.docompute">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.dynamic_input_to_npy">dynamic_input_to_npy() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> @@ -427,33 +427,33 @@ <td style="width: 33%; vertical-align: top;"><ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.exec_precompiled_singlenode_model">exec_precompiled_singlenode_model() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.execute_custom_node.execute_custom_node">execute_custom_node() (in module finn.core.execute_custom_node)</a> + <li><a href="source_code/finn.core.execute_custom_node.html#finn.core.execute_custom_node.execute_custom_node">execute_custom_node() (in module finn.core.execute_custom_node)</a> </li> <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.execute_node">execute_node() (finn.custom_op.CustomOp method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.execute_node">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold.execute_node">(finn.custom_op.multithreshold.MultiThreshold method)</a> + <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold.execute_node">(finn.custom_op.multithreshold.MultiThreshold method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a> + <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a> + <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.onnx_exec.execute_node">(in module finn.core.onnx_exec)</a> + <li><a href="source_code/finn.core.onnx_exec.html#finn.core.onnx_exec.execute_node">(in module finn.core.onnx_exec)</a> </li> </ul></li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.core.html#finn.core.onnx_exec.execute_onnx">execute_onnx() (in module finn.core.onnx_exec)</a> + <li><a href="source_code/finn.core.onnx_exec.html#finn.core.onnx_exec.execute_onnx">execute_onnx() (in module finn.core.onnx_exec)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.onnx_exec.execute_onnx_and_make_model">execute_onnx_and_make_model() (in module finn.core.onnx_exec)</a> + <li><a href="source_code/finn.core.onnx_exec.html#finn.core.onnx_exec.execute_onnx_and_make_model">execute_onnx_and_make_model() (in module finn.core.onnx_exec)</a> </li> </ul></td> </tr></table> @@ -461,11 +461,11 @@ <h2 id="F">F</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude">FactorOutMulSignMagnitude (class in finn.transformation.streamline.absorb)</a> + <li><a href="source_code/finn.transformation.streamline.absorb.html#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude">FactorOutMulSignMagnitude (class in finn.transformation.streamline.absorb)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.find_consumer">find_consumer() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.find_consumer">find_consumer() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.find_producer">find_producer() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.find_producer">find_producer() (finn.core.modelwrapper.ModelWrapper method)</a> </li> <li><a href="source_code/finn.html#module-finn">finn (module)</a> </li> @@ -473,127 +473,127 @@ </li> <li><a href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow">finn.analysis.fpgadataflow (module)</a> </li> - <li><a href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation (module)</a> + <li><a href="source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation (module)</a> </li> - <li><a href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation (module)</a> + <li><a href="source_code/finn.analysis.fpgadataflow.res_estimation.html#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation (module)</a> </li> - <li><a href="source_code/finn.analysis.html#module-finn.analysis.topology">finn.analysis.topology (module)</a> + <li><a href="source_code/finn.analysis.topology.html#module-finn.analysis.topology">finn.analysis.topology (module)</a> </li> - <li><a href="source_code/finn.analysis.html#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes (module)</a> + <li><a href="source_code/finn.analysis.verify_custom_nodes.html#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes (module)</a> </li> <li><a href="source_code/finn.core.html#module-finn.core">finn.core (module)</a> </li> - <li><a href="source_code/finn.core.html#module-finn.core.datatype">finn.core.datatype (module)</a> + <li><a href="source_code/finn.core.datatype.html#module-finn.core.datatype">finn.core.datatype (module)</a> </li> - <li><a href="source_code/finn.core.html#module-finn.core.execute_custom_node">finn.core.execute_custom_node (module)</a> + <li><a href="source_code/finn.core.execute_custom_node.html#module-finn.core.execute_custom_node">finn.core.execute_custom_node (module)</a> </li> - <li><a href="source_code/finn.core.html#module-finn.core.modelwrapper">finn.core.modelwrapper (module)</a> + <li><a href="source_code/finn.core.modelwrapper.html#module-finn.core.modelwrapper">finn.core.modelwrapper (module)</a> </li> - <li><a href="source_code/finn.core.html#module-finn.core.onnx_exec">finn.core.onnx_exec (module)</a> + <li><a href="source_code/finn.core.onnx_exec.html#module-finn.core.onnx_exec">finn.core.onnx_exec (module)</a> </li> - <li><a href="source_code/finn.core.html#module-finn.core.remote_exec">finn.core.remote_exec (module)</a> + <li><a href="source_code/finn.core.remote_exec.html#module-finn.core.remote_exec">finn.core.remote_exec (module)</a> </li> - <li><a href="source_code/finn.core.html#module-finn.core.rtlsim_exec">finn.core.rtlsim_exec (module)</a> + <li><a href="source_code/finn.core.rtlsim_exec.html#module-finn.core.rtlsim_exec">finn.core.rtlsim_exec (module)</a> </li> <li><a href="source_code/finn.custom_op.html#module-finn.custom_op">finn.custom_op (module)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow">finn.custom_op.fpgadataflow (module)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator (module)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator (module)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch (module)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch (module)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch (module)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch (module)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates (module)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.templates.html#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates (module)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker (module)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker (module)</a> </li> - <li><a href="source_code/finn.custom_op.html#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold (module)</a> + <li><a href="source_code/finn.custom_op.multithreshold.html#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold (module)</a> </li> - <li><a href="source_code/finn.custom_op.html#module-finn.custom_op.registry">finn.custom_op.registry (module)</a> + <li><a href="source_code/finn.custom_op.registry.html#module-finn.custom_op.registry">finn.custom_op.registry (module)</a> </li> - <li><a href="source_code/finn.custom_op.html#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition (module)</a> + <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition (module)</a> </li> - <li><a href="source_code/finn.custom_op.html#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount (module)</a> + <li><a href="source_code/finn.custom_op.xnorpopcount.html#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount (module)</a> </li> <li><a href="source_code/finn.transformation.html#module-finn.transformation">finn.transformation (module)</a> </li> - <li><a href="source_code/finn.transformation.html#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine (module)</a> + <li><a href="source_code/finn.transformation.batchnorm_to_affine.html#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine (module)</a> </li> - <li><a href="source_code/finn.transformation.html#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor (module)</a> + <li><a href="source_code/finn.transformation.bipolar_to_xnor.html#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor (module)</a> </li> - <li><a href="source_code/finn.transformation.html#module-finn.transformation.fold_constants">finn.transformation.fold_constants (module)</a> + <li><a href="source_code/finn.transformation.fold_constants.html#module-finn.transformation.fold_constants">finn.transformation.fold_constants (module)</a> </li> <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow">finn.transformation.fpgadataflow (module)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.cleanup.html#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipgen.html#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.codegen_npysim.html#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.compile.html#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.make_deployment.html#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_driver.html#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_proj.html#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.set_exec_mode">finn.transformation.fpgadataflow.set_exec_mode (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.set_exec_mode.html#module-finn.transformation.fpgadataflow.set_exec_mode">finn.transformation.fpgadataflow.set_exec_mode (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj (module)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates (module)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.templates.html#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates (module)</a> </li> - <li><a href="source_code/finn.transformation.html#module-finn.transformation.general">finn.transformation.general (module)</a> + <li><a href="source_code/finn.transformation.general.html#module-finn.transformation.general">finn.transformation.general (module)</a> </li> - <li><a href="source_code/finn.transformation.html#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes (module)</a> + <li><a href="source_code/finn.transformation.infer_datatypes.html#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes (module)</a> </li> - <li><a href="source_code/finn.transformation.html#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes (module)</a> + <li><a href="source_code/finn.transformation.infer_shapes.html#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes (module)</a> </li> <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline">finn.transformation.streamline (module)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb (module)</a> + <li><a href="source_code/finn.transformation.streamline.absorb.html#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb (module)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated (module)</a> + <li><a href="source_code/finn.transformation.streamline.collapse_repeated.html#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated (module)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder (module)</a> + <li><a href="source_code/finn.transformation.streamline.reorder.html#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder (module)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds (module)</a> + <li><a href="source_code/finn.transformation.streamline.round_thresholds.html#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds (module)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres (module)</a> + <li><a href="source_code/finn.transformation.streamline.sign_to_thres.html#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres (module)</a> </li> <li><a href="source_code/finn.util.html#module-finn.util">finn.util (module)</a> </li> - <li><a href="source_code/finn.util.html#module-finn.util.basic">finn.util.basic (module)</a> + <li><a href="source_code/finn.util.basic.html#module-finn.util.basic">finn.util.basic (module)</a> </li> - <li><a href="source_code/finn.util.html#module-finn.util.data_packing">finn.util.data_packing (module)</a> + <li><a href="source_code/finn.util.data_packing.html#module-finn.util.data_packing">finn.util.data_packing (module)</a> </li> - <li><a href="source_code/finn.util.html#module-finn.util.fpgadataflow">finn.util.fpgadataflow (module)</a> + <li><a href="source_code/finn.util.fpgadataflow.html#module-finn.util.fpgadataflow">finn.util.fpgadataflow (module)</a> </li> - <li><a href="source_code/finn.util.html#module-finn.util.onnx">finn.util.onnx (module)</a> + <li><a href="source_code/finn.util.onnx.html#module-finn.util.onnx">finn.util.onnx (module)</a> </li> - <li><a href="source_code/finn.util.html#module-finn.util.test">finn.util.test (module)</a> + <li><a href="source_code/finn.util.test.html#module-finn.util.test">finn.util.test (module)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.data_packing.finnpy_to_packed_bytearray">finnpy_to_packed_bytearray() (in module finn.util.data_packing)</a> + <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.finnpy_to_packed_bytearray">finnpy_to_packed_bytearray() (in module finn.util.data_packing)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.FLOAT32">FLOAT32 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.FLOAT32">FLOAT32 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.fold_constants.FoldConstants">FoldConstants (class in finn.transformation.fold_constants)</a> + <li><a href="source_code/finn.transformation.fold_constants.html#finn.transformation.fold_constants.FoldConstants">FoldConstants (class in finn.transformation.fold_constants)</a> </li> </ul></td> </tr></table> @@ -601,159 +601,159 @@ <h2 id="G">G</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.util.html#finn.util.basic.gen_finn_dt_tensor">gen_finn_dt_tensor() (in module finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.gen_finn_dt_tensor">gen_finn_dt_tensor() (in module finn.util.basic)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.generate_params">generate_params() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> </ul></li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_all_tensor_names">get_all_tensor_names() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_all_tensor_names">get_all_tensor_names() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.basic.get_by_name">get_by_name() (in module finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.get_by_name">get_by_name() (in module finn.util.basic)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.basic.get_finn_root">get_finn_root() (in module finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.get_finn_root">get_finn_root() (in module finn.util.basic)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_input_shape">get_folded_input_shape() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_output_shape">get_folded_output_shape() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor">get_hls_compatible_threshold_tensor() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor">get_hls_compatible_threshold_tensor() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor">get_hls_compatible_weight_tensor() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor">get_hls_compatible_weight_tensor() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.get_hls_datatype_str">get_hls_datatype_str() (finn.core.datatype.DataType method)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.get_hls_datatype_str">get_hls_datatype_str() (finn.core.datatype.DataType method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_initializer">get_initializer() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_initializer">get_initializer() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype">get_input_datatype() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype">get_input_datatype() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> </ul></li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_instream_width">get_instream_width() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_metadata_prop">get_metadata_prop() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_metadata_prop">get_metadata_prop() (finn.core.modelwrapper.ModelWrapper method)</a> </li> <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.get_nodeattr">get_nodeattr() (finn.custom_op.CustomOp method)</a> </li> <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.get_nodeattr_types">get_nodeattr_types() (finn.custom_op.CustomOp method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_nodeattr_types">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types">(finn.custom_op.multithreshold.MultiThreshold method)</a> + <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types">(finn.custom_op.multithreshold.MultiThreshold method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a> + <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a> + <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a> </li> </ul></li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.get_num_possible_values">get_num_possible_values() (finn.core.datatype.DataType method)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.get_num_possible_values">get_num_possible_values() (finn.core.datatype.DataType method)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values">get_number_output_values() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values">get_number_output_values() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_number_output_values">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype">get_output_datatype() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype">get_output_datatype() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> </ul></li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.get_outstream_width">get_outstream_width() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> - <li><a href="source_code/finn.analysis.html#finn.analysis.topology.get_per_tensor_fanouts">get_per_tensor_fanouts() (in module finn.analysis.topology)</a> + <li><a href="source_code/finn.analysis.topology.html#finn.analysis.topology.get_per_tensor_fanouts">get_per_tensor_fanouts() (in module finn.analysis.topology)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.get_smallest_possible">get_smallest_possible() (finn.core.datatype.DataType method)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.get_smallest_possible">get_smallest_possible() (finn.core.datatype.DataType method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width">get_stream_width() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width">get_stream_width() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values">get_template_param_values() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values">get_template_param_values() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_tensor_datatype">get_tensor_datatype() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_tensor_datatype">get_tensor_datatype() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_tensor_fanout">get_tensor_fanout() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_tensor_fanout">get_tensor_fanout() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_tensor_shape">get_tensor_shape() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_tensor_shape">get_tensor_shape() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo">get_tensor_valueinfo() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo">get_tensor_valueinfo() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.test.get_test_model_def_fxn">get_test_model_def_fxn() (in module finn.util.test)</a> + <li><a href="source_code/finn.util.test.html#finn.util.test.get_test_model_def_fxn">get_test_model_def_fxn() (in module finn.util.test)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.test.get_test_model_trained">get_test_model_trained() (in module finn.util.test)</a> + <li><a href="source_code/finn.util.test.html#finn.util.test.get_test_model_trained">get_test_model_trained() (in module finn.util.test)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.test.get_test_model_untrained">get_test_model_untrained() (in module finn.util.test)</a> + <li><a href="source_code/finn.util.test.html#finn.util.test.get_test_model_untrained">get_test_model_untrained() (in module finn.util.test)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.test.get_trained_checkpoint">get_trained_checkpoint() (in module finn.util.test)</a> + <li><a href="source_code/finn.util.test.html#finn.util.test.get_trained_checkpoint">get_trained_checkpoint() (in module finn.util.test)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype">get_weight_datatype() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype">get_weight_datatype() (finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.registry.getCustomOp">getCustomOp() (in module finn.custom_op.registry)</a> + <li><a href="source_code/finn.custom_op.registry.html#finn.custom_op.registry.getCustomOp">getCustomOp() (in module finn.custom_op.registry)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveRandomTensorNames">GiveRandomTensorNames (class in finn.transformation.general)</a> + <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveRandomTensorNames">GiveRandomTensorNames (class in finn.transformation.general)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveReadableTensorNames">GiveReadableTensorNames (class in finn.transformation.general)</a> + <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveReadableTensorNames">GiveReadableTensorNames (class in finn.transformation.general)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.general.GiveUniqueNodeNames">GiveUniqueNodeNames (class in finn.transformation.general)</a> + <li><a href="source_code/finn.transformation.general.html#finn.transformation.general.GiveUniqueNodeNames">GiveUniqueNodeNames (class in finn.transformation.general)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes">global_includes() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes">global_includes() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.global_includes">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.graph">graph() (finn.core.modelwrapper.ModelWrapper property)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.graph">graph() (finn.core.modelwrapper.ModelWrapper property)</a> </li> </ul></td> </tr></table> @@ -761,15 +761,15 @@ <h2 id="H">H</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.util.html#finn.util.data_packing.hexstring2npbytearray">hexstring2npbytearray() (in module finn.util.data_packing)</a> + <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.hexstring2npbytearray">hexstring2npbytearray() (in module finn.util.data_packing)</a> </li> - <li><a href="source_code/finn.analysis.fpgadataflow.html#finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation">hls_synth_res_estimation() (in module finn.analysis.fpgadataflow.hls_synth_res_estimation)</a> + <li><a href="source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html#finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation">hls_synth_res_estimation() (in module finn.analysis.fpgadataflow.hls_synth_res_estimation)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp">HLSCustomOp (class in finn.custom_op.fpgadataflow)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen">HLSSynth_IPGen (class in finn.transformation.fpgadataflow.hlssynth_ipgen)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen">HLSSynth_IPGen (class in finn.transformation.fpgadataflow.hlssynth_ipgen)</a> </li> </ul></td> </tr></table> @@ -780,52 +780,52 @@ <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.infer_node_datatype">infer_node_datatype() (finn.custom_op.CustomOp method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype">(finn.custom_op.multithreshold.MultiThreshold method)</a> + <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype">(finn.custom_op.multithreshold.MultiThreshold method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a> + <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a> + <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a> </li> </ul></li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer">InferBinaryStreamingFCLayer (class in finn.transformation.fpgadataflow.convert_to_hls_layers)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer">InferBinaryStreamingFCLayer (class in finn.transformation.fpgadataflow.convert_to_hls_layers)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.infer_datatypes.InferDataTypes">InferDataTypes (class in finn.transformation.infer_datatypes)</a> + <li><a href="source_code/finn.transformation.infer_datatypes.html#finn.transformation.infer_datatypes.InferDataTypes">InferDataTypes (class in finn.transformation.infer_datatypes)</a> </li> - <li><a href="source_code/finn.transformation.html#finn.transformation.infer_shapes.InferShapes">InferShapes (class in finn.transformation.infer_shapes)</a> + <li><a href="source_code/finn.transformation.infer_shapes.html#finn.transformation.infer_shapes.InferShapes">InferShapes (class in finn.transformation.infer_shapes)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker">InsertTLastMarker (class in finn.transformation.fpgadataflow.insert_tlastmarker)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker">InsertTLastMarker (class in finn.transformation.fpgadataflow.insert_tlastmarker)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT16">INT16 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT16">INT16 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT2">INT2 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT2">INT2 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT3">INT3 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT3">INT3 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT32">INT32 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT32">INT32 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT4">INT4 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT4">INT4 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.INT8">INT8 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.INT8">INT8 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.basic.interleave_matrix_outer_dim_from_partitions">interleave_matrix_outer_dim_from_partitions() (in module finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.interleave_matrix_outer_dim_from_partitions">interleave_matrix_outer_dim_from_partitions() (in module finn.util.basic)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.ipgen_singlenode_code">ipgen_singlenode_code() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.fpgadataflow.IPGenBuilder">IPGenBuilder (class in finn.util.fpgadataflow)</a> + <li><a href="source_code/finn.util.fpgadataflow.html#finn.util.fpgadataflow.IPGenBuilder">IPGenBuilder (class in finn.util.fpgadataflow)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.is_integer">is_integer() (finn.core.datatype.DataType method)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.is_integer">is_integer() (finn.core.datatype.DataType method)</a> </li> - <li><a href="source_code/finn.analysis.html#finn.analysis.topology.is_linear">is_linear() (in module finn.analysis.topology)</a> + <li><a href="source_code/finn.analysis.topology.html#finn.analysis.topology.is_linear">is_linear() (in module finn.analysis.topology)</a> </li> </ul></td> </tr></table> @@ -833,14 +833,14 @@ <h2 id="L">L</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation">lut_estimation() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation">lut_estimation() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.lut_estimation">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> </ul></li> </ul></td> @@ -849,53 +849,53 @@ <h2 id="M">M</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.util.html#finn.util.basic.make_build_dir">make_build_dir() (in module finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.make_build_dir">make_build_dir() (in module finn.util.basic)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.make_empty_exec_context">make_empty_exec_context() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.make_empty_exec_context">make_empty_exec_context() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name">make_new_valueinfo_name() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name">make_new_valueinfo_name() (finn.core.modelwrapper.ModelWrapper method)</a> </li> <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.make_shape_compatible_op">make_shape_compatible_op() (finn.custom_op.CustomOp method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op">(finn.custom_op.multithreshold.MultiThreshold method)</a> + <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op">(finn.custom_op.multithreshold.MultiThreshold method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a> + <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a> + <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a> </li> </ul></li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver">MakePYNQDriver (class in finn.transformation.fpgadataflow.make_pynq_driver)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_driver.html#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver">MakePYNQDriver (class in finn.transformation.fpgadataflow.make_pynq_driver)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject">MakePYNQProject (class in finn.transformation.fpgadataflow.make_pynq_proj)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.make_pynq_proj.html#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject">MakePYNQProject (class in finn.transformation.fpgadataflow.make_pynq_proj)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.max">max() (finn.core.datatype.DataType method)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.max">max() (finn.core.datatype.DataType method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.min">min() (finn.core.datatype.DataType method)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.min">min() (finn.core.datatype.DataType method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.model">model() (finn.core.modelwrapper.ModelWrapper property)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.model">model() (finn.core.modelwrapper.ModelWrapper property)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper">ModelWrapper (class in finn.core.modelwrapper)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper">ModelWrapper (class in finn.core.modelwrapper)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveAddPastMul">MoveAddPastMul (class in finn.transformation.streamline.reorder)</a> + <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveAddPastMul">MoveAddPastMul (class in finn.transformation.streamline.reorder)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul">MoveScalarAddPastMatMul (class in finn.transformation.streamline.reorder)</a> + <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul">MoveScalarAddPastMatMul (class in finn.transformation.streamline.reorder)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul">MoveScalarMulPastMatMul (class in finn.transformation.streamline.reorder)</a> + <li><a href="source_code/finn.transformation.streamline.reorder.html#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul">MoveScalarMulPastMatMul (class in finn.transformation.streamline.reorder)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold">MultiThreshold (class in finn.custom_op.multithreshold)</a> + <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold">MultiThreshold (class in finn.custom_op.multithreshold)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.multithreshold">multithreshold() (in module finn.custom_op.multithreshold)</a> + <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.multithreshold">multithreshold() (in module finn.custom_op.multithreshold)</a> </li> </ul></td> </tr></table> @@ -903,19 +903,19 @@ <h2 id="N">N</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.analysis.html#finn.analysis.topology.node_inputs_in_expected_order">node_inputs_in_expected_order() (in module finn.analysis.topology)</a> + <li><a href="source_code/finn.analysis.topology.html#finn.analysis.topology.node_inputs_in_expected_order">node_inputs_in_expected_order() (in module finn.analysis.topology)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.node_res_estimation">node_res_estimation() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.data_packing.npbytearray2hexstring">npbytearray2hexstring() (in module finn.util.data_packing)</a> + <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.npbytearray2hexstring">npbytearray2hexstring() (in module finn.util.data_packing)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.npy_to_dynamic_output">npy_to_dynamic_output() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.data_packing.npy_to_rtlsim_input">npy_to_rtlsim_input() (in module finn.util.data_packing)</a> + <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.npy_to_rtlsim_input">npy_to_rtlsim_input() (in module finn.util.data_packing)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.data_packing.numpy_to_hls_code">numpy_to_hls_code() (in module finn.util.data_packing)</a> + <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.numpy_to_hls_code">numpy_to_hls_code() (in module finn.util.data_packing)</a> </li> </ul></td> </tr></table> @@ -923,27 +923,27 @@ <h2 id="P">P</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.util.html#finn.util.data_packing.pack_innermost_dim_as_hex_string">pack_innermost_dim_as_hex_string() (in module finn.util.data_packing)</a> + <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.pack_innermost_dim_as_hex_string">pack_innermost_dim_as_hex_string() (in module finn.util.data_packing)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.data_packing.packed_bytearray_to_finnpy">packed_bytearray_to_finnpy() (in module finn.util.data_packing)</a> + <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.packed_bytearray_to_finnpy">packed_bytearray_to_finnpy() (in module finn.util.data_packing)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.basic.pad_tensor_to_multiple_of">pad_tensor_to_multiple_of() (in module finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.pad_tensor_to_multiple_of">pad_tensor_to_multiple_of() (in module finn.util.basic)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas">pragmas() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas">pragmas() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.pragmas">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.util.html#finn.util.fpgadataflow.pyverilate_stitched_ip">pyverilate_stitched_ip() (in module finn.util.fpgadataflow)</a> + <li><a href="source_code/finn.util.fpgadataflow.html#finn.util.fpgadataflow.pyverilate_stitched_ip">pyverilate_stitched_ip() (in module finn.util.fpgadataflow)</a> </li> </ul></td> </tr></table> @@ -951,41 +951,41 @@ <h2 id="R">R</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.util.html#finn.util.basic.random_string">random_string() (in module finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.random_string">random_string() (in module finn.util.basic)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data">read_npy_data() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data">read_npy_data() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.read_npy_data">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> - <li><a href="source_code/finn.core.html#finn.core.remote_exec.remote_exec">remote_exec() (in module finn.core.remote_exec)</a> + <li><a href="source_code/finn.core.remote_exec.html#finn.core.remote_exec.remote_exec">remote_exec() (in module finn.core.remote_exec)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.basic.remove_by_name">remove_by_name() (in module finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.remove_by_name">remove_by_name() (in module finn.util.basic)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.rename_tensor">rename_tensor() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.rename_tensor">rename_tensor() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.analysis.fpgadataflow.html#finn.analysis.fpgadataflow.res_estimation.res_estimation">res_estimation() (in module finn.analysis.fpgadataflow.res_estimation)</a> + <li><a href="source_code/finn.analysis.fpgadataflow.res_estimation.html#finn.analysis.fpgadataflow.res_estimation.res_estimation">res_estimation() (in module finn.analysis.fpgadataflow.res_estimation)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.reset_rtlsim">reset_rtlsim() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds">RoundAndClipThresholds (class in finn.transformation.streamline.round_thresholds)</a> + <li><a href="source_code/finn.transformation.streamline.round_thresholds.html#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds">RoundAndClipThresholds (class in finn.transformation.streamline.round_thresholds)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.basic.roundup_to_integer_multiple">roundup_to_integer_multiple() (in module finn.util.basic)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.roundup_to_integer_multiple">roundup_to_integer_multiple() (in module finn.util.basic)</a> </li> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.rtlsim">rtlsim() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.rtlsim_exec.rtlsim_exec">rtlsim_exec() (in module finn.core.rtlsim_exec)</a> + <li><a href="source_code/finn.core.rtlsim_exec.html#finn.core.rtlsim_exec.rtlsim_exec">rtlsim_exec() (in module finn.core.rtlsim_exec)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.data_packing.rtlsim_output_to_npy">rtlsim_output_to_npy() (in module finn.util.data_packing)</a> + <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.rtlsim_output_to_npy">rtlsim_output_to_npy() (in module finn.util.data_packing)</a> </li> </ul></td> </tr></table> @@ -993,61 +993,61 @@ <h2 id="S">S</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.save">save() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.save">save() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy">save_as_npy() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy">save_as_npy() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.save_as_npy">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> - <li><a href="source_code/finn.util.html#finn.util.basic.CppBuilder.set_executable_path">set_executable_path() (finn.util.basic.CppBuilder method)</a> + <li><a href="source_code/finn.util.basic.html#finn.util.basic.CppBuilder.set_executable_path">set_executable_path() (finn.util.basic.CppBuilder method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.set_initializer">set_initializer() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.set_initializer">set_initializer() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path">set_ipgen_path() (finn.util.fpgadataflow.IPGenBuilder method)</a> + <li><a href="source_code/finn.util.fpgadataflow.html#finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path">set_ipgen_path() (finn.util.fpgadataflow.IPGenBuilder method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.set_metadata_prop">set_metadata_prop() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.set_metadata_prop">set_metadata_prop() (finn.core.modelwrapper.ModelWrapper method)</a> </li> <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.set_nodeattr">set_nodeattr() (finn.custom_op.CustomOp method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.set_tensor_datatype">set_tensor_datatype() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.set_tensor_datatype">set_tensor_datatype() (finn.core.modelwrapper.ModelWrapper method)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.set_tensor_shape">set_tensor_shape() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.set_tensor_shape">set_tensor_shape() (finn.core.modelwrapper.ModelWrapper method)</a> </li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode">SetExecMode (class in finn.transformation.fpgadataflow.set_exec_mode)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.set_exec_mode.html#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode">SetExecMode (class in finn.transformation.fpgadataflow.set_exec_mode)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.signed">signed() (finn.core.datatype.DataType method)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.signed">signed() (finn.core.datatype.DataType method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition">StreamingDataflowPartition (class in finn.custom_op.streamingdataflowpartition)</a> + <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition">StreamingDataflowPartition (class in finn.custom_op.streamingdataflowpartition)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch">StreamingFCLayer_Batch (class in finn.custom_op.fpgadataflow.streamingfclayer_batch)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch">StreamingFCLayer_Batch (class in finn.custom_op.fpgadataflow.streamingfclayer_batch)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch">StreamingMaxPool_Batch (class in finn.custom_op.fpgadataflow.streamingmaxpool_batch)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch">StreamingMaxPool_Batch (class in finn.custom_op.fpgadataflow.streamingmaxpool_batch)</a> </li> <li><a href="source_code/finn.transformation.streamline.html#finn.transformation.streamline.Streamline">Streamline (class in finn.transformation.streamline)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl">strm_decl() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl">strm_decl() (finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> <ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.strm_decl">(finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> </ul></li> - <li><a href="source_code/finn.transformation.fpgadataflow.html#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject">SynthPYNQProject (class in finn.transformation.fpgadataflow.synth_pynq_proj)</a> + <li><a href="source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject">SynthPYNQProject (class in finn.transformation.fpgadataflow.synth_pynq_proj)</a> </li> </ul></td> </tr></table> @@ -1055,15 +1055,15 @@ <h2 id="T">T</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.TERNARY">TERNARY (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.TERNARY">TERNARY (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker">TLastMarker (class in finn.custom_op.fpgadataflow.tlastmarker)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker">TLastMarker (class in finn.custom_op.fpgadataflow.tlastmarker)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp.toggle_clk">toggle_clk() (finn.custom_op.fpgadataflow.HLSCustomOp method)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.modelwrapper.ModelWrapper.transform">transform() (finn.core.modelwrapper.ModelWrapper method)</a> + <li><a href="source_code/finn.core.modelwrapper.html#finn.core.modelwrapper.ModelWrapper.transform">transform() (finn.core.modelwrapper.ModelWrapper method)</a> </li> <li><a href="source_code/finn.transformation.html#finn.transformation.Transformation">Transformation (class in finn.transformation)</a> </li> @@ -1073,21 +1073,21 @@ <h2 id="U">U</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT16">UINT16 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT16">UINT16 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT2">UINT2 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT2">UINT2 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT3">UINT3 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT3">UINT3 (finn.core.datatype.DataType attribute)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT32">UINT32 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT32">UINT32 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT4">UINT4 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT4">UINT4 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.core.html#finn.core.datatype.DataType.UINT8">UINT8 (finn.core.datatype.DataType attribute)</a> + <li><a href="source_code/finn.core.datatype.html#finn.core.datatype.DataType.UINT8">UINT8 (finn.core.datatype.DataType attribute)</a> </li> - <li><a href="source_code/finn.util.html#finn.util.data_packing.unpack_innermost_dim_from_hex_string">unpack_innermost_dim_from_hex_string() (in module finn.util.data_packing)</a> + <li><a href="source_code/finn.util.data_packing.html#finn.util.data_packing.unpack_innermost_dim_from_hex_string">unpack_innermost_dim_from_hex_string() (in module finn.util.data_packing)</a> </li> </ul></td> </tr></table> @@ -1095,29 +1095,29 @@ <h2 id="V">V</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.util.html#finn.util.onnx.valueinfo_to_tensor">valueinfo_to_tensor() (in module finn.util.onnx)</a> + <li><a href="source_code/finn.util.onnx.html#finn.util.onnx.valueinfo_to_tensor">valueinfo_to_tensor() (in module finn.util.onnx)</a> </li> <li><a href="source_code/finn.custom_op.html#finn.custom_op.CustomOp.verify_node">verify_node() (finn.custom_op.CustomOp method)</a> <ul> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node">(finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node">(finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node">(finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch method)</a> </li> - <li><a href="source_code/finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> + <li><a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node">(finn.custom_op.fpgadataflow.tlastmarker.TLastMarker method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.multithreshold.MultiThreshold.verify_node">(finn.custom_op.multithreshold.MultiThreshold method)</a> + <li><a href="source_code/finn.custom_op.multithreshold.html#finn.custom_op.multithreshold.MultiThreshold.verify_node">(finn.custom_op.multithreshold.MultiThreshold method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a> + <li><a href="source_code/finn.custom_op.streamingdataflowpartition.html#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node">(finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition method)</a> </li> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a> + <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node">(finn.custom_op.xnorpopcount.XnorPopcountMatMul method)</a> </li> </ul></li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.analysis.html#finn.analysis.verify_custom_nodes.verify_nodes">verify_nodes() (in module finn.analysis.verify_custom_nodes)</a> + <li><a href="source_code/finn.analysis.verify_custom_nodes.html#finn.analysis.verify_custom_nodes.verify_nodes">verify_nodes() (in module finn.analysis.verify_custom_nodes)</a> </li> </ul></td> </tr></table> @@ -1125,11 +1125,11 @@ <h2 id="X">X</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul">XnorPopcountMatMul (class in finn.custom_op.xnorpopcount)</a> + <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.XnorPopcountMatMul">XnorPopcountMatMul (class in finn.custom_op.xnorpopcount)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="source_code/finn.custom_op.html#finn.custom_op.xnorpopcount.xnorpopcountmatmul">xnorpopcountmatmul() (in module finn.custom_op.xnorpopcount)</a> + <li><a href="source_code/finn.custom_op.xnorpopcount.html#finn.custom_op.xnorpopcount.xnorpopcountmatmul">xnorpopcountmatmul() (in module finn.custom_op.xnorpopcount)</a> </li> </ul></td> </tr></table> diff --git a/docs/finn/_build/html/objects.inv b/docs/finn/_build/html/objects.inv index 2a4e77eea14176ccb516ab4444a424fe97632698..a971c58564a2f9c835ae2bab0f78f9db501f3457 100644 GIT binary patch delta 4603 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 delta 3539 zcmV;^4J`7*B%>UVa(~TT%W~to5#9SMRF!PaWbRF+Qg`R^JmRXc#~I6&+!YEUAqg=F z@Dkuy%GU=EQlex&KoV$qCGmC6LF2*h1_`byV~c$MTgH<zC5yi<1TTx2pqMA*FKcx$ z+R7~blRbR>=f(Av*@+oW_kxQ4OY5`xF`{+8!3malo$^;lz<=f?BhaI5Dv;PSxkUvL zhzLnDEGcIfqV3hQE?I2;e;B1`KniHN&q^DxjFRU(<(s{i23dneI8BixOz=XW^{>A; zD;^LTZHPoUDJpEV#*CLzc!Q?`rIZm|ctd3B5=2?9RH`3Db~%Y9Nf0j*GMnWmDd>8S z;!;SSAx-6HTz_f7t@j;BCg_fNLHhOSGupM8Bf2fieeMS&`lS9WE3`PpLbMg-2sVHc zeY|_P`SH63!%`M>RZ21!@bUY%n;#w#zkK_Cv$Va@6XM;&^26W#;(3<$t7kaR^8V%* z?jIiEmY;ukZqd)ao6EE3_VVnx!94qJG0&cx%(Le<qkr!E{FNkTfF^RwlX-9}Dqm?L zx4!VS`=C9?`Un!T@QKaJ4CP!1x=IQ9iPN&WA$x)snX<3)0}mX&z^QglB-s#e*2wVA z8x&=}pak8psjZXjNUZut(<_?ghqT~zarF6GU2+vCNnZ<`=T)Un)!77!?)ApMkEo;l zrcSie$bWcr?R4YDTN1yZV?ct$7UwFS63P>&YdW<#3=zgW%T=_tqA8Vo-xTVcL;)~S zW>dTD0C--gwh;RV*TYz&E*Q>;2*E)al@zD+e_@KC@JwW_?UaWgsO)nR@r0qUF?2uz z)87K(oBJ$fYwn#x{ce4OX8465lI3!b^k}bpv412x8H9$B*Q0ezU-M3*H++K@L`$uz z*EhJpKfPN)gdK21=mAHBA8<tA@jw=si8U{>X~3MZo#~IWT%`j_WbXb2LDr#j$k`4G zJNSlkoWi$gdXHZ;gq8bXhM&XWFa^9I8JA>!oiuRHF(=8Asi2t$Sx206%(1d;tWb># z-G6%O(>g>Q4&R!8-}8R={uHeT=1sfp>74GMCfHUN>a;}=P^1Sz;SE~dfJtG%T}N1V zY}41wpn3>8Qi2BW67B>dgs~g*33D;sr$O7V8R`)y=l=8C)5spuGYdD&5v@`jzpVJ~ zFe*42YbI-fv-8=`;G`N6Z3rWUAw@J-8-JIfX8B$X$xz%`PF0T;lx<RC#)x=Cub4-! zcj_rrSpbzbA?i%`k#!~+*T&UZZ5X<}3S4Mx=X;Ulx*5SRn@}<@NY$2-W@B=R(LBl+ zd#|6zSoK+gl)H^H0Yxg&nx~1fv#n~Ekj6i^>bDmlr%VkNMBN@-W@bF{PV>w>@PC%s zO8IV;v7IJ$JhI!d8QR<_U*S~Mbext6RB6rK{xUbgR8=grvtx?b@=RHH;(V`fP4&IX zwrd#byuh0b1GOjBX%c+{HUSqDr4E&BI1j`K$fYx<2n#r;Mmwb_Au*8iBKbxQJt$6J z!tuqN{p6|12pZ3!a$k56JZ|k|j(={CNAC2IuT4!s;@b&Y0OR0E>Y(D~DdIq4yh*}B z$AXhYg^wAh$bt#2rYN&Pfp(6^rZ(a9K?M(!^??Q%Q&m>--fuO-gi4dtL4{OP#LbwU zfDs54piR*>clrfJW$@5ziYTBEZHhFIU}uuB@IlcOSrex7#tXB<J7t@-3V%!XYRFn) z8E=D!PVKbOQ@#7k?KiXgW347g&@@T~V7N3=7gV4$PF9T57|D!e?@G|?I}!vEM2?gc zI(!@{Cw$;IP7qAUI8GDTeBD@Curqp-)xpg9jhCn2s%p5ua$69wRg&GF;=QEQS3);i z`3`kL<y599g9)_9D}&1OOn*=Yn&BC*4=lGcN!ojDZ<1trdbpjv!)mQYw|7^qQ0cI7 zvOp7I<D@~Qz{aV9PkxQl7d-7XP7YAQYn&*MRM$vJ;gekB1i_}aGQ7(<PodLWC$vXP z+~eJ&-VK!Aa#3-K^p=}0@bs3GEZF3Yn<TL0jhh_6<c*V{i$pW-%6~2s&A90U_br`d zUB<U`k_PTuI;py#Z|S5D&bM@u1MOQniGuYl-6R3}mQI2|e9JmfA%eS;QhA3m!^I0J zAi1LDH}(Jiz#GI#?cf7+N4pe&czB)Up?$ed;_zNu7d6b}S{FO?e3gR^n3<_QAyCs2 zeHx%#_FfI3&Uv2_uz$>brwFK6pi2O#*WV=q-jnW965MC*A_nq~yXZmu;7;=J9&Z<Q zDBm_KQ%MgG8F*Ux<`gu#*PF{G$BgB0da=E(k<-uQe~p`dz5ol~^b>|!4X2;g<7zf% zMAb@Sg9}5A#eLg@=D`<aL)AdD_tY0_INe~I>+Q@Fc?itw0e?oBR#{>2dmhfRy9tib z|EKEEW0QNv&@zeB>yR@|f&ZasnvMWN)HETXhOTL9JPv6)#*3WiF)x|))X|!d(SOv& zW3_RQr5c-OcBuh$ubpRz%YQc+VhqqBhA2Zd{UP2!jr?RI!!j$=sW-2~!ln+NojN_Y zy$hY4vwQ>J*?(=?(A{7ooagC4;4=o@q|=p!Grf=rUhCwecf+)BL?&PVp!O~K&4Ja6 zy`0#*n~~-`#f7HS?bW{tPw~y$W2BHD?QYuxm%Q04{n>LgwQu9<tf*O{Ut%VOciW!A zM_<(DZIjH475hlM+sk<o&z=k2On36GV@fb9b9lz+R)7CK=VL0XCp9vHaYD^aC02NP zQLp1do<JsU@~Xa{kgrV@q0QaRehJeH<<Ad2MHtBXmbzhrqZY6_=+FRP6OAQhVe7#X zA1rXx0aORA{E+rHOQM1r-Y}{XADDxi`h*eExW=#2ewKc%&OAviKuz7kAKmEy_9JDu z*q=Yo4S!M@BQ*h5mm-!ns@L1dG5zVc%DOZ}x8}&W^k`tabZLUCGS!6acdntGs8eFS zQsR@@ynFl#;zsrI!`YuQVLG$xQ*B=B;4QftNAxb&huuQi;H?a}8Zo)TgybpTXJja$ z?6o@1n4?eT?~*_M{_rn=YUrZ}Hh;cnf1sqGKYu~H!#Q<yuXgCte>y0EsDf?<m#Brj z;Qzfy9cbc1`5)B=i6v+iv<ZN#0ln0-`RqbA_$64c6>!2EJrVg?ZQNHH0^7cm8_?{= z3AjYdKVy!JI|AGGha|vNgX8-Ib1T3u7nFKWpI5l`yueerTJoDD@s>I7!1tXruW7!j zn}5#_%o3h0%`!F*^=Eax7N(UYXpx9&Evu9SFVtI}ki~jt^pBD}D4cLbI^*zN9Q%ks z{d9o;>8&$-n?0#N<L=L5{WM{WW<Nh3$YK`UmgDI_<k41d34B}0KCP6Fozp*F=47tM z=}#wwuC_Yo8$~q1W)t}EN{wbKAS+t3=zqrieE3N94Er6E+~IjFUnT7#hqQL3LEY;O zzxyNP5CSe>h`J&!W{6e+poaK@W66u}rEZE(bi?lPhEZ821jY=V^e{$<d79!}=x<%+ zI+dOPjYn^Il`n4h{HS(}^!I&~{f&n3L*uZ9@A*5B0Mi%?!i!{N%5r)Wtk|M^{(qCG z#`dUl<-zN_ofOo(hWjbTDK2US7`Wsu?3XfuqQ0OBPS}A=z)O}KR{$1Jz3q%P`k{B+ zu;ezS`SL_f$Qp1{0aFt~-R|{c2u2Q2HJorB@?UD_k}qo+0qs9T@6+(5qyw2reMY+h z&5;!rG@g$T-RAknlBUVP6xb1~AAdyKh_J-*t@*L27Qh$iO8<Jos%JM!sgr>y$3rU? z^dsv}IFx2_VBIK5f)Xxu+CD+5eQgHc=<EmA57y~@C}}QTJ_k>t)gCdNk@-MISi!lR z2Su4AMN0Im^QtQrbf?#o(D^!=p>@Ht<6}Bv9+8<+G%ZPC&opF?>oxE7Fn?s;vd#6Y zOzU~Dg~_|?51di9nF&QQ<sSH{ZF9RTb6r$jTN_n7b&;n6>ujv5+4!X@=;X1n2^8U? z!24geWH--(CzyJ-{g|@eqdNF%FNq=Y0)G(u3(Nf?H}E{0q_T(oEU{gh$PaFrS!Db1 zhQv$jiuA7%$w-lLA<ejg1%FZ&K^{$V-Zpe8Y|HTiUzxgE>_=hy0xnsLdCago-$3p! z`waB)lL=+>WZ)b}s1vRBUF6UjD&vu7I56Fy+LJMlP0ny)PSEqcepA*uGv@sXz3^B* zwfZ?@yIIw)0V1=o6=iE~{QX%zkR(FR5~KmD4??J(qMwdQQ9{;ey?<kKG@V1L$V7!9 ziBHIqc>}dLNHvc5CFhil9QsWM<4FIQaY4xBw}i)w>ko^wL*|;rm%E3D#r5JdORgoq zRzHg`>e!WP^^_%KXRc52iliE$-fJ(t(|^^OQmR2rwP@u>Dg!hK&kotEzS^COC%g0N zNK;+aV9?^Ol!aTQ<bV6?`hY$6-nKd`$~G_2gspbjlSL6<33Vrlx2LFfpFQWv9)H9e za@8<;6SJ|qy2k8S=(lvP&MT_pLR*REYIBypUz}0eQ!vBnUQp4CQ=fDMJYF}5e0oQ5 zqIvTy(xL~kQ$WlM(#xk$XuzBEyV2@J0Qw<MmI_#$T{#TyZcMD6Rk;>@n4KEVRx{}1 zZh2;4(Yhjn8<%^bhn`tm48OkYD5>$N!w5lV`KZOvLlj+NO!}&i_b@y!8tJYUw3Z>O N<?s>d>i^eW@Vv8c7+U}U diff --git a/docs/finn/_build/html/py-modindex.html b/docs/finn/_build/html/py-modindex.html index 1a992f29a..423baaf74 100644 --- a/docs/finn/_build/html/py-modindex.html +++ b/docs/finn/_build/html/py-modindex.html @@ -175,22 +175,22 @@ <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation"><code class="xref">finn.analysis.fpgadataflow.hls_synth_res_estimation</code></a></td><td> + <a href="source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation"><code class="xref">finn.analysis.fpgadataflow.hls_synth_res_estimation</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.res_estimation"><code class="xref">finn.analysis.fpgadataflow.res_estimation</code></a></td><td> + <a href="source_code/finn.analysis.fpgadataflow.res_estimation.html#module-finn.analysis.fpgadataflow.res_estimation"><code class="xref">finn.analysis.fpgadataflow.res_estimation</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.analysis.html#module-finn.analysis.topology"><code class="xref">finn.analysis.topology</code></a></td><td> + <a href="source_code/finn.analysis.topology.html#module-finn.analysis.topology"><code class="xref">finn.analysis.topology</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.analysis.html#module-finn.analysis.verify_custom_nodes"><code class="xref">finn.analysis.verify_custom_nodes</code></a></td><td> + <a href="source_code/finn.analysis.verify_custom_nodes.html#module-finn.analysis.verify_custom_nodes"><code class="xref">finn.analysis.verify_custom_nodes</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> @@ -200,32 +200,32 @@ <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.core.html#module-finn.core.datatype"><code class="xref">finn.core.datatype</code></a></td><td> + <a href="source_code/finn.core.datatype.html#module-finn.core.datatype"><code class="xref">finn.core.datatype</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.core.html#module-finn.core.execute_custom_node"><code class="xref">finn.core.execute_custom_node</code></a></td><td> + <a href="source_code/finn.core.execute_custom_node.html#module-finn.core.execute_custom_node"><code class="xref">finn.core.execute_custom_node</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.core.html#module-finn.core.modelwrapper"><code class="xref">finn.core.modelwrapper</code></a></td><td> + <a href="source_code/finn.core.modelwrapper.html#module-finn.core.modelwrapper"><code class="xref">finn.core.modelwrapper</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.core.html#module-finn.core.onnx_exec"><code class="xref">finn.core.onnx_exec</code></a></td><td> + <a href="source_code/finn.core.onnx_exec.html#module-finn.core.onnx_exec"><code class="xref">finn.core.onnx_exec</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.core.html#module-finn.core.remote_exec"><code class="xref">finn.core.remote_exec</code></a></td><td> + <a href="source_code/finn.core.remote_exec.html#module-finn.core.remote_exec"><code class="xref">finn.core.remote_exec</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.core.html#module-finn.core.rtlsim_exec"><code class="xref">finn.core.rtlsim_exec</code></a></td><td> + <a href="source_code/finn.core.rtlsim_exec.html#module-finn.core.rtlsim_exec"><code class="xref">finn.core.rtlsim_exec</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> @@ -240,47 +240,47 @@ <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator"><code class="xref">finn.custom_op.fpgadataflow.convolutioninputgenerator</code></a></td><td> + <a href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator"><code class="xref">finn.custom_op.fpgadataflow.convolutioninputgenerator</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch"><code class="xref">finn.custom_op.fpgadataflow.streamingfclayer_batch</code></a></td><td> + <a href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch"><code class="xref">finn.custom_op.fpgadataflow.streamingfclayer_batch</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch"><code class="xref">finn.custom_op.fpgadataflow.streamingmaxpool_batch</code></a></td><td> + <a href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch"><code class="xref">finn.custom_op.fpgadataflow.streamingmaxpool_batch</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.templates"><code class="xref">finn.custom_op.fpgadataflow.templates</code></a></td><td> + <a href="source_code/finn.custom_op.fpgadataflow.templates.html#module-finn.custom_op.fpgadataflow.templates"><code class="xref">finn.custom_op.fpgadataflow.templates</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.tlastmarker"><code class="xref">finn.custom_op.fpgadataflow.tlastmarker</code></a></td><td> + <a href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html#module-finn.custom_op.fpgadataflow.tlastmarker"><code class="xref">finn.custom_op.fpgadataflow.tlastmarker</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.custom_op.html#module-finn.custom_op.multithreshold"><code class="xref">finn.custom_op.multithreshold</code></a></td><td> + <a href="source_code/finn.custom_op.multithreshold.html#module-finn.custom_op.multithreshold"><code class="xref">finn.custom_op.multithreshold</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.custom_op.html#module-finn.custom_op.registry"><code class="xref">finn.custom_op.registry</code></a></td><td> + <a href="source_code/finn.custom_op.registry.html#module-finn.custom_op.registry"><code class="xref">finn.custom_op.registry</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.custom_op.html#module-finn.custom_op.streamingdataflowpartition"><code class="xref">finn.custom_op.streamingdataflowpartition</code></a></td><td> + <a href="source_code/finn.custom_op.streamingdataflowpartition.html#module-finn.custom_op.streamingdataflowpartition"><code class="xref">finn.custom_op.streamingdataflowpartition</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.custom_op.html#module-finn.custom_op.xnorpopcount"><code class="xref">finn.custom_op.xnorpopcount</code></a></td><td> + <a href="source_code/finn.custom_op.xnorpopcount.html#module-finn.custom_op.xnorpopcount"><code class="xref">finn.custom_op.xnorpopcount</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> @@ -290,17 +290,17 @@ <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.html#module-finn.transformation.batchnorm_to_affine"><code class="xref">finn.transformation.batchnorm_to_affine</code></a></td><td> + <a href="source_code/finn.transformation.batchnorm_to_affine.html#module-finn.transformation.batchnorm_to_affine"><code class="xref">finn.transformation.batchnorm_to_affine</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.html#module-finn.transformation.bipolar_to_xnor"><code class="xref">finn.transformation.bipolar_to_xnor</code></a></td><td> + <a href="source_code/finn.transformation.bipolar_to_xnor.html#module-finn.transformation.bipolar_to_xnor"><code class="xref">finn.transformation.bipolar_to_xnor</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.html#module-finn.transformation.fold_constants"><code class="xref">finn.transformation.fold_constants</code></a></td><td> + <a href="source_code/finn.transformation.fold_constants.html#module-finn.transformation.fold_constants"><code class="xref">finn.transformation.fold_constants</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> @@ -310,92 +310,92 @@ <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.cleanup"><code class="xref">finn.transformation.fpgadataflow.cleanup</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.cleanup.html#module-finn.transformation.fpgadataflow.cleanup"><code class="xref">finn.transformation.fpgadataflow.cleanup</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipgen"><code class="xref">finn.transformation.fpgadataflow.codegen_ipgen</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.codegen_ipgen.html#module-finn.transformation.fpgadataflow.codegen_ipgen"><code class="xref">finn.transformation.fpgadataflow.codegen_ipgen</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipstitch"><code class="xref">finn.transformation.fpgadataflow.codegen_ipstitch</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html#module-finn.transformation.fpgadataflow.codegen_ipstitch"><code class="xref">finn.transformation.fpgadataflow.codegen_ipstitch</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_npysim"><code class="xref">finn.transformation.fpgadataflow.codegen_npysim</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.codegen_npysim.html#module-finn.transformation.fpgadataflow.codegen_npysim"><code class="xref">finn.transformation.fpgadataflow.codegen_npysim</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.compile"><code class="xref">finn.transformation.fpgadataflow.compile</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.compile.html#module-finn.transformation.fpgadataflow.compile"><code class="xref">finn.transformation.fpgadataflow.compile</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers"><code class="xref">finn.transformation.fpgadataflow.convert_to_hls_layers</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers"><code class="xref">finn.transformation.fpgadataflow.convert_to_hls_layers</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.create_dataflow_partition"><code class="xref">finn.transformation.fpgadataflow.create_dataflow_partition</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html#module-finn.transformation.fpgadataflow.create_dataflow_partition"><code class="xref">finn.transformation.fpgadataflow.create_dataflow_partition</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen"><code class="xref">finn.transformation.fpgadataflow.hlssynth_ipgen</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen"><code class="xref">finn.transformation.fpgadataflow.hlssynth_ipgen</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.insert_tlastmarker"><code class="xref">finn.transformation.fpgadataflow.insert_tlastmarker</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html#module-finn.transformation.fpgadataflow.insert_tlastmarker"><code class="xref">finn.transformation.fpgadataflow.insert_tlastmarker</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_deployment"><code class="xref">finn.transformation.fpgadataflow.make_deployment</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.make_deployment.html#module-finn.transformation.fpgadataflow.make_deployment"><code class="xref">finn.transformation.fpgadataflow.make_deployment</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_driver"><code class="xref">finn.transformation.fpgadataflow.make_pynq_driver</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.make_pynq_driver.html#module-finn.transformation.fpgadataflow.make_pynq_driver"><code class="xref">finn.transformation.fpgadataflow.make_pynq_driver</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_proj"><code class="xref">finn.transformation.fpgadataflow.make_pynq_proj</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.make_pynq_proj.html#module-finn.transformation.fpgadataflow.make_pynq_proj"><code class="xref">finn.transformation.fpgadataflow.make_pynq_proj</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.set_exec_mode"><code class="xref">finn.transformation.fpgadataflow.set_exec_mode</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.set_exec_mode.html#module-finn.transformation.fpgadataflow.set_exec_mode"><code class="xref">finn.transformation.fpgadataflow.set_exec_mode</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.synth_pynq_proj"><code class="xref">finn.transformation.fpgadataflow.synth_pynq_proj</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html#module-finn.transformation.fpgadataflow.synth_pynq_proj"><code class="xref">finn.transformation.fpgadataflow.synth_pynq_proj</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.templates"><code class="xref">finn.transformation.fpgadataflow.templates</code></a></td><td> + <a href="source_code/finn.transformation.fpgadataflow.templates.html#module-finn.transformation.fpgadataflow.templates"><code class="xref">finn.transformation.fpgadataflow.templates</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.html#module-finn.transformation.general"><code class="xref">finn.transformation.general</code></a></td><td> + <a href="source_code/finn.transformation.general.html#module-finn.transformation.general"><code class="xref">finn.transformation.general</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.html#module-finn.transformation.infer_datatypes"><code class="xref">finn.transformation.infer_datatypes</code></a></td><td> + <a href="source_code/finn.transformation.infer_datatypes.html#module-finn.transformation.infer_datatypes"><code class="xref">finn.transformation.infer_datatypes</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.html#module-finn.transformation.infer_shapes"><code class="xref">finn.transformation.infer_shapes</code></a></td><td> + <a href="source_code/finn.transformation.infer_shapes.html#module-finn.transformation.infer_shapes"><code class="xref">finn.transformation.infer_shapes</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> @@ -405,27 +405,27 @@ <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.absorb"><code class="xref">finn.transformation.streamline.absorb</code></a></td><td> + <a href="source_code/finn.transformation.streamline.absorb.html#module-finn.transformation.streamline.absorb"><code class="xref">finn.transformation.streamline.absorb</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.collapse_repeated"><code class="xref">finn.transformation.streamline.collapse_repeated</code></a></td><td> + <a href="source_code/finn.transformation.streamline.collapse_repeated.html#module-finn.transformation.streamline.collapse_repeated"><code class="xref">finn.transformation.streamline.collapse_repeated</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.reorder"><code class="xref">finn.transformation.streamline.reorder</code></a></td><td> + <a href="source_code/finn.transformation.streamline.reorder.html#module-finn.transformation.streamline.reorder"><code class="xref">finn.transformation.streamline.reorder</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.round_thresholds"><code class="xref">finn.transformation.streamline.round_thresholds</code></a></td><td> + <a href="source_code/finn.transformation.streamline.round_thresholds.html#module-finn.transformation.streamline.round_thresholds"><code class="xref">finn.transformation.streamline.round_thresholds</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.sign_to_thres"><code class="xref">finn.transformation.streamline.sign_to_thres</code></a></td><td> + <a href="source_code/finn.transformation.streamline.sign_to_thres.html#module-finn.transformation.streamline.sign_to_thres"><code class="xref">finn.transformation.streamline.sign_to_thres</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> @@ -435,27 +435,27 @@ <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.util.html#module-finn.util.basic"><code class="xref">finn.util.basic</code></a></td><td> + <a href="source_code/finn.util.basic.html#module-finn.util.basic"><code class="xref">finn.util.basic</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.util.html#module-finn.util.data_packing"><code class="xref">finn.util.data_packing</code></a></td><td> + <a href="source_code/finn.util.data_packing.html#module-finn.util.data_packing"><code class="xref">finn.util.data_packing</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.util.html#module-finn.util.fpgadataflow"><code class="xref">finn.util.fpgadataflow</code></a></td><td> + <a href="source_code/finn.util.fpgadataflow.html#module-finn.util.fpgadataflow"><code class="xref">finn.util.fpgadataflow</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.util.html#module-finn.util.onnx"><code class="xref">finn.util.onnx</code></a></td><td> + <a href="source_code/finn.util.onnx.html#module-finn.util.onnx"><code class="xref">finn.util.onnx</code></a></td><td> <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    - <a href="source_code/finn.util.html#module-finn.util.test"><code class="xref">finn.util.test</code></a></td><td> + <a href="source_code/finn.util.test.html#module-finn.util.test"><code class="xref">finn.util.test</code></a></td><td> <em></em></td></tr> </table> diff --git a/docs/finn/_build/html/searchindex.js b/docs/finn/_build/html/searchindex.js index 69ac8240f..9125c56f0 100644 --- a/docs/finn/_build/html/searchindex.js +++ b/docs/finn/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["end_to_end_flow","getting_started","index","modules","source_code","source_code/finn","source_code/finn.analysis","source_code/finn.analysis.fpgadataflow","source_code/finn.core","source_code/finn.custom_op","source_code/finn.custom_op.fpgadataflow","source_code/finn.transformation","source_code/finn.transformation.fpgadataflow","source_code/finn.transformation.streamline","source_code/finn.util","source_code/modules"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:56},filenames:["end_to_end_flow.rst","getting_started.rst","index.rst","modules.rst","source_code.rst","source_code/finn.rst","source_code/finn.analysis.rst","source_code/finn.analysis.fpgadataflow.rst","source_code/finn.core.rst","source_code/finn.custom_op.rst","source_code/finn.custom_op.fpgadataflow.rst","source_code/finn.transformation.rst","source_code/finn.transformation.fpgadataflow.rst","source_code/finn.transformation.streamline.rst","source_code/finn.util.rst","source_code/modules.rst"],objects:{"":{finn:[5,0,0,"-"]},"finn.analysis":{fpgadataflow:[7,0,0,"-"],topology:[6,0,0,"-"],verify_custom_nodes:[6,0,0,"-"]},"finn.analysis.fpgadataflow":{hls_synth_res_estimation:[7,0,0,"-"],res_estimation:[7,0,0,"-"]},"finn.analysis.fpgadataflow.hls_synth_res_estimation":{hls_synth_res_estimation:[7,1,1,""]},"finn.analysis.fpgadataflow.res_estimation":{res_estimation:[7,1,1,""]},"finn.analysis.topology":{all_tensors_f32:[6,1,1,""],get_per_tensor_fanouts:[6,1,1,""],is_linear:[6,1,1,""],node_inputs_in_expected_order:[6,1,1,""]},"finn.analysis.verify_custom_nodes":{verify_nodes:[6,1,1,""]},"finn.core":{datatype:[8,0,0,"-"],execute_custom_node:[8,0,0,"-"],modelwrapper:[8,0,0,"-"],onnx_exec:[8,0,0,"-"],remote_exec:[8,0,0,"-"],rtlsim_exec:[8,0,0,"-"]},"finn.core.datatype":{DataType:[8,2,1,""]},"finn.core.datatype.DataType":{BINARY:[8,3,1,""],BIPOLAR:[8,3,1,""],FLOAT32:[8,3,1,""],INT16:[8,3,1,""],INT2:[8,3,1,""],INT32:[8,3,1,""],INT3:[8,3,1,""],INT4:[8,3,1,""],INT8:[8,3,1,""],TERNARY:[8,3,1,""],UINT16:[8,3,1,""],UINT2:[8,3,1,""],UINT32:[8,3,1,""],UINT3:[8,3,1,""],UINT4:[8,3,1,""],UINT8:[8,3,1,""],allowed:[8,4,1,""],bitwidth:[8,4,1,""],get_hls_datatype_str:[8,4,1,""],get_num_possible_values:[8,4,1,""],get_smallest_possible:[8,4,1,""],is_integer:[8,4,1,""],max:[8,4,1,""],min:[8,4,1,""],signed:[8,4,1,""]},"finn.core.execute_custom_node":{execute_custom_node:[8,1,1,""]},"finn.core.modelwrapper":{ModelWrapper:[8,2,1,""]},"finn.core.modelwrapper.ModelWrapper":{analysis:[8,4,1,""],check_all_tensor_shapes_specified:[8,4,1,""],check_compatibility:[8,4,1,""],find_consumer:[8,4,1,""],find_producer:[8,4,1,""],get_all_tensor_names:[8,4,1,""],get_initializer:[8,4,1,""],get_metadata_prop:[8,4,1,""],get_tensor_datatype:[8,4,1,""],get_tensor_fanout:[8,4,1,""],get_tensor_shape:[8,4,1,""],get_tensor_valueinfo:[8,4,1,""],graph:[8,4,1,""],make_empty_exec_context:[8,4,1,""],make_new_valueinfo_name:[8,4,1,""],model:[8,4,1,""],rename_tensor:[8,4,1,""],save:[8,4,1,""],set_initializer:[8,4,1,""],set_metadata_prop:[8,4,1,""],set_tensor_datatype:[8,4,1,""],set_tensor_shape:[8,4,1,""],transform:[8,4,1,""]},"finn.core.onnx_exec":{compare_execution:[8,1,1,""],execute_node:[8,1,1,""],execute_onnx:[8,1,1,""],execute_onnx_and_make_model:[8,1,1,""]},"finn.core.remote_exec":{remote_exec:[8,1,1,""]},"finn.core.rtlsim_exec":{rtlsim_exec:[8,1,1,""]},"finn.custom_op":{CustomOp:[9,2,1,""],fpgadataflow:[10,0,0,"-"],multithreshold:[9,0,0,"-"],registry:[9,0,0,"-"],streamingdataflowpartition:[9,0,0,"-"],xnorpopcount:[9,0,0,"-"]},"finn.custom_op.CustomOp":{execute_node:[9,4,1,""],get_nodeattr:[9,4,1,""],get_nodeattr_types:[9,4,1,""],infer_node_datatype:[9,4,1,""],make_shape_compatible_op:[9,4,1,""],set_nodeattr:[9,4,1,""],verify_node:[9,4,1,""]},"finn.custom_op.fpgadataflow":{HLSCustomOp:[10,2,1,""],convolutioninputgenerator:[10,0,0,"-"],streamingfclayer_batch:[10,0,0,"-"],streamingmaxpool_batch:[10,0,0,"-"],templates:[10,0,0,"-"],tlastmarker:[10,0,0,"-"]},"finn.custom_op.fpgadataflow.HLSCustomOp":{blackboxfunction:[10,4,1,""],bram_estimation:[10,4,1,""],code_generation_ipgen:[10,4,1,""],code_generation_npysim:[10,4,1,""],compile_singlenode_code:[10,4,1,""],dataoutstrm:[10,4,1,""],defines:[10,4,1,""],docompute:[10,4,1,""],dynamic_input_to_npy:[10,4,1,""],exec_precompiled_singlenode_model:[10,4,1,""],execute_node:[10,4,1,""],generate_params:[10,4,1,""],get_folded_input_shape:[10,4,1,""],get_folded_output_shape:[10,4,1,""],get_instream_width:[10,4,1,""],get_nodeattr_types:[10,4,1,""],get_number_output_values:[10,4,1,""],get_outstream_width:[10,4,1,""],global_includes:[10,4,1,""],ipgen_singlenode_code:[10,4,1,""],lut_estimation:[10,4,1,""],node_res_estimation:[10,4,1,""],npy_to_dynamic_output:[10,4,1,""],pragmas:[10,4,1,""],read_npy_data:[10,4,1,""],reset_rtlsim:[10,4,1,""],rtlsim:[10,4,1,""],save_as_npy:[10,4,1,""],strm_decl:[10,4,1,""],toggle_clk:[10,4,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator":{ConvolutionInputGenerator:[10,2,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator":{blackboxfunction:[10,4,1,""],bram_estimation:[10,4,1,""],dataoutstrm:[10,4,1,""],defines:[10,4,1,""],docompute:[10,4,1,""],execute_node:[10,4,1,""],get_input_datatype:[10,4,1,""],get_nodeattr_types:[10,4,1,""],get_number_output_values:[10,4,1,""],get_output_datatype:[10,4,1,""],get_stream_width:[10,4,1,""],global_includes:[10,4,1,""],infer_node_datatype:[10,4,1,""],lut_estimation:[10,4,1,""],make_shape_compatible_op:[10,4,1,""],pragmas:[10,4,1,""],read_npy_data:[10,4,1,""],save_as_npy:[10,4,1,""],strm_decl:[10,4,1,""],verify_node:[10,4,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch":{StreamingFCLayer_Batch:[10,2,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch":{blackboxfunction:[10,4,1,""],bram_estimation:[10,4,1,""],calc_tmem:[10,4,1,""],calc_wmem:[10,4,1,""],dataoutstrm:[10,4,1,""],defines:[10,4,1,""],docompute:[10,4,1,""],execute_node:[10,4,1,""],generate_params:[10,4,1,""],get_folded_input_shape:[10,4,1,""],get_folded_output_shape:[10,4,1,""],get_hls_compatible_threshold_tensor:[10,4,1,""],get_hls_compatible_weight_tensor:[10,4,1,""],get_input_datatype:[10,4,1,""],get_instream_width:[10,4,1,""],get_nodeattr_types:[10,4,1,""],get_number_output_values:[10,4,1,""],get_output_datatype:[10,4,1,""],get_outstream_width:[10,4,1,""],get_template_param_values:[10,4,1,""],get_weight_datatype:[10,4,1,""],global_includes:[10,4,1,""],infer_node_datatype:[10,4,1,""],lut_estimation:[10,4,1,""],make_shape_compatible_op:[10,4,1,""],pragmas:[10,4,1,""],read_npy_data:[10,4,1,""],save_as_npy:[10,4,1,""],strm_decl:[10,4,1,""],verify_node:[10,4,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch":{StreamingMaxPool_Batch:[10,2,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch":{blackboxfunction:[10,4,1,""],bram_estimation:[10,4,1,""],dataoutstrm:[10,4,1,""],defines:[10,4,1,""],docompute:[10,4,1,""],get_nodeattr_types:[10,4,1,""],get_number_output_values:[10,4,1,""],global_includes:[10,4,1,""],infer_node_datatype:[10,4,1,""],lut_estimation:[10,4,1,""],make_shape_compatible_op:[10,4,1,""],pragmas:[10,4,1,""],read_npy_data:[10,4,1,""],save_as_npy:[10,4,1,""],strm_decl:[10,4,1,""],verify_node:[10,4,1,""]},"finn.custom_op.fpgadataflow.tlastmarker":{TLastMarker:[10,2,1,""]},"finn.custom_op.fpgadataflow.tlastmarker.TLastMarker":{blackboxfunction:[10,4,1,""],dataoutstrm:[10,4,1,""],defines:[10,4,1,""],docompute:[10,4,1,""],execute_node:[10,4,1,""],get_folded_input_shape:[10,4,1,""],get_folded_output_shape:[10,4,1,""],get_instream_width:[10,4,1,""],get_nodeattr_types:[10,4,1,""],get_number_output_values:[10,4,1,""],get_outstream_width:[10,4,1,""],global_includes:[10,4,1,""],infer_node_datatype:[10,4,1,""],make_shape_compatible_op:[10,4,1,""],pragmas:[10,4,1,""],read_npy_data:[10,4,1,""],save_as_npy:[10,4,1,""],strm_decl:[10,4,1,""],verify_node:[10,4,1,""]},"finn.custom_op.multithreshold":{MultiThreshold:[9,2,1,""],compare:[9,1,1,""],multithreshold:[9,1,1,""]},"finn.custom_op.multithreshold.MultiThreshold":{execute_node:[9,4,1,""],get_nodeattr_types:[9,4,1,""],infer_node_datatype:[9,4,1,""],make_shape_compatible_op:[9,4,1,""],verify_node:[9,4,1,""]},"finn.custom_op.registry":{getCustomOp:[9,1,1,""]},"finn.custom_op.streamingdataflowpartition":{StreamingDataflowPartition:[9,2,1,""]},"finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition":{execute_node:[9,4,1,""],get_nodeattr_types:[9,4,1,""],infer_node_datatype:[9,4,1,""],make_shape_compatible_op:[9,4,1,""],verify_node:[9,4,1,""]},"finn.custom_op.xnorpopcount":{XnorPopcountMatMul:[9,2,1,""],xnorpopcountmatmul:[9,1,1,""]},"finn.custom_op.xnorpopcount.XnorPopcountMatMul":{execute_node:[9,4,1,""],get_nodeattr_types:[9,4,1,""],infer_node_datatype:[9,4,1,""],make_shape_compatible_op:[9,4,1,""],verify_node:[9,4,1,""]},"finn.transformation":{Transformation:[11,2,1,""],batchnorm_to_affine:[11,0,0,"-"],bipolar_to_xnor:[11,0,0,"-"],fold_constants:[11,0,0,"-"],fpgadataflow:[12,0,0,"-"],general:[11,0,0,"-"],infer_datatypes:[11,0,0,"-"],infer_shapes:[11,0,0,"-"],streamline:[13,0,0,"-"]},"finn.transformation.Transformation":{apply:[11,4,1,""]},"finn.transformation.batchnorm_to_affine":{BatchNormToAffine:[11,2,1,""]},"finn.transformation.batchnorm_to_affine.BatchNormToAffine":{apply:[11,4,1,""]},"finn.transformation.bipolar_to_xnor":{ConvertBipolarMatMulToXnorPopcount:[11,2,1,""]},"finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount":{apply:[11,4,1,""]},"finn.transformation.fold_constants":{FoldConstants:[11,2,1,""]},"finn.transformation.fold_constants.FoldConstants":{apply:[11,4,1,""]},"finn.transformation.fpgadataflow":{cleanup:[12,0,0,"-"],codegen_ipgen:[12,0,0,"-"],codegen_ipstitch:[12,0,0,"-"],codegen_npysim:[12,0,0,"-"],compile:[12,0,0,"-"],convert_to_hls_layers:[12,0,0,"-"],create_dataflow_partition:[12,0,0,"-"],hlssynth_ipgen:[12,0,0,"-"],insert_tlastmarker:[12,0,0,"-"],make_deployment:[12,0,0,"-"],make_pynq_driver:[12,0,0,"-"],make_pynq_proj:[12,0,0,"-"],set_exec_mode:[12,0,0,"-"],synth_pynq_proj:[12,0,0,"-"],templates:[12,0,0,"-"]},"finn.transformation.fpgadataflow.cleanup":{CleanUp:[12,2,1,""]},"finn.transformation.fpgadataflow.cleanup.CleanUp":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen":{CodeGen_ipgen:[12,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch":{CodeGen_ipstitch:[12,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.codegen_npysim":{CodeGen_npysim:[12,2,1,""]},"finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.compile":{Compile:[12,2,1,""]},"finn.transformation.fpgadataflow.compile.Compile":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers":{InferBinaryStreamingFCLayer:[12,2,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition":{CreateDataflowPartition:[12,2,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen":{HLSSynth_IPGen:[12,2,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker":{InsertTLastMarker:[12,2,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.make_deployment":{DeployToPYNQ:[12,2,1,""]},"finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver":{MakePYNQDriver:[12,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj":{MakePYNQProject:[12,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.set_exec_mode":{SetExecMode:[12,2,1,""]},"finn.transformation.fpgadataflow.set_exec_mode.SetExecMode":{apply:[12,4,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj":{SynthPYNQProject:[12,2,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject":{apply:[12,4,1,""]},"finn.transformation.general":{ConvertSubToAdd:[11,2,1,""],GiveRandomTensorNames:[11,2,1,""],GiveReadableTensorNames:[11,2,1,""],GiveUniqueNodeNames:[11,2,1,""]},"finn.transformation.general.ConvertSubToAdd":{apply:[11,4,1,""]},"finn.transformation.general.GiveRandomTensorNames":{apply:[11,4,1,""]},"finn.transformation.general.GiveReadableTensorNames":{apply:[11,4,1,""]},"finn.transformation.general.GiveUniqueNodeNames":{apply:[11,4,1,""]},"finn.transformation.infer_datatypes":{InferDataTypes:[11,2,1,""]},"finn.transformation.infer_datatypes.InferDataTypes":{apply:[11,4,1,""]},"finn.transformation.infer_shapes":{InferShapes:[11,2,1,""]},"finn.transformation.infer_shapes.InferShapes":{apply:[11,4,1,""]},"finn.transformation.streamline":{Streamline:[13,2,1,""],absorb:[13,0,0,"-"],collapse_repeated:[13,0,0,"-"],reorder:[13,0,0,"-"],round_thresholds:[13,0,0,"-"],sign_to_thres:[13,0,0,"-"]},"finn.transformation.streamline.Streamline":{apply:[13,4,1,""]},"finn.transformation.streamline.absorb":{Absorb1BitMulIntoMatMul:[13,2,1,""],AbsorbAddIntoMultiThreshold:[13,2,1,""],AbsorbMulIntoMultiThreshold:[13,2,1,""],FactorOutMulSignMagnitude:[13,2,1,""]},"finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul":{apply:[13,4,1,""]},"finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold":{apply:[13,4,1,""]},"finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold":{apply:[13,4,1,""]},"finn.transformation.streamline.absorb.FactorOutMulSignMagnitude":{apply:[13,4,1,""]},"finn.transformation.streamline.collapse_repeated":{CollapseRepeatedAdd:[13,2,1,""],CollapseRepeatedMul:[13,2,1,""],CollapseRepeatedOp:[13,2,1,""]},"finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp":{apply:[13,4,1,""]},"finn.transformation.streamline.reorder":{MoveAddPastMul:[13,2,1,""],MoveScalarAddPastMatMul:[13,2,1,""],MoveScalarMulPastMatMul:[13,2,1,""]},"finn.transformation.streamline.reorder.MoveAddPastMul":{apply:[13,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarAddPastMatMul":{apply:[13,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarMulPastMatMul":{apply:[13,4,1,""]},"finn.transformation.streamline.round_thresholds":{RoundAndClipThresholds:[13,2,1,""]},"finn.transformation.streamline.round_thresholds.RoundAndClipThresholds":{apply:[13,4,1,""]},"finn.transformation.streamline.sign_to_thres":{ConvertSignToThres:[13,2,1,""]},"finn.transformation.streamline.sign_to_thres.ConvertSignToThres":{apply:[13,4,1,""]},"finn.util":{basic:[14,0,0,"-"],data_packing:[14,0,0,"-"],fpgadataflow:[14,0,0,"-"],onnx:[14,0,0,"-"],test:[14,0,0,"-"]},"finn.util.basic":{CppBuilder:[14,2,1,""],calculate_signed_dot_prod_range:[14,1,1,""],gen_finn_dt_tensor:[14,1,1,""],get_by_name:[14,1,1,""],get_finn_root:[14,1,1,""],interleave_matrix_outer_dim_from_partitions:[14,1,1,""],make_build_dir:[14,1,1,""],pad_tensor_to_multiple_of:[14,1,1,""],random_string:[14,1,1,""],remove_by_name:[14,1,1,""],roundup_to_integer_multiple:[14,1,1,""]},"finn.util.basic.CppBuilder":{append_includes:[14,4,1,""],append_sources:[14,4,1,""],build:[14,4,1,""],set_executable_path:[14,4,1,""]},"finn.util.data_packing":{array2hexstring:[14,1,1,""],finnpy_to_packed_bytearray:[14,1,1,""],hexstring2npbytearray:[14,1,1,""],npbytearray2hexstring:[14,1,1,""],npy_to_rtlsim_input:[14,1,1,""],numpy_to_hls_code:[14,1,1,""],pack_innermost_dim_as_hex_string:[14,1,1,""],packed_bytearray_to_finnpy:[14,1,1,""],rtlsim_output_to_npy:[14,1,1,""],unpack_innermost_dim_from_hex_string:[14,1,1,""]},"finn.util.fpgadataflow":{IPGenBuilder:[14,2,1,""],pyverilate_stitched_ip:[14,1,1,""]},"finn.util.fpgadataflow.IPGenBuilder":{append_tcl:[14,4,1,""],build:[14,4,1,""],set_ipgen_path:[14,4,1,""]},"finn.util.onnx":{valueinfo_to_tensor:[14,1,1,""]},"finn.util.test":{get_test_model_def_fxn:[14,1,1,""],get_test_model_trained:[14,1,1,""],get_test_model_untrained:[14,1,1,""],get_trained_checkpoint:[14,1,1,""]},finn:{analysis:[6,0,0,"-"],core:[8,0,0,"-"],custom_op:[9,0,0,"-"],transformation:[11,0,0,"-"],util:[14,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:method"},terms:{"0f01":14,"0x07":14,"0x0e":14,"0x0f01":14,"0xb":14,"0xe":14,"600px":[],"abstract":[9,10,11],"boolean":8,"class":[8,9,10,11,12,13,14],"const":11,"default":[9,10,11],"enum":8,"final":8,"float":14,"function":[1,8,11,14],"import":1,"new":[1,2,8],"return":[6,7,8,9,10,11,13,14],"static":6,"true":[8,14],"try":1,"var":10,For:13,HLS:[2,8],IPs:12,PEs:10,The:[1,2,6,8,11,12,13,14],There:1,Use:[8,14],abc:[9,11],abit:14,about:[2,6,12],abov:1,absorb1bitmulintomatmul:13,absorb:[4,5,11,12],absorbaddintomultithreshold:13,absorbmulintomultithreshold:13,acceler:[1,12],account:8,action:12,activ:8,add:[11,13],adding:1,addit:1,addition:13,address:12,after:14,aim:13,align:[],all:[1,6,8,9,10,11,12,14],all_tensors_f32:6,allow:8,alreadi:12,also:[9,10,12],amount:14,analysi:[4,5,8,15],analysis_fxn:8,anaylsis_fxn:8,ani:[1,8,11,12,14],annot:[6,9,10],anoth:12,append_includ:14,append_sourc:14,append_tcl:14,appli:[8,11,12,13],apply_rep:11,appropri:[1,11],arbitrari:14,architectur:2,argument:1,around:8,arrai:14,array2hexstr:14,arxiv:13,assign:8,associ:[8,11],assum:14,attribut:[6,9,10,12],attribute_nam:[9,10],attributeproto:[9,10],back:1,backend:12,base:[8,9,10,11,12,13,14],basic:[4,5,15],batchnorm:11,batchnorm_to_affin:[4,5,15],batchnormtoaffin:11,been:12,befor:14,between:[10,14],binari:[8,10,12,13,14],bipolar:[8,10,11,13,14],bipolar_to_xnor:[4,5,15],bit:[8,14],bitfil:1,bitwidth:8,blackboxfunct:10,block:12,blott:10,board:12,bool:[6,11],both:14,bram_estim:10,brevita:2,brien:10,browser:1,build:14,built:6,calc_tmem:10,calc_wmem:10,calcul:10,calculate_signed_dot_prod_rang:14,call:[1,8,10,11,12],can:[1,2,8,11,12,13,14],cannot:11,center:[],centerpiec:2,certain:6,chang:[1,8,11],check:[6,8,9,10],check_all_tensor_shapes_specifi:8,check_compat:8,cleanup:[4,5,11],clk:[10,12],clone:[1,14],code:[12,14],code_gen_dir:14,code_generation_ipgen:10,code_generation_npysim:10,codegen_ipgen:[4,5,11],codegen_ipstitch:[4,5,11],codegen_npysim:[4,5,11],collaps:13,collapse_rep:[4,5,11],collapserepeatedadd:13,collapserepeatedmul:13,collapserepeatedop:13,collect:[1,12],colloqui:2,come:[1,6],command:1,commun:2,compar:[8,9],compare_execut:8,compare_fxn:8,compat:[8,9,10],compil:[2,4,5,11],compile_singlenode_cod:10,complet:1,compon:2,comput:[1,8],consecut:13,constant:[6,8,13],construct:2,consum:8,contain:[1,2,8,9,12,14],content:[4,15],context:[8,9,10],contribut:2,convent:6,convert:[1,10,11,12,13,14],convert_to_hls_lay:[4,5,11],convertbipolarmatmultoxnorpopcount:11,convertsigntothr:13,convertsubtoadd:11,convolutioninputgener:[4,5,9],copi:[8,11,12],core:[4,5,15],corner:2,correct:11,correctli:[1,6,9,10,12],correspond:[2,8,9,10],count:10,cpp_file:14,cppbuilder:14,creat:[1,8,12,14],create_dataflow_partit:[4,5,11],createdataflowpartit:12,current:[2,8],custom:[1,2,6,8],custom_op:[4,5,15],customop:[9,10],data:[9,12,14],data_pack:[4,5,15],dataflow:[2,8,12],dataoutstrm:10,datatyp:[4,5,9,10,11,14,15],debug:8,declar:11,deep:[2,8,10,11],default_v:[9,10],default_valu:[9,10],defin:10,depend:1,deploi:1,deploy:12,deploytopynq:12,design:[1,12],detail:2,develop:2,dict:[8,9,10],dictionari:[6,8],differ:1,digit:14,dimens:14,dimension:14,dir:[12,14],directori:[1,12,14],distr_pad:14,divis:14,dnn:[],doc:2,docker:14,dockerfil:1,docomput:10,doe:1,don:11,done:6,dot:14,down:1,driver:12,dt_a:14,dt_b:14,dtype:[6,8,9,10,14],dynam:6,dynamic_input_to_npi:10,each:[2,6,8,11,13,14],editor:1,effect:11,either:1,element:14,embed:8,emit:14,emphasi:2,empti:8,end:10,ensur:[10,11,12,14],entir:1,enumer:[8,11],environ:1,equal:[9,10],equival:13,estim:7,even:11,evenli:14,everi:11,everyth:1,exampl:[1,14],excel:1,exec_precompiled_singlenode_model:10,execut:[8,9,10],execute_custom_nod:[4,5,15],execute_nod:[8,9,10],execute_onnx:8,execute_onnx_and_make_model:8,execution_context:8,exist:[9,14],exit:14,expect:[6,8,9,10,12],experi:2,experiment:2,explor:[2,8,10],expos:8,extens:1,extra:[1,6,14],extract:[6,7],f5c6bd32ae93ec103a88152214baedff4ce1850d81065bfc:1,factor:14,factoroutmulsignmagnitud:13,fals:[8,11,14],familiar:1,fan:6,fast:10,fewest:8,field:[12,14],file:[1,8,12,14],filenam:[8,12],find:8,find_consum:8,find_produc:8,finn:4,finn_dt:14,finnpy_to_packed_bytearrai:14,first:[6,13],fix:[11,14],flatten:14,float32:[6,8],flow:[],fold_const:[4,5,15],foldconst:11,folder:[1,12,14],follow:[1,2,6,12],form:10,forward:1,found:[2,12],four:14,fpga:[1,2],fpgadataflow:[4,5,6,9,11,15],fpgapart:[10,12],framework:[2,10],fraser:10,from:[1,2,7,8,12,14],full:8,further:11,gambardella:10,gen_finn_dt_tensor:14,gener:[2,4,5,12,14,15],generate_param:10,get:[8,9],get_all_tensor_nam:8,get_by_nam:14,get_finn_root:14,get_folded_input_shap:10,get_folded_output_shap:10,get_hls_compatible_threshold_tensor:10,get_hls_compatible_weight_tensor:10,get_hls_datatype_str:8,get_initi:8,get_input_datatyp:10,get_instream_width:10,get_metadata_prop:8,get_nodeattr:9,get_nodeattr_typ:[9,10],get_num_possible_valu:8,get_number_output_valu:10,get_output_datatyp:10,get_outstream_width:10,get_per_tensor_fanout:6,get_smallest_poss:8,get_stream_width:10,get_template_param_valu:10,get_tensor_datatyp:8,get_tensor_fanout:8,get_tensor_shap:8,get_tensor_valueinfo:8,get_test_model_def_fxn:14,get_test_model_train:14,get_test_model_untrain:14,get_trained_checkpoint:14,get_weight_datatyp:10,getcustomop:9,github:2,give:[1,11,13],give_unique_node_nam:11,given:[6,7,8,9,10,14],giverandomtensornam:11,givereadabletensornam:11,giveuniquenodenam:11,global_includ:10,graph:[6,8,9,10,11,12],graphic:2,guarante:11,guid:[4,5],hand:2,has:[6,8,11,12,14],have:[1,6,8,11,12,13],height:[],help:1,hex:14,hexstr:14,hexstring2npbytearrai:14,high:1,highli:2,hls_synth_res_estim:[4,5,6],hls_var_nam:14,hlscustomop:10,hlslib:[2,10],hlssynth_ipgen:[4,5,11],homepag:2,host:[1,14],how:[4,5,14],http:1,human:11,imag:[],img:[],immedi:12,implement:8,includ:[2,8,12],index:[],indic:[8,9,10,11,12],infer:[1,2,8,9,10,11,14],infer_datatyp:[4,5,15],infer_node_datatyp:[9,10],infer_shap:[4,5,15],inferbinarystreamingfclay:12,inferdatatyp:11,infershap:11,infinit:11,info:[11,14],info_messag:6,inform:[6,12],infrastructur:12,inherit:11,initi:[6,8],innermost:14,inp0:9,inp1:9,inp:10,input:[6,8,9,10,11,13,14],input_dict:8,input_dtyp:14,input_fil:14,insert:[12,14],insert_tlastmark:[4,5,11],inserttlastmark:12,insid:[1,9],instal:1,instanc:[8,9,10,13],instanti:12,instead:14,int16:8,int2:8,int32:8,int3:8,int4:8,int8:8,integ:[8,13,14],intend:[],interfac:12,interleav:10,interleave_matrix_outer_dim_from_partit:14,intermedi:[8,11],intern:11,involv:1,ipgen_singlenode_cod:10,ipgenbuild:14,is_integ:8,is_linear:6,item:14,jupyt:2,kei:8,know:11,lab:2,lambda:8,largest:8,launch:1,layer:[11,12],lead:14,learn:[2,10],leeser:10,len:14,let:11,letter:14,librari:2,library_path:14,like:1,linear:[6,8],link:[1,2],list:[6,8],locat:1,look:[1,6],loop:11,lut_estim:10,made:[8,11],magnitud:13,mai:1,make:[1,11,12],make_build_dir:14,make_collapsed_param_fxn:13,make_deepcopi:8,make_deploy:[4,5,11],make_empty_exec_context:8,make_new_valueinfo_nam:8,make_project:12,make_pynq_driv:[4,5,11],make_pynq_proj:[4,5,11],make_shape_compatible_op:[9,10],makepynqdriv:12,makepynqproject:12,mani:1,manipul:8,manual:11,matmul:[11,13],matrix:[10,13,14],max:[8,14],mean:14,meant:11,member:[9,10],metadata_prop:[8,12],min:[8,14],minimum:14,mixtur:6,mkdtemp:14,mode:[1,12],model:[6,7,8,9,10,11,12,13,14],model_a:8,model_b:8,model_was_chang:11,modelproto:[8,12],modelwrapp:[4,5,6,11,15],modul:[4,15],modular:2,more:[2,8,11,14],mount:1,move:13,moveaddpastmul:13,movescalaraddpastmatmul:13,movescalarmulpastmatmul:13,mul:[11,13],multidimension:14,multipl:[11,13,14],multipli:13,multithreshold:[4,5,12,13,15],must:[9,11,12,13,14],mvtu:12,n_partit:14,n_thres_step:10,name:[6,7,8,9,11,14],name_field:14,ndarrai:14,nearest:[13,14],necessari:12,need:[7,9,10,11],neg:[8,13],netnam:14,netron:1,network:[1,2,10],neural:[2,10],new_nam:8,next:13,no_decl:14,node:[6,7,8,9,10,11,12,13],node_inputs_in_expected_ord:6,node_res_estim:10,non:12,none:[8,9,14],note:1,notebook:2,notwithstand:6,now:[6,8],npbytearrai:14,npbytearray2hexstr:14,npy:14,npy_to_dynamic_output:10,npy_to_rtlsim_input:14,number:[8,9,10,14],numpi:[10,14],numpy_to_hls_cod:14,object:[8,14],old_nam:8,onc:11,one:[6,8,12,14],ones:1,onli:[6,8,11,12,13],onlin:1,onnx:[4,5,8,9,10,12,15],onnx_exec:[4,5,15],onnx_model_proto:8,onnx_nod:[9,10],onnxruntim:8,op_nam:13,op_typ:6,open:1,oper:[8,13],ops:[6,13],option:1,order:6,orig_thres_matrix:10,orig_weight_matrix:10,origin:10,other:[8,13],otherwis:[1,8,11,14],out:6,out_bia:9,out_scal:9,out_shap:14,outcom:12,output:[8,9,10,11,14],output_shap:14,overlai:12,overview:2,own:1,pack:[12,14],pack_innermost_dim:14,pack_innermost_dim_as_hex_str:14,packag:[4,15],packed_bytearrai:14,packed_bytearray_to_finnpi:14,packedbit:14,pad:14,pad_tensor_to_multiple_of:14,pad_to_dim:14,pad_to_nbit:14,page:[],pair:12,paramet:13,part:[9,14],particular:[9,10,14],partit:8,pass:[4,5,10],password:12,past:13,path:[10,14],per:12,perform:[1,9,10],permit:[9,10],place:12,platform:12,png:[],point:[1,11],port:1,posit:[10,13,14],possibl:[8,12],pragma:10,preced:13,precid:13,precis:14,precomput:11,prefer:8,prefix:14,prepend:14,preusser:10,previous:12,print:1,prior:[11,12,14],process:1,produc:[6,8],product:14,project:[2,12],properti:[6,8],provid:[1,8],pushbutton:1,pynq:12,pynq_driver_dir:12,python:[1,12,14],pyveril:[8,14],pyverilate_stitched_ip:14,qnn:[1,2],quantiz:[2,6,10],random:[11,14],random_str:14,randomli:14,rather:1,reach:11,read:2,read_npy_data:10,readabl:11,readthedoc:[],recommend:11,refer:2,reflect:1,registri:[4,5,15],relat:2,remot:8,remote_exec:[4,5,15],remov:[12,14],remove_by_nam:14,remove_prefix:14,renam:8,rename_tensor:8,reorder:[4,5,11],repeat:[11,13],repeatedli:8,replac:11,repo:1,repositori:[1,2],repositroi:[],repres:[8,14],represent:14,requir:[8,9,10],res_estim:[4,5,6],research:2,reset_rtlsim:10,reshap:10,resourc:[1,7],respect:14,result:[6,7,8,11,12,13,14],return_full_exec_context:8,returned_dict:[9,10],revers:14,reverse_endian:14,reverse_inn:14,right:2,root:[1,14],round:[13,14],round_threshold:[4,5,11],roundandclipthreshold:13,roundup_to_integer_multipl:14,row:10,rtlsim:[8,10],rtlsim_exec:[4,5,15],rtlsim_output_to_npi:14,run:[8,12],run_dock:1,same:[12,14],save:[8,14],save_as_npi:10,scalar:13,scale:[],scp:12,script:[1,12],search:[],second:[12,13],see:[13,14],seen:2,sep:10,separ:2,sequenc:14,server:1,set:[1,8,9,10,12,13,14],set_attribut:[],set_exec_mod:[4,5,11],set_executable_path:14,set_initi:8,set_ipgen_path:14,set_metadata_prop:8,set_nodeattr:9,set_sim_mod:[],set_tensor_datatyp:8,set_tensor_shap:8,setexecmod:12,setsimmod:[],settings64:1,sever:1,shape:[8,9,10,11,14],shell:12,should:[1,6,8,11],sign:[8,11,13,14],sign_to_thr:[4,5,11],sim:[10,14],sim_mod:12,simd:10,simpli:1,sinc:[8,14],singl:[1,8,13,14],small:6,smallest:8,some:[1,2,8,11],someth:1,space:[],spawn:1,specif:2,specifi:[8,11,14],split:[12,13,14],stai:2,standard:[8,9,10],stitch:[8,12,14],store:[9,12,14],streamingdataflowpartit:[4,5,12,15],streamingfclayer_batch:[4,5,9,12],streamingmaxpool_batch:[4,5,9],streamlin:[4,5,11],string:[6,14],stringlength:14,strm_decl:10,structur:6,style:2,sub:11,subdirectori:12,subgraph:8,submodul:[4,5,15],subpackag:[4,15],subset:6,success:12,suitabl:10,sure:1,surviv:14,synth_pynq_proj:[4,5,11],synthesi:[7,12],synthpynqproject:12,take:[1,6,8,11,13,14],taken:[2,8,12],target:[2,12],target_dir:12,targetbit:14,tcl:12,tcl_script:14,tempfil:14,templat:[4,5,9,11],temporari:14,tensor:[6,8,11,13,14],tensor_fanout:6,tensor_nam:[6,8],tensor_shap:[8,14],tensor_valu:8,termin:[1,12],ternari:8,test:[4,5,11,15],text:1,thei:13,them:[6,12,13],thi:[1,2,6,8,9,10,11,12,14],thing:2,thought:1,threshold:[9,10,13],time:[1,11],tlastmark:[4,5,9,12],tmem:10,togeth:12,toggle_clk:10,token:1,tool:[1,2],topolog:[4,5,15],train:[1,2],transform:[4,5,8,15],transformed_model:11,travers:6,tune:2,tupl:11,two:[2,8,12,13,14],type:[8,11,14],ubuntu:1,uint16:8,uint2:[8,14],uint32:8,uint3:8,uint4:8,uint8:[8,14],umuroglu:10,under:[2,12],uniqu:11,unpack:[12,14],unpack_innermost_dim_from_hex_str:14,unsign:[8,13],until:8,updat:[2,13],upper:2,use:2,used:[2,8,9,10,14],useful:8,user:11,usernam:12,using:[2,8,11,13,14],util:[4,5,8,9,10,15],val:14,valu:[8,9,10,12,13,14],value_info:8,valueinfo:[8,11],valueinfo_to_tensor:14,valueinfoproto:[8,14],variabl:[1,14],vector:[13,14],verif:6,verifi:[6,9,10],verify_custom_nod:[4,5,15],verify_nod:[6,9,10],version:2,via:8,view:2,visser:10,vivado:[1,2,7,8,12],vivado_path:1,vivado_pynq_proj:12,vivado_stitch_proj:12,wai:[1,6],want:13,wbit:14,websit:2,weight:[8,10],welcom:2,well:1,when:[6,11],where:[1,8,9,10,12,13],whether:[6,8,9,10,11],which:[1,2,8,9,10,12,13,14],width:14,without:1,wmem:10,work:[1,8,14],workspac:1,wrapper:8,write:[1,4,5],xdnn:[],xilinx:2,xnorpopcount:[4,5,15],xnorpopcountmatmul:[9,11,12],you:[1,11],your:[1,11],zero:[8,13,14]},titles:["FINN - End-to-End Flow","Getting Started","FINN","src","Source Code","finn package","finn.analysis package","finn.analysis.fpgadataflow package","finn.core package","finn.custom_op package","finn.custom_op.fpgadataflow package","finn.transformation package","finn.transformation.fpgadataflow package","finn.transformation.streamline package","finn.util package","finn"],titleterms:{absorb:13,analysi:[6,7],basic:14,batchnorm_to_affin:11,bipolar_to_xnor:11,cleanup:12,code:4,codegen_ipgen:12,codegen_ipstitch:12,codegen_npysim:12,collapse_rep:13,compil:[1,12],content:[5,6,7,8,9,10,11,12,13,14],convert_to_hls_lay:12,convolutioninputgener:10,core:8,create_dataflow_partit:12,custom_op:[9,10],data_pack:14,datatyp:8,develop:1,directli:1,docker:1,document:[],end:0,execute_custom_nod:8,experiment:1,finn:[0,1,2,5,6,7,8,9,10,11,12,13,14,15],flow:0,fold_const:11,fpgadataflow:[7,10,12,14],gener:11,get:1,guid:11,hls_synth_res_estim:7,hlssynth_ipgen:12,how:[1,6],indic:[],infer_datatyp:11,infer_shap:11,insert_tlastmark:12,interact:1,jenkin:1,jupyt:1,make_deploy:12,make_pynq_driv:12,make_pynq_proj:12,modelwrapp:8,modul:[5,6,7,8,9,10,11,12,13,14],multithreshold:9,notebook:1,onnx:14,onnx_exec:8,packag:[5,6,7,8,9,10,11,12,13,14],pass:6,registri:9,remote_exec:8,reorder:13,requir:1,res_estim:7,round_threshold:13,rtlsim_exec:8,run:1,set_exec_mod:12,set_sim_mod:[],shell:1,sign_to_thr:13,sourc:4,src:3,start:1,streamingdataflowpartit:9,streamingfclayer_batch:10,streamingmaxpool_batch:10,streamlin:13,submodul:[6,7,8,9,10,11,12,13,14],subpackag:[5,6,9,11],suit:1,synth_pynq_proj:12,tabl:[],templat:[10,12],test:[1,14],tlastmark:10,topolog:6,transform:[11,12,13],use:1,using:1,util:14,verify_custom_nod:6,welcom:[],what:2,write:[6,11],xnorpopcount:9}}) \ No newline at end of file +Search.setIndex({docnames:["end_to_end_flow","getting_started","index","modules","source_code","source_code/finn","source_code/finn.analysis","source_code/finn.analysis.fpgadataflow","source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation","source_code/finn.analysis.fpgadataflow.res_estimation","source_code/finn.analysis.topology","source_code/finn.analysis.verify_custom_nodes","source_code/finn.core","source_code/finn.core.datatype","source_code/finn.core.execute_custom_node","source_code/finn.core.modelwrapper","source_code/finn.core.onnx_exec","source_code/finn.core.remote_exec","source_code/finn.core.rtlsim_exec","source_code/finn.custom_op","source_code/finn.custom_op.fpgadataflow","source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator","source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch","source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch","source_code/finn.custom_op.fpgadataflow.templates","source_code/finn.custom_op.fpgadataflow.tlastmarker","source_code/finn.custom_op.multithreshold","source_code/finn.custom_op.registry","source_code/finn.custom_op.streamingdataflowpartition","source_code/finn.custom_op.xnorpopcount","source_code/finn.transformation","source_code/finn.transformation.batchnorm_to_affine","source_code/finn.transformation.bipolar_to_xnor","source_code/finn.transformation.fold_constants","source_code/finn.transformation.fpgadataflow","source_code/finn.transformation.fpgadataflow.cleanup","source_code/finn.transformation.fpgadataflow.codegen_ipgen","source_code/finn.transformation.fpgadataflow.codegen_ipstitch","source_code/finn.transformation.fpgadataflow.codegen_npysim","source_code/finn.transformation.fpgadataflow.compile","source_code/finn.transformation.fpgadataflow.convert_to_hls_layers","source_code/finn.transformation.fpgadataflow.create_dataflow_partition","source_code/finn.transformation.fpgadataflow.hlssynth_ipgen","source_code/finn.transformation.fpgadataflow.insert_tlastmarker","source_code/finn.transformation.fpgadataflow.make_deployment","source_code/finn.transformation.fpgadataflow.make_pynq_driver","source_code/finn.transformation.fpgadataflow.make_pynq_proj","source_code/finn.transformation.fpgadataflow.set_exec_mode","source_code/finn.transformation.fpgadataflow.synth_pynq_proj","source_code/finn.transformation.fpgadataflow.templates","source_code/finn.transformation.general","source_code/finn.transformation.infer_datatypes","source_code/finn.transformation.infer_shapes","source_code/finn.transformation.streamline","source_code/finn.transformation.streamline.absorb","source_code/finn.transformation.streamline.collapse_repeated","source_code/finn.transformation.streamline.reorder","source_code/finn.transformation.streamline.round_thresholds","source_code/finn.transformation.streamline.sign_to_thres","source_code/finn.util","source_code/finn.util.basic","source_code/finn.util.data_packing","source_code/finn.util.fpgadataflow","source_code/finn.util.onnx","source_code/finn.util.test","source_code/modules"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:56},filenames:["end_to_end_flow.rst","getting_started.rst","index.rst","modules.rst","source_code.rst","source_code/finn.rst","source_code/finn.analysis.rst","source_code/finn.analysis.fpgadataflow.rst","source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst","source_code/finn.analysis.fpgadataflow.res_estimation.rst","source_code/finn.analysis.topology.rst","source_code/finn.analysis.verify_custom_nodes.rst","source_code/finn.core.rst","source_code/finn.core.datatype.rst","source_code/finn.core.execute_custom_node.rst","source_code/finn.core.modelwrapper.rst","source_code/finn.core.onnx_exec.rst","source_code/finn.core.remote_exec.rst","source_code/finn.core.rtlsim_exec.rst","source_code/finn.custom_op.rst","source_code/finn.custom_op.fpgadataflow.rst","source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst","source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst","source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst","source_code/finn.custom_op.fpgadataflow.templates.rst","source_code/finn.custom_op.fpgadataflow.tlastmarker.rst","source_code/finn.custom_op.multithreshold.rst","source_code/finn.custom_op.registry.rst","source_code/finn.custom_op.streamingdataflowpartition.rst","source_code/finn.custom_op.xnorpopcount.rst","source_code/finn.transformation.rst","source_code/finn.transformation.batchnorm_to_affine.rst","source_code/finn.transformation.bipolar_to_xnor.rst","source_code/finn.transformation.fold_constants.rst","source_code/finn.transformation.fpgadataflow.rst","source_code/finn.transformation.fpgadataflow.cleanup.rst","source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst","source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst","source_code/finn.transformation.fpgadataflow.codegen_npysim.rst","source_code/finn.transformation.fpgadataflow.compile.rst","source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst","source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst","source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst","source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst","source_code/finn.transformation.fpgadataflow.make_deployment.rst","source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst","source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst","source_code/finn.transformation.fpgadataflow.set_exec_mode.rst","source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst","source_code/finn.transformation.fpgadataflow.templates.rst","source_code/finn.transformation.general.rst","source_code/finn.transformation.infer_datatypes.rst","source_code/finn.transformation.infer_shapes.rst","source_code/finn.transformation.streamline.rst","source_code/finn.transformation.streamline.absorb.rst","source_code/finn.transformation.streamline.collapse_repeated.rst","source_code/finn.transformation.streamline.reorder.rst","source_code/finn.transformation.streamline.round_thresholds.rst","source_code/finn.transformation.streamline.sign_to_thres.rst","source_code/finn.util.rst","source_code/finn.util.basic.rst","source_code/finn.util.data_packing.rst","source_code/finn.util.fpgadataflow.rst","source_code/finn.util.onnx.rst","source_code/finn.util.test.rst","source_code/modules.rst"],objects:{"":{finn:[5,0,0,"-"]},"finn.analysis":{fpgadataflow:[7,0,0,"-"],topology:[10,0,0,"-"],verify_custom_nodes:[11,0,0,"-"]},"finn.analysis.fpgadataflow":{hls_synth_res_estimation:[8,0,0,"-"],res_estimation:[9,0,0,"-"]},"finn.analysis.fpgadataflow.hls_synth_res_estimation":{hls_synth_res_estimation:[8,1,1,""]},"finn.analysis.fpgadataflow.res_estimation":{res_estimation:[9,1,1,""]},"finn.analysis.topology":{all_tensors_f32:[10,1,1,""],get_per_tensor_fanouts:[10,1,1,""],is_linear:[10,1,1,""],node_inputs_in_expected_order:[10,1,1,""]},"finn.analysis.verify_custom_nodes":{verify_nodes:[11,1,1,""]},"finn.core":{datatype:[13,0,0,"-"],execute_custom_node:[14,0,0,"-"],modelwrapper:[15,0,0,"-"],onnx_exec:[16,0,0,"-"],remote_exec:[17,0,0,"-"],rtlsim_exec:[18,0,0,"-"]},"finn.core.datatype":{DataType:[13,2,1,""]},"finn.core.datatype.DataType":{BINARY:[13,3,1,""],BIPOLAR:[13,3,1,""],FLOAT32:[13,3,1,""],INT16:[13,3,1,""],INT2:[13,3,1,""],INT32:[13,3,1,""],INT3:[13,3,1,""],INT4:[13,3,1,""],INT8:[13,3,1,""],TERNARY:[13,3,1,""],UINT16:[13,3,1,""],UINT2:[13,3,1,""],UINT32:[13,3,1,""],UINT3:[13,3,1,""],UINT4:[13,3,1,""],UINT8:[13,3,1,""],allowed:[13,4,1,""],bitwidth:[13,4,1,""],get_hls_datatype_str:[13,4,1,""],get_num_possible_values:[13,4,1,""],get_smallest_possible:[13,4,1,""],is_integer:[13,4,1,""],max:[13,4,1,""],min:[13,4,1,""],signed:[13,4,1,""]},"finn.core.execute_custom_node":{execute_custom_node:[14,1,1,""]},"finn.core.modelwrapper":{ModelWrapper:[15,2,1,""]},"finn.core.modelwrapper.ModelWrapper":{analysis:[15,4,1,""],check_all_tensor_shapes_specified:[15,4,1,""],check_compatibility:[15,4,1,""],find_consumer:[15,4,1,""],find_producer:[15,4,1,""],get_all_tensor_names:[15,4,1,""],get_initializer:[15,4,1,""],get_metadata_prop:[15,4,1,""],get_tensor_datatype:[15,4,1,""],get_tensor_fanout:[15,4,1,""],get_tensor_shape:[15,4,1,""],get_tensor_valueinfo:[15,4,1,""],graph:[15,4,1,""],make_empty_exec_context:[15,4,1,""],make_new_valueinfo_name:[15,4,1,""],model:[15,4,1,""],rename_tensor:[15,4,1,""],save:[15,4,1,""],set_initializer:[15,4,1,""],set_metadata_prop:[15,4,1,""],set_tensor_datatype:[15,4,1,""],set_tensor_shape:[15,4,1,""],transform:[15,4,1,""]},"finn.core.onnx_exec":{compare_execution:[16,1,1,""],execute_node:[16,1,1,""],execute_onnx:[16,1,1,""],execute_onnx_and_make_model:[16,1,1,""]},"finn.core.remote_exec":{remote_exec:[17,1,1,""]},"finn.core.rtlsim_exec":{rtlsim_exec:[18,1,1,""]},"finn.custom_op":{CustomOp:[19,2,1,""],fpgadataflow:[20,0,0,"-"],multithreshold:[26,0,0,"-"],registry:[27,0,0,"-"],streamingdataflowpartition:[28,0,0,"-"],xnorpopcount:[29,0,0,"-"]},"finn.custom_op.CustomOp":{execute_node:[19,4,1,""],get_nodeattr:[19,4,1,""],get_nodeattr_types:[19,4,1,""],infer_node_datatype:[19,4,1,""],make_shape_compatible_op:[19,4,1,""],set_nodeattr:[19,4,1,""],verify_node:[19,4,1,""]},"finn.custom_op.fpgadataflow":{HLSCustomOp:[20,2,1,""],convolutioninputgenerator:[21,0,0,"-"],streamingfclayer_batch:[22,0,0,"-"],streamingmaxpool_batch:[23,0,0,"-"],templates:[24,0,0,"-"],tlastmarker:[25,0,0,"-"]},"finn.custom_op.fpgadataflow.HLSCustomOp":{blackboxfunction:[20,4,1,""],bram_estimation:[20,4,1,""],code_generation_ipgen:[20,4,1,""],code_generation_npysim:[20,4,1,""],compile_singlenode_code:[20,4,1,""],dataoutstrm:[20,4,1,""],defines:[20,4,1,""],docompute:[20,4,1,""],dynamic_input_to_npy:[20,4,1,""],exec_precompiled_singlenode_model:[20,4,1,""],execute_node:[20,4,1,""],generate_params:[20,4,1,""],get_folded_input_shape:[20,4,1,""],get_folded_output_shape:[20,4,1,""],get_instream_width:[20,4,1,""],get_nodeattr_types:[20,4,1,""],get_number_output_values:[20,4,1,""],get_outstream_width:[20,4,1,""],global_includes:[20,4,1,""],ipgen_singlenode_code:[20,4,1,""],lut_estimation:[20,4,1,""],node_res_estimation:[20,4,1,""],npy_to_dynamic_output:[20,4,1,""],pragmas:[20,4,1,""],read_npy_data:[20,4,1,""],reset_rtlsim:[20,4,1,""],rtlsim:[20,4,1,""],save_as_npy:[20,4,1,""],strm_decl:[20,4,1,""],toggle_clk:[20,4,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator":{ConvolutionInputGenerator:[21,2,1,""]},"finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator":{blackboxfunction:[21,4,1,""],bram_estimation:[21,4,1,""],dataoutstrm:[21,4,1,""],defines:[21,4,1,""],docompute:[21,4,1,""],execute_node:[21,4,1,""],get_input_datatype:[21,4,1,""],get_nodeattr_types:[21,4,1,""],get_number_output_values:[21,4,1,""],get_output_datatype:[21,4,1,""],get_stream_width:[21,4,1,""],global_includes:[21,4,1,""],infer_node_datatype:[21,4,1,""],lut_estimation:[21,4,1,""],make_shape_compatible_op:[21,4,1,""],pragmas:[21,4,1,""],read_npy_data:[21,4,1,""],save_as_npy:[21,4,1,""],strm_decl:[21,4,1,""],verify_node:[21,4,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch":{StreamingFCLayer_Batch:[22,2,1,""]},"finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch":{blackboxfunction:[22,4,1,""],bram_estimation:[22,4,1,""],calc_tmem:[22,4,1,""],calc_wmem:[22,4,1,""],dataoutstrm:[22,4,1,""],defines:[22,4,1,""],docompute:[22,4,1,""],execute_node:[22,4,1,""],generate_params:[22,4,1,""],get_folded_input_shape:[22,4,1,""],get_folded_output_shape:[22,4,1,""],get_hls_compatible_threshold_tensor:[22,4,1,""],get_hls_compatible_weight_tensor:[22,4,1,""],get_input_datatype:[22,4,1,""],get_instream_width:[22,4,1,""],get_nodeattr_types:[22,4,1,""],get_number_output_values:[22,4,1,""],get_output_datatype:[22,4,1,""],get_outstream_width:[22,4,1,""],get_template_param_values:[22,4,1,""],get_weight_datatype:[22,4,1,""],global_includes:[22,4,1,""],infer_node_datatype:[22,4,1,""],lut_estimation:[22,4,1,""],make_shape_compatible_op:[22,4,1,""],pragmas:[22,4,1,""],read_npy_data:[22,4,1,""],save_as_npy:[22,4,1,""],strm_decl:[22,4,1,""],verify_node:[22,4,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch":{StreamingMaxPool_Batch:[23,2,1,""]},"finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch":{blackboxfunction:[23,4,1,""],bram_estimation:[23,4,1,""],dataoutstrm:[23,4,1,""],defines:[23,4,1,""],docompute:[23,4,1,""],get_nodeattr_types:[23,4,1,""],get_number_output_values:[23,4,1,""],global_includes:[23,4,1,""],infer_node_datatype:[23,4,1,""],lut_estimation:[23,4,1,""],make_shape_compatible_op:[23,4,1,""],pragmas:[23,4,1,""],read_npy_data:[23,4,1,""],save_as_npy:[23,4,1,""],strm_decl:[23,4,1,""],verify_node:[23,4,1,""]},"finn.custom_op.fpgadataflow.tlastmarker":{TLastMarker:[25,2,1,""]},"finn.custom_op.fpgadataflow.tlastmarker.TLastMarker":{blackboxfunction:[25,4,1,""],dataoutstrm:[25,4,1,""],defines:[25,4,1,""],docompute:[25,4,1,""],execute_node:[25,4,1,""],get_folded_input_shape:[25,4,1,""],get_folded_output_shape:[25,4,1,""],get_instream_width:[25,4,1,""],get_nodeattr_types:[25,4,1,""],get_number_output_values:[25,4,1,""],get_outstream_width:[25,4,1,""],global_includes:[25,4,1,""],infer_node_datatype:[25,4,1,""],make_shape_compatible_op:[25,4,1,""],pragmas:[25,4,1,""],read_npy_data:[25,4,1,""],save_as_npy:[25,4,1,""],strm_decl:[25,4,1,""],verify_node:[25,4,1,""]},"finn.custom_op.multithreshold":{MultiThreshold:[26,2,1,""],compare:[26,1,1,""],multithreshold:[26,1,1,""]},"finn.custom_op.multithreshold.MultiThreshold":{execute_node:[26,4,1,""],get_nodeattr_types:[26,4,1,""],infer_node_datatype:[26,4,1,""],make_shape_compatible_op:[26,4,1,""],verify_node:[26,4,1,""]},"finn.custom_op.registry":{getCustomOp:[27,1,1,""]},"finn.custom_op.streamingdataflowpartition":{StreamingDataflowPartition:[28,2,1,""]},"finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition":{execute_node:[28,4,1,""],get_nodeattr_types:[28,4,1,""],infer_node_datatype:[28,4,1,""],make_shape_compatible_op:[28,4,1,""],verify_node:[28,4,1,""]},"finn.custom_op.xnorpopcount":{XnorPopcountMatMul:[29,2,1,""],xnorpopcountmatmul:[29,1,1,""]},"finn.custom_op.xnorpopcount.XnorPopcountMatMul":{execute_node:[29,4,1,""],get_nodeattr_types:[29,4,1,""],infer_node_datatype:[29,4,1,""],make_shape_compatible_op:[29,4,1,""],verify_node:[29,4,1,""]},"finn.transformation":{Transformation:[30,2,1,""],batchnorm_to_affine:[31,0,0,"-"],bipolar_to_xnor:[32,0,0,"-"],fold_constants:[33,0,0,"-"],fpgadataflow:[34,0,0,"-"],general:[50,0,0,"-"],infer_datatypes:[51,0,0,"-"],infer_shapes:[52,0,0,"-"],streamline:[53,0,0,"-"]},"finn.transformation.Transformation":{apply:[30,4,1,""]},"finn.transformation.batchnorm_to_affine":{BatchNormToAffine:[31,2,1,""]},"finn.transformation.batchnorm_to_affine.BatchNormToAffine":{apply:[31,4,1,""]},"finn.transformation.bipolar_to_xnor":{ConvertBipolarMatMulToXnorPopcount:[32,2,1,""]},"finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount":{apply:[32,4,1,""]},"finn.transformation.fold_constants":{FoldConstants:[33,2,1,""]},"finn.transformation.fold_constants.FoldConstants":{apply:[33,4,1,""]},"finn.transformation.fpgadataflow":{cleanup:[35,0,0,"-"],codegen_ipgen:[36,0,0,"-"],codegen_ipstitch:[37,0,0,"-"],codegen_npysim:[38,0,0,"-"],compile:[39,0,0,"-"],convert_to_hls_layers:[40,0,0,"-"],create_dataflow_partition:[41,0,0,"-"],hlssynth_ipgen:[42,0,0,"-"],insert_tlastmarker:[43,0,0,"-"],make_deployment:[44,0,0,"-"],make_pynq_driver:[45,0,0,"-"],make_pynq_proj:[46,0,0,"-"],set_exec_mode:[47,0,0,"-"],synth_pynq_proj:[48,0,0,"-"],templates:[49,0,0,"-"]},"finn.transformation.fpgadataflow.cleanup":{CleanUp:[35,2,1,""]},"finn.transformation.fpgadataflow.cleanup.CleanUp":{apply:[35,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen":{CodeGen_ipgen:[36,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen":{apply:[36,4,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch":{CodeGen_ipstitch:[37,2,1,""]},"finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch":{apply:[37,4,1,""]},"finn.transformation.fpgadataflow.codegen_npysim":{CodeGen_npysim:[38,2,1,""]},"finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim":{apply:[38,4,1,""]},"finn.transformation.fpgadataflow.compile":{Compile:[39,2,1,""]},"finn.transformation.fpgadataflow.compile.Compile":{apply:[39,4,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers":{InferBinaryStreamingFCLayer:[40,2,1,""]},"finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer":{apply:[40,4,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition":{CreateDataflowPartition:[41,2,1,""]},"finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition":{apply:[41,4,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen":{HLSSynth_IPGen:[42,2,1,""]},"finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen":{apply:[42,4,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker":{InsertTLastMarker:[43,2,1,""]},"finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker":{apply:[43,4,1,""]},"finn.transformation.fpgadataflow.make_deployment":{DeployToPYNQ:[44,2,1,""]},"finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ":{apply:[44,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver":{MakePYNQDriver:[45,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver":{apply:[45,4,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj":{MakePYNQProject:[46,2,1,""]},"finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject":{apply:[46,4,1,""]},"finn.transformation.fpgadataflow.set_exec_mode":{SetExecMode:[47,2,1,""]},"finn.transformation.fpgadataflow.set_exec_mode.SetExecMode":{apply:[47,4,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj":{SynthPYNQProject:[48,2,1,""]},"finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject":{apply:[48,4,1,""]},"finn.transformation.general":{ConvertSubToAdd:[50,2,1,""],GiveRandomTensorNames:[50,2,1,""],GiveReadableTensorNames:[50,2,1,""],GiveUniqueNodeNames:[50,2,1,""]},"finn.transformation.general.ConvertSubToAdd":{apply:[50,4,1,""]},"finn.transformation.general.GiveRandomTensorNames":{apply:[50,4,1,""]},"finn.transformation.general.GiveReadableTensorNames":{apply:[50,4,1,""]},"finn.transformation.general.GiveUniqueNodeNames":{apply:[50,4,1,""]},"finn.transformation.infer_datatypes":{InferDataTypes:[51,2,1,""]},"finn.transformation.infer_datatypes.InferDataTypes":{apply:[51,4,1,""]},"finn.transformation.infer_shapes":{InferShapes:[52,2,1,""]},"finn.transformation.infer_shapes.InferShapes":{apply:[52,4,1,""]},"finn.transformation.streamline":{Streamline:[53,2,1,""],absorb:[54,0,0,"-"],collapse_repeated:[55,0,0,"-"],reorder:[56,0,0,"-"],round_thresholds:[57,0,0,"-"],sign_to_thres:[58,0,0,"-"]},"finn.transformation.streamline.Streamline":{apply:[53,4,1,""]},"finn.transformation.streamline.absorb":{Absorb1BitMulIntoMatMul:[54,2,1,""],AbsorbAddIntoMultiThreshold:[54,2,1,""],AbsorbMulIntoMultiThreshold:[54,2,1,""],FactorOutMulSignMagnitude:[54,2,1,""]},"finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul":{apply:[54,4,1,""]},"finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold":{apply:[54,4,1,""]},"finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold":{apply:[54,4,1,""]},"finn.transformation.streamline.absorb.FactorOutMulSignMagnitude":{apply:[54,4,1,""]},"finn.transformation.streamline.collapse_repeated":{CollapseRepeatedAdd:[55,2,1,""],CollapseRepeatedMul:[55,2,1,""],CollapseRepeatedOp:[55,2,1,""]},"finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp":{apply:[55,4,1,""]},"finn.transformation.streamline.reorder":{MoveAddPastMul:[56,2,1,""],MoveScalarAddPastMatMul:[56,2,1,""],MoveScalarMulPastMatMul:[56,2,1,""]},"finn.transformation.streamline.reorder.MoveAddPastMul":{apply:[56,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarAddPastMatMul":{apply:[56,4,1,""]},"finn.transformation.streamline.reorder.MoveScalarMulPastMatMul":{apply:[56,4,1,""]},"finn.transformation.streamline.round_thresholds":{RoundAndClipThresholds:[57,2,1,""]},"finn.transformation.streamline.round_thresholds.RoundAndClipThresholds":{apply:[57,4,1,""]},"finn.transformation.streamline.sign_to_thres":{ConvertSignToThres:[58,2,1,""]},"finn.transformation.streamline.sign_to_thres.ConvertSignToThres":{apply:[58,4,1,""]},"finn.util":{basic:[60,0,0,"-"],data_packing:[61,0,0,"-"],fpgadataflow:[62,0,0,"-"],onnx:[63,0,0,"-"],test:[64,0,0,"-"]},"finn.util.basic":{CppBuilder:[60,2,1,""],calculate_signed_dot_prod_range:[60,1,1,""],gen_finn_dt_tensor:[60,1,1,""],get_by_name:[60,1,1,""],get_finn_root:[60,1,1,""],interleave_matrix_outer_dim_from_partitions:[60,1,1,""],make_build_dir:[60,1,1,""],pad_tensor_to_multiple_of:[60,1,1,""],random_string:[60,1,1,""],remove_by_name:[60,1,1,""],roundup_to_integer_multiple:[60,1,1,""]},"finn.util.basic.CppBuilder":{append_includes:[60,4,1,""],append_sources:[60,4,1,""],build:[60,4,1,""],set_executable_path:[60,4,1,""]},"finn.util.data_packing":{array2hexstring:[61,1,1,""],finnpy_to_packed_bytearray:[61,1,1,""],hexstring2npbytearray:[61,1,1,""],npbytearray2hexstring:[61,1,1,""],npy_to_rtlsim_input:[61,1,1,""],numpy_to_hls_code:[61,1,1,""],pack_innermost_dim_as_hex_string:[61,1,1,""],packed_bytearray_to_finnpy:[61,1,1,""],rtlsim_output_to_npy:[61,1,1,""],unpack_innermost_dim_from_hex_string:[61,1,1,""]},"finn.util.fpgadataflow":{IPGenBuilder:[62,2,1,""],pyverilate_stitched_ip:[62,1,1,""]},"finn.util.fpgadataflow.IPGenBuilder":{append_tcl:[62,4,1,""],build:[62,4,1,""],set_ipgen_path:[62,4,1,""]},"finn.util.onnx":{valueinfo_to_tensor:[63,1,1,""]},"finn.util.test":{get_test_model_def_fxn:[64,1,1,""],get_test_model_trained:[64,1,1,""],get_test_model_untrained:[64,1,1,""],get_trained_checkpoint:[64,1,1,""]},finn:{analysis:[6,0,0,"-"],core:[12,0,0,"-"],custom_op:[19,0,0,"-"],transformation:[30,0,0,"-"],util:[59,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:method"},terms:{"0f01":61,"0x07":61,"0x0e":61,"0x0f01":61,"0xb":61,"0xe":61,"600px":[],"abstract":[19,20,30],"boolean":16,"class":[13,15,19,20,21,22,23,25,26,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,60,62],"const":33,"default":[19,20,21,22,23,25,26,28,29,30],"enum":13,"final":16,"float":61,"function":[1,15,16,30,60],"import":1,"new":[1,2,15,16],"return":[6,8,9,10,11,13,15,16,19,20,21,22,23,25,26,27,28,29,30,55,60,61,62],"static":10,"true":[15,16,61],"try":1,"var":[20,21,22,23,25],For:57,HLS:[2,13],IPs:37,PEs:22,The:[1,2,6,15,30,37,41,45,48,56,61],There:1,Use:[18,60],abc:[19,30],abit:64,about:[2,6,11,44],abov:1,absorb1bitmulintomatmul:54,absorb:[4,5,30,40,53],absorbaddintomultithreshold:54,absorbmulintomultithreshold:54,acceler:[1,45],account:15,action:41,activ:[15,16],add:[31,50,54,56],adding:1,addit:1,addition:57,address:44,after:60,aim:56,align:[],all:[1,10,11,15,16,19,21,22,23,25,26,28,29,32,36,37,38,39,42,44,46,47,50,51,60,63],all_tensors_f32:10,allow:[13,15],alreadi:[45,46],also:[19,21,22,23,25,26,28,29,37,40],amount:60,analysi:[4,5,15,65],analysis_fxn:15,anaylsis_fxn:15,ani:[1,15,30,31,35,40,60,61],annot:[10,19,21,22,23,25,26,28,29],anoth:41,append_includ:60,append_sourc:60,append_tcl:62,appli:[15,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58],apply_rep:30,appropri:[1,50],arbitrari:61,architectur:2,argument:1,around:15,arrai:61,array2hexstr:61,arxiv:53,assign:15,associ:[15,32],assum:61,attribut:[11,19,20,21,22,23,25,26,28,29,37,41,45,46,47],attribute_nam:[19,20,21,22,23,25,26,28,29],attributeproto:[19,20,21,22,23,25,26,28,29],back:1,backend:[37,46],base:[13,15,19,20,21,22,23,25,26,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,60,62],basic:[4,5,59,61],batchnorm:31,batchnorm_to_affin:[4,5,30],batchnormtoaffin:31,been:[37,45,46],befor:60,between:[22,60],binari:[13,22,40,54,61],bipolar:[13,22,32,54,61],bipolar_to_xnor:[4,5,30],bit:[13,61],bitfil:1,bitwidth:13,blackboxfunct:[20,21,22,23,25],block:[37,46],blott:22,board:44,bool:[10,30],both:60,bram_estim:[20,21,22,23],brevita:2,brien:22,browser:1,build:[60,62],built:11,calc_tmem:22,calc_wmem:22,calcul:22,calculate_signed_dot_prod_rang:60,call:[1,14,22,30,37],can:[1,2,13,15,30,37,54,56,60,61],cannot:30,center:[],centerpiec:2,certain:6,chang:[1,15,30],check:[10,11,13,15,19,21,22,23,25,26,28,29],check_all_tensor_shapes_specifi:15,check_compat:15,cleanup:[4,5,30,34],clk:[20,36],clone:[1,60],code:[36,38,45,61],code_gen_dir:[60,62],code_generation_ipgen:20,code_generation_npysim:20,codegen_ipgen:[4,5,30,34,37],codegen_ipstitch:[4,5,30,34,46],codegen_npysim:[4,5,30,34],collaps:[55,56],collapse_rep:[4,5,30,53],collapserepeatedadd:55,collapserepeatedmul:55,collapserepeatedop:55,collect:[1,44],colloqui:2,come:[1,10],command:1,commun:2,compar:[16,26],compare_execut:16,compare_fxn:16,compat:[15,19,21,22,23,25,26,28,29],compil:[2,4,5,30,34,42],compile_singlenode_cod:20,complet:1,compon:2,comput:[1,15],consecut:55,constant:[10,15,54,55],construct:2,consum:15,contain:[1,2,16,19,41,60],content:[4,65],context:[14,15,16,19,20,21,22,25,26,28,29],contribut:2,convent:6,convert:[1,22,32,40,50,58,61],convert_to_hls_lay:[4,5,30,34],convertbipolarmatmultoxnorpopcount:32,convertsigntothr:58,convertsubtoadd:50,convolutioninputgener:[4,5,19,20],copi:[15,30,44],core:[4,5,65],corner:2,correct:32,correctli:[1,11,19,21,22,23,25,26,28,29,45],correspond:[2,13,19,21,22,23,25,26,28,29],count:20,cpp_file:60,cppbuilder:60,creat:[1,15,37,45,46,60,63],create_dataflow_partit:[4,5,30,34],createdataflowpartit:41,current:[2,15],custom:[1,2,11,14,16],custom_op:[4,5,65],customop:[19,20,21,22,23,25,26,27,28,29],data:[19,45,61],data_pack:[4,5,59],dataflow:[2,16,41],dataoutstrm:[20,21,22,23,25],datatyp:[4,5,12,15,19,21,22,23,25,26,28,29,51,60,61],debug:16,declar:30,deep:[2,15,22,30],default_v:[19,20,21,22,23,25,26,28,29],default_valu:[19,20,21,22,23,25,26,28,29],defin:[20,21,22,23,25],depend:1,deploi:1,deploy:44,deploytopynq:44,design:[1,37],detail:2,develop:2,dict:[15,16,19,20,21,22,23,25,26,28,29],dictionari:[6,10,15],differ:1,digit:[60,61],dimens:[60,61],dimension:61,dir:[37,45,46,60],directori:[1,44,60],distr_pad:60,divis:60,dnn:[],doc:2,docker:60,dockerfil:1,docomput:[20,21,22,23,25],doe:1,don:30,done:10,dot:60,down:1,driver:45,dt_a:60,dt_b:60,dtype:[10,15,19,20,21,22,23,25,26,28,29,61],dynam:10,dynamic_input_to_npi:20,each:[2,10,16,50,56,60,61],editor:1,effect:30,either:1,element:[60,61],embed:15,emit:61,emphasi:2,empti:15,end:22,ensur:[22,43,52,60,61],entir:1,enumer:[13,50],environ:1,equal:[19,21,22,23,25,26,28,29],equival:55,estim:[8,9],even:30,evenli:60,everi:52,everyth:1,exampl:[1,61],excel:1,exec_precompiled_singlenode_model:20,execut:[14,15,16,18,19,20,21,22,25,26,28,29],execute_custom_nod:[4,5,12],execute_nod:[16,19,20,21,22,25,26,28,29],execute_onnx:16,execute_onnx_and_make_model:16,execution_context:[17,18],exist:[27,60],exit:60,expect:[10,15,19,21,22,23,25,26,28,29,44],experi:2,experiment:2,explor:[2,15,22],expos:15,extens:1,extra:[1,10,60],extract:[6,8],f5c6bd32ae93ec103a88152214baedff4ce1850d81065bfc:1,factor:60,factoroutmulsignmagnitud:54,fals:[15,16,30,60,61],familiar:1,fan:10,fast:22,fewest:13,field:[37,45,46,60],file:[1,15,35,44,60,61],filenam:[15,41],find:15,find_consum:15,find_produc:15,finn:4,finn_dt:60,finnpy_to_packed_bytearrai:61,first:[10,54],fix:[30,61],flatten:61,float32:[10,13],flow:[],fold_const:[4,5,30],foldconst:33,folder:[1,37,60],follow:[1,2,10,40],form:22,forward:1,found:[2,37],four:61,fpga:[1,2],fpgadataflow:[4,5,6,19,30,59],fpgapart:[20,36,37],framework:[2,22],fraser:22,from:[1,2,8,15,16,37,46,60,61,63],full:16,further:30,gambardella:22,gen_finn_dt_tensor:60,gener:[2,4,5,30,35,36,37,38,45,60,61],generate_param:[20,22],get:[15,19],get_all_tensor_nam:15,get_by_nam:60,get_finn_root:60,get_folded_input_shap:[20,22,25],get_folded_output_shap:[20,22,25],get_hls_compatible_threshold_tensor:22,get_hls_compatible_weight_tensor:22,get_hls_datatype_str:13,get_initi:15,get_input_datatyp:[21,22],get_instream_width:[20,22,25],get_metadata_prop:15,get_nodeattr:19,get_nodeattr_typ:[19,20,21,22,23,25,26,28,29],get_num_possible_valu:13,get_number_output_valu:[20,21,22,23,25],get_output_datatyp:[21,22],get_outstream_width:[20,22,25],get_per_tensor_fanout:10,get_smallest_poss:13,get_stream_width:21,get_template_param_valu:22,get_tensor_datatyp:15,get_tensor_fanout:15,get_tensor_shap:15,get_tensor_valueinfo:15,get_test_model_def_fxn:64,get_test_model_train:64,get_test_model_untrain:64,get_trained_checkpoint:64,get_weight_datatyp:22,getcustomop:27,github:2,give:[1,50,55],give_unique_node_nam:50,given:[9,10,13,15,16,18,19,20,21,22,25,26,27,28,29,60,61,62],giverandomtensornam:50,givereadabletensornam:50,giveuniquenodenam:50,global_includ:[20,21,22,23,25],graph:[6,10,11,14,15,16,19,20,21,22,25,26,28,29,37,41,43,46,48,50],graphic:2,guarante:30,guid:[4,5],hand:2,has:[10,15,41,52,61],have:[1,10,15,30,37,45,46,56],height:[],help:1,hex:61,hexstr:61,hexstring2npbytearrai:61,high:1,highli:2,hls_synth_res_estim:[4,5,6,7],hls_var_nam:61,hlscustomop:[20,21,22,23,25],hlslib:[2,22],hlssynth_ipgen:[4,5,30,34],homepag:2,host:[1,60],how:[4,5,61],http:1,human:50,imag:[],img:[],immedi:40,implement:[13,14],includ:[2,15,16,45,46],index:[],indic:[16,19,20,21,22,23,25,26,28,29,30,41],infer:[1,2,15,19,21,22,23,25,26,28,29,51,61],infer_datatyp:[4,5,30],infer_node_datatyp:[19,21,22,23,25,26,28,29],infer_shap:[4,5,30],inferbinarystreamingfclay:40,inferdatatyp:51,infershap:52,infinit:30,info:[51,61],info_messag:11,inform:[6,44],infrastructur:46,inherit:30,initi:[10,15,16],innermost:61,inp0:29,inp1:29,inp:20,input:[10,11,14,15,16,19,21,22,23,25,26,28,29,30,32,33,51,57,61],input_dict:16,input_dtyp:61,input_fil:61,insert:[43,60],insert_tlastmark:[4,5,30,34],inserttlastmark:43,insid:[1,19],instal:1,instanc:[15,19,20,21,22,25,26,27,28,29,58],instanti:37,instead:60,int16:13,int2:13,int32:13,int3:13,int4:13,int8:13,integ:[13,57,60,61],intend:[],interfac:45,interleav:22,interleave_matrix_outer_dim_from_partit:60,intermedi:[15,16,51],intern:50,involv:1,ipgen_singlenode_cod:20,ipgenbuild:62,is_integ:13,is_linear:10,item:60,jupyt:2,kei:15,know:30,lab:2,lambda:16,largest:13,launch:1,layer:[31,37,40],lead:61,learn:[2,22],leeser:22,len:60,let:30,letter:60,librari:2,library_path:60,like:1,linear:[10,15],link:[1,2],list:[11,15],locat:1,look:[1,10],loop:30,lut_estim:[20,21,22,23],made:[15,30],magnitud:54,mai:1,make:[1,30,44],make_build_dir:60,make_collapsed_param_fxn:55,make_deepcopi:15,make_deploy:[4,5,30,34],make_empty_exec_context:15,make_new_valueinfo_nam:15,make_project:37,make_pynq_driv:[4,5,30,34],make_pynq_proj:[4,5,30,34],make_shape_compatible_op:[19,21,22,23,25,26,28,29],makepynqdriv:45,makepynqproject:[45,46,48],mani:1,manipul:15,manual:30,matmul:[32,56],matrix:[22,54,60],max:[13,60],mean:60,meant:30,member:[19,20,21,22,23,25,26,28,29],metadata_prop:[15,37,45,46],min:[13,60],minimum:61,mixtur:10,mkdtemp:60,mode:[1,47],model:[8,9,10,11,15,16,17,18,19,20,21,22,23,25,26,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,62],model_a:16,model_b:16,model_was_chang:30,modelproto:[15,37,45,46],modelwrapp:[4,5,6,12,16,30],modul:[4,65],modular:2,more:[2,15,50,61],mount:1,move:56,moveaddpastmul:56,movescalaraddpastmatmul:56,movescalarmulpastmatmul:56,mul:[31,54,56],multidimension:61,multipl:[30,54,60,61],multipli:[54,56],multithreshold:[4,5,19,40,54,57,58],must:[19,30,37,45,46,48,55,60],mvtu:40,n_partit:60,n_thres_step:22,name:[6,8,9,13,15,16,19,50,60,61],name_field:60,ndarrai:[60,61],nearest:[57,60,61],necessari:[43,44],need:[9,19,21,22,23,25,26,28,29,30],neg:[13,57],netnam:64,netron:1,network:[1,2,22],neural:[2,22],new_nam:15,next:56,no_decl:61,node:[8,9,10,11,14,15,16,19,20,21,22,23,25,26,27,28,29,32,33,35,36,37,38,39,41,42,43,46,47,50,51,54,57,58],node_inputs_in_expected_ord:10,node_res_estim:20,non:41,none:[15,26,60,61],note:1,notebook:2,notwithstand:10,now:[10,13],npbytearrai:61,npbytearray2hexstr:61,npy:61,npy_to_dynamic_output:20,npy_to_rtlsim_input:61,number:[13,15,19,21,22,23,25,26,28,29,61],numpi:[22,60,61,63],numpy_to_hls_cod:61,object:[15,60,62],old_nam:15,onc:30,one:[10,15,41,43,60,61],ones:1,onli:[10,13,15,30,33,41,54],onlin:1,onnx:[4,5,15,16,19,20,21,22,23,25,26,27,28,29,37,45,46,59],onnx_exec:[4,5,12],onnx_model_proto:15,onnx_nod:[19,20,21,22,23,25,26,28,29],onnxruntim:16,op_nam:55,op_typ:[10,11],open:1,oper:[15,55,56,57],ops:[11,54],option:1,order:10,orig_thres_matrix:22,orig_weight_matrix:22,origin:22,other:[15,56],otherwis:[1,15,30,60],out:10,out_bia:26,out_scal:26,out_shap:61,outcom:[37,45,46],output:[14,15,16,19,21,22,23,25,26,28,29,33,51,61],output_shap:61,overlai:46,overview:2,own:1,pack:[45,61],pack_innermost_dim:61,pack_innermost_dim_as_hex_str:61,packag:[4,37,65],packed_bytearrai:61,packed_bytearray_to_finnpi:61,packedbit:61,pad:[60,61],pad_tensor_to_multiple_of:60,pad_to_dim:60,pad_to_nbit:61,page:[],pair:40,paramet:55,part:[19,61],particular:[19,21,22,23,25,26,28,29,60],partit:16,pass:[4,5,22],password:44,past:56,path:[20,22,60,61,62],per:37,perform:[1,19,21,22,23,25,26,28,29],permit:[19,20,21,22,23,25,26,28,29],place:37,platform:46,png:[],point:[1,30],port:1,posit:[22,54,60],possibl:[13,44],pragma:[20,21,22,23,25],preced:54,precid:54,precis:61,precomput:33,prefer:13,prefix:[60,61],prepend:61,preusser:22,previous:[37,46],print:1,prior:[48,50,61],process:1,produc:[6,15],product:60,project:[2,37,46,48],properti:[6,15],provid:[1,14,16],pushbutton:1,pynq:[44,45,46,48],pynq_driver_dir:45,python:[1,45,61],pyveril:[18,62],pyverilate_stitched_ip:62,qnn:[1,2],quantiz:[2,10,22],random:[50,60],random_str:60,randomli:60,rather:1,reach:30,read:2,read_npy_data:[20,21,22,23,25],readabl:50,readthedoc:[],recommend:50,refer:2,reflect:1,registri:[4,5,19],relat:2,remot:16,remote_exec:[4,5,12],remov:[35,60,61],remove_by_nam:60,remove_prefix:61,renam:15,rename_tensor:15,reorder:[4,5,30,53],repeat:[30,55],repeatedli:15,replac:[31,33],repo:1,repositori:[1,2],repositroi:[],repres:[13,61],represent:61,requir:[13,19,20,21,22,23,25,26,28,29],res_estim:[4,5,6,7],research:2,reset_rtlsim:20,reshap:22,resourc:[1,8,9],respect:60,result:[8,11,15,32,33,37,55,61],return_full_exec_context:16,returned_dict:[19,20,21,22,23,25,26,28,29],revers:61,reverse_endian:61,reverse_inn:61,right:2,root:[1,60],round:[57,60],round_threshold:[4,5,30,53],roundandclipthreshold:57,roundup_to_integer_multipl:60,row:22,rtlsim:[16,20],rtlsim_exec:[4,5,12],rtlsim_output_to_npi:61,run:[15,37,46,48],run_dock:1,same:[37,61],save:[15,61],save_as_npi:[20,21,22,23,25],scalar:[54,56],scale:[],scp:44,script:[1,37],search:[],second:[41,54],see:[53,61],seen:2,sep:22,separ:2,sequenc:61,server:1,set:[1,15,16,19,20,21,22,23,25,26,28,29,37,45,46,47,57,60,61],set_attribut:[],set_exec_mod:[4,5,30,34],set_executable_path:60,set_initi:15,set_ipgen_path:62,set_metadata_prop:15,set_nodeattr:19,set_sim_mod:[],set_tensor_datatyp:15,set_tensor_shap:15,setexecmod:47,setsimmod:[],settings64:1,sever:1,shape:[15,19,21,22,23,25,26,28,29,52,60,61],shell:46,should:[1,10,16,30],sign:[13,50,54,58,60],sign_to_thr:[4,5,30,53],sim:[20,62],sim_mod:47,simd:22,simpli:1,sinc:[16,61],singl:[1,14,16,55,56,61],small:10,smallest:13,some:[1,2,15,30],someth:1,space:[],spawn:1,specif:2,specifi:[15,52,61],split:[41,54,60],stai:2,standard:[15,19,21,22,23,25,26,28,29],stitch:[18,37,46,62],store:[19,44,61],streamingdataflowpartit:[4,5,19,41],streamingfclayer_batch:[4,5,19,20,40],streamingmaxpool_batch:[4,5,19,20],streamlin:[4,5,30],string:[11,60,61],stringlength:60,strm_decl:[20,21,22,23,25],structur:6,style:2,sub:50,subdirectori:37,subgraph:15,submodul:[4,5,65],subpackag:[4,65],subset:10,success:[37,45,46],suitabl:22,sure:1,surviv:60,synth_pynq_proj:[4,5,30,34],synthesi:[8,48],synthpynqproject:48,take:[1,6,13,16,30,55,60],taken:[2,15,16,41],target:[2,44],target_dir:44,targetbit:61,tcl:37,tcl_script:62,tempfil:60,templat:[4,5,19,20,30,34],temporari:60,tensor:[10,15,16,50,51,52,55,60,63],tensor_fanout:10,tensor_nam:[10,15],tensor_shap:[15,60],tensor_valu:15,termin:[1,43],ternari:13,test:[4,5,31,59],text:1,thei:56,them:[10,37,44,56],thi:[1,2,10,13,15,16,19,20,21,22,23,25,26,28,29,30,46,48,50,60],thing:2,thought:1,threshold:[22,26,54,57,58],time:[1,30,31],tlastmark:[4,5,19,20,43],tmem:22,togeth:37,toggle_clk:20,token:1,tool:[1,2],topolog:[4,5,6],train:[1,2],transform:[4,5,15,65],transformed_model:30,travers:6,tune:2,tupl:30,two:[2,16,41,54,55,60],type:[13,51,60,61],ubuntu:1,uint16:13,uint2:[13,61],uint32:13,uint3:13,uint4:13,uint8:[13,61],umuroglu:22,under:[2,37],uniqu:50,unpack:[45,61],unpack_innermost_dim_from_hex_str:61,unsign:[13,57],until:15,updat:[2,54],upper:2,use:2,used:[2,15,16,19,20,21,22,23,25,26,28,29,60,61],useful:[15,16],user:30,usernam:44,using:[2,16,30,50,55,60,61],util:[4,5,15,19,20,21,22,23,25,26,28,29,65],val:60,valu:[13,15,16,19,20,21,22,23,25,26,28,29,37,45,46,54,57,60,61],value_info:15,valueinfo:[15,52],valueinfo_to_tensor:63,valueinfoproto:[15,63],variabl:[1,61],vector:[54,60],verif:11,verifi:[10,19,21,22,23,25,26,28,29],verify_custom_nod:[4,5,6],verify_nod:[11,19,21,22,23,25,26,28,29],version:2,via:[14,16],view:2,visser:22,vivado:[1,2,8,13,37,46],vivado_path:1,vivado_pynq_proj:46,vivado_stitch_proj:37,wai:[1,10],want:56,wbit:64,websit:2,weight:[16,22],welcom:2,well:1,when:[10,30],where:[1,13,16,19,20,21,22,23,25,26,28,29,44,54],whether:[10,13,15,19,20,21,22,23,25,26,28,29,30],which:[1,2,15,19,20,21,22,23,25,26,28,29,37,41,55,61],width:61,without:1,wmem:22,work:[1,15,61],workspac:1,wrapper:15,write:[1,4,5],xdnn:[],xilinx:2,xnorpopcount:[4,5,19],xnorpopcountmatmul:[29,32,40],you:[1,30],your:[1,30],zero:[15,57,61,63]},titles:["FINN - End-to-End Flow","Getting Started","FINN","src","Source Code","finn package","finn.analysis package","finn.analysis.fpgadataflow package","finn.analysis.fpgadataflow.hls_synth_res_estimation module","finn.analysis.fpgadataflow.res_estimation module","finn.analysis.topology module","finn.analysis.verify_custom_nodes module","finn.core package","finn.core.datatype module","finn.core.execute_custom_node module","finn.core.modelwrapper module","finn.core.onnx_exec module","finn.core.remote_exec module","finn.core.rtlsim_exec module","finn.custom_op package","finn.custom_op.fpgadataflow package","finn.custom_op.fpgadataflow.convolutioninputgenerator module","finn.custom_op.fpgadataflow.streamingfclayer_batch module","finn.custom_op.fpgadataflow.streamingmaxpool_batch module","finn.custom_op.fpgadataflow.templates module","finn.custom_op.fpgadataflow.tlastmarker module","finn.custom_op.multithreshold module","finn.custom_op.registry module","finn.custom_op.streamingdataflowpartition module","finn.custom_op.xnorpopcount module","finn.transformation package","finn.transformation.batchnorm_to_affine module","finn.transformation.bipolar_to_xnor module","finn.transformation.fold_constants module","finn.transformation.fpgadataflow package","finn.transformation.fpgadataflow.cleanup module","finn.transformation.fpgadataflow.codegen_ipgen module","finn.transformation.fpgadataflow.codegen_ipstitch module","finn.transformation.fpgadataflow.codegen_npysim module","finn.transformation.fpgadataflow.compile module","finn.transformation.fpgadataflow.convert_to_hls_layers module","finn.transformation.fpgadataflow.create_dataflow_partition module","finn.transformation.fpgadataflow.hlssynth_ipgen module","finn.transformation.fpgadataflow.insert_tlastmarker module","finn.transformation.fpgadataflow.make_deployment module","finn.transformation.fpgadataflow.make_pynq_driver module","finn.transformation.fpgadataflow.make_pynq_proj module","finn.transformation.fpgadataflow.set_exec_mode module","finn.transformation.fpgadataflow.synth_pynq_proj module","finn.transformation.fpgadataflow.templates module","finn.transformation.general module","finn.transformation.infer_datatypes module","finn.transformation.infer_shapes module","finn.transformation.streamline package","finn.transformation.streamline.absorb module","finn.transformation.streamline.collapse_repeated module","finn.transformation.streamline.reorder module","finn.transformation.streamline.round_thresholds module","finn.transformation.streamline.sign_to_thres module","finn.util package","finn.util.basic module","finn.util.data_packing module","finn.util.fpgadataflow module","finn.util.onnx module","finn.util.test module","finn"],titleterms:{absorb:54,analysi:[6,7,8,9,10,11],basic:60,batchnorm_to_affin:31,bipolar_to_xnor:32,cleanup:35,code:4,codegen_ipgen:36,codegen_ipstitch:37,codegen_npysim:38,collapse_rep:55,compil:[1,39],content:[5,6,7,12,19,20,30,34,53,59],convert_to_hls_lay:40,convolutioninputgener:21,core:[12,13,14,15,16,17,18],create_dataflow_partit:41,custom_op:[19,20,21,22,23,24,25,26,27,28,29],data_pack:61,datatyp:13,develop:1,directli:1,docker:1,document:[],end:0,execute_custom_nod:14,experiment:1,finn:[0,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65],flow:0,fold_const:33,fpgadataflow:[7,8,9,20,21,22,23,24,25,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,62],gener:50,get:1,guid:30,hls_synth_res_estim:8,hlssynth_ipgen:42,how:[1,6],indic:[],infer_datatyp:51,infer_shap:52,insert_tlastmark:43,interact:1,jenkin:1,jupyt:1,make_deploy:44,make_pynq_driv:45,make_pynq_proj:46,modelwrapp:15,modul:[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64],multithreshold:26,notebook:1,onnx:63,onnx_exec:16,packag:[5,6,7,12,19,20,30,34,53,59],pass:6,registri:27,remote_exec:17,reorder:56,requir:1,res_estim:9,round_threshold:57,rtlsim_exec:18,run:1,set_exec_mod:47,set_sim_mod:[],shell:1,sign_to_thr:58,sourc:4,src:3,start:1,streamingdataflowpartit:28,streamingfclayer_batch:22,streamingmaxpool_batch:23,streamlin:[53,54,55,56,57,58],submodul:[6,7,12,19,20,30,34,53,59],subpackag:[5,6,19,30],suit:1,synth_pynq_proj:48,tabl:[],templat:[24,49],test:[1,64],tlastmark:25,topolog:10,transform:[30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],use:1,using:1,util:[59,60,61,62,63,64],verify_custom_nod:11,welcom:[],what:2,write:[6,30],xnorpopcount:29}}) \ No newline at end of file diff --git a/docs/finn/_build/html/source_code.html b/docs/finn/_build/html/source_code.html index 6662fd362..825d89aff 100644 --- a/docs/finn/_build/html/source_code.html +++ b/docs/finn/_build/html/source_code.html @@ -160,17 +160,21 @@ <li class="toctree-l3"><a class="reference internal" href="source_code/finn.analysis.html">finn.analysis package</a><ul> <li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#subpackages">Subpackages</a><ul> <li class="toctree-l5"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html">finn.analysis.fpgadataflow package</a><ul> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation module</a></li> +<li class="toctree-l6"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html#submodules">Submodules</a><ul> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.res_estimation.html">finn.analysis.fpgadataflow.res_estimation module</a></li> +</ul> +</li> <li class="toctree-l6"><a class="reference internal" href="source_code/finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow">Module contents</a></li> </ul> </li> </ul> </li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#module-finn.analysis.topology">finn.analysis.topology module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes module</a></li> +<li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#submodules">Submodules</a><ul> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.analysis.topology.html">finn.analysis.topology module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.analysis.verify_custom_nodes.html">finn.analysis.verify_custom_nodes module</a></li> +</ul> +</li> <li class="toctree-l4"><a class="reference internal" href="source_code/finn.analysis.html#module-finn.analysis">Module contents</a><ul> <li class="toctree-l5"><a class="reference internal" href="source_code/finn.analysis.html#how-to-write-an-analysis-pass-for-finn">How to write an analysis pass for FINN</a></li> </ul> @@ -178,79 +182,91 @@ </ul> </li> <li class="toctree-l3"><a class="reference internal" href="source_code/finn.core.html">finn.core package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.datatype">finn.core.datatype module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.execute_custom_node">finn.core.execute_custom_node module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.modelwrapper">finn.core.modelwrapper module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.onnx_exec">finn.core.onnx_exec module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.remote_exec">finn.core.remote_exec module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core.rtlsim_exec">finn.core.rtlsim_exec module</a></li> +<li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#submodules">Submodules</a><ul> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.datatype.html">finn.core.datatype module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.execute_custom_node.html">finn.core.execute_custom_node module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.modelwrapper.html">finn.core.modelwrapper module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.onnx_exec.html">finn.core.onnx_exec module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.remote_exec.html">finn.core.remote_exec module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.core.rtlsim_exec.html">finn.core.rtlsim_exec module</a></li> +</ul> +</li> <li class="toctree-l4"><a class="reference internal" href="source_code/finn.core.html#module-finn.core">Module contents</a></li> </ul> </li> <li class="toctree-l3"><a class="reference internal" href="source_code/finn.custom_op.html">finn.custom_op package</a><ul> <li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#subpackages">Subpackages</a><ul> <li class="toctree-l5"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a><ul> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker module</a></li> +<li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#submodules">Submodules</a><ul> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.templates.html">finn.custom_op.fpgadataflow.templates module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.tlastmarker.html">finn.custom_op.fpgadataflow.tlastmarker module</a></li> +</ul> +</li> <li class="toctree-l6"><a class="reference internal" href="source_code/finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow">Module contents</a></li> </ul> </li> </ul> </li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#module-finn.custom_op.registry">finn.custom_op.registry module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount module</a></li> +<li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#submodules">Submodules</a><ul> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.custom_op.multithreshold.html">finn.custom_op.multithreshold module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.custom_op.registry.html">finn.custom_op.registry module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.custom_op.streamingdataflowpartition.html">finn.custom_op.streamingdataflowpartition module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.custom_op.xnorpopcount.html">finn.custom_op.xnorpopcount module</a></li> +</ul> +</li> <li class="toctree-l4"><a class="reference internal" href="source_code/finn.custom_op.html#module-finn.custom_op">Module contents</a></li> </ul> </li> <li class="toctree-l3"><a class="reference internal" href="source_code/finn.transformation.html">finn.transformation package</a><ul> <li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#subpackages">Subpackages</a><ul> <li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a><ul> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.set_exec_mode">finn.transformation.fpgadataflow.set_exec_mode module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates module</a></li> +<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#submodules">Submodules</a><ul> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.cleanup.html">finn.transformation.fpgadataflow.cleanup module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.codegen_ipgen.html">finn.transformation.fpgadataflow.codegen_ipgen module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.codegen_npysim.html">finn.transformation.fpgadataflow.codegen_npysim module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.compile.html">finn.transformation.fpgadataflow.compile module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.make_deployment.html">finn.transformation.fpgadataflow.make_deployment module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.make_pynq_driver.html">finn.transformation.fpgadataflow.make_pynq_driver module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.make_pynq_proj.html">finn.transformation.fpgadataflow.make_pynq_proj module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.set_exec_mode.html">finn.transformation.fpgadataflow.set_exec_mode module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.templates.html">finn.transformation.fpgadataflow.templates module</a></li> +</ul> +</li> <li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow">Module contents</a></li> </ul> </li> <li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.streamline.html">finn.transformation.streamline package</a><ul> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#submodules">Submodules</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds module</a></li> -<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres module</a></li> +<li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#submodules">Submodules</a><ul> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.streamline.absorb.html">finn.transformation.streamline.absorb module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.streamline.collapse_repeated.html">finn.transformation.streamline.collapse_repeated module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.streamline.reorder.html">finn.transformation.streamline.reorder module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.streamline.round_thresholds.html">finn.transformation.streamline.round_thresholds module</a></li> +<li class="toctree-l7"><a class="reference internal" href="source_code/finn.transformation.streamline.sign_to_thres.html">finn.transformation.streamline.sign_to_thres module</a></li> +</ul> +</li> <li class="toctree-l6"><a class="reference internal" href="source_code/finn.transformation.streamline.html#module-finn.transformation.streamline">Module contents</a></li> </ul> </li> </ul> </li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.fold_constants">finn.transformation.fold_constants module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.general">finn.transformation.general module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes module</a></li> +<li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#submodules">Submodules</a><ul> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.batchnorm_to_affine.html">finn.transformation.batchnorm_to_affine module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.bipolar_to_xnor.html">finn.transformation.bipolar_to_xnor module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.fold_constants.html">finn.transformation.fold_constants module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.general.html">finn.transformation.general module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.infer_datatypes.html">finn.transformation.infer_datatypes module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.infer_shapes.html">finn.transformation.infer_shapes module</a></li> +</ul> +</li> <li class="toctree-l4"><a class="reference internal" href="source_code/finn.transformation.html#module-finn.transformation">Module contents</a><ul> <li class="toctree-l5"><a class="reference internal" href="source_code/finn.transformation.html#guide-to-writing-finn-transformations">Guide to writing FINN transformations</a></li> </ul> @@ -258,12 +274,14 @@ </ul> </li> <li class="toctree-l3"><a class="reference internal" href="source_code/finn.util.html">finn.util package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util.basic">finn.util.basic module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util.data_packing">finn.util.data_packing module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util.fpgadataflow">finn.util.fpgadataflow module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util.onnx">finn.util.onnx module</a></li> -<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util.test">finn.util.test module</a></li> +<li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#submodules">Submodules</a><ul> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.util.basic.html">finn.util.basic module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.util.data_packing.html">finn.util.data_packing module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.util.fpgadataflow.html">finn.util.fpgadataflow module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.util.onnx.html">finn.util.onnx module</a></li> +<li class="toctree-l5"><a class="reference internal" href="source_code/finn.util.test.html">finn.util.test module</a></li> +</ul> +</li> <li class="toctree-l4"><a class="reference internal" href="source_code/finn.util.html#module-finn.util">Module contents</a></li> </ul> </li> diff --git a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html new file mode 100644 index 000000000..a333ed66b --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html @@ -0,0 +1,219 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.analysis.fpgadataflow.hls_synth_res_estimation module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.analysis.fpgadataflow.res_estimation module" href="finn.analysis.fpgadataflow.res_estimation.html" /> + <link rel="prev" title="finn.analysis.fpgadataflow package" href="finn.analysis.fpgadataflow.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.analysis.html">finn.analysis package</a> »</li> + + <li><a href="finn.analysis.fpgadataflow.html">finn.analysis.fpgadataflow package</a> »</li> + + <li>finn.analysis.fpgadataflow.hls_synth_res_estimation module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.analysis.fpgadataflow.hls_synth_res_estimation"> +<span id="finn-analysis-fpgadataflow-hls-synth-res-estimation-module"></span><h1>finn.analysis.fpgadataflow.hls_synth_res_estimation module<a class="headerlink" href="#module-finn.analysis.fpgadataflow.hls_synth_res_estimation" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation"> +<code class="sig-prename descclassname">finn.analysis.fpgadataflow.hls_synth_res_estimation.</code><code class="sig-name descname">hls_synth_res_estimation</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation" title="Permalink to this definition">¶</a></dt> +<dd><p>Extracts the results from the vivado synthesis. +Returns {node name : resource estimation}</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.analysis.fpgadataflow.res_estimation.html" class="btn btn-neutral float-right" title="finn.analysis.fpgadataflow.res_estimation module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.analysis.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.analysis.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html index bdaa8bda5..8f2fb5a29 100644 --- a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html +++ b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html @@ -35,7 +35,7 @@ <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> - <link rel="next" title="finn.core package" href="finn.core.html" /> + <link rel="next" title="finn.analysis.fpgadataflow.hls_synth_res_estimation module" href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html" /> <link rel="prev" title="finn.analysis package" href="finn.analysis.html" /> </head> @@ -158,26 +158,12 @@ <h1>finn.analysis.fpgadataflow package<a class="headerlink" href="#finn-analysis-fpgadataflow-package" title="Permalink to this headline">¶</a></h1> <div class="section" id="submodules"> <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.analysis.fpgadataflow.res_estimation.html">finn.analysis.fpgadataflow.res_estimation module</a></li> +</ul> </div> -<div class="section" id="module-finn.analysis.fpgadataflow.hls_synth_res_estimation"> -<span id="finn-analysis-fpgadataflow-hls-synth-res-estimation-module"></span><h2>finn.analysis.fpgadataflow.hls_synth_res_estimation module<a class="headerlink" href="#module-finn.analysis.fpgadataflow.hls_synth_res_estimation" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation"> -<code class="sig-prename descclassname">finn.analysis.fpgadataflow.hls_synth_res_estimation.</code><code class="sig-name descname">hls_synth_res_estimation</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation" title="Permalink to this definition">¶</a></dt> -<dd><p>Extracts the results from the vivado synthesis. -Returns {node name : resource estimation}</p> -</dd></dl> - -</div> -<div class="section" id="module-finn.analysis.fpgadataflow.res_estimation"> -<span id="finn-analysis-fpgadataflow-res-estimation-module"></span><h2>finn.analysis.fpgadataflow.res_estimation module<a class="headerlink" href="#module-finn.analysis.fpgadataflow.res_estimation" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.analysis.fpgadataflow.res_estimation.res_estimation"> -<code class="sig-prename descclassname">finn.analysis.fpgadataflow.res_estimation.</code><code class="sig-name descname">res_estimation</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.fpgadataflow.res_estimation.res_estimation" title="Permalink to this definition">¶</a></dt> -<dd><p>Estimates the resources needed for the given model. -Returns {node name : resource estimation}</p> -</dd></dl> - </div> <div class="section" id="module-finn.analysis.fpgadataflow"> <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.analysis.fpgadataflow" title="Permalink to this headline">¶</a></h2> @@ -192,7 +178,7 @@ Returns {node name : resource estimation}</p> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - <a href="finn.core.html" class="btn btn-neutral float-right" title="finn.core package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html" class="btn btn-neutral float-right" title="finn.analysis.fpgadataflow.hls_synth_res_estimation module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="finn.analysis.html" class="btn btn-neutral float-left" title="finn.analysis package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> diff --git a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.res_estimation.html b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.res_estimation.html new file mode 100644 index 000000000..7e52637fc --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.res_estimation.html @@ -0,0 +1,219 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.analysis.fpgadataflow.res_estimation module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.analysis.topology module" href="finn.analysis.topology.html" /> + <link rel="prev" title="finn.analysis.fpgadataflow.hls_synth_res_estimation module" href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.analysis.html">finn.analysis package</a> »</li> + + <li><a href="finn.analysis.fpgadataflow.html">finn.analysis.fpgadataflow package</a> »</li> + + <li>finn.analysis.fpgadataflow.res_estimation module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.analysis.fpgadataflow.res_estimation"> +<span id="finn-analysis-fpgadataflow-res-estimation-module"></span><h1>finn.analysis.fpgadataflow.res_estimation module<a class="headerlink" href="#module-finn.analysis.fpgadataflow.res_estimation" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.analysis.fpgadataflow.res_estimation.res_estimation"> +<code class="sig-prename descclassname">finn.analysis.fpgadataflow.res_estimation.</code><code class="sig-name descname">res_estimation</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.fpgadataflow.res_estimation.res_estimation" title="Permalink to this definition">¶</a></dt> +<dd><p>Estimates the resources needed for the given model. +Returns {node name : resource estimation}</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.analysis.topology.html" class="btn btn-neutral float-right" title="finn.analysis.topology module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html" class="btn btn-neutral float-left" title="finn.analysis.fpgadataflow.hls_synth_res_estimation module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.analysis.html b/docs/finn/_build/html/source_code/finn.analysis.html index 095e50987..ef0bd5462 100644 --- a/docs/finn/_build/html/source_code/finn.analysis.html +++ b/docs/finn/_build/html/source_code/finn.analysis.html @@ -159,9 +159,11 @@ <div class="toctree-wrapper compound"> <ul> <li class="toctree-l1"><a class="reference internal" href="finn.analysis.fpgadataflow.html">finn.analysis.fpgadataflow package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="finn.analysis.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation module</a></li> +<li class="toctree-l2"><a class="reference internal" href="finn.analysis.fpgadataflow.html#submodules">Submodules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.analysis.fpgadataflow.res_estimation.html">finn.analysis.fpgadataflow.res_estimation module</a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow">Module contents</a></li> </ul> </li> @@ -170,50 +172,12 @@ </div> <div class="section" id="submodules"> <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="finn.analysis.topology.html">finn.analysis.topology module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.analysis.verify_custom_nodes.html">finn.analysis.verify_custom_nodes module</a></li> +</ul> </div> -<div class="section" id="module-finn.analysis.topology"> -<span id="finn-analysis-topology-module"></span><h2>finn.analysis.topology module<a class="headerlink" href="#module-finn.analysis.topology" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.analysis.topology.all_tensors_f32"> -<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">all_tensors_f32</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.all_tensors_f32" title="Permalink to this definition">¶</a></dt> -<dd><p>Checks whether all tensors have a float32 dtype, extra quantization -annotations notwithstanding.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.analysis.topology.get_per_tensor_fanouts"> -<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">get_per_tensor_fanouts</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.get_per_tensor_fanouts" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dictionary of (tensor_name, tensor_fanout) for the model.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.analysis.topology.is_linear"> -<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">is_linear</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.is_linear" title="Permalink to this definition">¶</a></dt> -<dd><p>Checks whether the given model graph is linear. This is done by looking -at the fan-out of each tensor. All tensors have a fan-out <= 1 in a linear -graph. Returns {“is_linearâ€, Bool}</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.analysis.topology.node_inputs_in_expected_order"> -<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">node_inputs_in_expected_order</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.node_inputs_in_expected_order" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that the node inputs are ordered in the way that FINN expects -them. When a node has a mixture of static (= constant, initialized) inputs -and dynamic inputs, the dynamic input should come first, followed by the -static one. Only verifiable for a small subset of op_types for now.</p> -</dd></dl> - -</div> -<div class="section" id="module-finn.analysis.verify_custom_nodes"> -<span id="finn-analysis-verify-custom-nodes-module"></span><h2>finn.analysis.verify_custom_nodes module<a class="headerlink" href="#module-finn.analysis.verify_custom_nodes" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.analysis.verify_custom_nodes.verify_nodes"> -<code class="sig-prename descclassname">finn.analysis.verify_custom_nodes.</code><code class="sig-name descname">verify_nodes</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.verify_custom_nodes.verify_nodes" title="Permalink to this definition">¶</a></dt> -<dd><p>Checks if custom ops in graph are correctly built, with all attributes -and inputs. Returns {node op_type : info_messages} -<a href="#id1"><span class="problematic" id="id2">*</span></a>info_messages is list of strings about the result of the verification</p> -</dd></dl> - </div> <div class="section" id="module-finn.analysis"> <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.analysis" title="Permalink to this headline">¶</a></h2> diff --git a/docs/finn/_build/html/source_code/finn.analysis.topology.html b/docs/finn/_build/html/source_code/finn.analysis.topology.html new file mode 100644 index 000000000..f602bb8f2 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.analysis.topology.html @@ -0,0 +1,240 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.analysis.topology module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.analysis.verify_custom_nodes module" href="finn.analysis.verify_custom_nodes.html" /> + <link rel="prev" title="finn.analysis.fpgadataflow.res_estimation module" href="finn.analysis.fpgadataflow.res_estimation.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.analysis.html">finn.analysis package</a> »</li> + + <li>finn.analysis.topology module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.analysis.topology.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.analysis.topology"> +<span id="finn-analysis-topology-module"></span><h1>finn.analysis.topology module<a class="headerlink" href="#module-finn.analysis.topology" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.analysis.topology.all_tensors_f32"> +<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">all_tensors_f32</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.all_tensors_f32" title="Permalink to this definition">¶</a></dt> +<dd><p>Checks whether all tensors have a float32 dtype, extra quantization +annotations notwithstanding.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.analysis.topology.get_per_tensor_fanouts"> +<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">get_per_tensor_fanouts</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.get_per_tensor_fanouts" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a dictionary of (tensor_name, tensor_fanout) for the model.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.analysis.topology.is_linear"> +<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">is_linear</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.is_linear" title="Permalink to this definition">¶</a></dt> +<dd><p>Checks whether the given model graph is linear. This is done by looking +at the fan-out of each tensor. All tensors have a fan-out <= 1 in a linear +graph. Returns {“is_linearâ€, Bool}</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.analysis.topology.node_inputs_in_expected_order"> +<code class="sig-prename descclassname">finn.analysis.topology.</code><code class="sig-name descname">node_inputs_in_expected_order</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.topology.node_inputs_in_expected_order" title="Permalink to this definition">¶</a></dt> +<dd><p>Verifies that the node inputs are ordered in the way that FINN expects +them. When a node has a mixture of static (= constant, initialized) inputs +and dynamic inputs, the dynamic input should come first, followed by the +static one. Only verifiable for a small subset of op_types for now.</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.analysis.verify_custom_nodes.html" class="btn btn-neutral float-right" title="finn.analysis.verify_custom_nodes module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.analysis.fpgadataflow.res_estimation.html" class="btn btn-neutral float-left" title="finn.analysis.fpgadataflow.res_estimation module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.analysis.verify_custom_nodes.html b/docs/finn/_build/html/source_code/finn.analysis.verify_custom_nodes.html new file mode 100644 index 000000000..5c7b82a0d --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.analysis.verify_custom_nodes.html @@ -0,0 +1,218 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.analysis.verify_custom_nodes module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.core package" href="finn.core.html" /> + <link rel="prev" title="finn.analysis.topology module" href="finn.analysis.topology.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.analysis.html">finn.analysis package</a> »</li> + + <li>finn.analysis.verify_custom_nodes module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.analysis.verify_custom_nodes"> +<span id="finn-analysis-verify-custom-nodes-module"></span><h1>finn.analysis.verify_custom_nodes module<a class="headerlink" href="#module-finn.analysis.verify_custom_nodes" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.analysis.verify_custom_nodes.verify_nodes"> +<code class="sig-prename descclassname">finn.analysis.verify_custom_nodes.</code><code class="sig-name descname">verify_nodes</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.analysis.verify_custom_nodes.verify_nodes" title="Permalink to this definition">¶</a></dt> +<dd><p>Checks if custom ops in graph are correctly built, with all attributes +and inputs. Returns {node op_type : info_messages} +<a href="#id1"><span class="problematic" id="id2">*</span></a>info_messages is list of strings about the result of the verification</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.core.html" class="btn btn-neutral float-right" title="finn.core package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.analysis.topology.html" class="btn btn-neutral float-left" title="finn.analysis.topology module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.core.datatype.html b/docs/finn/_build/html/source_code/finn.core.datatype.html new file mode 100644 index 000000000..2d35ed438 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.core.datatype.html @@ -0,0 +1,354 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.core.datatype module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.core.execute_custom_node module" href="finn.core.execute_custom_node.html" /> + <link rel="prev" title="finn.core package" href="finn.core.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.core.html">finn.core package</a> »</li> + + <li>finn.core.datatype module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.core.datatype.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.core.datatype"> +<span id="finn-core-datatype-module"></span><h1>finn.core.datatype module<a class="headerlink" href="#module-finn.core.datatype" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.core.datatype.DataType"> +<em class="property">class </em><code class="sig-prename descclassname">finn.core.datatype.</code><code class="sig-name descname">DataType</code><a class="headerlink" href="#finn.core.datatype.DataType" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">enum.Enum</span></code></p> +<p>An enumeration.</p> +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.BINARY"> +<code class="sig-name descname">BINARY</code><em class="property"> = 1</em><a class="headerlink" href="#finn.core.datatype.DataType.BINARY" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.BIPOLAR"> +<code class="sig-name descname">BIPOLAR</code><em class="property"> = 8</em><a class="headerlink" href="#finn.core.datatype.DataType.BIPOLAR" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.FLOAT32"> +<code class="sig-name descname">FLOAT32</code><em class="property"> = 16</em><a class="headerlink" href="#finn.core.datatype.DataType.FLOAT32" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.INT16"> +<code class="sig-name descname">INT16</code><em class="property"> = 14</em><a class="headerlink" href="#finn.core.datatype.DataType.INT16" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.INT2"> +<code class="sig-name descname">INT2</code><em class="property"> = 10</em><a class="headerlink" href="#finn.core.datatype.DataType.INT2" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.INT3"> +<code class="sig-name descname">INT3</code><em class="property"> = 11</em><a class="headerlink" href="#finn.core.datatype.DataType.INT3" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.INT32"> +<code class="sig-name descname">INT32</code><em class="property"> = 15</em><a class="headerlink" href="#finn.core.datatype.DataType.INT32" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.INT4"> +<code class="sig-name descname">INT4</code><em class="property"> = 12</em><a class="headerlink" href="#finn.core.datatype.DataType.INT4" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.INT8"> +<code class="sig-name descname">INT8</code><em class="property"> = 13</em><a class="headerlink" href="#finn.core.datatype.DataType.INT8" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.TERNARY"> +<code class="sig-name descname">TERNARY</code><em class="property"> = 9</em><a class="headerlink" href="#finn.core.datatype.DataType.TERNARY" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.UINT16"> +<code class="sig-name descname">UINT16</code><em class="property"> = 6</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT16" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.UINT2"> +<code class="sig-name descname">UINT2</code><em class="property"> = 2</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT2" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.UINT3"> +<code class="sig-name descname">UINT3</code><em class="property"> = 3</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT3" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.UINT32"> +<code class="sig-name descname">UINT32</code><em class="property"> = 7</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT32" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.UINT4"> +<code class="sig-name descname">UINT4</code><em class="property"> = 4</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT4" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="attribute"> +<dt id="finn.core.datatype.DataType.UINT8"> +<code class="sig-name descname">UINT8</code><em class="property"> = 5</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT8" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.core.datatype.DataType.allowed"> +<code class="sig-name descname">allowed</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.allowed" title="Permalink to this definition">¶</a></dt> +<dd><p>Check whether given value is allowed for this DataType.</p> +<p>value (float32): value to be checked</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.datatype.DataType.bitwidth"> +<code class="sig-name descname">bitwidth</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.bitwidth" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns the number of bits required for this DataType.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.datatype.DataType.get_hls_datatype_str"> +<code class="sig-name descname">get_hls_datatype_str</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_hls_datatype_str" title="Permalink to this definition">¶</a></dt> +<dd><p>Return the corresponding Vivado HLS datatype name.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.datatype.DataType.get_num_possible_values"> +<code class="sig-name descname">get_num_possible_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_num_possible_values" title="Permalink to this definition">¶</a></dt> +<dd><p>Return the number of possible values this DataType can take. Only +implemented for integer types for now.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.datatype.DataType.get_smallest_possible"> +<code class="sig-name descname">get_smallest_possible</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_smallest_possible" title="Permalink to this definition">¶</a></dt> +<dd><p>Return smallest (fewest bits) possible DataType that can represent +value. Prefers unsigned integers where possible.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.datatype.DataType.is_integer"> +<code class="sig-name descname">is_integer</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.is_integer" title="Permalink to this definition">¶</a></dt> +<dd><p>Return whether this DataType represents integer values only.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.datatype.DataType.max"> +<code class="sig-name descname">max</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.max" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns the largest possible value allowed by this DataType.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.datatype.DataType.min"> +<code class="sig-name descname">min</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.min" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns the smallest possible value allowed by this DataType.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.datatype.DataType.signed"> +<code class="sig-name descname">signed</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.signed" title="Permalink to this definition">¶</a></dt> +<dd><p>Return whether this DataType can represent negative numbers.</p> +</dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.core.execute_custom_node.html" class="btn btn-neutral float-right" title="finn.core.execute_custom_node module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.core.html" class="btn btn-neutral float-left" title="finn.core package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.core.execute_custom_node.html b/docs/finn/_build/html/source_code/finn.core.execute_custom_node.html new file mode 100644 index 000000000..45ac552b1 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.core.execute_custom_node.html @@ -0,0 +1,217 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.core.execute_custom_node module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.core.modelwrapper module" href="finn.core.modelwrapper.html" /> + <link rel="prev" title="finn.core.datatype module" href="finn.core.datatype.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.core.html">finn.core package</a> »</li> + + <li>finn.core.execute_custom_node module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.core.execute_custom_node.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.core.execute_custom_node"> +<span id="finn-core-execute-custom-node-module"></span><h1>finn.core.execute_custom_node module<a class="headerlink" href="#module-finn.core.execute_custom_node" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.core.execute_custom_node.execute_custom_node"> +<code class="sig-prename descclassname">finn.core.execute_custom_node.</code><code class="sig-name descname">execute_custom_node</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.execute_custom_node.execute_custom_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Call custom implementation to execute a single custom node. +Input/output provided via context.</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.core.modelwrapper.html" class="btn btn-neutral float-right" title="finn.core.modelwrapper module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.core.datatype.html" class="btn btn-neutral float-left" title="finn.core.datatype module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.core.html b/docs/finn/_build/html/source_code/finn.core.html index 98aff76d9..383d44576 100644 --- a/docs/finn/_build/html/source_code/finn.core.html +++ b/docs/finn/_build/html/source_code/finn.core.html @@ -35,8 +35,8 @@ <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> - <link rel="next" title="finn.custom_op package" href="finn.custom_op.html" /> - <link rel="prev" title="finn.analysis.fpgadataflow package" href="finn.analysis.fpgadataflow.html" /> + <link rel="next" title="finn.core.datatype module" href="finn.core.datatype.html" /> + <link rel="prev" title="finn.analysis.verify_custom_nodes module" href="finn.analysis.verify_custom_nodes.html" /> </head> <body class="wy-body-for-nav"> @@ -156,379 +156,16 @@ <h1>finn.core package<a class="headerlink" href="#finn-core-package" title="Permalink to this headline">¶</a></h1> <div class="section" id="submodules"> <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="finn.core.datatype.html">finn.core.datatype module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.core.execute_custom_node.html">finn.core.execute_custom_node module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.core.modelwrapper.html">finn.core.modelwrapper module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.core.onnx_exec.html">finn.core.onnx_exec module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.core.remote_exec.html">finn.core.remote_exec module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.core.rtlsim_exec.html">finn.core.rtlsim_exec module</a></li> +</ul> </div> -<div class="section" id="module-finn.core.datatype"> -<span id="finn-core-datatype-module"></span><h2>finn.core.datatype module<a class="headerlink" href="#module-finn.core.datatype" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.core.datatype.DataType"> -<em class="property">class </em><code class="sig-prename descclassname">finn.core.datatype.</code><code class="sig-name descname">DataType</code><a class="headerlink" href="#finn.core.datatype.DataType" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">enum.Enum</span></code></p> -<p>An enumeration.</p> -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.BINARY"> -<code class="sig-name descname">BINARY</code><em class="property"> = 1</em><a class="headerlink" href="#finn.core.datatype.DataType.BINARY" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.BIPOLAR"> -<code class="sig-name descname">BIPOLAR</code><em class="property"> = 8</em><a class="headerlink" href="#finn.core.datatype.DataType.BIPOLAR" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.FLOAT32"> -<code class="sig-name descname">FLOAT32</code><em class="property"> = 16</em><a class="headerlink" href="#finn.core.datatype.DataType.FLOAT32" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.INT16"> -<code class="sig-name descname">INT16</code><em class="property"> = 14</em><a class="headerlink" href="#finn.core.datatype.DataType.INT16" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.INT2"> -<code class="sig-name descname">INT2</code><em class="property"> = 10</em><a class="headerlink" href="#finn.core.datatype.DataType.INT2" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.INT3"> -<code class="sig-name descname">INT3</code><em class="property"> = 11</em><a class="headerlink" href="#finn.core.datatype.DataType.INT3" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.INT32"> -<code class="sig-name descname">INT32</code><em class="property"> = 15</em><a class="headerlink" href="#finn.core.datatype.DataType.INT32" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.INT4"> -<code class="sig-name descname">INT4</code><em class="property"> = 12</em><a class="headerlink" href="#finn.core.datatype.DataType.INT4" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.INT8"> -<code class="sig-name descname">INT8</code><em class="property"> = 13</em><a class="headerlink" href="#finn.core.datatype.DataType.INT8" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.TERNARY"> -<code class="sig-name descname">TERNARY</code><em class="property"> = 9</em><a class="headerlink" href="#finn.core.datatype.DataType.TERNARY" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.UINT16"> -<code class="sig-name descname">UINT16</code><em class="property"> = 6</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT16" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.UINT2"> -<code class="sig-name descname">UINT2</code><em class="property"> = 2</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT2" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.UINT3"> -<code class="sig-name descname">UINT3</code><em class="property"> = 3</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT3" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.UINT32"> -<code class="sig-name descname">UINT32</code><em class="property"> = 7</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT32" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.UINT4"> -<code class="sig-name descname">UINT4</code><em class="property"> = 4</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT4" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="finn.core.datatype.DataType.UINT8"> -<code class="sig-name descname">UINT8</code><em class="property"> = 5</em><a class="headerlink" href="#finn.core.datatype.DataType.UINT8" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.core.datatype.DataType.allowed"> -<code class="sig-name descname">allowed</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.allowed" title="Permalink to this definition">¶</a></dt> -<dd><p>Check whether given value is allowed for this DataType.</p> -<p>value (float32): value to be checked</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.datatype.DataType.bitwidth"> -<code class="sig-name descname">bitwidth</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.bitwidth" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the number of bits required for this DataType.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.datatype.DataType.get_hls_datatype_str"> -<code class="sig-name descname">get_hls_datatype_str</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_hls_datatype_str" title="Permalink to this definition">¶</a></dt> -<dd><p>Return the corresponding Vivado HLS datatype name.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.datatype.DataType.get_num_possible_values"> -<code class="sig-name descname">get_num_possible_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_num_possible_values" title="Permalink to this definition">¶</a></dt> -<dd><p>Return the number of possible values this DataType can take. Only -implemented for integer types for now.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.datatype.DataType.get_smallest_possible"> -<code class="sig-name descname">get_smallest_possible</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.get_smallest_possible" title="Permalink to this definition">¶</a></dt> -<dd><p>Return smallest (fewest bits) possible DataType that can represent -value. Prefers unsigned integers where possible.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.datatype.DataType.is_integer"> -<code class="sig-name descname">is_integer</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.is_integer" title="Permalink to this definition">¶</a></dt> -<dd><p>Return whether this DataType represents integer values only.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.datatype.DataType.max"> -<code class="sig-name descname">max</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.max" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the largest possible value allowed by this DataType.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.datatype.DataType.min"> -<code class="sig-name descname">min</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.min" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the smallest possible value allowed by this DataType.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.datatype.DataType.signed"> -<code class="sig-name descname">signed</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.datatype.DataType.signed" title="Permalink to this definition">¶</a></dt> -<dd><p>Return whether this DataType can represent negative numbers.</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.core.execute_custom_node"> -<span id="finn-core-execute-custom-node-module"></span><h2>finn.core.execute_custom_node module<a class="headerlink" href="#module-finn.core.execute_custom_node" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.core.execute_custom_node.execute_custom_node"> -<code class="sig-prename descclassname">finn.core.execute_custom_node.</code><code class="sig-name descname">execute_custom_node</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.execute_custom_node.execute_custom_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Call custom implementation to execute a single custom node. -Input/output provided via context.</p> -</dd></dl> - -</div> -<div class="section" id="module-finn.core.modelwrapper"> -<span id="finn-core-modelwrapper-module"></span><h2>finn.core.modelwrapper module<a class="headerlink" href="#module-finn.core.modelwrapper" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.core.modelwrapper.ModelWrapper"> -<em class="property">class </em><code class="sig-prename descclassname">finn.core.modelwrapper.</code><code class="sig-name descname">ModelWrapper</code><span class="sig-paren">(</span><em class="sig-param">onnx_model_proto</em>, <em class="sig-param">make_deepcopy=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> -<p>A wrapper around ONNX ModelProto that exposes some useful utility -functions for graph manipulation and exploration.</p> -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.analysis"> -<code class="sig-name descname">analysis</code><span class="sig-paren">(</span><em class="sig-param">analysis_fxn</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.analysis" title="Permalink to this definition">¶</a></dt> -<dd><p>Run given anaylsis_fxn on this model and return resulting dict.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified"> -<code class="sig-name descname">check_all_tensor_shapes_specified</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified" title="Permalink to this definition">¶</a></dt> -<dd><p>Checks whether all tensors have a specified shape (ValueInfo). -The ONNX standard allows for intermediate activations to have no -associated ValueInfo, but FINN expects this.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.check_compatibility"> -<code class="sig-name descname">check_compatibility</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.check_compatibility" title="Permalink to this definition">¶</a></dt> -<dd><p>Checks this model for FINN compatibility: -* no embedded subgraphs -* all tensor shapes are specified, including activations -* all constants are initializers</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.find_consumer"> -<code class="sig-name descname">find_consumer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.find_consumer" title="Permalink to this definition">¶</a></dt> -<dd><p>Find and return the node that consumes the tensor with given name. -Currently only works for linear graphs.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.find_producer"> -<code class="sig-name descname">find_producer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.find_producer" title="Permalink to this definition">¶</a></dt> -<dd><p>Find and return the node that produces the tensor with given name. -Currently only works for linear graphs.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.get_all_tensor_names"> -<code class="sig-name descname">get_all_tensor_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_all_tensor_names" title="Permalink to this definition">¶</a></dt> -<dd><p>Return a list of all (input, output and value_info) tensor names -in the graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.get_initializer"> -<code class="sig-name descname">get_initializer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_initializer" title="Permalink to this definition">¶</a></dt> -<dd><p>Get the initializer value for tensor with given name, if any.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.get_metadata_prop"> -<code class="sig-name descname">get_metadata_prop</code><span class="sig-paren">(</span><em class="sig-param">key</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_metadata_prop" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the value associated with metadata_prop with given key, -or None otherwise.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_datatype"> -<code class="sig-name descname">get_tensor_datatype</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the FINN DataType of tensor with given name.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_fanout"> -<code class="sig-name descname">get_tensor_fanout</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_fanout" title="Permalink to this definition">¶</a></dt> -<dd><p>Return the number of nodes for which the tensor with given name is -as input.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_shape"> -<code class="sig-name descname">get_tensor_shape</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_shape" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the shape of tensor with given name, if it has ValueInfoProto.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo"> -<code class="sig-name descname">get_tensor_valueinfo</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns ValueInfoProto of tensor with given name, if it has one.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.graph"> -<em class="property">property </em><code class="sig-name descname">graph</code><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.graph" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.make_empty_exec_context"> -<code class="sig-name descname">make_empty_exec_context</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.make_empty_exec_context" title="Permalink to this definition">¶</a></dt> -<dd><p>Creates an empty execution context for this model. -The execution context is a dictionary of all tensors used for the -inference computation. Any initializer values will be taken into -account, all other tensors will be zero.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name"> -<code class="sig-name descname">make_new_valueinfo_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a name that can be used for a new value_info.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.model"> -<em class="property">property </em><code class="sig-name descname">model</code><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.model" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.rename_tensor"> -<code class="sig-name descname">rename_tensor</code><span class="sig-paren">(</span><em class="sig-param">old_name</em>, <em class="sig-param">new_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.rename_tensor" title="Permalink to this definition">¶</a></dt> -<dd><p>Rename a tensor from old_name to new_name.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.save"> -<code class="sig-name descname">save</code><span class="sig-paren">(</span><em class="sig-param">filename</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.save" title="Permalink to this definition">¶</a></dt> -<dd><p>Save the wrapper ONNX ModelProto into a file with given name.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.set_initializer"> -<code class="sig-name descname">set_initializer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">tensor_value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_initializer" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the initializer value for tensor with given name.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.set_metadata_prop"> -<code class="sig-name descname">set_metadata_prop</code><span class="sig-paren">(</span><em class="sig-param">key</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_metadata_prop" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.set_tensor_datatype"> -<code class="sig-name descname">set_tensor_datatype</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">datatype</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_tensor_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Sets the FINN DataType of tensor with given name.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.set_tensor_shape"> -<code class="sig-name descname">set_tensor_shape</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">tensor_shape</em>, <em class="sig-param">dtype=1</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_tensor_shape" title="Permalink to this definition">¶</a></dt> -<dd><p>Assign shape in ValueInfoProto for tensor with given name.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.core.modelwrapper.ModelWrapper.transform"> -<code class="sig-name descname">transform</code><span class="sig-paren">(</span><em class="sig-param">transformation</em>, <em class="sig-param">make_deepcopy=True</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.transform" title="Permalink to this definition">¶</a></dt> -<dd><p>Applies given Transformation repeatedly until no more changes can be made -and returns a transformed ModelWrapper instance. -If make_deepcopy is specified, operates on a new (deep)copy of model.</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.core.onnx_exec"> -<span id="finn-core-onnx-exec-module"></span><h2>finn.core.onnx_exec module<a class="headerlink" href="#module-finn.core.onnx_exec" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.core.onnx_exec.compare_execution"> -<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">compare_execution</code><span class="sig-paren">(</span><em class="sig-param">model_a</em>, <em class="sig-param">model_b</em>, <em class="sig-param">input_dict</em>, <em class="sig-param">compare_fxn=<function <lambda>></em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.compare_execution" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute two ONNX models and compare their outputs using given function. -compare_fxn should take in two tensors and return a Boolean</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.core.onnx_exec.execute_node"> -<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute a single node by using onnxruntime, with custom function or -if dataflow partition by using remote execution or rtlsim. -Input/output provided via context.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.core.onnx_exec.execute_onnx"> -<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_onnx</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">input_dict</em>, <em class="sig-param">return_full_exec_context=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_onnx" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute given ONNX ModelWrapper with given named inputs. -If return_full_exec_context is False, a dict of named outputs is returned -as indicated by the model.graph.output. -If return return_full_exec_context is True, the full set of tensors used by -the execution (including inputs, weights, activations and final outputs) -will be returned as a dict.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.core.onnx_exec.execute_onnx_and_make_model"> -<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_onnx_and_make_model</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">input_dict</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_onnx_and_make_model" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute given ONNX ModelWrapper with given named inputs and return a new -ModelWrapper where an initializer is provided for each tensor as taken from -the execution. This new model is useful for debugging, since it contains -all the intermediate activation values.</p> -</dd></dl> - -</div> -<div class="section" id="module-finn.core.remote_exec"> -<span id="finn-core-remote-exec-module"></span><h2>finn.core.remote_exec module<a class="headerlink" href="#module-finn.core.remote_exec" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.core.remote_exec.remote_exec"> -<code class="sig-prename descclassname">finn.core.remote_exec.</code><code class="sig-name descname">remote_exec</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">execution_context</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.remote_exec.remote_exec" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</div> -<div class="section" id="module-finn.core.rtlsim_exec"> -<span id="finn-core-rtlsim-exec-module"></span><h2>finn.core.rtlsim_exec module<a class="headerlink" href="#module-finn.core.rtlsim_exec" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.core.rtlsim_exec.rtlsim_exec"> -<code class="sig-prename descclassname">finn.core.rtlsim_exec.</code><code class="sig-name descname">rtlsim_exec</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">execution_context</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.rtlsim_exec.rtlsim_exec" title="Permalink to this definition">¶</a></dt> -<dd><p>Use PyVerilator to execute given model with stitched IP.</p> -</dd></dl> - </div> <div class="section" id="module-finn.core"> <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.core" title="Permalink to this headline">¶</a></h2> @@ -543,10 +180,10 @@ all the intermediate activation values.</p> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - <a href="finn.custom_op.html" class="btn btn-neutral float-right" title="finn.custom_op package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="finn.core.datatype.html" class="btn btn-neutral float-right" title="finn.core.datatype module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - <a href="finn.analysis.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.analysis.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="finn.analysis.verify_custom_nodes.html" class="btn btn-neutral float-left" title="finn.analysis.verify_custom_nodes module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/docs/finn/_build/html/source_code/finn.core.modelwrapper.html b/docs/finn/_build/html/source_code/finn.core.modelwrapper.html new file mode 100644 index 000000000..a1db61212 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.core.modelwrapper.html @@ -0,0 +1,368 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.core.modelwrapper module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.core.onnx_exec module" href="finn.core.onnx_exec.html" /> + <link rel="prev" title="finn.core.execute_custom_node module" href="finn.core.execute_custom_node.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.core.html">finn.core package</a> »</li> + + <li>finn.core.modelwrapper module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.core.modelwrapper.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.core.modelwrapper"> +<span id="finn-core-modelwrapper-module"></span><h1>finn.core.modelwrapper module<a class="headerlink" href="#module-finn.core.modelwrapper" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.core.modelwrapper.ModelWrapper"> +<em class="property">class </em><code class="sig-prename descclassname">finn.core.modelwrapper.</code><code class="sig-name descname">ModelWrapper</code><span class="sig-paren">(</span><em class="sig-param">onnx_model_proto</em>, <em class="sig-param">make_deepcopy=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> +<p>A wrapper around ONNX ModelProto that exposes some useful utility +functions for graph manipulation and exploration.</p> +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.analysis"> +<code class="sig-name descname">analysis</code><span class="sig-paren">(</span><em class="sig-param">analysis_fxn</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.analysis" title="Permalink to this definition">¶</a></dt> +<dd><p>Run given anaylsis_fxn on this model and return resulting dict.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified"> +<code class="sig-name descname">check_all_tensor_shapes_specified</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified" title="Permalink to this definition">¶</a></dt> +<dd><p>Checks whether all tensors have a specified shape (ValueInfo). +The ONNX standard allows for intermediate activations to have no +associated ValueInfo, but FINN expects this.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.check_compatibility"> +<code class="sig-name descname">check_compatibility</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.check_compatibility" title="Permalink to this definition">¶</a></dt> +<dd><p>Checks this model for FINN compatibility: +* no embedded subgraphs +* all tensor shapes are specified, including activations +* all constants are initializers</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.find_consumer"> +<code class="sig-name descname">find_consumer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.find_consumer" title="Permalink to this definition">¶</a></dt> +<dd><p>Find and return the node that consumes the tensor with given name. +Currently only works for linear graphs.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.find_producer"> +<code class="sig-name descname">find_producer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.find_producer" title="Permalink to this definition">¶</a></dt> +<dd><p>Find and return the node that produces the tensor with given name. +Currently only works for linear graphs.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.get_all_tensor_names"> +<code class="sig-name descname">get_all_tensor_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_all_tensor_names" title="Permalink to this definition">¶</a></dt> +<dd><p>Return a list of all (input, output and value_info) tensor names +in the graph.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.get_initializer"> +<code class="sig-name descname">get_initializer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_initializer" title="Permalink to this definition">¶</a></dt> +<dd><p>Get the initializer value for tensor with given name, if any.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.get_metadata_prop"> +<code class="sig-name descname">get_metadata_prop</code><span class="sig-paren">(</span><em class="sig-param">key</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_metadata_prop" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns the value associated with metadata_prop with given key, +or None otherwise.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_datatype"> +<code class="sig-name descname">get_tensor_datatype</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_datatype" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns the FINN DataType of tensor with given name.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_fanout"> +<code class="sig-name descname">get_tensor_fanout</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_fanout" title="Permalink to this definition">¶</a></dt> +<dd><p>Return the number of nodes for which the tensor with given name is +as input.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_shape"> +<code class="sig-name descname">get_tensor_shape</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_shape" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns the shape of tensor with given name, if it has ValueInfoProto.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo"> +<code class="sig-name descname">get_tensor_valueinfo</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns ValueInfoProto of tensor with given name, if it has one.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.graph"> +<em class="property">property </em><code class="sig-name descname">graph</code><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.graph" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.make_empty_exec_context"> +<code class="sig-name descname">make_empty_exec_context</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.make_empty_exec_context" title="Permalink to this definition">¶</a></dt> +<dd><p>Creates an empty execution context for this model. +The execution context is a dictionary of all tensors used for the +inference computation. Any initializer values will be taken into +account, all other tensors will be zero.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name"> +<code class="sig-name descname">make_new_valueinfo_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a name that can be used for a new value_info.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.model"> +<em class="property">property </em><code class="sig-name descname">model</code><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.model" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.rename_tensor"> +<code class="sig-name descname">rename_tensor</code><span class="sig-paren">(</span><em class="sig-param">old_name</em>, <em class="sig-param">new_name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.rename_tensor" title="Permalink to this definition">¶</a></dt> +<dd><p>Rename a tensor from old_name to new_name.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.save"> +<code class="sig-name descname">save</code><span class="sig-paren">(</span><em class="sig-param">filename</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.save" title="Permalink to this definition">¶</a></dt> +<dd><p>Save the wrapper ONNX ModelProto into a file with given name.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.set_initializer"> +<code class="sig-name descname">set_initializer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">tensor_value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_initializer" title="Permalink to this definition">¶</a></dt> +<dd><p>Set the initializer value for tensor with given name.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.set_metadata_prop"> +<code class="sig-name descname">set_metadata_prop</code><span class="sig-paren">(</span><em class="sig-param">key</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_metadata_prop" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.set_tensor_datatype"> +<code class="sig-name descname">set_tensor_datatype</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">datatype</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_tensor_datatype" title="Permalink to this definition">¶</a></dt> +<dd><p>Sets the FINN DataType of tensor with given name.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.set_tensor_shape"> +<code class="sig-name descname">set_tensor_shape</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">tensor_shape</em>, <em class="sig-param">dtype=1</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.set_tensor_shape" title="Permalink to this definition">¶</a></dt> +<dd><p>Assign shape in ValueInfoProto for tensor with given name.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.core.modelwrapper.ModelWrapper.transform"> +<code class="sig-name descname">transform</code><span class="sig-paren">(</span><em class="sig-param">transformation</em>, <em class="sig-param">make_deepcopy=True</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.modelwrapper.ModelWrapper.transform" title="Permalink to this definition">¶</a></dt> +<dd><p>Applies given Transformation repeatedly until no more changes can be made +and returns a transformed ModelWrapper instance. +If make_deepcopy is specified, operates on a new (deep)copy of model.</p> +</dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.core.onnx_exec.html" class="btn btn-neutral float-right" title="finn.core.onnx_exec module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.core.execute_custom_node.html" class="btn btn-neutral float-left" title="finn.core.execute_custom_node module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.core.onnx_exec.html b/docs/finn/_build/html/source_code/finn.core.onnx_exec.html new file mode 100644 index 000000000..a6e8dd8d9 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.core.onnx_exec.html @@ -0,0 +1,245 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.core.onnx_exec module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.core.remote_exec module" href="finn.core.remote_exec.html" /> + <link rel="prev" title="finn.core.modelwrapper module" href="finn.core.modelwrapper.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.core.html">finn.core package</a> »</li> + + <li>finn.core.onnx_exec module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.core.onnx_exec.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.core.onnx_exec"> +<span id="finn-core-onnx-exec-module"></span><h1>finn.core.onnx_exec module<a class="headerlink" href="#module-finn.core.onnx_exec" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.core.onnx_exec.compare_execution"> +<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">compare_execution</code><span class="sig-paren">(</span><em class="sig-param">model_a</em>, <em class="sig-param">model_b</em>, <em class="sig-param">input_dict</em>, <em class="sig-param">compare_fxn=<function <lambda>></em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.compare_execution" title="Permalink to this definition">¶</a></dt> +<dd><p>Execute two ONNX models and compare their outputs using given function. +compare_fxn should take in two tensors and return a Boolean</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.core.onnx_exec.execute_node"> +<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Execute a single node by using onnxruntime, with custom function or +if dataflow partition by using remote execution or rtlsim. +Input/output provided via context.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.core.onnx_exec.execute_onnx"> +<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_onnx</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">input_dict</em>, <em class="sig-param">return_full_exec_context=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_onnx" title="Permalink to this definition">¶</a></dt> +<dd><p>Execute given ONNX ModelWrapper with given named inputs. +If return_full_exec_context is False, a dict of named outputs is returned +as indicated by the model.graph.output. +If return return_full_exec_context is True, the full set of tensors used by +the execution (including inputs, weights, activations and final outputs) +will be returned as a dict.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.core.onnx_exec.execute_onnx_and_make_model"> +<code class="sig-prename descclassname">finn.core.onnx_exec.</code><code class="sig-name descname">execute_onnx_and_make_model</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">input_dict</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.onnx_exec.execute_onnx_and_make_model" title="Permalink to this definition">¶</a></dt> +<dd><p>Execute given ONNX ModelWrapper with given named inputs and return a new +ModelWrapper where an initializer is provided for each tensor as taken from +the execution. This new model is useful for debugging, since it contains +all the intermediate activation values.</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.core.remote_exec.html" class="btn btn-neutral float-right" title="finn.core.remote_exec module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.core.modelwrapper.html" class="btn btn-neutral float-left" title="finn.core.modelwrapper module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.core.remote_exec.html b/docs/finn/_build/html/source_code/finn.core.remote_exec.html new file mode 100644 index 000000000..771b6d0de --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.core.remote_exec.html @@ -0,0 +1,215 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.core.remote_exec module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.core.rtlsim_exec module" href="finn.core.rtlsim_exec.html" /> + <link rel="prev" title="finn.core.onnx_exec module" href="finn.core.onnx_exec.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.core.html">finn.core package</a> »</li> + + <li>finn.core.remote_exec module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.core.remote_exec.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.core.remote_exec"> +<span id="finn-core-remote-exec-module"></span><h1>finn.core.remote_exec module<a class="headerlink" href="#module-finn.core.remote_exec" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.core.remote_exec.remote_exec"> +<code class="sig-prename descclassname">finn.core.remote_exec.</code><code class="sig-name descname">remote_exec</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">execution_context</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.remote_exec.remote_exec" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.core.rtlsim_exec.html" class="btn btn-neutral float-right" title="finn.core.rtlsim_exec module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.core.onnx_exec.html" class="btn btn-neutral float-left" title="finn.core.onnx_exec module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.core.rtlsim_exec.html b/docs/finn/_build/html/source_code/finn.core.rtlsim_exec.html new file mode 100644 index 000000000..8d6ea24d4 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.core.rtlsim_exec.html @@ -0,0 +1,216 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.core.rtlsim_exec module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op package" href="finn.custom_op.html" /> + <link rel="prev" title="finn.core.remote_exec module" href="finn.core.remote_exec.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.core.html">finn.core package</a> »</li> + + <li>finn.core.rtlsim_exec module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.core.rtlsim_exec.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.core.rtlsim_exec"> +<span id="finn-core-rtlsim-exec-module"></span><h1>finn.core.rtlsim_exec module<a class="headerlink" href="#module-finn.core.rtlsim_exec" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.core.rtlsim_exec.rtlsim_exec"> +<code class="sig-prename descclassname">finn.core.rtlsim_exec.</code><code class="sig-name descname">rtlsim_exec</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">execution_context</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.core.rtlsim_exec.rtlsim_exec" title="Permalink to this definition">¶</a></dt> +<dd><p>Use PyVerilator to execute given model with stitched IP.</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.custom_op.html" class="btn btn-neutral float-right" title="finn.custom_op package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.core.remote_exec.html" class="btn btn-neutral float-left" title="finn.core.remote_exec module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html new file mode 100644 index 000000000..742ecdeae --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html @@ -0,0 +1,334 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.custom_op.fpgadataflow.convolutioninputgenerator module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op.fpgadataflow.streamingfclayer_batch module" href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html" /> + <link rel="prev" title="finn.custom_op.fpgadataflow package" href="finn.custom_op.fpgadataflow.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.custom_op.html">finn.custom_op package</a> »</li> + + <li><a href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a> »</li> + + <li>finn.custom_op.fpgadataflow.convolutioninputgenerator module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.custom_op.fpgadataflow.convolutioninputgenerator"> +<span id="finn-custom-op-fpgadataflow-convolutioninputgenerator-module"></span><h1>finn.custom_op.fpgadataflow.convolutioninputgenerator module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.convolutioninputgenerator" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator"> +<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.convolutioninputgenerator.</code><code class="sig-name descname">ConvolutionInputGenerator</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p> +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction"> +<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation"> +<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm"> +<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines"> +<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute"> +<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node"> +<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Execute this CustomOp instance, given the execution context and +ONNX graph.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype"> +<code class="sig-name descname">get_input_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types"> +<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a dict of permitted attributes for node, where: +returned_dict[attribute_name] = (dtype, require, default_value) +- dtype indicates which member of the ONNX AttributeProto +will be utilized +- require indicates whether this attribute is required +- default_val indicates the default value that will be used if the +attribute is not set</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values"> +<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype"> +<code class="sig-name descname">get_output_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width"> +<code class="sig-name descname">get_stream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes"> +<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype"> +<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype" title="Permalink to this definition">¶</a></dt> +<dd><p>Set the DataType annotations corresponding to the outputs of this +node.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation"> +<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op"> +<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a standard ONNX op which is compatible with this CustomOp +for performing shape inference.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas"> +<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data"> +<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy"> +<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl"> +<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node"> +<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Verifies that all attributes the node needs are there and +that particular attributes are set correctly. Also checks if +the number of inputs is equal to the expected number</p> +</dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow.streamingfclayer_batch module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.custom_op.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html index f263769e1..caa62f142 100644 --- a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html +++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.html @@ -35,7 +35,7 @@ <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> - <link rel="next" title="finn.transformation package" href="finn.transformation.html" /> + <link rel="next" title="finn.custom_op.fpgadataflow.convolutioninputgenerator module" href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html" /> <link rel="prev" title="finn.custom_op package" href="finn.custom_op.html" /> </head> @@ -158,556 +158,15 @@ <h1>finn.custom_op.fpgadataflow package<a class="headerlink" href="#finn-custom-op-fpgadataflow-package" title="Permalink to this headline">¶</a></h1> <div class="section" id="submodules"> <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.templates.html">finn.custom_op.fpgadataflow.templates module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.tlastmarker.html">finn.custom_op.fpgadataflow.tlastmarker module</a></li> +</ul> </div> -<div class="section" id="module-finn.custom_op.fpgadataflow.convolutioninputgenerator"> -<span id="finn-custom-op-fpgadataflow-convolutioninputgenerator-module"></span><h2>finn.custom_op.fpgadataflow.convolutioninputgenerator module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.convolutioninputgenerator" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator"> -<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.convolutioninputgenerator.</code><code class="sig-name descname">ConvolutionInputGenerator</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p> -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction"> -<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation"> -<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm"> -<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines"> -<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute"> -<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype"> -<code class="sig-name descname">get_input_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values"> -<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype"> -<code class="sig-name descname">get_output_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width"> -<code class="sig-name descname">get_stream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes"> -<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation"> -<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas"> -<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data"> -<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy"> -<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl"> -<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.custom_op.fpgadataflow.streamingfclayer_batch"> -<span id="finn-custom-op-fpgadataflow-streamingfclayer-batch-module"></span><h2>finn.custom_op.fpgadataflow.streamingfclayer_batch module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.streamingfclayer_batch" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch"> -<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.streamingfclayer_batch.</code><code class="sig-name descname">StreamingFCLayer_Batch</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p> -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction"> -<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation"> -<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation" title="Permalink to this definition">¶</a></dt> -<dd><p>the calculations are based on: -- FINN-R: An End-to-End Deep-Learning Framework for Fast -Exploration of Quantized Neural Networks -- M. Blott, T. B. Preusser, N. J. Fraser, G. Gambardella, K. O’Brien, -Y. Umuroglu, M. Leeser and K. Vissers -- 12. Sep 2018</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem"> -<code class="sig-name descname">calc_tmem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem"> -<code class="sig-name descname">calc_wmem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm"> -<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines"> -<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute"> -<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params"> -<code class="sig-name descname">generate_params</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape"> -<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape"> -<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor"> -<code class="sig-name descname">get_hls_compatible_threshold_tensor</code><span class="sig-paren">(</span><em class="sig-param">orig_thres_matrix</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert the original numpy weight matrix orig_weight_matrix into -a form suitable for passing to the hlslib call: -* ensure MH % PE == 0 -* for bipolar weights&inputs, ensure thresholds are positive -* interleave rows between PEs -* reshape into (PE, TMEM, n_thres_steps) and return</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor"> -<code class="sig-name descname">get_hls_compatible_weight_tensor</code><span class="sig-paren">(</span><em class="sig-param">orig_weight_matrix</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert the original numpy weight matrix orig_weight_matrix into -a form suitable for passing to the hlslib call: -* ensure MH % PE == 0 and MW % SIMD == 0 -* for bipolar {-1,+1} weights, convert to binary {0, 1} -* interleave rows between PEs -* reshape into (1, PE, WMEM, SIMD) and return</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype"> -<code class="sig-name descname">get_input_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width"> -<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values"> -<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype"> -<code class="sig-name descname">get_output_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width"> -<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values"> -<code class="sig-name descname">get_template_param_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype"> -<code class="sig-name descname">get_weight_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes"> -<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation"> -<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation" title="Permalink to this definition">¶</a></dt> -<dd><p>the calculations are based on: -- FINN-R: An End-to-End Deep-Learning Framework for Fast -Exploration of Quantized Neural Networks -- M. Blott, T. B. Preusser, N. J. Fraser, G. Gambardella, K. O’Brien, -Y. Umuroglu, M. Leeser and K. Vissers -- 12. Sep 2018</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas"> -<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data"> -<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy"> -<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl"> -<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.custom_op.fpgadataflow.streamingmaxpool_batch"> -<span id="finn-custom-op-fpgadataflow-streamingmaxpool-batch-module"></span><h2>finn.custom_op.fpgadataflow.streamingmaxpool_batch module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch"> -<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.streamingmaxpool_batch.</code><code class="sig-name descname">StreamingMaxPool_Batch</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p> -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction"> -<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation"> -<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm"> -<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines"> -<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute"> -<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values"> -<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes"> -<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation"> -<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas"> -<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data"> -<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy"> -<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl"> -<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.custom_op.fpgadataflow.templates"> -<span id="finn-custom-op-fpgadataflow-templates-module"></span><h2>finn.custom_op.fpgadataflow.templates module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.templates" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="module-finn.custom_op.fpgadataflow.tlastmarker"> -<span id="finn-custom-op-fpgadataflow-tlastmarker-module"></span><h2>finn.custom_op.fpgadataflow.tlastmarker module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.tlastmarker" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker"> -<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.tlastmarker.</code><code class="sig-name descname">TLastMarker</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p> -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction"> -<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm"> -<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines"> -<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute"> -<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape"> -<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape"> -<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width"> -<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values"> -<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width"> -<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes"> -<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas"> -<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data"> -<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy"> -<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl"> -<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - </div> <div class="section" id="module-finn.custom_op.fpgadataflow"> <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.custom_op.fpgadataflow" title="Permalink to this headline">¶</a></h2> @@ -887,7 +346,7 @@ attribute is not set</p> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - <a href="finn.transformation.html" class="btn btn-neutral float-right" title="finn.transformation package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow.convolutioninputgenerator module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="finn.custom_op.html" class="btn btn-neutral float-left" title="finn.custom_op package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html new file mode 100644 index 000000000..87ed52c67 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html @@ -0,0 +1,408 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.custom_op.fpgadataflow.streamingfclayer_batch module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op.fpgadataflow.streamingmaxpool_batch module" href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html" /> + <link rel="prev" title="finn.custom_op.fpgadataflow.convolutioninputgenerator module" href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.custom_op.html">finn.custom_op package</a> »</li> + + <li><a href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a> »</li> + + <li>finn.custom_op.fpgadataflow.streamingfclayer_batch module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.custom_op.fpgadataflow.streamingfclayer_batch"> +<span id="finn-custom-op-fpgadataflow-streamingfclayer-batch-module"></span><h1>finn.custom_op.fpgadataflow.streamingfclayer_batch module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.streamingfclayer_batch" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch"> +<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.streamingfclayer_batch.</code><code class="sig-name descname">StreamingFCLayer_Batch</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p> +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction"> +<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation"> +<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation" title="Permalink to this definition">¶</a></dt> +<dd><p>the calculations are based on: +- FINN-R: An End-to-End Deep-Learning Framework for Fast +Exploration of Quantized Neural Networks +- M. Blott, T. B. Preusser, N. J. Fraser, G. Gambardella, K. O’Brien, +Y. Umuroglu, M. Leeser and K. Vissers +- 12. Sep 2018</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem"> +<code class="sig-name descname">calc_tmem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem"> +<code class="sig-name descname">calc_wmem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm"> +<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines"> +<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute"> +<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node"> +<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Execute this CustomOp instance, given the execution context and +ONNX graph.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params"> +<code class="sig-name descname">generate_params</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape"> +<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape"> +<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor"> +<code class="sig-name descname">get_hls_compatible_threshold_tensor</code><span class="sig-paren">(</span><em class="sig-param">orig_thres_matrix</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor" title="Permalink to this definition">¶</a></dt> +<dd><p>Convert the original numpy weight matrix orig_weight_matrix into +a form suitable for passing to the hlslib call: +* ensure MH % PE == 0 +* for bipolar weights&inputs, ensure thresholds are positive +* interleave rows between PEs +* reshape into (PE, TMEM, n_thres_steps) and return</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor"> +<code class="sig-name descname">get_hls_compatible_weight_tensor</code><span class="sig-paren">(</span><em class="sig-param">orig_weight_matrix</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor" title="Permalink to this definition">¶</a></dt> +<dd><p>Convert the original numpy weight matrix orig_weight_matrix into +a form suitable for passing to the hlslib call: +* ensure MH % PE == 0 and MW % SIMD == 0 +* for bipolar {-1,+1} weights, convert to binary {0, 1} +* interleave rows between PEs +* reshape into (1, PE, WMEM, SIMD) and return</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype"> +<code class="sig-name descname">get_input_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width"> +<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types"> +<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a dict of permitted attributes for node, where: +returned_dict[attribute_name] = (dtype, require, default_value) +- dtype indicates which member of the ONNX AttributeProto +will be utilized +- require indicates whether this attribute is required +- default_val indicates the default value that will be used if the +attribute is not set</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values"> +<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype"> +<code class="sig-name descname">get_output_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width"> +<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values"> +<code class="sig-name descname">get_template_param_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype"> +<code class="sig-name descname">get_weight_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes"> +<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype"> +<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype" title="Permalink to this definition">¶</a></dt> +<dd><p>Set the DataType annotations corresponding to the outputs of this +node.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation"> +<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation" title="Permalink to this definition">¶</a></dt> +<dd><p>the calculations are based on: +- FINN-R: An End-to-End Deep-Learning Framework for Fast +Exploration of Quantized Neural Networks +- M. Blott, T. B. Preusser, N. J. Fraser, G. Gambardella, K. O’Brien, +Y. Umuroglu, M. Leeser and K. Vissers +- 12. Sep 2018</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op"> +<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a standard ONNX op which is compatible with this CustomOp +for performing shape inference.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas"> +<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data"> +<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy"> +<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl"> +<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node"> +<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Verifies that all attributes the node needs are there and +that particular attributes are set correctly. Also checks if +the number of inputs is equal to the expected number</p> +</dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow.streamingmaxpool_batch module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow.convolutioninputgenerator module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html new file mode 100644 index 000000000..1f0df0549 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html @@ -0,0 +1,312 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.custom_op.fpgadataflow.streamingmaxpool_batch module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op.fpgadataflow.templates module" href="finn.custom_op.fpgadataflow.templates.html" /> + <link rel="prev" title="finn.custom_op.fpgadataflow.streamingfclayer_batch module" href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.custom_op.html">finn.custom_op package</a> »</li> + + <li><a href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a> »</li> + + <li>finn.custom_op.fpgadataflow.streamingmaxpool_batch module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.custom_op.fpgadataflow.streamingmaxpool_batch"> +<span id="finn-custom-op-fpgadataflow-streamingmaxpool-batch-module"></span><h1>finn.custom_op.fpgadataflow.streamingmaxpool_batch module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch"> +<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.streamingmaxpool_batch.</code><code class="sig-name descname">StreamingMaxPool_Batch</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p> +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction"> +<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation"> +<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm"> +<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines"> +<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute"> +<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types"> +<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a dict of permitted attributes for node, where: +returned_dict[attribute_name] = (dtype, require, default_value) +- dtype indicates which member of the ONNX AttributeProto +will be utilized +- require indicates whether this attribute is required +- default_val indicates the default value that will be used if the +attribute is not set</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values"> +<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes"> +<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype"> +<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype" title="Permalink to this definition">¶</a></dt> +<dd><p>Set the DataType annotations corresponding to the outputs of this +node.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation"> +<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op"> +<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a standard ONNX op which is compatible with this CustomOp +for performing shape inference.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas"> +<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data"> +<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy"> +<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl"> +<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node"> +<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Verifies that all attributes the node needs are there and +that particular attributes are set correctly. Also checks if +the number of inputs is equal to the expected number</p> +</dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.custom_op.fpgadataflow.templates.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow.templates module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow.streamingfclayer_batch module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.templates.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.templates.html new file mode 100644 index 000000000..6a18a9d3b --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.templates.html @@ -0,0 +1,212 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.custom_op.fpgadataflow.templates module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op.fpgadataflow.tlastmarker module" href="finn.custom_op.fpgadataflow.tlastmarker.html" /> + <link rel="prev" title="finn.custom_op.fpgadataflow.streamingmaxpool_batch module" href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.custom_op.html">finn.custom_op package</a> »</li> + + <li><a href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a> »</li> + + <li>finn.custom_op.fpgadataflow.templates module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.custom_op.fpgadataflow.templates"> +<span id="finn-custom-op-fpgadataflow-templates-module"></span><h1>finn.custom_op.fpgadataflow.templates module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.templates" title="Permalink to this headline">¶</a></h1> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.custom_op.fpgadataflow.tlastmarker.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow.tlastmarker module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow.streamingmaxpool_batch module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.tlastmarker.html b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.tlastmarker.html new file mode 100644 index 000000000..bbee90cff --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.tlastmarker.html @@ -0,0 +1,329 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.custom_op.fpgadataflow.tlastmarker module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op.multithreshold module" href="finn.custom_op.multithreshold.html" /> + <link rel="prev" title="finn.custom_op.fpgadataflow.templates module" href="finn.custom_op.fpgadataflow.templates.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.custom_op.html">finn.custom_op package</a> »</li> + + <li><a href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a> »</li> + + <li>finn.custom_op.fpgadataflow.tlastmarker module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.custom_op.fpgadataflow.tlastmarker"> +<span id="finn-custom-op-fpgadataflow-tlastmarker-module"></span><h1>finn.custom_op.fpgadataflow.tlastmarker module<a class="headerlink" href="#module-finn.custom_op.fpgadataflow.tlastmarker" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker"> +<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.tlastmarker.</code><code class="sig-name descname">TLastMarker</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.custom_op.fpgadataflow.html#finn.custom_op.fpgadataflow.HLSCustomOp" title="finn.custom_op.fpgadataflow.HLSCustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></a></p> +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction"> +<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm"> +<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines"> +<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute"> +<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node"> +<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Execute this CustomOp instance, given the execution context and +ONNX graph.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape"> +<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape"> +<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width"> +<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types"> +<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a dict of permitted attributes for node, where: +returned_dict[attribute_name] = (dtype, require, default_value) +- dtype indicates which member of the ONNX AttributeProto +will be utilized +- require indicates whether this attribute is required +- default_val indicates the default value that will be used if the +attribute is not set</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values"> +<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width"> +<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes"> +<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype"> +<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype" title="Permalink to this definition">¶</a></dt> +<dd><p>Set the DataType annotations corresponding to the outputs of this +node.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op"> +<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a standard ONNX op which is compatible with this CustomOp +for performing shape inference.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas"> +<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data"> +<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy"> +<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl"> +<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node"> +<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Verifies that all attributes the node needs are there and +that particular attributes are set correctly. Also checks if +the number of inputs is equal to the expected number</p> +</dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.custom_op.multithreshold.html" class="btn btn-neutral float-right" title="finn.custom_op.multithreshold module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.custom_op.fpgadataflow.templates.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow.templates module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.custom_op.html b/docs/finn/_build/html/source_code/finn.custom_op.html index 59373404b..867145184 100644 --- a/docs/finn/_build/html/source_code/finn.custom_op.html +++ b/docs/finn/_build/html/source_code/finn.custom_op.html @@ -36,7 +36,7 @@ <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="finn.custom_op.fpgadataflow package" href="finn.custom_op.fpgadataflow.html" /> - <link rel="prev" title="finn.core package" href="finn.core.html" /> + <link rel="prev" title="finn.core.rtlsim_exec module" href="finn.core.rtlsim_exec.html" /> </head> <body class="wy-body-for-nav"> @@ -159,12 +159,14 @@ <div class="toctree-wrapper compound"> <ul> <li class="toctree-l1"><a class="reference internal" href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker module</a></li> +<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#submodules">Submodules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.templates.html">finn.custom_op.fpgadataflow.templates module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.tlastmarker.html">finn.custom_op.fpgadataflow.tlastmarker module</a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow">Module contents</a></li> </ul> </li> @@ -173,180 +175,14 @@ </div> <div class="section" id="submodules"> <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.multithreshold.html">finn.custom_op.multithreshold module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.registry.html">finn.custom_op.registry module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.streamingdataflowpartition.html">finn.custom_op.streamingdataflowpartition module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.custom_op.xnorpopcount.html">finn.custom_op.xnorpopcount module</a></li> +</ul> </div> -<div class="section" id="module-finn.custom_op.multithreshold"> -<span id="finn-custom-op-multithreshold-module"></span><h2>finn.custom_op.multithreshold module<a class="headerlink" href="#module-finn.custom_op.multithreshold" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.custom_op.multithreshold.MultiThreshold"> -<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">MultiThreshold</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p> -<dl class="method"> -<dt id="finn.custom_op.multithreshold.MultiThreshold.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.multithreshold.MultiThreshold.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -<dl class="function"> -<dt id="finn.custom_op.multithreshold.compare"> -<code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">compare</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">y</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.compare" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="function"> -<dt id="finn.custom_op.multithreshold.multithreshold"> -<code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">multithreshold</code><span class="sig-paren">(</span><em class="sig-param">v</em>, <em class="sig-param">thresholds</em>, <em class="sig-param">out_scale=None</em>, <em class="sig-param">out_bias=None</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.multithreshold" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</div> -<div class="section" id="module-finn.custom_op.registry"> -<span id="finn-custom-op-registry-module"></span><h2>finn.custom_op.registry module<a class="headerlink" href="#module-finn.custom_op.registry" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.custom_op.registry.getCustomOp"> -<code class="sig-prename descclassname">finn.custom_op.registry.</code><code class="sig-name descname">getCustomOp</code><span class="sig-paren">(</span><em class="sig-param">node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.registry.getCustomOp" title="Permalink to this definition">¶</a></dt> -<dd><p>Return a FINN CustomOp instance for the given ONNX node, if it exists.</p> -</dd></dl> - -</div> -<div class="section" id="module-finn.custom_op.streamingdataflowpartition"> -<span id="finn-custom-op-streamingdataflowpartition-module"></span><h2>finn.custom_op.streamingdataflowpartition module<a class="headerlink" href="#module-finn.custom_op.streamingdataflowpartition" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition"> -<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.streamingdataflowpartition.</code><code class="sig-name descname">StreamingDataflowPartition</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p> -<dl class="method"> -<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.custom_op.xnorpopcount"> -<span id="finn-custom-op-xnorpopcount-module"></span><h2>finn.custom_op.xnorpopcount module<a class="headerlink" href="#module-finn.custom_op.xnorpopcount" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul"> -<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.xnorpopcount.</code><code class="sig-name descname">XnorPopcountMatMul</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p> -<dl class="method"> -<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -<dl class="function"> -<dt id="finn.custom_op.xnorpopcount.xnorpopcountmatmul"> -<code class="sig-prename descclassname">finn.custom_op.xnorpopcount.</code><code class="sig-name descname">xnorpopcountmatmul</code><span class="sig-paren">(</span><em class="sig-param">inp0</em>, <em class="sig-param">inp1</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.xnorpopcountmatmul" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - </div> <div class="section" id="module-finn.custom_op"> <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.custom_op" title="Permalink to this headline">¶</a></h2> @@ -426,7 +262,7 @@ the number of inputs is equal to the expected number</p> <a href="finn.custom_op.fpgadataflow.html" class="btn btn-neutral float-right" title="finn.custom_op.fpgadataflow package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - <a href="finn.core.html" class="btn btn-neutral float-left" title="finn.core package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="finn.core.rtlsim_exec.html" class="btn btn-neutral float-left" title="finn.core.rtlsim_exec module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/docs/finn/_build/html/source_code/finn.custom_op.multithreshold.html b/docs/finn/_build/html/source_code/finn.custom_op.multithreshold.html new file mode 100644 index 000000000..0ba6f08e3 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.custom_op.multithreshold.html @@ -0,0 +1,267 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.custom_op.multithreshold module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op.registry module" href="finn.custom_op.registry.html" /> + <link rel="prev" title="finn.custom_op.fpgadataflow.tlastmarker module" href="finn.custom_op.fpgadataflow.tlastmarker.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.custom_op.html">finn.custom_op package</a> »</li> + + <li>finn.custom_op.multithreshold module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.custom_op.multithreshold.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.custom_op.multithreshold"> +<span id="finn-custom-op-multithreshold-module"></span><h1>finn.custom_op.multithreshold module<a class="headerlink" href="#module-finn.custom_op.multithreshold" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.custom_op.multithreshold.MultiThreshold"> +<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">MultiThreshold</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.custom_op.html#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p> +<dl class="method"> +<dt id="finn.custom_op.multithreshold.MultiThreshold.execute_node"> +<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.execute_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Execute this CustomOp instance, given the execution context and +ONNX graph.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types"> +<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a dict of permitted attributes for node, where: +returned_dict[attribute_name] = (dtype, require, default_value) +- dtype indicates which member of the ONNX AttributeProto +will be utilized +- require indicates whether this attribute is required +- default_val indicates the default value that will be used if the +attribute is not set</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype"> +<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype" title="Permalink to this definition">¶</a></dt> +<dd><p>Set the DataType annotations corresponding to the outputs of this +node.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op"> +<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a standard ONNX op which is compatible with this CustomOp +for performing shape inference.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.multithreshold.MultiThreshold.verify_node"> +<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.MultiThreshold.verify_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Verifies that all attributes the node needs are there and +that particular attributes are set correctly. Also checks if +the number of inputs is equal to the expected number</p> +</dd></dl> + +</dd></dl> + +<dl class="function"> +<dt id="finn.custom_op.multithreshold.compare"> +<code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">compare</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">y</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.compare" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="function"> +<dt id="finn.custom_op.multithreshold.multithreshold"> +<code class="sig-prename descclassname">finn.custom_op.multithreshold.</code><code class="sig-name descname">multithreshold</code><span class="sig-paren">(</span><em class="sig-param">v</em>, <em class="sig-param">thresholds</em>, <em class="sig-param">out_scale=None</em>, <em class="sig-param">out_bias=None</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.multithreshold.multithreshold" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.custom_op.registry.html" class="btn btn-neutral float-right" title="finn.custom_op.registry module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.custom_op.fpgadataflow.tlastmarker.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow.tlastmarker module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.custom_op.registry.html b/docs/finn/_build/html/source_code/finn.custom_op.registry.html new file mode 100644 index 000000000..257e4a9d8 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.custom_op.registry.html @@ -0,0 +1,216 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.custom_op.registry module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op.streamingdataflowpartition module" href="finn.custom_op.streamingdataflowpartition.html" /> + <link rel="prev" title="finn.custom_op.multithreshold module" href="finn.custom_op.multithreshold.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.custom_op.html">finn.custom_op package</a> »</li> + + <li>finn.custom_op.registry module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.custom_op.registry.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.custom_op.registry"> +<span id="finn-custom-op-registry-module"></span><h1>finn.custom_op.registry module<a class="headerlink" href="#module-finn.custom_op.registry" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.custom_op.registry.getCustomOp"> +<code class="sig-prename descclassname">finn.custom_op.registry.</code><code class="sig-name descname">getCustomOp</code><span class="sig-paren">(</span><em class="sig-param">node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.registry.getCustomOp" title="Permalink to this definition">¶</a></dt> +<dd><p>Return a FINN CustomOp instance for the given ONNX node, if it exists.</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.custom_op.streamingdataflowpartition.html" class="btn btn-neutral float-right" title="finn.custom_op.streamingdataflowpartition module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.custom_op.multithreshold.html" class="btn btn-neutral float-left" title="finn.custom_op.multithreshold module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.custom_op.streamingdataflowpartition.html b/docs/finn/_build/html/source_code/finn.custom_op.streamingdataflowpartition.html new file mode 100644 index 000000000..82daf99f8 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.custom_op.streamingdataflowpartition.html @@ -0,0 +1,257 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.custom_op.streamingdataflowpartition module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op.xnorpopcount module" href="finn.custom_op.xnorpopcount.html" /> + <link rel="prev" title="finn.custom_op.registry module" href="finn.custom_op.registry.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.custom_op.html">finn.custom_op package</a> »</li> + + <li>finn.custom_op.streamingdataflowpartition module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.custom_op.streamingdataflowpartition"> +<span id="finn-custom-op-streamingdataflowpartition-module"></span><h1>finn.custom_op.streamingdataflowpartition module<a class="headerlink" href="#module-finn.custom_op.streamingdataflowpartition" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition"> +<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.streamingdataflowpartition.</code><code class="sig-name descname">StreamingDataflowPartition</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.custom_op.html#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p> +<dl class="method"> +<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node"> +<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Execute this CustomOp instance, given the execution context and +ONNX graph.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types"> +<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a dict of permitted attributes for node, where: +returned_dict[attribute_name] = (dtype, require, default_value) +- dtype indicates which member of the ONNX AttributeProto +will be utilized +- require indicates whether this attribute is required +- default_val indicates the default value that will be used if the +attribute is not set</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype"> +<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype" title="Permalink to this definition">¶</a></dt> +<dd><p>Set the DataType annotations corresponding to the outputs of this +node.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op"> +<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a standard ONNX op which is compatible with this CustomOp +for performing shape inference.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node"> +<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Verifies that all attributes the node needs are there and +that particular attributes are set correctly. Also checks if +the number of inputs is equal to the expected number</p> +</dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.custom_op.xnorpopcount.html" class="btn btn-neutral float-right" title="finn.custom_op.xnorpopcount module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.custom_op.registry.html" class="btn btn-neutral float-left" title="finn.custom_op.registry module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.custom_op.xnorpopcount.html b/docs/finn/_build/html/source_code/finn.custom_op.xnorpopcount.html new file mode 100644 index 000000000..e4e92ce4b --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.custom_op.xnorpopcount.html @@ -0,0 +1,262 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.custom_op.xnorpopcount module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation package" href="finn.transformation.html" /> + <link rel="prev" title="finn.custom_op.streamingdataflowpartition module" href="finn.custom_op.streamingdataflowpartition.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.custom_op.html">finn.custom_op package</a> »</li> + + <li>finn.custom_op.xnorpopcount module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.custom_op.xnorpopcount.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.custom_op.xnorpopcount"> +<span id="finn-custom-op-xnorpopcount-module"></span><h1>finn.custom_op.xnorpopcount module<a class="headerlink" href="#module-finn.custom_op.xnorpopcount" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul"> +<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.xnorpopcount.</code><code class="sig-name descname">XnorPopcountMatMul</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.custom_op.html#finn.custom_op.CustomOp" title="finn.custom_op.CustomOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></a></p> +<dl class="method"> +<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node"> +<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Execute this CustomOp instance, given the execution context and +ONNX graph.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types"> +<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a dict of permitted attributes for node, where: +returned_dict[attribute_name] = (dtype, require, default_value) +- dtype indicates which member of the ONNX AttributeProto +will be utilized +- require indicates whether this attribute is required +- default_val indicates the default value that will be used if the +attribute is not set</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype"> +<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype" title="Permalink to this definition">¶</a></dt> +<dd><p>Set the DataType annotations corresponding to the outputs of this +node.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op"> +<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns a standard ONNX op which is compatible with this CustomOp +for performing shape inference.</p> +</dd></dl> + +<dl class="method"> +<dt id="finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node"> +<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node" title="Permalink to this definition">¶</a></dt> +<dd><p>Verifies that all attributes the node needs are there and +that particular attributes are set correctly. Also checks if +the number of inputs is equal to the expected number</p> +</dd></dl> + +</dd></dl> + +<dl class="function"> +<dt id="finn.custom_op.xnorpopcount.xnorpopcountmatmul"> +<code class="sig-prename descclassname">finn.custom_op.xnorpopcount.</code><code class="sig-name descname">xnorpopcountmatmul</code><span class="sig-paren">(</span><em class="sig-param">inp0</em>, <em class="sig-param">inp1</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.xnorpopcount.xnorpopcountmatmul" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.html" class="btn btn-neutral float-right" title="finn.transformation package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.custom_op.streamingdataflowpartition.html" class="btn btn-neutral float-left" title="finn.custom_op.streamingdataflowpartition module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.html b/docs/finn/_build/html/source_code/finn.html index 51b1f6b6f..2f11a60b2 100644 --- a/docs/finn/_build/html/source_code/finn.html +++ b/docs/finn/_build/html/source_code/finn.html @@ -159,17 +159,21 @@ <li class="toctree-l1"><a class="reference internal" href="finn.analysis.html">finn.analysis package</a><ul> <li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#subpackages">Subpackages</a><ul> <li class="toctree-l3"><a class="reference internal" href="finn.analysis.fpgadataflow.html">finn.analysis.fpgadataflow package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="finn.analysis.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation module</a></li> +<li class="toctree-l4"><a class="reference internal" href="finn.analysis.fpgadataflow.html#submodules">Submodules</a><ul> +<li class="toctree-l5"><a class="reference internal" href="finn.analysis.fpgadataflow.hls_synth_res_estimation.html">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.analysis.fpgadataflow.res_estimation.html">finn.analysis.fpgadataflow.res_estimation module</a></li> +</ul> +</li> <li class="toctree-l4"><a class="reference internal" href="finn.analysis.fpgadataflow.html#module-finn.analysis.fpgadataflow">Module contents</a></li> </ul> </li> </ul> </li> -<li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#module-finn.analysis.topology">finn.analysis.topology module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes module</a></li> +<li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#submodules">Submodules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="finn.analysis.topology.html">finn.analysis.topology module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.analysis.verify_custom_nodes.html">finn.analysis.verify_custom_nodes module</a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="finn.analysis.html#module-finn.analysis">Module contents</a><ul> <li class="toctree-l3"><a class="reference internal" href="finn.analysis.html#how-to-write-an-analysis-pass-for-finn">How to write an analysis pass for FINN</a></li> </ul> @@ -177,79 +181,91 @@ </ul> </li> <li class="toctree-l1"><a class="reference internal" href="finn.core.html">finn.core package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="finn.core.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.datatype">finn.core.datatype module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.execute_custom_node">finn.core.execute_custom_node module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.modelwrapper">finn.core.modelwrapper module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.onnx_exec">finn.core.onnx_exec module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.remote_exec">finn.core.remote_exec module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core.rtlsim_exec">finn.core.rtlsim_exec module</a></li> +<li class="toctree-l2"><a class="reference internal" href="finn.core.html#submodules">Submodules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="finn.core.datatype.html">finn.core.datatype module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.core.execute_custom_node.html">finn.core.execute_custom_node module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.core.modelwrapper.html">finn.core.modelwrapper module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.core.onnx_exec.html">finn.core.onnx_exec module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.core.remote_exec.html">finn.core.remote_exec module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.core.rtlsim_exec.html">finn.core.rtlsim_exec module</a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="finn.core.html#module-finn.core">Module contents</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="finn.custom_op.html">finn.custom_op package</a><ul> <li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#subpackages">Subpackages</a><ul> <li class="toctree-l3"><a class="reference internal" href="finn.custom_op.fpgadataflow.html">finn.custom_op.fpgadataflow package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker module</a></li> +<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#submodules">Submodules</a><ul> +<li class="toctree-l5"><a class="reference internal" href="finn.custom_op.fpgadataflow.convolutioninputgenerator.html">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingfclayer_batch.html">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.custom_op.fpgadataflow.streamingmaxpool_batch.html">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.custom_op.fpgadataflow.templates.html">finn.custom_op.fpgadataflow.templates module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.custom_op.fpgadataflow.tlastmarker.html">finn.custom_op.fpgadataflow.tlastmarker module</a></li> +</ul> +</li> <li class="toctree-l4"><a class="reference internal" href="finn.custom_op.fpgadataflow.html#module-finn.custom_op.fpgadataflow">Module contents</a></li> </ul> </li> </ul> </li> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.registry">finn.custom_op.registry module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount module</a></li> +<li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#submodules">Submodules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.multithreshold.html">finn.custom_op.multithreshold module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.registry.html">finn.custom_op.registry module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.streamingdataflowpartition.html">finn.custom_op.streamingdataflowpartition module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.custom_op.xnorpopcount.html">finn.custom_op.xnorpopcount module</a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op">Module contents</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="finn.transformation.html">finn.transformation package</a><ul> <li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#subpackages">Subpackages</a><ul> <li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.set_exec_mode">finn.transformation.fpgadataflow.set_exec_mode module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates module</a></li> +<li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#submodules">Submodules</a><ul> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.cleanup.html">finn.transformation.fpgadataflow.cleanup module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipgen.html">finn.transformation.fpgadataflow.codegen_ipgen module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipstitch.html">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_npysim.html">finn.transformation.fpgadataflow.codegen_npysim module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.compile.html">finn.transformation.fpgadataflow.compile module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.convert_to_hls_layers.html">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.create_dataflow_partition.html">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.hlssynth_ipgen.html">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.insert_tlastmarker.html">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.make_deployment.html">finn.transformation.fpgadataflow.make_deployment module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_driver.html">finn.transformation.fpgadataflow.make_pynq_driver module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_proj.html">finn.transformation.fpgadataflow.make_pynq_proj module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.set_exec_mode.html">finn.transformation.fpgadataflow.set_exec_mode module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.synth_pynq_proj.html">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.fpgadataflow.templates.html">finn.transformation.fpgadataflow.templates module</a></li> +</ul> +</li> <li class="toctree-l4"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow">Module contents</a></li> </ul> </li> <li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.html">finn.transformation.streamline package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres module</a></li> +<li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#submodules">Submodules</a><ul> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.streamline.absorb.html">finn.transformation.streamline.absorb module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.streamline.collapse_repeated.html">finn.transformation.streamline.collapse_repeated module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.streamline.reorder.html">finn.transformation.streamline.reorder module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.streamline.round_thresholds.html">finn.transformation.streamline.round_thresholds module</a></li> +<li class="toctree-l5"><a class="reference internal" href="finn.transformation.streamline.sign_to_thres.html">finn.transformation.streamline.sign_to_thres module</a></li> +</ul> +</li> <li class="toctree-l4"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline">Module contents</a></li> </ul> </li> </ul> </li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.fold_constants">finn.transformation.fold_constants module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.general">finn.transformation.general module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes module</a></li> +<li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#submodules">Submodules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.batchnorm_to_affine.html">finn.transformation.batchnorm_to_affine module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.bipolar_to_xnor.html">finn.transformation.bipolar_to_xnor module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fold_constants.html">finn.transformation.fold_constants module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.general.html">finn.transformation.general module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.infer_datatypes.html">finn.transformation.infer_datatypes module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.infer_shapes.html">finn.transformation.infer_shapes module</a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="finn.transformation.html#module-finn.transformation">Module contents</a><ul> <li class="toctree-l3"><a class="reference internal" href="finn.transformation.html#guide-to-writing-finn-transformations">Guide to writing FINN transformations</a></li> </ul> @@ -257,12 +273,14 @@ </ul> </li> <li class="toctree-l1"><a class="reference internal" href="finn.util.html">finn.util package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="finn.util.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util.basic">finn.util.basic module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util.data_packing">finn.util.data_packing module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util.fpgadataflow">finn.util.fpgadataflow module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util.onnx">finn.util.onnx module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util.test">finn.util.test module</a></li> +<li class="toctree-l2"><a class="reference internal" href="finn.util.html#submodules">Submodules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="finn.util.basic.html">finn.util.basic module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.util.data_packing.html">finn.util.data_packing module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.util.fpgadataflow.html">finn.util.fpgadataflow module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.util.onnx.html">finn.util.onnx module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.util.test.html">finn.util.test module</a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="finn.util.html#module-finn.util">Module contents</a></li> </ul> </li> diff --git a/docs/finn/_build/html/source_code/finn.transformation.batchnorm_to_affine.html b/docs/finn/_build/html/source_code/finn.transformation.batchnorm_to_affine.html new file mode 100644 index 000000000..956339611 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.batchnorm_to_affine.html @@ -0,0 +1,222 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.batchnorm_to_affine module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.bipolar_to_xnor module" href="finn.transformation.bipolar_to_xnor.html" /> + <link rel="prev" title="finn.transformation.streamline.sign_to_thres module" href="finn.transformation.streamline.sign_to_thres.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li>finn.transformation.batchnorm_to_affine module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.batchnorm_to_affine"> +<span id="finn-transformation-batchnorm-to-affine-module"></span><h1>finn.transformation.batchnorm_to_affine module<a class="headerlink" href="#module-finn.transformation.batchnorm_to_affine" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.batchnorm_to_affine.BatchNormToAffine"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.batchnorm_to_affine.</code><code class="sig-name descname">BatchNormToAffine</code><a class="headerlink" href="#finn.transformation.batchnorm_to_affine.BatchNormToAffine" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Replaces any test-time BatchNorm layers with Mul-Add layers.</p> +<dl class="method"> +<dt id="finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.bipolar_to_xnor.html" class="btn btn-neutral float-right" title="finn.transformation.bipolar_to_xnor module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.streamline.sign_to_thres.html" class="btn btn-neutral float-left" title="finn.transformation.streamline.sign_to_thres module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.bipolar_to_xnor.html b/docs/finn/_build/html/source_code/finn.transformation.bipolar_to_xnor.html new file mode 100644 index 000000000..60ba89ae7 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.bipolar_to_xnor.html @@ -0,0 +1,223 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.bipolar_to_xnor module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fold_constants module" href="finn.transformation.fold_constants.html" /> + <link rel="prev" title="finn.transformation.batchnorm_to_affine module" href="finn.transformation.batchnorm_to_affine.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li>finn.transformation.bipolar_to_xnor module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.bipolar_to_xnor"> +<span id="finn-transformation-bipolar-to-xnor-module"></span><h1>finn.transformation.bipolar_to_xnor module<a class="headerlink" href="#module-finn.transformation.bipolar_to_xnor" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.bipolar_to_xnor.</code><code class="sig-name descname">ConvertBipolarMatMulToXnorPopcount</code><a class="headerlink" href="#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Convert MatMul nodes with all-bipolar inputs to XnorPopcountMatMul +and associated result correction.</p> +<dl class="method"> +<dt id="finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fold_constants.html" class="btn btn-neutral float-right" title="finn.transformation.fold_constants module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.batchnorm_to_affine.html" class="btn btn-neutral float-left" title="finn.transformation.batchnorm_to_affine module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fold_constants.html b/docs/finn/_build/html/source_code/finn.transformation.fold_constants.html new file mode 100644 index 000000000..d02be3647 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fold_constants.html @@ -0,0 +1,223 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fold_constants module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.general module" href="finn.transformation.general.html" /> + <link rel="prev" title="finn.transformation.bipolar_to_xnor module" href="finn.transformation.bipolar_to_xnor.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li>finn.transformation.fold_constants module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fold_constants.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fold_constants"> +<span id="finn-transformation-fold-constants-module"></span><h1>finn.transformation.fold_constants module<a class="headerlink" href="#module-finn.transformation.fold_constants" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fold_constants.FoldConstants"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fold_constants.</code><code class="sig-name descname">FoldConstants</code><a class="headerlink" href="#finn.transformation.fold_constants.FoldConstants" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Replace the output of a node with const-only inputs with a precomputed +result.</p> +<dl class="method"> +<dt id="finn.transformation.fold_constants.FoldConstants.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fold_constants.FoldConstants.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.general.html" class="btn btn-neutral float-right" title="finn.transformation.general module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.bipolar_to_xnor.html" class="btn btn-neutral float-left" title="finn.transformation.bipolar_to_xnor module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.cleanup.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.cleanup.html new file mode 100644 index 000000000..ce38981d4 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.cleanup.html @@ -0,0 +1,224 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.cleanup module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.codegen_ipgen module" href="finn.transformation.fpgadataflow.codegen_ipgen.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow package" href="finn.transformation.fpgadataflow.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.cleanup module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.cleanup"> +<span id="finn-transformation-fpgadataflow-cleanup-module"></span><h1>finn.transformation.fpgadataflow.cleanup module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.cleanup" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.cleanup.CleanUp"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.cleanup.</code><code class="sig-name descname">CleanUp</code><a class="headerlink" href="#finn.transformation.fpgadataflow.cleanup.CleanUp" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Remove any generated files for fpgadataflow nodes.</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.cleanup.CleanUp.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.cleanup.CleanUp.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.codegen_ipgen.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.codegen_ipgen module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipgen.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipgen.html new file mode 100644 index 000000000..15ee3487e --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipgen.html @@ -0,0 +1,224 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.codegen_ipgen module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.codegen_ipstitch module" href="finn.transformation.fpgadataflow.codegen_ipstitch.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.cleanup module" href="finn.transformation.fpgadataflow.cleanup.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.codegen_ipgen module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.codegen_ipgen"> +<span id="finn-transformation-fpgadataflow-codegen-ipgen-module"></span><h1>finn.transformation.fpgadataflow.codegen_ipgen module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_ipgen" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_ipgen.</code><code class="sig-name descname">CodeGen_ipgen</code><span class="sig-paren">(</span><em class="sig-param">fpgapart</em>, <em class="sig-param">clk</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Code generation for all nodes in model</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.codegen_ipstitch.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.codegen_ipstitch module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.cleanup.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.cleanup module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html new file mode 100644 index 000000000..53fcfe117 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html @@ -0,0 +1,232 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.codegen_ipstitch module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.codegen_npysim module" href="finn.transformation.fpgadataflow.codegen_npysim.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.codegen_ipgen module" href="finn.transformation.fpgadataflow.codegen_ipgen.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.codegen_ipstitch module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.codegen_ipstitch"> +<span id="finn-transformation-fpgadataflow-codegen-ipstitch-module"></span><h1>finn.transformation.fpgadataflow.codegen_ipstitch module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_ipstitch" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_ipstitch.</code><code class="sig-name descname">CodeGen_ipstitch</code><span class="sig-paren">(</span><em class="sig-param">fpgapart</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Create a Vivado IP Block Design project from all the generated IPs of a +graph. All nodes in the graph must have the fpgadataflow backend attribute, +and the CodeGen_ipgen transformation must have been previously run on +the graph. The resulting block design is also packaged as IP.</p> +<p>Outcome if successful: sets the vivado_stitch_proj attribute in the ONNX +ModelProto’s metadata_props field, with the created project dir as the +value. A make_project.tcl script is also placed under the same folder, +which is called to instantiate the per-layer IPs and stitch them together. +The packaged block design IP can be found under the ip subdirectory.</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.codegen_npysim.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.codegen_npysim module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.codegen_ipgen.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.codegen_ipgen module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_npysim.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_npysim.html new file mode 100644 index 000000000..36e1774c5 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_npysim.html @@ -0,0 +1,224 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.codegen_npysim module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.compile module" href="finn.transformation.fpgadataflow.compile.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.codegen_ipstitch module" href="finn.transformation.fpgadataflow.codegen_ipstitch.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.codegen_npysim module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.codegen_npysim"> +<span id="finn-transformation-fpgadataflow-codegen-npysim-module"></span><h1>finn.transformation.fpgadataflow.codegen_npysim module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_npysim" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_npysim.</code><code class="sig-name descname">CodeGen_npysim</code><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Code generation for all nodes in model</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.compile.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.compile module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.codegen_ipstitch.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.codegen_ipstitch module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.compile.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.compile.html new file mode 100644 index 000000000..3ee88f9b1 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.compile.html @@ -0,0 +1,224 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.compile module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.convert_to_hls_layers module" href="finn.transformation.fpgadataflow.convert_to_hls_layers.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.codegen_npysim module" href="finn.transformation.fpgadataflow.codegen_npysim.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.compile module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.compile"> +<span id="finn-transformation-fpgadataflow-compile-module"></span><h1>finn.transformation.fpgadataflow.compile module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.compile" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.compile.Compile"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.compile.</code><code class="sig-name descname">Compile</code><a class="headerlink" href="#finn.transformation.fpgadataflow.compile.Compile" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Compile for all nodes in model</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.compile.Compile.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.compile.Compile.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.convert_to_hls_layers.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.convert_to_hls_layers module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.codegen_npysim.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.codegen_npysim module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html new file mode 100644 index 000000000..31b287d2b --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html @@ -0,0 +1,226 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.convert_to_hls_layers module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.create_dataflow_partition module" href="finn.transformation.fpgadataflow.create_dataflow_partition.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.compile module" href="finn.transformation.fpgadataflow.compile.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.convert_to_hls_layers module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.convert_to_hls_layers"> +<span id="finn-transformation-fpgadataflow-convert-to-hls-layers-module"></span><h1>finn.transformation.fpgadataflow.convert_to_hls_layers module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.convert_to_hls_layers" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.convert_to_hls_layers.</code><code class="sig-name descname">InferBinaryStreamingFCLayer</code><a class="headerlink" href="#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Convert pairs of binary XnorPopcountMatMul layers to +StreamingFCLayer_Batch layers. Any immediately following MultiThreshold +layers will also be absorbed into the MVTU.</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.create_dataflow_partition.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.create_dataflow_partition module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.compile.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.compile module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html new file mode 100644 index 000000000..e47ba3493 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html @@ -0,0 +1,228 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.create_dataflow_partition module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.hlssynth_ipgen module" href="finn.transformation.fpgadataflow.hlssynth_ipgen.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.convert_to_hls_layers module" href="finn.transformation.fpgadataflow.convert_to_hls_layers.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.create_dataflow_partition module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.create_dataflow_partition"> +<span id="finn-transformation-fpgadataflow-create-dataflow-partition-module"></span><h1>finn.transformation.fpgadataflow.create_dataflow_partition module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.create_dataflow_partition" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.create_dataflow_partition.</code><code class="sig-name descname">CreateDataflowPartition</code><a class="headerlink" href="#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Split a graph into two graphs; one which contains non-FINN-dataflow nodes +and a StreamingDataflowPartition node, and another which only contains +FINN dataflow nodes. The StreamingDataflowPartition has a model attribute +that indicates the filename for the second graph that only contains +dataflow nodes. No action is taken if there are no dataflow nodes.</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.hlssynth_ipgen.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.hlssynth_ipgen module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.convert_to_hls_layers.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.convert_to_hls_layers module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html new file mode 100644 index 000000000..1d2a3d9ec --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html @@ -0,0 +1,224 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.hlssynth_ipgen module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.insert_tlastmarker module" href="finn.transformation.fpgadataflow.insert_tlastmarker.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.create_dataflow_partition module" href="finn.transformation.fpgadataflow.create_dataflow_partition.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.hlssynth_ipgen module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.hlssynth_ipgen"> +<span id="finn-transformation-fpgadataflow-hlssynth-ipgen-module"></span><h1>finn.transformation.fpgadataflow.hlssynth_ipgen module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.hlssynth_ipgen" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.hlssynth_ipgen.</code><code class="sig-name descname">HLSSynth_IPGen</code><a class="headerlink" href="#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Compile for all nodes in model</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.insert_tlastmarker.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.insert_tlastmarker module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.create_dataflow_partition.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.create_dataflow_partition module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html index 194aa7cc1..6d71ce401 100644 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html @@ -35,7 +35,7 @@ <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> - <link rel="next" title="finn.transformation.streamline package" href="finn.transformation.streamline.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.cleanup module" href="finn.transformation.fpgadataflow.cleanup.html" /> <link rel="prev" title="finn.transformation package" href="finn.transformation.html" /> </head> @@ -158,251 +158,25 @@ <h1>finn.transformation.fpgadataflow package<a class="headerlink" href="#finn-transformation-fpgadataflow-package" title="Permalink to this headline">¶</a></h1> <div class="section" id="submodules"> <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.cleanup.html">finn.transformation.fpgadataflow.cleanup module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipgen.html">finn.transformation.fpgadataflow.codegen_ipgen module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipstitch.html">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_npysim.html">finn.transformation.fpgadataflow.codegen_npysim module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.compile.html">finn.transformation.fpgadataflow.compile module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.convert_to_hls_layers.html">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.create_dataflow_partition.html">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.hlssynth_ipgen.html">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.insert_tlastmarker.html">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.make_deployment.html">finn.transformation.fpgadataflow.make_deployment module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_driver.html">finn.transformation.fpgadataflow.make_pynq_driver module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_proj.html">finn.transformation.fpgadataflow.make_pynq_proj module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.set_exec_mode.html">finn.transformation.fpgadataflow.set_exec_mode module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.synth_pynq_proj.html">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.templates.html">finn.transformation.fpgadataflow.templates module</a></li> +</ul> </div> -<div class="section" id="module-finn.transformation.fpgadataflow.cleanup"> -<span id="finn-transformation-fpgadataflow-cleanup-module"></span><h2>finn.transformation.fpgadataflow.cleanup module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.cleanup" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.cleanup.CleanUp"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.cleanup.</code><code class="sig-name descname">CleanUp</code><a class="headerlink" href="#finn.transformation.fpgadataflow.cleanup.CleanUp" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Remove any generated files for fpgadataflow nodes.</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.cleanup.CleanUp.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.cleanup.CleanUp.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.codegen_ipgen"> -<span id="finn-transformation-fpgadataflow-codegen-ipgen-module"></span><h2>finn.transformation.fpgadataflow.codegen_ipgen module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_ipgen" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_ipgen.</code><code class="sig-name descname">CodeGen_ipgen</code><span class="sig-paren">(</span><em class="sig-param">fpgapart</em>, <em class="sig-param">clk</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Code generation for all nodes in model</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.codegen_ipstitch"> -<span id="finn-transformation-fpgadataflow-codegen-ipstitch-module"></span><h2>finn.transformation.fpgadataflow.codegen_ipstitch module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_ipstitch" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_ipstitch.</code><code class="sig-name descname">CodeGen_ipstitch</code><span class="sig-paren">(</span><em class="sig-param">fpgapart</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Create a Vivado IP Block Design project from all the generated IPs of a -graph. All nodes in the graph must have the fpgadataflow backend attribute, -and the CodeGen_ipgen transformation must have been previously run on -the graph. The resulting block design is also packaged as IP.</p> -<p>Outcome if successful: sets the vivado_stitch_proj attribute in the ONNX -ModelProto’s metadata_props field, with the created project dir as the -value. A make_project.tcl script is also placed under the same folder, -which is called to instantiate the per-layer IPs and stitch them together. -The packaged block design IP can be found under the ip subdirectory.</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.codegen_npysim"> -<span id="finn-transformation-fpgadataflow-codegen-npysim-module"></span><h2>finn.transformation.fpgadataflow.codegen_npysim module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.codegen_npysim" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.codegen_npysim.</code><code class="sig-name descname">CodeGen_npysim</code><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Code generation for all nodes in model</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.compile"> -<span id="finn-transformation-fpgadataflow-compile-module"></span><h2>finn.transformation.fpgadataflow.compile module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.compile" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.compile.Compile"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.compile.</code><code class="sig-name descname">Compile</code><a class="headerlink" href="#finn.transformation.fpgadataflow.compile.Compile" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Compile for all nodes in model</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.compile.Compile.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.compile.Compile.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.convert_to_hls_layers"> -<span id="finn-transformation-fpgadataflow-convert-to-hls-layers-module"></span><h2>finn.transformation.fpgadataflow.convert_to_hls_layers module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.convert_to_hls_layers" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.convert_to_hls_layers.</code><code class="sig-name descname">InferBinaryStreamingFCLayer</code><a class="headerlink" href="#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Convert pairs of binary XnorPopcountMatMul layers to -StreamingFCLayer_Batch layers. Any immediately following MultiThreshold -layers will also be absorbed into the MVTU.</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.create_dataflow_partition"> -<span id="finn-transformation-fpgadataflow-create-dataflow-partition-module"></span><h2>finn.transformation.fpgadataflow.create_dataflow_partition module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.create_dataflow_partition" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.create_dataflow_partition.</code><code class="sig-name descname">CreateDataflowPartition</code><a class="headerlink" href="#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Split a graph into two graphs; one which contains non-FINN-dataflow nodes -and a StreamingDataflowPartition node, and another which only contains -FINN dataflow nodes. The StreamingDataflowPartition has a model attribute -that indicates the filename for the second graph that only contains -dataflow nodes. No action is taken if there are no dataflow nodes.</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.hlssynth_ipgen"> -<span id="finn-transformation-fpgadataflow-hlssynth-ipgen-module"></span><h2>finn.transformation.fpgadataflow.hlssynth_ipgen module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.hlssynth_ipgen" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.hlssynth_ipgen.</code><code class="sig-name descname">HLSSynth_IPGen</code><a class="headerlink" href="#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Compile for all nodes in model</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.insert_tlastmarker"> -<span id="finn-transformation-fpgadataflow-insert-tlastmarker-module"></span><h2>finn.transformation.fpgadataflow.insert_tlastmarker module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.insert_tlastmarker" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.insert_tlastmarker.</code><code class="sig-name descname">InsertTLastMarker</code><a class="headerlink" href="#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Ensure that the graph is terminated with a TLastMarker node, inserting -one if necessary.</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.make_deployment"> -<span id="finn-transformation-fpgadataflow-make-deployment-module"></span><h2>finn.transformation.fpgadataflow.make_deployment module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_deployment" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_deployment.</code><code class="sig-name descname">DeployToPYNQ</code><span class="sig-paren">(</span><em class="sig-param">ip</em>, <em class="sig-param">username</em>, <em class="sig-param">password</em>, <em class="sig-param">target_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Collects all necessary files for deployment and copies them to the PYNQ board. -Expects information about PYNQ board to make scp possible: -* ip address of board -* username and password for board -* target directory where the files are stored on the board</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.make_pynq_driver"> -<span id="finn-transformation-fpgadataflow-make-pynq-driver-module"></span><h2>finn.transformation.fpgadataflow.make_pynq_driver module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_pynq_driver" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_pynq_driver.</code><code class="sig-name descname">MakePYNQDriver</code><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Create PYNQ Python code to correctly interface the generated -accelerator, including data packing/unpacking. The MakePYNQProject -transformation must have been already applied.</p> -<p>Outcome if successful: sets the pynq_driver_dir attribute in the ONNX -ModelProto’s metadata_props field, with the created driver dir as the -value.</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.make_pynq_proj"> -<span id="finn-transformation-fpgadataflow-make-pynq-proj-module"></span><h2>finn.transformation.fpgadataflow.make_pynq_proj module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_pynq_proj" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_pynq_proj.</code><code class="sig-name descname">MakePYNQProject</code><span class="sig-paren">(</span><em class="sig-param">platform</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Create a Vivado PYNQ overlay project (including the shell infrastructure) -from the already-stitched IP block for this graph. -All nodes in the graph must have the fpgadataflow backend attribute, -and the CodeGen_ipstitch transformation must have been previously run on -the graph.</p> -<p>Outcome if successful: sets the vivado_pynq_proj attribute in the ONNX -ModelProto’s metadata_props field, with the created project dir as the -value.</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.set_exec_mode"> -<span id="finn-transformation-fpgadataflow-set-exec-mode-module"></span><h2>finn.transformation.fpgadataflow.set_exec_mode module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.set_exec_mode" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.set_exec_mode.SetExecMode"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.set_exec_mode.</code><code class="sig-name descname">SetExecMode</code><span class="sig-paren">(</span><em class="sig-param">mode</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Set attribute sim_mode in all fpgadataflow nodes</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.synth_pynq_proj"> -<span id="finn-transformation-fpgadataflow-synth-pynq-proj-module"></span><h2>finn.transformation.fpgadataflow.synth_pynq_proj module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.synth_pynq_proj" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.synth_pynq_proj.</code><code class="sig-name descname">SynthPYNQProject</code><a class="headerlink" href="#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Run synthesis for the PYNQ project for this graph. The MakePYNQProject -transformation must be applied prior to this transformation.</p> -<dl class="method"> -<dt id="finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fpgadataflow.templates"> -<span id="finn-transformation-fpgadataflow-templates-module"></span><h2>finn.transformation.fpgadataflow.templates module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.templates" title="Permalink to this headline">¶</a></h2> </div> <div class="section" id="module-finn.transformation.fpgadataflow"> <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.transformation.fpgadataflow" title="Permalink to this headline">¶</a></h2> @@ -417,7 +191,7 @@ transformation must be applied prior to this transformation.</p> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - <a href="finn.transformation.streamline.html" class="btn btn-neutral float-right" title="finn.transformation.streamline package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="finn.transformation.fpgadataflow.cleanup.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.cleanup module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="finn.transformation.html" class="btn btn-neutral float-left" title="finn.transformation package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html new file mode 100644 index 000000000..1b972534f --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html @@ -0,0 +1,225 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.insert_tlastmarker module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.make_deployment module" href="finn.transformation.fpgadataflow.make_deployment.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.hlssynth_ipgen module" href="finn.transformation.fpgadataflow.hlssynth_ipgen.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.insert_tlastmarker module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.insert_tlastmarker"> +<span id="finn-transformation-fpgadataflow-insert-tlastmarker-module"></span><h1>finn.transformation.fpgadataflow.insert_tlastmarker module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.insert_tlastmarker" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.insert_tlastmarker.</code><code class="sig-name descname">InsertTLastMarker</code><a class="headerlink" href="#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Ensure that the graph is terminated with a TLastMarker node, inserting +one if necessary.</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.make_deployment.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.make_deployment module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.hlssynth_ipgen.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.hlssynth_ipgen module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_deployment.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_deployment.html new file mode 100644 index 000000000..8a3bb6955 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_deployment.html @@ -0,0 +1,228 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.make_deployment module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.make_pynq_driver module" href="finn.transformation.fpgadataflow.make_pynq_driver.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.insert_tlastmarker module" href="finn.transformation.fpgadataflow.insert_tlastmarker.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.make_deployment module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.make_deployment"> +<span id="finn-transformation-fpgadataflow-make-deployment-module"></span><h1>finn.transformation.fpgadataflow.make_deployment module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_deployment" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_deployment.</code><code class="sig-name descname">DeployToPYNQ</code><span class="sig-paren">(</span><em class="sig-param">ip</em>, <em class="sig-param">username</em>, <em class="sig-param">password</em>, <em class="sig-param">target_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Collects all necessary files for deployment and copies them to the PYNQ board. +Expects information about PYNQ board to make scp possible: +* ip address of board +* username and password for board +* target directory where the files are stored on the board</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.make_pynq_driver.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.make_pynq_driver module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.insert_tlastmarker.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.insert_tlastmarker module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_driver.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_driver.html new file mode 100644 index 000000000..1e21d93b9 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_driver.html @@ -0,0 +1,229 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.make_pynq_driver module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.make_pynq_proj module" href="finn.transformation.fpgadataflow.make_pynq_proj.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.make_deployment module" href="finn.transformation.fpgadataflow.make_deployment.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.make_pynq_driver module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.make_pynq_driver"> +<span id="finn-transformation-fpgadataflow-make-pynq-driver-module"></span><h1>finn.transformation.fpgadataflow.make_pynq_driver module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_pynq_driver" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_pynq_driver.</code><code class="sig-name descname">MakePYNQDriver</code><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Create PYNQ Python code to correctly interface the generated +accelerator, including data packing/unpacking. The MakePYNQProject +transformation must have been already applied.</p> +<p>Outcome if successful: sets the pynq_driver_dir attribute in the ONNX +ModelProto’s metadata_props field, with the created driver dir as the +value.</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.make_pynq_proj.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.make_pynq_proj module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.make_deployment.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.make_deployment module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_proj.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_proj.html new file mode 100644 index 000000000..c95642fa5 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_proj.html @@ -0,0 +1,231 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.make_pynq_proj module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.set_exec_mode module" href="finn.transformation.fpgadataflow.set_exec_mode.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.make_pynq_driver module" href="finn.transformation.fpgadataflow.make_pynq_driver.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.make_pynq_proj module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.make_pynq_proj"> +<span id="finn-transformation-fpgadataflow-make-pynq-proj-module"></span><h1>finn.transformation.fpgadataflow.make_pynq_proj module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.make_pynq_proj" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.make_pynq_proj.</code><code class="sig-name descname">MakePYNQProject</code><span class="sig-paren">(</span><em class="sig-param">platform</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Create a Vivado PYNQ overlay project (including the shell infrastructure) +from the already-stitched IP block for this graph. +All nodes in the graph must have the fpgadataflow backend attribute, +and the CodeGen_ipstitch transformation must have been previously run on +the graph.</p> +<p>Outcome if successful: sets the vivado_pynq_proj attribute in the ONNX +ModelProto’s metadata_props field, with the created project dir as the +value.</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.set_exec_mode.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.set_exec_mode module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.make_pynq_driver.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.make_pynq_driver module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.set_exec_mode.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.set_exec_mode.html new file mode 100644 index 000000000..f7263416c --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.set_exec_mode.html @@ -0,0 +1,224 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.set_exec_mode module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.synth_pynq_proj module" href="finn.transformation.fpgadataflow.synth_pynq_proj.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.make_pynq_proj module" href="finn.transformation.fpgadataflow.make_pynq_proj.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.set_exec_mode module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.set_exec_mode"> +<span id="finn-transformation-fpgadataflow-set-exec-mode-module"></span><h1>finn.transformation.fpgadataflow.set_exec_mode module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.set_exec_mode" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.set_exec_mode.SetExecMode"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.set_exec_mode.</code><code class="sig-name descname">SetExecMode</code><span class="sig-paren">(</span><em class="sig-param">mode</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Set attribute sim_mode in all fpgadataflow nodes</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.set_exec_mode.SetExecMode.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.synth_pynq_proj.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.synth_pynq_proj module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.make_pynq_proj.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.make_pynq_proj module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html new file mode 100644 index 000000000..4f24fdad4 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html @@ -0,0 +1,225 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.synth_pynq_proj module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow.templates module" href="finn.transformation.fpgadataflow.templates.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.set_exec_mode module" href="finn.transformation.fpgadataflow.set_exec_mode.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.synth_pynq_proj module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.synth_pynq_proj"> +<span id="finn-transformation-fpgadataflow-synth-pynq-proj-module"></span><h1>finn.transformation.fpgadataflow.synth_pynq_proj module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.synth_pynq_proj" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fpgadataflow.synth_pynq_proj.</code><code class="sig-name descname">SynthPYNQProject</code><a class="headerlink" href="#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Run synthesis for the PYNQ project for this graph. The MakePYNQProject +transformation must be applied prior to this transformation.</p> +<dl class="method"> +<dt id="finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.fpgadataflow.templates.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow.templates module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.set_exec_mode.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.set_exec_mode module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.templates.html b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.templates.html new file mode 100644 index 000000000..9777fad44 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.templates.html @@ -0,0 +1,212 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.fpgadataflow.templates module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.streamline package" href="finn.transformation.streamline.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.synth_pynq_proj module" href="finn.transformation.fpgadataflow.synth_pynq_proj.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a> »</li> + + <li>finn.transformation.fpgadataflow.templates module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.fpgadataflow.templates"> +<span id="finn-transformation-fpgadataflow-templates-module"></span><h1>finn.transformation.fpgadataflow.templates module<a class="headerlink" href="#module-finn.transformation.fpgadataflow.templates" title="Permalink to this headline">¶</a></h1> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.streamline.html" class="btn btn-neutral float-right" title="finn.transformation.streamline package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fpgadataflow.synth_pynq_proj.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.synth_pynq_proj module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.general.html b/docs/finn/_build/html/source_code/finn.transformation.general.html new file mode 100644 index 000000000..0c1dc50f0 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.general.html @@ -0,0 +1,259 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.general module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.infer_datatypes module" href="finn.transformation.infer_datatypes.html" /> + <link rel="prev" title="finn.transformation.fold_constants module" href="finn.transformation.fold_constants.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li>finn.transformation.general module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.general.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.general"> +<span id="finn-transformation-general-module"></span><h1>finn.transformation.general module<a class="headerlink" href="#module-finn.transformation.general" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.general.ConvertSubToAdd"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">ConvertSubToAdd</code><a class="headerlink" href="#finn.transformation.general.ConvertSubToAdd" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Convert sub nodes to add nodes of appropriate sign.</p> +<dl class="method"> +<dt id="finn.transformation.general.ConvertSubToAdd.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.ConvertSubToAdd.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="class"> +<dt id="finn.transformation.general.GiveRandomTensorNames"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveRandomTensorNames</code><a class="headerlink" href="#finn.transformation.general.GiveRandomTensorNames" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Give random tensor names to all tensors.</p> +<dl class="method"> +<dt id="finn.transformation.general.GiveRandomTensorNames.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveRandomTensorNames.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="class"> +<dt id="finn.transformation.general.GiveReadableTensorNames"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveReadableTensorNames</code><a class="headerlink" href="#finn.transformation.general.GiveReadableTensorNames" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Give more human-readable names to all internal tensors. It’s recommended +to apply give_unique_node_names prior to this transform.</p> +<dl class="method"> +<dt id="finn.transformation.general.GiveReadableTensorNames.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveReadableTensorNames.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="class"> +<dt id="finn.transformation.general.GiveUniqueNodeNames"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveUniqueNodeNames</code><a class="headerlink" href="#finn.transformation.general.GiveUniqueNodeNames" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Give unique names to each node in the graph using enumeration.</p> +<dl class="method"> +<dt id="finn.transformation.general.GiveUniqueNodeNames.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveUniqueNodeNames.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.infer_datatypes.html" class="btn btn-neutral float-right" title="finn.transformation.infer_datatypes module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.fold_constants.html" class="btn btn-neutral float-left" title="finn.transformation.fold_constants module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.html b/docs/finn/_build/html/source_code/finn.transformation.html index 939edb332..d7a4042b0 100644 --- a/docs/finn/_build/html/source_code/finn.transformation.html +++ b/docs/finn/_build/html/source_code/finn.transformation.html @@ -36,7 +36,7 @@ <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="finn.transformation.fpgadataflow package" href="finn.transformation.fpgadataflow.html" /> - <link rel="prev" title="finn.custom_op.fpgadataflow package" href="finn.custom_op.fpgadataflow.html" /> + <link rel="prev" title="finn.custom_op.xnorpopcount module" href="finn.custom_op.xnorpopcount.html" /> </head> <body class="wy-body-for-nav"> @@ -159,32 +159,36 @@ <div class="toctree-wrapper compound"> <ul> <li class="toctree-l1"><a class="reference internal" href="finn.transformation.fpgadataflow.html">finn.transformation.fpgadataflow package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.cleanup">finn.transformation.fpgadataflow.cleanup module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipgen">finn.transformation.fpgadataflow.codegen_ipgen module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_ipstitch">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.codegen_npysim">finn.transformation.fpgadataflow.codegen_npysim module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.compile">finn.transformation.fpgadataflow.compile module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.convert_to_hls_layers">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.create_dataflow_partition">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.hlssynth_ipgen">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.insert_tlastmarker">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_deployment">finn.transformation.fpgadataflow.make_deployment module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_driver">finn.transformation.fpgadataflow.make_pynq_driver module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.make_pynq_proj">finn.transformation.fpgadataflow.make_pynq_proj module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.set_exec_mode">finn.transformation.fpgadataflow.set_exec_mode module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.synth_pynq_proj">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow.templates">finn.transformation.fpgadataflow.templates module</a></li> +<li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#submodules">Submodules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.cleanup.html">finn.transformation.fpgadataflow.cleanup module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipgen.html">finn.transformation.fpgadataflow.codegen_ipgen module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_ipstitch.html">finn.transformation.fpgadataflow.codegen_ipstitch module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.codegen_npysim.html">finn.transformation.fpgadataflow.codegen_npysim module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.compile.html">finn.transformation.fpgadataflow.compile module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.convert_to_hls_layers.html">finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.create_dataflow_partition.html">finn.transformation.fpgadataflow.create_dataflow_partition module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.hlssynth_ipgen.html">finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.insert_tlastmarker.html">finn.transformation.fpgadataflow.insert_tlastmarker module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.make_deployment.html">finn.transformation.fpgadataflow.make_deployment module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_driver.html">finn.transformation.fpgadataflow.make_pynq_driver module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.make_pynq_proj.html">finn.transformation.fpgadataflow.make_pynq_proj module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.set_exec_mode.html">finn.transformation.fpgadataflow.set_exec_mode module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.synth_pynq_proj.html">finn.transformation.fpgadataflow.synth_pynq_proj module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.fpgadataflow.templates.html">finn.transformation.fpgadataflow.templates module</a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="finn.transformation.fpgadataflow.html#module-finn.transformation.fpgadataflow">Module contents</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.html">finn.transformation.streamline package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds module</a></li> -<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres module</a></li> +<li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#submodules">Submodules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.absorb.html">finn.transformation.streamline.absorb module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.collapse_repeated.html">finn.transformation.streamline.collapse_repeated module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.reorder.html">finn.transformation.streamline.reorder module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.round_thresholds.html">finn.transformation.streamline.round_thresholds module</a></li> +<li class="toctree-l3"><a class="reference internal" href="finn.transformation.streamline.sign_to_thres.html">finn.transformation.streamline.sign_to_thres module</a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="finn.transformation.streamline.html#module-finn.transformation.streamline">Module contents</a></li> </ul> </li> @@ -193,136 +197,16 @@ </div> <div class="section" id="submodules"> <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.batchnorm_to_affine.html">finn.transformation.batchnorm_to_affine module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.bipolar_to_xnor.html">finn.transformation.bipolar_to_xnor module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.fold_constants.html">finn.transformation.fold_constants module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.general.html">finn.transformation.general module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.infer_datatypes.html">finn.transformation.infer_datatypes module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.infer_shapes.html">finn.transformation.infer_shapes module</a></li> +</ul> </div> -<div class="section" id="module-finn.transformation.batchnorm_to_affine"> -<span id="finn-transformation-batchnorm-to-affine-module"></span><h2>finn.transformation.batchnorm_to_affine module<a class="headerlink" href="#module-finn.transformation.batchnorm_to_affine" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.batchnorm_to_affine.BatchNormToAffine"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.batchnorm_to_affine.</code><code class="sig-name descname">BatchNormToAffine</code><a class="headerlink" href="#finn.transformation.batchnorm_to_affine.BatchNormToAffine" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Replaces any test-time BatchNorm layers with Mul-Add layers.</p> -<dl class="method"> -<dt id="finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.bipolar_to_xnor"> -<span id="finn-transformation-bipolar-to-xnor-module"></span><h2>finn.transformation.bipolar_to_xnor module<a class="headerlink" href="#module-finn.transformation.bipolar_to_xnor" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.bipolar_to_xnor.</code><code class="sig-name descname">ConvertBipolarMatMulToXnorPopcount</code><a class="headerlink" href="#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Convert MatMul nodes with all-bipolar inputs to XnorPopcountMatMul -and associated result correction.</p> -<dl class="method"> -<dt id="finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.fold_constants"> -<span id="finn-transformation-fold-constants-module"></span><h2>finn.transformation.fold_constants module<a class="headerlink" href="#module-finn.transformation.fold_constants" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.fold_constants.FoldConstants"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.fold_constants.</code><code class="sig-name descname">FoldConstants</code><a class="headerlink" href="#finn.transformation.fold_constants.FoldConstants" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Replace the output of a node with const-only inputs with a precomputed -result.</p> -<dl class="method"> -<dt id="finn.transformation.fold_constants.FoldConstants.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.fold_constants.FoldConstants.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.general"> -<span id="finn-transformation-general-module"></span><h2>finn.transformation.general module<a class="headerlink" href="#module-finn.transformation.general" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.general.ConvertSubToAdd"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">ConvertSubToAdd</code><a class="headerlink" href="#finn.transformation.general.ConvertSubToAdd" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Convert sub nodes to add nodes of appropriate sign.</p> -<dl class="method"> -<dt id="finn.transformation.general.ConvertSubToAdd.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.ConvertSubToAdd.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="finn.transformation.general.GiveRandomTensorNames"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveRandomTensorNames</code><a class="headerlink" href="#finn.transformation.general.GiveRandomTensorNames" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Give random tensor names to all tensors.</p> -<dl class="method"> -<dt id="finn.transformation.general.GiveRandomTensorNames.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveRandomTensorNames.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="finn.transformation.general.GiveReadableTensorNames"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveReadableTensorNames</code><a class="headerlink" href="#finn.transformation.general.GiveReadableTensorNames" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Give more human-readable names to all internal tensors. It’s recommended -to apply give_unique_node_names prior to this transform.</p> -<dl class="method"> -<dt id="finn.transformation.general.GiveReadableTensorNames.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveReadableTensorNames.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="finn.transformation.general.GiveUniqueNodeNames"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.general.</code><code class="sig-name descname">GiveUniqueNodeNames</code><a class="headerlink" href="#finn.transformation.general.GiveUniqueNodeNames" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Give unique names to each node in the graph using enumeration.</p> -<dl class="method"> -<dt id="finn.transformation.general.GiveUniqueNodeNames.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.general.GiveUniqueNodeNames.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.infer_datatypes"> -<span id="finn-transformation-infer-datatypes-module"></span><h2>finn.transformation.infer_datatypes module<a class="headerlink" href="#module-finn.transformation.infer_datatypes" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.infer_datatypes.InferDataTypes"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.infer_datatypes.</code><code class="sig-name descname">InferDataTypes</code><a class="headerlink" href="#finn.transformation.infer_datatypes.InferDataTypes" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Infer FINN DataType info for all intermediate/output tensors based on -inputs and node type.</p> -<dl class="method"> -<dt id="finn.transformation.infer_datatypes.InferDataTypes.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.infer_datatypes.InferDataTypes.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.infer_shapes"> -<span id="finn-transformation-infer-shapes-module"></span><h2>finn.transformation.infer_shapes module<a class="headerlink" href="#module-finn.transformation.infer_shapes" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.infer_shapes.InferShapes"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.infer_shapes.</code><code class="sig-name descname">InferShapes</code><a class="headerlink" href="#finn.transformation.infer_shapes.InferShapes" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Ensure every tensor in the model has a specified shape (ValueInfo).</p> -<dl class="method"> -<dt id="finn.transformation.infer_shapes.InferShapes.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.infer_shapes.InferShapes.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - </div> <div class="section" id="module-finn.transformation"> <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.transformation" title="Permalink to this headline">¶</a></h2> @@ -371,7 +255,7 @@ manually re-apply the transform.</p></li> <a href="finn.transformation.fpgadataflow.html" class="btn btn-neutral float-right" title="finn.transformation.fpgadataflow package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - <a href="finn.custom_op.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.custom_op.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="finn.custom_op.xnorpopcount.html" class="btn btn-neutral float-left" title="finn.custom_op.xnorpopcount module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/docs/finn/_build/html/source_code/finn.transformation.infer_datatypes.html b/docs/finn/_build/html/source_code/finn.transformation.infer_datatypes.html new file mode 100644 index 000000000..5987f219e --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.infer_datatypes.html @@ -0,0 +1,223 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.infer_datatypes module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.infer_shapes module" href="finn.transformation.infer_shapes.html" /> + <link rel="prev" title="finn.transformation.general module" href="finn.transformation.general.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li>finn.transformation.infer_datatypes module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.infer_datatypes.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.infer_datatypes"> +<span id="finn-transformation-infer-datatypes-module"></span><h1>finn.transformation.infer_datatypes module<a class="headerlink" href="#module-finn.transformation.infer_datatypes" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.infer_datatypes.InferDataTypes"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.infer_datatypes.</code><code class="sig-name descname">InferDataTypes</code><a class="headerlink" href="#finn.transformation.infer_datatypes.InferDataTypes" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Infer FINN DataType info for all intermediate/output tensors based on +inputs and node type.</p> +<dl class="method"> +<dt id="finn.transformation.infer_datatypes.InferDataTypes.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.infer_datatypes.InferDataTypes.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.infer_shapes.html" class="btn btn-neutral float-right" title="finn.transformation.infer_shapes module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.general.html" class="btn btn-neutral float-left" title="finn.transformation.general module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.infer_shapes.html b/docs/finn/_build/html/source_code/finn.transformation.infer_shapes.html new file mode 100644 index 000000000..f2b1f440d --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.infer_shapes.html @@ -0,0 +1,222 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.infer_shapes module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.util package" href="finn.util.html" /> + <link rel="prev" title="finn.transformation.infer_datatypes module" href="finn.transformation.infer_datatypes.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li>finn.transformation.infer_shapes module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.infer_shapes.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.infer_shapes"> +<span id="finn-transformation-infer-shapes-module"></span><h1>finn.transformation.infer_shapes module<a class="headerlink" href="#module-finn.transformation.infer_shapes" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.infer_shapes.InferShapes"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.infer_shapes.</code><code class="sig-name descname">InferShapes</code><a class="headerlink" href="#finn.transformation.infer_shapes.InferShapes" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Ensure every tensor in the model has a specified shape (ValueInfo).</p> +<dl class="method"> +<dt id="finn.transformation.infer_shapes.InferShapes.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.infer_shapes.InferShapes.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.util.html" class="btn btn-neutral float-right" title="finn.util package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.infer_datatypes.html" class="btn btn-neutral float-left" title="finn.transformation.infer_datatypes module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.absorb.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.absorb.html new file mode 100644 index 000000000..72ae8104a --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.absorb.html @@ -0,0 +1,265 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.streamline.absorb module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.streamline.collapse_repeated module" href="finn.transformation.streamline.collapse_repeated.html" /> + <link rel="prev" title="finn.transformation.streamline package" href="finn.transformation.streamline.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.streamline.html">finn.transformation.streamline package</a> »</li> + + <li>finn.transformation.streamline.absorb module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.streamline.absorb.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.streamline.absorb"> +<span id="finn-transformation-streamline-absorb-module"></span><h1>finn.transformation.streamline.absorb module<a class="headerlink" href="#module-finn.transformation.streamline.absorb" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">Absorb1BitMulIntoMatMul</code><a class="headerlink" href="#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Absorb bipolar or binary multiplications into the preciding matrix +multiply.</p> +<dl class="method"> +<dt id="finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="class"> +<dt id="finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbAddIntoMultiThreshold</code><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Absorb preceding Add ops into MultiThreshold by updating the threshold +values. Only scalar/1D add vectors can be absorbed.</p> +<dl class="method"> +<dt id="finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="class"> +<dt id="finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbMulIntoMultiThreshold</code><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Absorb preceding Mul ops into MultiThreshold by updating the threshold +values. Only <em>positive</em> scalar/1D mul vectors can be absorbed.</p> +<dl class="method"> +<dt id="finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="class"> +<dt id="finn.transformation.streamline.absorb.FactorOutMulSignMagnitude"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">FactorOutMulSignMagnitude</code><a class="headerlink" href="#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Split multiply-by-constant nodes into two multiply-by-constant nodes, +where the first node is a bipolar vector (of signs) and the second is a +vector of magnitudes.</p> +<dl class="method"> +<dt id="finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.streamline.collapse_repeated.html" class="btn btn-neutral float-right" title="finn.transformation.streamline.collapse_repeated module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.streamline.html" class="btn btn-neutral float-left" title="finn.transformation.streamline package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.collapse_repeated.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.collapse_repeated.html new file mode 100644 index 000000000..bae88456a --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.collapse_repeated.html @@ -0,0 +1,238 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.streamline.collapse_repeated module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.streamline.reorder module" href="finn.transformation.streamline.reorder.html" /> + <link rel="prev" title="finn.transformation.streamline.absorb module" href="finn.transformation.streamline.absorb.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.streamline.html">finn.transformation.streamline package</a> »</li> + + <li>finn.transformation.streamline.collapse_repeated module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.streamline.collapse_repeated"> +<span id="finn-transformation-streamline-collapse-repeated-module"></span><h1>finn.transformation.streamline.collapse_repeated module<a class="headerlink" href="#module-finn.transformation.streamline.collapse_repeated" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedAdd</code><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p> +</dd></dl> + +<dl class="class"> +<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedMul</code><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p> +</dd></dl> + +<dl class="class"> +<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedOp</code><span class="sig-paren">(</span><em class="sig-param">op_name</em>, <em class="sig-param">make_collapsed_param_fxn</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Collapse repeated consecutive operations with constant parameters into +a single operation. make_collapsed_param_fxn must take two tensors and +return a tensor which gives the equivalent result using a single op.</p> +<dl class="method"> +<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.streamline.reorder.html" class="btn btn-neutral float-right" title="finn.transformation.streamline.reorder module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.streamline.absorb.html" class="btn btn-neutral float-left" title="finn.transformation.streamline.absorb module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.html index c3faa75ab..fb8d76b59 100644 --- a/docs/finn/_build/html/source_code/finn.transformation.streamline.html +++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.html @@ -35,8 +35,8 @@ <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> - <link rel="next" title="finn.util package" href="finn.util.html" /> - <link rel="prev" title="finn.transformation.fpgadataflow package" href="finn.transformation.fpgadataflow.html" /> + <link rel="next" title="finn.transformation.streamline.absorb module" href="finn.transformation.streamline.absorb.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow.templates module" href="finn.transformation.fpgadataflow.templates.html" /> </head> <body class="wy-body-for-nav"> @@ -158,165 +158,15 @@ <h1>finn.transformation.streamline package<a class="headerlink" href="#finn-transformation-streamline-package" title="Permalink to this headline">¶</a></h1> <div class="section" id="submodules"> <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.absorb.html">finn.transformation.streamline.absorb module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.collapse_repeated.html">finn.transformation.streamline.collapse_repeated module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.reorder.html">finn.transformation.streamline.reorder module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.round_thresholds.html">finn.transformation.streamline.round_thresholds module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.transformation.streamline.sign_to_thres.html">finn.transformation.streamline.sign_to_thres module</a></li> +</ul> </div> -<div class="section" id="module-finn.transformation.streamline.absorb"> -<span id="finn-transformation-streamline-absorb-module"></span><h2>finn.transformation.streamline.absorb module<a class="headerlink" href="#module-finn.transformation.streamline.absorb" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">Absorb1BitMulIntoMatMul</code><a class="headerlink" href="#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Absorb bipolar or binary multiplications into the preciding matrix -multiply.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbAddIntoMultiThreshold</code><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Absorb preceding Add ops into MultiThreshold by updating the threshold -values. Only scalar/1D add vectors can be absorbed.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbMulIntoMultiThreshold</code><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Absorb preceding Mul ops into MultiThreshold by updating the threshold -values. Only <em>positive</em> scalar/1D mul vectors can be absorbed.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="finn.transformation.streamline.absorb.FactorOutMulSignMagnitude"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.absorb.</code><code class="sig-name descname">FactorOutMulSignMagnitude</code><a class="headerlink" href="#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Split multiply-by-constant nodes into two multiply-by-constant nodes, -where the first node is a bipolar vector (of signs) and the second is a -vector of magnitudes.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.streamline.collapse_repeated"> -<span id="finn-transformation-streamline-collapse-repeated-module"></span><h2>finn.transformation.streamline.collapse_repeated module<a class="headerlink" href="#module-finn.transformation.streamline.collapse_repeated" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedAdd</code><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p> -</dd></dl> - -<dl class="class"> -<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedMul</code><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p> -</dd></dl> - -<dl class="class"> -<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedOp</code><span class="sig-paren">(</span><em class="sig-param">op_name</em>, <em class="sig-param">make_collapsed_param_fxn</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Collapse repeated consecutive operations with constant parameters into -a single operation. make_collapsed_param_fxn must take two tensors and -return a tensor which gives the equivalent result using a single op.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.streamline.reorder"> -<span id="finn-transformation-streamline-reorder-module"></span><h2>finn.transformation.streamline.reorder module<a class="headerlink" href="#module-finn.transformation.streamline.reorder" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.streamline.reorder.MoveAddPastMul"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveAddPastMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveAddPastMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Move add operations past multiply operations. The aim is to have them -next to each other such that they can be collapsed into a single add.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.reorder.MoveAddPastMul.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveAddPastMul.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="finn.transformation.streamline.reorder.MoveScalarAddPastMatMul"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarAddPastMatMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Move scalar add operations past matmul operations. We want to have adds -next to each other such that they can be collapsed into a single add.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="finn.transformation.streamline.reorder.MoveScalarMulPastMatMul"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarMulPastMatMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Move scalar mul operations past matmul operations. We want to have muls -next to each other such that they can be collapsed into a single mul.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.streamline.round_thresholds"> -<span id="finn-transformation-streamline-round-thresholds-module"></span><h2>finn.transformation.streamline.round_thresholds module<a class="headerlink" href="#module-finn.transformation.streamline.round_thresholds" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.streamline.round_thresholds.RoundAndClipThresholds"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.round_thresholds.</code><code class="sig-name descname">RoundAndClipThresholds</code><a class="headerlink" href="#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>For MultiThreshold nodes operating on integer inputs, round up -thresholds values to the nearest integer. Additionally, if the input -is unsigned, sets negative thresholds to zero.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-finn.transformation.streamline.sign_to_thres"> -<span id="finn-transformation-streamline-sign-to-thres-module"></span><h2>finn.transformation.streamline.sign_to_thres module<a class="headerlink" href="#module-finn.transformation.streamline.sign_to_thres" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.transformation.streamline.sign_to_thres.ConvertSignToThres"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.sign_to_thres.</code><code class="sig-name descname">ConvertSignToThres</code><a class="headerlink" href="#finn.transformation.streamline.sign_to_thres.ConvertSignToThres" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> -<p>Convert Sign node instances to MultiThreshold with threshold at 0.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - </div> <div class="section" id="module-finn.transformation.streamline"> <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.transformation.streamline" title="Permalink to this headline">¶</a></h2> @@ -343,10 +193,10 @@ is unsigned, sets negative thresholds to zero.</p> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - <a href="finn.util.html" class="btn btn-neutral float-right" title="finn.util package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="finn.transformation.streamline.absorb.html" class="btn btn-neutral float-right" title="finn.transformation.streamline.absorb module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - <a href="finn.transformation.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="finn.transformation.fpgadataflow.templates.html" class="btn btn-neutral float-left" title="finn.transformation.fpgadataflow.templates module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.reorder.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.reorder.html new file mode 100644 index 000000000..042fffbda --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.reorder.html @@ -0,0 +1,251 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.streamline.reorder module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.streamline.round_thresholds module" href="finn.transformation.streamline.round_thresholds.html" /> + <link rel="prev" title="finn.transformation.streamline.collapse_repeated module" href="finn.transformation.streamline.collapse_repeated.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.streamline.html">finn.transformation.streamline package</a> »</li> + + <li>finn.transformation.streamline.reorder module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.streamline.reorder.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.streamline.reorder"> +<span id="finn-transformation-streamline-reorder-module"></span><h1>finn.transformation.streamline.reorder module<a class="headerlink" href="#module-finn.transformation.streamline.reorder" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.streamline.reorder.MoveAddPastMul"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveAddPastMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveAddPastMul" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Move add operations past multiply operations. The aim is to have them +next to each other such that they can be collapsed into a single add.</p> +<dl class="method"> +<dt id="finn.transformation.streamline.reorder.MoveAddPastMul.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveAddPastMul.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="class"> +<dt id="finn.transformation.streamline.reorder.MoveScalarAddPastMatMul"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarAddPastMatMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Move scalar add operations past matmul operations. We want to have adds +next to each other such that they can be collapsed into a single add.</p> +<dl class="method"> +<dt id="finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="class"> +<dt id="finn.transformation.streamline.reorder.MoveScalarMulPastMatMul"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarMulPastMatMul</code><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Move scalar mul operations past matmul operations. We want to have muls +next to each other such that they can be collapsed into a single mul.</p> +<dl class="method"> +<dt id="finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.streamline.round_thresholds.html" class="btn btn-neutral float-right" title="finn.transformation.streamline.round_thresholds module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.streamline.collapse_repeated.html" class="btn btn-neutral float-left" title="finn.transformation.streamline.collapse_repeated module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.round_thresholds.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.round_thresholds.html new file mode 100644 index 000000000..78981939a --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.round_thresholds.html @@ -0,0 +1,226 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.streamline.round_thresholds module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.streamline.sign_to_thres module" href="finn.transformation.streamline.sign_to_thres.html" /> + <link rel="prev" title="finn.transformation.streamline.reorder module" href="finn.transformation.streamline.reorder.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.streamline.html">finn.transformation.streamline package</a> »</li> + + <li>finn.transformation.streamline.round_thresholds module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.streamline.round_thresholds"> +<span id="finn-transformation-streamline-round-thresholds-module"></span><h1>finn.transformation.streamline.round_thresholds module<a class="headerlink" href="#module-finn.transformation.streamline.round_thresholds" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.streamline.round_thresholds.RoundAndClipThresholds"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.round_thresholds.</code><code class="sig-name descname">RoundAndClipThresholds</code><a class="headerlink" href="#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>For MultiThreshold nodes operating on integer inputs, round up +thresholds values to the nearest integer. Additionally, if the input +is unsigned, sets negative thresholds to zero.</p> +<dl class="method"> +<dt id="finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.streamline.sign_to_thres.html" class="btn btn-neutral float-right" title="finn.transformation.streamline.sign_to_thres module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.streamline.reorder.html" class="btn btn-neutral float-left" title="finn.transformation.streamline.reorder module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.transformation.streamline.sign_to_thres.html b/docs/finn/_build/html/source_code/finn.transformation.streamline.sign_to_thres.html new file mode 100644 index 000000000..a4a663b62 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.sign_to_thres.html @@ -0,0 +1,224 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.transformation.streamline.sign_to_thres module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.batchnorm_to_affine module" href="finn.transformation.batchnorm_to_affine.html" /> + <link rel="prev" title="finn.transformation.streamline.round_thresholds module" href="finn.transformation.streamline.round_thresholds.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.transformation.html">finn.transformation package</a> »</li> + + <li><a href="finn.transformation.streamline.html">finn.transformation.streamline package</a> »</li> + + <li>finn.transformation.streamline.sign_to_thres module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.transformation.streamline.sign_to_thres"> +<span id="finn-transformation-streamline-sign-to-thres-module"></span><h1>finn.transformation.streamline.sign_to_thres module<a class="headerlink" href="#module-finn.transformation.streamline.sign_to_thres" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.transformation.streamline.sign_to_thres.ConvertSignToThres"> +<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.sign_to_thres.</code><code class="sig-name descname">ConvertSignToThres</code><a class="headerlink" href="#finn.transformation.streamline.sign_to_thres.ConvertSignToThres" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <a class="reference internal" href="finn.transformation.html#finn.transformation.Transformation" title="finn.transformation.Transformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></a></p> +<p>Convert Sign node instances to MultiThreshold with threshold at 0.</p> +<dl class="method"> +<dt id="finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply"> +<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.transformation.batchnorm_to_affine.html" class="btn btn-neutral float-right" title="finn.transformation.batchnorm_to_affine module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.transformation.streamline.round_thresholds.html" class="btn btn-neutral float-left" title="finn.transformation.streamline.round_thresholds module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.util.basic.html b/docs/finn/_build/html/source_code/finn.util.basic.html new file mode 100644 index 000000000..8b2eefee4 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.util.basic.html @@ -0,0 +1,305 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.util.basic module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.util.data_packing module" href="finn.util.data_packing.html" /> + <link rel="prev" title="finn.util package" href="finn.util.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.util.html">finn.util package</a> »</li> + + <li>finn.util.basic module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.util.basic.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.util.basic"> +<span id="finn-util-basic-module"></span><h1>finn.util.basic module<a class="headerlink" href="#module-finn.util.basic" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.util.basic.CppBuilder"> +<em class="property">class </em><code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">CppBuilder</code><a class="headerlink" href="#finn.util.basic.CppBuilder" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> +<dl class="method"> +<dt id="finn.util.basic.CppBuilder.append_includes"> +<code class="sig-name descname">append_includes</code><span class="sig-paren">(</span><em class="sig-param">library_path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.append_includes" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.util.basic.CppBuilder.append_sources"> +<code class="sig-name descname">append_sources</code><span class="sig-paren">(</span><em class="sig-param">cpp_file</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.append_sources" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.util.basic.CppBuilder.build"> +<code class="sig-name descname">build</code><span class="sig-paren">(</span><em class="sig-param">code_gen_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.build" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.util.basic.CppBuilder.set_executable_path"> +<code class="sig-name descname">set_executable_path</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.set_executable_path" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="function"> +<dt id="finn.util.basic.calculate_signed_dot_prod_range"> +<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">calculate_signed_dot_prod_range</code><span class="sig-paren">(</span><em class="sig-param">dt_a</em>, <em class="sig-param">dt_b</em>, <em class="sig-param">len</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.calculate_signed_dot_prod_range" title="Permalink to this definition">¶</a></dt> +<dd><p>Returns the (min,max) values a dot product between two signed vectors of +types dt_a and dt_b of len elements can take.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.basic.gen_finn_dt_tensor"> +<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">gen_finn_dt_tensor</code><span class="sig-paren">(</span><em class="sig-param">finn_dt</em>, <em class="sig-param">tensor_shape</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.gen_finn_dt_tensor" title="Permalink to this definition">¶</a></dt> +<dd><p>Generates random tensor in given shape and with given FINN DataType</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.basic.get_by_name"> +<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">get_by_name</code><span class="sig-paren">(</span><em class="sig-param">container</em>, <em class="sig-param">name</em>, <em class="sig-param">name_field='name'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.get_by_name" title="Permalink to this definition">¶</a></dt> +<dd><p>Return item from container by .name field if it exists, None otherwise</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.basic.get_finn_root"> +<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">get_finn_root</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.get_finn_root" title="Permalink to this definition">¶</a></dt> +<dd><p>Return the root directory that FINN is cloned into.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.basic.interleave_matrix_outer_dim_from_partitions"> +<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">interleave_matrix_outer_dim_from_partitions</code><span class="sig-paren">(</span><em class="sig-param">matrix</em>, <em class="sig-param">n_partitions</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.interleave_matrix_outer_dim_from_partitions" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="function"> +<dt id="finn.util.basic.make_build_dir"> +<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">make_build_dir</code><span class="sig-paren">(</span><em class="sig-param">prefix=''</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.make_build_dir" title="Permalink to this definition">¶</a></dt> +<dd><p>Creates a temporary folder with given prefix to be used as a build dir. +Use this function instead of tempfile.mkdtemp to ensure any generated files +will survive on the host after the FINN Docker container exits.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.basic.pad_tensor_to_multiple_of"> +<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">pad_tensor_to_multiple_of</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">pad_to_dims</em>, <em class="sig-param">val=0</em>, <em class="sig-param">distr_pad=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.pad_tensor_to_multiple_of" title="Permalink to this definition">¶</a></dt> +<dd><p>Pad each dimension of given NumPy ndarray using val, so that each +dimension is a multiple of the respective value in pad_to_dims. -1 means +do not pad that particular dimension. If distr_pad is False, all padding +will be inserted after the existing values; otherwise it will be split +evenly between before and after the existing values, with one extra value +inserted after if the padding amount is not divisible by two.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.basic.random_string"> +<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">random_string</code><span class="sig-paren">(</span><em class="sig-param">stringLength=6</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.random_string" title="Permalink to this definition">¶</a></dt> +<dd><p>Randomly generate a string of letters and digits.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.basic.remove_by_name"> +<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">remove_by_name</code><span class="sig-paren">(</span><em class="sig-param">container</em>, <em class="sig-param">name</em>, <em class="sig-param">name_field='name'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.remove_by_name" title="Permalink to this definition">¶</a></dt> +<dd><p>Remove item from container by .name field if it exists</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.basic.roundup_to_integer_multiple"> +<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">roundup_to_integer_multiple</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">factor</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.roundup_to_integer_multiple" title="Permalink to this definition">¶</a></dt> +<dd><p>Round up integer x to the nearest integer multiple of integer factor. +Returns x if factor is set to -1. Both x and factor must otherwise be +positive.</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.util.data_packing.html" class="btn btn-neutral float-right" title="finn.util.data_packing module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.util.html" class="btn btn-neutral float-left" title="finn.util package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.util.data_packing.html b/docs/finn/_build/html/source_code/finn.util.data_packing.html new file mode 100644 index 000000000..de8e3cc3c --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.util.data_packing.html @@ -0,0 +1,313 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.util.data_packing module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.util.fpgadataflow module" href="finn.util.fpgadataflow.html" /> + <link rel="prev" title="finn.util.basic module" href="finn.util.basic.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.util.html">finn.util package</a> »</li> + + <li>finn.util.data_packing module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.util.data_packing.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.util.data_packing"> +<span id="finn-util-data-packing-module"></span><h1>finn.util.data_packing module<a class="headerlink" href="#module-finn.util.data_packing" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.util.data_packing.array2hexstring"> +<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">array2hexstring</code><span class="sig-paren">(</span><em class="sig-param">array</em>, <em class="sig-param">dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">prefix='0x'</em>, <em class="sig-param">reverse=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.array2hexstring" title="Permalink to this definition">¶</a></dt> +<dd><p>Pack given one-dimensional NumPy array with FINN DataType dtype into a hex +string. +Any BIPOLAR values will be converted to a single bit with a 0 representing +-1. +pad_to_nbits is used to prepend leading zeros to ensure packed strings of +fixed width. The minimum value for pad_to_nbits is 4, since a single hex +digit is four bits. reverse can be used to reverse the array prior to +packing.</p> +<p>Examples: +array2hexstring([1, 1, 1, 0], DataType.BINARY, 4) = “0xe†+array2hexstring([1, 1, 1, 0], DataType.BINARY, 8) = “0x0e†+array2hexstring([1, 1, 0, 1], DataType.BINARY, 4, reverse=True) = “0xb†+array2hexstring([1, 1, 1, 0], DataType.BINARY, 8, reverse=True) = “0x07â€</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.data_packing.finnpy_to_packed_bytearray"> +<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">finnpy_to_packed_bytearray</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.finnpy_to_packed_bytearray" title="Permalink to this definition">¶</a></dt> +<dd><p>Given a numpy ndarray with FINN DataType dtype, pack the innermost +dimension and return the packed representation as an ndarray of uint8. +The packed innermost dimension will be padded to the nearest multiple +of 8 bits. The returned ndarray has the same number of dimensions as the +input.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.data_packing.hexstring2npbytearray"> +<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">hexstring2npbytearray</code><span class="sig-paren">(</span><em class="sig-param">hexstring</em>, <em class="sig-param">remove_prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.hexstring2npbytearray" title="Permalink to this definition">¶</a></dt> +<dd><p>Convert a hex string into a NumPy array of dtype uint8. Examples:</p> +<p>hexstring2npbytearray(“0f01â€) = array([15, 1], dtype=uint8)</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.data_packing.npbytearray2hexstring"> +<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">npbytearray2hexstring</code><span class="sig-paren">(</span><em class="sig-param">npbytearray</em>, <em class="sig-param">prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.npbytearray2hexstring" title="Permalink to this definition">¶</a></dt> +<dd><p>Convert a NumPy array of uint8 dtype into a hex string. Examples:</p> +<p>npbytearray2hexstring(array([15, 1], dtype=uint8)) = “0x0f01â€</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.data_packing.npy_to_rtlsim_input"> +<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">npy_to_rtlsim_input</code><span class="sig-paren">(</span><em class="sig-param">input_file</em>, <em class="sig-param">input_dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.npy_to_rtlsim_input" title="Permalink to this definition">¶</a></dt> +<dd><p>Convert the multidimensional NumPy array of integers (stored as floats) +from input_file into a flattened sequence of Python arbitrary-precision +integers, packing the innermost dimension. See +finn.util.basic.pack_innermost_dim_as_hex_string() for more info on how the +packing works. If reverse_inner is set, the innermost dimension will be +reversed prior to packing.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.data_packing.numpy_to_hls_code"> +<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">numpy_to_hls_code</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">hls_var_name</em>, <em class="sig-param">pack_innermost_dim=True</em>, <em class="sig-param">no_decl=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.numpy_to_hls_code" title="Permalink to this definition">¶</a></dt> +<dd><p>Return C++ code representation of a numpy ndarray with FINN DataType +dtype, using hls_var_name as the resulting C++ variable name. If +pack_innermost_dim is specified, the innermost dimension of the ndarray +will be packed into a hex string using array2hexstring. If no_decl is +set to True, no variable name and type will be generated as part of the +emitted string.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.data_packing.pack_innermost_dim_as_hex_string"> +<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">pack_innermost_dim_as_hex_string</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.pack_innermost_dim_as_hex_string" title="Permalink to this definition">¶</a></dt> +<dd><p>Pack the innermost dimension of the given numpy ndarray into hex +strings using array2hexstring. Examples:</p> +<p>A = [[1, 1, 1, 0], [0, 1, 1, 0]] +eA = [“0eâ€, “06â€] +pack_innermost_dim_as_hex_string(A, DataType.BINARY, 8) == eA +B = [[[3, 3], [3, 3]], [[1, 3], [3, 1]]] +eB = [[ “0fâ€, “0fâ€], [“07â€, “0dâ€]] +pack_innermost_dim_as_hex_string(B, DataType.UINT2, 8) == eB</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.data_packing.packed_bytearray_to_finnpy"> +<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">packed_bytearray_to_finnpy</code><span class="sig-paren">(</span><em class="sig-param">packed_bytearray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">output_shape=None</em>, <em class="sig-param">reverse_inner=False</em>, <em class="sig-param">reverse_endian=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.packed_bytearray_to_finnpy" title="Permalink to this definition">¶</a></dt> +<dd><p>Given a packed numpy uint8 ndarray, unpack it into a FINN array of +given DataType. output_shape can be specified to remove padding from the +packed dimension, or set to None to be inferred from the input.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.data_packing.rtlsim_output_to_npy"> +<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">rtlsim_output_to_npy</code><span class="sig-paren">(</span><em class="sig-param">output</em>, <em class="sig-param">path</em>, <em class="sig-param">dtype</em>, <em class="sig-param">shape</em>, <em class="sig-param">packedBits</em>, <em class="sig-param">targetBits</em>, <em class="sig-param">reverse_inner=True</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.rtlsim_output_to_npy" title="Permalink to this definition">¶</a></dt> +<dd><p>Convert a flattened sequence of Python arbitrary-precision integers +output into a NumPy array, saved as npy file at path. Each arbitrary-precision +integer is assumed to be a packed array of targetBits-bit elements, which +will be unpacked as the innermost dimension of the NumPy array.</p> +</dd></dl> + +<dl class="function"> +<dt id="finn.util.data_packing.unpack_innermost_dim_from_hex_string"> +<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">unpack_innermost_dim_from_hex_string</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">out_shape</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.unpack_innermost_dim_from_hex_string" title="Permalink to this definition">¶</a></dt> +<dd><p>Convert a NumPy array of hex strings into a FINN NumPy array by unpacking +the hex strings into the specified data type. out_shape can be specified +such that any padding in the packing dimension is removed. If reverse_inner +is set, the innermost unpacked dimension will be reversed.</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.util.fpgadataflow.html" class="btn btn-neutral float-right" title="finn.util.fpgadataflow module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.util.basic.html" class="btn btn-neutral float-left" title="finn.util.basic module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.util.fpgadataflow.html b/docs/finn/_build/html/source_code/finn.util.fpgadataflow.html new file mode 100644 index 000000000..e78854a1b --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.util.fpgadataflow.html @@ -0,0 +1,237 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.util.fpgadataflow module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.util.onnx module" href="finn.util.onnx.html" /> + <link rel="prev" title="finn.util.data_packing module" href="finn.util.data_packing.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.util.html">finn.util package</a> »</li> + + <li>finn.util.fpgadataflow module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.util.fpgadataflow.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.util.fpgadataflow"> +<span id="finn-util-fpgadataflow-module"></span><h1>finn.util.fpgadataflow module<a class="headerlink" href="#module-finn.util.fpgadataflow" title="Permalink to this headline">¶</a></h1> +<dl class="class"> +<dt id="finn.util.fpgadataflow.IPGenBuilder"> +<em class="property">class </em><code class="sig-prename descclassname">finn.util.fpgadataflow.</code><code class="sig-name descname">IPGenBuilder</code><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder" title="Permalink to this definition">¶</a></dt> +<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> +<dl class="method"> +<dt id="finn.util.fpgadataflow.IPGenBuilder.append_tcl"> +<code class="sig-name descname">append_tcl</code><span class="sig-paren">(</span><em class="sig-param">tcl_script</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.append_tcl" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.util.fpgadataflow.IPGenBuilder.build"> +<code class="sig-name descname">build</code><span class="sig-paren">(</span><em class="sig-param">code_gen_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.build" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="method"> +<dt id="finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path"> +<code class="sig-name descname">set_ipgen_path</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="function"> +<dt id="finn.util.fpgadataflow.pyverilate_stitched_ip"> +<code class="sig-prename descclassname">finn.util.fpgadataflow.</code><code class="sig-name descname">pyverilate_stitched_ip</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.pyverilate_stitched_ip" title="Permalink to this definition">¶</a></dt> +<dd><p>Given a model with stitched IP, return a PyVerilator sim object.</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.util.onnx.html" class="btn btn-neutral float-right" title="finn.util.onnx module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.util.data_packing.html" class="btn btn-neutral float-left" title="finn.util.data_packing module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.util.html b/docs/finn/_build/html/source_code/finn.util.html index eff5daeba..900b9619f 100644 --- a/docs/finn/_build/html/source_code/finn.util.html +++ b/docs/finn/_build/html/source_code/finn.util.html @@ -35,7 +35,8 @@ <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> - <link rel="prev" title="finn.transformation.streamline package" href="finn.transformation.streamline.html" /> + <link rel="next" title="finn.util.basic module" href="finn.util.basic.html" /> + <link rel="prev" title="finn.transformation.infer_shapes module" href="finn.transformation.infer_shapes.html" /> </head> <body class="wy-body-for-nav"> @@ -155,272 +156,15 @@ <h1>finn.util package<a class="headerlink" href="#finn-util-package" title="Permalink to this headline">¶</a></h1> <div class="section" id="submodules"> <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="finn.util.basic.html">finn.util.basic module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.util.data_packing.html">finn.util.data_packing module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.util.fpgadataflow.html">finn.util.fpgadataflow module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.util.onnx.html">finn.util.onnx module</a></li> +<li class="toctree-l1"><a class="reference internal" href="finn.util.test.html">finn.util.test module</a></li> +</ul> </div> -<div class="section" id="module-finn.util.basic"> -<span id="finn-util-basic-module"></span><h2>finn.util.basic module<a class="headerlink" href="#module-finn.util.basic" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.util.basic.CppBuilder"> -<em class="property">class </em><code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">CppBuilder</code><a class="headerlink" href="#finn.util.basic.CppBuilder" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> -<dl class="method"> -<dt id="finn.util.basic.CppBuilder.append_includes"> -<code class="sig-name descname">append_includes</code><span class="sig-paren">(</span><em class="sig-param">library_path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.append_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.util.basic.CppBuilder.append_sources"> -<code class="sig-name descname">append_sources</code><span class="sig-paren">(</span><em class="sig-param">cpp_file</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.append_sources" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.util.basic.CppBuilder.build"> -<code class="sig-name descname">build</code><span class="sig-paren">(</span><em class="sig-param">code_gen_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.build" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.util.basic.CppBuilder.set_executable_path"> -<code class="sig-name descname">set_executable_path</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.CppBuilder.set_executable_path" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="function"> -<dt id="finn.util.basic.calculate_signed_dot_prod_range"> -<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">calculate_signed_dot_prod_range</code><span class="sig-paren">(</span><em class="sig-param">dt_a</em>, <em class="sig-param">dt_b</em>, <em class="sig-param">len</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.calculate_signed_dot_prod_range" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the (min,max) values a dot product between two signed vectors of -types dt_a and dt_b of len elements can take.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.basic.gen_finn_dt_tensor"> -<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">gen_finn_dt_tensor</code><span class="sig-paren">(</span><em class="sig-param">finn_dt</em>, <em class="sig-param">tensor_shape</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.gen_finn_dt_tensor" title="Permalink to this definition">¶</a></dt> -<dd><p>Generates random tensor in given shape and with given FINN DataType</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.basic.get_by_name"> -<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">get_by_name</code><span class="sig-paren">(</span><em class="sig-param">container</em>, <em class="sig-param">name</em>, <em class="sig-param">name_field='name'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.get_by_name" title="Permalink to this definition">¶</a></dt> -<dd><p>Return item from container by .name field if it exists, None otherwise</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.basic.get_finn_root"> -<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">get_finn_root</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.get_finn_root" title="Permalink to this definition">¶</a></dt> -<dd><p>Return the root directory that FINN is cloned into.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.basic.interleave_matrix_outer_dim_from_partitions"> -<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">interleave_matrix_outer_dim_from_partitions</code><span class="sig-paren">(</span><em class="sig-param">matrix</em>, <em class="sig-param">n_partitions</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.interleave_matrix_outer_dim_from_partitions" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="function"> -<dt id="finn.util.basic.make_build_dir"> -<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">make_build_dir</code><span class="sig-paren">(</span><em class="sig-param">prefix=''</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.make_build_dir" title="Permalink to this definition">¶</a></dt> -<dd><p>Creates a temporary folder with given prefix to be used as a build dir. -Use this function instead of tempfile.mkdtemp to ensure any generated files -will survive on the host after the FINN Docker container exits.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.basic.pad_tensor_to_multiple_of"> -<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">pad_tensor_to_multiple_of</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">pad_to_dims</em>, <em class="sig-param">val=0</em>, <em class="sig-param">distr_pad=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.pad_tensor_to_multiple_of" title="Permalink to this definition">¶</a></dt> -<dd><p>Pad each dimension of given NumPy ndarray using val, so that each -dimension is a multiple of the respective value in pad_to_dims. -1 means -do not pad that particular dimension. If distr_pad is False, all padding -will be inserted after the existing values; otherwise it will be split -evenly between before and after the existing values, with one extra value -inserted after if the padding amount is not divisible by two.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.basic.random_string"> -<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">random_string</code><span class="sig-paren">(</span><em class="sig-param">stringLength=6</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.random_string" title="Permalink to this definition">¶</a></dt> -<dd><p>Randomly generate a string of letters and digits.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.basic.remove_by_name"> -<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">remove_by_name</code><span class="sig-paren">(</span><em class="sig-param">container</em>, <em class="sig-param">name</em>, <em class="sig-param">name_field='name'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.remove_by_name" title="Permalink to this definition">¶</a></dt> -<dd><p>Remove item from container by .name field if it exists</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.basic.roundup_to_integer_multiple"> -<code class="sig-prename descclassname">finn.util.basic.</code><code class="sig-name descname">roundup_to_integer_multiple</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">factor</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.basic.roundup_to_integer_multiple" title="Permalink to this definition">¶</a></dt> -<dd><p>Round up integer x to the nearest integer multiple of integer factor. -Returns x if factor is set to -1. Both x and factor must otherwise be -positive.</p> -</dd></dl> - -</div> -<div class="section" id="module-finn.util.data_packing"> -<span id="finn-util-data-packing-module"></span><h2>finn.util.data_packing module<a class="headerlink" href="#module-finn.util.data_packing" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.util.data_packing.array2hexstring"> -<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">array2hexstring</code><span class="sig-paren">(</span><em class="sig-param">array</em>, <em class="sig-param">dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">prefix='0x'</em>, <em class="sig-param">reverse=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.array2hexstring" title="Permalink to this definition">¶</a></dt> -<dd><p>Pack given one-dimensional NumPy array with FINN DataType dtype into a hex -string. -Any BIPOLAR values will be converted to a single bit with a 0 representing --1. -pad_to_nbits is used to prepend leading zeros to ensure packed strings of -fixed width. The minimum value for pad_to_nbits is 4, since a single hex -digit is four bits. reverse can be used to reverse the array prior to -packing.</p> -<p>Examples: -array2hexstring([1, 1, 1, 0], DataType.BINARY, 4) = “0xe†-array2hexstring([1, 1, 1, 0], DataType.BINARY, 8) = “0x0e†-array2hexstring([1, 1, 0, 1], DataType.BINARY, 4, reverse=True) = “0xb†-array2hexstring([1, 1, 1, 0], DataType.BINARY, 8, reverse=True) = “0x07â€</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.data_packing.finnpy_to_packed_bytearray"> -<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">finnpy_to_packed_bytearray</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.finnpy_to_packed_bytearray" title="Permalink to this definition">¶</a></dt> -<dd><p>Given a numpy ndarray with FINN DataType dtype, pack the innermost -dimension and return the packed representation as an ndarray of uint8. -The packed innermost dimension will be padded to the nearest multiple -of 8 bits. The returned ndarray has the same number of dimensions as the -input.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.data_packing.hexstring2npbytearray"> -<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">hexstring2npbytearray</code><span class="sig-paren">(</span><em class="sig-param">hexstring</em>, <em class="sig-param">remove_prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.hexstring2npbytearray" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert a hex string into a NumPy array of dtype uint8. Examples:</p> -<p>hexstring2npbytearray(“0f01â€) = array([15, 1], dtype=uint8)</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.data_packing.npbytearray2hexstring"> -<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">npbytearray2hexstring</code><span class="sig-paren">(</span><em class="sig-param">npbytearray</em>, <em class="sig-param">prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.npbytearray2hexstring" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert a NumPy array of uint8 dtype into a hex string. Examples:</p> -<p>npbytearray2hexstring(array([15, 1], dtype=uint8)) = “0x0f01â€</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.data_packing.npy_to_rtlsim_input"> -<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">npy_to_rtlsim_input</code><span class="sig-paren">(</span><em class="sig-param">input_file</em>, <em class="sig-param">input_dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.npy_to_rtlsim_input" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert the multidimensional NumPy array of integers (stored as floats) -from input_file into a flattened sequence of Python arbitrary-precision -integers, packing the innermost dimension. See -finn.util.basic.pack_innermost_dim_as_hex_string() for more info on how the -packing works. If reverse_inner is set, the innermost dimension will be -reversed prior to packing.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.data_packing.numpy_to_hls_code"> -<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">numpy_to_hls_code</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">hls_var_name</em>, <em class="sig-param">pack_innermost_dim=True</em>, <em class="sig-param">no_decl=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.numpy_to_hls_code" title="Permalink to this definition">¶</a></dt> -<dd><p>Return C++ code representation of a numpy ndarray with FINN DataType -dtype, using hls_var_name as the resulting C++ variable name. If -pack_innermost_dim is specified, the innermost dimension of the ndarray -will be packed into a hex string using array2hexstring. If no_decl is -set to True, no variable name and type will be generated as part of the -emitted string.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.data_packing.pack_innermost_dim_as_hex_string"> -<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">pack_innermost_dim_as_hex_string</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.pack_innermost_dim_as_hex_string" title="Permalink to this definition">¶</a></dt> -<dd><p>Pack the innermost dimension of the given numpy ndarray into hex -strings using array2hexstring. Examples:</p> -<p>A = [[1, 1, 1, 0], [0, 1, 1, 0]] -eA = [“0eâ€, “06â€] -pack_innermost_dim_as_hex_string(A, DataType.BINARY, 8) == eA -B = [[[3, 3], [3, 3]], [[1, 3], [3, 1]]] -eB = [[ “0fâ€, “0fâ€], [“07â€, “0dâ€]] -pack_innermost_dim_as_hex_string(B, DataType.UINT2, 8) == eB</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.data_packing.packed_bytearray_to_finnpy"> -<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">packed_bytearray_to_finnpy</code><span class="sig-paren">(</span><em class="sig-param">packed_bytearray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">output_shape=None</em>, <em class="sig-param">reverse_inner=False</em>, <em class="sig-param">reverse_endian=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.packed_bytearray_to_finnpy" title="Permalink to this definition">¶</a></dt> -<dd><p>Given a packed numpy uint8 ndarray, unpack it into a FINN array of -given DataType. output_shape can be specified to remove padding from the -packed dimension, or set to None to be inferred from the input.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.data_packing.rtlsim_output_to_npy"> -<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">rtlsim_output_to_npy</code><span class="sig-paren">(</span><em class="sig-param">output</em>, <em class="sig-param">path</em>, <em class="sig-param">dtype</em>, <em class="sig-param">shape</em>, <em class="sig-param">packedBits</em>, <em class="sig-param">targetBits</em>, <em class="sig-param">reverse_inner=True</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.rtlsim_output_to_npy" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert a flattened sequence of Python arbitrary-precision integers -output into a NumPy array, saved as npy file at path. Each arbitrary-precision -integer is assumed to be a packed array of targetBits-bit elements, which -will be unpacked as the innermost dimension of the NumPy array.</p> -</dd></dl> - -<dl class="function"> -<dt id="finn.util.data_packing.unpack_innermost_dim_from_hex_string"> -<code class="sig-prename descclassname">finn.util.data_packing.</code><code class="sig-name descname">unpack_innermost_dim_from_hex_string</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">out_shape</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.data_packing.unpack_innermost_dim_from_hex_string" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert a NumPy array of hex strings into a FINN NumPy array by unpacking -the hex strings into the specified data type. out_shape can be specified -such that any padding in the packing dimension is removed. If reverse_inner -is set, the innermost unpacked dimension will be reversed.</p> -</dd></dl> - -</div> -<div class="section" id="module-finn.util.fpgadataflow"> -<span id="finn-util-fpgadataflow-module"></span><h2>finn.util.fpgadataflow module<a class="headerlink" href="#module-finn.util.fpgadataflow" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="finn.util.fpgadataflow.IPGenBuilder"> -<em class="property">class </em><code class="sig-prename descclassname">finn.util.fpgadataflow.</code><code class="sig-name descname">IPGenBuilder</code><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> -<dl class="method"> -<dt id="finn.util.fpgadataflow.IPGenBuilder.append_tcl"> -<code class="sig-name descname">append_tcl</code><span class="sig-paren">(</span><em class="sig-param">tcl_script</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.append_tcl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.util.fpgadataflow.IPGenBuilder.build"> -<code class="sig-name descname">build</code><span class="sig-paren">(</span><em class="sig-param">code_gen_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.build" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path"> -<code class="sig-name descname">set_ipgen_path</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="function"> -<dt id="finn.util.fpgadataflow.pyverilate_stitched_ip"> -<code class="sig-prename descclassname">finn.util.fpgadataflow.</code><code class="sig-name descname">pyverilate_stitched_ip</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.fpgadataflow.pyverilate_stitched_ip" title="Permalink to this definition">¶</a></dt> -<dd><p>Given a model with stitched IP, return a PyVerilator sim object.</p> -</dd></dl> - -</div> -<div class="section" id="module-finn.util.onnx"> -<span id="finn-util-onnx-module"></span><h2>finn.util.onnx module<a class="headerlink" href="#module-finn.util.onnx" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.util.onnx.valueinfo_to_tensor"> -<code class="sig-prename descclassname">finn.util.onnx.</code><code class="sig-name descname">valueinfo_to_tensor</code><span class="sig-paren">(</span><em class="sig-param">vi</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.onnx.valueinfo_to_tensor" title="Permalink to this definition">¶</a></dt> -<dd><p>Creates an all-zeroes numpy tensor from a ValueInfoProto.</p> -</dd></dl> - -</div> -<div class="section" id="module-finn.util.test"> -<span id="finn-util-test-module"></span><h2>finn.util.test module<a class="headerlink" href="#module-finn.util.test" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="finn.util.test.get_test_model_def_fxn"> -<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_def_fxn</code><span class="sig-paren">(</span><em class="sig-param">netname</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_def_fxn" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="function"> -<dt id="finn.util.test.get_test_model_trained"> -<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_trained</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_trained" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="function"> -<dt id="finn.util.test.get_test_model_untrained"> -<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_untrained</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_untrained" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="function"> -<dt id="finn.util.test.get_trained_checkpoint"> -<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_trained_checkpoint</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_trained_checkpoint" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - </div> <div class="section" id="module-finn.util"> <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.util" title="Permalink to this headline">¶</a></h2> @@ -435,8 +179,10 @@ is set, the innermost unpacked dimension will be reversed.</p> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + <a href="finn.util.basic.html" class="btn btn-neutral float-right" title="finn.util.basic module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + - <a href="finn.transformation.streamline.html" class="btn btn-neutral float-left" title="finn.transformation.streamline package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="finn.transformation.infer_shapes.html" class="btn btn-neutral float-left" title="finn.transformation.infer_shapes module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/docs/finn/_build/html/source_code/finn.util.onnx.html b/docs/finn/_build/html/source_code/finn.util.onnx.html new file mode 100644 index 000000000..ef69d1d79 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.util.onnx.html @@ -0,0 +1,216 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.util.onnx module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.util.test module" href="finn.util.test.html" /> + <link rel="prev" title="finn.util.fpgadataflow module" href="finn.util.fpgadataflow.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.util.html">finn.util package</a> »</li> + + <li>finn.util.onnx module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.util.onnx.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.util.onnx"> +<span id="finn-util-onnx-module"></span><h1>finn.util.onnx module<a class="headerlink" href="#module-finn.util.onnx" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.util.onnx.valueinfo_to_tensor"> +<code class="sig-prename descclassname">finn.util.onnx.</code><code class="sig-name descname">valueinfo_to_tensor</code><span class="sig-paren">(</span><em class="sig-param">vi</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.onnx.valueinfo_to_tensor" title="Permalink to this definition">¶</a></dt> +<dd><p>Creates an all-zeroes numpy tensor from a ValueInfoProto.</p> +</dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.util.test.html" class="btn btn-neutral float-right" title="finn.util.test module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.util.fpgadataflow.html" class="btn btn-neutral float-left" title="finn.util.fpgadataflow module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/finn.util.test.html b/docs/finn/_build/html/source_code/finn.util.test.html new file mode 100644 index 000000000..6c9a032f1 --- /dev/null +++ b/docs/finn/_build/html/source_code/finn.util.test.html @@ -0,0 +1,227 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>finn.util.test module — FINN documentation</title> + + + + + + + + + <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/language_data.js"></script> + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="prev" title="finn.util.onnx module" href="finn.util.onnx.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> FINN + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="../source_code.html">Source Code</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">FINN</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../source_code.html">Source Code</a> »</li> + + <li><a href="finn.html">finn package</a> »</li> + + <li><a href="finn.util.html">finn.util package</a> »</li> + + <li>finn.util.test module</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/source_code/finn.util.test.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="module-finn.util.test"> +<span id="finn-util-test-module"></span><h1>finn.util.test module<a class="headerlink" href="#module-finn.util.test" title="Permalink to this headline">¶</a></h1> +<dl class="function"> +<dt id="finn.util.test.get_test_model_def_fxn"> +<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_def_fxn</code><span class="sig-paren">(</span><em class="sig-param">netname</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_def_fxn" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="function"> +<dt id="finn.util.test.get_test_model_trained"> +<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_trained</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_trained" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="function"> +<dt id="finn.util.test.get_test_model_untrained"> +<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_test_model_untrained</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_test_model_untrained" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +<dl class="function"> +<dt id="finn.util.test.get_trained_checkpoint"> +<code class="sig-prename descclassname">finn.util.test.</code><code class="sig-name descname">get_trained_checkpoint</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.util.test.get_trained_checkpoint" title="Permalink to this definition">¶</a></dt> +<dd></dd></dl> + +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + + <a href="finn.util.onnx.html" class="btn btn-neutral float-left" title="finn.util.onnx module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2020, Y. Umuroglu, J. Petri-Koenig + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/modules.html b/docs/finn/_build/html/source_code/modules.html index bd87c9b3e..9ab863aa3 100644 --- a/docs/finn/_build/html/source_code/modules.html +++ b/docs/finn/_build/html/source_code/modules.html @@ -155,51 +155,28 @@ <li class="toctree-l3"><a class="reference internal" href="finn.analysis.html">finn.analysis package</a><ul> <li class="toctree-l4"><a class="reference internal" href="finn.analysis.html#subpackages">Subpackages</a></li> <li class="toctree-l4"><a class="reference internal" href="finn.analysis.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.analysis.html#module-finn.analysis.topology">finn.analysis.topology module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.analysis.html#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes module</a></li> <li class="toctree-l4"><a class="reference internal" href="finn.analysis.html#module-finn.analysis">Module contents</a></li> </ul> </li> <li class="toctree-l3"><a class="reference internal" href="finn.core.html">finn.core package</a><ul> <li class="toctree-l4"><a class="reference internal" href="finn.core.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.datatype">finn.core.datatype module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.execute_custom_node">finn.core.execute_custom_node module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.modelwrapper">finn.core.modelwrapper module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.onnx_exec">finn.core.onnx_exec module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.remote_exec">finn.core.remote_exec module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core.rtlsim_exec">finn.core.rtlsim_exec module</a></li> <li class="toctree-l4"><a class="reference internal" href="finn.core.html#module-finn.core">Module contents</a></li> </ul> </li> <li class="toctree-l3"><a class="reference internal" href="finn.custom_op.html">finn.custom_op package</a><ul> <li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#subpackages">Subpackages</a></li> <li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.registry">finn.custom_op.registry module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount module</a></li> <li class="toctree-l4"><a class="reference internal" href="finn.custom_op.html#module-finn.custom_op">Module contents</a></li> </ul> </li> <li class="toctree-l3"><a class="reference internal" href="finn.transformation.html">finn.transformation package</a><ul> <li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#subpackages">Subpackages</a></li> <li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.batchnorm_to_affine">finn.transformation.batchnorm_to_affine module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.bipolar_to_xnor">finn.transformation.bipolar_to_xnor module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.fold_constants">finn.transformation.fold_constants module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.general">finn.transformation.general module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.infer_datatypes">finn.transformation.infer_datatypes module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation.infer_shapes">finn.transformation.infer_shapes module</a></li> <li class="toctree-l4"><a class="reference internal" href="finn.transformation.html#module-finn.transformation">Module contents</a></li> </ul> </li> <li class="toctree-l3"><a class="reference internal" href="finn.util.html">finn.util package</a><ul> <li class="toctree-l4"><a class="reference internal" href="finn.util.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util.basic">finn.util.basic module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util.data_packing">finn.util.data_packing module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util.fpgadataflow">finn.util.fpgadataflow module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util.onnx">finn.util.onnx module</a></li> -<li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util.test">finn.util.test module</a></li> <li class="toctree-l4"><a class="reference internal" href="finn.util.html#module-finn.util">Module contents</a></li> </ul> </li> diff --git a/docs/finn/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst b/docs/finn/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst new file mode 100644 index 000000000..616064c16 --- /dev/null +++ b/docs/finn/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst @@ -0,0 +1,7 @@ +finn.analysis.fpgadataflow.hls\_synth\_res\_estimation module +============================================================= + +.. automodule:: finn.analysis.fpgadataflow.hls_synth_res_estimation + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.analysis.fpgadataflow.res_estimation.rst b/docs/finn/source_code/finn.analysis.fpgadataflow.res_estimation.rst new file mode 100644 index 000000000..eb5b773b1 --- /dev/null +++ b/docs/finn/source_code/finn.analysis.fpgadataflow.res_estimation.rst @@ -0,0 +1,7 @@ +finn.analysis.fpgadataflow.res\_estimation module +================================================= + +.. automodule:: finn.analysis.fpgadataflow.res_estimation + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.analysis.fpgadataflow.rst b/docs/finn/source_code/finn.analysis.fpgadataflow.rst index cd8075d75..4f5cd7cbb 100644 --- a/docs/finn/source_code/finn.analysis.fpgadataflow.rst +++ b/docs/finn/source_code/finn.analysis.fpgadataflow.rst @@ -4,22 +4,10 @@ finn.analysis.fpgadataflow package Submodules ---------- -finn.analysis.fpgadataflow.hls\_synth\_res\_estimation module -------------------------------------------------------------- - -.. automodule:: finn.analysis.fpgadataflow.hls_synth_res_estimation - :members: - :undoc-members: - :show-inheritance: - -finn.analysis.fpgadataflow.res\_estimation module -------------------------------------------------- - -.. automodule:: finn.analysis.fpgadataflow.res_estimation - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.analysis.fpgadataflow.hls_synth_res_estimation + finn.analysis.fpgadataflow.res_estimation Module contents --------------- diff --git a/docs/finn/source_code/finn.analysis.rst b/docs/finn/source_code/finn.analysis.rst index e4eec7717..079959859 100644 --- a/docs/finn/source_code/finn.analysis.rst +++ b/docs/finn/source_code/finn.analysis.rst @@ -11,22 +11,10 @@ Subpackages Submodules ---------- -finn.analysis.topology module ------------------------------ - -.. automodule:: finn.analysis.topology - :members: - :undoc-members: - :show-inheritance: - -finn.analysis.verify\_custom\_nodes module ------------------------------------------- - -.. automodule:: finn.analysis.verify_custom_nodes - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.analysis.topology + finn.analysis.verify_custom_nodes Module contents --------------- diff --git a/docs/finn/source_code/finn.analysis.topology.rst b/docs/finn/source_code/finn.analysis.topology.rst new file mode 100644 index 000000000..896f3fb8d --- /dev/null +++ b/docs/finn/source_code/finn.analysis.topology.rst @@ -0,0 +1,7 @@ +finn.analysis.topology module +============================= + +.. automodule:: finn.analysis.topology + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.analysis.verify_custom_nodes.rst b/docs/finn/source_code/finn.analysis.verify_custom_nodes.rst new file mode 100644 index 000000000..60e1a33e2 --- /dev/null +++ b/docs/finn/source_code/finn.analysis.verify_custom_nodes.rst @@ -0,0 +1,7 @@ +finn.analysis.verify\_custom\_nodes module +========================================== + +.. automodule:: finn.analysis.verify_custom_nodes + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.core.datatype.rst b/docs/finn/source_code/finn.core.datatype.rst new file mode 100644 index 000000000..d55952ecf --- /dev/null +++ b/docs/finn/source_code/finn.core.datatype.rst @@ -0,0 +1,7 @@ +finn.core.datatype module +========================= + +.. automodule:: finn.core.datatype + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.core.execute_custom_node.rst b/docs/finn/source_code/finn.core.execute_custom_node.rst new file mode 100644 index 000000000..94d8ea143 --- /dev/null +++ b/docs/finn/source_code/finn.core.execute_custom_node.rst @@ -0,0 +1,7 @@ +finn.core.execute\_custom\_node module +====================================== + +.. automodule:: finn.core.execute_custom_node + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.core.modelwrapper.rst b/docs/finn/source_code/finn.core.modelwrapper.rst new file mode 100644 index 000000000..5bd74864b --- /dev/null +++ b/docs/finn/source_code/finn.core.modelwrapper.rst @@ -0,0 +1,7 @@ +finn.core.modelwrapper module +============================= + +.. automodule:: finn.core.modelwrapper + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.core.onnx_exec.rst b/docs/finn/source_code/finn.core.onnx_exec.rst new file mode 100644 index 000000000..87bf9d29d --- /dev/null +++ b/docs/finn/source_code/finn.core.onnx_exec.rst @@ -0,0 +1,7 @@ +finn.core.onnx\_exec module +=========================== + +.. automodule:: finn.core.onnx_exec + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.core.remote_exec.rst b/docs/finn/source_code/finn.core.remote_exec.rst new file mode 100644 index 000000000..39c470eb0 --- /dev/null +++ b/docs/finn/source_code/finn.core.remote_exec.rst @@ -0,0 +1,7 @@ +finn.core.remote\_exec module +============================= + +.. automodule:: finn.core.remote_exec + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.core.rst b/docs/finn/source_code/finn.core.rst index 6563d7a43..acb9de8a7 100644 --- a/docs/finn/source_code/finn.core.rst +++ b/docs/finn/source_code/finn.core.rst @@ -4,54 +4,14 @@ finn.core package Submodules ---------- -finn.core.datatype module -------------------------- - -.. automodule:: finn.core.datatype - :members: - :undoc-members: - :show-inheritance: - -finn.core.execute\_custom\_node module --------------------------------------- - -.. automodule:: finn.core.execute_custom_node - :members: - :undoc-members: - :show-inheritance: - -finn.core.modelwrapper module ------------------------------ - -.. automodule:: finn.core.modelwrapper - :members: - :undoc-members: - :show-inheritance: - -finn.core.onnx\_exec module ---------------------------- - -.. automodule:: finn.core.onnx_exec - :members: - :undoc-members: - :show-inheritance: - -finn.core.remote\_exec module ------------------------------ - -.. automodule:: finn.core.remote_exec - :members: - :undoc-members: - :show-inheritance: - -finn.core.rtlsim\_exec module ------------------------------ - -.. automodule:: finn.core.rtlsim_exec - :members: - :undoc-members: - :show-inheritance: - +.. toctree:: + + finn.core.datatype + finn.core.execute_custom_node + finn.core.modelwrapper + finn.core.onnx_exec + finn.core.remote_exec + finn.core.rtlsim_exec Module contents --------------- diff --git a/docs/finn/source_code/finn.core.rtlsim_exec.rst b/docs/finn/source_code/finn.core.rtlsim_exec.rst new file mode 100644 index 000000000..9d4acef6e --- /dev/null +++ b/docs/finn/source_code/finn.core.rtlsim_exec.rst @@ -0,0 +1,7 @@ +finn.core.rtlsim\_exec module +============================= + +.. automodule:: finn.core.rtlsim_exec + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst new file mode 100644 index 000000000..aa36e86ee --- /dev/null +++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst @@ -0,0 +1,7 @@ +finn.custom\_op.fpgadataflow.convolutioninputgenerator module +============================================================= + +.. automodule:: finn.custom_op.fpgadataflow.convolutioninputgenerator + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.rst index 632c021be..79a05080b 100644 --- a/docs/finn/source_code/finn.custom_op.fpgadataflow.rst +++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.rst @@ -4,46 +4,13 @@ finn.custom\_op.fpgadataflow package Submodules ---------- -finn.custom\_op.fpgadataflow.convolutioninputgenerator module -------------------------------------------------------------- - -.. automodule:: finn.custom_op.fpgadataflow.convolutioninputgenerator - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.fpgadataflow.streamingfclayer\_batch module ------------------------------------------------------------ - -.. automodule:: finn.custom_op.fpgadataflow.streamingfclayer_batch - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.fpgadataflow.streamingmaxpool\_batch module ------------------------------------------------------------ - -.. automodule:: finn.custom_op.fpgadataflow.streamingmaxpool_batch - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.fpgadataflow.templates module ---------------------------------------------- - -.. automodule:: finn.custom_op.fpgadataflow.templates - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.fpgadataflow.tlastmarker module ------------------------------------------------ - -.. automodule:: finn.custom_op.fpgadataflow.tlastmarker - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.custom_op.fpgadataflow.convolutioninputgenerator + finn.custom_op.fpgadataflow.streamingfclayer_batch + finn.custom_op.fpgadataflow.streamingmaxpool_batch + finn.custom_op.fpgadataflow.templates + finn.custom_op.fpgadataflow.tlastmarker Module contents --------------- diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst new file mode 100644 index 000000000..45a9a963a --- /dev/null +++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst @@ -0,0 +1,7 @@ +finn.custom\_op.fpgadataflow.streamingfclayer\_batch module +=========================================================== + +.. automodule:: finn.custom_op.fpgadataflow.streamingfclayer_batch + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst new file mode 100644 index 000000000..5bf7f666a --- /dev/null +++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst @@ -0,0 +1,7 @@ +finn.custom\_op.fpgadataflow.streamingmaxpool\_batch module +=========================================================== + +.. automodule:: finn.custom_op.fpgadataflow.streamingmaxpool_batch + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.templates.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.templates.rst new file mode 100644 index 000000000..a630867a4 --- /dev/null +++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.templates.rst @@ -0,0 +1,7 @@ +finn.custom\_op.fpgadataflow.templates module +============================================= + +.. automodule:: finn.custom_op.fpgadataflow.templates + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst b/docs/finn/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst new file mode 100644 index 000000000..8a087851c --- /dev/null +++ b/docs/finn/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst @@ -0,0 +1,7 @@ +finn.custom\_op.fpgadataflow.tlastmarker module +=============================================== + +.. automodule:: finn.custom_op.fpgadataflow.tlastmarker + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.custom_op.multithreshold.rst b/docs/finn/source_code/finn.custom_op.multithreshold.rst new file mode 100644 index 000000000..3cdf3cee7 --- /dev/null +++ b/docs/finn/source_code/finn.custom_op.multithreshold.rst @@ -0,0 +1,7 @@ +finn.custom\_op.multithreshold module +===================================== + +.. automodule:: finn.custom_op.multithreshold + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.custom_op.registry.rst b/docs/finn/source_code/finn.custom_op.registry.rst new file mode 100644 index 000000000..7805e833b --- /dev/null +++ b/docs/finn/source_code/finn.custom_op.registry.rst @@ -0,0 +1,7 @@ +finn.custom\_op.registry module +=============================== + +.. automodule:: finn.custom_op.registry + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.custom_op.rst b/docs/finn/source_code/finn.custom_op.rst index a984822ae..fd2f070f2 100644 --- a/docs/finn/source_code/finn.custom_op.rst +++ b/docs/finn/source_code/finn.custom_op.rst @@ -11,38 +11,12 @@ Subpackages Submodules ---------- -finn.custom\_op.multithreshold module -------------------------------------- - -.. automodule:: finn.custom_op.multithreshold - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.registry module -------------------------------- - -.. automodule:: finn.custom_op.registry - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.streamingdataflowpartition module -------------------------------------------------- - -.. automodule:: finn.custom_op.streamingdataflowpartition - :members: - :undoc-members: - :show-inheritance: - -finn.custom\_op.xnorpopcount module ------------------------------------ - -.. automodule:: finn.custom_op.xnorpopcount - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.custom_op.multithreshold + finn.custom_op.registry + finn.custom_op.streamingdataflowpartition + finn.custom_op.xnorpopcount Module contents --------------- diff --git a/docs/finn/source_code/finn.custom_op.streamingdataflowpartition.rst b/docs/finn/source_code/finn.custom_op.streamingdataflowpartition.rst new file mode 100644 index 000000000..1d07f01ce --- /dev/null +++ b/docs/finn/source_code/finn.custom_op.streamingdataflowpartition.rst @@ -0,0 +1,7 @@ +finn.custom\_op.streamingdataflowpartition module +================================================= + +.. automodule:: finn.custom_op.streamingdataflowpartition + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.custom_op.xnorpopcount.rst b/docs/finn/source_code/finn.custom_op.xnorpopcount.rst new file mode 100644 index 000000000..d91608278 --- /dev/null +++ b/docs/finn/source_code/finn.custom_op.xnorpopcount.rst @@ -0,0 +1,7 @@ +finn.custom\_op.xnorpopcount module +=================================== + +.. automodule:: finn.custom_op.xnorpopcount + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.batchnorm_to_affine.rst b/docs/finn/source_code/finn.transformation.batchnorm_to_affine.rst new file mode 100644 index 000000000..8d0ecfb75 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.batchnorm_to_affine.rst @@ -0,0 +1,7 @@ +finn.transformation.batchnorm\_to\_affine module +================================================ + +.. automodule:: finn.transformation.batchnorm_to_affine + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.bipolar_to_xnor.rst b/docs/finn/source_code/finn.transformation.bipolar_to_xnor.rst new file mode 100644 index 000000000..dc34f4def --- /dev/null +++ b/docs/finn/source_code/finn.transformation.bipolar_to_xnor.rst @@ -0,0 +1,7 @@ +finn.transformation.bipolar\_to\_xnor module +============================================ + +.. automodule:: finn.transformation.bipolar_to_xnor + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fold_constants.rst b/docs/finn/source_code/finn.transformation.fold_constants.rst new file mode 100644 index 000000000..792f8bfe0 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fold_constants.rst @@ -0,0 +1,7 @@ +finn.transformation.fold\_constants module +========================================== + +.. automodule:: finn.transformation.fold_constants + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.cleanup.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.cleanup.rst new file mode 100644 index 000000000..38cc49897 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.cleanup.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.cleanup module +=============================================== + +.. automodule:: finn.transformation.fpgadataflow.cleanup + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst new file mode 100644 index 000000000..158ad7602 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.codegen\_ipgen module +====================================================== + +.. automodule:: finn.transformation.fpgadataflow.codegen_ipgen + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst new file mode 100644 index 000000000..d3f7434e3 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.codegen\_ipstitch module +========================================================= + +.. automodule:: finn.transformation.fpgadataflow.codegen_ipstitch + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst new file mode 100644 index 000000000..28796da29 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.codegen\_npysim module +======================================================= + +.. automodule:: finn.transformation.fpgadataflow.codegen_npysim + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.compile.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.compile.rst new file mode 100644 index 000000000..3d36a046b --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.compile.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.compile module +=============================================== + +.. automodule:: finn.transformation.fpgadataflow.compile + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst new file mode 100644 index 000000000..0ae11a41b --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.convert\_to\_hls\_layers module +================================================================ + +.. automodule:: finn.transformation.fpgadataflow.convert_to_hls_layers + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst new file mode 100644 index 000000000..4827fd5b2 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.create\_dataflow\_partition module +=================================================================== + +.. automodule:: finn.transformation.fpgadataflow.create_dataflow_partition + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst new file mode 100644 index 000000000..47af9049f --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.hlssynth\_ipgen module +======================================================= + +.. automodule:: finn.transformation.fpgadataflow.hlssynth_ipgen + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst new file mode 100644 index 000000000..d4bd00b8c --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.insert\_tlastmarker module +=========================================================== + +.. automodule:: finn.transformation.fpgadataflow.insert_tlastmarker + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.make_deployment.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.make_deployment.rst new file mode 100644 index 000000000..130c91989 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.make_deployment.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.make\_deployment module +======================================================== + +.. automodule:: finn.transformation.fpgadataflow.make_deployment + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst new file mode 100644 index 000000000..5238f0846 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.make\_pynq\_driver module +========================================================== + +.. automodule:: finn.transformation.fpgadataflow.make_pynq_driver + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst new file mode 100644 index 000000000..1d040887f --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.make\_pynq\_proj module +======================================================== + +.. automodule:: finn.transformation.fpgadataflow.make_pynq_proj + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.rst index 435eacf2c..f99673391 100644 --- a/docs/finn/source_code/finn.transformation.fpgadataflow.rst +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.rst @@ -4,126 +4,23 @@ finn.transformation.fpgadataflow package Submodules ---------- -finn.transformation.fpgadataflow.cleanup module ------------------------------------------------ - -.. automodule:: finn.transformation.fpgadataflow.cleanup - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.codegen\_ipgen module ------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.codegen_ipgen - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.codegen\_ipstitch module ---------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.codegen_ipstitch - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.codegen\_npysim module -------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.codegen_npysim - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.compile module ------------------------------------------------ - -.. automodule:: finn.transformation.fpgadataflow.compile - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.convert\_to\_hls\_layers module ----------------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.convert_to_hls_layers - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.create\_dataflow\_partition module -------------------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.create_dataflow_partition - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.hlssynth\_ipgen module -------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.hlssynth_ipgen - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.insert\_tlastmarker module ------------------------------------------------------------ - -.. automodule:: finn.transformation.fpgadataflow.insert_tlastmarker - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.make\_deployment module --------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.make_deployment - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.make\_pynq\_driver module ----------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.make_pynq_driver - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.make\_pynq\_proj module --------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.make_pynq_proj - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.set\_exec\_mode module -------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.set_exec_mode - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.synth\_pynq\_proj module ---------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.synth_pynq_proj - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fpgadataflow.templates module -------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.templates - :members: - :undoc-members: - :show-inheritance: - +.. toctree:: + + finn.transformation.fpgadataflow.cleanup + finn.transformation.fpgadataflow.codegen_ipgen + finn.transformation.fpgadataflow.codegen_ipstitch + finn.transformation.fpgadataflow.codegen_npysim + finn.transformation.fpgadataflow.compile + finn.transformation.fpgadataflow.convert_to_hls_layers + finn.transformation.fpgadataflow.create_dataflow_partition + finn.transformation.fpgadataflow.hlssynth_ipgen + finn.transformation.fpgadataflow.insert_tlastmarker + finn.transformation.fpgadataflow.make_deployment + finn.transformation.fpgadataflow.make_pynq_driver + finn.transformation.fpgadataflow.make_pynq_proj + finn.transformation.fpgadataflow.set_exec_mode + finn.transformation.fpgadataflow.synth_pynq_proj + finn.transformation.fpgadataflow.templates Module contents --------------- diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst new file mode 100644 index 000000000..7affa78b4 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.set\_exec\_mode module +======================================================= + +.. automodule:: finn.transformation.fpgadataflow.set_exec_mode + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst new file mode 100644 index 000000000..e902991a6 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.synth\_pynq\_proj module +========================================================= + +.. automodule:: finn.transformation.fpgadataflow.synth_pynq_proj + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.templates.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.templates.rst new file mode 100644 index 000000000..a62f37783 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.fpgadataflow.templates.rst @@ -0,0 +1,7 @@ +finn.transformation.fpgadataflow.templates module +================================================= + +.. automodule:: finn.transformation.fpgadataflow.templates + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.general.rst b/docs/finn/source_code/finn.transformation.general.rst new file mode 100644 index 000000000..bfae28100 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.general.rst @@ -0,0 +1,7 @@ +finn.transformation.general module +================================== + +.. automodule:: finn.transformation.general + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.infer_datatypes.rst b/docs/finn/source_code/finn.transformation.infer_datatypes.rst new file mode 100644 index 000000000..939d15521 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.infer_datatypes.rst @@ -0,0 +1,7 @@ +finn.transformation.infer\_datatypes module +=========================================== + +.. automodule:: finn.transformation.infer_datatypes + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.infer_shapes.rst b/docs/finn/source_code/finn.transformation.infer_shapes.rst new file mode 100644 index 000000000..946955706 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.infer_shapes.rst @@ -0,0 +1,7 @@ +finn.transformation.infer\_shapes module +======================================== + +.. automodule:: finn.transformation.infer_shapes + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.rst b/docs/finn/source_code/finn.transformation.rst index 172f6e300..da9618ed6 100644 --- a/docs/finn/source_code/finn.transformation.rst +++ b/docs/finn/source_code/finn.transformation.rst @@ -12,54 +12,14 @@ Subpackages Submodules ---------- -finn.transformation.batchnorm\_to\_affine module ------------------------------------------------- - -.. automodule:: finn.transformation.batchnorm_to_affine - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.bipolar\_to\_xnor module --------------------------------------------- - -.. automodule:: finn.transformation.bipolar_to_xnor - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.fold\_constants module ------------------------------------------- - -.. automodule:: finn.transformation.fold_constants - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.general module ----------------------------------- - -.. automodule:: finn.transformation.general - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.infer\_datatypes module -------------------------------------------- - -.. automodule:: finn.transformation.infer_datatypes - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.infer\_shapes module ----------------------------------------- - -.. automodule:: finn.transformation.infer_shapes - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.transformation.batchnorm_to_affine + finn.transformation.bipolar_to_xnor + finn.transformation.fold_constants + finn.transformation.general + finn.transformation.infer_datatypes + finn.transformation.infer_shapes Module contents --------------- diff --git a/docs/finn/source_code/finn.transformation.streamline.absorb.rst b/docs/finn/source_code/finn.transformation.streamline.absorb.rst new file mode 100644 index 000000000..597a98944 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.streamline.absorb.rst @@ -0,0 +1,7 @@ +finn.transformation.streamline.absorb module +============================================ + +.. automodule:: finn.transformation.streamline.absorb + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.streamline.collapse_repeated.rst b/docs/finn/source_code/finn.transformation.streamline.collapse_repeated.rst new file mode 100644 index 000000000..a15f72aea --- /dev/null +++ b/docs/finn/source_code/finn.transformation.streamline.collapse_repeated.rst @@ -0,0 +1,7 @@ +finn.transformation.streamline.collapse\_repeated module +======================================================== + +.. automodule:: finn.transformation.streamline.collapse_repeated + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.streamline.reorder.rst b/docs/finn/source_code/finn.transformation.streamline.reorder.rst new file mode 100644 index 000000000..ac969e132 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.streamline.reorder.rst @@ -0,0 +1,7 @@ +finn.transformation.streamline.reorder module +============================================= + +.. automodule:: finn.transformation.streamline.reorder + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.streamline.round_thresholds.rst b/docs/finn/source_code/finn.transformation.streamline.round_thresholds.rst new file mode 100644 index 000000000..031c65d07 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.streamline.round_thresholds.rst @@ -0,0 +1,7 @@ +finn.transformation.streamline.round\_thresholds module +======================================================= + +.. automodule:: finn.transformation.streamline.round_thresholds + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.transformation.streamline.rst b/docs/finn/source_code/finn.transformation.streamline.rst index 33e593095..5b3a88384 100644 --- a/docs/finn/source_code/finn.transformation.streamline.rst +++ b/docs/finn/source_code/finn.transformation.streamline.rst @@ -4,46 +4,13 @@ finn.transformation.streamline package Submodules ---------- -finn.transformation.streamline.absorb module --------------------------------------------- - -.. automodule:: finn.transformation.streamline.absorb - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.streamline.collapse\_repeated module --------------------------------------------------------- - -.. automodule:: finn.transformation.streamline.collapse_repeated - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.streamline.reorder module ---------------------------------------------- - -.. automodule:: finn.transformation.streamline.reorder - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.streamline.round\_thresholds module -------------------------------------------------------- - -.. automodule:: finn.transformation.streamline.round_thresholds - :members: - :undoc-members: - :show-inheritance: - -finn.transformation.streamline.sign\_to\_thres module ------------------------------------------------------ - -.. automodule:: finn.transformation.streamline.sign_to_thres - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.transformation.streamline.absorb + finn.transformation.streamline.collapse_repeated + finn.transformation.streamline.reorder + finn.transformation.streamline.round_thresholds + finn.transformation.streamline.sign_to_thres Module contents --------------- diff --git a/docs/finn/source_code/finn.transformation.streamline.sign_to_thres.rst b/docs/finn/source_code/finn.transformation.streamline.sign_to_thres.rst new file mode 100644 index 000000000..166717eb3 --- /dev/null +++ b/docs/finn/source_code/finn.transformation.streamline.sign_to_thres.rst @@ -0,0 +1,7 @@ +finn.transformation.streamline.sign\_to\_thres module +===================================================== + +.. automodule:: finn.transformation.streamline.sign_to_thres + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.util.basic.rst b/docs/finn/source_code/finn.util.basic.rst new file mode 100644 index 000000000..10e8e1ac1 --- /dev/null +++ b/docs/finn/source_code/finn.util.basic.rst @@ -0,0 +1,7 @@ +finn.util.basic module +====================== + +.. automodule:: finn.util.basic + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.util.data_packing.rst b/docs/finn/source_code/finn.util.data_packing.rst new file mode 100644 index 000000000..6a39cc14b --- /dev/null +++ b/docs/finn/source_code/finn.util.data_packing.rst @@ -0,0 +1,7 @@ +finn.util.data\_packing module +============================== + +.. automodule:: finn.util.data_packing + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.util.fpgadataflow.rst b/docs/finn/source_code/finn.util.fpgadataflow.rst new file mode 100644 index 000000000..3472ed477 --- /dev/null +++ b/docs/finn/source_code/finn.util.fpgadataflow.rst @@ -0,0 +1,7 @@ +finn.util.fpgadataflow module +============================= + +.. automodule:: finn.util.fpgadataflow + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.util.onnx.rst b/docs/finn/source_code/finn.util.onnx.rst new file mode 100644 index 000000000..057cb07ca --- /dev/null +++ b/docs/finn/source_code/finn.util.onnx.rst @@ -0,0 +1,7 @@ +finn.util.onnx module +===================== + +.. automodule:: finn.util.onnx + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/finn/source_code/finn.util.rst b/docs/finn/source_code/finn.util.rst index 1c85bcd44..c66d189b3 100644 --- a/docs/finn/source_code/finn.util.rst +++ b/docs/finn/source_code/finn.util.rst @@ -4,46 +4,13 @@ finn.util package Submodules ---------- -finn.util.basic module ----------------------- - -.. automodule:: finn.util.basic - :members: - :undoc-members: - :show-inheritance: - -finn.util.data\_packing module ------------------------------- - -.. automodule:: finn.util.data_packing - :members: - :undoc-members: - :show-inheritance: - -finn.util.fpgadataflow module ------------------------------ - -.. automodule:: finn.util.fpgadataflow - :members: - :undoc-members: - :show-inheritance: - -finn.util.onnx module ---------------------- - -.. automodule:: finn.util.onnx - :members: - :undoc-members: - :show-inheritance: - -finn.util.test module ---------------------- - -.. automodule:: finn.util.test - :members: - :undoc-members: - :show-inheritance: +.. toctree:: + finn.util.basic + finn.util.data_packing + finn.util.fpgadataflow + finn.util.onnx + finn.util.test Module contents --------------- diff --git a/docs/finn/source_code/finn.util.test.rst b/docs/finn/source_code/finn.util.test.rst new file mode 100644 index 000000000..3fe1bc15e --- /dev/null +++ b/docs/finn/source_code/finn.util.test.rst @@ -0,0 +1,7 @@ +finn.util.test module +===================== + +.. automodule:: finn.util.test + :members: + :undoc-members: + :show-inheritance: -- GitLab