From 82cd3c6e322d05f193cfbde1da30ad6bb9477694 Mon Sep 17 00:00:00 2001 From: auphelia <jakobapk@web.de> Date: Mon, 24 Feb 2020 12:05:37 +0000 Subject: [PATCH] [Sphinx Documentation] Add changed build files --- docs/finn/_build/doctrees/environment.pickle | Bin 133666 -> 133135 bytes .../_build/doctrees/finn.analysis.doctree | Bin 15545 -> 0 bytes .../finn.analysis.fpgadataflow.doctree | Bin 8760 -> 0 bytes docs/finn/_build/doctrees/finn.core.doctree | Bin 77481 -> 0 bytes .../_build/doctrees/finn.custom_op.doctree | Bin 56485 -> 0 bytes .../finn.custom_op.fpgadataflow.doctree | Bin 160723 -> 0 bytes docs/finn/_build/doctrees/finn.doctree | Bin 3411 -> 0 bytes .../doctrees/finn.transformation.doctree | Bin 45627 -> 0 bytes .../finn.transformation.fpgadataflow.doctree | Bin 67064 -> 0 bytes .../finn.transformation.streamline.doctree | Bin 51174 -> 0 bytes docs/finn/_build/doctrees/finn.util.doctree | Bin 66407 -> 0 bytes docs/finn/_build/doctrees/modules.doctree | Bin 2839 -> 3134 bytes .../doctrees/source_code/analysis.doctree | Bin 2857 -> 0 bytes .../source_code/analysis.fpgadataflow.doctree | Bin 3642 -> 0 bytes .../source_code/analysis/analysis.doctree | Bin 3988 -> 0 bytes .../analysis/analysis.fpgadataflow.doctree | Bin 3651 -> 0 bytes ...adataflow.hls_synth_res_estimation.doctree | Bin 5024 -> 0 bytes ...alysis.fpgadataflow.res_estimation.doctree | Bin 4748 -> 0 bytes .../finn.analysis.topology.doctree | Bin 9376 -> 0 bytes .../finn.analysis.verify_custom_nodes.doctree | Bin 5445 -> 0 bytes .../source_code/finn.core.datatype.doctree | Bin 29083 -> 0 bytes .../finn.core.execute_custom_node.doctree | Bin 4768 -> 0 bytes .../finn.core.modelwrapper.doctree | Bin 37452 -> 0 bytes .../source_code/finn.core.onnx_exec.doctree | Bin 10978 -> 0 bytes .../source_code/finn.core.remote_exec.doctree | Bin 4084 -> 0 bytes .../source_code/finn.core.rtlsim_exec.doctree | Bin 4406 -> 0 bytes ...dataflow.convolutioninputgenerator.doctree | Bin 31441 -> 0 bytes ...pgadataflow.streamingfclayer_batch.doctree | Bin 45944 -> 0 bytes ...pgadataflow.streamingmaxpool_batch.doctree | Bin 25637 -> 0 bytes ...n.custom_op.fpgadataflow.templates.doctree | Bin 2908 -> 0 bytes ...custom_op.fpgadataflow.tlastmarker.doctree | Bin 27147 -> 0 bytes .../finn.custom_op.multithreshold.doctree | Bin 15531 -> 0 bytes .../finn.custom_op.registry.doctree | Bin 4314 -> 0 bytes ...stom_op.streamingdataflowpartition.doctree | Bin 13945 -> 0 bytes .../finn.custom_op.xnorpopcount.doctree | Bin 14107 -> 0 bytes ...transformation.batchnorm_to_affine.doctree | Bin 6433 -> 0 bytes ...inn.transformation.bipolar_to_xnor.doctree | Bin 6639 -> 0 bytes ...finn.transformation.fold_constants.doctree | Bin 6271 -> 0 bytes ...ransformation.fpgadataflow.cleanup.doctree | Bin 6249 -> 0 bytes ...rmation.fpgadataflow.codegen_ipgen.doctree | Bin 6841 -> 0 bytes ...tion.fpgadataflow.codegen_ipstitch.doctree | Bin 8183 -> 0 bytes ...mation.fpgadataflow.codegen_npysim.doctree | Bin 6569 -> 0 bytes ...ransformation.fpgadataflow.compile.doctree | Bin 6209 -> 0 bytes ...fpgadataflow.convert_to_hls_layers.doctree | Bin 7211 -> 0 bytes ...dataflow.create_dataflow_partition.doctree | Bin 7641 -> 0 bytes ...mation.fpgadataflow.hlssynth_ipgen.doctree | Bin 6553 -> 0 bytes ...on.fpgadataflow.insert_tlastmarker.doctree | Bin 6823 -> 0 bytes ...ation.fpgadataflow.make_deployment.doctree | Bin 7553 -> 0 bytes ...tion.fpgadataflow.make_pynq_driver.doctree | Bin 7309 -> 0 bytes ...mation.fpgadataflow.make_pynq_proj.doctree | Bin 7685 -> 0 bytes ...rmation.fpgadataflow.set_exec_mode.doctree | Bin 6716 -> 0 bytes ...ation.fpgadataflow.synth_pynq_proj.doctree | Bin 6813 -> 0 bytes ...nsformation.fpgadataflow.templates.doctree | Bin 2911 -> 0 bytes .../finn.transformation.general.doctree | Bin 15515 -> 0 bytes ...inn.transformation.infer_datatypes.doctree | Bin 6339 -> 0 bytes .../finn.transformation.infer_shapes.doctree | Bin 6165 -> 0 bytes ...n.transformation.streamline.absorb.doctree | Bin 17280 -> 0 bytes ...ation.streamline.collapse_repeated.doctree | Bin 11501 -> 0 bytes ....transformation.streamline.reorder.doctree | Bin 13465 -> 0 bytes ...mation.streamline.round_thresholds.doctree | Bin 6961 -> 0 bytes ...formation.streamline.sign_to_thres.doctree | Bin 6599 -> 0 bytes .../source_code/finn.util.basic.doctree | Bin 24782 -> 0 bytes .../finn.util.data_packing.doctree | Bin 27586 -> 0 bytes .../finn.util.fpgadataflow.doctree | Bin 8928 -> 0 bytes .../source_code/finn.util.onnx.doctree | Bin 4140 -> 0 bytes .../source_code/finn.util.test.doctree | Bin 7718 -> 0 bytes docs/finn/_build/doctrees/src.doctree | Bin 3306 -> 0 bytes .../_build/doctrees/src.finn.analysis.doctree | Bin 15801 -> 0 bytes .../src.finn.analysis.fpgadataflow.doctree | Bin 8924 -> 0 bytes .../_build/doctrees/src.finn.core.doctree | Bin 80223 -> 0 bytes .../doctrees/src.finn.custom_op.doctree | Bin 57329 -> 0 bytes .../src.finn.custom_op.fpgadataflow.doctree | Bin 163027 -> 0 bytes docs/finn/_build/doctrees/src.finn.doctree | Bin 3471 -> 0 bytes .../doctrees/src.finn.transformation.doctree | Bin 46371 -> 0 bytes ...c.finn.transformation.fpgadataflow.doctree | Bin 72245 -> 0 bytes ...src.finn.transformation.streamline.doctree | Bin 52002 -> 0 bytes .../_build/doctrees/src.finn.util.doctree | Bin 66057 -> 0 bytes .../html/.doctrees/end_to_end_flow.doctree | Bin 2537 -> 0 bytes .../_build/html/.doctrees/environment.pickle | Bin 133071 -> 0 bytes .../html/.doctrees/getting_started.doctree | Bin 14132 -> 0 bytes docs/finn/_build/html/.doctrees/index.doctree | Bin 10019 -> 0 bytes .../_build/html/.doctrees/modules.doctree | Bin 2839 -> 0 bytes .../_build/html/.doctrees/source_code.doctree | Bin 2572 -> 0 bytes .../source_code/finn.analysis.doctree | Bin 15581 -> 0 bytes .../finn.analysis.fpgadataflow.doctree | Bin 8772 -> 0 bytes .../.doctrees/source_code/finn.core.doctree | Bin 81755 -> 0 bytes .../source_code/finn.custom_op.doctree | Bin 56521 -> 0 bytes .../finn.custom_op.fpgadataflow.doctree | Bin 160747 -> 0 bytes .../html/.doctrees/source_code/finn.doctree | Bin 3495 -> 0 bytes .../source_code/finn.transformation.doctree | Bin 45675 -> 0 bytes .../finn.transformation.fpgadataflow.doctree | Bin 71069 -> 0 bytes .../finn.transformation.streamline.doctree | Bin 51198 -> 0 bytes .../.doctrees/source_code/finn.util.doctree | Bin 66431 -> 0 bytes .../.doctrees/source_code/modules.doctree | Bin 2556 -> 0 bytes docs/finn/_build/html/_images/finn-flow.png | Bin 12588 -> 0 bytes .../finn.analysis.fpgadataflow.rst.txt | 30 - .../html/_sources/finn.analysis.rst.txt | 37 - .../_build/html/_sources/finn.core.rst.txt | 46 - .../finn.custom_op.fpgadataflow.rst.txt | 54 - .../html/_sources/finn.custom_op.rst.txt | 53 - docs/finn/_build/html/_sources/finn.rst.txt | 21 - .../finn.transformation.fpgadataflow.rst.txt | 134 --- .../html/_sources/finn.transformation.rst.txt | 70 -- .../finn.transformation.streamline.rst.txt | 54 - .../_build/html/_sources/finn.util.rst.txt | 54 - .../finn/_build/html/_sources/modules.rst.txt | 4 +- .../source_code/analysis.fpgadataflow.rst.txt | 30 - .../_sources/source_code/analysis.rst.txt | 10 - .../analysis/analysis.fpgadataflow.rst.txt | 30 - .../source_code/analysis/analysis.rst.txt | 37 - ...adataflow.hls_synth_res_estimation.rst.txt | 7 - ...alysis.fpgadataflow.res_estimation.rst.txt | 7 - .../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 - .../source_code/finn.core.rtlsim_exec.rst.txt | 7 - ...dataflow.convolutioninputgenerator.rst.txt | 7 - ...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 - ...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 - ...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 - ...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 - ...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 - .../source_code/finn.util.test.rst.txt | 7 - .../src.finn.analysis.fpgadataflow.rst.txt | 30 - .../html/_sources/src.finn.analysis.rst.txt | 37 - .../html/_sources/src.finn.core.rst.txt | 46 - .../src.finn.custom_op.fpgadataflow.rst.txt | 54 - .../html/_sources/src.finn.custom_op.rst.txt | 53 - .../_build/html/_sources/src.finn.rst.txt | 21 - ...c.finn.transformation.fpgadataflow.rst.txt | 134 --- .../_sources/src.finn.transformation.rst.txt | 70 -- ...src.finn.transformation.streamline.rst.txt | 54 - .../html/_sources/src.finn.util.rst.txt | 54 - docs/finn/_build/html/_sources/src.rst.txt | 17 - docs/finn/_build/html/_static/alabaster.css | 701 ------------- docs/finn/_build/html/_static/custom.css | 1 - .../html/finn.analysis.fpgadataflow.html | 224 ----- docs/finn/_build/html/finn.analysis.html | 272 ------ docs/finn/_build/html/finn.core.html | 562 ----------- .../html/finn.custom_op.fpgadataflow.html | 922 ------------------ docs/finn/_build/html/finn.custom_op.html | 460 --------- docs/finn/_build/html/finn.html | 314 ------ .../finn.transformation.fpgadataflow.html | 432 -------- .../finn/_build/html/finn.transformation.html | 397 -------- .../html/finn.transformation.streamline.html | 378 ------- docs/finn/_build/html/finn.util.html | 473 --------- docs/finn/_build/html/modules.html | 9 +- docs/finn/_build/html/objects.inv | Bin 3619 -> 3628 bytes docs/finn/_build/html/searchindex.js | 2 +- .../source_code/analysis.fpgadataflow.html | 226 ----- .../_build/html/source_code/analysis.html | 229 ----- .../analysis/analysis.fpgadataflow.html | 231 ----- .../html/source_code/analysis/analysis.html | 246 ----- ...fpgadataflow.hls_synth_res_estimation.html | 219 ----- .../finn.analysis.fpgadataflow.html | 19 +- ....analysis.fpgadataflow.res_estimation.html | 219 ----- .../html/source_code/finn.analysis.html | 17 +- .../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 | 17 +- .../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 | 19 +- ...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 | 17 +- .../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 | 15 +- ...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 | 19 +- ...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 | 17 +- .../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 | 19 +- ...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 | 14 +- .../html/source_code/finn.util.onnx.html | 216 ---- .../html/source_code/finn.util.test.html | 227 ----- .../html/src.finn.analysis.fpgadataflow.html | 126 --- docs/finn/_build/html/src.finn.analysis.html | 170 ---- docs/finn/_build/html/src.finn.core.html | 466 --------- .../html/src.finn.custom_op.fpgadataflow.html | 821 ---------------- docs/finn/_build/html/src.finn.custom_op.html | 359 ------- docs/finn/_build/html/src.finn.html | 218 ----- .../src.finn.transformation.fpgadataflow.html | 351 ------- .../_build/html/src.finn.transformation.html | 304 ------ .../src.finn.transformation.streamline.html | 277 ------ docs/finn/_build/html/src.finn.util.html | 368 ------- docs/finn/_build/html/src.html | 225 ----- docs/finn/modules.rst | 4 +- 262 files changed, 172 insertions(+), 23715 deletions(-) delete mode 100644 docs/finn/_build/doctrees/finn.analysis.doctree delete mode 100644 docs/finn/_build/doctrees/finn.analysis.fpgadataflow.doctree delete mode 100644 docs/finn/_build/doctrees/finn.core.doctree delete mode 100644 docs/finn/_build/doctrees/finn.custom_op.doctree delete mode 100644 docs/finn/_build/doctrees/finn.custom_op.fpgadataflow.doctree delete mode 100644 docs/finn/_build/doctrees/finn.doctree delete mode 100644 docs/finn/_build/doctrees/finn.transformation.doctree delete mode 100644 docs/finn/_build/doctrees/finn.transformation.fpgadataflow.doctree delete mode 100644 docs/finn/_build/doctrees/finn.transformation.streamline.doctree delete mode 100644 docs/finn/_build/doctrees/finn.util.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/analysis.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/analysis.fpgadataflow.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/analysis/analysis.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/analysis/analysis.fpgadataflow.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.fpgadataflow.res_estimation.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.topology.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.analysis.verify_custom_nodes.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.core.datatype.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.core.execute_custom_node.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.core.modelwrapper.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.core.onnx_exec.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.core.remote_exec.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.core.rtlsim_exec.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.templates.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.fpgadataflow.tlastmarker.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.multithreshold.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.registry.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.streamingdataflowpartition.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.custom_op.xnorpopcount.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.batchnorm_to_affine.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.bipolar_to_xnor.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fold_constants.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.cleanup.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipgen.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.codegen_npysim.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.compile.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_deployment.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_driver.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.make_pynq_proj.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.set_exec_mode.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.fpgadataflow.templates.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.general.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.infer_datatypes.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.infer_shapes.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.absorb.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.collapse_repeated.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.reorder.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.round_thresholds.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.transformation.streamline.sign_to_thres.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.util.basic.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.util.data_packing.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.util.fpgadataflow.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.util.onnx.doctree delete mode 100644 docs/finn/_build/doctrees/source_code/finn.util.test.doctree delete mode 100644 docs/finn/_build/doctrees/src.doctree delete mode 100644 docs/finn/_build/doctrees/src.finn.analysis.doctree delete mode 100644 docs/finn/_build/doctrees/src.finn.analysis.fpgadataflow.doctree delete mode 100644 docs/finn/_build/doctrees/src.finn.core.doctree delete mode 100644 docs/finn/_build/doctrees/src.finn.custom_op.doctree delete mode 100644 docs/finn/_build/doctrees/src.finn.custom_op.fpgadataflow.doctree delete mode 100644 docs/finn/_build/doctrees/src.finn.doctree delete mode 100644 docs/finn/_build/doctrees/src.finn.transformation.doctree delete mode 100644 docs/finn/_build/doctrees/src.finn.transformation.fpgadataflow.doctree delete mode 100644 docs/finn/_build/doctrees/src.finn.transformation.streamline.doctree delete mode 100644 docs/finn/_build/doctrees/src.finn.util.doctree delete mode 100644 docs/finn/_build/html/.doctrees/end_to_end_flow.doctree delete mode 100644 docs/finn/_build/html/.doctrees/environment.pickle delete mode 100644 docs/finn/_build/html/.doctrees/getting_started.doctree delete mode 100644 docs/finn/_build/html/.doctrees/index.doctree delete mode 100644 docs/finn/_build/html/.doctrees/modules.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/finn.analysis.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/finn.analysis.fpgadataflow.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/finn.core.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/finn.custom_op.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/finn.custom_op.fpgadataflow.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/finn.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/finn.transformation.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/finn.transformation.fpgadataflow.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/finn.transformation.streamline.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/finn.util.doctree delete mode 100644 docs/finn/_build/html/.doctrees/source_code/modules.doctree delete mode 100644 docs/finn/_build/html/_images/finn-flow.png delete mode 100644 docs/finn/_build/html/_sources/finn.analysis.fpgadataflow.rst.txt delete mode 100644 docs/finn/_build/html/_sources/finn.analysis.rst.txt delete mode 100644 docs/finn/_build/html/_sources/finn.core.rst.txt delete mode 100644 docs/finn/_build/html/_sources/finn.custom_op.fpgadataflow.rst.txt delete mode 100644 docs/finn/_build/html/_sources/finn.custom_op.rst.txt delete mode 100644 docs/finn/_build/html/_sources/finn.rst.txt delete mode 100644 docs/finn/_build/html/_sources/finn.transformation.fpgadataflow.rst.txt delete mode 100644 docs/finn/_build/html/_sources/finn.transformation.rst.txt delete mode 100644 docs/finn/_build/html/_sources/finn.transformation.streamline.rst.txt delete mode 100644 docs/finn/_build/html/_sources/finn.util.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/analysis.fpgadataflow.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/analysis.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/analysis/analysis.fpgadataflow.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/analysis/analysis.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.datatype.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.execute_custom_node.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.modelwrapper.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.onnx_exec.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.remote_exec.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.multithreshold.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.registry.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.custom_op.xnorpopcount.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fold_constants.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.general.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.infer_datatypes.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.infer_shapes.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.reorder.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.basic.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.data_packing.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.fpgadataflow.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.onnx.rst.txt delete mode 100644 docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.finn.analysis.fpgadataflow.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.finn.analysis.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.finn.core.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.finn.custom_op.fpgadataflow.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.finn.custom_op.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.finn.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.finn.transformation.fpgadataflow.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.finn.transformation.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.finn.transformation.streamline.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.finn.util.rst.txt delete mode 100644 docs/finn/_build/html/_sources/src.rst.txt delete mode 100644 docs/finn/_build/html/_static/alabaster.css delete mode 100644 docs/finn/_build/html/_static/custom.css delete mode 100644 docs/finn/_build/html/finn.analysis.fpgadataflow.html delete mode 100644 docs/finn/_build/html/finn.analysis.html delete mode 100644 docs/finn/_build/html/finn.core.html delete mode 100644 docs/finn/_build/html/finn.custom_op.fpgadataflow.html delete mode 100644 docs/finn/_build/html/finn.custom_op.html delete mode 100644 docs/finn/_build/html/finn.html delete mode 100644 docs/finn/_build/html/finn.transformation.fpgadataflow.html delete mode 100644 docs/finn/_build/html/finn.transformation.html delete mode 100644 docs/finn/_build/html/finn.transformation.streamline.html delete mode 100644 docs/finn/_build/html/finn.util.html delete mode 100644 docs/finn/_build/html/source_code/analysis.fpgadataflow.html delete mode 100644 docs/finn/_build/html/source_code/analysis.html delete mode 100644 docs/finn/_build/html/source_code/analysis/analysis.fpgadataflow.html delete mode 100644 docs/finn/_build/html/source_code/analysis/analysis.html delete mode 100644 docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html delete mode 100644 docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.res_estimation.html delete mode 100644 docs/finn/_build/html/source_code/finn.analysis.topology.html delete mode 100644 docs/finn/_build/html/source_code/finn.analysis.verify_custom_nodes.html delete mode 100644 docs/finn/_build/html/source_code/finn.core.datatype.html delete mode 100644 docs/finn/_build/html/source_code/finn.core.execute_custom_node.html delete mode 100644 docs/finn/_build/html/source_code/finn.core.modelwrapper.html delete mode 100644 docs/finn/_build/html/source_code/finn.core.onnx_exec.html delete mode 100644 docs/finn/_build/html/source_code/finn.core.remote_exec.html delete mode 100644 docs/finn/_build/html/source_code/finn.core.rtlsim_exec.html delete mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html delete mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html delete mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html delete mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.templates.html delete mode 100644 docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.tlastmarker.html delete mode 100644 docs/finn/_build/html/source_code/finn.custom_op.multithreshold.html delete mode 100644 docs/finn/_build/html/source_code/finn.custom_op.registry.html delete mode 100644 docs/finn/_build/html/source_code/finn.custom_op.streamingdataflowpartition.html delete mode 100644 docs/finn/_build/html/source_code/finn.custom_op.xnorpopcount.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.batchnorm_to_affine.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.bipolar_to_xnor.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fold_constants.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.cleanup.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipgen.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_npysim.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.compile.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_deployment.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_driver.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_proj.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.set_exec_mode.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.templates.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.general.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.infer_datatypes.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.infer_shapes.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.absorb.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.collapse_repeated.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.reorder.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.round_thresholds.html delete mode 100644 docs/finn/_build/html/source_code/finn.transformation.streamline.sign_to_thres.html delete mode 100644 docs/finn/_build/html/source_code/finn.util.basic.html delete mode 100644 docs/finn/_build/html/source_code/finn.util.data_packing.html delete mode 100644 docs/finn/_build/html/source_code/finn.util.fpgadataflow.html delete mode 100644 docs/finn/_build/html/source_code/finn.util.onnx.html delete mode 100644 docs/finn/_build/html/source_code/finn.util.test.html delete mode 100644 docs/finn/_build/html/src.finn.analysis.fpgadataflow.html delete mode 100644 docs/finn/_build/html/src.finn.analysis.html delete mode 100644 docs/finn/_build/html/src.finn.core.html delete mode 100644 docs/finn/_build/html/src.finn.custom_op.fpgadataflow.html delete mode 100644 docs/finn/_build/html/src.finn.custom_op.html delete mode 100644 docs/finn/_build/html/src.finn.html delete mode 100644 docs/finn/_build/html/src.finn.transformation.fpgadataflow.html delete mode 100644 docs/finn/_build/html/src.finn.transformation.html delete mode 100644 docs/finn/_build/html/src.finn.transformation.streamline.html delete mode 100644 docs/finn/_build/html/src.finn.util.html delete mode 100644 docs/finn/_build/html/src.html diff --git a/docs/finn/_build/doctrees/environment.pickle b/docs/finn/_build/doctrees/environment.pickle index 51e2174164b9d812a1605a0513facd9b57694f72..dba4d47e1c9b2a4634a95e9da9d46e13cda6f0f5 100644 GIT binary patch literal 133135 zcmd753AiLzeIGiKMzil)MjPm&b+p{Rl13Ws%PgAF?4y|x5-_5v?yh^gdwNqZGjjpq z2phpT<uEagmuG)C_}RuGkPu_z;E*^E8wVcwa7ajS6qE4T2?lTEIl&J<9Q^)EEoZB$ zbLw`F(Wmd;xmD-<{_FXl|5@sszq9;<%a&cT4F3zZ40`oO=UmC}oN4sCownZ@j)P6R zMvYeOY2nca#&^6jetEntxXkPI#z%rRwQhCT_x)O<KMwAgJKOD_9`wAbKR4g#bmrjY zfd5slAQC>n(t~lZV$iQrrE60wL7{55Gv8Pk2kS%bqQ6({<`*$LtGj3Xe!o!z=$FUA z<pX~>BKG`qL%%a<bUTCbi{nJdbHkE18g_x5u@|iD^}9{K3i2-ByZ^|Maj?4D?Jf2j z3w3yO(|z~cchB83Zz|0^*B<q|3$4-JGY3jD$NXWxF?+D<caXgm09NmU25!hMw_)hF zdo6G156V4nSVxxDl;dZ>$|nC@wKb~w_<HE~iR*2_3f3MlcCtQdR|ch81^!*ybE14= z*zNmcKUh;Awp-<4-EaF~HC9%+Kdi-%=>1^m4I9;jblV#Mkuqu_xV+J+`RB&L2ER9| zl&gb5dA`vCZ32rMsIv5EJw0j)h1L(cqkh#d4@UFz4ZvAj?Y3H=R8oDg_GrK6_x;+Q z2B;Z~b{uqF>JQMx`u<?pA617Vcs&GjjR(Q{&ZrG$FVA=TZEr~KwsOE&ps*ACubErX zi=Y@(90x1+HWo_s=<=agX~C0KC-FBuT2t-T{MkyYTRjc+4>bnEMrQ%vjDi(syw-@E zW?TL0`qtnw@c;3V_m1n=)vvGb#(!K>zcyHo;^O0ACAb;7(>Pc*ruV_hzTfh_fj_SA z=LeUAUwMo1pR4K5@_c(ZKEef7wY<*4$XoEE2Wx>dujQAaJ&?jz^5288#}%$&Da%nk zGEK)rTVMT-ez!Y(x%7_c-OKL)9lp%G)wk8}AcXoo_4^rWV`wJ713CdMfFF&9^Ro}l z4#1DO$cC^;&+89BSWrJ>+*qIC0_$r2yf<nM%l$4WIuz;}uU0G1k2+*=aIroFkh(tr z)xM8wZNdWWZfyjDBJc5w*Fj5agRQ&6PIu^+`~Ez5N(WsD1IhS&NOVx|o-K1b8$=H` z^cEK|QVq(3;Ue*}7mc)~4sExE?Kf5#ST5u`lyY-YrrTpLjRd`+{<=EhY>b*_xdNeu z>_yMlpZ5J;`K;IPfCgh`HV;O<9(eO0dGlgO>}rsk+E=;SZMVCfGL*ws0`CcM4K#(a z-)pqG3z0tQ5d<dT(H2q^hEQlS<@uHev_s`?=z$Ks{vx#Hw$}jfytD@%i2fU_>p*k{ z1yOh(A31{0Ht{ndIKB*TuyEV!^uRL*<xw9To)K1c8pB?rdU|nuo(gRU|1LKcIv9Rl z<hm=k)ke0tB5cIaaN%F&n%{$fckmK|tUp+Ph_N?91Fx5%Km`Jk*J?$zH`8<fCD2n8 z210JuMm3;OMB=X*wgzQrnT`3y=+RnyR0Rj>4+oJTYX_jC;Y%ZMvsiOmglA=symuU2 z_R=0`&!oO9#rI)!#x}7nSRFMvYO|L%J&50{sGGx9^CI?<piKyL6xI9@<E^LoT7iH; z4Y<CQ^-fQt*s|}bRn#dj3zp+^3OsA51V{M#r|O?VYi&uMl?5lJcVYR)5Sm4OE0<qO z<-@)T;u{rYh9X(ObNtSj-*8s|473`9y5Ap1HNq|;?j!5ha`}w}4}EZF*qCoXg<$2V zbGp+#8v!!?L6y3x`WLv?DylVV)W-0HRL-ndu}2?s{0jKd0+jNjM<I88KklePk0QKY z7n?}fgVBrno%OqzBC9RxX{AB|Yh&20hW>gPgEHs%7}AQc&Ba9rkS>6ddm?>k-DPNz z(2^pLzLNNAd*So)*+vZ;#4@hM(ol?pmWMrCqtj}10G5ozuSWyF%-!_+`0*yfgruk1 zZ%`0J9a05;1L+dPj0$8rV7>6oW~y_x-@r}~12Xg?Yan@Pyd4UAEhbpMrG9G|1F5Gc zzl#zFez8S(Avhn$Gk!<T7hHi!)yxdUtr5m*NI{_cWQ<Kz4y5i6%fsB#oa9K6el-C= zjO;=iC(`Ta$-H-_0m6q5>vz{@>21AKpW}brR==IgZ=~`N3HzQb-&G6^DN=dVt3l2N z-5d4c+y&6v0r+DDx=HLK=`mM=o({Cz?RYJKL>Gu&UqQ7vMx!MgRSHB@mEU0}+4CXo z0pp(rH@Nh(p9-Nl3lm*{s)Z`-wHm|FH_kIF`~oxCGI!|Uw^ZXwW*xgzeu1Q-msj&k z%H{BRoX;&U4IwvU1ZEXk0mttQe6L@vW4<FWgsm#78(M}L5<$Zk3`f47B;Fyjv4;S& z+=GQL*v{zSm@`HSX4$%<VQ&N-YMkR-PB~7<Jv%OR#E@P<f&kedb_T>dn~!@e?2w{l z_R`W!SUFT4iJT-CvLO6YZ4*qEl~sn2(Z`4iEd%0ssC3K$YaBIzt;8lQDs~yzDMxx{ zJn9S~UBc|TAN6xo;r=qVad;T|19a`fdK1DAjXZ+4)Q7{~;E}nxYOT{8l&Y=ns0JxT z-!Fk?<~%4k*J@M-b78Hy`$`X%9+;!C%dpfOJPDeI4*2nt{tL4^51*JleE3lLnUjYP zb^GwIP*>EqBSlpe8zNT17>9l3rKh%mx1YLW?6WE2%C*J-hD?jpp<a6GEm-Kqs89^V z+(a>8<AM*Pr*lKhw$RAq_XR7%N7R>Yir!<MP2uQ$&9}ffm@=T~-3Ys+^YQa7(Q_O( zhU2lYBe*Vpm9+bz*N3N=25@{|hnhPFF1dg~Jy_L4Wy2Froi_5@C`3~BP`@Ksg@fo4 zmWoEEx4fxz>Zy0UER99!fifP2#A5`pd^q;V!PYQ7$4Pp!iJ!nA9(;$wP?*JC&o8iX z^S|1V=|e1SjoO_s{|mXrBIh88MQP!+Tz=T?wfr-Fs~nElaFD@S=apPQ4S&Q>h$(b{ zmv$hgqeZUZYV-=jDWrtZsnV+r{0atOGzx$)K##BH$3hs6I(e}cXuI0-1{j^`@g{6@ zkegIbD~avq<V7Ec{SdPcUP4ubH^WBThqx1pD!jlc5ljdVUanU0I#uZTAo$RWYZ5Bq zi-e8f(zm`LH05eAZP=?ovjHbrj!pvOcj{%)->&x#UJ@C8J(f<C%38Z(05)m)au3$r z2n~Rn-e&N)MrXc@69d#`NB+p9Ae+3t`O8o`xbbMmp8>Z086gFk>CVr@6DsQuHwIO| z1=%GiXAt}2mWYDxf19FLno*+{M*oR<PK1T#6OJj_zE?#69gxf)dW{x1%_#IFtUrug zwpzzNJy?0?<FoI&>8`hhO?W*O>G)?+VtBoL)PW%!H}5Ox9d_Pv=Mj%EkS;-oqa3MI z;e_`bOy0nda5#*IFI%g<9{1<^kdf+arUJDx%o9<D2OLGQ=1P1;BXHB(t3c;qe81I$ zDAuWkqj4A`1gqmW6eX{S|BMPkKs?g?au_JDOkUUgGcaslplOlI{mv{{IxcoiQY<7F zjdFrZ?oEnqNQ!ad76S-$PFFxnFoS?ob>#1}3BaZV0E*G*)dbP^+c?P}zu%hF<xzUn zGS9~l*Cs{UjSkG&_1onZL~}^t6O{-W8$cL@mR}o;>z|E51Ri;YM|`<4p%A9RtEovp z1C~m}ygn&~lUguq(<$?a3w$TxM9_L%j3*3UOt7v_ut;o3csMuMI5!&f=PHfPT)i<G zHd;v)K~pg<*V!D`iC!eNW)ecso8z=x8JYx4Z$g4R>~>+e!+~iNI1)RiGCbalu}Xdu zti-qn5sDi(<z-aDka;FAF~&w&U6{0Od<h0O*ccR=o5JTbS4A^XVTE<!3m%IHmv<o1 zKNF>g;yW$x*^IdZ^*PX}A#uei_RF~s;xKY0766&bZJ#DYz=0rv3)Xn8Ufrws&<}_4 z=BlV*G!+*amvOeLuZ0YZqQ~`d0hpnO00JXHbR`dGVWaVF!VJutLR#8`QCbpYNET#u zxY+Yy<p5p<s}l_7<LZb^I9Jwy3B^8)MWe(idfn*2`~nPM0FSweg6C*d3D$FR2UC2& z9(KLK719&*rM?Gwaj*jN4rJtrFr~jCTserlq?O0Q+5UL#AX<v3uf}=OU=?t|6O`|V zymV7I8;V{{OBv(fD)kYh%s2;qo&J0Tai9%;09lOqlBYpIV{3({V*@a?zTi%w6!B03 zfja}99*3w~0;Tz08~dekun`hEXjPDE!hp5aJv$Dr)v9~Y@)idTU?7_Izb&;)X}-7M z!T8r>u-mnQ)ksLC<c(TMnd@<IcTNcfkkWc`RmiSkJPti{q{s{4C-KxgPR@mEASF%~ zV0?pqb4}<A@xwYy#KRo*5MORpUpB(23V0VSj>Q#W?F$}Xt5j)vXFQ&YAum<l;-F`I z@KUfcue3#Ay+v3%>R=6(3@(ru9uI~!e7u5j#s?o71y_chDryHB2TwnY&j(wi=P(!o zKRpjq;a!|1#>_WZ1>)mO5dHyb!?*)U49=#*oF8cBd~g+v4ZYK4AF8y<kmBGJH)I>{ z3)b~u797JSb*I5hG@?9v_H2oTDs}q{a}d<$pyXf<R+6wrJi(6*bzOhHDq!3YVNkbF zYWTx>!oc{C^|7>6e?y}q4fX3U1{<LLQV&`_hb;uPfJ2eNs3JdIQ}<vEgT^Y5oCjA^ z#{pV_8DnTu(0;I^s)3wWh*QAP(hRJN(OOacvLJ5(BUm5Ju7Yh~x~=}%U>!l0qp9do zunOkBDg2Qcv^KnN=U2yn{>|5}{0D*72>8{1KK_NME%Srlf1n~q7k>P;6^|G~8o&E5 z*S?w+E4a`%e)D62ZLr`P-+aDih-?%xslc~Z{-<wc#!fD^^=<zluns<4W%k3ng4`&? zMIZR~=N-cl*W0(wcM8v3>)F5mPYo)eV9y0!{k`8d_Za;8y$8SE+;!=)W%Soy-u&>l zM*%F#;ZPptyl{M4zc*MLrUo#&$0b)@nt+xLLH{xgc^??RXMB9Tt=R+|?C9<;mFD1o zT!X80yQg{GewI_rS&aR&{y7g;ul>^C%)<CWvlZ663Mw_)3)C;oLLXf{UFyM*|3b49 z7PyXqVZEQq%#~qW1AToNVg!`xhNW&+N=04N93;}X2)2mDgVa(YXi!SSf@la!MCGu@ z>R<xRT=YUNo=U4Jc7k(tSXvq^!ulq}qCpuJ<6x#AV+OH!j}?T(?+&XfI;{)MmqNa0 z6a;KtbKOn{W}MFXRpRSTQxSYSg7J``5h{F>sc;{b)L^AHMl=`V0ajdS-yGzgbJ!<& zIH5Sl9mDq0j=2HMPR>GNeHy38iCO0O=#e8Yl#f4ssC;jEM;QmkmHUXNnN%bg#<!`+ zjV87+cflkzy@X^8)x}7axJ=SI+lO(C-$$Ga&3>qP)pl_<G{;F9bgfbH1idfxK#`wl z_K4D`Iht`B*1_KOZmULYKdA~97nU3|CJD<-Js4O)&pNEu3n9$IxMUGVgbBhfJ08H) zXJEDv<)prO!SDEe4_2UvjayPdZ~_7N=XSm=wb;2%x8Ljbs@+j%NQn2R7L`;pgsHwE zEdRn>Tn;0WH{6)&bY6wqRj$unXbwVO!T8Gm_ZBe}!8B#J4=uv@??P77?S8MFdL*G; zy=_XqqP9frALm4)l8WxL6END!K><IQveT$6VKkP)&<#on5)D%62Km&5=1}&SxbKul zP;>JTA28pCZWqSAq>eijWTl2=XH^SIS!(*w+}b#t^k7?8hhymELb}?_6$UtTv`8+s zTUCly8jvM;edH7)1XamxnL!RHOoBrMj10&6oz2!SR~gj39;X&TegIM3Jf*`Kg)ZS@ z;0Lmq72DEW6?U<8Mm^HpV-EG&-f7sbxY&6K=VqJE)p0}wb}n~%Fd@Oc_&x{fRhamI z{3YsQaoStxW7W=CaT-Z}sbxIj!a^uPqX&s#)ZMCyWEN!}bC%T}>d`_xfG)`flWU}p zJMcly03(rBcM(_QoV@`uYfh{iy-1MV4&*WSfZ;nv0nE`UgW+cTpaY8BRk)Y|##NLa z)3zEC-l+w`YBg+|pn5J!XN}2C(8Yn17F_E$K!3zQZt%R&JX0Vd<;ayxWWtaEmJNF_ zxzvY&EpERdwzg;6QK;YdY4)6IJ#1Zz7F57}DE+3oIk8Zr2stTCy+(;UJDx)qm#gwX z&2^NhBJko>2Hk#z1h@#DT){*lr<x#+7@RLO&&t^m7&j${7N3(Y)V`MTF6=y@<EWm7 zv08d5v9q93s<{YDWHh*5aXTu3qjIYM5Wj_=mA-!lW}9KZYUfP3HD8?ryTTj^F3Qlx zKG=nW<Ilm|p}o7Q>h{!8i9D#TG=`wWNUQ<`Plf~wRNZ~#jYY*g5mGhk4>vy>^-p<I zl&n#SyexYM`BC#h{<V{S!BlLcL*HQ3#?5!YqvpHd2Tqj*>tTzP@4=FL>#Vmp7{jC) zO~PFWR<&U}0a6ZYyc22!%fpE`s=9)vo@tJqCfsO}8r@+~qFE?dh@lerZ3KT`v%2q{ z<>e7v*;-Yt!{;-w&kGj$o8Ke&ld$ZC^Lkg)D)H>h)1BJvusaLCX7=K;&wIuM)LeEM zFq2j&SV8*)hU4b<0d!RHV68FPP=G4}mo;Dw8z#F~(mEyWGJqvd+P@D^SHXVR<c|up zA=;huB79k~a_GT=B7UO~iZ-e=PXm$W|ArqdB=J_?-@F7^1i6+YryKY2dc@3$aFIun zLwnm?1C^TB!Vh4+xfXr{)6Mnp8vr-*ug(1H3jTE!{Tem5!tdra@B{e5xy&5C_|qVX z8GghZ+)hBnIcVo|u=WJ)%ADB^u|T%2^oIF)V2S+T<ZX^d*5LyDOgMojGbF!aj&?7R zBb+GC;pi&ls1(f{n^{XK!#qB_L>_S(IfuuaBp#&|PBX(c6`1?-61m68<Q(od6ZaTt z&CD9!GjHuB@`lr`IlRFF9#}t~e>F3>RVZ`{7Uttp%;r0m$R^J8<*<3PzyUB|;Q_Y@ zHIQd>6&B$95(U7CryK#UCwAo2GghM%ATvuczdyM|esNYLhu>`me$6VBn76OSlKkQl zCBe~DjwH94BuTPlvk`17u@s+Nq7;~#=SaaZ0+Syz!-n_F+yAvh-p=Lo#yeakKj25q z!S61S16;Gs(axI3I^7w{1)q@mR7jI3)%lvtLgD<3^Pj&4hDMc9u%^|8y^Qz;PLiWi zO2{c2=2x5~VV={ZWCb$}TH|eE&ra*OP3%9L)Cpo=M5~icjQq4(*2LgSYavaHQZ&ci z#P;8$MvU!;rWBg!gEYo#qQ#qJHq<<2+f7mcd{hTp#c;0#rPG`eudR&WlVkp*BTl51 z9FubA)%ejz8I~X0DaC?~;T|2>?h@wbo1+g#AYt|vU?s4gQkQvI9q&>}D@NIFT3#-C zU~@IfPR74{xoe(_qZ!_52^(2f08^uWW6VR4HN4A}a`gIsPKX16Zzj3SnPiA$P#7cr ze;`hgWF0=ZjLpVK-zkbDc}g@c`Cou$9GCo6%8PByze#!1Tn<_@V&#u<nlk{(^4;&O zd$YN5*aZVS`rJS=ck?Qsz_jjlrWFpMZipdD1kp^><F;m+B8%$rhG)8GXNKJw_!4CX zcH_>_NEq8G%%b+C=ow@eWfh!oR)M9ugV)^*U)$m695|f?PG_+rpN%;UHJKRWm@_Au zF%B1nxEU(4J`NDX#I3gOxc}0q0UPmYudW#B0{Inlan@N7TdS<Uxi4~}Sz+i*S+l}R zMIo%MP&f!(eSFlxIYw?Zjn2#-*ygP^o3uh~nxAo&&ek+rZ|*a9+)^5yS=iKx+-XMo zDQ6xuBYlt{E@IqzGMeM^Iy2Ng<GBN8{2ADB+iK0grd9Z!3cjH0_OOY}z@Pp(*mndU zm_=VtOO0m9Xl%^SI4jcDm`~k|A4r0$&3c_#LEc%CcNXM@ZHBSDv+$=XuV(d6J2R_U z{ZmCDlBW4dcAQCfYp;u1CiZCuMzCYf@6W{hGUa|Pr!1TH>&~Lun)dZ^JH=kD$-K@c zylRH~nlme!;a)2WF?GY;C>jpeDP{&E7-h`BxjwJ~y|pNtF1IurZ~5h}>9VcyW+dYw zzq7>eY|O7_zDt~$(aiV#A6WC<l48CQelI(7!0*5U;Xt;bT@^OuHfP=08uHdOLlWn+ z&5(1=nzuT0q*?Q(q7Z6h^xYS4?gUR_)p8GB03zXnlidOk2^T#6DFBghaaYmCfm}oj zS!n~X)J(o`4yiASHB0g6we9R0W`D=UxxCS9)0vj$$qNLLngvc?dF!9Ad&8N=fD-U0 z<+!4}V=oV!g|t*?u>R(=z{_l7K<T!gWS@7Ytf}|a9QFQh@Ece&=JO%b=FIHZcaw!} za-WruI@7@oFOIhz(La%V6~08%KCHrr()XFK!a<Ac!p#BEffC!AzXpOee;t2(8h-e& z8NfRi9v*cmteSg#F4K`<`9iB(fsfHv)EhPUOb4dp)`wW(gY&^EJ|O@;Iy(p+&(pEp z4&)8zS)GY~;Nw4942CaaQjgD^qmR1zl*Q%rZRo*k*^z#MY*ApbI*D~`&LzdVA6_~a z+-8@=MQtfuK*XiF@QW95rKNsx7}$I)4!qxX7RekZP_(?j`=`#dw8-!+f=Ca%zYOn< zbE!q50m&ppgCmBoAzy`q{M2^dymG~|WpKV<+_(??4g5FZ_TBt#5ViR^_>py#uJF+` zHSXrWh6)FlbJM;Y*eo)+-b|V{+ha+M>KnjOVJ@Ii(e9Ir*Qn&}DpIRD5VxvFoi%H2 zRVZ6tt9r<pme#5sAc)jfl|C6?I2l}fVpNGf=aaJ;=?(koo1G=J)Ml{mX86)O<|EWg zGPVA^Ght1&C$m-CoM^xzcM$>>q%RrgIbhC`ay$jT$~vI}-{*cTZN|s7{INMZdIfaV z{9*j@9{llM{Ba(Bh<Q?OC_V3<DhZ*ql%638p_I?nz!MiZo~~p+?E|lcBN;=myDTZ5 zK1*Dr4nc~ppKUx$$1%^qXA^iBjWV~Py=8Ge;;a$-mdnR^qzpoS!I`kuaz9)YA{n8x zDGFFK>0miD7l25(xUZ-n;XDCtro4C^Y|5rfsi%D*?rFd7ES%ZHP{_QV_G`|xG^cuv zAbwzb+P`s@&{CUuJ?&pR6V_DwSJ|qaY)?z>BJ{LJtj{?y4j67*={R6mS}*sYLoXNY zkQRmyVRyF`m|kLc$2MD1bo)y-`=r;^)<A;FJ&e-Ri7&X5+vBVU+eWh%)6<BH(BYHp zbf+_2t<5}96e8(erlkMZ(e~BY`J#heW>_2YkRhimTdD3Ws;!k?f3uK^#9tJYB9`?T zQs0>s&2W{X5K}iCZ-tHxhsRYYr|1}Mc&BV{u68OsYvxp$HdaOz*`R^53TzE}huNS8 zQFPm$cjij7?W;v0tZiF(*si7dVpbMtZ`n|vaF)l`P*)iZr5okr&Kzh)`6xl8CT<fS zZrv7cSEO^<XJGG7)S_S?{9r))esBk)90+YIv0c9GtQA|k+#YRVB<^u1PsBZ(;WU7S zBiOcs?OnIjmz;UhEcL~r5J~g-d{KyG+{XSgfy|}=M8X9RHwr)`y7+3*%sd=D(hmQN zH+r=B0!|EC&G~pJc{N<5<Cf2w+XG6RH<Y}>nU?0~n+PH`BBf8-7M%eSGhb1Kf%t+$ z%LC5hS*kL~PKobxrmLxSt|&y(WbS6mOnON2h@2uxXAGpBG8m;ylD!_!20F#(6`sNa z3r`6r7DiZX;x{?#$=1Y=8hdr=E4)&gyn2uFMrS@XmpD-rV(Kn&PlhGsBOoK=Nse%D zcJ*}QzwE3LTjSqrVSHIK-Q;g~=1w#D*`g3rH@TK%OBU7Ma%26lvpBZ)x+&jYx`96A z%#LQDpD7BV8mK^Wl;l_32N!@yxL99QkTAcZ5AiQver5P*Uv$9cFixjla~90(b0}b5 zI`vg&TAD+Bg&=+~)2Y957SB?ZIqB42I@8tE`ag?8BrW8Buw^ElPF+i#A0AIpiVgxY zc9I$8IJmxU^<>5knxhBTNx@ZORS&AyIkTY|Yim)6sT(Ui)&h-XIELD2H$KaNlonQz zrxT+}Y{Z?;qT4pHTXiEEM9}T|gfmB)Js&L!F?D<Llsy>-CeP#JvLl;_T}qHsmhI;| zi)w2>d3s-CSvOq8nH9}&<)RQ%H{5ke)QpdeH(HI)b0KwMK^RNG@$pefw%K`SDQ#_b zz24?xZgqpb>dc2`upcf8F?EC8kQgky&rCE#T0`TaCZm1aSyEf0y-qipz_D(&k2-Ur zne8J*Aug)flB*P=_LFKhDrz#@mz^bDirEs5b+diRnG?-yUn~kSb+c*XZ^=^HTaJU@ zaTdqcHk-93rQ72#oT+Q}_;yhU)gA>#(#c?)M{oro5-z@6bhHu<#_8m_i#HgzImNE| z?s!CAS~Hn}3QCzbBEQR-mgZI42%^A<yzuh2wD(+UxzZbMwTGQ0G`Ct!n|XWX4mcCm zRJ$)*wUgZ|M*>QF<*cvfGH#X|0`pE^*DP(b+(QnV<>CV+_1$uQQL7~Zj;*$&0Jnz? zKk2y?aRpFnH{uI!Hb3sH2is<oy)^iKXS!Oe35r4_9n6&UFP{2|hknYpLK(BhTX|eS zcSF%Zq2@Ylv`;xpZfi7Ub|kv0N|8X%T0ZH_k!H?M6or_&IbSc>2F)2=cV#r>jY45E zq*|Iy_?ok{wkEt$PBLQ?MttbT`>Hc9n(@9;6k_Ve<2Bi&C*U(z;ZzWuWyZS^<7;P( z=HxY5u1@C6ug?blzOzPb4J@z8+DN9G{Cm#aX(s<}QHZIVoHrdMiV^RfGa6Yu*O`oL zs=;QxY3-Df_Tc7}b}RCt8}deHel$bgP!wY7hSUb=QZl2xWee?f7RR>XU2V3IZj{~5 zENDh~swjkNlmhu_lH&51uK+~C#jQodL^y`0W7#j>7+wqospqweZrHpK59oi$*=A<X zLy_|a^zU@0rMcK5K@=F!UxXctA95DYQk6MN>_6j7S5xax6@^IJ%m>*rlO7g6CZwjS zZ<kW<el_-(yk}8Ji=^$3xmX;jKkKY1TO&Vij@0s|#Z)f!fc~4#oN8|InW7L=cZ-L! z+#*hQrHf*XKJlo4Ls^vM6DrUtzMeQjVvqQSvyyB*;t?B<P<dn)b$9qfXErr=_<B)@ z9}sttZYz$ADE5nir8|T`Mt4}VZZgTX)}aP&?jQ-PyTeLnHZ^xxUKC>L?r^uzs<lod zzHZa#0rXK(c&m>d5VX1+0!q%BunhsTHX$J9N;mUe&YWpx-c}T1>SiuwnmM_E-Dqe& zfF&&(5H81!YO|@2J8Q$%)N@v*PNdR}ebkvZ&De*ELQLJ*+Q?Z7+}c~V)){AUY^{|x z^C9LBx`hVL{Ad>H6@^eORA7Xh46=C~RsbU5;!M$OA{=DX)nONJkezwCnCOem55<G) zf8uN_v-_c_d4ubZIn&Zy>mL$Cfx-2~SuOvPvxJt~%v&x0qBCJlwV%&c?POQW$z6oi zayY~7ZtdtX`9eKulnH069SQEttHA>gI_TAW7Tb3~=H~wkKQ7|oYmYmuv@06W&SLvU zQL`sulFh!PF!?$5oJr5Ch^y*i^fG*jd)4~MjA*ndmNT!l#hI?w>^2sKNV=&h>7R2~ z#RV(guv+hQ`|UDZ3GdBAdh18or(`2uA55!!3TmHHs&hK@u(LXBBdDCbrg4^trKd(a zoO#o%y}c;J)UC}&)2M1`^tvstk4nMyGNYw=Bx|n7b{4C$m0xsLgRPbCl7=W|t|D=C z3%}W!FU`Ww7loL*h3}xTsG^ejZmU*?Dcix&gX1oZ1~z&I)`KsN)QW80SDbZVYu-Dv z%qz>HTlZbgY-!egM^T8WTbEbo73(he9l!6jjApf|z~=l#XQ6G)DGyQ2%<Fdid1rn! zJN{fzh^gDr*xDMMdB0zdKHxMr)4NQ~n<}2tYqDX#;H(8(!)AtIMH=0}zvIl8X5il{ z3Ndv9-=1ox@}TbZe6w|pcW;N*m8-F7|IAr_ThngK3c+kzW=OZ|A3HOp+4YZ#LRj0i z@JxX=!6zle+FQ2M<_*&txyWA!%CS{9%?4*aG}Ejlh}5~6i60(!>%LK=2G`tnXYc^F z_})%gQsrDz%Q|eE`<!)R+lFqtc>#IH`)@<uX;EiZ<vrAKavJKKGfSG8?k)<Ew4ghR zLL}1;>?{+Qb|?UmaKY1w1t1b#{L)gUVBlg8y6OGm%@G^>5phKTPF}2@_7;5U%*E!% z;tAuk&bBu<3Y0r<!g%OROY`=Z2qHBo{jHuK_Y=<IS*kK;*6IV!bTzeJC<>7@oF8M$ zOnTOk7ft0rDoq`isx9B^jC#gFk#lYCDSpFQ9k!OdCo9_$+ifJ4-nIX_Gjp1`f3+yY z)Xn{XDVvt{0w-_4IJn&C!B3;nci3W_l0n$^|HWB1wzl74Z+lTj-2?u!GmDxB{9aLr zse8afw$=mV4d4dBYTf7ryj?FdZm^Qk31l4hgG)C~CX?4X#^B)se!v{+uJAWS?RZ0c zwd`LPg_yc4SU2Qyr?)t0w2hANpshc_dF>JkyTNT!bAtz+-GKSio#19?9<_KdQxszA zPGHf6ciX*2%e-#oT$`<az*!x(oq$6Ez+&m<-sjAmX6`*jA*OC_-ZGyZw>xmD!4Ow{ z@Ic*`x9IoHlWb2}G=0M2buB<UrNFT_bey$i>kUsh!~lcTx^J9zW>xczdQpg}`^L_E zd-i>A=+pc-ezaQ7{%Uo%B_2<>Bj70=kzM4+ot0+mBD?HeBu#kTP2TU!uI45|QHZI# zNq*V@Eq$=q8P?_eUz*>|Pa7f-<0#@&&f2l{2m7=kVvwcOo#2zsJZetxiJ}lwcLF|l zKC2&TbOzLoB>S6<`6GXzkq-oYh>pa;;WcM1**b%K>U=(vB9FR5eASsx%^|*06k_TQ zk>8-(-f8GM{9dcO*oMnOjoy$yIz<%dFf<r;h3`A-$JP}dvhF7oIdwnyo->o0AAGkc z#MJ%3&VuFMV&|oDt>1uD)948K@r4}$aljoUAa;eDHvR2SFpw(<qUyeIqcfM9FWgWR zV(Pw-pD82?>h-%#qbJxo6l9L%2_g*p!Cq(e*oFlAR6!O~_k!KdJZfI>R8fejdqMu3 z^S~d{Nx)@1_SxtJ`MnEZ@DZn{Boy|6rn7QveZYRwSrSrrfdyw4H5aHAg_ybvSeTE- z3lu8FCM=B^^5>js)R7(v{+_dfY~8><JK%v)EU4}Xf7h8w%@N*L6k_U*zz11nCDQSy zuf{k~pgu={UvXB6t?BQxP7Gtwbff<hXZAFsf2=6P)Qzs~<&s*p_LdFyADzXqHCX13 zJaH{lH`Bj&W=b>Dzby)(nyJ7xoMa~t@AD`Ck#Nx|x~_#>z)qesu%jh)qe<%Sx5C>E z`Q{HL@+4opnfLMhM!b(_<L1eXCQ$0UeLU-&X=z@znjliu`?tD}r{pZ2xn*mr%-P3t zmor^Wt=o!1B+celw#=mW@fbfVO5D5TRR-OD#n`91Rpsb>+*uK}Hk8lDNNum7KzfKi z>dcvD<wHdwrfy|p9xYh8+HJMG-oS@jI(xWMQ!^UeIHES7;ANjO3>*K9vwm!ipP5D* zIE)$8{b1nCq~-^`q7YN}13uFxy>ayYZoif?v*uWrP5ys4tHRdgrL6Q>FnK7FZs?zM zW=%8nxG2Qb4Q-r36SdMEb!z2d9d19Z!zYI3b^5%h(MJ$iU(rz5_W#mZJGQpZoIuNv zQg?!X?#!d+1pllk#MGT&yJ;O=P|u*T(828*WI$uYH%`GR2)s!{!eIOVfwN+4?SH>z z+m{5?jsIVr8Ptsb`$Zw9ZhUQcY%_RXv1Ll5mEblzlj%mf%$X(4NXv>ss75L<?oEcy zJhUnRk#Mo1sJDef=d%}g=*-vqj)skvd6fM5c$EC4vxUr|0tL()B|qj&OLM4)3E~HH zl>Am_@hnxDGfIAoGhI!sFBFAHTF7&3nMse5ucn?9J-Jlz295aYNhzkL72@9T-Oj?< z+GVR0S`#MqSo%ZGJZLt0XHkf$+lX&=CGqhKe%KLMJ&j+h!rI`dC4XlZ@SP}eS=>G- z6=swDlC!L~CX=s$jroY!&@K0WI<ul#?jIC|xR{m`r_qg;6Rd11%ZB^Eokd-O;Y2oc z!~JV#Ry4!?c2S6_8}6zkEaHv0MuVl4VMG17vuL)4l5e}97KSY92Kp0c7BmBWvna&H zG|<o=n77Ue1`^A#fwo*RnE`>8m<0v{A$i?E8=YCu479E&#MBK`Xq2|YSsdF|BVX}~ ztwy)Uc4z9EJ?<$Aq1vOsXet?yaTZ?yBH?03(Uu<$$j)8d0oihl*Yb%2|1lneb)Ai3 z_9~PqZw%IQrlt8%gCJ7JV3R#Zm1GjmQ9TlDQV&Iiqf)(KU87TNjcWcpeD^jOzc_A= zflKjv(Syr_l~u1dY;-$tvg-1MR<|-fAFQZ1YBj$D|5_gc#1B?=M(v8<_iN*WpjG&; z7J$2**5delsFB~k9G1gB2S0*)?M^)9e0U&SD!QCw{d<ZUC23M@6sIQj!Hvr<S%&{L zx1uX1ZEJoh?7%*OU72m`mqBB9yfS`yysfzm=+^f)FM(fRv9<6EpZ<6L^N;w~xA@ne z@UK6kU%?9aj0rZRkBL+uxQFHk!78|f0rs8`>*L9Lz(-;axHa7aQmy_gikkD~4ju1* zf)YlRQLu5?t(L({%b<#W1Kb|9*97Gsyrg*=f30e^@YkiyHb3m(ugjWU{I#;#!(W#- zU&3Fjn|Qr1RKP1Q;1`|~dvGnC-EwdXZTx_Tm`cDeY?43$t$c9VDA<5p4E!oL7i5AT z&BGiwwIF)52}%w7zF!WT88eIQy$DSI8Y=SF@yDm(hfn;1M_joA+He!O#zL>aU(FxJ zAMe2*@5LYI;fGHGLGjyGVsR7%{-EoHNe--=oP$j4!+VMkB*cs3QLu^P22RQM{mQ7( zs*x^{t@lH1Wb*>?m;8l{CVwHP_!o66sO<~HE<Qr`FA(3!UnoHG7fO=+g(4+?p-lJ} z+Ux=eg@2)p7f2}l3ypPwPI-?18U^by!ht}f^}+c4<6v_X(4?npYTdTi=-|K|WezT> z(yx`>O4F|n(M-+VfRC15U9Eea1s}G>a*^;)vB;`wW9U(g1+1_l)C(VyC#;YD0#(oB zlTmP4wbvuawf$~)SRO34E8W((`3%qvR-E9!J}?f0#v1VcBf)AoU8*xY+CSQZXucuZ zr+3Wjd+h-{Sr<Lo*<ZlF*Vg<hob$@89SK&}y48-?_TkOO#^AUwzC9nTE?4W|0uW)K zBMH`*y-v5YJ9z>TZZq&8DCW{8yYqLUMT7gV44b^DnB{E`LJ%q?EVRDv4a)vYBVviG zW79oPE%!XR+<9sT=gEW4lLwrqMth#x?0NEn^VDL`lMkGy_IjS0>v?Le=gA?@lbb`g z6&do<-lD+Dwt%w}q7$qLXKh{`2RyCjb-WgwB`_!ryKq)+cVTf%tTb=Aa@jH{#JjY# zLM5-&Di8e*>|q&{=eOU-m4a3CqfV9l1FG`6wqA7sHkbF{I7qHuo(KJpz!QnAj4(sP zU>%_WUqQpc&0gPB>Hd^T9oWha;i(6-;1_If??D6bYh_xPHvzpt27(V`8uN?g@cvLl z3we%I#pg}O+#1T4!e>HdS>W{&NoFd7=S9aDUYs2%!IzKFtndR*Sa&YNXs-eOh^Y`c zRD^IyLYEH}N<+wjmf7bMdd)0mF~<8}Z0f-!%es6r6W66nDXU`(6|8pqeknScbWBYz z(ih)HAr&a?fk1k4vFCHi;Bp8%g8`(dL3q2Yh!z(v?b?52=kYg%byj;r=+7&op^x># zn<dlg9Xonx=W+Lndk-Dmc@mo?cK?A)k^R~%R%!o{llSg0R^!H)Ud>D_uhw=WtvnV} zB+DaqzmZs8t%r=YGVONq>Eo#e&vcaM()FLI6Rc-8KyEd&1#-DeF+nalvkh{q6)*yH zQQfmJzT-BqqU{gs-5NHzTl9vXG}TIDc(zf4&RnY&UKws~so1Gu42>d588&n15FEo( z+7Louy5H*#28~L~FQ4&RBkW|T4Ga8-myf42GH8SB&<n&+ItKUaDV#w6+UN}7)G>ny z;YIdl;xHJ~NoCh)KqsXNnCX1D_rzpXUcexU{BwR4!mHR<Gm$8=3mP<(Eg7DLOiBq3 zCs0HYvMRrIw(s>Iv5`p$aY8IqI*c`*7i$Qe3GV>bkflncsK3<p_jKamsWeN~x?eqA zPV%_$^ycya@}kCk!=z%~x0b^e<5uA?A4owejaFj_DWz&*!2szTf)sqV|EL{l74p}( z8QWvP2W+)b)r7&BM~+0;Fa<r~$imPng|?k85<)dPaN4ieYP{XV5N`~#U<mZ!VX!HK za6MhYR;EI3!Yn+BTRM_8M^Zko<8WSXAz6q+hj8mK))ot4D2T$b-d!Dv)73nVpotnf zgYX(t41?*`rmu|sc5k@IU(>>M6GQ(T%xkI5!5*#SpXGi5MJm%ES3|Rsi@4S~v1(K> zbcQw%x{i*)XY}Uib>N+el4zk#TQws5aChmA2vH`{h!7{Y5m`CEfRy6=JfzOiY`hCy zx6Bnu$AF8r<ds}1>KSh}lz>aXA(;1lDh_K`IIbiQmU=@WjgGP7o)kyC&Xs6g*+7ZU zxFap-l<0{E9S1c&(aR-nd2yC7`hL3$$pUuzvMz+AR44;OP^G*){uGgiEjXny2RSKI z>L>p;DQk6X8=22A^BE0>-8SCE+a9%GJtNvYKBkGJ$i87_ky5sF7^|L?s|tCEdMCI{ zNvW+EA15`%?)yoW#*UK`CCA`IICd@%VE_(2u!{JU6Cz*rK(j(g=chu3nUp1y<Z{$> z;btMue;|#=?pehRdofE~VcJNC3R`R%RM>XIdQuz6@deqqCV;Jq!u$S01I9g&@1eYr z%Y_+m%wSXsZMvJD!YnUqNMbMS#^QRsJsx(Rp}FvIy7;g=ncg0StMq!M6R>9CwE=QZ z2njRH&~zxmk;#(zoo6S3n$sknp9l?`rt-o>C|Nb37bil>zG)qs2))cE7fuYuo{1O4 z^}4+(e6|D0o#^}O{n=v4(hE@SSXk|_H-y+5HiN|L!o<)>$xuJXzji9B$>GK-=<agF zwDOsKj-dA5!N*vIllahA=BXgl4>GMQBExJvL{n3c+aOCSdyg7lm1vo`NjRewyGc|q z#~)Iwi6JE9T1e9Qimyb6F*UJTS|`odd>JZRIYu}KrweND0jWY``i<!TrWm@=YA+TG zo#`Rr;5p`3TD5`U;F)fV5^7qPg7f|1w!2{$sN*_))PEk8T|{2DNyRAbPSE$`s@Fal zUC8R*Hemv#N(**<SGwoo)j*O*O#aFfCkZRV(!v*NP^9>lNmIlu1Q#xc{WjZ6q^9=d zc6Lv<SqZm3buj5w<$BY^<?3R}h^tc?ty7bx6-~7A@K6=4GHG%cpQxq9)AYKGQz06K zl_)5xlGdjoDeng<gO7qW<HZD(bafh}Lz>CBN~JpSkb|b>M86y^->4)f9&&I8j@JT* zqMeC`ra5ud8oNkU&bLn5pwL5QM%IZtZ+c&@$~y5d+v|G^ZO>p!briGYfDQxC8eYIb zp-2xy6Ys8YzO@W{l7OU6ZQ`8>_KI*Oa20Z1)n*fyOiI91YWHQe1`Zf7{GW$y9B`{b znQn(?mZR)zzdJxOt+03ZA;R5-x6X&ENV4`fPYl{3<H|I#SrI96lqz|-)``gpR`pud z^04h2a;!;HIcucy+~j1*%ox@AB`LtT*(WtuoS?>Fhh<up_{Pa;EIU7(pi75CFCVYF zz%8a))XGd)+{}Zi3SRXNdk;Ao4HtXV(B(}|j{?asHA|t{o-9q=5hKim$7>St(xEDI zbE@>u`i+Hpv|6XzICFU8ZsWX>#>B}ni)s1qgvsR%X)?!A?#i?q%w%S1?nHBkF_Wj4 zZNtnFg}Z#wE_#l7sYApGOBuGp^uggI<9gm0ZGy5{jn34CmnC%bdE>GPwm|z4*#y&= z)UjCRsL!nx<cz{5nEYjqzb2TNf&6JBuL(*sfiV~C743Dqt>R-Y2_PA(9QMu~L)@i| zxon^(Hs-P;mN(|IGp-e_35-+h=%meQ+cgI}8tLN{yM)M!3g*|7Nr>#p(Z`p0v%7X( zsU6YDbfs3bCfJo)(VI+HYDH?&U8xn(C3dA&G$zuOT2Y!nS87LRsa>fRmCUYG-P|Rm zi&6R>PFF-TmbYh(p@lp9<ay5RmbFSJ4|#*(VXuE0x3AOqJ(<x|w_eHYCf5auAQt_o zx>e8$HnSH~_tn@TruA2k7tmcPV+Kv#$Y{k~_FUP4A}k8iMwv5J2bTz*JtwudC^}qt zN&EZKW<&}D=XLe`p>49q#mat^Ls)g{>h36Oc+hjUMs^ocbzWjnh+nG|ppc^Nd*DJ* zBDJqoci&l=EvHv46d5!7&qA>*W6)WM!^}SM`V1$P`?SoS@R>s=qCH$%Kc;TamP{p7 zwCKAY%;2^pLFJ9`GA$z_RbdlbIb6|zt<2$d$l8*|6SkbGc(8;FpEZO^6ZQpWnp$SC z-GhUi$^%$>ZTT2YVU++s5K)%{GLsS!F|)G|zZWrY!jn+aI{5IbC<}!2;pStu>aH!q z*Hw*bxHtr7))<%UGuNd>p)fCij|6>OhXJM6M6HLP$Ea!#zgEf@H#_IBcKzJdH)~h5 z%~-5mRRGM+Qq+ybsUZUq^D+}Bu)J&}Gn*7W#XbYc>=;$Z+^oaiPx3Mi>k!%KfzOF8 z!5n{f*tXfc2?T3}Q7}{wIZ@lEwV1fS2m(kHQP_j^Fl!wkQ*)aKY!#K0&sawuP!Y5v z{$NfQNZpv9+8EOStUI2}T*|uJ$jF~EH!z7!ZP;Ca&a_-@o!0fiiBSAuD4h)i2d=}W zB=`iSjV|KNg9V`n#>2*<iG+vAsQI-@G}V3tkWO}Y3OK?RbB?z~ph|G20-VZ7jEOs} zZ#FX5fHSN-_&~5*#?LQgad^0=@*vkJ;jVeVKitKS`Kz3h-4}!}bwXB>Ne>=`EEzXV z(3?zx;{FlHnP7nHb@1#g(QN#Ugu;(pp|lt3gQ#M4!CD;l91zlY=Tuz*;@%#128vAc zXCda2kx@>JD&Sx>IMD@b3jA_Av#XrOY9_|M#u@)Od{o?RpQJO-j_?r>3LD&yrLbXy zNMnY>PZkpF9`)dim@IaT%{NqjiP+IW(iq|%B7>plI*pe`{t?LH&AQ<Z!X6-v5o5FG zxq@gzfzli}fGU)g8m0Z6dB490zUaWSy+Q!N!FW9Agpnq|jHx*@JG3WD;hw+IHB#o{ z%=(GCXW~0UcD;5Q$5$9QmK(1zM4jw=oxwbG3gJm~N@L+eA{4>oI%y0Ut4dvbwdH%A z5qwoV61p>UT<k5-F)H{yaVe};+Kttp3#$umV2+C!2$2NHhS+&=exe93O8_kiQ&dV+ zWjS~tX<ZqjXU*RyLkTkNGFVsr#7tmCMoW{=7)(>-gTo4GbF^qG7pAzrz?TRp2>OhJ zpedMX;u@o)QQT<iL==_>w>I|V+Oeo2m>?)G!W70!6Vjs9@eG6Ptro40tASWFLBZ7p zc`RC;jF2XQ4G?92m_OpyRr)9Z0<vhW;}&jY0O2sbtI_fLizlK}2g1(-G>LhWShfWn zX{70dXBsj|!H^A(N5S3|gCy=1jE+cf)JqyrX*a#W?iVQtXD}cE!4oX>;z}b;FZoRx z9E6WtHH7H=CN0;-iQp4-e(U~Y5UMqY$Zyh_cxgf!(@ZID!9*2|hRV{av1s+Db6bOs z08IfwrFCS*(7d3S<&`$DX=3MxBw8YZW93`j#Wo#8FUribFImhf)k}K_>16lVn~prI z*_PMbio&JInBM~vlfA{xOXXT0hBq)+7KP+V!(6U}`lZ9(X&)urBftrb*Esx^oK59O zK}-`hzo{m`a9Cbb7SuR1k-`?%j+r_Jf4~XSnmzNIgv^c#m?ma^&WJN&G~18U`m&Vy zVP2|SI^hqWhINC(F_2)$eAh_DN|P<WMRKSmchhaiE2~+~s#GsgutjH0vm&oqF9kA9 zRz5u=3t8CLBQ{Cn$WioE+2psHLNhP_<KgKguL6g+SH^Uld^F={3~gGS(oU*+@2&=( zS+l=0>_(^8oRRx$V`#I6ixfzp!ZM@L+G(gTT|^8j=b9;u8m;XFIT2<fZBCF`BV-!0 z##pGUVXs$(LrRX0(E2CfG~UDB0vu@yxAU+w38BIm3mpK{7&XQV0k_(1wY=WIhvV>j zn7zW3AzD0gb7MM{RUO7A40t@mqghDBiI$EE`qWgI*M>AvHD2*_HHB4PJXT_mlLC(R z(rj~EPTcAH;f)KTMU2yf0z+XXH~{&K54t~wTM!M(;$^mUxy&$Wk{Gl26sAtVhss_* zVl6z(OVN6sgNWQ2@FvG5sE#x^DK;g%G&YTCny5`UJ*`%bKM{ptx9A|o>@lNu={Ume z?9_I*8ol^H%MetEP{zd@cic3gjnlURJRW9_vkfG+EOA~ima0OdrwIWJ$0xfauh!`E zf^i;TnvAc{Zt${He5hl33q3(|BbcCQ{O37PQZ<d!jl?P4SxUD}kLebjs8_g7d0X1u z>+KrBO+h#|qI))zH9t<`5+tE468FKAlXGFHu8_d64l*nAC3xVjYF$nO&2{-^E3FC- z9L!asOno%O)g+kP!HW-6nyh#M01sstwQyDleFnA^)!<quNXu(wnDbu%%MpTfm?tk0 z2pBlIjS4T<k`J==YP^6bRU4Koi{Zi7dimF>Hl+PKNCvN-GBL(ohCl&tKIp>&034SB zOBemdIsC>3&IYN$Nxt)aIAJ%Q0E^5c3CgWOz@yO~nFb&tPm-!={?LP?VZtM&AvUxz z9qi#jvhyYZG?BpuuuzGoA;I=KQw@zpJkc1$&Cn|^&k9oYF}#j?7`wu&B4R#GB(F~F zf)k0LL%J56i$)EQGY29f7AkrDzPET^-9MKu5>I#NRgo<3fkBGksg=bc+#3aWCN4Qz z>nJhl`#QZs07A8FIfS?(sUQ?0JRq7j<C_HFIeJ|H_<EkTfV0}X)k$wVynL-!M$Lhd z;cUWo7w#0nb^zxHfle}9EX^LO70`d!Mka9tuamS9s)4sNAq1$$R9|S@QvFfKAQQFi zY^ek<mdD+w%*cy*g__hT7An!qZd!jL#OTyYQO7dGQ<cbk<~}7IAf<!gRpM-pOW0HJ zt~qlj!AH~UAiYK0%*~wzt@PosCom$>{cl4OBlzTZQL94#fiFw(wGNa$(WZ<XOu7V{ z$VQgp84_X{U(#{6_>VGei-qH>=F9WvU@~53HK!(|H;}-<pi{5OJF!w}!U4kRb&XWH zI9zE6x4HDX5Q|MzSI4U5x1k0`&1>P7KfJZ@X86r_S=RU0_n!xl+vo}2OBp@6UwiVf z_T*7|f>)15wVu+RJgq(1M^ErdfvDC`YEOPvd-4tK$^X)x{FV0P``VLbSE1~9YI8*W zI_=4g+LP_tlLOk58a=_?n-TIaYEPD5jnu_54{J{z)t)SBPkxV{;3kWR*4MQs-_)M` z5ADgCt;mmvvqgJyo%ZA=dV;f+5%oK@C--Sj9?_oc(w-d9o*dVnyjgov(VjH5Cw=Y7 z+qEa})}H*R_T<O4Cu8l&PtX$_&_??Cg!bfLYES;1_T)9~$scG>{+OO%=!s}udkxxD zeDbjN<bd|%sP^PV^+|H)=w<x@T^k$Te;VIKdf8w|m+b~?VSKRAr3<?8I@IW%)D<nS z;<xC6)L<2i3E;{nAMOzQC7@K_AFLnr>J5nYtu72Xe7NJbd=hsRL2m-zwZPQ<xyA7Z zAbNcSN(UQZx&H02-8n4a!<%3Q*M~b>0UFL$ZjFP>_Y;NT_?2<<A3?q5$MDC;@y9=g zAMb?=;wtYQ!@bho8uJ32FV4n)!F|^M5Q=S6>IUmzsbtjhXVTF>C7`buKoW{40)7S_ zra`VfL4{_Hc`&3h@%t|l#1UQ$57(E+$|MbjYJ7Fv{8cF0{52v5e<9V7^sD38h9kUP z8?>)pHx0Kb<8{;Ui|=!eu5S)6ZU!aOXFPC~F7`4r+dx;Ki95!@TK*Sh2IKnvBg3&r zm%P3>-nOmzyTC(mBlSzsMP~68v;xNK1dRB`v$!CmhG6$6cXZL6wA=2O+1BXHFaVF6 zHA;7ko7<p6Am&1tM{&rg-%o3ac9()yitnnm1Sly0yXcDm%J>cU)>?wztAO$_Bi2Uv zxn20dDiRzBCI}7630_tm$r_J^poEsirhzzEWrxBsr`{2Dfx9bB4#J%Hbo*`MZM<<V z!jLz);lPL&3FVJ31WJ#XDA}P%nt5{?tt>4`Nqrgs=<RVuZ=BnkWloj!o_tB=x{`c* z<#*On$<;uXU5YF`vNFmdnCT6<%tzjV31{LRJk>-uLg8Q$?-&wLuN6_HLXzya?SZPe zhj?Zi-3&Yf0f=IpR0U+)ugDf&5j?{qc&T)JH|b1#aWDWJQUK<5?Wenf?GcWu2;rr{ z_6Wxngju@1*1rC8O8vX>7F+x3FBqzCx3B&dr8;uI-GTgDmHNp2{r2QNL-mL3tJjq3 zbK#xC_6Q3KLWwUQwg+e`0JC%pv3>ovslI~&drEy0z{P?C1%L!_FyR?feFqyZD)mc{ z!Qhp}7&7&!k;DPM0~Lb6I~9Pr==Nf3gdb86DEq<wC5nMK$!CrBZUya$@RQQ`BI59j zNo&COD1eV4pmx2nHQf6YxO<bEj;%5Nu7YtVobqE``R{3!8y)M)e_yFQ%d0Qe^~Xwm zo^PkVCi;+DNCAb;?-s4|GnAM5!6yv`kWVEaPooX4{nHAwJXD|xz)gJFvcRP@RL}}a z>`50X8@p<e25|Esg_{SXEJRkmSWBi6H`xy>NXK&TVRk0*3kr!{hAWw!K|i8^VltiF z&g=~LQ6n6#A>u{N&Tt=B;C5r2NXCP-UN~?@{e*%_;Y_%B)*0}V3gA=7rgRCdGvucf z$Xy7j+(+vS`e_A}_zXekVWMF)bcXzl0{NuCCw+_NjQE=hBH27-GF~2VM*XaUx?=$^ zfVPDJ2ZpJG;Ua{L&nZBAX(3p@4cZnujv${m0_zt;I|F}F0p3C3%oauv{YwhaW737u zwt%s~Usm9@<45<-C|^-fo}d-2<Suq+z^^KRPa)va8uM!k<Sv9<YGeMI0{Wx?TCC-L zT|s<^CSCDcPiH0mp#pV7lJ~}UI}3gMb>NaPxyW--)W^rAqz-;N-8vv%S&f{TvX8hv zG}&(|%t+TK+5r4X8URwU0r+zT;PEJrA~xk~t!?oB9|e!MevsmXYpewY-=Ha2C?~0S zPI!^Vickd9`<EHaBsX7YGn154m`PrwGLsYmX1=E|vn6&sfq_k`HkhbStA)wbQJ6@_ z=OxjOop>jsfF~!?Ddi=>9)!J>!j0Tou9|`Y0$vJBjpDrap2(GOMizC%0;d2dcX`jm z!T53o_5k+d2$|f>T^xLs0)CJ`j7Ru*Kw2Dqt%81xdSnWL;w>fJUU3o|6cW3IS@7bh zn-$b3x*?(((^BjS4soS|@`&uFZeUv#uyB?$rXF4LEja({rN*R{l-&Ma@T%x^zD&j< zIw0Q-3QIio9gb+>s$ZDM;LE;oYD2m|Twqd~`nIVnv3>MJL<8r6rH@(DTW&gEAk-Ta zp-$zr;&ia&gnXU1xOLy6kgHg=?j;hvT_IYvYxPT{dZ$9Q?hp-@NP1Qw{g&(~u|#V3 zDAaCI0>5}swa^l7GB;PTwB-8_i-#of2Vv<xFQR~#KcKL<H^<Ax>V|93liunf1^AGa zKU>2;s=yz%^IU8EClvhS4nAs4WT!&p>1=Pb#@(afJ|@<Lt<})|WQKOJIQYmu1#YYC z#)9WwW%OLhS#OFumsA%8iiZ@6b2(laW5(h1sEQ!E9||waP|^{OD+mvW2z;He70z=C z&JH_I)fsw00eaNIC3Up7C}?vyHjT1LE5Y8XAe6GbS7*VC0DRhomt^%%D8`YN;Nk2w z^WE)&A3kRELwUzQDvso?Z^qAi!mHx<OP9H)`mZG!aP#>{0pSLi)9Ur@20Pg4g1$;J zvmG~)hC;om+%7s*;w^>vJf?;)y9qt6FqILfs*{tts}Qb)cXm!y+P*@x7GFUyRk9<6 z>_Sc$ot&1>DU{n7JozRAG&FAUn5yLOFwu{qTWav0oc!-n=nts#Fx)XPRV}=tZ~<S4 z4WoODE{Yj`L}B1GGQdeSUkx!;@!zXZZz}i3PnGzOD#T%bEgW=6J#5y5%H&+|#}oz{ z@=3{475;)k8}<#HhEEppsKng)p2=z80}2<F@DSyxivAM{(K<|hB-hPPmGn<5r00br zlBY`eXBEOV?8WI4`l*urIfd+eb^<y%$NG7NFn{e<HD@dF9D;P!y^yRvY>}**L8MIe z<cVkoEIizf?_sn|Q_Tb*NBxK*tM8hlnvs(^F`3&qJN>9ax8|6g79{&|h3s4Li|g_b zE~w9Q<$?r1VI+8VdIUeI5PX|M=3P+6Pbnl%S?1gY$$eTO_g3p{yCA{OC<Hy1Ji8#x z-&APU_&Xao834YL_u9gi8<((@+bln;kfn?ck2uGVOL2V6z5J9K%jXp8EzBoF>ftxZ z%DVbQh5x)l{v49WEt|CFJ#64X4)Nk+xO-qqn)sr^%E-V<c-=SeVwe&iUsCv3Kt9|C zdIcN6m(7$J&2Ds2kn&edl-&lG1u1`3p-jVSIAWjzBa6`gY5&!<TK{Vb{W@AZBy2mN zEGYWdQb=C}dw*RaO~dHus6Y<4+V1L!#+^S@7$CKWt$WI9|As=k<~W8fXzgz)Wa|Y+ z&jm^UsY1HyHf}CR_1g;7cF_@YLHd88&_884RxU{HI|{jq(<r$h(eElm-{vqrE=clw z3dy$uj@`((Ai?h|1mET`CN4<w5;(~~-0oyI8kTNoE;<^PKvG7-hrM&hy4_Z>(Xd1S zM#C!<S&NT`CFCUSmbr~b!>bj#g-63~WY;NV3yl@sNN!X}I*%3I$Zb)`6&NeJ5xhzv zNC|Vn<k5}tH45dWCy#FQuUF_7P9@yPzFr}_q*TI<^cxh?MN<hks<$Xqm!3+v(Z5}x z@0?1wk-JkNS1^@uBRZ=PEtE>Qk-SGCSs;~gBe-25SSXcnBe_E%$%nJ0Osq#EF!98U zyDjF@<9brUzz18Wk!r!Q$8E2F+V2agO38*;Qd1)Lgm4Lm<rKYe6$oS^k1MJ=>N+nk zz?DR1;+*3tg~9=ciQ-)F-3s_#%PHYp;Jpg)GuD&8xzPI+=z}iPyt(Ly6!hnCZpD3O zHJ8p&h0YrVIxcglxrB}@gr4Q8K^|q;P0;1ic+Nz_Et|@v@q$9*d6c8bq+2efw<wg3 zBPFoOL{;`yg~$=d8J%1yJcYpV0&_RHL~06==Znsl<WgEtDDAbJ8Oa51D!_-F=0I}c z+Y0;vhuMx?@SXzx47jM>yhbkcK!HBsFoTf`entUTcjSwE1caVGWk<ePTI${J6RwB0 z>)oM8e}}@`Zr2`NBpUbP?@~~AIj*A{L0?fopTU!j%i#(n91zIo)#fcZ8KHkff!?n| z^WBSuu-~g-AHa3H1}xg~IeOS{&>78zz<*Q$f5IVMGHT+-6u?I;QzRqU1qJLe>$J!S z_W=cNUv$wuFa7bs(1q0a6AJQ4OtRpJdq1>QO*9rH;68oIkhNjlD8NrEWa48}&<P4L z{<8`q90!31Us^B78`=Ch1$4iVtT`;V8?k?0!KUv?3oND^!GBQ!f7(6yGvfZT3D+&* zGvfXu1@~alB+rQcj}`R21rj?W@IO_6cR40=M$lhXK%e2$$0rdae_esz>9)9LWcN1| z%)J!H<ueTnwdjAL06!Dn1rWtL9xWAu{#Oe0BbG^}Q31cDfIa1uNE#u3M}d42)Cpq| zKK{Ru#9vSlA6^31zfrKBa7b;9;{L7z_?UG%YlQoE3f$wv?!p438P(S5Lc0485uQ)S zgC`$K8E<2&cyOzC2aW{61Nyyr=o-c2G^I(a`1BAu*12S;DW$c0b|Lf;fIivX83N0P zZRP_)qWfATPWai=0l2rPwHRwAAETu65$C&KQ^1Y)Kvf#OE?gRh3c_z4g-riWaZXR= zM6M;N=GpKXs9ju!zrsD)eF4yqb$eB~vt_6b1hUaVPk*3@@_e?QWbUGSsj?V~mG<8i zN__o?!XTywkREpiL$5OwCtdHz(3xCGQrV+>0T9#{;bnS~j04K~V}<3NnaYu?mt@MZ z8vabd<k6v`hVVRd!Dpn=p}Djq_>Rz5PK+whj%u|W#|R06%zvTq_gJRPVZF!^VrsFt z-%;WA!EMCH=?<flbg#z|uZ`zXXBsBq?z;-yE-UWLG-DpWr+_{|<>8YGyfv!`m)}<a z_t<l3pc?ae2^{?|Zi09O`FyU^cxmJxff0q9CYLK<Pg(P*QjGaqsX!XTB2UysJIcf+ zo)s3AT9T_jz8}AO+5?~b;nB=_zN8?5$FEb^-kqrlr9NDDE)kEFu~9)aUX90Kw4GSg z#O)cuPOKuS;X&f$1b+WyrvoMn3b;~X^>GUYaAlT0q#298Rl(y^zvQ4Lgf{8aFS(Q? z;Ot4f`~lA)qf8<@W`I~XC~R!c6iWe*g}E_8@#zNjBrnRpgS`s(%ymXRLDabn!-^Aq zrLd|b|D(GR?>WHB43;Jw(8ev19AQF~)0g!YApG$mHxV<Xh<>b_+Z9Z{V@x)o`lWi! zhiJ}ocY<ObuvQENx)?xG&%WL8YF~owpd=9!RCTu^*5ORYk@YP?L9Zxs6sv7c!Oy?G z9p@)m>H*!dC1~y;cg-<|q`boks}Y4F`s2Ew!uu5wPZUuhqX}9JS&J3<phD##nxeDu zKc3(f)QG2H#zzm@BS=czA1N_HcUK|T1O+~(h<4Onfs7TaFJvlK-jfOii+IK}*@D*W z;~7_#)b;4@2+u`NG?@+x+M}@V63>_}XokR&^Mv*(m`_^x6J5-UgFO63r{yjBeX%Eh z+}^DWK$5y%r2c(ZqvQ1#Pbi;ZI&}$rm$1w-DD;pbeAUI{49s(Gkiu{5g+~>t#tYHq z5DPO;FyS5bPRWI>f?w{mR(l$ltoq$l3{%X^Q{OV<Mj9nh{Yga$E~-z1Ev4}stNwX~ zYJT(t7w21aXtGw&w{`TC5hNw=hiR@8i=AP;Om}IzxU`H43O%KW<`6w)tdhc1th};9 zfo~tma)3r>0B1*+h2>*Gfzs_mZYYuxkL@Qa;$AC<Y*A+sbXij*eWQI`(D5KBpcX{_ zVwEl^gdWa~zO)~s=J#6N#Wvh)Cg}4)+W??INXmR>4?&;o9(&V~XI=bJ0R<(t6xoj0 zD^UR}NleAc>na5Db4tSPEp}ci*ZMGzAWl$P=aedjq`rfP;Xn>l-JTHNzMEHZL4!j@ zz-JvbC`ejT7>kv7R-us}5fet?fb^!|fYuRFMvxSEAmZ~FVEfg)$z7?Jlwm=C?^I+v zRz!a&WURf2t5|(Mq>#uT4&r(bt-V8Y6&Db!hl3J;q`aq3_`|1RS^qF0+q<5G2zvVw zMW}=JdXu0^B0sUp-m9SJ$2{(U$(t3IvyOQRgrv4Z)CFU!jm+!Ne<;A9y+D!gxP$g6 z7l;KdX^h26e7{0udv3=OZ_gH5?7g;KMqF7^oN<0nY?1=0toc2$3KQ^~c(ZIW@x&X} zl_Y_;Z?<3^uH;n)-F`(NCv8~It0xKd%ud3(cUNNwCzbE-47=u|U-Ll06MjlDQg#oh ziBn4BB=&-zQ3xF38nE_3d}kiCZo&VD6!>gUPUGLqO)SHQ6(XSwk?xl&!!IcC#bhvZ z6U*=sg~)-uUUk^*A043!ooFm{4too5FUJT2er8zKbO>JbQ3X7^7t;_*>Ab}Je_SD9 z49Nm=wcBcWy@6lu`#l_)!crSY61XEbD<o$@NR9C5?vTRqkU;)&UKTcJ@mCZPH40!U zd*f&d01CgRP&lH>a5QfkJ4b|nrVu!p*|B7S!88yXFj6nD7CXZ~SIEqnx)uSw?|1t( zDVN5}rPC%B^@@_=pE}$<<Abq}!G}Rk774ikJNzq!|Gl<q3L)T{Gl_**F~6k%@5h2C z;2<lnA93szW%_p%?CjCIu0&$m#7oTm7ZeHt_n>IfcVX`Tje@-d?qyzL?tfRIU>v51 zYJr_0wdBwsaegvun391Yx#_dV5r1c=w!78norJRp2X)wVk+%k!fewEA6-C7CZ7CU8 zr4;63Wqwtm^gvDv$6Fb3?v&185<>lUyLK*Bm(+M5+OYuyPIgI;_Ayw31^xZLB9(PN zDFH!fq>0@V0!y*t{;NXb_H4xos=C!mRg!Y<KS49znBQ6}1=R506doV34Sxc;Sl~a3 z!2IS}DIvdxBp(eME!f>QXjBDJuNFm3N=UNZy1UogHEO`|W-tdMXGBR25av%K`r!)h z10akK4ZG2SZ@%GD_jq$#QmZ6D$8vmI!MQ)g8FWYesy)nKC@^<bPzGBjzN6HBI2tUE zhPdknX7z{3wR|}OeOJMH9M4l6wQ!XH-5E}et96I4y}w&4!w!N4+Ip{CtdmdxMSoAh zy9bwE(Z=OkbYB~anFaBE1>z3ej9pozn=13_UUH4R&F3zxOXU0AE?v!-MR~bWdw-)d z^!u=L;EZ2}jT8OGIsDoW&hn}?+U5Cvx1B7YkOyU9uT-$_rdcMkJHXMso>|q`DAgbA z!Kt<3{dW*i+c>=Gf$h8Vc`913Al(Iat$`@e5i~jrd9^nwweQA@%s@Ss_PIi-{%{}r zzfli+1yuF|C^wQNkCm$xEWQVqyb%|;z&6#>AdwJJq<e6+g5wYV;mT$7pSV%%ey`v6 z7VoS3=du+fl7x0}y}}$VhxQgxPUH*PRb_GL6Ly-M3gYV(#7AP5?(6hi!QP;P2@uY* z-lBj#1k2?pDDNQW(*`Ytyj_9X0pIa57_2SD-+q}IilVJM6`-e4>%a<p^3(1PhSY++ zK^b(I<M;~htb+TbYE2Xz15S@NOj~ezkAfI(ypN9U12}uE?F!cZQO6)RMJ{K_cPQ9G za}(#?GMk%NQ0m7^v~HQzlZ#cMeLbph^KjS^539-dX4JyPdNP%`Q-4Ciy5G<nTfpp8 zU>?VAnLo|Zdt?i|Jqq5Vy+!=gmiuPf%7kaS(v^HBHxns<!uBa>d`S?g2yf67%qCqD z6c>=pbx(YYFuHqkfT@WOL<jnZ(&-QVfw=yt)5ii5{q5MT<I^(ah<*!>GM_KcpQHQY zO)OwZVBuMX1r-HmG9gE%G%N$<q=G{C4hg)#mjqTg&nr004OcDGz2v<vbctz!GnDDg z3JPD=iB=OVDqYrz?^v0B^Bm>k&0X|s6s%~py#;?T4%QBOa17JA5|s@$?S*e}JFwRr zcQ5a0REOgajPH15ysi0esP}&O-Gtv40@|uN3&}L(jkCDdW7a?CwIL}f4bCi#UxnqM zuy~7#Z@?%y3m+F$PnUWfEHFZ>tv4)N*1QgWT&M&qYpr=8Js3B)z=L4@p6=OBtLxQ} yp8+!wZ0YtJ3$U@LRVL=kqkd!j@;F$HD-E>K1^-&x2M4KkA;CB|guh3X(*F;{XR#gt literal 133666 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 diff --git a/docs/finn/_build/doctrees/finn.analysis.doctree b/docs/finn/_build/doctrees/finn.analysis.doctree deleted file mode 100644 index 877b6934ee2a179b23a2a1db3032203b49c64d1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15545 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 HtXcmpZTQle diff --git a/docs/finn/_build/doctrees/finn.analysis.fpgadataflow.doctree b/docs/finn/_build/doctrees/finn.analysis.fpgadataflow.doctree deleted file mode 100644 index ce076452ef97983fe53e92414ba6b5ffdb62ed3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8760 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 Vr}Js$Cd(#;{xnJwG>Lkh{{aC<=KlZy diff --git a/docs/finn/_build/doctrees/finn.core.doctree b/docs/finn/_build/doctrees/finn.core.doctree deleted file mode 100644 index 42de8dd2dc313da5cad831d24ca7df8591edd6e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77481 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 QR`5kb#pGy=-MN|n2MDU~r2qf` diff --git a/docs/finn/_build/doctrees/finn.custom_op.doctree b/docs/finn/_build/doctrees/finn.custom_op.doctree deleted file mode 100644 index 7d19abf2f1afbb901cd38f4f93521b39b267a901..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56485 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 bDwJ-Ok-T0eQ&t?Sp{K{4BAiC;>B;{Gg<(_b diff --git a/docs/finn/_build/doctrees/finn.custom_op.fpgadataflow.doctree b/docs/finn/_build/doctrees/finn.custom_op.fpgadataflow.doctree deleted file mode 100644 index c7ddea653cf17ff4357736dc47386fd9c191a573..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160723 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 diff --git a/docs/finn/_build/doctrees/finn.doctree b/docs/finn/_build/doctrees/finn.doctree deleted file mode 100644 index c33914005c5d855aada62f6ac4af061572c1a372..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3411 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 GAN>nwzAIP& diff --git a/docs/finn/_build/doctrees/finn.transformation.doctree b/docs/finn/_build/doctrees/finn.transformation.doctree deleted file mode 100644 index 44f905b2dac89f2ca45ec3df016e71c6dae0bb1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45627 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 diff --git a/docs/finn/_build/doctrees/finn.transformation.fpgadataflow.doctree b/docs/finn/_build/doctrees/finn.transformation.fpgadataflow.doctree deleted file mode 100644 index 3be267ae731d9ca4705f33e70fe3573704d71133..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67064 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 PF}mb|7!HZO`MLiGO=DdW diff --git a/docs/finn/_build/doctrees/finn.transformation.streamline.doctree b/docs/finn/_build/doctrees/finn.transformation.streamline.doctree deleted file mode 100644 index 0ed5c3c78330a8486aa53a2a7ffd10047941752e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51174 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 Ot)TNJ{2U$zoBUsGSSJqv diff --git a/docs/finn/_build/doctrees/finn.util.doctree b/docs/finn/_build/doctrees/finn.util.doctree deleted file mode 100644 index 3d9ce38ffe05238e025e59c9a14ca4b780f5afd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66407 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 Qfesx1V4k$JzcBaz03lxtEdT%j diff --git a/docs/finn/_build/doctrees/modules.doctree b/docs/finn/_build/doctrees/modules.doctree index 2ab6f8d5dbe5155d3e1ebec57f89ff8361812750..d16dc0ea5ca22e82f0372b266abb3a9700ec5a2d 100644 GIT binary patch delta 875 zcmcIiL2DC17<H1}ZFZ|vgrqU343d}>+9DJLExESHO0`hDd6-Qn{T8;nVRp8)hqCqH z$+?snk>0)5OAg+=so-z$qJsVbe}J>wglqzO^YAe+^S<}Z_uhL``%pJejMr<IPt6U~ zk?-v54=Q~>44rPbt6=V#f=j~Kq0hOJN=#l}su${5b-;ux!Ws}pL#|-{^nAZ;Lru2O z()^-}pbBL`P?p>1QKO#08=CKiu3NgWuG_k*@;yq^CM-h@TCnIEx~-FV1d1JEfk!>g zC|x;ZWH6viks?U~O}H~2cfqrjcyx-Qh!<8IC9Fpkw6azt<nPjUMVQ>@0ae4z@)<(m z@SCxYP-}S8+ACcXc1ZRqKN`?jFAj}kCEr$lX~kaI&D2>MsUiALqB!=wfa07AC*dw- zfgjRk%%cd$5HXJX5yKotkX2`gQNsOj5BnUG7)NZ^4+%TMT&s>f+9OF!^;<i}@rYsd z!kMcA@^R^ZnfLwVtT=JvxTS^uQZy)?^)%De)~L@#)GSDt0X?9Ba*;4HU6n8%Zf!i) zN2Zr@OEV^Yoc7l(B_4drg|B8gwDPb{oVYJ-XKkUKWw||;tE=zsJ<YE4a%y^`pa1&n Yc%dJE2TA4Jt><Z)`DhkI`PEtf1B41Q@&Et; delta 572 zcmaJ-OG^S#6!y+TlM#)e5H&0+Yz(OgD$rff#xjIy*<zGSM@Sv!K@SLR(QY<!Z-i~y zv}v2mp#Knov~JVi=uDF-MJ*2Z-t*n>!S@uuo|4<rRYd8?+Z717A&XY+TC>3!S1<TE zUj!L~5IVq1z?JQqeMCnfSG3G3_h3XNjh@&D`pZi`pij6#LpN!|<}lv5tt(MTfC2<W zNU|7F#Z*yXTVy9O?YX5<Y8Gb>X8|XJlVJCx)ly*<l8}W|Q9^;7Q_*3R;l}J{)ix>3 z9h<sgP?PJUA`YmqG&J^fN=}7-OZcJnf%o9~6#>}=2qRtebAQGVenuGebAwjXF{_kA z7Rl^R&;*D+h+RU?dN)#@kZi9n9||*|LD_P{4ZTk7Q-fMqIcOyd(s-6ZvDn_&JKG4) zcXs1slPxQ2(F|6e@jIV%3%FX}$IV;2%ZHT*G3x7o@w__v`03^EPwY`yiF@JU`B!f` H6C?Q#CBnu{ diff --git a/docs/finn/_build/doctrees/source_code/analysis.doctree b/docs/finn/_build/doctrees/source_code/analysis.doctree deleted file mode 100644 index c282b8da4a5cd36489c6eab04b20183bc31802b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2857 zcmZ`*TWcIQ6n1Ry)!wz^#C=HYCZ&Ytf_Kw4l(dvW`_>wkLQ3gN7_>9mmGF!-)y2Dh zD6|hP3FxiL?`=QLZ7(DX3!|f>bNSA9j`ZjLyN?fcik}-MGPZ`NdL(2*wRhbh$fz*> zU;pGU|A&9<dWtNxv?`|F?LZ@DJWUi8{<UX2uA^yexD<^(Yq2)#y!MZ=*)rUubZyHW z6G74&&Go~a#8+faeb9yK{x5VHoW4inZ(jrg!zZqt6Sy{>9kW|(&$X+-CT>6Fg8GS_ z64xijC_c3Y355jqc%l)k>%=M18bW-x1j)*;ZesJ*Vv48~odq51I)=={mS;nDj~xV$ z?7sVAypZZjBYrxbaUsTlOqX9}G*JvJ$91A3r4jDg<*uEwehKLcqN7^i4qn-51&J;( zIo*`4P<W1DMrAM)b{0}*=g5;i0Fa;H|0({D@c#@suqQ?A&q{Un6oIr5$PUUVvs_w{ ztW~EhoIBDv<6=1?Nm8+*V`OX;U9V)R`$5O-p1b=#G*AVUPw@i#iTmVzI-^-WCkZiR zmdb_y#}jwRMV#7%&UjiJWIq$v&B!vLxncgN|L{X~NnQ{UT$rbF>fgFH<4FRdzIB7j zKqKf1n@y>riND-&{eq@iiuA_64Uql7?iWyXfb@6U_`0JCjf;gMc}|rl+mL^YbL)`z z?UXi9xdXjcYEqYMTfA1m-im#71=q|qEp<`1)XHYF*R&g1r$#Wmw?++c^ut_gnvFdT z7~OKi*s9QsQPYHnwWMrD*VWV*F6J04x0^{bQ&JcT;<@&(B(*4LJ!;r+;(Bu`s3Jxx zj|EsjwINxK#X-dt*uKKDUoEXlu^ONzQE1+<3wN!+vK#MCW>Oj<4PD#3yyXUAYJmdL zawb*gAsK40GDquXVfty9ykAOaN()J};D$x@2!Y4yKs8e)?oiQODifvjnx_78*Yz1m zn`O)0rb`a23^7*MN-ft)=+w^PZnz*y04r!HN-{`#Mq$Q;r2HE<<RZ5wq5{JOTHf`n znO(fR&>Y`qo0}0;N~(wvk))s}3WwZc<K2<8X46Wmu;ShM*3Om*_RbAUqpJXh-%nos z82$F;=*7k7Uw`!yQEX~#nQ+G;6Aic+fJ%{>cY~COxy3C|j7;x#(X8%{qOnv-gysfI z;4ch|iEGDF%#bW_;YpNZNb{v<Z8s#=$Y>>UyByRSBsR;VhJJvz5O6S0;RXr@j|vGe z7CMk%CCW9miHw$6Al5Nm=2FvW{ba$F*hJS{^OC4XQNlHurXi6k%1+%D?5R6MG8&CQ zssS~q)S`NzxnWN82svRSiMYu3Fi55Zt^>o}LuO2_zZs7gi^V9vF-(e)RP%8{ugB2T zWA9GGiC{6Dhz!kuvH{9n$S)o}e*svAY8G#~36hnYv)YZ360ZVI&8%?4OqRk$&yXn^ zA;HwW?7DN%DvO#9Yr>C;%MoMuqaqqEG*uyUus2|ofX)YaR5VMp-?6?ChAbn-=Pbn^ zWZh3?;Q67>2)gQbize1Md8b&H%P5sGDX#=~9y5Y|L4C{SLdC)qig5bM<_IRdb&5e> zH9c+xNVu4x)b$iN33CDCc~kG0;;u;0m^bjnC^fKl8mE$6MKmKkjc`*cT0AY@xIHSa z!#l)v%XxqX1dF&xICyO$L)4sNzTgdV8;-yVg9jL}!R;2FEAC`NTE0vmhP7F<Xb1M= zQ3H7=2+QxsOtO^CSz=u;NX<<S#KOx!PS|{6*@N(%;vti;XVwkY3s=}0#2nKp1Oxk} zBs5p8R|dT<DfN&F%9l-L+Hj#zy}KoBw0j#Cd$rf%(8-2<OiN|Lcs|{>Rqfy*gVt}< khIk&LWAL=om@1{gro%VH2aUKWP(KMnr|QpeBiiZce<DI+X#fBK diff --git a/docs/finn/_build/doctrees/source_code/analysis.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/analysis.fpgadataflow.doctree deleted file mode 100644 index bd8290e0350478b8096847dd0ad7da10b9e372d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3642 zcmbtX?Q7dc7*CTpvGd}j=`vWG(2P;mm)Y)EH@bc3C=|vB^OufM=*w}IPQD|OPP;qB z4x_Mr7_{{0mumfM_Q&mak|kSi>QZJf=pNnk_IqCS=juPb_EP?{ZC`q+5uxtJ(q}re zO-G1WY_d1mjlZ(z*>&4ebfjgfJeJud-0-*veZ}JJX~viAx@MjcGOq6P24CarPqXWI z*)YO{Z040cq%jT8w9wrk8B(7b8iaCmlu+-44q4_H!MFM=8#@a=bp7uvHxVlL>{>!$ zl*#xmzra`Q+Qj6(T@6LdvVJ<Cc7qzD#2__r)w#AJd<{43x))NdLBw+-rcv?K^wVT| z7{Elu0(U31>xK^9tBkk#WxnY&@+<bo-bktw4QE&{5OLfCn7Vi>tRWsy?wt!kS83RO zaJ-xj_(p+zi6q}C&vxTsI*6p7hOjWlYQILB;&B^hbqlll{J=TS58*Mt3Vc7u{|o%D z;r}JP;Wu(GZWY)0O<2*GWw0B1s+E@PbJQ7Ottlj>umvvNJs%Dp>L)~>#fCp2is6}Q zBO>Zj?WjPY1mN5E3Mlv;`#IbdR`!2baGC$~aUegK0l8TNxpJd3TNxeT(8*!wz>Urn zgw6znX*?<cwbJTBz(O48Y#z*q4kj)L-B;%$zc^gC-pjNwNFS-|GN&IGm}fJA*{ubp zGPoX?4~3&*tB2$KWLy{on6n@VJHO=p;K-A)LI11z!aMXT;rVkE=pP>k&v*u&&uZ}O z6p7fW^iMN#@@i_@LN_6nRZVKz`Rk~cgJP=W0~6&Pl`AuzpxM5^FIFRj-*heVf^B=L zawCRRqh+h46eGqqH8V!ULk!Z3)npA+9vMHgYroMjMdvO@D{uF0Ysg}zsF5ne0Rs^w zPNM{e&B@Gw>=PU}CdX8TIBgs05jT?DTc~TmE_IgKy+BG6OT%Vf9$&EAZc4{#M8<(s zQ3gs|V-hA9NRgZN8X~V06c)0aLPo-HQVvFFoG?r#W#4WomPlnt$WB?99WUDrPQ&Wh zuou}_04qaHs>@3a+wj>S9YS4uL{$u|a6>T~fzmPxlhZksy|8T&C#fMU#>m92%(hY! zbnbSv!1F=<C1FZQML3Q9kSXBoO!Z7=cVuenQX07wEEaQb=0xy+ZMzUUHK2XJ|L|w> z=$r1H&ez|6cNbRFZ_J6XyUr60xHy0c;aO(4LmCfLEIRojklAHyQTCEzo>V^ZS;Ar; z`UFy>Z`V*z0h|Rc!Y2t<4>8X8nr+k6NHQhaWr5V%_R}aKRr&$moFLE>6gDm=a3`k# z<5;^Sn359BQeTpB<PvL_jT5OEndQuL#WUnoXi+5U4)KMigU~rLv2wjE3x3mX!5NI} zI3L##x;?o@0^v3nY+3DuB^b;BLqU1Dzgvznpiu2H+#Ydb68%H3HyVw)$(i9Y?n*W6 z`RufZo4S|TeaGP>Iu2r31e6U>Zi3#qcKZ%sX{*4SQ{yO8H3y{{BPF(A!Ay{=;U)^9 zqGjj+h2R^W9XIVE(kdcVg;nO0eC5kt+D~(9M68)|iwd&WVdNv7H?c%lN0i^Lo9T2+ zxES&fe<bT_C|#a!>4>7Leos-v8l0E%b8#f0^ymb^LyuF`3*uW87b51m5CQi|n!p&h z+vofDr08EFNu(#@0HH3sz@F<1*zW50c3CuFJ__>;x;SG7()PVj(i6fWDndeid;sJN z^9#Ge;#0R>+h)-ZP=LrH5&HspZHS?2$k1O9^NUb~tT6cC05-ncrJti?)u_e34Kkz! z)nUzLKUQ_n*B!BVzRutBH~c=o#~<@YJmreN=C4xQayQIb0`%O*`?k;T_xa;KPy76J zKjl{)@eOwNd;AvI9)Rr`f5peC-JXqXu58;AXkX4+7*J4L^_BMuuVyL5J@|_FMgtjE z$&z3FWR6(fZq+2VO07B5UQIsQsWPsA@6XGcyjikM^oHtM8(&2zDSXjrw4Fj=)dFhd U&5E2yaKm?9X;Q#$WTu1ee}9*NYXATM diff --git a/docs/finn/_build/doctrees/source_code/analysis/analysis.doctree b/docs/finn/_build/doctrees/source_code/analysis/analysis.doctree deleted file mode 100644 index d9f2e18007a92975994cb5b194cfaadeac307bab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3988 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 diff --git a/docs/finn/_build/doctrees/source_code/analysis/analysis.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/analysis/analysis.fpgadataflow.doctree deleted file mode 100644 index d4b4b69e8f0331bf8c8322c116de583ec945a682..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3651 zcmbtXTWcFf6n0|EmVA*Nr!F+HiAxF1rIJ#b7Pk+9K%gzAdPymPT!zu^tY+}uIu}c( z1lor}LWaC#n_tr(*Kc;UE3J|!m<j|tXXo6$bKO5z{yAzd<v-i@6VGT7s&1V4Ol7v| z2oZ~Q_9naeSN1%+VOx@pRAQvZGP{Hu9v7i6S)4u1_>x^y%+n%?tNXmcSNYo0>;_&o zw9p}&d1Vi1Ov5uJR5wV6)Tf#TVKO>Qsdqw$EOU(DTltlZodqAe{&$v}2$j2bHKj00 zXMBfW;LCP(VshWEgd%2H-wdc-r&>!fFdD8p*OrB^;D%lELaG#qcy7crDxR9YNvDSa zOq48ecZ^-rbm(4Xyv?uh4X2S`wLkSni9AtohV=pw$31|lil@RF;sNDe2|@Kx!=ft{ zoY+6UXa;<}2tf%c-!9K~{h=8|iEl!fnuE4iBTa$11N*v#eSN;~P~Zn}onHgcpX2`p z{@3yU5^nLExjVOu>--k1Xv{L$bv4yWOZGYHjIh=en^M>UmySwY>TvK-Jt68W*8B;P z49`qy5mA?OhXn#90N;L4K*8_W-@{#DW&ei-SNM<T1Np%W$jutal^dPe66pYkP7Xr{ zZgi#~bS5B7<53BC2grpu(Ahkg4;@Tg5W274kNo0r-Tolc!XTYf*A-6B7no-=f!V1A zrZTu5n2&{{VylPa{mHm62ry?s5Vn8G`@x}?#2SsT>I?7CtAyvzQJ{aE51#Q1JfGFz z*)9^XQ|X^(<mA=Vw1sX$EUTK-bOh8<FDJ%S$wx-ZJ1UoFJVCSla9^xu3BTo9<OSRI zjC8YxR5NC?q!hEpHWkxa#6wKfOVx-CWF8qmv#Y<+(4cddGnTjewl!oilT;@%!vT{K zB~GIhhmFbbfb0_-*C$6KL!7pB;t@BS+*_z?z%F@~+1(&Xbew25^YZwD-E!kPHW3*I ziHtH(+6p5v#bk=y*jEsFwV<$&<rFd!nv-%uLgR#CGBW#iQ?fLXnuP3>h1u~%yUuA? z9UJx%8w+5isWz&-)UXYo4a^Yg+9N7sV1*l!(Fl~5mKdSVsqBSqi#Ro!uo$xww=&x@ zI_MmAl)&?T{Uu>iCX#R(`yrFS*_rC;%x)(}*QGRaDcCUP-pq;M|JrsTbZS8Re*fXm z<k2_XyPdDU|LzD@)Njm*ushBZ1-LkX3gKC1w?Y~Z4K|*9BgpJUtW)-~WL_eD;<J>+ zKJ*EsNZ+oapaM7xT!c?j>>y&C@m1TVMki!SvKIwXYs)uLN~-h&yg5OjCrGSbPT+P< z0miX%NiZd)iWxs4<H#k}4jZS5Vq}&x&lOLTQ=vqWsN2LBiVi~O$i&LEvMl&5y9sA7 zuH$@ML+IAz8VQ8kT(EAnQ<h>d2Mh(}<^FCu%78+(%W!+hwNBL!z20av>ZWI!Cvi8C z!=BGhd$_53ncZ_7PNL%=nngfa1LY>@o$Gh*0+zN6yg4<FGF7u*s?kY;byzSR<Z8H% zLa1nIIzS=#nrFvNdw{fxNL68#`6S={vX}PL+!_%pCf%Zf>~$FVNaqb~)725>x8r6y z9TP5wJj5T#x)LTX&o@;>QB}Vi6tM#5<@{V6Ntk$ag5ZJ2De49BEs6^fb6tpl`^2O$ z#x42zB0eelmq?Pt6LEl0mtA1j^#yEq^?N%k8ZaM)c?MmaF%4;ZUYO7m!Xhd{LVbJ* z<eT#gyUgNKw`SXB(GO67$RZK@0(q^8rgF&8Ul8+4P=u_|`0@ZYzFVrFqhr;m#o`Sz zqy^Ps)nz|+cF@-xv3S10-|{#7KEKBw^GDop$zStV#<tuIeU<_}xADI1^ZR}NxX(?W zzwR4;%@N;VdB4YRgY5y>p7B?FZ0y!-WOHR(o<RF@*1~{-;;OH_S9mo`Del2n#5Wow zVU;ZT)lcS#)$LYIVyo1eGws&oqn%3a`uE<vtjU`t+eB}uuC?)bgp$IijY8Wg1XeAe WM&78%c?8#e*Oev(>_(;;bpHb|D})dL 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 deleted file mode 100644 index d2a9383f4aadf300d64d26b7d54850798cdf74f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5024 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 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 deleted file mode 100644 index 8b1fa4f0540c52d0bbbb4d5e7cb4a5923acf7d64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4748 zcmd5=TZ<$~74Dwts_yFPuIcHu_hqJ~5S8i~t7_L>ma!iM9~7jp5XTioha@U9vLdFl zGSi62zOatCqA~;VX8H?65b=NbvJ3lbeD*sLnOT={hH^mIhJuU}5hvn&=k`VaZs#wb z9&fon+l{iYFf!4@G>f<{?H&o{JT>K?%d=0*=Vjk^6uZ({p+a8TEvyKIOd`e8@@Xly z?5^gaky+ZT7cJ2iyHCqLCR;|DgfC6m_hXr+Lzc4SMoT@6^BIenVR4dO4HehF3b;0M z&PZc#o<#+AlQQVq`6<7qTiN&Ctm40D_+#lT5v{j5-nMfFYfUMR#J0F?+Z7fQyOYS2 zmy=@3>^?I_$!TGLAz^k~MjH6o-7sNVLx}HI%I5xSFDmlIV9LS^#ba7i*j>YBG*ybO zxG(O|iQ<8MGP=sth0a;XM`Zm7Uef-{-zEs*J|}oRwoAYam4-d1<6Fhl-qpE~>GhCB zQ56F%nMVA2$!p%B;;XPs^x%xI;rDg?zKLI-tOPttI@|idN2W8l&3=1xKlQz<&){7D zHQ0D>DcTcLvO+u*gC)fNw2qiop$Dvvz0q>)jSzdw_~bX|1Tm~iXT2=$ZG0UH;w41{ z@^L!V1^ZfpjnIJZAoRo6f3^<|wHn_mjJK7M-(zU25K|HQZK4ysr9O33yx)1{d} zOQe-4)JicrSwk1G$CEQxaA@a&+evvr30c=eRFQ|9gXyc+$^W#aDObq5`{I|r228{$ zRhrjFPUm`_oVyZ%8lA&3t}b~=dGQNq`M9biU!J`1e(N}l*8%RXI;IA3UAziZx*1SH zif4pMvOq;#IB?<eV|N`Ce0bb&l}OadCC9g1g!t>!k<~1I-NF-FZCkzWAKv86`jWrL zC4alg!r#1N4PS)Hm^CFEpLNx4#gf{<OWXD}x3p&)$2Gc{>ujjLb}ufH#P_V6fPI3i z{Mh?q0j$rZFiXucw`l6&mhBLZGsSYTjN{Yqdpf{%&j{W_SU4i0dnxA;k9u*Y+{8>? za#t65GTi?ON1~^?_X+j09^I^W-fZnH2*&d|uKv%bEd2gYK=Y5y!jzEwyLcdeL>&a% z{zlv06bZE9udhJA6b0*DyB%e7Ceza1%5Tuav*|N)lcR6LpQ)#GV1uZgPAdLochk%h zgO_yF#F;@9#oZCvyf~`=7H!<qx<TEY2g}`g0KX3wej8Nr%Im0p3rg6e0ol?4Y`3e3 zedKA;8wzbr0L3HPyKTE+p@<*`4KX~ZC7vMKJ<W{)lK{WI*AVVlxnzh++x{6#3b3c9 z&~zuZGvg^&%w(#>02CSKvw4oeor>{6_XURg)v!<rMu#Q~10s|(i{o0v%;4SQILl0$ z8NM_*-nNHC-qT_pTqBX@B_v(qJUQs(oE`xhD(`y<Pq>o=SJH@}rnNY++EDS_i9Jv} z&y)!ge#w(^e9P_&mNdhby~nR5urlbzx?a?>t%y&H8IJ2-F_i)<tWccIA?X+e-b+T6 zFKkz)d0_&cg79KhX*-392agBn@1=dPIvH@KG8G7xMhREInXVd|(%#Jqv#O=#w3POA zZDvh{__ytPrHc!6zc+dE!{Fy13_l#a|DBH>;})wc)>POdvP1(e0iY6CR@%darL%&~ zxTEn%NIb6WJBo*yih_ve9DF<tiC|A`8#OeBvA{(}0s4F_uc-=mSz)qZA+on5LhCRp z=6TSBAK-NYi88G41|x-codg)Cnu1^<$~7;dEC8**sv~}#XPO7gJ6)`VCb*PZ`ar!K zL{hV9LWWeg+^y3>JhBHc2K5|7j2?`LooZPS%f!7NY&Yk50Gl`xDs=W9kYvhmG)1`W z31f17J{nzJT@CXaBeHauso5yvmm{pyqtc$x4$??F0>kG(*-%}BeDIC;J_IaX6^Cob zkYsVpgZdbgWq2G*Zen+gF!KaQbPSs!5h5eX@t!?JSj~eb!<y>{o{hb<@4DN_6qJlC zNAwa#5yJTn-qy_!>35`WQp2tTA!j1N55c;VWEAHIdd`qlzb=r(8av-{V?PX%EMyge zr=dV24dGv(T<{oGp#ZxtiX7dZp8W1vUM2lY1W6XkG={6|DsW77K^N22bw_+Y<q;C| z24@M*i94KxNyaV$j!u#UpvtJ!^xS=6Z}aq$-o|#%*8?OVq6iH{BCbtfn3{3a7rY+t z;UGkX!T%wEO++u@=crgKQflH(3~g~UXjAm#p^fFcB=p~X@rC$YjK#RH9g<T2a<6jn z#YBu>6rxA(*w4|qKEuBi+Wsbs;#>XuV!@t1Td=2wI!TQlR6^IoXOFkHw$MMSr@HuV z_2L_gj|+Ra92D-JhoMB}BSUd_FQLS(*LgseC4L=XLTJpVS<=LrTl$qXVY9lkqOnt- z>NXv(=tm`1hD!g*x~^(w%kH79G|RdmYRE?TL!)AOg-!KX5#MRV&iVTh6|^e%J)0T+ E2dcg}D*ylh diff --git a/docs/finn/_build/doctrees/source_code/finn.analysis.topology.doctree b/docs/finn/_build/doctrees/source_code/finn.analysis.topology.doctree deleted file mode 100644 index 451f72dee0acfd8238d8ab0bc0cfe36bdd8f955d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9376 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 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 deleted file mode 100644 index b8b840f01e19afe06f90d50f68fb939bdf400311..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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> diff --git a/docs/finn/_build/doctrees/source_code/finn.core.datatype.doctree b/docs/finn/_build/doctrees/source_code/finn.core.datatype.doctree deleted file mode 100644 index e2576c7df3a7905e05ad1e9dd13a228f05b6eaff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29083 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 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 deleted file mode 100644 index ab4f77e7bdba1d31b3967260f86eeb114389c2cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4768 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 diff --git a/docs/finn/_build/doctrees/source_code/finn.core.modelwrapper.doctree b/docs/finn/_build/doctrees/source_code/finn.core.modelwrapper.doctree deleted file mode 100644 index 3384f0c4528f2bc42bcb9c27884ac86ad9753563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37452 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 K27RKtvh;slser5i 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 deleted file mode 100644 index 7529c89d10f492df2d88b0823fb81557dcfc3ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10978 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 SE8}W<6fld}LV%ui+W!GIQ@R8I 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 deleted file mode 100644 index 8b4675413117862af218c9588e64c4cacc682b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4084 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 K`_ygA+30`A-7x?F 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 deleted file mode 100644 index 44778b6af972760799db23060282fde4f910b0ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4406 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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 deleted file mode 100644 index 44a33132d6edf7bc09b33711106b98799d663884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31441 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 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 deleted file mode 100644 index f592107cc5cd75a779aea4343ab1b18dea38adef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45944 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 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 deleted file mode 100644 index 12982cc9549116a8f4d603bfecbfe604ca7f34f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25637 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 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 deleted file mode 100644 index d06fe5a5e4013093e7488b6f0b88bad5964e98d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 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 deleted file mode 100644 index 6bb7fdef37d72c0b9e21f1888ea0111464485aa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27147 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 TruYJQGC=llm7J_(ZRvji1ddHb 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 deleted file mode 100644 index 40ce00f406b1ace0c7141edf75bef5d70f19a98d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15531 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 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 deleted file mode 100644 index 676dad32797a5f4c4e6470db2bedbcc5d1bf17b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4314 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 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 deleted file mode 100644 index 93ddbfe4aa871e46574ad732284f5f85b4807004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13945 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 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 deleted file mode 100644 index 5c1950c03f6c89f0c0d5dffbfa42e1f47e50b7b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14107 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 G7yk{)x=wHa 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 deleted file mode 100644 index 7e7c0e91d44c7655c96717fddf955046b3f2799c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6433 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 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 deleted file mode 100644 index 7ab9e0301f6adb07765038346c29882bcb5cd984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6639 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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 deleted file mode 100644 index e663ce9c4f22c0e6f2aebca1088d4103a0c7099d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6271 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 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 deleted file mode 100644 index a12493641d50d9f0b593ce4914f0cf51721c0741..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6249 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 M78ocSC;iU<0iA163IG5A 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 deleted file mode 100644 index 8fc625699983bdcacf2e12e8bd355053b8403f88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6841 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 C7$x=q 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 deleted file mode 100644 index 2d494a41e94b0710566eeb47f1f841443eb5bc97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8183 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 SYeQLfDfs1af-dK@*ZD7Doer!3 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 deleted file mode 100644 index 8ed36707c989351fed68500d6d91ee4f8220bbcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6569 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 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 deleted file mode 100644 index 0a36c583dcb1c37f59ea28c0b6441ead5530b772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6209 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 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 deleted file mode 100644 index a446704bded33ea28f6691f1a5ce8e403588ee07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7211 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 PkE&f>80a)kd)@y5^+49W 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 deleted file mode 100644 index 20f73c1d9fa5890a1e2ad6ec86976541fa6b41e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7641 zcmeHM&2J<}6}P>fvBw`{?*@a=+Nc!;G@H$g`G`<(P+$p)6j@Br?kZZLtU5K_HB&wA z>2A8K{UNdn9FW#hT_7Dm0<MSyLg9qOfj<Fmh=0RE%7GKVSJmCqGwazny9Q|`b~RSl zt5>gHy{~%j)sGiH{M*i){->I5=%mu~lTHx2Jjv8D0Y*HK*$3H;pJWfRmTJW8C<)Wp z;hCBPh9f-Rjd_sW&%~TsO1LAvFevdwP1MEG{j7z_n)Ia4D^u$Az83@?8M7eihw+Hf z(oR1bFqcWz_rs%(6LTi{J9Yth$BtMGIzY5Wp__spkq7m~yZo5=RJSfjw50hc$)9HW zu%dQ39I85)CMk+dF)yyDdM?1OTJ*huXWg{N)C!X__Ijy=;7QO|JU4+*)so}0BmofL zwSbMx*Rq>N<3W!(2QlvxPO6q98_-lHn&P@xr5(k#a(9oy_#lax!*@wQyHIUnz6>|E z1D$KY1r&0Q>^gCR1MciEq&>BfM8XS>JIr-+OR9N+%a1F%H)bKefTIcv3Va^F7x4QM zel0pS<Q04Ruq_D83kFd2h1GEme^$%b%MDnF`D#D8p=6@ol^ILLi=tf-@}H)KoWzci z@uZFKR&9LO*!VdtccPO$QWFFb46LwkJvqaj*R>;kH}|XW7fwVPn@@Y9W8AxN*Nf>z z?5X=R=vpmpww4z>1=CQ~?f=G+&(mF3?7$7hOKK63&w0d9TbOCmjGcJ!E}6y?f$Z}$ z#L&8-!xOFE(5qPxgi^=3$`-0_gk?h6Ryi!g5S-<@_<`|c!zi1rp~msZ-_wqc@EpZF z;qf8Q$W-rv%H2F3Jd>tsG_+<UiP%C>uDF>HtY3W!V<}|+R5T_PHoBO?gb*HS=U}WI zF)XaHq0c&f(9g{<x8e{p=O-C_@aY)*(IX7<u@&yKGKAx^h~l-rN7urss^^!r+Iw;x z;r`Qpg5ax``>F4nTkd@l-fi&qmO0K?c*aniFp$+0rigKrk~DBJvq8)vQMIG5euv@0 z-Lv-ec6;xh$MW5Yq~+b*&9~H2zBVgGJqCft-&RGAsIV6Cz(sVok8yujdARv$H>d2& z_au**U#0W>Co^AI%|%elQ|XZOM<gy|6TlVTQj7W^Y9TtI=yTFG8spWwo%Hnw$l~|Y ztE)(=4uRnE%hVf}lb>WrU5Vm|c|j)rqLwg{ClQj0+^W<nApAJ;J;x)HC4?gu2l#B@ zA}+Gc59nA%IhlB06O}9;a3nt;(aC;?Wb2s>uKV+3pJ}h+)Kf_r9q-p-Tl}4p1|a{6 zj2V~aZ;IsM9-E(=y8{VIi&@&OkO0Wgl1HH#Ca+pyz^x<UIl>~xgfbE<2!r+;Z+5%w zBFhH^ac_kMF6i8mNL@zokw=mjjrNkI(QvH_9_N(9z&|O;uMlZ#l61$qEBNCm3zlGO z=$!jjnV7Fg!6Z)PdJc+`#KMlqZhTI0$U*_50jPjN@NG`77ff<9%}6)2n68;D4;0w} z4=k@wlwxk7YQPz%dC&dz|H9_h|3KK|i1$yJ{6DJkdouP_qgU=J&u}0peEUfY1BXSC zf6}^Pwa&YMs`XD^<DXam%t&*r5tkx#Q6Aj8eBvF=_*8+Xr6IQSBB5KvyP~&orvRuI zX0U9iQVGiaq9%B+Tvf~Wq)x_`%12|vqwN3R7c;yfnWS9pW3xp4`I)Oq3mxPo*)^R6 zQ>q5V^Vs*0QdZLbnwF}Giba)HBF{pEn9Z^YF%Pfe0()FqlFN6v0X%VixOzeKhDI+m zGF+x19j<cMo{bY|eC7$X_}QuW`BUZ00!fPaQ0+X{E_HQCDfGXL$&48kzbuUO6B;%Y z@qTe0g~}19(g{`1voVt`E``0JNyzHPzp4L-id(~m--5{0QV^Ox(kX5CJ<TkoA-QAD z-m2hkvP77TKl~<bM@j7PHTud^#NoFw7`{b+ZsE@a7psqQ(YlOIlj&!+CmTrZY5;9J zy0=qiPi+{#X_2;J;?yGLMQwH&&C$|0NvI8|{E9Ieanp4FX5Wfs<5S$Eweza!q%k!{ z?Xn@dRzOT+R4pf5O5}cMMqj07wC+y#V_nj@nX13d{1i>XG8#0ysxjaJsvsH083stV zcp}*-!eBM8BtZKB!<BrP#y&>tGIVTeq|z+5t5E|IMa;E+7)oT9yfV2zuhyy49i$`s zm^#-PAWiDiMQEdrsAHah<aGn#KGzWY$dkg>1rb=rj`@PTzuQ%7F^|Gn+CD$zezw1$ zRs{3QVNG4-#~x&b{!y9~NHtY+c`qG+UX!X7swF`e88aXaSdGK!P}xJ(^nxgrHV@F~ z1s3X|RQB7iw9(MY)b`}0&Eq(XZGqI<=P~3=tU5AN8(}IZsnj%;Ozlj~OpzGAM}E{a zbjLh2Z*}jyY2W)==jHZSzVY=}z{n)V6cx2ehe;qY0a^JtT&C8277S80;JSmIsRcYn zsOMs&;jwGGoC<90N3G;8I%{Fj$9W+d&$ZDU>wCx4PH3`JhV~ew7Cczjx|@z7yR<+^ zSOZYf@Hk*T5!}#_(mBVVDB-Ca+UUgrYZGN<m~gwgQk#n-?L#l|jID0iu9vW$PY21l zTq-<6+*E5gOafmp-9wm9j%HH{qMrwv5sz#tV&PMcJ}=q}5$qOQlaVV+NEs!2ySqn6 zM`$i1i3&PlJlJ*l;Vv+f-ArxK3Zh6WY{^HEvV@eE0dIft%P&JL&A9JOZ9|apHrvHE zG7RyU<Z;>8+Xy-Gu|-3&9(=)-BHLe9JFu*gT{>CGzHM5Vr|Pqs8`Oy$Q7sH$z$7CV z7QKqMsB#Do+)PeTQ6AgE8weji*z2MnlBusHBg91ehbjCx!OG|K*bHqybXYFI9Y-L` zaG+n~U(gr@A{(m@(g>XZdLq-$Sh?Sy!bn2L3;IxX5eTkPXh_oDB;F<;^|%Y)Ji%Uq zqhD~Uwj4iX2R27f!ng5Qf@Uqf^gL8ocyLJ1LTcHB1o$AVh$>ImwX{vcLF@b~HiA`1 zL`KNQrAMF#2wD?Rs!uf-)cWOs8Z7k21oR~Wn(x-|ZMxp>;E&kH|1)uxss_!|J*=Om zG)7nKKNM#VQ(@r+$DpqcZ_}zdRnHqDWmL`|0n1jAMjYomWw+2vaA9R2`r`1fM5=tg z60ha&6#HmkpNWrCwO+LteTa3mZM1KYZ5jx9b%AH3RfQNlyfwjYM!nE4jZmY0W(rth zHzp`Hie2@hYZLSlsbfi3!`3vdd}dB9Bj%K7O<de?RVXV#I5Pyx&@usDEy3C{R$Pj9 Md0?R1IPG=*1B;Jyvj6}9 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 deleted file mode 100644 index 951f6fc94b4d18d3136b01ee1f84d020df532ce6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6553 zcmd5=&u=706}G*ev1e_My_*;b*^WjLpxG=l6CetUK??ySSQ)%1UPS>Bb!xh6rh44d z-E>#mW06(hfV7rMNF*JI1Y8jZgmTV-e}Nm~->{H!;KcW;x_i23ZPwns?5@V@s(SV6 z)vNFQ{MF(|zy182{->HwU?<Y`;;tV!JWkazO^mrO(+|^IzfK>fZPkd_aU3L(%~Lf8 z3R}3I6LCL%ClzyQDdx6x1HYgbHBlE!@1$)k)}$*vURqLLAGp5Xl@asfK@g1@ZS4-i zA#<2y11~u43NMaNd?|izx#5uet#RNa;6W_Gaq$74kZkJpOEaqS`Aw>CC2CJEimHbU z_m`>I5cA@is%P5SSBswO^K?JyGj*Lw8M*yLLaU_3YpxSRV`|CvSR7*#-!-3&&DXM% zgwsKv*@qDy5KW?%BpcFFDw<+Ttk8*KTm7_m97Kn4$ZXytP4w_?vH3F6ST-J1Ph3jd zMoHZ$#;tbt7LvYNk3-@5lP+_d3>!7qclf0An&zR!OSqqC;dx%h?+f^S3BNYo6-tU+ zeZw}i<oZKAq`Gs}munjc+`^-qug(=Yq@unrQ<jKVM5m;~4`y{3N48O66`#E_K6^Pn zGmV8OyQF&D(;v2iLF<a5b$|Gyg9C!Qb?+xXfK5U9^GRQHjqT;ObU77^U3IU@uGQ9P zYq|ba<$|*BKI>J^Q~JKxfq958t3|jQ`!OuFvC^a!D|Uf;nM4)uu~EHV`<8YKv}s*$ zV!j_p?NdseRoy7TxRA|aSa<@!cuV}u7?zQbU99lNWbEx~yMrqXBOdeUh^GXtx54E> zW}eR{w2bCgjjCYQ<W+Jv4~O{bRUbUp=+!q?bw9qG?u8I8Df)1#Xfew1)X=w@y;8FZ zm|Wo5>8dynuO`kf9}|a9;j_mIuZYjwG1dkydD>G|&!U^Us;5Tq(5QxMQ_F+I^Gt|% zpY-!41iEkTFx8KFbvy87Ik@KzhJtkiQH>2F7K$<`zWQB;Xtmqg)yM6=dmcs}RKoeY znNe=4rEG6n=yy5=8UI|?Gi-P@<h}zpYE2OQ$}-%(>fw}^c&_9T^U8c)ezNd6LM}sE z+)6u;za#2T-yNZ_trqn~)IxYdzT%`~UW}JxB)!+)po_oG?k*FlIuwE^ld5k%LvT-# z$q}0|a}j4gRZAGjlMoR(gOXao44;IaYr6zaA~<G|kIx3eT%L%1NOv(Wl8W~=Q^}$s zN9OPeUFR=IPo7Wzw>M9yOZp}IoJm<o{y&Os@lT4wApV#jig@*>JRYl;z88!`*W)du zuPx?zEu9=ugoS>%m*eM2WK-<?8^`>sYzb8qm2r?s_dIJiSJ=}gF!xy)dME8$t@e4g zT291@LLp1Us-C_z=28R>(wOf*8>6lkXeNWyw-no1GP9q9BQJao@(Hz7mC7)qe3pB8 z?($wiT+5E4N@r7LqbX1*OZo5RfRaZ_3QeDxE$ZXvFWb#^o27&|bqJ>@gvaBN=ORRw z(vw=r!164yAijtYdNkWAdK}%DpPT!C9ye3qXdQH7YqWAn@`fhQRX$p#AziNIaL%R) z0Y0;YK>Y4hd~o#~K*0ZskJO9jflQ~QlnMODy#G`f@rN97PpIF>-TeMM4yEhN_)k^O z;)@A-OF@5RLQLJ*BQ+S1-Rrs0x1k=j<Oim#Jf-7)tc4}Nn;F-|N9EF0Go6d+N8h63 zC>D?I(pMJrM&H3;bf5mbfj<=~Rvwq4{nRz6=~#5CrDdn=(K>l)+0mVk4uDIY51wa` zPu=q<a7H?7;6<+)Oo-d2*1tI76uk{`oA%DDrkzC8`>=|h$7()fdLL>z=29YyLo?|H zHIsCAX%Oke(@9nRE#@U?2^5Ci+*b|sd628gAWAVnCy2+AjYAApvU~@;4>7!+4U@>j zXiWyTMZFSQ#c?%iHz3uzIS2xYLXejh_vY0ab*lViY)z>1lwzhyWqXKD$(TA`F<5Sy z8SZgCV;#Gw%yrrZk#S<SA#366tJR2yK_o4YA0hVdEvV~)dBw1%Zt#f<U7;pT;+&|a zY7XxwL-1=-dPNy8_;NPJOau6^IbAA!q?)cDCeq?QdO4s%0++}^=S~N;ajLefix!Wf zAhHDW9gj!QGl^=;RILYzta7PoE~(m?S(#xmdXLPcY4}cMXuh$3aL;=CYu(p6U-`!C zcOXcWVup*_pv%P2n1HT4TrO2>9`lC@8*<&GO4R}yAL@mO+d<@54yQ5z=TYNmAJux` z4{%?o#&s+d+yi$)MNg9@GO(soYQY7%)|_M<S_J~3VLjoZ>WO^j5yN#oQ<&j&DvWvJ z1QzOhP;DR&4q|SVcWSuU(mHZu*I;$sa@?5pJ-SFH<x*}L;<j4FWn$QZ=|})R8JRUe z0;xNI&5(x{W!<nTTi+K&Pzc=OXac!v2`R&Px7Ry9KJJDm$Z7m;5Dj|{Kk9)p?xkvz zb`VF}VM#uQmL;^jjQP$NUwsW~X+{Hk<`|lp9<!YvBZC0VV3*5*K1Rr~ha(!2^<fK+ z6zSfw+5xi0R$*j?_?BsloT|@hX<Q$@5$f*(z@#Gwh+aW2xfsF%H>lOiCYErA!ov@E zUGxHi`f5C8FsxrBu;UmzU(jPSw7kG(nFe=kfrP=v`x^Vgi;*L;u=_9xQMyozTeqPz zyFUd;0^9Wmc<S5{+$7f!C;ckj1|Rpi1KT{oS%Ra$IaQms7qCN%qloe>v_{bYqGs+R zb&dN+)cIA*#wEZ8fg*%97r2&|sgU%W-@rjYg@k8>ZXD|KK7`Y%%u+S4r@?Jd45$pG zHZsVUXwrPQM{iN|I=~;XhyQ2dEKv<wr!cF#&zfRi>^%}^j}p;Bzt)hijNYVObE=+I zaD`XSn)pRQs|ly6OVP-1V??PGOkWxOgIE<EYH>GfW$vLVb|yYc)LI!a`VwoXGqr6H zHq8uKbxvorRh}_)=qv*_<9^^3Ak?HU&P*26jS9y`eyZMdv%(*qI+7F`HfMQdD|2cY nKBpjSA_0Y|;;~}5GsCcOEtTn&Vp=2Px<lSBa|{%XlYaMq1kcWO 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 deleted file mode 100644 index 632480f19e3c8921ffb158802af93470ad598bb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6823 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 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 deleted file mode 100644 index a315244a5c8af11290208dec82478dca3c8fe7a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7553 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 R%BoArFV7QnIj8;Ze*xVIG5Y`j 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 deleted file mode 100644 index b6f2de2cf25f5ddb97534175854c6acf52b6dd41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7309 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 F{{yCq-+urA 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 deleted file mode 100644 index 3b94d08ece6af841e15988b51c2da034e9d8b6fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7685 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 L6LdMJ{qFw&U>;nK 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 deleted file mode 100644 index 962143668310625211d3e74e9be3e477931ddd1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6716 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 ZMW&e}uNP$PD7PI-ep#NN;+zaR{{<gr_>%wt 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 deleted file mode 100644 index ee626d0580922430bd18d3ef81be3e01b21cdb21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6813 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 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 deleted file mode 100644 index 3038d1db11c2f71dff096f655ef04f73ed291ca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/finn/_build/doctrees/source_code/finn.transformation.general.doctree b/docs/finn/_build/doctrees/source_code/finn.transformation.general.doctree deleted file mode 100644 index 4ed74a955612d2ecd9dd00f9ee199ec6f8e1a52c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15515 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 WYir)2o2Axnx5yKxPD|yYv;PNq*z)cG 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 deleted file mode 100644 index 3984b1d7dee35f0a18c0f11e9f01abd61bd841a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6339 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 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 deleted file mode 100644 index 5b8271a7ccba07b43a16552a53fac02b4bd8fe61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6165 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 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 deleted file mode 100644 index 488afd58674e2e6f64da237ed04804c455031f61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17280 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 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 deleted file mode 100644 index c19ec7207840b8eef6b2f951cb4741bc6856c3c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11501 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 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 deleted file mode 100644 index df8d05d07f42fc84427bd2f4d63990f62a8f54cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13465 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 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 deleted file mode 100644 index 1537b4cb415757c59fe4338f65e70047ef8beab6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6961 zcmdT}&2J<}6}P>fvBw`{?*>OmwoxlUG@IQS2Z+LAP+&odgiIW<y9xmjb$YsMrfS^N z-E>#`1F{Mnkk(RNARRzJBu<C}LWm;={snG`e`AG|11Em3s=sE|&e}^3n_bPgtNPWe zs#m}F-ml*LbpHM4H)r%e)%HR+mBLSYLFln0Q;XCwW`WG!%dY<{yPtJbD|U{OFpXW7 zsToMPT=-thg6yq~&!~ljxl)8dDbE|c$rs+rI(XTTLi()sN_}}Cf}kg3CrAciJa%Yk zFOe~G#=ZzxFAmed`=Kp)%n}~@USf?yFNF?L361mj*fFh5y?hZxXXyEPrgy~~Prek@ zj2!G=W_+E`@++#DTW4R*(;l+@wC|`TN6J|AQwgh*6|V>{fyLB<>pMw;PCPdPXKbDp zy)>#CeaAhB*??qHwIH1#y~=o-Z}MfDk#DK*?;M5kK@vGG+aXKr;M@}PWL9IlI8fd3 zIBVC8)Qc1BYI|=k?W?sU;vzWiIi8neqagy19oJ6N95nw7_Qx$8&vW>E4xi`o>Cj$b zq*&-3c3>qD3~`X^)@4twV<2!Hhi;y_m(-B)=Dy6Fl)u2cH5>kR+J;H&8WT?9bEm@R zj>c!*V$sPinI8KLhE_PRF1fVc9RmFA!26ajqI)Ik=@4eqKJOVHEPU!>rsliqyJxGl zIvRbJ2rj!$82{CeYinm6#y;PM+whxe9%0CR1Y;e%Y111!5%30?#uHKH(`RqDb6tlG z8oZ_lJ3$ai9dl|ksHQQB2{9XGvy2pg`6mB?aXhn5=lp|c9gqE8?Ux9Z5uzB24_QXg zdlOpj<?j1*L(iPViZL17pQ2BZ4iGqByetq3%U*uq<Qa@Fb_SetK?Xml49-UdzFK-$ z(_4D>YycGtKkxPA^6p=5c|Un%d8~rfo>N9sJQe}9F%T4?PgOI|it4fv9!W=|9U)OI z4pQGYspVa=*BvbAb+d=cUIqnj7|1#)C;}2C`4+OFGmM>x*Fo~dZ#u|wyVkCrZujl8 zFmrE$2E3g+>xNp$$7ZE{t1hhZgSwsJ+ba<ZJcM8S7)i6fh8vfiocN3{B#RxtuIIVO zFTOy^MMTS8>A><Au!ZW}kwQCaUT;LrMJE(PPP*pASUtDWdHor-_|x?0x{zwZAjnRc z`s)8d3NkQ2QZsf$knz8(1+?TzgiM}8NiCy?9Y?-!1%Z<Uj+{8aV+-lAAaL)|Ud)MP z{9Ub7I`NQ!ar~9G^GDE{r#mk0%@X?3e$7v(C=c!9cYKTglkzu&e?w43Ui*EK$JO6n z4P)!I)R&^n_Lk;XRu}<yQqzb48CtR-i}5!~WpdMsi6&TSv{YlphmN1J#FC*UIkN%= zQkuwOWY4<od4lM*<NGH!EiuqiTHlgLtTdoZ%DkIa!eoNcL(F~1AXGAMDE={v!(M^y zPvX)mU;8(X<6rg2G3j-6zsXPWlYqtoU{6XEzvo1ef6}>bb<T=$74bC}vpVrTJ7Zd7 zCVA+AE`I0ZQP|T9oMP~L*L*7{jr)aj6&KIDMTh$A*{d{4>0ZJ7f+N0D4r=66(v5RN z<*f=x#0LL+F(4I8gi`&7W{CR3(|hYEY@Ji_Ynm!icE_Qz*cYH4H5%B^<}<;eVCSXq zd4jN~88%_h(bd_RnUBh3xgkeukmH-9<qL|pw0L3q(IPczbF~2eup(M`%!wBN#VP;g z<+&9{UgPhpt&akoz6uc2`j5dwwJ84U0)daYS5tWU)ma*9+nUNts+s3+Ln;=+{>Y^8 zrtw!Q{NQ$_`$k`fnbblMn(O{4P4}8!EakJ@>CT_3SluL(JYRnFHJXmN&gd0-%1OoO z8)%GPr?1=inpnm1qpRpVac#g<lDd;u{%#fdx;piCtGw9F2@NY4`V-fpO1zQHS~$@w z1{3^-sll9|p~{*Qzd>VXRohKts!7>pEo!CcF*PZ*h&)g10!6;7ROHiDzd@{ty_c!x z8=6g2e%szxtsx7DlZ0`GhUcJ`C7p4E#&XUlq5A;MrM#KOK3c0XbZx3((OXQ{pfV7s z?6pA{N?gEM?d9IATBQnNkdEzRst9K2X;V2RLIrC~mB<7tH%$-oneMTVgygoS#i%Y} z#(Y3tTH9AEF^j@j+CDpEezrHKmbl}W&4#+ljs<LmT0oi<LJigMSU(*?Uz_MF-6#wU z(9;4wTt=J99;mivQ8o)uV}le3aw-SiTU{`!Ol?iRv{@X7vCW;p^H~f#(^6fTskJbb z;C3}F4Xq_p+f#3*RE*vsH)$Ka)f(Ej_wRn&e)CJcm%3m0%FDN~kV%OtEoz-MlfYsi ze36gMWop%Tf??_mnJyk?Y7RwS^-Rp%F!pSZ(KQS6Q9*AXRgy3mV81Yp@N5)12I815 zm2D@Lp<Q*UIRSL7dg(Z_O9aBgx`SA541!7u*K|+mhE-RTu+$4})Kwt0j(bL!FuOid z!^M^Mp-6<m>YD9|#OeFAk$ja4g=g>^Y6Y7~;0vY_1o-4)_CWZ$TB+I*i)^~pz^7cj zUtBUH;1*L8$d$#VjFR1*oui|pUUUM^6ZFD(xZ|<I9Y`iSncAQcq>)D0l8s?y2`ew6 zzx(+YUxHcM@xYy$hI*=Lwu)(F7@|lom>lS7xE%YKq9vU^e8H1E+gnuIK-SnUovd8G zZOT!n>RG)S5uheT7Xv_#Y~%sa%c${}O?cpXauP`A*ydu$eSCn|c|RnmuOwp!j`gDy zew<+BGrDb>wja7qZozGrgE+W2U*lgmF$zRBMjxaRu7>o}gZ_CS_xn?TBy>eEz)=^0 z;2MR7B<)Yit+R2TdGO5>%*7clkf&<H^+V^tX1JvKHcHmG#88p_fx5ziL#oKDMH3R> zgFq2dn*gq*ZEm2t8h;fN0TmLF5w`KD{(c`pYoeE`CAu5h24#b;*;L+#_yTpB=g#O2 z%3gQz#rN?4A%B>v7QLr5tA7>H68n7b0e|=)<reDbMtpg6hepk)W`0AiXx9`s(1I0( zDGNm+L6*v(^o7wsNLBgE0e>YgE$^Wi`H+8@s?|DT^d?qukJr9I*fc%l)rFj~R=vl_ zq2dqRjQgQqf>4WoYO1r8ZcS)x6|?F=*CzBMQpb`~!^X6({LPG7M9eA0+90BERUB4= caAp*ip=F|bx$M@+Sn?>^<$-~+aoX?w4=BfVDgXcg 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 deleted file mode 100644 index ce0eb33fb3b5c5388f054220d7d603ee61f2ca8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6599 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 L1qRB-Nx$=7P_E|% diff --git a/docs/finn/_build/doctrees/source_code/finn.util.basic.doctree b/docs/finn/_build/doctrees/source_code/finn.util.basic.doctree deleted file mode 100644 index c8ace62eeb3bc4308309de16cc3a2c5464b90c88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24782 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 G`hNi*SuzU% 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 deleted file mode 100644 index c8e2f92b5f73be87502a77d68d501cf92f84d119..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27586 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 VDSib<C4HQPLF0SuHt%?)_P->=V|)Mr diff --git a/docs/finn/_build/doctrees/source_code/finn.util.fpgadataflow.doctree b/docs/finn/_build/doctrees/source_code/finn.util.fpgadataflow.doctree deleted file mode 100644 index d73ae460387d36d94911508713eb9c2e2a2b5edc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8928 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 H((C>YM<mhY diff --git a/docs/finn/_build/doctrees/source_code/finn.util.onnx.doctree b/docs/finn/_build/doctrees/source_code/finn.util.onnx.doctree deleted file mode 100644 index 37b1cca4b5168af822e2985137bca78351fa4673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4140 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 diff --git a/docs/finn/_build/doctrees/source_code/finn.util.test.doctree b/docs/finn/_build/doctrees/source_code/finn.util.test.doctree deleted file mode 100644 index e60811840536576a89d784df9e24289cb5cba6ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7718 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 diff --git a/docs/finn/_build/doctrees/src.doctree b/docs/finn/_build/doctrees/src.doctree deleted file mode 100644 index effdd10387320a6fcbce245d0bbbee330b41883e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3306 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 Iy!r6-Up(&t00000 diff --git a/docs/finn/_build/doctrees/src.finn.analysis.doctree b/docs/finn/_build/doctrees/src.finn.analysis.doctree deleted file mode 100644 index 4a8f4e7ce7dc0b2bb6a258960c17e41a817d3c69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15801 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 Mp8+Fzqe-*=2lJjWCIA2c diff --git a/docs/finn/_build/doctrees/src.finn.analysis.fpgadataflow.doctree b/docs/finn/_build/doctrees/src.finn.analysis.fpgadataflow.doctree deleted file mode 100644 index e0d66e2d6de1bcb04b67fee1cf7d2aa92f98b695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8924 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 YJX;w)o)4=qSvD#4r&*GqN!0874=gt%IRF3v diff --git a/docs/finn/_build/doctrees/src.finn.core.doctree b/docs/finn/_build/doctrees/src.finn.core.doctree deleted file mode 100644 index 391b283db87ea052186bb28e9967c77d1120814e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80223 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 G^8W*YbiSeh diff --git a/docs/finn/_build/doctrees/src.finn.custom_op.doctree b/docs/finn/_build/doctrees/src.finn.custom_op.doctree deleted file mode 100644 index 385263a26e09aff393a9678199e40ca505c41f14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57329 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 diff --git a/docs/finn/_build/doctrees/src.finn.custom_op.fpgadataflow.doctree b/docs/finn/_build/doctrees/src.finn.custom_op.fpgadataflow.doctree deleted file mode 100644 index 7f8ef8497181b3b51e256dca3d9535b9aa6648fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163027 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]J&8V+ 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 diff --git a/docs/finn/_build/doctrees/src.finn.doctree b/docs/finn/_build/doctrees/src.finn.doctree deleted file mode 100644 index d8bf6824f2f39ee4cc130bf10504e2d11e32ba0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3471 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 Ptu%7moCf0Hb)&)G<k3O7 diff --git a/docs/finn/_build/doctrees/src.finn.transformation.doctree b/docs/finn/_build/doctrees/src.finn.transformation.doctree deleted file mode 100644 index 188aa0d987f5b57ed21c44a1dcd8a0b880807335..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46371 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 diff --git a/docs/finn/_build/doctrees/src.finn.transformation.fpgadataflow.doctree b/docs/finn/_build/doctrees/src.finn.transformation.fpgadataflow.doctree deleted file mode 100644 index d7140a2a9a72b9aafd1194f6c25c2600044cfa3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72245 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 GGye~_g`rLW diff --git a/docs/finn/_build/doctrees/src.finn.transformation.streamline.doctree b/docs/finn/_build/doctrees/src.finn.transformation.streamline.doctree deleted file mode 100644 index fc4787c61b9dc5c94645cc5b08e29a6b1317f55a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52002 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 Io+g|6UqY`}{r~^~ diff --git a/docs/finn/_build/doctrees/src.finn.util.doctree b/docs/finn/_build/doctrees/src.finn.util.doctree deleted file mode 100644 index b8ec438f0cf9c2738df4b83f592496f2209345bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66057 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 diff --git a/docs/finn/_build/html/.doctrees/end_to_end_flow.doctree b/docs/finn/_build/html/.doctrees/end_to_end_flow.doctree deleted file mode 100644 index 4491df3570b2d3cd46d81bb068f1076304a101e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2537 zcmb7G%WfMt6t!c^w){{W=doyPL`4xaaVsfp(;{_O0nz}00c~0o*#rbNLy4?s$SKLO z<VApXQ6K@hEBkx>mYzE!jVuFQ)UYta%lqazm-GAP-~Y7Ns=v@lO;UQ5xxO~3a53zV zAQ#%lzv9zB;`{g{v@M@HQ`$ttum+7psw}la$9GY#g>5GiuZ(W=WlL_!?RW7BHd|i# zOkCRv4_?0+4!gbXk2>vn)5D|tIy2Kq7BJZSS<EQ(f9m}itE3R*C~OrRY4|7)<+|Jm zTk|A`VKY-	=w&VV8Sv)u{9+j*8h(sYBvnJIT0n5aPY1d0xNmq-C*OjCgWk#h7%; zu<iMTwxaCFPvjm&ln+C1Fg5nV6+97xvC?{g_PP2^=#+WG=rKlxee00v@%ctMqQ<D4 zPgWZ9w%_ko!n3n(zdyjgHeQU3xv2g1a6D?Fd*rJpW;`!4(RY`V-EOyg<`SNXv+lRg z9#>1ALG!GepgF?Utvx~U@)3IcDSn^f_ZYv=srbq^o_`%$m01j1bGxunS{1{W|0kOm zb`!2smGZjbVf{49A6zM)$}g5}lc(|+rz7Mdt8kB+*F&!e6!f4nBVS}29?(8uv()I$ zHRg3tgf=2<)CWTmsMWj)v2fKCzJQB7CENATNlHs_VhxP;7m^xIVaEyYm7ahmcN*S| ztwEP{ioX5Avl2L35Jz@~p*;~=SniFDSX5o{I65r$>M#txFR<L5FH4(Yb>L0H2!6DS za4qCzuVOeF8{-KV*EY}B!vS$nmpPk_jm;w@9S77GEHOE8*}>(*S|T!0N!V0*$rdC) z#JRzo6~nM^MPaOGnYa{LJiiroCC{2=E8Gz?g<g5?OSe#Jg;pv?<pkk6Q*JeS1q~~B z4oTZvu!M?=A3{gzqVym~Vp3?u&@TPB_o4@g$8fy5$%M7WG6`H|fHQcG+7chbZBzPH zFRjW;3@0~sZn%)YhEDBtnLy{|@TWKI?Kl1By|2Fi?gg?~)wtmz98x6??UHCzhRR|% z$he-A;5GW5VtorUGTgNyF*aqXD1Z{gQ-H`2Br|%9V$m0svI1j9&7#~29bRH+EJfj# z0<;d&GA~#IKeV?JDB`!~89BUNNzh~M2n0(};Y67lHp>ZEhhkP3C)jn%3M+|cm&&Oc zsJB_F93N#=$UMvK1uf)h*heuAMBvrj2X^LaY^<_+j&=%BFw`VKsHCcQpCluW(1h^N zmEITbY%rKkr~Tr}OQZY7P6nyC96-|zVz^Hh<dH0x7Z`XLD!6|j?>&C@9Bt{?adIOJ zNtR)b7h$|HxZ{-Y<0_2wd4>>e&qp9a>Sa9N2`7M6&Kia_>9cCQ$B#6Gkd4w#SgIW8 zr5>e#^B%6qW(oQox-0GZj7c?-n8gxc-OLQ(eBb39top44i5)EOR_l7nGDCB`x|2>4 z$-x(#Z%r<Qr76T<eNh%jhHmcacAb;{BS2yjrN=nx#S}QAx!}sts@|c<M<N9=uMkTL z;o<Fmk{N!%M9x*lc#7-2x*R`*4WTdTCJj6FJOBZKB83qTTzlrZoe0bqTqJi82&nM* zoIr0<x;NirVy#H)yA@)18#jwBLO-r$$hS#Yzspzhr3-Bm_^Se4c^~Dgp_7mBd@1)_ zIJkaPmGwcQFpnraJk}DT(?YLK^SY$gL-IJVd}Olb^efeSH-wFLd&OgW5w$WpTJewh zXgv+&`!{{fch<rV$lj=R@JR!X;B&-bj?@ktPOpgf8gX?byD5#CIV0%~EJyu+0hbWr Ak^lez diff --git a/docs/finn/_build/html/.doctrees/environment.pickle b/docs/finn/_build/html/.doctrees/environment.pickle deleted file mode 100644 index 80103576d646bb6639d0aae04aacf6c40b1d3593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133071 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 SA3USlh0J1U2){>_(*Fn1V>4_3 diff --git a/docs/finn/_build/html/.doctrees/getting_started.doctree b/docs/finn/_build/html/.doctrees/getting_started.doctree deleted file mode 100644 index df22a7fecaeaf94ca594133957e914504b10bb9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14132 zcmeHO>u()L6?YzX;%6Sk5lv#Ug;q`6+-o~=QrGH(h|o5TxHO4L!-uloyF1sr*L!zw z_u*>`RkW%?8#H`CT|R&+{sV+61VTtWzws|1At4YSs8p#4@fm(+W@mQqb$soFR%xoV zitU{}bLPyM^O|$czOna*r=A=T|M3YYw9~}%<7yB(EYA3T8fdW~$==OQy_vn9o#exj z)rrG2vRTFl0AahH??f!fUd`MAzAt8W;)Q{RcL&`eci*eoNxU3Pyu@dvSNy;WEJ?gz z#kiJOQNo;zKmoaTiLKL`n*nZSf()QN%!k?*7EUtvpu5Z6!-sORYJ9Kn1uUzjb&HQ! zNfLSWG{JU={5_r%gH*oH_N_R^ApRZ<td{(1zmv9$hq`62Myx?FDc_e^EA%RJC)}g% zD6Qxo<CU3C7_G)_%VskTF9>G9uvq@JBDZG7a%<Hn2BpU@?@8<Kh~#C#n*(ZqAAd3I z7)fZPF*6dE8P8v;)eJjqwLPCjl0B2#02M5n1*KI<Y0W)O{BWnh1os4({0RPi3I86$ zzsIpb_mtS!6B68=2B||Jb$}0p%hpO{wcXOm-8j2@U|^}2J|lL+)OU;^OpH3wAEqmA zVuTIDGGZLF&y02&yEu&`46w`42aJ^%PRL?|t+8k$aY-5)VPtHC>1hLyMr45xkzvI^ zVu!vj1&ol!cI35_c!m(g5>v<XeZysbo8|*N0MY~#uYikQ0KNi88Yf}Pc>d)VE*O?= zGw{_)u%Mu%%_1z`iVfFWaVz<g71#{38w}EBv#Rk51I0!=3fDY`88H!V`376JT5TU2 z0cDA`O8ZD63xWuKutbQ7VSze2)sD3R6dmG$B&6;o4V-W+x9l|p`H*g)*btaPS`yre z1#|K}XuPypxpiv|b3&sNc?lyVkwMG6490@vIm6^uZAFaL##Y*qXJLjAx3A>lW;D`3 zXmie7fY~gLC0f`AZzTYWqX;MBZ=5#3L(6f9+JJRRb8&JJdoA@M=2UYDejq*%#OJQW zr?72bhHZOx=eF%>_n5G0`!G$|xU|l+G33YHuv1CG3aoAg`dJ}UUeQ+9QpQrim8~<u z71r4*8`I&!OK4--$L^0^l`2BcHdc1Nd$8F1H-Y<=o$s9-)>6r?j|jUyT2En26VvzL zn3Q`jToMdFy)j`&TBX-~>>KqoNK#{Np*lM+34KO+FE<eWd$I?pAUpsi?d{x<I;t@M z``ZCG0kl%=4L;6YRpjuYi=n-$+-5=L&74a0x}fhSu)V$Al8U}@0Kc^za9{eSE*Rt& z$Yfsk)+|_fFF?59`<95I1epcd@8x7~GppFmdm!*9+YzXCLqhW7?ST94=Isl{^7TvC zFI@b(`SOLO7ncndta(uwkVqSA7932S0)P;HICp8}3U9M<!-21`;gdIvldQT@6)v+F z>mVE;w<{vY`22h|b`AJNKeXY&oKqt`Ldn1T>7YxHb<&;WyDu1-J|yu3*8f82<N*;O zn+Q5(tWj3H@h;{n6ERxicnNFQFwp;gyOaHGPQxVc+@o_VQGd@!kW45XgEIVO!>$zO z0D#}$j;)&&W^3epNLu8K@0u3zILmz&8A4&dyL{GI9#lz>QTV9d@lt@_>yyY4^zlhY zuBJgisw$#FFEGmHbdqoNTFbWk9}xcUJM&W?6}J5HVUVZI-;J;C8W=$2O&23c2O{o- z1+llr{0$KmJBY;nuuT+OfnzwV?S~?ICi<(!r6Q`P3rfRkdA?^w2%Hl)M|qk|4U7v# z-YqNGz!JD1_+-GA!+>s;2xa9pGd7-flcXIl&d{9?UZ!HFQRLaFpSG$99cG?gHYrrV zHPBF3Kx0W@hq1Eq1u5u<(H9mj3PBZJ9$*zC)(&HjOyFs{`E)>pya6poX;6_1!tO2S zAwA~c8f9AnUAue>VY`cKM~=6FOH<e(uC(Y@zo-q-x9=f4OWJ-<$#9Q0cR{eqLP~eu z+gjlHyO9B9s1NqaPl*GY-+`<#kk!w;@Vz1(!8cFlLm)qmyo`ULzlf5RX^znLB^QJb z8bZDTLR)q{k8CUJa+fN(plGUSWyuQrw3%KVH*3P1U!cu{xD)uzNAzhp+2vgYt&{xP zC!k@abNNKj-%jFwr$g2QJqoVGXS_@AOEmVp0QUK91cy>RaQ8y)apIGF{;sTuHuHBm z|2BNs+BXu-%JDt~uOi$;fA962$}PewBIHDl2DuDmM`EOh{Ib6g@hOrQY#sR?kDf~5 z_ay(n@n}XhuSr$ALcc`*aEDpBW=+o!cgZ6{QOAAU&5(IA>j-^U%ldi{5i#V&)P6!q z(dHMLIHYNhHmz+$hYzo}{6&%OMC!K<^=8o;6K2FD66GEHVPH}egHr9n`Jb+NNRe$2 zZ6dCaWESpBxZ)5wKXSd4OQLHKQfn|sA`1;iNclb658;T(O~S>qz(H0HILTw4HtdK| z9!vRGN&zO6ghOr$A;Ag>042*T1FUO#gj~3Pku8LvP;^1r$2^n}qCw9+vZ3-=pQRmX zNodA<-JdX`$PRm@4f&)_wRW33RN8PP;6i|D?mqqqyRP5EntTI+QULheANhl}glF zHo`WE!f7K85tpq(iBrmrQqV)90;vk4#6pxNlBnW@r65oc6jPR#a1|?2e8&*>K`inh zsV9#QA@Ci%J=t+RTU;+&A<`b8tPvr3OxWBoM#zO!DQXMRDaw9^gs|g5gs5@=*tDGs zidKQ<Tf|gR51Hhr2+fYTP_p-TFbOAd6U#vb3;!}C8LAAz;NRYOH)@s8?<Ia`nE8D% zvwy*Wyhy&nB>(k&d`MdM@9SOY)7Y6GodW!u+n;jtJ0!A&MVCgN5^bo{;Ud*l(ED(D z`l7srNkt(gIZgIn>7mxa#p!9f4#~S^aos89euS;Zede~BCrp7b0A<rnW_>*|7(55* zV<1ZvU7AV}V{YArOCTMzT`O2Y<wmWDc$3OZ&|sN$g3G#{8QG-V?-Qr;V&_ntAotZ} z^-kXjbCiaj+$ldxO1$$qIM-k8Km>j%Md0TG6cOVe?*F4JRQ@xt862ZLo1JO?3Bdns z2gm+XdF(2d)0$tb!k^2_+!ZURl%nj4h_WjPohqeJs)EO!NUC%(RH&eqP`A4X*!4Y< zZVQy_DkqaDX6}>gn!1|Dq+}0XO4}P)pX%7G9)_#BAhQjWmZ|1HB<KE4zwRi~|Er!M zBK<F>_2x2$^!@PRO);|~QW=as5Sl&_?EedR`z08fApn|fg2GL_6yHAv@lkY^<NF)m z0_+misD&Ywc_<Mp^)eLMd)yl+_!7a{=4c&RFNEtTN+YJT3?$xG$(qyI=(xSh_=mU$ z0GqV;^(gFM0kZVud1#i%U@A_bL?5Y(0+p(9n~19;)v7q}#YJJ;#FBCw5CFuTEhc*t zd=KHLD8!!><b<nOnS2l>`ji84yoSi&C#M!iC<TKg;oO-gtF!ojZgBzs%{-UT#Ah1k z?DKW!>=}zab(Yz4vuCY^g}HNQ&dkl%E#@>D^ER7XI5+Do%*~!ZS8v$jkWoaqap(c7 zaT7#zP-b=E0w3__cA`je{eK}iWs}q##eg<1U;Fr_72(3ij8&Vl<_Nlwu&4d_)z6X@ zc}1E))+|qY5;Mw0m45Y}$G5P0{Ci6<FfcTwJcewvp-ciUzfO#zXOzSSDZa=qD04_Q zZeey|P7Kx<1&q@0<tcpXyJ6Z3DWfUw#^t6RogT>p(#cO1NyTZMkf$|8zjo{tRbJtV zF7}rqkSVa9@(ZGIqbWUiMVtCke4zjZQ*%Jg+!%m8m9ld506*L>dN@&z9?)utl21wv zSnB$qeDk(&1+x|;v(DcUvrxouQfHoIuZSS3y%EIZrU-%vRupdWR?{UShl^OEpT2Dw zIn0&lD@P9eH^M<9n<8#usK=pU5dM^^VIU3xg-FBn7PwMsDip_wnW)z}hE)&O(4kjD z;D&LehsbfOqMAhI1#6*?G$1aD5p@(&Yo$o|>gymfz-T}aE9d9fLcbn*`jB@bbP1Bg z6kO0;bkH!ZcK7)%^dUEwr0`wUqI4%2z_VS4T+-ANWlg2Ss0b~oXe}v<L<&?KE`jzc zR9|g{%=gpQN4L;cDNZl303A6x<lh-^!Mc`Y-Rd2&j`Y^mGlbrr@73GSZ_?XlH>Fzx zXzGOaZeXFi(%z>^RF=Iae{_q36%4H?GK<qy@V%!i51@eWW01j~l4KoG1c=5xPr2ff z@mCPY5Tj)eHw9T6*=+Um&TerAXh0|}azI^m^KyO(yLzQ6{hQJ5DVb!nfNz~w)otwV zG+kqN@d@fHfJriSd;6Fgk!|jLzv_j`_#tddcJL!ljXQMUWPIql<)`Rx*FAm{H9ow; zP!plP=L`=HN+#G;tBr?IxeVF@gH=3^<d13O<7qqzZIhDQ^cLR-41%s`Bjbk~=v^S6 zTY7nU7aymu0fMw;t|Jm^p?1qBkQMXVCYftYje+u*96=kl7%?fjF;#OuR?H{l-TF0- z_7;k!OrO$>+2!4Q#I=0=ILHsNbq~Bk4KIxq&>$alSUp|Aauazq0uZPawJ<UaH()c` zRQ3*^@B-xXO;nUZ>SWINaGEqK3l%i0X8d^fOOr)W7@5c&I@FtwgTvnJ1RpJ+gw>5@ zP+-aURL`3p6wN<EHTi_ZThK6Zp?2+(dE;z#zB2dJ`2`Tt4bg*zAEeF1;Ft?u`Pf{> z$9-ftQ)`8R^$wnQ<AV+U5W4Kb$T4*l&4ZNG_z-fm4eS@J@f;IHzJ|A+xkG%yN|Vqm zhWKs|(lzd+t+uHp5F8c*B7uYQ8X-I&M!@DECOIgE+A&L=&_qoUPzRA23S(xLX9{t# z6LZZI%`k+^bi9}v39*r!%6&>R+-W|B&BSOgloecvPYz~^!VrDzG0|r2qQQ=68KaT9 zg{4WzxuJR{I-O1xc_1{-SHoy!26?O*K*lo}pQIUtk!F}^kOh~K2S-JewJVR!&Vwxz zQN!+8hDM5Ij;m$F*9%pTB@MBRo3wl^F`QU+=z^2D+2#Fw3X;__wUX(62ve3~Z}B67 z8n`Wd?tnrW1ekc_K%z(Sy^el_1|EzzP!U}>=>rEJ{~)h>QBQ?<kHsx~gk!#zLXTt2 zd`LXYN0YiM@qGeua0=;iDyFkY>K9Io43UZ1t7$vCB|amPjf_(7Z$U^x8y`^MsFfi& zOr{}D>)mh%S*y+*=;j92av4j2Z4%{PYt>{e%kxbXg;8{-?{?ndd(dA>ANlb8(j-6! zAw^yw!wFNiu?UI}VIfFG0?P>AIP^)+>o8hfqw=#K3<Fz3KTszPeKCabeKaWlKG}Q^ zirV}UdF(50&Hd2*pqbIg59r4<E|ty4>BnE_$DirPEWN1E4@N)g^n=rnTlkUkVZxnk zw6QOIpCho>+$%s_6L@O^=Q{#lP2j2tJT-x%mbxcsmLO*o<UHYi;4TST+>az7k7z<D zmn#XO44x!}ZVZAD5rd?Byew#9@8h;7n<7Z0<p>!A1t*zY9+7Ym7KmG`9{O5#1?cB` z1~v3>7sg?=s+e@R3%~He<WVMjapi9Y_<oow4K{(Vn4safU&OG25}~$8UBjb#SP0aJ OLq;;UC*;J_di8&&e#*xH diff --git a/docs/finn/_build/html/.doctrees/index.doctree b/docs/finn/_build/html/.doctrees/index.doctree deleted file mode 100644 index 85ea545f0d1de74c2305e3e13ed541c6f5529084..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10019 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 WXg*OlJMGSe<gv=lO&|?5!G8g-vuR2I diff --git a/docs/finn/_build/html/.doctrees/modules.doctree b/docs/finn/_build/html/.doctrees/modules.doctree deleted file mode 100644 index 2ab6f8d5dbe5155d3e1ebec57f89ff8361812750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2839 zcmbVOTWcIQ6n1Ry&6l;~)O|=|;!;8`#omU7l9s;YsRYA9+R*kT2<=F_5}uK!lE%9( z1k#5>0(z?o?awNO(&zk=ewvw`-E|=kH7p(-o%{LDIeNYM+s^h{`RDsgCxw%#Jyn`< z8+<nsGOk?sH9Yt^ybAYy&(NvWg-LkuYv4$POqt;-ybNN^cPvkw)T-eZEzuU8m*GAx zTTZ%^FJ1W!YmyMJal83~&!U}*_)93wLHxkCa|#14h<$NQZ1{F<e&{z-sdyL`BkH%P zb4HE|2e+e}8<JVL<U2`9tpyR^Ek(2HtILXfaTw9$-0*SaDSXG#NxTZ8FK&wMXi?nq zcL!5#&TUQ;J{U`-21typzB0{<l-pBd;o<GG^<sozx{1zmT`0B`ZIuYWXLBLd?36NA zXSw5a;tXHTOvNjX5Q?~i^n8Th$N1gF?;d_PeW$jI5Rn@rtH5@oO45Syv4l%8=59u3 zjOR{-vrQy}=4Ew|x=E@>;jM2A$r!5l*6-G$4WX-wY{U&`;cU%sm9?{4rI+DtAs&cF z;+A-bcsG%y6I5WuSHD+>bTTzG&$$V7+5IU0$s)T^4~obe6%_>NJnH$e4n9ivAiYu5 zrt|_?U-e+wT!R?#Fv?!@{iHAvQKUiA&YV&q%6BbyPO1rd;Cj;(W22ShsHty%N7Dic zo_B@l4}EXK6*tsr6L4S@NOUyIaoDcR5a>R~ajQNSCdFwNnIaK^@fPM<v6`2`AB?qj zN;|%Ed3Me3#s))S$ZV`l7C`A+R6i#GTx?VemA5JiPkBipQ|Sbm_W>-{0(D~y{f^<e zHjbqHf~VnZ-ERq+HpiB~&Sw(2a?}-e&eZZP#z(~j=K51=6mkU)!)XRe&lxmI3@W_w zeW~)o5v~%=z!iM2aO0CFCsyM7_Ua|!#%MzXRV)Q)P&mYvxZwA6;a0V@N-e=3UAeiU zLj2_WmC}U+{inlkpOGIvJAHie=!?&vz>8ImD=PecjKm^c0*OiyS@63lRg;2FIP%VL zUPlZ08-^#^FoJ#qN?<QG<<Peit;Przd6A6dm^5-0MBDdi;WSy0{JI3Rc3F|-q=6sO zTM{IYXB17N!o8A$94i|^ups4@7fh2`7J;?TXSueVEK8PHNgTP5R#rgWBTQO4N@F0k zmz{ZAh=+a$!B{i`t;fc0%|@C5)6aQM5EBN4O3HY5B4tEjIwIU33+HnC<zO(KPEYeo zC$u`%W-?&>VgOD%2>viiM2%5`IG!QP4q5GjescHI$4E=xjFT&7B4uIb_S}rq8VgKv zH!jTxm!&Y#b9978U~v$3{Sjc5k*32M_enY7F$_N}y^+dt6C($DV~!Z$yp8?W9MOLJ z_EI@IBSKC@iXXtbnd*r19h*^f)sF?5*h2C~d9IEm)d{Uf^id)x`UUl^nhO<+Q;0zN zyvX59T+8M7t(zXR8WgF<DD`{_9K^X`i_t3IKF0)SXv|C45}Z3|J4{kd&k4_{ObM2d z;pKjO<2Sgvh|AP>t9gJ11d60$61aB6Q8VF~FIXzqVF;*jcq<?`*fw$J`hyi}wO&Dn zwsCW4NAzPegWie6>RY@J&#mu8g1gL-tXDz27+P@$|DTI(>vxw+RZ8zB67wjUhsKH$ z+iA{Mxw%ZK_~1MWmW_1URKH~X;0m$f?yYF-&8?O~2P^t9AB~Fx`S7Z)`UbB8G<(C= z$EyZCf)|O!9El3?Zs^-f3;fTiiv?3ZqrlRG9GzgTiltlsq+YnkXk$kK+~Wq+$4(zB ztuVx6Cr^&!K8uUt_#R$g_p0aDq5tZCD0uh!cc^&x`j4=9uC=k5|9Rgwjw|?YF#YvD zCf{n7(Po4M;PU;`Z-&o?U&r=}uRc6y<`2PYt^fI-2L<&9&5)dDv@G0qLoPAC#p2wq MM_hbV6r<CB0s5F<V*mgE diff --git a/docs/finn/_build/html/.doctrees/source_code.doctree b/docs/finn/_build/html/.doctrees/source_code.doctree deleted file mode 100644 index 4990dad6ddfef91c5d78ed7fdf1672d78a7a40ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2572 zcmZ8jOK%%D5cW$i+maop=^=@c6h+V^g`@@zinN!a=&3cJi;JL_fZ*;@BH>+f%ZDWc z4bUE1Bmi$^e{cJ7ceR!*V4>x3IFE0>8SWnk|Lz{{R6jq;RO+nA%|xn<nc(|TP%vr3 zKjFon;eB}S2bwO8ayn(f??5BvBF{9F;a%W6zGql!g_5m4@9-|~y$jE=*|EarY-7tG zT~?N!{s?y=szK}E7q*K2wm1I@m3x>w^WBodp$+_$@A7@$ZNi!PgIq`!W-g)rkXoxn z;w;jLVegB~AVl9wb7~BPc<)GB)NlRFmA8w8rdOKHqmJ`EOBZn~@DYE=kD^EZ$iJ8_ zmA*11P1$rVq?`gMQ@_>GkQ6CRv_X`QFZNu5#QLc!O66p>fj|w8KQSd2ay6k@)*#=r zDz%zzqE+kibELzc0IJXMe2(WCo-gn`^hX=Mkt#6KqDpY)PdB!zIK$t8`ePx}++}Po z@=A|?Pkq0jtBjSFhoAq$4~WsSDk<<?<SGdteV2<YL&-n-VPl{b^rb5jrdbv)cKl&g zaHC{?6Fxfrg1_RA_)7qC04T>O(^fM6q{(@_)U+&_4s<iWc>c@V5>$42E@7>Wb^7B7 zJ<c}xti?|oaRXO0H-NeQx}udi)M-1UP5&*=_{(^9*N;-CBM(W-zvH!}=ArK!X04D5 zbke=HwdPt$%fJHPeM@r(+}FLuM>9WIFv&EvN(U@53jSJJlvu2b3)@#%9ySGaI>%}V z=t$&k+=aVNto=>!XLF^jRF-XQUhMi|Y*SQ<tmaA=0g{mcS4yz9i0y7*@=+~eIjbaO zDJ&=J?t#bVK+{e$f2>)lv?V#aW_h^S^M{<~?Xu(Vv6TQ;mRe`lN*&+HSmG9NH(F9H zffY0~qXi@btI=LDsqn#%ge;vUOrna=3Vz`1eEeo?1l}KSZxW`p(u7l)<zNvChul&d z{E2dQ+e)Xh68!m{ojWG@?|xJpy$xXW!|d`W^6S@=*W*{;e)9%VY-`*x;ZI{G25@lz zl_Rs@hdGrCM;EM`7QyeKr~G}*Ql&G39t2C^FShW^cT*+jNEWz=jFgy9VikDTkEpYX z+=~330JVmhD@xMR5Aaq30p@8*^Jws-k^p0AA_;CqrC}~pWK~3Bow8M_3?rK-E3TxL zTni&=qMndU7@FiUktWLCx-Ixie~e@d8i6)*WZ0;Y_1y8Jl9dEGVRFc{%J(=*5(?Lm z;r=PNwlv>Or_1GXQr=ju<V5MkG-KCOXqsv858{bvF`gin6+qbn<v!%&XJ5SrEF(Qn z@3@JQTQ`r_Zmd$c1_iV8$_=+g4i^JU6Es4G;ds&a=b%+V+74^OC)K@x>G)|CjgW@v zm^s)RG0H&aBiy3x676?tZlt9v!o`B;ctF;JTt%KAn}VXNesgGIgOm5Gb-g6HN@+d0 z{dvkM`UUl^n+p|-Q;6X7l`9cUyxgmK+%!FgHzY#NQR?*+IE!<^xMW-JlwqW2Xv`b< z;*42XdywXeUJ+JMkrP~7npL;z2fxqcb-aRozn%wZK(I*2On}#xSgIEc^99%MJvag@ zEWS8^4KAU0Q~R?mX?-a}3~Tdt(T(iKeGYjq3hQ_NmR}k_hyr_40<8CeznvNW1pk-( z$oS!AsjAb%RA3%O_pn$?Vmqz%>M%DYwH|^;!HPuXZS^bFPwog??ZKAC!P;we=xobA z=A*W8AV0WktJ%SK1e(278{u0BJ%aBTgE>+gY<qf3eAJ4ok{o7n%rqSt??9JK{s)yN B{1pHI diff --git a/docs/finn/_build/html/.doctrees/source_code/finn.analysis.doctree b/docs/finn/_build/html/.doctrees/source_code/finn.analysis.doctree deleted file mode 100644 index 5b78d4a9400210bebe1e8d3ffb1cf0c58cde3ae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15581 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 NUOPsLMzd!9e*pwG;ST@+ diff --git a/docs/finn/_build/html/.doctrees/source_code/finn.analysis.fpgadataflow.doctree b/docs/finn/_build/html/.doctrees/source_code/finn.analysis.fpgadataflow.doctree deleted file mode 100644 index cf4f42a3ff0da4b19a0cd112d9d7051650e47744..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8772 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 diff --git a/docs/finn/_build/html/.doctrees/source_code/finn.core.doctree b/docs/finn/_build/html/.doctrees/source_code/finn.core.doctree deleted file mode 100644 index 515b78771ea6d47c72f723398dfa31aaad4f25f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81755 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 J(CN%f{XekSxlaH9 diff --git a/docs/finn/_build/html/.doctrees/source_code/finn.custom_op.doctree b/docs/finn/_build/html/.doctrees/source_code/finn.custom_op.doctree deleted file mode 100644 index c28b05b9f09f01e8bc7bb0b0828224caafc9d9b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56521 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 diff --git a/docs/finn/_build/html/.doctrees/source_code/finn.custom_op.fpgadataflow.doctree b/docs/finn/_build/html/.doctrees/source_code/finn.custom_op.fpgadataflow.doctree deleted file mode 100644 index 87980c4e555347115205ca81c434b5863b6ff31e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160747 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 CCOBpQ diff --git a/docs/finn/_build/html/.doctrees/source_code/finn.doctree b/docs/finn/_build/html/.doctrees/source_code/finn.doctree deleted file mode 100644 index 9c00c3210f86308047634374db78d9815bab05ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3495 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 PRvLR--3H>|b)&&Q#4t@3 diff --git a/docs/finn/_build/html/.doctrees/source_code/finn.transformation.doctree b/docs/finn/_build/html/.doctrees/source_code/finn.transformation.doctree deleted file mode 100644 index 8517257fd55c81aa3df449dba743af1678a13412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45675 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 diff --git a/docs/finn/_build/html/.doctrees/source_code/finn.transformation.fpgadataflow.doctree b/docs/finn/_build/html/.doctrees/source_code/finn.transformation.fpgadataflow.doctree deleted file mode 100644 index 007833da517e60e7ecb71f43079e149b5313b613..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71069 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 A`v3p{ diff --git a/docs/finn/_build/html/.doctrees/source_code/finn.transformation.streamline.doctree b/docs/finn/_build/html/.doctrees/source_code/finn.transformation.streamline.doctree deleted file mode 100644 index 16323c25503426bed5e883cbdf7cd6cf657775df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51198 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 Wd%Z!uW`=IGg3g=pb9fkR@_zxL*)X#J diff --git a/docs/finn/_build/html/.doctrees/source_code/finn.util.doctree b/docs/finn/_build/html/.doctrees/source_code/finn.util.doctree deleted file mode 100644 index c76b2a37e1d3837d081201ec157666d46962daa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66431 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 XnfU|LxU08?fesA+V4kG3zfk^vjW-q1 diff --git a/docs/finn/_build/html/.doctrees/source_code/modules.doctree b/docs/finn/_build/html/.doctrees/source_code/modules.doctree deleted file mode 100644 index 041d2892a696c5476a616a12324998b02fea8af3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2556 zcmZuzOK%%D5O!?qWm~f2G(99S(xM2OxUkfqL6P=S^jH|sB}LFnKu}9cB)m&*`LJZ5 z0op^01mLag5A8qb$KBOhGAdx9<#0HUZ{{2B@B9D!JJ_jyVZ?Oioy_f6X~t~~{Uj*3 za`Er@;*a<~J`V#!msWd|@fdcXkqMbI!&Q72#ZKs1o;j&it1mjDD|+wZb8L2;bUEMH z3j1@ZR80HW-v61elA}iYXRI8;z-j1~6fRs8C*q#i3*9DwY1q%D;&JL{G#pUpjGTFg zz*C@ml34^5dRb1bg%Ix@MT`2a&wP2in9=OY@Ojelq37r#ZACE>kHlf}C?1EGlchFS zwxk)Kq^Ku=#@26jG$aFNlR`6}b2~N`(LTA{^)qDF&va30uh>TJH7w!SmO`r4m@?L2 z-g7#0hHv6j>xwg^C7uGS&+&YL=NX<a@jMC-{wD^c4$O?K5}t;WO_d7wzakAsQf0Yk zd@d1ns^Jeb^b5LTymTU7?gKtrRuu)<i(Jp*$Ium$F;x6x7&fO{L0|b|#tmojawi;A z^|o5&H}RtvFT_jnSeyfuec*b5nr&qij+?|UmWGxkH<4~8na+Q8TaRQ1W#_GlrfcXL zoOa!Sl+F)uey^@)6$h%b9mA%>w#&qMI(sjSGH+5BlD7Mf){?plL*H`eq*{PE_ggB> zjaH7M_M!Wh<{l`oxg<u@Fj#QK4RzW?EEq-iI$D%i95(fW?JFz~nx!{6RzqM#QrD(k zxa*`!-^6e_*V-xV_{Qety)aC)L}|!su1ygk8Ci5jiJmPIy)8^Wt|dI@m4qy%6J*UD zcx(<dWSWK}!%J-($@w+U<K=ER5HxR>op7J8B(QSSdAnBXgbw2~zks{Zk{Si9pkX*I zAQ?CVa;2o=hcJ?=^p0=^RzWL<fp_zZ*B4ge{mJ$w;l^k~1XV0Y+n{jBEpss(YwxzL zbSf(`oZZ>EV?z8EMzzt~07gGf-~2>=`DXm;;^lYWzD5+=8h1>Dlaz@CTmnGl$Sj6o zPSwKG1+QjB47(svcwl&@4I^M2x&;0bVW**+X*EZ(z(q1rVmirH6x}eQ-f40x3cC`m zHDtahN!xyaw-QKno>4SU29GNVFjh7-!L6vY+%rv9MQW@QzACllWb<UzE14tL(#pC~ zj|r2O&hnH<6J>8r3vnKfkc<TpXfrs5jT%``nJ_AONstpph03aYkCJ3Y;W~AA_)Iug z+V3Zm<#IVLZ=BF-tj%J=`1J&ub`rzGbRt<yCy3((P<BAM5BbHjuU`R{k(p<A+$71Z zn<r~GPHS9ylDm23Mz|t}i-Dsv5P_vp*birDtAex)Yr`kit$=a(X%&rBmYbA0x;J6O z(9VarHQOcVcVcgpqbnlhLgaYRtoyl6eSTyM3ReB<L1K%O52|&&B)QILJ*UH2CMfuV z`qtz^#nKcaIDO?y1d}fFY5+H+$Fzn-syRx%o&u+7E?7U?);r;t;S9vQfiJ<igSCfQ zuIUxw1(i9$Wo3AEr+x@~TwSLNIP~jz00N?mq+$|%?TDjh!7*QO`QC>kbcMqg2C%`E zlkVwox+SfzWQbvH-Y&YS`*E8?-b=#zUAz@<Y#1bgyD0(I`zYQ{t$2$6H{#HS;by6- z)5A<+9wqm%SW6O})_QfAo03`&!J}ZsOy_O&E7ec#2wUyJmc_x^Yjx;!%Rc6#acLkw uylbo3!Pf)G-l~o8B?OM(E5>4u)COBlZ;20EaaEE7mc~rO$aDw#+4w(6vh_Rw diff --git a/docs/finn/_build/html/_images/finn-flow.png b/docs/finn/_build/html/_images/finn-flow.png deleted file mode 100644 index 47aef287095c46b2f38030bca0a8d2e5d7cae2a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12588 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 diff --git a/docs/finn/_build/html/_sources/finn.analysis.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/finn.analysis.fpgadataflow.rst.txt deleted file mode 100644 index cd8075d75..000000000 --- a/docs/finn/_build/html/_sources/finn.analysis.fpgadataflow.rst.txt +++ /dev/null @@ -1,30 +0,0 @@ -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: - - -Module contents ---------------- - -.. automodule:: finn.analysis.fpgadataflow - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/finn.analysis.rst.txt b/docs/finn/_build/html/_sources/finn.analysis.rst.txt deleted file mode 100644 index e4eec7717..000000000 --- a/docs/finn/_build/html/_sources/finn.analysis.rst.txt +++ /dev/null @@ -1,37 +0,0 @@ -finn.analysis package -===================== - -Subpackages ------------ - -.. toctree:: - - finn.analysis.fpgadataflow - -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: - - -Module contents ---------------- - -.. automodule:: finn.analysis - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/finn.core.rst.txt b/docs/finn/_build/html/_sources/finn.core.rst.txt deleted file mode 100644 index 9e3ba4891..000000000 --- a/docs/finn/_build/html/_sources/finn.core.rst.txt +++ /dev/null @@ -1,46 +0,0 @@ -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: - - -Module contents ---------------- - -.. automodule:: finn.core - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/finn.custom_op.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/finn.custom_op.fpgadataflow.rst.txt deleted file mode 100644 index 632c021be..000000000 --- a/docs/finn/_build/html/_sources/finn.custom_op.fpgadataflow.rst.txt +++ /dev/null @@ -1,54 +0,0 @@ -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: - - -Module contents ---------------- - -.. automodule:: finn.custom_op.fpgadataflow - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/finn.custom_op.rst.txt b/docs/finn/_build/html/_sources/finn.custom_op.rst.txt deleted file mode 100644 index a984822ae..000000000 --- a/docs/finn/_build/html/_sources/finn.custom_op.rst.txt +++ /dev/null @@ -1,53 +0,0 @@ -finn.custom\_op package -======================= - -Subpackages ------------ - -.. toctree:: - - finn.custom_op.fpgadataflow - -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: - - -Module contents ---------------- - -.. automodule:: finn.custom_op - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/finn.rst.txt b/docs/finn/_build/html/_sources/finn.rst.txt deleted file mode 100644 index 1b7a1ae72..000000000 --- a/docs/finn/_build/html/_sources/finn.rst.txt +++ /dev/null @@ -1,21 +0,0 @@ -finn package -============ - -Subpackages ------------ - -.. toctree:: - - finn.analysis - finn.core - finn.custom_op - finn.transformation - finn.util - -Module contents ---------------- - -.. automodule:: finn - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/finn.transformation.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/finn.transformation.fpgadataflow.rst.txt deleted file mode 100644 index 80ad49c24..000000000 --- a/docs/finn/_build/html/_sources/finn.transformation.fpgadataflow.rst.txt +++ /dev/null @@ -1,134 +0,0 @@ -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\_sim\_mode module ------------------------------------------------------- - -.. automodule:: finn.transformation.fpgadataflow.set_sim_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: - - -Module contents ---------------- - -.. automodule:: finn.transformation.fpgadataflow - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/finn.transformation.rst.txt b/docs/finn/_build/html/_sources/finn.transformation.rst.txt deleted file mode 100644 index 172f6e300..000000000 --- a/docs/finn/_build/html/_sources/finn.transformation.rst.txt +++ /dev/null @@ -1,70 +0,0 @@ -finn.transformation package -=========================== - -Subpackages ------------ - -.. toctree:: - - finn.transformation.fpgadataflow - finn.transformation.streamline - -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: - - -Module contents ---------------- - -.. automodule:: finn.transformation - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/finn.transformation.streamline.rst.txt b/docs/finn/_build/html/_sources/finn.transformation.streamline.rst.txt deleted file mode 100644 index 33e593095..000000000 --- a/docs/finn/_build/html/_sources/finn.transformation.streamline.rst.txt +++ /dev/null @@ -1,54 +0,0 @@ -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: - - -Module contents ---------------- - -.. automodule:: finn.transformation.streamline - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/finn.util.rst.txt b/docs/finn/_build/html/_sources/finn.util.rst.txt deleted file mode 100644 index 1c85bcd44..000000000 --- a/docs/finn/_build/html/_sources/finn.util.rst.txt +++ /dev/null @@ -1,54 +0,0 @@ -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: - - -Module contents ---------------- - -.. automodule:: finn.util - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/modules.rst.txt b/docs/finn/_build/html/_sources/modules.rst.txt index e9ff8ac1a..8355e03ee 100644 --- a/docs/finn/_build/html/_sources/modules.rst.txt +++ b/docs/finn/_build/html/_sources/modules.rst.txt @@ -1,7 +1,7 @@ -src +finn === .. toctree:: :maxdepth: 4 - src + finn diff --git a/docs/finn/_build/html/_sources/source_code/analysis.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/source_code/analysis.fpgadataflow.rst.txt deleted file mode 100644 index ca0e9b63f..000000000 --- a/docs/finn/_build/html/_sources/source_code/analysis.fpgadataflow.rst.txt +++ /dev/null @@ -1,30 +0,0 @@ -analysis.fpgadataflow package -============================= - -Submodules ----------- - -analysis.fpgadataflow.hls\_synth\_res\_estimation module --------------------------------------------------------- - -.. automodule:: analysis.fpgadataflow.hls_synth_res_estimation - :members: - :undoc-members: - :show-inheritance: - -analysis.fpgadataflow.res\_estimation module --------------------------------------------- - -.. automodule:: analysis.fpgadataflow.res_estimation - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: analysis.fpgadataflow - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/analysis.rst.txt b/docs/finn/_build/html/_sources/source_code/analysis.rst.txt deleted file mode 100644 index ef56533e7..000000000 --- a/docs/finn/_build/html/_sources/source_code/analysis.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -analysis package -================ - -Subpackages ------------ - -.. toctree:: - - analysis.fpgadataflow.rst - diff --git a/docs/finn/_build/html/_sources/source_code/analysis/analysis.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/source_code/analysis/analysis.fpgadataflow.rst.txt deleted file mode 100644 index ca0e9b63f..000000000 --- a/docs/finn/_build/html/_sources/source_code/analysis/analysis.fpgadataflow.rst.txt +++ /dev/null @@ -1,30 +0,0 @@ -analysis.fpgadataflow package -============================= - -Submodules ----------- - -analysis.fpgadataflow.hls\_synth\_res\_estimation module --------------------------------------------------------- - -.. automodule:: analysis.fpgadataflow.hls_synth_res_estimation - :members: - :undoc-members: - :show-inheritance: - -analysis.fpgadataflow.res\_estimation module --------------------------------------------- - -.. automodule:: analysis.fpgadataflow.res_estimation - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: analysis.fpgadataflow - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/source_code/analysis/analysis.rst.txt b/docs/finn/_build/html/_sources/source_code/analysis/analysis.rst.txt deleted file mode 100644 index af9d2dc6d..000000000 --- a/docs/finn/_build/html/_sources/source_code/analysis/analysis.rst.txt +++ /dev/null @@ -1,37 +0,0 @@ -analysis package -================ - -Subpackages ------------ - -.. toctree:: - - analysis.fpgadataflow - -Submodules ----------- - -analysis.topology module ------------------------- - -.. automodule:: analysis.topology - :members: - :undoc-members: - :show-inheritance: - -analysis.verify\_custom\_nodes module -------------------------------------- - -.. automodule:: analysis.verify_custom_nodes - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: analysis - :members: - :undoc-members: - :show-inheritance: 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 deleted file mode 100644 index 616064c16..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index eb5b773b1..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.analysis.fpgadataflow.res_estimation.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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.topology.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt deleted file mode 100644 index 896f3fb8d..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.analysis.topology.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 60e1a33e2..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.analysis.verify_custom_nodes.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index d55952ecf..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.core.datatype.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 94d8ea143..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.core.execute_custom_node.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 5bd74864b..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.core.modelwrapper.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 87bf9d29d..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.core.onnx_exec.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 39c470eb0..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.core.remote_exec.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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.rtlsim_exec.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt deleted file mode 100644 index 9d4acef6e..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.core.rtlsim_exec.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index aa36e86ee..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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.streamingfclayer_batch.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt deleted file mode 100644 index 45a9a963a..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 5bf7f666a..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index a630867a4..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.templates.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 8a087851c..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.fpgadataflow.tlastmarker.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 3cdf3cee7..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.multithreshold.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 7805e833b..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.registry.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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.streamingdataflowpartition.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt deleted file mode 100644 index 1d07f01ce..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.streamingdataflowpartition.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index d91608278..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.custom_op.xnorpopcount.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 8d0ecfb75..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.batchnorm_to_affine.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index dc34f4def..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.bipolar_to_xnor.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 792f8bfe0..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fold_constants.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 38cc49897..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.cleanup.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 158ad7602..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipgen.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index d3f7434e3..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 28796da29..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.codegen_npysim.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 3d36a046b..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.compile.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 0ae11a41b..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 4827fd5b2..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 47af9049f..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index d4bd00b8c..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 130c91989..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_deployment.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 5238f0846..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_driver.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 1d040887f..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.make_pynq_proj.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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.set_exec_mode.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt deleted file mode 100644 index 7affa78b4..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.set_exec_mode.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index e902991a6..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index a62f37783..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.fpgadataflow.templates.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index bfae28100..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.general.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 939d15521..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_datatypes.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 946955706..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.infer_shapes.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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.streamline.absorb.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt deleted file mode 100644 index 597a98944..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.absorb.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index a15f72aea..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.collapse_repeated.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index ac969e132..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.reorder.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 031c65d07..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.round_thresholds.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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.sign_to_thres.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt deleted file mode 100644 index 166717eb3..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.transformation.streamline.sign_to_thres.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 10e8e1ac1..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.util.basic.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 6a39cc14b..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.util.data_packing.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 3472ed477..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.util.fpgadataflow.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 057cb07ca..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.util.onnx.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -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.test.rst.txt b/docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt deleted file mode 100644 index 3fe1bc15e..000000000 --- a/docs/finn/_build/html/_sources/source_code/finn.util.test.rst.txt +++ /dev/null @@ -1,7 +0,0 @@ -finn.util.test module -===================== - -.. automodule:: finn.util.test - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.finn.analysis.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/src.finn.analysis.fpgadataflow.rst.txt deleted file mode 100644 index 6f717813f..000000000 --- a/docs/finn/_build/html/_sources/src.finn.analysis.fpgadataflow.rst.txt +++ /dev/null @@ -1,30 +0,0 @@ -src.finn.analysis.fpgadataflow package -====================================== - -Submodules ----------- - -src.finn.analysis.fpgadataflow.hls\_synth\_res\_estimation module ------------------------------------------------------------------ - -.. automodule:: src.finn.analysis.fpgadataflow.hls_synth_res_estimation - :members: - :undoc-members: - :show-inheritance: - -src.finn.analysis.fpgadataflow.res\_estimation module ------------------------------------------------------ - -.. automodule:: src.finn.analysis.fpgadataflow.res_estimation - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: src.finn.analysis.fpgadataflow - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.finn.analysis.rst.txt b/docs/finn/_build/html/_sources/src.finn.analysis.rst.txt deleted file mode 100644 index 2dbedcf70..000000000 --- a/docs/finn/_build/html/_sources/src.finn.analysis.rst.txt +++ /dev/null @@ -1,37 +0,0 @@ -src.finn.analysis package -========================= - -Subpackages ------------ - -.. toctree:: - - src.finn.analysis.fpgadataflow - -Submodules ----------- - -src.finn.analysis.topology module ---------------------------------- - -.. automodule:: src.finn.analysis.topology - :members: - :undoc-members: - :show-inheritance: - -src.finn.analysis.verify\_custom\_nodes module ----------------------------------------------- - -.. automodule:: src.finn.analysis.verify_custom_nodes - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: src.finn.analysis - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.finn.core.rst.txt b/docs/finn/_build/html/_sources/src.finn.core.rst.txt deleted file mode 100644 index 70e442567..000000000 --- a/docs/finn/_build/html/_sources/src.finn.core.rst.txt +++ /dev/null @@ -1,46 +0,0 @@ -src.finn.core package -===================== - -Submodules ----------- - -src.finn.core.datatype module ------------------------------ - -.. automodule:: src.finn.core.datatype - :members: - :undoc-members: - :show-inheritance: - -src.finn.core.execute\_custom\_node module ------------------------------------------- - -.. automodule:: src.finn.core.execute_custom_node - :members: - :undoc-members: - :show-inheritance: - -src.finn.core.modelwrapper module ---------------------------------- - -.. automodule:: src.finn.core.modelwrapper - :members: - :undoc-members: - :show-inheritance: - -src.finn.core.onnx\_exec module -------------------------------- - -.. automodule:: src.finn.core.onnx_exec - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: src.finn.core - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.finn.custom_op.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/src.finn.custom_op.fpgadataflow.rst.txt deleted file mode 100644 index 540114318..000000000 --- a/docs/finn/_build/html/_sources/src.finn.custom_op.fpgadataflow.rst.txt +++ /dev/null @@ -1,54 +0,0 @@ -src.finn.custom\_op.fpgadataflow package -======================================== - -Submodules ----------- - -src.finn.custom\_op.fpgadataflow.convolutioninputgenerator module ------------------------------------------------------------------ - -.. automodule:: src.finn.custom_op.fpgadataflow.convolutioninputgenerator - :members: - :undoc-members: - :show-inheritance: - -src.finn.custom\_op.fpgadataflow.streamingfclayer\_batch module ---------------------------------------------------------------- - -.. automodule:: src.finn.custom_op.fpgadataflow.streamingfclayer_batch - :members: - :undoc-members: - :show-inheritance: - -src.finn.custom\_op.fpgadataflow.streamingmaxpool\_batch module ---------------------------------------------------------------- - -.. automodule:: src.finn.custom_op.fpgadataflow.streamingmaxpool_batch - :members: - :undoc-members: - :show-inheritance: - -src.finn.custom\_op.fpgadataflow.templates module -------------------------------------------------- - -.. automodule:: src.finn.custom_op.fpgadataflow.templates - :members: - :undoc-members: - :show-inheritance: - -src.finn.custom\_op.fpgadataflow.tlastmarker module ---------------------------------------------------- - -.. automodule:: src.finn.custom_op.fpgadataflow.tlastmarker - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: src.finn.custom_op.fpgadataflow - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.finn.custom_op.rst.txt b/docs/finn/_build/html/_sources/src.finn.custom_op.rst.txt deleted file mode 100644 index 0a9536a5e..000000000 --- a/docs/finn/_build/html/_sources/src.finn.custom_op.rst.txt +++ /dev/null @@ -1,53 +0,0 @@ -src.finn.custom\_op package -=========================== - -Subpackages ------------ - -.. toctree:: - - src.finn.custom_op.fpgadataflow - -Submodules ----------- - -src.finn.custom\_op.multithreshold module ------------------------------------------ - -.. automodule:: src.finn.custom_op.multithreshold - :members: - :undoc-members: - :show-inheritance: - -src.finn.custom\_op.registry module ------------------------------------ - -.. automodule:: src.finn.custom_op.registry - :members: - :undoc-members: - :show-inheritance: - -src.finn.custom\_op.streamingdataflowpartition module ------------------------------------------------------ - -.. automodule:: src.finn.custom_op.streamingdataflowpartition - :members: - :undoc-members: - :show-inheritance: - -src.finn.custom\_op.xnorpopcount module ---------------------------------------- - -.. automodule:: src.finn.custom_op.xnorpopcount - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: src.finn.custom_op - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.finn.rst.txt b/docs/finn/_build/html/_sources/src.finn.rst.txt deleted file mode 100644 index 26a124687..000000000 --- a/docs/finn/_build/html/_sources/src.finn.rst.txt +++ /dev/null @@ -1,21 +0,0 @@ -src.finn package -================ - -Subpackages ------------ - -.. toctree:: - - src.finn.analysis - src.finn.core - src.finn.custom_op - src.finn.transformation - src.finn.util - -Module contents ---------------- - -.. automodule:: src.finn - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.finn.transformation.fpgadataflow.rst.txt b/docs/finn/_build/html/_sources/src.finn.transformation.fpgadataflow.rst.txt deleted file mode 100644 index c7f2b3e94..000000000 --- a/docs/finn/_build/html/_sources/src.finn.transformation.fpgadataflow.rst.txt +++ /dev/null @@ -1,134 +0,0 @@ -src.finn.transformation.fpgadataflow package -============================================ - -Submodules ----------- - -src.finn.transformation.fpgadataflow.cleanup module ---------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.cleanup - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.codegen\_ipgen module ----------------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.codegen_ipgen - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.codegen\_ipstitch module -------------------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.codegen_ipstitch - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.codegen\_npysim module ------------------------------------------------------------ - -.. automodule:: src.finn.transformation.fpgadataflow.codegen_npysim - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.compile module ---------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.compile - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.convert\_to\_hls\_layers module --------------------------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.convert_to_hls_layers - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.create\_dataflow\_partition module ------------------------------------------------------------------------ - -.. automodule:: src.finn.transformation.fpgadataflow.create_dataflow_partition - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.hlssynth\_ipgen module ------------------------------------------------------------ - -.. automodule:: src.finn.transformation.fpgadataflow.hlssynth_ipgen - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.insert\_tlastmarker module ---------------------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.insert_tlastmarker - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.make\_deployment module ------------------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.make_deployment - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.make\_pynq\_driver module --------------------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.make_pynq_driver - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.make\_pynq\_proj module ------------------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.make_pynq_proj - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.set\_sim\_mode module ----------------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.set_sim_mode - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.synth\_pynq\_proj module -------------------------------------------------------------- - -.. automodule:: src.finn.transformation.fpgadataflow.synth_pynq_proj - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fpgadataflow.templates module ------------------------------------------------------ - -.. automodule:: src.finn.transformation.fpgadataflow.templates - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: src.finn.transformation.fpgadataflow - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.finn.transformation.rst.txt b/docs/finn/_build/html/_sources/src.finn.transformation.rst.txt deleted file mode 100644 index a73e18cca..000000000 --- a/docs/finn/_build/html/_sources/src.finn.transformation.rst.txt +++ /dev/null @@ -1,70 +0,0 @@ -src.finn.transformation package -=============================== - -Subpackages ------------ - -.. toctree:: - - src.finn.transformation.fpgadataflow - src.finn.transformation.streamline - -Submodules ----------- - -src.finn.transformation.batchnorm\_to\_affine module ----------------------------------------------------- - -.. automodule:: src.finn.transformation.batchnorm_to_affine - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.bipolar\_to\_xnor module ------------------------------------------------- - -.. automodule:: src.finn.transformation.bipolar_to_xnor - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.fold\_constants module ----------------------------------------------- - -.. automodule:: src.finn.transformation.fold_constants - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.general module --------------------------------------- - -.. automodule:: src.finn.transformation.general - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.infer\_datatypes module ------------------------------------------------ - -.. automodule:: src.finn.transformation.infer_datatypes - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.infer\_shapes module --------------------------------------------- - -.. automodule:: src.finn.transformation.infer_shapes - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: src.finn.transformation - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.finn.transformation.streamline.rst.txt b/docs/finn/_build/html/_sources/src.finn.transformation.streamline.rst.txt deleted file mode 100644 index 3e765e8ef..000000000 --- a/docs/finn/_build/html/_sources/src.finn.transformation.streamline.rst.txt +++ /dev/null @@ -1,54 +0,0 @@ -src.finn.transformation.streamline package -========================================== - -Submodules ----------- - -src.finn.transformation.streamline.absorb module ------------------------------------------------- - -.. automodule:: src.finn.transformation.streamline.absorb - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.streamline.collapse\_repeated module ------------------------------------------------------------- - -.. automodule:: src.finn.transformation.streamline.collapse_repeated - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.streamline.reorder module -------------------------------------------------- - -.. automodule:: src.finn.transformation.streamline.reorder - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.streamline.round\_thresholds module ------------------------------------------------------------ - -.. automodule:: src.finn.transformation.streamline.round_thresholds - :members: - :undoc-members: - :show-inheritance: - -src.finn.transformation.streamline.sign\_to\_thres module ---------------------------------------------------------- - -.. automodule:: src.finn.transformation.streamline.sign_to_thres - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: src.finn.transformation.streamline - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.finn.util.rst.txt b/docs/finn/_build/html/_sources/src.finn.util.rst.txt deleted file mode 100644 index 62daf6581..000000000 --- a/docs/finn/_build/html/_sources/src.finn.util.rst.txt +++ /dev/null @@ -1,54 +0,0 @@ -src.finn.util package -===================== - -Submodules ----------- - -src.finn.util.basic module --------------------------- - -.. automodule:: src.finn.util.basic - :members: - :undoc-members: - :show-inheritance: - -src.finn.util.data\_packing module ----------------------------------- - -.. automodule:: src.finn.util.data_packing - :members: - :undoc-members: - :show-inheritance: - -src.finn.util.fpgadataflow module ---------------------------------- - -.. automodule:: src.finn.util.fpgadataflow - :members: - :undoc-members: - :show-inheritance: - -src.finn.util.onnx module -------------------------- - -.. automodule:: src.finn.util.onnx - :members: - :undoc-members: - :show-inheritance: - -src.finn.util.test module -------------------------- - -.. automodule:: src.finn.util.test - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: src.finn.util - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_sources/src.rst.txt b/docs/finn/_build/html/_sources/src.rst.txt deleted file mode 100644 index 3a42b4fb4..000000000 --- a/docs/finn/_build/html/_sources/src.rst.txt +++ /dev/null @@ -1,17 +0,0 @@ -src package -=========== - -Subpackages ------------ - -.. toctree:: - - src.finn - -Module contents ---------------- - -.. automodule:: src - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/finn/_build/html/_static/alabaster.css b/docs/finn/_build/html/_static/alabaster.css deleted file mode 100644 index 0eddaeb07..000000000 --- a/docs/finn/_build/html/_static/alabaster.css +++ /dev/null @@ -1,701 +0,0 @@ -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: Georgia, serif; - font-size: 17px; - background-color: #fff; - color: #000; - margin: 0; - padding: 0; -} - - -div.document { - width: 940px; - margin: 30px auto 0 auto; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 220px; -} - -div.sphinxsidebar { - width: 220px; - font-size: 14px; - line-height: 1.5; -} - -hr { - border: 1px solid #B1B4B6; -} - -div.body { - background-color: #fff; - color: #3E4349; - padding: 0 30px 0 30px; -} - -div.body > .section { - text-align: left; -} - -div.footer { - width: 940px; - margin: 20px auto 30px auto; - font-size: 14px; - color: #888; - text-align: right; -} - -div.footer a { - color: #888; -} - -p.caption { - font-family: inherit; - font-size: inherit; -} - - -div.relations { - display: none; -} - - -div.sphinxsidebar a { - color: #444; - text-decoration: none; - border-bottom: 1px dotted #999; -} - -div.sphinxsidebar a:hover { - border-bottom: 1px solid #999; -} - -div.sphinxsidebarwrapper { - padding: 18px 10px; -} - -div.sphinxsidebarwrapper p.logo { - padding: 0; - margin: -10px 0 0 0px; - text-align: center; -} - -div.sphinxsidebarwrapper h1.logo { - margin-top: -10px; - text-align: center; - margin-bottom: 5px; - text-align: left; -} - -div.sphinxsidebarwrapper h1.logo-name { - margin-top: 0px; -} - -div.sphinxsidebarwrapper p.blurb { - margin-top: 0; - font-style: normal; -} - -div.sphinxsidebar h3, -div.sphinxsidebar h4 { - font-family: Georgia, serif; - color: #444; - font-size: 24px; - font-weight: normal; - margin: 0 0 5px 0; - padding: 0; -} - -div.sphinxsidebar h4 { - font-size: 20px; -} - -div.sphinxsidebar h3 a { - color: #444; -} - -div.sphinxsidebar p.logo a, -div.sphinxsidebar h3 a, -div.sphinxsidebar p.logo a:hover, -div.sphinxsidebar h3 a:hover { - border: none; -} - -div.sphinxsidebar p { - color: #555; - margin: 10px 0; -} - -div.sphinxsidebar ul { - margin: 10px 0; - padding: 0; - color: #000; -} - -div.sphinxsidebar ul li.toctree-l1 > a { - font-size: 120%; -} - -div.sphinxsidebar ul li.toctree-l2 > a { - font-size: 110%; -} - -div.sphinxsidebar input { - border: 1px solid #CCC; - font-family: Georgia, serif; - font-size: 1em; -} - -div.sphinxsidebar hr { - border: none; - height: 1px; - color: #AAA; - background: #AAA; - - text-align: left; - margin-left: 0; - width: 50%; -} - -div.sphinxsidebar .badge { - border-bottom: none; -} - -div.sphinxsidebar .badge:hover { - border-bottom: none; -} - -/* To address an issue with donation coming after search */ -div.sphinxsidebar h3.donation { - margin-top: 10px; -} - -/* -- body styles ----------------------------------------------------------- */ - -a { - color: #004B6B; - text-decoration: underline; -} - -a:hover { - color: #6D4100; - text-decoration: underline; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: Georgia, serif; - font-weight: normal; - margin: 30px 0px 10px 0px; - padding: 0; -} - -div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } -div.body h2 { font-size: 180%; } -div.body h3 { font-size: 150%; } -div.body h4 { font-size: 130%; } -div.body h5 { font-size: 100%; } -div.body h6 { font-size: 100%; } - -a.headerlink { - color: #DDD; - padding: 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - color: #444; - background: #EAEAEA; -} - -div.body p, div.body dd, div.body li { - line-height: 1.4em; -} - -div.admonition { - margin: 20px 0px; - padding: 10px 30px; - background-color: #EEE; - border: 1px solid #CCC; -} - -div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { - background-color: #FBFBFB; - border-bottom: 1px solid #fafafa; -} - -div.admonition p.admonition-title { - font-family: Georgia, serif; - font-weight: normal; - font-size: 24px; - margin: 0 0 10px 0; - padding: 0; - line-height: 1; -} - -div.admonition p.last { - margin-bottom: 0; -} - -div.highlight { - background-color: #fff; -} - -dt:target, .highlight { - background: #FAF3E8; -} - -div.warning { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.danger { - background-color: #FCC; - border: 1px solid #FAA; - -moz-box-shadow: 2px 2px 4px #D52C2C; - -webkit-box-shadow: 2px 2px 4px #D52C2C; - box-shadow: 2px 2px 4px #D52C2C; -} - -div.error { - background-color: #FCC; - border: 1px solid #FAA; - -moz-box-shadow: 2px 2px 4px #D52C2C; - -webkit-box-shadow: 2px 2px 4px #D52C2C; - box-shadow: 2px 2px 4px #D52C2C; -} - -div.caution { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.attention { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.important { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.note { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.tip { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.hint { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.seealso { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.topic { - background-color: #EEE; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre, tt, code { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; - font-size: 0.9em; -} - -.hll { - background-color: #FFC; - margin: 0 -12px; - padding: 0 12px; - display: block; -} - -img.screenshot { -} - -tt.descname, tt.descclassname, code.descname, code.descclassname { - font-size: 0.95em; -} - -tt.descname, code.descname { - padding-right: 0.08em; -} - -img.screenshot { - -moz-box-shadow: 2px 2px 4px #EEE; - -webkit-box-shadow: 2px 2px 4px #EEE; - box-shadow: 2px 2px 4px #EEE; -} - -table.docutils { - border: 1px solid #888; - -moz-box-shadow: 2px 2px 4px #EEE; - -webkit-box-shadow: 2px 2px 4px #EEE; - box-shadow: 2px 2px 4px #EEE; -} - -table.docutils td, table.docutils th { - border: 1px solid #888; - padding: 0.25em 0.7em; -} - -table.field-list, table.footnote { - border: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -table.footnote { - margin: 15px 0; - width: 100%; - border: 1px solid #EEE; - background: #FDFDFD; - font-size: 0.9em; -} - -table.footnote + table.footnote { - margin-top: -15px; - border-top: none; -} - -table.field-list th { - padding: 0 0.8em 0 0; -} - -table.field-list td { - padding: 0; -} - -table.field-list p { - margin-bottom: 0.8em; -} - -/* Cloned from - * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 - */ -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -table.footnote td.label { - width: .1px; - padding: 0.3em 0 0.3em 0.5em; -} - -table.footnote td { - padding: 0.3em 0.5em; -} - -dl { - margin: 0; - padding: 0; -} - -dl dd { - margin-left: 30px; -} - -blockquote { - margin: 0 0 0 30px; - padding: 0; -} - -ul, ol { - /* Matches the 30px from the narrow-screen "li > ul" selector below */ - margin: 10px 0 10px 30px; - padding: 0; -} - -pre { - background: #EEE; - padding: 7px 30px; - margin: 15px 0px; - line-height: 1.3em; -} - -div.viewcode-block:target { - background: #ffd; -} - -dl pre, blockquote pre, li pre { - margin-left: 0; - padding-left: 30px; -} - -tt, code { - background-color: #ecf0f3; - color: #222; - /* padding: 1px 2px; */ -} - -tt.xref, code.xref, a tt { - background-color: #FBFBFB; - border-bottom: 1px solid #fff; -} - -a.reference { - text-decoration: none; - border-bottom: 1px dotted #004B6B; -} - -/* Don't put an underline on images */ -a.image-reference, a.image-reference:hover { - border-bottom: none; -} - -a.reference:hover { - border-bottom: 1px solid #6D4100; -} - -a.footnote-reference { - text-decoration: none; - font-size: 0.7em; - vertical-align: top; - border-bottom: 1px dotted #004B6B; -} - -a.footnote-reference:hover { - border-bottom: 1px solid #6D4100; -} - -a:hover tt, a:hover code { - background: #EEE; -} - - -@media screen and (max-width: 870px) { - - div.sphinxsidebar { - display: none; - } - - div.document { - width: 100%; - - } - - div.documentwrapper { - margin-left: 0; - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - } - - div.bodywrapper { - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - margin-left: 0; - } - - ul { - margin-left: 0; - } - - li > ul { - /* Matches the 30px from the "ul, ol" selector above */ - margin-left: 30px; - } - - .document { - width: auto; - } - - .footer { - width: auto; - } - - .bodywrapper { - margin: 0; - } - - .footer { - width: auto; - } - - .github { - display: none; - } - - - -} - - - -@media screen and (max-width: 875px) { - - body { - margin: 0; - padding: 20px 30px; - } - - div.documentwrapper { - float: none; - background: #fff; - } - - div.sphinxsidebar { - display: block; - float: none; - width: 102.5%; - margin: 50px -30px -20px -30px; - padding: 10px 20px; - background: #333; - color: #FFF; - } - - div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, - div.sphinxsidebar h3 a { - color: #fff; - } - - div.sphinxsidebar a { - color: #AAA; - } - - div.sphinxsidebar p.logo { - display: none; - } - - div.document { - width: 100%; - margin: 0; - } - - div.footer { - display: none; - } - - div.bodywrapper { - margin: 0; - } - - div.body { - min-height: 0; - padding: 0; - } - - .rtd_doc_footer { - display: none; - } - - .document { - width: auto; - } - - .footer { - width: auto; - } - - .footer { - width: auto; - } - - .github { - display: none; - } -} - - -/* misc. */ - -.revsys-inline { - display: none!important; -} - -/* Make nested-list/multi-paragraph items look better in Releases changelog - * pages. Without this, docutils' magical list fuckery causes inconsistent - * formatting between different release sub-lists. - */ -div#changelog > div.section > ul > li > p:only-child { - margin-bottom: 0; -} - -/* Hide fugly table cell borders in ..bibliography:: directive output */ -table.docutils.citation, table.docutils.citation td, table.docutils.citation th { - border: none; - /* Below needed in some edge cases; if not applied, bottom shadows appear */ - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - - -/* relbar */ - -.related { - line-height: 30px; - width: 100%; - font-size: 0.9rem; -} - -.related.top { - border-bottom: 1px solid #EEE; - margin-bottom: 20px; -} - -.related.bottom { - border-top: 1px solid #EEE; -} - -.related ul { - padding: 0; - margin: 0; - list-style: none; -} - -.related li { - display: inline; -} - -nav#rellinks { - float: right; -} - -nav#rellinks li+li:before { - content: "|"; -} - -nav#breadcrumbs li+li:before { - content: "\00BB"; -} - -/* Hide certain items when printing */ -@media print { - div.related { - display: none; - } -} \ No newline at end of file diff --git a/docs/finn/_build/html/_static/custom.css b/docs/finn/_build/html/_static/custom.css deleted file mode 100644 index 2a924f1d6..000000000 --- a/docs/finn/_build/html/_static/custom.css +++ /dev/null @@ -1 +0,0 @@ -/* This file intentionally left blank. */ diff --git a/docs/finn/_build/html/finn.analysis.fpgadataflow.html b/docs/finn/_build/html/finn.analysis.fpgadataflow.html deleted file mode 100644 index ddec3c923..000000000 --- a/docs/finn/_build/html/finn.analysis.fpgadataflow.html +++ /dev/null @@ -1,224 +0,0 @@ - - -<!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 package — 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" /> -</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"> - - - - - - - <!-- Local TOC --> - <div class="local-toc"><ul> -<li><a class="reference internal" href="#">finn.analysis.fpgadataflow package</a><ul> -<li><a class="reference internal" href="#submodules">Submodules</a></li> -<li><a class="reference internal" href="#module-finn.analysis.fpgadataflow.hls_synth_res_estimation">finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> -<li><a class="reference internal" href="#module-finn.analysis.fpgadataflow.res_estimation">finn.analysis.fpgadataflow.res_estimation module</a></li> -<li><a class="reference internal" href="#module-finn.analysis.fpgadataflow">Module contents</a></li> -</ul> -</li> -</ul> -</div> - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" aria-label="top navigation"> - - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">FINN</a> - - </nav> - - - <div class="wy-nav-content"> - - <div class="rst-content"> - - - - - - - - - - - - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - - <ul class="wy-breadcrumbs"> - - <li><a href="index.html">Docs</a> »</li> - - <li>finn.analysis.fpgadataflow package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/finn.analysis.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="finn-analysis-fpgadataflow-package"> -<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> -<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> -</div> -</div> - - - </div> - - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2020, Y. Umuroglu, J. Petri-Koenig - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.Navigation.enable(true); - }); - </script> - - - - - - -</body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/finn.analysis.html b/docs/finn/_build/html/finn.analysis.html deleted file mode 100644 index 77cecff25..000000000 --- a/docs/finn/_build/html/finn.analysis.html +++ /dev/null @@ -1,272 +0,0 @@ - - -<!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 package — 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" /> -</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"> - - - - - - - <!-- Local TOC --> - <div class="local-toc"><ul> -<li><a class="reference internal" href="#">finn.analysis package</a><ul> -<li><a class="reference internal" href="#subpackages">Subpackages</a></li> -<li><a class="reference internal" href="#submodules">Submodules</a></li> -<li><a class="reference internal" href="#module-finn.analysis.topology">finn.analysis.topology module</a></li> -<li><a class="reference internal" href="#module-finn.analysis.verify_custom_nodes">finn.analysis.verify_custom_nodes module</a></li> -<li><a class="reference internal" href="#module-finn.analysis">Module contents</a><ul> -<li><a class="reference internal" href="#how-to-write-an-analysis-pass-for-finn">How to write an analysis pass for FINN</a></li> -</ul> -</li> -</ul> -</li> -</ul> -</div> - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" aria-label="top navigation"> - - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">FINN</a> - - </nav> - - - <div class="wy-nav-content"> - - <div class="rst-content"> - - - - - - - - - - - - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - - <ul class="wy-breadcrumbs"> - - <li><a href="index.html">Docs</a> »</li> - - <li>finn.analysis package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/finn.analysis.rst.txt" rel="nofollow"> View page source</a> - - - </li> - - </ul> - - - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="finn-analysis-package"> -<h1>finn.analysis package<a class="headerlink" href="#finn-analysis-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" 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.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#module-finn.analysis.fpgadataflow">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -<div class="section" id="submodules"> -<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> -</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> -<div class="section" id="how-to-write-an-analysis-pass-for-finn"> -<h3>How to write an analysis pass for FINN<a class="headerlink" href="#how-to-write-an-analysis-pass-for-finn" title="Permalink to this headline">¶</a></h3> -<p>An analysis pass traverses the graph structure and produces information about -certain properties. The convention is to take in a ModelWrapper, and return -a dictionary of named properties that the analysis extracts.</p> -</div> -</div> -</div> - - - </div> - - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2020, Y. Umuroglu, J. Petri-Koenig - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.Navigation.enable(true); - }); - </script> - - - - - - -</body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/finn.core.html b/docs/finn/_build/html/finn.core.html deleted file mode 100644 index f5cf18da7..000000000 --- a/docs/finn/_build/html/finn.core.html +++ /dev/null @@ -1,562 +0,0 @@ - - -<!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 package — 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" /> -</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"> - - - - - - - <!-- Local TOC --> - <div class="local-toc"><ul> -<li><a class="reference internal" href="#">finn.core package</a><ul> -<li><a class="reference internal" href="#submodules">Submodules</a></li> -<li><a class="reference internal" href="#module-finn.core.datatype">finn.core.datatype module</a></li> -<li><a class="reference internal" href="#module-finn.core.execute_custom_node">finn.core.execute_custom_node module</a></li> -<li><a class="reference internal" href="#module-finn.core.modelwrapper">finn.core.modelwrapper module</a></li> -<li><a class="reference internal" href="#module-finn.core.onnx_exec">finn.core.onnx_exec module</a></li> -<li><a class="reference internal" href="#module-finn.core">Module contents</a></li> -</ul> -</li> -</ul> -</div> - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" aria-label="top navigation"> - - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">FINN</a> - - </nav> - - - <div class="wy-nav-content"> - - <div class="rst-content"> - - - - - - - - - - - - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - - <ul class="wy-breadcrumbs"> - - <li><a href="index.html">Docs</a> »</li> - - <li>finn.core package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/finn.core.rst.txt" rel="nofollow"> View page source</a> - - - </li> - - </ul> - - - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="finn-core-package"> -<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> -<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"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn.core" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2020, Y. Umuroglu, J. Petri-Koenig - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.Navigation.enable(true); - }); - </script> - - - - - - -</body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/finn.custom_op.fpgadataflow.html b/docs/finn/_build/html/finn.custom_op.fpgadataflow.html deleted file mode 100644 index b4e6808b4..000000000 --- a/docs/finn/_build/html/finn.custom_op.fpgadataflow.html +++ /dev/null @@ -1,922 +0,0 @@ - - -<!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 package — 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" /> -</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"> - - - - - - - <!-- Local TOC --> - <div class="local-toc"><ul> -<li><a class="reference internal" href="#">finn.custom_op.fpgadataflow package</a><ul> -<li><a class="reference internal" href="#submodules">Submodules</a></li> -<li><a class="reference internal" href="#module-finn.custom_op.fpgadataflow.convolutioninputgenerator">finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> -<li><a class="reference internal" href="#module-finn.custom_op.fpgadataflow.streamingfclayer_batch">finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> -<li><a class="reference internal" href="#module-finn.custom_op.fpgadataflow.streamingmaxpool_batch">finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> -<li><a class="reference internal" href="#module-finn.custom_op.fpgadataflow.templates">finn.custom_op.fpgadataflow.templates module</a></li> -<li><a class="reference internal" href="#module-finn.custom_op.fpgadataflow.tlastmarker">finn.custom_op.fpgadataflow.tlastmarker module</a></li> -<li><a class="reference internal" href="#module-finn.custom_op.fpgadataflow">Module contents</a></li> -</ul> -</li> -</ul> -</div> - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" aria-label="top navigation"> - - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">FINN</a> - - </nav> - - - <div class="wy-nav-content"> - - <div class="rst-content"> - - - - - - - - - - - - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - - <ul class="wy-breadcrumbs"> - - <li><a href="index.html">Docs</a> »</li> - - <li>finn.custom_op.fpgadataflow package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/finn.custom_op.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="finn-custom-op-fpgadataflow-package"> -<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> -<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> -<dl class="class"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp"> -<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.fpgadataflow.</code><code class="sig-name descname">HLSCustomOp</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp" 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.fpgadataflow.HLSCustomOp.blackboxfunction"> -<em class="property">abstract </em><code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.blackboxfunction" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.bram_estimation"> -<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.bram_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_ipgen"> -<code class="sig-name descname">code_generation_ipgen</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">fpgapart</em>, <em class="sig-param">clk</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_ipgen" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_npysim"> -<code class="sig-name descname">code_generation_npysim</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_npysim" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.compile_singlenode_code"> -<code class="sig-name descname">compile_singlenode_code</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.compile_singlenode_code" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.dataoutstrm"> -<em class="property">abstract </em><code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.dataoutstrm" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.defines"> -<em class="property">abstract </em><code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.defines" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.docompute"> -<em class="property">abstract </em><code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.docompute" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.dynamic_input_to_npy"> -<code class="sig-name descname">dynamic_input_to_npy</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">count</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.dynamic_input_to_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.exec_precompiled_singlenode_model"> -<code class="sig-name descname">exec_precompiled_singlenode_model</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.exec_precompiled_singlenode_model" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.generate_params"> -<code class="sig-name descname">generate_params</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.generate_params" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_input_shape"> -<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_input_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_output_shape"> -<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_output_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.get_instream_width"> -<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.get_instream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.get_number_output_values"> -<em class="property">abstract </em><code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.get_number_output_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.get_outstream_width"> -<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.get_outstream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.global_includes"> -<em class="property">abstract </em><code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.global_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.ipgen_singlenode_code"> -<code class="sig-name descname">ipgen_singlenode_code</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.ipgen_singlenode_code" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.lut_estimation"> -<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.lut_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.node_res_estimation"> -<code class="sig-name descname">node_res_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.node_res_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.npy_to_dynamic_output"> -<code class="sig-name descname">npy_to_dynamic_output</code><span class="sig-paren">(</span><em class="sig-param">context</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.npy_to_dynamic_output" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.pragmas"> -<em class="property">abstract </em><code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.pragmas" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.read_npy_data"> -<em class="property">abstract </em><code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.read_npy_data" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.reset_rtlsim"> -<code class="sig-name descname">reset_rtlsim</code><span class="sig-paren">(</span><em class="sig-param">sim</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.reset_rtlsim" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.rtlsim"> -<code class="sig-name descname">rtlsim</code><span class="sig-paren">(</span><em class="sig-param">sim</em>, <em class="sig-param">inp</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.rtlsim" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.save_as_npy"> -<em class="property">abstract </em><code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.save_as_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.strm_decl"> -<em class="property">abstract </em><code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.strm_decl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.fpgadataflow.HLSCustomOp.toggle_clk"> -<code class="sig-name descname">toggle_clk</code><span class="sig-paren">(</span><em class="sig-param">sim</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.fpgadataflow.HLSCustomOp.toggle_clk" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -</div> - - - </div> - - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2020, Y. Umuroglu, J. Petri-Koenig - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.Navigation.enable(true); - }); - </script> - - - - - - -</body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/finn.custom_op.html b/docs/finn/_build/html/finn.custom_op.html deleted file mode 100644 index 692212b13..000000000 --- a/docs/finn/_build/html/finn.custom_op.html +++ /dev/null @@ -1,460 +0,0 @@ - - -<!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 package — 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" /> -</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"> - - - - - - - <!-- Local TOC --> - <div class="local-toc"><ul> -<li><a class="reference internal" href="#">finn.custom_op package</a><ul> -<li><a class="reference internal" href="#subpackages">Subpackages</a></li> -<li><a class="reference internal" href="#submodules">Submodules</a></li> -<li><a class="reference internal" href="#module-finn.custom_op.multithreshold">finn.custom_op.multithreshold module</a></li> -<li><a class="reference internal" href="#module-finn.custom_op.registry">finn.custom_op.registry module</a></li> -<li><a class="reference internal" href="#module-finn.custom_op.streamingdataflowpartition">finn.custom_op.streamingdataflowpartition module</a></li> -<li><a class="reference internal" href="#module-finn.custom_op.xnorpopcount">finn.custom_op.xnorpopcount module</a></li> -<li><a class="reference internal" href="#module-finn.custom_op">Module contents</a></li> -</ul> -</li> -</ul> -</div> - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" aria-label="top navigation"> - - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">FINN</a> - - </nav> - - - <div class="wy-nav-content"> - - <div class="rst-content"> - - - - - - - - - - - - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - - <ul class="wy-breadcrumbs"> - - <li><a href="index.html">Docs</a> »</li> - - <li>finn.custom_op package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/finn.custom_op.rst.txt" rel="nofollow"> View page source</a> - - - </li> - - </ul> - - - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="finn-custom-op-package"> -<h1>finn.custom_op package<a class="headerlink" href="#finn-custom-op-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" 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.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#module-finn.custom_op.fpgadataflow">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -<div class="section" id="submodules"> -<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> -</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> -<dl class="class"> -<dt id="finn.custom_op.CustomOp"> -<em class="property">class </em><code class="sig-prename descclassname">finn.custom_op.</code><code class="sig-name descname">CustomOp</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.CustomOp" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">abc.ABC</span></code></p> -<dl class="method"> -<dt id="finn.custom_op.CustomOp.execute_node"> -<em class="property">abstract </em><code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.CustomOp.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.CustomOp.get_nodeattr"> -<code class="sig-name descname">get_nodeattr</code><span class="sig-paren">(</span><em class="sig-param">name</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.CustomOp.get_nodeattr" title="Permalink to this definition">¶</a></dt> -<dd><p>Get a node attribute by name. Data is stored inside the ONNX node’s -AttributeProto container. Attribute must be part of get_nodeattr_types. -Default value is returned if attribute is not set.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.CustomOp.get_nodeattr_types"> -<em class="property">abstract </em><code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.CustomOp.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.CustomOp.infer_node_datatype"> -<em class="property">abstract </em><code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.CustomOp.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.CustomOp.make_shape_compatible_op"> -<em class="property">abstract </em><code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.CustomOp.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.CustomOp.set_nodeattr"> -<code class="sig-name descname">set_nodeattr</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.CustomOp.set_nodeattr" title="Permalink to this definition">¶</a></dt> -<dd><p>Set a node attribute by name. Data is stored inside the ONNX node’s -AttributeProto container. Attribute must be part of get_nodeattr_types.</p> -</dd></dl> - -<dl class="method"> -<dt id="finn.custom_op.CustomOp.verify_node"> -<em class="property">abstract </em><code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#finn.custom_op.CustomOp.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -</div> - - - </div> - - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2020, Y. Umuroglu, J. Petri-Koenig - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.Navigation.enable(true); - }); - </script> - - - - - - -</body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/finn.html b/docs/finn/_build/html/finn.html deleted file mode 100644 index 6151be1f9..000000000 --- a/docs/finn/_build/html/finn.html +++ /dev/null @@ -1,314 +0,0 @@ - - -<!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 package — 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" /> -</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"> - - - - - - - <!-- Local TOC --> - <div class="local-toc"><ul> -<li><a class="reference internal" href="#">finn package</a><ul> -<li><a class="reference internal" href="#subpackages">Subpackages</a></li> -<li><a class="reference internal" href="#module-finn">Module contents</a></li> -</ul> -</li> -</ul> -</div> - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" aria-label="top navigation"> - - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">FINN</a> - - </nav> - - - <div class="wy-nav-content"> - - <div class="rst-content"> - - - - - - - - - - - - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - - <ul class="wy-breadcrumbs"> - - <li><a href="index.html">Docs</a> »</li> - - <li>finn package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/finn.rst.txt" rel="nofollow"> View page source</a> - - - </li> - - </ul> - - - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="finn-package"> -<h1>finn package<a class="headerlink" href="#finn-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2> -<div class="toctree-wrapper compound"> -<ul> -<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#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#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> -</li> -</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">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#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#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#finn-transformation-fpgadataflow-set-sim-mode-module">finn.transformation.fpgadataflow.set_sim_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#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#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#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> -</li> -</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#module-finn.util">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -<div class="section" id="module-finn"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-finn" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2020, Y. Umuroglu, J. Petri-Koenig - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.Navigation.enable(true); - }); - </script> - - - - - - -</body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/finn.transformation.fpgadataflow.html b/docs/finn/_build/html/finn.transformation.fpgadataflow.html deleted file mode 100644 index 878f3de34..000000000 --- a/docs/finn/_build/html/finn.transformation.fpgadataflow.html +++ /dev/null @@ -1,432 +0,0 @@ - - -<!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 package — 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" /> -</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>finn.transformation.fpgadataflow package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/finn.transformation.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="finn-transformation-fpgadataflow-package"> -<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> -<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="finn-transformation-fpgadataflow-set-sim-mode-module"> -<h2>finn.transformation.fpgadataflow.set_sim_mode module<a class="headerlink" href="#finn-transformation-fpgadataflow-set-sim-mode-module" title="Permalink to this headline">¶</a></h2> -</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> -</div> -</div> - - - </div> - - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2020, Y. Umuroglu, J. Petri-Koenig - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.Navigation.enable(true); - }); - </script> - - - - - - -</body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/finn.transformation.html b/docs/finn/_build/html/finn.transformation.html deleted file mode 100644 index 0407b0f9c..000000000 --- a/docs/finn/_build/html/finn.transformation.html +++ /dev/null @@ -1,397 +0,0 @@ - - -<!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 package — 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" /> -</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>finn.transformation package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/finn.transformation.rst.txt" rel="nofollow"> View page source</a> - - - </li> - - </ul> - - - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="finn-transformation-package"> -<h1>finn.transformation package<a class="headerlink" href="#finn-transformation-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" 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.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#finn-transformation-fpgadataflow-set-sim-mode-module">finn.transformation.fpgadataflow.set_sim_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#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#module-finn.transformation.streamline">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -<div class="section" id="submodules"> -<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> -</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> -<div class="section" id="guide-to-writing-finn-transformations"> -<h3>Guide to writing FINN transformations<a class="headerlink" href="#guide-to-writing-finn-transformations" title="Permalink to this headline">¶</a></h3> -<ul class="simple"> -<li><p>Your transformation must inherit the Transformation abstract base class.</p></li> -<li><p>Your transformation’s apply function should take in a ModelWrapper, and return -a tuple with (transformed_model: ModelWrapper, model_was_changed: Bool)</p></li> -<li><p>The transformations are meant to be applied using the .transform function -in ModelWrapper. This makes a deep copy of the input model by default, so -you don’t have to.</p></li> -<li><p>model_was_changed indicates whether your transformation made any changes to -the model. If you know your transformation needs to be called only once and -repeated calls have no further effect, you can return False even if the model -was changed.</p></li> -<li><p>You MUST return model_was_changed=False at some point when your transformation -is called multiple times, otherwise apply_repeated() will loop infinitely.</p></li> -<li><p>If you cannot guarantee that the transformation will reach a fixed point, -you must declare this, return model_was_changed = False and let the user -manually re-apply the transform.</p></li> -</ul> -<dl class="class"> -<dt id="finn.transformation.Transformation"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.</code><code class="sig-name descname">Transformation</code><a class="headerlink" href="#finn.transformation.Transformation" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">abc.ABC</span></code></p> -<dl class="method"> -<dt id="finn.transformation.Transformation.apply"> -<em class="property">abstract </em><code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.Transformation.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -</div> -</div> - - - </div> - - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2020, Y. Umuroglu, J. Petri-Koenig - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.Navigation.enable(true); - }); - </script> - - - - - - -</body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/finn.transformation.streamline.html b/docs/finn/_build/html/finn.transformation.streamline.html deleted file mode 100644 index 71b17814d..000000000 --- a/docs/finn/_build/html/finn.transformation.streamline.html +++ /dev/null @@ -1,378 +0,0 @@ - - -<!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 package — 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" /> -</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"> - - - - - - - <!-- Local TOC --> - <div class="local-toc"><ul> -<li><a class="reference internal" href="#">finn.transformation.streamline package</a><ul> -<li><a class="reference internal" href="#submodules">Submodules</a></li> -<li><a class="reference internal" href="#module-finn.transformation.streamline.absorb">finn.transformation.streamline.absorb module</a></li> -<li><a class="reference internal" href="#module-finn.transformation.streamline.collapse_repeated">finn.transformation.streamline.collapse_repeated module</a></li> -<li><a class="reference internal" href="#module-finn.transformation.streamline.reorder">finn.transformation.streamline.reorder module</a></li> -<li><a class="reference internal" href="#module-finn.transformation.streamline.round_thresholds">finn.transformation.streamline.round_thresholds module</a></li> -<li><a class="reference internal" href="#module-finn.transformation.streamline.sign_to_thres">finn.transformation.streamline.sign_to_thres module</a></li> -<li><a class="reference internal" href="#module-finn.transformation.streamline">Module contents</a></li> -</ul> -</li> -</ul> -</div> - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" aria-label="top navigation"> - - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">FINN</a> - - </nav> - - - <div class="wy-nav-content"> - - <div class="rst-content"> - - - - - - - - - - - - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - - <ul class="wy-breadcrumbs"> - - <li><a href="index.html">Docs</a> »</li> - - <li>finn.transformation.streamline package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/finn.transformation.streamline.rst.txt" rel="nofollow"> View page source</a> - - - </li> - - </ul> - - - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="finn-transformation-streamline-package"> -<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> -<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> -<dl class="class"> -<dt id="finn.transformation.streamline.Streamline"> -<em class="property">class </em><code class="sig-prename descclassname">finn.transformation.streamline.</code><code class="sig-name descname">Streamline</code><a class="headerlink" href="#finn.transformation.streamline.Streamline" 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>Apply the streamlining transform, see arXiv:1709.04060.</p> -<dl class="method"> -<dt id="finn.transformation.streamline.Streamline.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#finn.transformation.streamline.Streamline.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -</div> - - - </div> - - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2020, Y. Umuroglu, J. Petri-Koenig - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.Navigation.enable(true); - }); - </script> - - - - - - -</body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/finn.util.html b/docs/finn/_build/html/finn.util.html deleted file mode 100644 index 43db0f7d4..000000000 --- a/docs/finn/_build/html/finn.util.html +++ /dev/null @@ -1,473 +0,0 @@ - - -<!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 package — 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" /> -</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"> - - - - - - - <!-- Local TOC --> - <div class="local-toc"><ul> -<li><a class="reference internal" href="#">finn.util package</a><ul> -<li><a class="reference internal" href="#submodules">Submodules</a></li> -<li><a class="reference internal" href="#module-finn.util.basic">finn.util.basic module</a></li> -<li><a class="reference internal" href="#module-finn.util.data_packing">finn.util.data_packing module</a></li> -<li><a class="reference internal" href="#module-finn.util.fpgadataflow">finn.util.fpgadataflow module</a></li> -<li><a class="reference internal" href="#module-finn.util.onnx">finn.util.onnx module</a></li> -<li><a class="reference internal" href="#module-finn.util.test">finn.util.test module</a></li> -<li><a class="reference internal" href="#module-finn.util">Module contents</a></li> -</ul> -</li> -</ul> -</div> - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" aria-label="top navigation"> - - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">FINN</a> - - </nav> - - - <div class="wy-nav-content"> - - <div class="rst-content"> - - - - - - - - - - - - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - - <ul class="wy-breadcrumbs"> - - <li><a href="index.html">Docs</a> »</li> - - <li>finn.util package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/finn.util.rst.txt" rel="nofollow"> View page source</a> - - - </li> - - </ul> - - - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="finn-util-package"> -<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> -<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> -</div> -</div> - - - </div> - - </div> - <footer> - - - <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/modules.html b/docs/finn/_build/html/modules.html index 7c636d62b..51ddff422 100644 --- a/docs/finn/_build/html/modules.html +++ b/docs/finn/_build/html/modules.html @@ -8,7 +8,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>src — FINN documentation</title> + <title><no title> — FINN documentation</title> @@ -127,7 +127,7 @@ <li><a href="index.html">Docs</a> »</li> - <li>src</li> + <li><no title></li> <li class="wy-breadcrumbs-aside"> @@ -146,10 +146,9 @@ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> - <div class="section" id="src"> -<h1>src<a class="headerlink" href="#src" title="Permalink to this headline">¶</a></h1> + <p>finn +===</p> <div class="toctree-wrapper compound"> -</div> </div> diff --git a/docs/finn/_build/html/objects.inv b/docs/finn/_build/html/objects.inv index 2a4e77eea14176ccb516ab4444a424fe97632698..c4f824352f5aefbdf0ed1bf3ed0e4c5174c7e58b 100644 GIT binary patch delta 3360 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 delta 3351 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 diff --git a/docs/finn/_build/html/searchindex.js b/docs/finn/_build/html/searchindex.js index 92106d0fc..d49f110e5 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:[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:[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:[5,15],batchnorm:11,batchnorm_to_affin:[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:[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:[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:[5,11],codegen_ipstitch:[5,11],codegen_npysim:[5,11],collaps:13,collapse_rep:[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,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:15,context:[8,9,10],contribut:2,convent:6,convert:[1,10,11,12,13,14],convert_to_hls_lay:[5,11],convertbipolarmatmultoxnorpopcount:11,convertsigntothr:13,convertsubtoadd:11,convolutioninputgener:[5,9],copi:[8,11,12],core:[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:[5,11],createdataflowpartit:12,current:[2,8],custom:[1,2,6,8],custom_op:[5,15],customop:[9,10],data:[9,12,14],data_pack:[5,15],dataflow:[2,8,12],dataoutstrm:10,datatyp:[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:[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:[],finn_dt:14,finnpy_to_packed_bytearrai:14,first:[6,13],fix:[11,14],flatten:14,float32:[6,8],flow:[],fold_const:[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:[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,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: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:[5,6],hls_var_nam:14,hlscustomop:10,hlslib:[2,10],hlssynth_ipgen:[5,11],homepag:2,host:[1,14],how:[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:[5,15],infer_node_datatyp:[9,10],infer_shap:[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:[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:[5,11],make_empty_exec_context:8,make_new_valueinfo_nam:8,make_project:12,make_pynq_driv:[5,11],make_pynq_proj:[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:[5,6,11,15],modul: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:[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:[5,8,9,10,12,15],onnx_exec:[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: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:[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:[5,15],relat:2,remot:8,remote_exec:[5,15],remov:[12,14],remove_by_nam:14,remove_prefix:14,renam:8,rename_tensor:8,reorder:[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:[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:[5,11],roundandclipthreshold:13,roundup_to_integer_multipl:14,row:10,rtlsim:[8,10],rtlsim_exec:[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:[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:[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:[5,12,15],streamingfclayer_batch:[5,9,12],streamingmaxpool_batch:[5,9],streamlin:[5,11],string:[6,14],stringlength:14,strm_decl:10,structur:6,style:2,sub:11,subdirectori:12,subgraph:8,submodul:[5,15],subpackag:15,subset:6,success:12,suitabl:10,sure:1,surviv:14,synth_pynq_proj:[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:[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:[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:[5,9,12],tmem:10,togeth:12,toggle_clk:10,token:1,tool:[1,2],topolog:[5,15],train:[1,2],transform:[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:[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:[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,5],xdnn:[],xilinx:2,xnorpopcount:[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.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,"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:[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,all:[1,6,8,9,10,11,12,14],all_tensors_f32:6,allow:8,alreadi:12,also:[9,10,12],amount:14,analysi:[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:[5,15],batchnorm:11,batchnorm_to_affin:[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:[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,centerpiec:2,certain:6,chang:[1,8,11],check:[6,8,9,10],check_all_tensor_shapes_specifi:8,check_compat:8,cleanup:[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:[5,11],codegen_ipstitch:[5,11],codegen_npysim:[5,11],collaps:13,collapse_rep:[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,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:15,context:[8,9,10],contribut:2,convent:6,convert:[1,10,11,12,13,14],convert_to_hls_lay:[5,11],convertbipolarmatmultoxnorpopcount:11,convertsigntothr:13,convertsubtoadd:11,convolutioninputgener:[5,9],copi:[8,11,12],core:[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:[5,11],createdataflowpartit:12,current:[2,8],custom:[1,2,6,8],custom_op:[5,15],customop:[9,10],data:[9,12,14],data_pack:[5,15],dataflow:[2,8,12],dataoutstrm:10,datatyp:[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,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:[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:3,finn_dt:14,finnpy_to_packed_bytearrai:14,first:[6,13],fix:[11,14],flatten:14,float32:[6,8],fold_const:[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:[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,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:5,hand:2,has:[6,8,11,12,14],have:[1,6,8,11,12,13],help:1,hex:14,hexstr:14,hexstring2npbytearrai:14,high:1,highli:2,hls_synth_res_estim:[5,6],hls_var_nam:14,hlscustomop:10,hlslib:[2,10],hlssynth_ipgen:[5,11],homepag:2,host:[1,14],how:[5,14],http:1,human:11,immedi:12,implement:8,includ:[2,8,12],indic:[8,9,10,11,12],infer:[1,2,8,9,10,11,14],infer_datatyp:[5,15],infer_node_datatyp:[9,10],infer_shap:[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:[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],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:[5,11],make_empty_exec_context:8,make_new_valueinfo_nam:8,make_project:12,make_pynq_driv:[5,11],make_pynq_proj:[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:[5,6,11,15],modul: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:[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:[5,8,9,10,12,15],onnx_exec:[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: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,pair:12,paramet:13,part:[9,14],particular:[9,10,14],partit:8,pass:[5,10],password:12,past:13,path:[10,14],per:12,perform:[1,9,10],permit:[9,10],place:12,platform:12,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,recommend:11,refer:2,reflect:1,registri:[5,15],relat:2,remot:8,remote_exec:[5,15],remov:[12,14],remove_by_nam:14,remove_prefix:14,renam:8,rename_tensor:8,reorder:[5,11],repeat:[11,13],repeatedli:8,replac:11,repo:1,repositori:[1,2],repres:[8,14],represent:14,requir:[8,9,10],res_estim:[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:[5,11],roundandclipthreshold:13,roundup_to_integer_multipl:14,row:10,rtlsim:[8,10],rtlsim_exec:[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,scp:12,script:[1,12],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_exec_mod:[5,11],set_executable_path:14,set_initi:8,set_ipgen_path:14,set_metadata_prop:8,set_nodeattr:9,set_tensor_datatyp:8,set_tensor_shap:8,setexecmod:12,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:[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,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:[5,12,15],streamingfclayer_batch:[5,9,12],streamingmaxpool_batch:[5,9],streamlin:[5,11],string:[6,14],stringlength:14,strm_decl:10,structur:6,style:2,sub:11,subdirectori:12,subgraph:8,submodul:[5,15],subpackag:15,subset:6,success:12,suitabl:10,sure:1,surviv:14,synth_pynq_proj:[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:[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:[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:[5,9,12],tmem:10,togeth:12,toggle_clk:10,token:1,tool:[1,2],topolog:[5,15],train:[1,2],transform:[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:[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:[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,5],xilinx:2,xnorpopcount:[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","<no title>","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,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],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,shell:1,sign_to_thr:13,sourc:4,src:[],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,templat:[10,12],test:[1,14],tlastmark:10,topolog:6,transform:[11,12,13],use:1,using:1,util:14,verify_custom_nod:6,what:2,write:[6,11],xnorpopcount:9}}) \ No newline at end of file diff --git a/docs/finn/_build/html/source_code/analysis.fpgadataflow.html b/docs/finn/_build/html/source_code/analysis.fpgadataflow.html deleted file mode 100644 index 60f70aab3..000000000 --- a/docs/finn/_build/html/source_code/analysis.fpgadataflow.html +++ /dev/null @@ -1,226 +0,0 @@ - - -<!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>analysis.fpgadataflow package — 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="analysis package" href="analysis.html" /> -</head> - -<body class="wy-body-for-nav"> - - - <div class="wy-grid-for-nav"> - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search" > - - - - <a href="../index.html" class="icon icon-home"> FINN - - - - </a> - - - - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - - - - <ul class="current"> -<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> -<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> -<li class="toctree-l1 current"><a class="reference internal" href="../source_code.html">finn package</a><ul class="current"> -<li class="toctree-l2 current"><a class="reference internal" href="../source_code.html#subpackages">Subpackages</a><ul class="current"> -<li class="toctree-l3 current"><a class="reference internal" href="analysis.html">analysis package</a><ul class="current"> -<li class="toctree-l4 current"><a class="reference internal" href="analysis.html#subpackages">Subpackages</a></li> -</ul> -</li> -</ul> -</li> -</ul> -</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">finn package</a> »</li> - - <li><a href="analysis.html">analysis package</a> »</li> - - <li>analysis.fpgadataflow package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="../_sources/source_code/analysis.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="analysis-fpgadataflow-package"> -<h1>analysis.fpgadataflow package<a class="headerlink" href="#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> -<div class="section" id="analysis-fpgadataflow-hls-synth-res-estimation-module"> -<h2>analysis.fpgadataflow.hls_synth_res_estimation module<a class="headerlink" href="#analysis-fpgadataflow-hls-synth-res-estimation-module" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="analysis-fpgadataflow-res-estimation-module"> -<h2>analysis.fpgadataflow.res_estimation module<a class="headerlink" href="#analysis-fpgadataflow-res-estimation-module" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="module-contents"> -<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - <footer> - - <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - - - <a href="analysis.html" class="btn btn-neutral float-left" title="analysis 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/analysis.html b/docs/finn/_build/html/source_code/analysis.html deleted file mode 100644 index fe50baa48..000000000 --- a/docs/finn/_build/html/source_code/analysis.html +++ /dev/null @@ -1,229 +0,0 @@ - - -<!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>analysis package — 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="analysis.fpgadataflow package" href="analysis.fpgadataflow.html" /> - <link rel="prev" title="finn package" href="../source_code.html" /> -</head> - -<body class="wy-body-for-nav"> - - - <div class="wy-grid-for-nav"> - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search" > - - - - <a href="../index.html" class="icon icon-home"> FINN - - - - </a> - - - - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - - - - <ul class="current"> -<li class="toctree-l1"><a class="reference internal" href="../end_to_end_flow.html">FINN - End-to-End Flow</a></li> -<li class="toctree-l1"><a class="reference internal" href="../getting_started.html">Getting Started</a></li> -<li class="toctree-l1 current"><a class="reference internal" href="../source_code.html">finn package</a><ul class="current"> -<li class="toctree-l2 current"><a class="reference internal" href="../source_code.html#subpackages">Subpackages</a><ul class="current"> -<li class="toctree-l3 current"><a class="current reference internal" href="#">analysis package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="#subpackages">Subpackages</a></li> -</ul> -</li> -</ul> -</li> -</ul> -</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">finn package</a> »</li> - - <li>analysis package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="../_sources/source_code/analysis.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="analysis-package"> -<h1>analysis package<a class="headerlink" href="#analysis-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2> -<div class="toctree-wrapper compound"> -<ul> -<li class="toctree-l1"><a class="reference internal" href="analysis.fpgadataflow.html">analysis.fpgadataflow package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="analysis.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="analysis.fpgadataflow.html#analysis-fpgadataflow-hls-synth-res-estimation-module">analysis.fpgadataflow.hls_synth_res_estimation module</a></li> -<li class="toctree-l2"><a class="reference internal" href="analysis.fpgadataflow.html#analysis-fpgadataflow-res-estimation-module">analysis.fpgadataflow.res_estimation module</a></li> -<li class="toctree-l2"><a class="reference internal" href="analysis.fpgadataflow.html#module-contents">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -</div> - - - </div> - - </div> - <footer> - - <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - - <a href="analysis.fpgadataflow.html" class="btn btn-neutral float-right" title="analysis.fpgadataflow package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - - - <a href="../source_code.html" class="btn btn-neutral float-left" title="finn 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/analysis/analysis.fpgadataflow.html b/docs/finn/_build/html/source_code/analysis/analysis.fpgadataflow.html deleted file mode 100644 index 18949c221..000000000 --- a/docs/finn/_build/html/source_code/analysis/analysis.fpgadataflow.html +++ /dev/null @@ -1,231 +0,0 @@ - - -<!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>analysis.fpgadataflow package — 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="analysis package" href="analysis.html" /> -</head> - -<body class="wy-body-for-nav"> - - - <div class="wy-grid-for-nav"> - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search" > - - - - <a href="../../index.html" class="icon icon-home"> FINN - - - - </a> - - - - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - - - - <ul class="current"> -<li class="toctree-l1"><a class="reference internal" href="../../end_to_end_flow.html">FINN - End-to-End Flow</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../getting_started.html">Getting Started</a></li> -<li class="toctree-l1 current"><a class="reference internal" href="../../source_code.html">finn package</a><ul class="current"> -<li class="toctree-l2 current"><a class="reference internal" href="../../source_code.html#subpackages">Subpackages</a><ul class="current"> -<li class="toctree-l3 current"><a class="reference internal" href="analysis.html">analysis package</a><ul class="current"> -<li class="toctree-l4 current"><a class="reference internal" href="analysis.html#subpackages">Subpackages</a></li> -<li class="toctree-l4"><a class="reference internal" href="analysis.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="analysis.html#analysis-topology-module">analysis.topology module</a></li> -<li class="toctree-l4"><a class="reference internal" href="analysis.html#analysis-verify-custom-nodes-module">analysis.verify_custom_nodes module</a></li> -<li class="toctree-l4"><a class="reference internal" href="analysis.html#module-contents">Module contents</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l2"><a class="reference internal" href="../../source_code.html#module-finn">Module contents</a></li> -</ul> -</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">finn package</a> »</li> - - <li><a href="analysis.html">analysis package</a> »</li> - - <li>analysis.fpgadataflow package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="../../_sources/source_code/analysis/analysis.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="analysis-fpgadataflow-package"> -<h1>analysis.fpgadataflow package<a class="headerlink" href="#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> -<div class="section" id="analysis-fpgadataflow-hls-synth-res-estimation-module"> -<h2>analysis.fpgadataflow.hls_synth_res_estimation module<a class="headerlink" href="#analysis-fpgadataflow-hls-synth-res-estimation-module" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="analysis-fpgadataflow-res-estimation-module"> -<h2>analysis.fpgadataflow.res_estimation module<a class="headerlink" href="#analysis-fpgadataflow-res-estimation-module" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="module-contents"> -<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - <footer> - - <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - - - <a href="analysis.html" class="btn btn-neutral float-left" title="analysis 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/analysis/analysis.html b/docs/finn/_build/html/source_code/analysis/analysis.html deleted file mode 100644 index 57e76a8a2..000000000 --- a/docs/finn/_build/html/source_code/analysis/analysis.html +++ /dev/null @@ -1,246 +0,0 @@ - - -<!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>analysis package — 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="analysis.fpgadataflow package" href="analysis.fpgadataflow.html" /> - <link rel="prev" title="finn package" href="../../source_code.html" /> -</head> - -<body class="wy-body-for-nav"> - - - <div class="wy-grid-for-nav"> - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search" > - - - - <a href="../../index.html" class="icon icon-home"> FINN - - - - </a> - - - - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - - - - <ul class="current"> -<li class="toctree-l1"><a class="reference internal" href="../../end_to_end_flow.html">FINN - End-to-End Flow</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../getting_started.html">Getting Started</a></li> -<li class="toctree-l1 current"><a class="reference internal" href="../../source_code.html">finn package</a><ul class="current"> -<li class="toctree-l2 current"><a class="reference internal" href="../../source_code.html#subpackages">Subpackages</a><ul class="current"> -<li class="toctree-l3 current"><a class="current reference internal" href="#">analysis package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="#subpackages">Subpackages</a></li> -<li class="toctree-l4"><a class="reference internal" href="#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="#analysis-topology-module">analysis.topology module</a></li> -<li class="toctree-l4"><a class="reference internal" href="#analysis-verify-custom-nodes-module">analysis.verify_custom_nodes module</a></li> -<li class="toctree-l4"><a class="reference internal" href="#module-contents">Module contents</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l2"><a class="reference internal" href="../../source_code.html#module-finn">Module contents</a></li> -</ul> -</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">finn package</a> »</li> - - <li>analysis package</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="../../_sources/source_code/analysis/analysis.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="analysis-package"> -<h1>analysis package<a class="headerlink" href="#analysis-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2> -<div class="toctree-wrapper compound"> -<ul> -<li class="toctree-l1"><a class="reference internal" href="analysis.fpgadataflow.html">analysis.fpgadataflow package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="analysis.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="analysis.fpgadataflow.html#analysis-fpgadataflow-hls-synth-res-estimation-module">analysis.fpgadataflow.hls_synth_res_estimation module</a></li> -<li class="toctree-l2"><a class="reference internal" href="analysis.fpgadataflow.html#analysis-fpgadataflow-res-estimation-module">analysis.fpgadataflow.res_estimation module</a></li> -<li class="toctree-l2"><a class="reference internal" href="analysis.fpgadataflow.html#module-contents">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -<div class="section" id="submodules"> -<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="analysis-topology-module"> -<h2>analysis.topology module<a class="headerlink" href="#analysis-topology-module" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="analysis-verify-custom-nodes-module"> -<h2>analysis.verify_custom_nodes module<a class="headerlink" href="#analysis-verify-custom-nodes-module" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="module-contents"> -<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - <footer> - - <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - - <a href="analysis.fpgadataflow.html" class="btn btn-neutral float-right" title="analysis.fpgadataflow package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - - - <a href="../../source_code.html" class="btn btn-neutral float-left" title="finn 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.hls_synth_res_estimation.html b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html deleted file mode 100644 index a333ed66b..000000000 --- a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.hls_synth_res_estimation.html +++ /dev/null @@ -1,219 +0,0 @@ - - -<!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 db2539484..bdaa8bda5 100644 --- a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html +++ b/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.html @@ -34,7 +34,9 @@ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> - <link rel="search" title="Search" href="../search.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.core package" href="finn.core.html" /> + <link rel="prev" title="finn.analysis package" href="finn.analysis.html" /> </head> <body class="wy-body-for-nav"> @@ -127,6 +129,12 @@ <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.fpgadataflow package</li> @@ -182,6 +190,15 @@ Returns {node name : resource estimation}</p> </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.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> + + </div> + <hr/> 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 deleted file mode 100644 index 7e52637fc..000000000 --- a/docs/finn/_build/html/source_code/finn.analysis.fpgadataflow.res_estimation.html +++ /dev/null @@ -1,219 +0,0 @@ - - -<!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 48d59aa20..095e50987 100644 --- a/docs/finn/_build/html/source_code/finn.analysis.html +++ b/docs/finn/_build/html/source_code/finn.analysis.html @@ -34,7 +34,9 @@ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> - <link rel="search" title="Search" href="../search.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.analysis.fpgadataflow package" href="finn.analysis.fpgadataflow.html" /> + <link rel="prev" title="finn package" href="finn.html" /> </head> <body class="wy-body-for-nav"> @@ -127,6 +129,10 @@ <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>finn.analysis package</li> @@ -226,6 +232,15 @@ a dictionary of named properties that the analysis extracts.</p> </div> <footer> + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.analysis.fpgadataflow.html" class="btn btn-neutral float-right" title="finn.analysis.fpgadataflow package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="finn.html" class="btn btn-neutral float-left" title="finn package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + <hr/> diff --git a/docs/finn/_build/html/source_code/finn.analysis.topology.html b/docs/finn/_build/html/source_code/finn.analysis.topology.html deleted file mode 100644 index f602bb8f2..000000000 --- a/docs/finn/_build/html/source_code/finn.analysis.topology.html +++ /dev/null @@ -1,240 +0,0 @@ - - -<!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 deleted file mode 100644 index 5c7b82a0d..000000000 --- a/docs/finn/_build/html/source_code/finn.analysis.verify_custom_nodes.html +++ /dev/null @@ -1,218 +0,0 @@ - - -<!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 deleted file mode 100644 index 2d35ed438..000000000 --- a/docs/finn/_build/html/source_code/finn.core.datatype.html +++ /dev/null @@ -1,354 +0,0 @@ - - -<!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 deleted file mode 100644 index 45ac552b1..000000000 --- a/docs/finn/_build/html/source_code/finn.core.execute_custom_node.html +++ /dev/null @@ -1,217 +0,0 @@ - - -<!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 7114bec69..98aff76d9 100644 --- a/docs/finn/_build/html/source_code/finn.core.html +++ b/docs/finn/_build/html/source_code/finn.core.html @@ -34,7 +34,9 @@ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> - <link rel="search" title="Search" href="../search.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op package" href="finn.custom_op.html" /> + <link rel="prev" title="finn.analysis.fpgadataflow package" href="finn.analysis.fpgadataflow.html" /> </head> <body class="wy-body-for-nav"> @@ -127,6 +129,10 @@ <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>finn.core package</li> @@ -535,6 +541,15 @@ all the intermediate activation values.</p> </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.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/> diff --git a/docs/finn/_build/html/source_code/finn.core.modelwrapper.html b/docs/finn/_build/html/source_code/finn.core.modelwrapper.html deleted file mode 100644 index a1db61212..000000000 --- a/docs/finn/_build/html/source_code/finn.core.modelwrapper.html +++ /dev/null @@ -1,368 +0,0 @@ - - -<!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 deleted file mode 100644 index a6e8dd8d9..000000000 --- a/docs/finn/_build/html/source_code/finn.core.onnx_exec.html +++ /dev/null @@ -1,245 +0,0 @@ - - -<!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 deleted file mode 100644 index 771b6d0de..000000000 --- a/docs/finn/_build/html/source_code/finn.core.remote_exec.html +++ /dev/null @@ -1,215 +0,0 @@ - - -<!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 deleted file mode 100644 index 8d6ea24d4..000000000 --- a/docs/finn/_build/html/source_code/finn.core.rtlsim_exec.html +++ /dev/null @@ -1,216 +0,0 @@ - - -<!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 deleted file mode 100644 index 742ecdeae..000000000 --- a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.convolutioninputgenerator.html +++ /dev/null @@ -1,334 +0,0 @@ - - -<!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 f77578f0e..f263769e1 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 @@ -34,7 +34,9 @@ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> - <link rel="search" title="Search" href="../search.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation package" href="finn.transformation.html" /> + <link rel="prev" title="finn.custom_op package" href="finn.custom_op.html" /> </head> <body class="wy-body-for-nav"> @@ -127,6 +129,12 @@ <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.fpgadataflow package</li> @@ -877,6 +885,15 @@ attribute is not set</p> </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.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> + + </div> + <hr/> 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 deleted file mode 100644 index 87ed52c67..000000000 --- a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingfclayer_batch.html +++ /dev/null @@ -1,408 +0,0 @@ - - -<!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 deleted file mode 100644 index 1f0df0549..000000000 --- a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.streamingmaxpool_batch.html +++ /dev/null @@ -1,312 +0,0 @@ - - -<!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 deleted file mode 100644 index 6a18a9d3b..000000000 --- a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.templates.html +++ /dev/null @@ -1,212 +0,0 @@ - - -<!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 deleted file mode 100644 index bbee90cff..000000000 --- a/docs/finn/_build/html/source_code/finn.custom_op.fpgadataflow.tlastmarker.html +++ /dev/null @@ -1,329 +0,0 @@ - - -<!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 e97dd9bcf..59373404b 100644 --- a/docs/finn/_build/html/source_code/finn.custom_op.html +++ b/docs/finn/_build/html/source_code/finn.custom_op.html @@ -34,7 +34,9 @@ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> - <link rel="search" title="Search" href="../search.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.custom_op.fpgadataflow package" href="finn.custom_op.fpgadataflow.html" /> + <link rel="prev" title="finn.core package" href="finn.core.html" /> </head> <body class="wy-body-for-nav"> @@ -127,6 +129,10 @@ <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>finn.custom_op package</li> @@ -415,6 +421,15 @@ the number of inputs is equal to the expected number</p> </div> <footer> + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <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> + + </div> + <hr/> 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 deleted file mode 100644 index 0ba6f08e3..000000000 --- a/docs/finn/_build/html/source_code/finn.custom_op.multithreshold.html +++ /dev/null @@ -1,267 +0,0 @@ - - -<!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 deleted file mode 100644 index 257e4a9d8..000000000 --- a/docs/finn/_build/html/source_code/finn.custom_op.registry.html +++ /dev/null @@ -1,216 +0,0 @@ - - -<!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 deleted file mode 100644 index 82daf99f8..000000000 --- a/docs/finn/_build/html/source_code/finn.custom_op.streamingdataflowpartition.html +++ /dev/null @@ -1,257 +0,0 @@ - - -<!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 deleted file mode 100644 index e4e92ce4b..000000000 --- a/docs/finn/_build/html/source_code/finn.custom_op.xnorpopcount.html +++ /dev/null @@ -1,262 +0,0 @@ - - -<!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 77d2c467f..51b1f6b6f 100644 --- a/docs/finn/_build/html/source_code/finn.html +++ b/docs/finn/_build/html/source_code/finn.html @@ -34,7 +34,9 @@ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> - <link rel="search" title="Search" href="../search.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.analysis package" href="finn.analysis.html" /> + <link rel="prev" title="Source Code" href="../source_code.html" /> </head> <body class="wy-body-for-nav"> @@ -127,6 +129,8 @@ <li><a href="../index.html">Docs</a> »</li> + <li><a href="../source_code.html">Source Code</a> »</li> + <li>finn package</li> @@ -276,6 +280,15 @@ </div> <footer> + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="finn.analysis.html" class="btn btn-neutral float-right" title="finn.analysis package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="../source_code.html" class="btn btn-neutral float-left" title="Source Code" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + <hr/> 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 deleted file mode 100644 index 956339611..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.batchnorm_to_affine.html +++ /dev/null @@ -1,222 +0,0 @@ - - -<!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 deleted file mode 100644 index 60ba89ae7..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.bipolar_to_xnor.html +++ /dev/null @@ -1,223 +0,0 @@ - - -<!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 deleted file mode 100644 index d02be3647..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fold_constants.html +++ /dev/null @@ -1,223 +0,0 @@ - - -<!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 deleted file mode 100644 index ce38981d4..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.cleanup.html +++ /dev/null @@ -1,224 +0,0 @@ - - -<!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 deleted file mode 100644 index 15ee3487e..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipgen.html +++ /dev/null @@ -1,224 +0,0 @@ - - -<!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 deleted file mode 100644 index 53fcfe117..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_ipstitch.html +++ /dev/null @@ -1,232 +0,0 @@ - - -<!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 deleted file mode 100644 index 36e1774c5..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.codegen_npysim.html +++ /dev/null @@ -1,224 +0,0 @@ - - -<!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 deleted file mode 100644 index 3ee88f9b1..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.compile.html +++ /dev/null @@ -1,224 +0,0 @@ - - -<!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 deleted file mode 100644 index 31b287d2b..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.convert_to_hls_layers.html +++ /dev/null @@ -1,226 +0,0 @@ - - -<!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 deleted file mode 100644 index e47ba3493..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.create_dataflow_partition.html +++ /dev/null @@ -1,228 +0,0 @@ - - -<!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 deleted file mode 100644 index 1d2a3d9ec..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.hlssynth_ipgen.html +++ /dev/null @@ -1,224 +0,0 @@ - - -<!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 d1f6bd04b..194aa7cc1 100644 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html +++ b/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.html @@ -34,7 +34,9 @@ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> - <link rel="search" title="Search" href="../search.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.streamline package" href="finn.transformation.streamline.html" /> + <link rel="prev" title="finn.transformation package" href="finn.transformation.html" /> </head> <body class="wy-body-for-nav"> @@ -127,6 +129,12 @@ <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.fpgadataflow package</li> @@ -407,6 +415,15 @@ transformation must be applied prior to this transformation.</p> </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.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> + + </div> + <hr/> 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 deleted file mode 100644 index 1b972534f..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.insert_tlastmarker.html +++ /dev/null @@ -1,225 +0,0 @@ - - -<!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 deleted file mode 100644 index 8a3bb6955..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_deployment.html +++ /dev/null @@ -1,228 +0,0 @@ - - -<!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 deleted file mode 100644 index 1e21d93b9..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_driver.html +++ /dev/null @@ -1,229 +0,0 @@ - - -<!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 deleted file mode 100644 index c95642fa5..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.make_pynq_proj.html +++ /dev/null @@ -1,231 +0,0 @@ - - -<!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 deleted file mode 100644 index f7263416c..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.set_exec_mode.html +++ /dev/null @@ -1,224 +0,0 @@ - - -<!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 deleted file mode 100644 index 4f24fdad4..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.synth_pynq_proj.html +++ /dev/null @@ -1,225 +0,0 @@ - - -<!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 deleted file mode 100644 index 9777fad44..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.fpgadataflow.templates.html +++ /dev/null @@ -1,212 +0,0 @@ - - -<!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 deleted file mode 100644 index 0c1dc50f0..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.general.html +++ /dev/null @@ -1,259 +0,0 @@ - - -<!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 b789fd54b..939edb332 100644 --- a/docs/finn/_build/html/source_code/finn.transformation.html +++ b/docs/finn/_build/html/source_code/finn.transformation.html @@ -34,7 +34,9 @@ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> - <link rel="search" title="Search" href="../search.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.transformation.fpgadataflow package" href="finn.transformation.fpgadataflow.html" /> + <link rel="prev" title="finn.custom_op.fpgadataflow package" href="finn.custom_op.fpgadataflow.html" /> </head> <body class="wy-body-for-nav"> @@ -127,6 +129,10 @@ <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>finn.transformation package</li> @@ -360,6 +366,15 @@ manually re-apply the transform.</p></li> </div> <footer> + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <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> + + </div> + <hr/> 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 deleted file mode 100644 index 5987f219e..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.infer_datatypes.html +++ /dev/null @@ -1,223 +0,0 @@ - - -<!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 deleted file mode 100644 index f2b1f440d..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.infer_shapes.html +++ /dev/null @@ -1,222 +0,0 @@ - - -<!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 deleted file mode 100644 index 72ae8104a..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.streamline.absorb.html +++ /dev/null @@ -1,265 +0,0 @@ - - -<!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 deleted file mode 100644 index bae88456a..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.streamline.collapse_repeated.html +++ /dev/null @@ -1,238 +0,0 @@ - - -<!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 29f9bdec0..c3faa75ab 100644 --- a/docs/finn/_build/html/source_code/finn.transformation.streamline.html +++ b/docs/finn/_build/html/source_code/finn.transformation.streamline.html @@ -34,7 +34,9 @@ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> - <link rel="search" title="Search" href="../search.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="finn.util package" href="finn.util.html" /> + <link rel="prev" title="finn.transformation.fpgadataflow package" href="finn.transformation.fpgadataflow.html" /> </head> <body class="wy-body-for-nav"> @@ -127,6 +129,12 @@ <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.streamline package</li> @@ -333,6 +341,15 @@ is unsigned, sets negative thresholds to zero.</p> </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.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/> 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 deleted file mode 100644 index 042fffbda..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.streamline.reorder.html +++ /dev/null @@ -1,251 +0,0 @@ - - -<!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 deleted file mode 100644 index 78981939a..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.streamline.round_thresholds.html +++ /dev/null @@ -1,226 +0,0 @@ - - -<!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 deleted file mode 100644 index a4a663b62..000000000 --- a/docs/finn/_build/html/source_code/finn.transformation.streamline.sign_to_thres.html +++ /dev/null @@ -1,224 +0,0 @@ - - -<!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 deleted file mode 100644 index 8b2eefee4..000000000 --- a/docs/finn/_build/html/source_code/finn.util.basic.html +++ /dev/null @@ -1,305 +0,0 @@ - - -<!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 deleted file mode 100644 index de8e3cc3c..000000000 --- a/docs/finn/_build/html/source_code/finn.util.data_packing.html +++ /dev/null @@ -1,313 +0,0 @@ - - -<!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 deleted file mode 100644 index e78854a1b..000000000 --- a/docs/finn/_build/html/source_code/finn.util.fpgadataflow.html +++ /dev/null @@ -1,237 +0,0 @@ - - -<!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 70b982d18..eff5daeba 100644 --- a/docs/finn/_build/html/source_code/finn.util.html +++ b/docs/finn/_build/html/source_code/finn.util.html @@ -34,7 +34,8 @@ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> - <link rel="search" title="Search" href="../search.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="prev" title="finn.transformation.streamline package" href="finn.transformation.streamline.html" /> </head> <body class="wy-body-for-nav"> @@ -127,6 +128,10 @@ <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>finn.util package</li> @@ -428,6 +433,13 @@ is set, the innermost unpacked dimension will be reversed.</p> </div> <footer> + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + + <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/> diff --git a/docs/finn/_build/html/source_code/finn.util.onnx.html b/docs/finn/_build/html/source_code/finn.util.onnx.html deleted file mode 100644 index ef69d1d79..000000000 --- a/docs/finn/_build/html/source_code/finn.util.onnx.html +++ /dev/null @@ -1,216 +0,0 @@ - - -<!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 deleted file mode 100644 index 6c9a032f1..000000000 --- a/docs/finn/_build/html/source_code/finn.util.test.html +++ /dev/null @@ -1,227 +0,0 @@ - - -<!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/src.finn.analysis.fpgadataflow.html b/docs/finn/_build/html/src.finn.analysis.fpgadataflow.html deleted file mode 100644 index d5f674b8c..000000000 --- a/docs/finn/_build/html/src.finn.analysis.fpgadataflow.html +++ /dev/null @@ -1,126 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src.finn.analysis.fpgadataflow package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-finn-analysis-fpgadataflow-package"> -<h1>src.finn.analysis.fpgadataflow package<a class="headerlink" href="#src-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> -<div class="section" id="module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation"> -<span id="src-finn-analysis-fpgadataflow-hls-synth-res-estimation-module"></span><h2>src.finn.analysis.fpgadataflow.hls_synth_res_estimation module<a class="headerlink" href="#module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="src.finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation"> -<code class="sig-prename descclassname">src.finn.analysis.fpgadataflow.hls_synth_res_estimation.</code><code class="sig-name descname">hls_synth_res_estimation</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.analysis.fpgadataflow.hls_synth_res_estimation.hls_synth_res_estimation" title="Permalink to this definition">¶</a></dt> -<dd><p>Extracts the results from the vivado synthesis. -Returns {node name : resource estimation}</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.analysis.fpgadataflow.res_estimation"> -<span id="src-finn-analysis-fpgadataflow-res-estimation-module"></span><h2>src.finn.analysis.fpgadataflow.res_estimation module<a class="headerlink" href="#module-src.finn.analysis.fpgadataflow.res_estimation" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="src.finn.analysis.fpgadataflow.res_estimation.res_estimation"> -<code class="sig-prename descclassname">src.finn.analysis.fpgadataflow.res_estimation.</code><code class="sig-name descname">res_estimation</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.analysis.fpgadataflow.res_estimation.res_estimation" title="Permalink to this definition">¶</a></dt> -<dd><p>Estimates the resources needed for the given model. -Returns {node name : resource estimation}</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.analysis.fpgadataflow"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.analysis.fpgadataflow" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.finn.analysis.fpgadataflow.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/src.finn.analysis.html b/docs/finn/_build/html/src.finn.analysis.html deleted file mode 100644 index e9492e7bd..000000000 --- a/docs/finn/_build/html/src.finn.analysis.html +++ /dev/null @@ -1,170 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src.finn.analysis package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-finn-analysis-package"> -<h1>src.finn.analysis package<a class="headerlink" href="#src-finn-analysis-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2> -<div class="toctree-wrapper compound"> -<ul> -<li class="toctree-l1"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html">src.finn.analysis.fpgadataflow package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation">src.finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.res_estimation">src.finn.analysis.fpgadataflow.res_estimation module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -<div class="section" id="submodules"> -<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="module-src.finn.analysis.topology"> -<span id="src-finn-analysis-topology-module"></span><h2>src.finn.analysis.topology module<a class="headerlink" href="#module-src.finn.analysis.topology" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="src.finn.analysis.topology.all_tensors_f32"> -<code class="sig-prename descclassname">src.finn.analysis.topology.</code><code class="sig-name descname">all_tensors_f32</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.analysis.topology.all_tensors_f32" title="Permalink to this definition">¶</a></dt> -<dd><p>Checks whether all tensors have a float32 dtype, extra quantization -annotations notwithstanding.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.analysis.topology.get_per_tensor_fanouts"> -<code class="sig-prename descclassname">src.finn.analysis.topology.</code><code class="sig-name descname">get_per_tensor_fanouts</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.analysis.topology.get_per_tensor_fanouts" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dictionary of (tensor_name, tensor_fanout) for the model.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.analysis.topology.is_linear"> -<code class="sig-prename descclassname">src.finn.analysis.topology.</code><code class="sig-name descname">is_linear</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.analysis.topology.is_linear" title="Permalink to this definition">¶</a></dt> -<dd><p>Checks whether the given model graph is linear. This is done by looking -at the fan-out of each tensor. All tensors have a fan-out <= 1 in a linear -graph. Returns {“is_linearâ€, Bool}</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.analysis.topology.node_inputs_in_expected_order"> -<code class="sig-prename descclassname">src.finn.analysis.topology.</code><code class="sig-name descname">node_inputs_in_expected_order</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.analysis.topology.node_inputs_in_expected_order" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that the node inputs are ordered in the way that FINN expects -them. When a node has a mixture of static (= constant, initialized) inputs -and dynamic inputs, the dynamic input should come first, followed by the -static one. Only verifiable for a small subset of op_types for now.</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.analysis.verify_custom_nodes"> -<span id="src-finn-analysis-verify-custom-nodes-module"></span><h2>src.finn.analysis.verify_custom_nodes module<a class="headerlink" href="#module-src.finn.analysis.verify_custom_nodes" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="src.finn.analysis.verify_custom_nodes.verify_nodes"> -<code class="sig-prename descclassname">src.finn.analysis.verify_custom_nodes.</code><code class="sig-name descname">verify_nodes</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.analysis.verify_custom_nodes.verify_nodes" title="Permalink to this definition">¶</a></dt> -<dd><p>Checks if custom ops in graph are correctly built, with all attributes -and inputs. Returns {node op_type : info_messages} -<a href="#id1"><span class="problematic" id="id2">*</span></a>info_messages is list of strings about the result of the verification</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.analysis"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.analysis" title="Permalink to this headline">¶</a></h2> -<div class="section" id="how-to-write-an-analysis-pass-for-finn"> -<h3>How to write an analysis pass for FINN<a class="headerlink" href="#how-to-write-an-analysis-pass-for-finn" title="Permalink to this headline">¶</a></h3> -<p>An analysis pass traverses the graph structure and produces information about -certain properties. The convention is to take in a ModelWrapper, and return -a dictionary of named properties that the analysis extracts.</p> -</div> -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.finn.analysis.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/src.finn.core.html b/docs/finn/_build/html/src.finn.core.html deleted file mode 100644 index dbddb71c3..000000000 --- a/docs/finn/_build/html/src.finn.core.html +++ /dev/null @@ -1,466 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src.finn.core package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-finn-core-package"> -<h1>src.finn.core package<a class="headerlink" href="#src-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> -<div class="section" id="module-src.finn.core.datatype"> -<span id="src-finn-core-datatype-module"></span><h2>src.finn.core.datatype module<a class="headerlink" href="#module-src.finn.core.datatype" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.core.datatype.DataType"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.core.datatype.</code><code class="sig-name descname">DataType</code><a class="headerlink" href="#src.finn.core.datatype.DataType" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">enum.Enum</span></code></p> -<p>An enumeration.</p> -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.BINARY"> -<code class="sig-name descname">BINARY</code><em class="property"> = 1</em><a class="headerlink" href="#src.finn.core.datatype.DataType.BINARY" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.BIPOLAR"> -<code class="sig-name descname">BIPOLAR</code><em class="property"> = 8</em><a class="headerlink" href="#src.finn.core.datatype.DataType.BIPOLAR" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.FLOAT32"> -<code class="sig-name descname">FLOAT32</code><em class="property"> = 16</em><a class="headerlink" href="#src.finn.core.datatype.DataType.FLOAT32" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.INT16"> -<code class="sig-name descname">INT16</code><em class="property"> = 14</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT16" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.INT2"> -<code class="sig-name descname">INT2</code><em class="property"> = 10</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT2" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.INT3"> -<code class="sig-name descname">INT3</code><em class="property"> = 11</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT3" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.INT32"> -<code class="sig-name descname">INT32</code><em class="property"> = 15</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT32" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.INT4"> -<code class="sig-name descname">INT4</code><em class="property"> = 12</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT4" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.INT8"> -<code class="sig-name descname">INT8</code><em class="property"> = 13</em><a class="headerlink" href="#src.finn.core.datatype.DataType.INT8" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.TERNARY"> -<code class="sig-name descname">TERNARY</code><em class="property"> = 9</em><a class="headerlink" href="#src.finn.core.datatype.DataType.TERNARY" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.UINT16"> -<code class="sig-name descname">UINT16</code><em class="property"> = 6</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT16" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.UINT2"> -<code class="sig-name descname">UINT2</code><em class="property"> = 2</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT2" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.UINT3"> -<code class="sig-name descname">UINT3</code><em class="property"> = 3</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT3" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.UINT32"> -<code class="sig-name descname">UINT32</code><em class="property"> = 7</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT32" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.UINT4"> -<code class="sig-name descname">UINT4</code><em class="property"> = 4</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT4" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="attribute"> -<dt id="src.finn.core.datatype.DataType.UINT8"> -<code class="sig-name descname">UINT8</code><em class="property"> = 5</em><a class="headerlink" href="#src.finn.core.datatype.DataType.UINT8" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.core.datatype.DataType.allowed"> -<code class="sig-name descname">allowed</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.datatype.DataType.allowed" title="Permalink to this definition">¶</a></dt> -<dd><p>Check whether given value is allowed for this DataType.</p> -<p>value (float32): value to be checked</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.datatype.DataType.bitwidth"> -<code class="sig-name descname">bitwidth</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.datatype.DataType.bitwidth" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the number of bits required for this DataType.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.datatype.DataType.get_hls_datatype_str"> -<code class="sig-name descname">get_hls_datatype_str</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.datatype.DataType.get_hls_datatype_str" title="Permalink to this definition">¶</a></dt> -<dd><p>Return the corresponding Vivado HLS datatype name.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.datatype.DataType.get_num_possible_values"> -<code class="sig-name descname">get_num_possible_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.datatype.DataType.get_num_possible_values" title="Permalink to this definition">¶</a></dt> -<dd><p>Return the number of possible values this DataType can take. Only -implemented for integer types for now.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.datatype.DataType.get_smallest_possible"> -<code class="sig-name descname">get_smallest_possible</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.datatype.DataType.get_smallest_possible" title="Permalink to this definition">¶</a></dt> -<dd><p>Return smallest (fewest bits) possible DataType that can represent -value. Prefers unsigned integers where possible.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.datatype.DataType.is_integer"> -<code class="sig-name descname">is_integer</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.datatype.DataType.is_integer" title="Permalink to this definition">¶</a></dt> -<dd><p>Return whether this DataType represents integer values only.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.datatype.DataType.max"> -<code class="sig-name descname">max</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.datatype.DataType.max" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the largest possible value allowed by this DataType.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.datatype.DataType.min"> -<code class="sig-name descname">min</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.datatype.DataType.min" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the smallest possible value allowed by this DataType.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.datatype.DataType.signed"> -<code class="sig-name descname">signed</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.datatype.DataType.signed" title="Permalink to this definition">¶</a></dt> -<dd><p>Return whether this DataType can represent negative numbers.</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.core.execute_custom_node"> -<span id="src-finn-core-execute-custom-node-module"></span><h2>src.finn.core.execute_custom_node module<a class="headerlink" href="#module-src.finn.core.execute_custom_node" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="src.finn.core.execute_custom_node.execute_custom_node"> -<code class="sig-prename descclassname">src.finn.core.execute_custom_node.</code><code class="sig-name descname">execute_custom_node</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.execute_custom_node.execute_custom_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Call custom implementation to execute a single custom node. -Input/output provided via context.</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.core.modelwrapper"> -<span id="src-finn-core-modelwrapper-module"></span><h2>src.finn.core.modelwrapper module<a class="headerlink" href="#module-src.finn.core.modelwrapper" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.core.modelwrapper.ModelWrapper"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.core.modelwrapper.</code><code class="sig-name descname">ModelWrapper</code><span class="sig-paren">(</span><em class="sig-param">onnx_model_proto</em>, <em class="sig-param">make_deepcopy=False</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> -<p>A wrapper around ONNX ModelProto that exposes some useful utility -functions for graph manipulation and exploration.</p> -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.analysis"> -<code class="sig-name descname">analysis</code><span class="sig-paren">(</span><em class="sig-param">analysis_fxn</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.analysis" title="Permalink to this definition">¶</a></dt> -<dd><p>Run given anaylsis_fxn on this model and return resulting dict.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified"> -<code class="sig-name descname">check_all_tensor_shapes_specified</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.check_all_tensor_shapes_specified" title="Permalink to this definition">¶</a></dt> -<dd><p>Checks whether all tensors have a specified shape (ValueInfo). -The ONNX standard allows for intermediate activations to have no -associated ValueInfo, but FINN expects this.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.check_compatibility"> -<code class="sig-name descname">check_compatibility</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.check_compatibility" title="Permalink to this definition">¶</a></dt> -<dd><p>Checks this model for FINN compatibility: -* no embedded subgraphs -* all tensor shapes are specified, including activations -* all constants are initializers</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.find_consumer"> -<code class="sig-name descname">find_consumer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.find_consumer" title="Permalink to this definition">¶</a></dt> -<dd><p>Find and return the node that consumes the tensor with given name. -Currently only works for linear graphs.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.find_producer"> -<code class="sig-name descname">find_producer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.find_producer" title="Permalink to this definition">¶</a></dt> -<dd><p>Find and return the node that produces the tensor with given name. -Currently only works for linear graphs.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.get_all_tensor_names"> -<code class="sig-name descname">get_all_tensor_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.get_all_tensor_names" title="Permalink to this definition">¶</a></dt> -<dd><p>Return a list of all (input, output and value_info) tensor names -in the graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.get_initializer"> -<code class="sig-name descname">get_initializer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.get_initializer" title="Permalink to this definition">¶</a></dt> -<dd><p>Get the initializer value for tensor with given name, if any.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.get_metadata_prop"> -<code class="sig-name descname">get_metadata_prop</code><span class="sig-paren">(</span><em class="sig-param">key</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.get_metadata_prop" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the value associated with metadata_prop with given key, -or None otherwise.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.get_tensor_datatype"> -<code class="sig-name descname">get_tensor_datatype</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.get_tensor_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the FINN DataType of tensor with given name.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.get_tensor_fanout"> -<code class="sig-name descname">get_tensor_fanout</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.get_tensor_fanout" title="Permalink to this definition">¶</a></dt> -<dd><p>Return the number of nodes for which the tensor with given name is -as input.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.get_tensor_shape"> -<code class="sig-name descname">get_tensor_shape</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.get_tensor_shape" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the shape of tensor with given name, if it has ValueInfoProto.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo"> -<code class="sig-name descname">get_tensor_valueinfo</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.get_tensor_valueinfo" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns ValueInfoProto of tensor with given name, if it has one.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.graph"> -<em class="property">property </em><code class="sig-name descname">graph</code><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.graph" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.make_empty_exec_context"> -<code class="sig-name descname">make_empty_exec_context</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.make_empty_exec_context" title="Permalink to this definition">¶</a></dt> -<dd><p>Creates an empty execution context for this model. -The execution context is a dictionary of all tensors used for the -inference computation. Any initializer values will be taken into -account, all other tensors will be zero.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name"> -<code class="sig-name descname">make_new_valueinfo_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.make_new_valueinfo_name" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a name that can be used for a new value_info.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.model"> -<em class="property">property </em><code class="sig-name descname">model</code><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.model" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.rename_tensor"> -<code class="sig-name descname">rename_tensor</code><span class="sig-paren">(</span><em class="sig-param">old_name</em>, <em class="sig-param">new_name</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.rename_tensor" title="Permalink to this definition">¶</a></dt> -<dd><p>Rename a tensor from old_name to new_name.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.save"> -<code class="sig-name descname">save</code><span class="sig-paren">(</span><em class="sig-param">filename</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.save" title="Permalink to this definition">¶</a></dt> -<dd><p>Save the wrapper ONNX ModelProto into a file with given name.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.set_attribute"> -<code class="sig-name descname">set_attribute</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">attribute_name</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.set_attribute" title="Permalink to this definition">¶</a></dt> -<dd><p>Sets a custom node attribute of given name with given value</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.set_initializer"> -<code class="sig-name descname">set_initializer</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">tensor_value</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.set_initializer" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the initializer value for tensor with given name.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.set_metadata_prop"> -<code class="sig-name descname">set_metadata_prop</code><span class="sig-paren">(</span><em class="sig-param">key</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.set_metadata_prop" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.set_tensor_datatype"> -<code class="sig-name descname">set_tensor_datatype</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">datatype</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.set_tensor_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Sets the FINN DataType of tensor with given name.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.set_tensor_shape"> -<code class="sig-name descname">set_tensor_shape</code><span class="sig-paren">(</span><em class="sig-param">tensor_name</em>, <em class="sig-param">tensor_shape</em>, <em class="sig-param">dtype=1</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.set_tensor_shape" title="Permalink to this definition">¶</a></dt> -<dd><p>Assign shape in ValueInfoProto for tensor with given name.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.core.modelwrapper.ModelWrapper.transform"> -<code class="sig-name descname">transform</code><span class="sig-paren">(</span><em class="sig-param">transformation</em>, <em class="sig-param">make_deepcopy=True</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.modelwrapper.ModelWrapper.transform" title="Permalink to this definition">¶</a></dt> -<dd><p>Applies given Transformation repeatedly until no more changes can be made -and returns a transformed ModelWrapper instance. -If make_deepcopy is specified, operates on a new (deep)copy of model.</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.core.onnx_exec"> -<span id="src-finn-core-onnx-exec-module"></span><h2>src.finn.core.onnx_exec module<a class="headerlink" href="#module-src.finn.core.onnx_exec" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="src.finn.core.onnx_exec.compare_execution"> -<code class="sig-prename descclassname">src.finn.core.onnx_exec.</code><code class="sig-name descname">compare_execution</code><span class="sig-paren">(</span><em class="sig-param">model_a</em>, <em class="sig-param">model_b</em>, <em class="sig-param">input_dict</em>, <em class="sig-param">compare_fxn=<function <lambda>></em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.onnx_exec.compare_execution" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute two ONNX models and compare their outputs using given function. -compare_fxn should take in two tensors and return a Boolean</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.core.onnx_exec.execute_node"> -<code class="sig-prename descclassname">src.finn.core.onnx_exec.</code><code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">node</em>, <em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.onnx_exec.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Call onnxruntime to execute a single node. Input/output provided via context.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.core.onnx_exec.execute_onnx"> -<code class="sig-prename descclassname">src.finn.core.onnx_exec.</code><code class="sig-name descname">execute_onnx</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">input_dict</em>, <em class="sig-param">return_full_exec_context=False</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.onnx_exec.execute_onnx" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute given ONNX ModelWrapper with given named inputs. -If return_full_exec_context is False, a dict of named outputs is returned -as indicated by the model.graph.output. -If return return_full_exec_context is True, the full set of tensors used by -the execution (including inputs, weights, activations and final outputs) -will be returned as a dict.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.core.onnx_exec.execute_onnx_and_make_model"> -<code class="sig-prename descclassname">src.finn.core.onnx_exec.</code><code class="sig-name descname">execute_onnx_and_make_model</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">input_dict</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.core.onnx_exec.execute_onnx_and_make_model" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute given ONNX ModelWrapper with given named inputs and return a new -ModelWrapper where an initializer is provided for each tensor as taken from -the execution. This new model is useful for debugging, since it contains -all the intermediate activation values.</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.core"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.core" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.finn.core.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/src.finn.custom_op.fpgadataflow.html b/docs/finn/_build/html/src.finn.custom_op.fpgadataflow.html deleted file mode 100644 index 8cc164d7b..000000000 --- a/docs/finn/_build/html/src.finn.custom_op.fpgadataflow.html +++ /dev/null @@ -1,821 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src.finn.custom_op.fpgadataflow package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-finn-custom-op-fpgadataflow-package"> -<h1>src.finn.custom_op.fpgadataflow package<a class="headerlink" href="#src-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> -<div class="section" id="module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator"> -<span id="src-finn-custom-op-fpgadataflow-convolutioninputgenerator-module"></span><h2>src.finn.custom_op.fpgadataflow.convolutioninputgenerator module<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.fpgadataflow.convolutioninputgenerator.</code><code class="sig-name descname">ConvolutionInputGenerator</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></p> -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction"> -<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.blackboxfunction" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation"> -<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.bram_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm"> -<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.dataoutstrm" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines"> -<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.defines" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute"> -<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.docompute" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype"> -<code class="sig-name descname">get_input_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_input_datatype" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values"> -<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_number_output_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype"> -<code class="sig-name descname">get_output_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_output_datatype" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width"> -<code class="sig-name descname">get_stream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.get_stream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes"> -<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.global_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation"> -<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.lut_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas"> -<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.pragmas" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data"> -<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.read_npy_data" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy"> -<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.save_as_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl"> -<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.strm_decl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.convolutioninputgenerator.ConvolutionInputGenerator.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch"> -<span id="src-finn-custom-op-fpgadataflow-streamingfclayer-batch-module"></span><h2>src.finn.custom_op.fpgadataflow.streamingfclayer_batch module<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.fpgadataflow.streamingfclayer_batch.</code><code class="sig-name descname">StreamingFCLayer_Batch</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></p> -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction"> -<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation"> -<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.bram_estimation" title="Permalink to this definition">¶</a></dt> -<dd><p>the calculations are based on: -- FINN-R: An End-to-End Deep-Learning Framework for Fast -Exploration of Quantized Neural Networks -- M. Blott, T. B. Preusser, N. J. Fraser, G. Gambardella, K. O’Brien, -Y. Umuroglu, M. Leeser and K. Vissers -- 12. Sep 2018</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem"> -<code class="sig-name descname">calc_tmem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_tmem" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem"> -<code class="sig-name descname">calc_wmem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.calc_wmem" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm"> -<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines"> -<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.defines" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute"> -<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.docompute" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params"> -<code class="sig-name descname">generate_params</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.generate_params" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape"> -<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_input_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape"> -<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_folded_output_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor"> -<code class="sig-name descname">get_hls_compatible_threshold_tensor</code><span class="sig-paren">(</span><em class="sig-param">orig_thres_matrix</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_threshold_tensor" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert the original numpy weight matrix orig_weight_matrix into -a form suitable for passing to the hlslib call: -* ensure MH % PE == 0 -* for bipolar weights&inputs, ensure thresholds are positive -* interleave rows between PEs -* reshape into (PE, TMEM, n_thres_steps) and return</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor"> -<code class="sig-name descname">get_hls_compatible_weight_tensor</code><span class="sig-paren">(</span><em class="sig-param">orig_weight_matrix</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_hls_compatible_weight_tensor" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert the original numpy weight matrix orig_weight_matrix into -a form suitable for passing to the hlslib call: -* ensure MH % PE == 0 and MW % SIMD == 0 -* for bipolar {-1,+1} weights, convert to binary {0, 1} -* interleave rows between PEs -* reshape into (1, PE, WMEM, SIMD) and return</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype"> -<code class="sig-name descname">get_input_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_input_datatype" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width"> -<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_instream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values"> -<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_number_output_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype"> -<code class="sig-name descname">get_output_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_output_datatype" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width"> -<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_outstream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values"> -<code class="sig-name descname">get_template_param_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_template_param_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype"> -<code class="sig-name descname">get_weight_datatype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.get_weight_datatype" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes"> -<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.global_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation"> -<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.lut_estimation" title="Permalink to this definition">¶</a></dt> -<dd><p>the calculations are based on: -- FINN-R: An End-to-End Deep-Learning Framework for Fast -Exploration of Quantized Neural Networks -- M. Blott, T. B. Preusser, N. J. Fraser, G. Gambardella, K. O’Brien, -Y. Umuroglu, M. Leeser and K. Vissers -- 12. Sep 2018</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas"> -<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.pragmas" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data"> -<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.read_npy_data" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy"> -<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.save_as_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl"> -<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.strm_decl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingfclayer_batch.StreamingFCLayer_Batch.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch"> -<span id="src-finn-custom-op-fpgadataflow-streamingmaxpool-batch-module"></span><h2>src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.</code><code class="sig-name descname">StreamingMaxPool_Batch</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></p> -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction"> -<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.blackboxfunction" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation"> -<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.bram_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm"> -<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.dataoutstrm" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines"> -<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.defines" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute"> -<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.docompute" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values"> -<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.get_number_output_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes"> -<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.global_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation"> -<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.lut_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas"> -<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.pragmas" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data"> -<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.read_npy_data" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy"> -<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.save_as_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl"> -<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.strm_decl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.streamingmaxpool_batch.StreamingMaxPool_Batch.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.custom_op.fpgadataflow.templates"> -<span id="src-finn-custom-op-fpgadataflow-templates-module"></span><h2>src.finn.custom_op.fpgadataflow.templates module<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow.templates" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="module-src.finn.custom_op.fpgadataflow.tlastmarker"> -<span id="src-finn-custom-op-fpgadataflow-tlastmarker-module"></span><h2>src.finn.custom_op.fpgadataflow.tlastmarker module<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow.tlastmarker" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.fpgadataflow.tlastmarker.</code><code class="sig-name descname">TLastMarker</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.fpgadataflow.HLSCustomOp</span></code></p> -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction"> -<code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.blackboxfunction" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm"> -<code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.dataoutstrm" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines"> -<code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.defines" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute"> -<code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.docompute" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape"> -<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_input_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape"> -<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_folded_output_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width"> -<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_instream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values"> -<code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_number_output_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width"> -<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.get_outstream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes"> -<code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.global_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas"> -<code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.pragmas" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data"> -<code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.read_npy_data" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy"> -<code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.save_as_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl"> -<code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.strm_decl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.tlastmarker.TLastMarker.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.custom_op.fpgadataflow"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.custom_op.fpgadataflow" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.fpgadataflow.</code><code class="sig-name descname">HLSCustomOp</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></p> -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.blackboxfunction"> -<em class="property">abstract </em><code class="sig-name descname">blackboxfunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.blackboxfunction" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.bram_estimation"> -<code class="sig-name descname">bram_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.bram_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_ipgen"> -<code class="sig-name descname">code_generation_ipgen</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">fpgapart</em>, <em class="sig-param">clk</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_ipgen" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_npysim"> -<code class="sig-name descname">code_generation_npysim</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.code_generation_npysim" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.compile_singlenode_code"> -<code class="sig-name descname">compile_singlenode_code</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.compile_singlenode_code" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.dataoutstrm"> -<em class="property">abstract </em><code class="sig-name descname">dataoutstrm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.dataoutstrm" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.defines"> -<em class="property">abstract </em><code class="sig-name descname">defines</code><span class="sig-paren">(</span><em class="sig-param">var</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.defines" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.docompute"> -<em class="property">abstract </em><code class="sig-name descname">docompute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.docompute" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.dynamic_input_to_npy"> -<code class="sig-name descname">dynamic_input_to_npy</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">count</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.dynamic_input_to_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.exec_precompiled_singlenode_model"> -<code class="sig-name descname">exec_precompiled_singlenode_model</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.exec_precompiled_singlenode_model" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.generate_params"> -<code class="sig-name descname">generate_params</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.generate_params" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_input_shape"> -<code class="sig-name descname">get_folded_input_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_input_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_output_shape"> -<code class="sig-name descname">get_folded_output_shape</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_folded_output_shape" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.get_instream_width"> -<code class="sig-name descname">get_instream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_instream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.get_number_output_values"> -<em class="property">abstract </em><code class="sig-name descname">get_number_output_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_number_output_values" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.get_outstream_width"> -<code class="sig-name descname">get_outstream_width</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.get_outstream_width" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.global_includes"> -<em class="property">abstract </em><code class="sig-name descname">global_includes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.global_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.ipgen_singlenode_code"> -<code class="sig-name descname">ipgen_singlenode_code</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.ipgen_singlenode_code" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.lut_estimation"> -<code class="sig-name descname">lut_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.lut_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.node_res_estimation"> -<code class="sig-name descname">node_res_estimation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.node_res_estimation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.npy_to_dynamic_output"> -<code class="sig-name descname">npy_to_dynamic_output</code><span class="sig-paren">(</span><em class="sig-param">context</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.npy_to_dynamic_output" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.pragmas"> -<em class="property">abstract </em><code class="sig-name descname">pragmas</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.pragmas" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.read_npy_data"> -<em class="property">abstract </em><code class="sig-name descname">read_npy_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.read_npy_data" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.reset_rtlsim"> -<code class="sig-name descname">reset_rtlsim</code><span class="sig-paren">(</span><em class="sig-param">sim</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.reset_rtlsim" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.rtlsim"> -<code class="sig-name descname">rtlsim</code><span class="sig-paren">(</span><em class="sig-param">sim</em>, <em class="sig-param">inp</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.rtlsim" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.save_as_npy"> -<em class="property">abstract </em><code class="sig-name descname">save_as_npy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.save_as_npy" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.strm_decl"> -<em class="property">abstract </em><code class="sig-name descname">strm_decl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.strm_decl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.fpgadataflow.HLSCustomOp.toggle_clk"> -<code class="sig-name descname">toggle_clk</code><span class="sig-paren">(</span><em class="sig-param">sim</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.fpgadataflow.HLSCustomOp.toggle_clk" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.finn.custom_op.fpgadataflow.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/src.finn.custom_op.html b/docs/finn/_build/html/src.finn.custom_op.html deleted file mode 100644 index e25274619..000000000 --- a/docs/finn/_build/html/src.finn.custom_op.html +++ /dev/null @@ -1,359 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src.finn.custom_op package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-finn-custom-op-package"> -<h1>src.finn.custom_op package<a class="headerlink" href="#src-finn-custom-op-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2> -<div class="toctree-wrapper compound"> -<ul> -<li class="toctree-l1"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html">src.finn.custom_op.fpgadataflow package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator">src.finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch">src.finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.templates">src.finn.custom_op.fpgadataflow.templates module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.tlastmarker">src.finn.custom_op.fpgadataflow.tlastmarker module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -<div class="section" id="submodules"> -<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="module-src.finn.custom_op.multithreshold"> -<span id="src-finn-custom-op-multithreshold-module"></span><h2>src.finn.custom_op.multithreshold module<a class="headerlink" href="#module-src.finn.custom_op.multithreshold" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.custom_op.multithreshold.MultiThreshold"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.multithreshold.</code><code class="sig-name descname">MultiThreshold</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.multithreshold.MultiThreshold" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></p> -<dl class="method"> -<dt id="src.finn.custom_op.multithreshold.MultiThreshold.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.multithreshold.MultiThreshold.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.multithreshold.MultiThreshold.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.multithreshold.MultiThreshold.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.multithreshold.MultiThreshold.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.multithreshold.MultiThreshold.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.multithreshold.MultiThreshold.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -<dl class="function"> -<dt id="src.finn.custom_op.multithreshold.compare"> -<code class="sig-prename descclassname">src.finn.custom_op.multithreshold.</code><code class="sig-name descname">compare</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">y</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.multithreshold.compare" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="function"> -<dt id="src.finn.custom_op.multithreshold.multithreshold"> -<code class="sig-prename descclassname">src.finn.custom_op.multithreshold.</code><code class="sig-name descname">multithreshold</code><span class="sig-paren">(</span><em class="sig-param">v</em>, <em class="sig-param">thresholds</em>, <em class="sig-param">out_scale=None</em>, <em class="sig-param">out_bias=None</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.multithreshold.multithreshold" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</div> -<div class="section" id="module-src.finn.custom_op.registry"> -<span id="src-finn-custom-op-registry-module"></span><h2>src.finn.custom_op.registry module<a class="headerlink" href="#module-src.finn.custom_op.registry" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="src.finn.custom_op.registry.getCustomOp"> -<code class="sig-prename descclassname">src.finn.custom_op.registry.</code><code class="sig-name descname">getCustomOp</code><span class="sig-paren">(</span><em class="sig-param">node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.registry.getCustomOp" title="Permalink to this definition">¶</a></dt> -<dd><p>Return a FINN CustomOp instance for the given ONNX node, if it exists.</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.custom_op.streamingdataflowpartition"> -<span id="src-finn-custom-op-streamingdataflowpartition-module"></span><h2>src.finn.custom_op.streamingdataflowpartition module<a class="headerlink" href="#module-src.finn.custom_op.streamingdataflowpartition" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.streamingdataflowpartition.</code><code class="sig-name descname">StreamingDataflowPartition</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></p> -<dl class="method"> -<dt id="src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.streamingdataflowpartition.StreamingDataflowPartition.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.custom_op.xnorpopcount"> -<span id="src-finn-custom-op-xnorpopcount-module"></span><h2>src.finn.custom_op.xnorpopcount module<a class="headerlink" href="#module-src.finn.custom_op.xnorpopcount" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.custom_op.xnorpopcount.XnorPopcountMatMul"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.xnorpopcount.</code><code class="sig-name descname">XnorPopcountMatMul</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.custom_op.CustomOp</span></code></p> -<dl class="method"> -<dt id="src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node"> -<code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types"> -<code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype"> -<code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op"> -<code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node"> -<code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.xnorpopcount.XnorPopcountMatMul.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -<dl class="function"> -<dt id="src.finn.custom_op.xnorpopcount.xnorpopcountmatmul"> -<code class="sig-prename descclassname">src.finn.custom_op.xnorpopcount.</code><code class="sig-name descname">xnorpopcountmatmul</code><span class="sig-paren">(</span><em class="sig-param">inp0</em>, <em class="sig-param">inp1</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.xnorpopcount.xnorpopcountmatmul" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</div> -<div class="section" id="module-src.finn.custom_op"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.custom_op" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.custom_op.CustomOp"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.custom_op.</code><code class="sig-name descname">CustomOp</code><span class="sig-paren">(</span><em class="sig-param">onnx_node</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">abc.ABC</span></code></p> -<dl class="method"> -<dt id="src.finn.custom_op.CustomOp.execute_node"> -<em class="property">abstract </em><code class="sig-name descname">execute_node</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">graph</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.execute_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Execute this CustomOp instance, given the execution context and -ONNX graph.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.CustomOp.get_nodeattr"> -<code class="sig-name descname">get_nodeattr</code><span class="sig-paren">(</span><em class="sig-param">name</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.get_nodeattr" title="Permalink to this definition">¶</a></dt> -<dd><p>Get a node attribute by name. Data is stored inside the ONNX node’s -AttributeProto container. Attribute must be part of get_nodeattr_types. -Default value is returned if attribute is not set.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.CustomOp.get_nodeattr_types"> -<em class="property">abstract </em><code class="sig-name descname">get_nodeattr_types</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.get_nodeattr_types" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a dict of permitted attributes for node, where: -returned_dict[attribute_name] = (dtype, require, default_value) -- dtype indicates which member of the ONNX AttributeProto -will be utilized -- require indicates whether this attribute is required -- default_val indicates the default value that will be used if the -attribute is not set</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.CustomOp.infer_node_datatype"> -<em class="property">abstract </em><code class="sig-name descname">infer_node_datatype</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.infer_node_datatype" title="Permalink to this definition">¶</a></dt> -<dd><p>Set the DataType annotations corresponding to the outputs of this -node.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.CustomOp.make_shape_compatible_op"> -<em class="property">abstract </em><code class="sig-name descname">make_shape_compatible_op</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.make_shape_compatible_op" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a standard ONNX op which is compatible with this CustomOp -for performing shape inference.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.CustomOp.set_nodeattr"> -<code class="sig-name descname">set_nodeattr</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.set_nodeattr" title="Permalink to this definition">¶</a></dt> -<dd><p>Set a node attribute by name. Data is stored inside the ONNX node’s -AttributeProto container. Attribute must be part of get_nodeattr_types.</p> -</dd></dl> - -<dl class="method"> -<dt id="src.finn.custom_op.CustomOp.verify_node"> -<em class="property">abstract </em><code class="sig-name descname">verify_node</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.custom_op.CustomOp.verify_node" title="Permalink to this definition">¶</a></dt> -<dd><p>Verifies that all attributes the node needs are there and -that particular attributes are set correctly. Also checks if -the number of inputs is equal to the expected number</p> -</dd></dl> - -</dd></dl> - -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.finn.custom_op.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/src.finn.html b/docs/finn/_build/html/src.finn.html deleted file mode 100644 index b9f583576..000000000 --- a/docs/finn/_build/html/src.finn.html +++ /dev/null @@ -1,218 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src.finn package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-finn-package"> -<h1>src.finn package<a class="headerlink" href="#src-finn-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2> -<div class="toctree-wrapper compound"> -<ul> -<li class="toctree-l1"><a class="reference internal" href="src.finn.analysis.html">src.finn.analysis package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#subpackages">Subpackages</a><ul> -<li class="toctree-l3"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html">src.finn.analysis.fpgadataflow package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation">src.finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.res_estimation">src.finn.analysis.fpgadataflow.res_estimation module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow">Module contents</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis.topology">src.finn.analysis.topology module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis.verify_custom_nodes">src.finn.analysis.verify_custom_nodes module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis">Module contents</a><ul> -<li class="toctree-l3"><a class="reference internal" href="src.finn.analysis.html#how-to-write-an-analysis-pass-for-finn">How to write an analysis pass for FINN</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l1"><a class="reference internal" href="src.finn.core.html">src.finn.core package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.datatype">src.finn.core.datatype module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.execute_custom_node">src.finn.core.execute_custom_node module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.modelwrapper">src.finn.core.modelwrapper module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.onnx_exec">src.finn.core.onnx_exec module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.core.html#module-src.finn.core">Module contents</a></li> -</ul> -</li> -<li class="toctree-l1"><a class="reference internal" href="src.finn.custom_op.html">src.finn.custom_op package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#subpackages">Subpackages</a><ul> -<li class="toctree-l3"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html">src.finn.custom_op.fpgadataflow package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator">src.finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch">src.finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.templates">src.finn.custom_op.fpgadataflow.templates module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.tlastmarker">src.finn.custom_op.fpgadataflow.tlastmarker module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow">Module contents</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.multithreshold">src.finn.custom_op.multithreshold module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.registry">src.finn.custom_op.registry module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.streamingdataflowpartition">src.finn.custom_op.streamingdataflowpartition module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.xnorpopcount">src.finn.custom_op.xnorpopcount module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op">Module contents</a></li> -</ul> -</li> -<li class="toctree-l1"><a class="reference internal" href="src.finn.transformation.html">src.finn.transformation package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#subpackages">Subpackages</a><ul> -<li class="toctree-l3"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html">src.finn.transformation.fpgadataflow package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.cleanup">src.finn.transformation.fpgadataflow.cleanup module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipgen">src.finn.transformation.fpgadataflow.codegen_ipgen module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipstitch">src.finn.transformation.fpgadataflow.codegen_ipstitch module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_npysim">src.finn.transformation.fpgadataflow.codegen_npysim module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.compile">src.finn.transformation.fpgadataflow.compile module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.convert_to_hls_layers">src.finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.create_dataflow_partition">src.finn.transformation.fpgadataflow.create_dataflow_partition module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.hlssynth_ipgen">src.finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.insert_tlastmarker">src.finn.transformation.fpgadataflow.insert_tlastmarker module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_deployment">src.finn.transformation.fpgadataflow.make_deployment module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_driver">src.finn.transformation.fpgadataflow.make_pynq_driver module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_proj">src.finn.transformation.fpgadataflow.make_pynq_proj module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.set_sim_mode">src.finn.transformation.fpgadataflow.set_sim_mode module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.synth_pynq_proj">src.finn.transformation.fpgadataflow.synth_pynq_proj module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.templates">src.finn.transformation.fpgadataflow.templates module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow">Module contents</a></li> -</ul> -</li> -<li class="toctree-l3"><a class="reference internal" href="src.finn.transformation.streamline.html">src.finn.transformation.streamline package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.absorb">src.finn.transformation.streamline.absorb module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.collapse_repeated">src.finn.transformation.streamline.collapse_repeated module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.reorder">src.finn.transformation.streamline.reorder module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.round_thresholds">src.finn.transformation.streamline.round_thresholds module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.sign_to_thres">src.finn.transformation.streamline.sign_to_thres module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline">Module contents</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.batchnorm_to_affine">src.finn.transformation.batchnorm_to_affine module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.bipolar_to_xnor">src.finn.transformation.bipolar_to_xnor module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.fold_constants">src.finn.transformation.fold_constants module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.general">src.finn.transformation.general module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.infer_datatypes">src.finn.transformation.infer_datatypes module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.infer_shapes">src.finn.transformation.infer_shapes module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation">Module contents</a><ul> -<li class="toctree-l3"><a class="reference internal" href="src.finn.transformation.html#guide-to-writing-finn-transformations">Guide to writing FINN transformations</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l1"><a class="reference internal" href="src.finn.util.html">src.finn.util package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.basic">src.finn.util.basic module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.data_packing">src.finn.util.data_packing module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.fpgadataflow">src.finn.util.fpgadataflow module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.onnx">src.finn.util.onnx module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.test">src.finn.util.test module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.util.html#module-src.finn.util">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -<div class="section" id="module-src.finn"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.finn.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/src.finn.transformation.fpgadataflow.html b/docs/finn/_build/html/src.finn.transformation.fpgadataflow.html deleted file mode 100644 index ddc7ad2bb..000000000 --- a/docs/finn/_build/html/src.finn.transformation.fpgadataflow.html +++ /dev/null @@ -1,351 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src.finn.transformation.fpgadataflow package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-finn-transformation-fpgadataflow-package"> -<h1>src.finn.transformation.fpgadataflow package<a class="headerlink" href="#src-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> -<div class="section" id="module-src.finn.transformation.fpgadataflow.cleanup"> -<span id="src-finn-transformation-fpgadataflow-cleanup-module"></span><h2>src.finn.transformation.fpgadataflow.cleanup module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.cleanup" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.cleanup.CleanUp"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.cleanup.</code><code class="sig-name descname">CleanUp</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.cleanup.CleanUp" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Remove any generated files for fpgadataflow nodes.</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.cleanup.CleanUp.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.cleanup.CleanUp.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.codegen_ipgen"> -<span id="src-finn-transformation-fpgadataflow-codegen-ipgen-module"></span><h2>src.finn.transformation.fpgadataflow.codegen_ipgen module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.codegen_ipgen" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.codegen_ipgen.</code><code class="sig-name descname">CodeGen_ipgen</code><span class="sig-paren">(</span><em class="sig-param">fpgapart</em>, <em class="sig-param">clk</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Code generation for all nodes in model</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.codegen_ipgen.CodeGen_ipgen.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.codegen_ipstitch"> -<span id="src-finn-transformation-fpgadataflow-codegen-ipstitch-module"></span><h2>src.finn.transformation.fpgadataflow.codegen_ipstitch module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.codegen_ipstitch" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.codegen_ipstitch.</code><code class="sig-name descname">CodeGen_ipstitch</code><span class="sig-paren">(</span><em class="sig-param">fpgapart</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Create a Vivado IP Block Design project from all the generated IPs of a -graph. All nodes in the graph must have the fpgadataflow backend attribute, -and the CodeGen_ipgen transformation must have been previously run on -the graph. The resulting block design is also packaged as IP.</p> -<p>Outcome if successful: sets the vivado_stitch_proj attribute in the ONNX -ModelProto’s metadata_props field, with the created project dir as the -value. A make_project.tcl script is also placed under the same folder, -which is called to instantiate the per-layer IPs and stitch them together. -The packaged block design IP can be found under the ip subdirectory.</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.codegen_ipstitch.CodeGen_ipstitch.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.codegen_npysim"> -<span id="src-finn-transformation-fpgadataflow-codegen-npysim-module"></span><h2>src.finn.transformation.fpgadataflow.codegen_npysim module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.codegen_npysim" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.codegen_npysim.</code><code class="sig-name descname">CodeGen_npysim</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Code generation for all nodes in model</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.codegen_npysim.CodeGen_npysim.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.compile"> -<span id="src-finn-transformation-fpgadataflow-compile-module"></span><h2>src.finn.transformation.fpgadataflow.compile module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.compile" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.compile.Compile"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.compile.</code><code class="sig-name descname">Compile</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.compile.Compile" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Compile for all nodes in model</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.compile.Compile.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.compile.Compile.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.convert_to_hls_layers"> -<span id="src-finn-transformation-fpgadataflow-convert-to-hls-layers-module"></span><h2>src.finn.transformation.fpgadataflow.convert_to_hls_layers module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.convert_to_hls_layers" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.convert_to_hls_layers.</code><code class="sig-name descname">InferBinaryStreamingFCLayer</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Convert pairs of binary XnorPopcountMatMul layers to -StreamingFCLayer_Batch layers. Any immediately following MultiThreshold -layers will also be absorbed into the MVTU.</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.convert_to_hls_layers.InferBinaryStreamingFCLayer.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.create_dataflow_partition"> -<span id="src-finn-transformation-fpgadataflow-create-dataflow-partition-module"></span><h2>src.finn.transformation.fpgadataflow.create_dataflow_partition module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.create_dataflow_partition" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.create_dataflow_partition.</code><code class="sig-name descname">CreateDataflowPartition</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Split a graph into two graphs; one which contains non-FINN-dataflow nodes -and a StreamingDataflowPartition node, and another which only contains -FINN dataflow nodes. The StreamingDataflowPartition has a model attribute -that indicates the filename for the second graph that only contains -dataflow nodes. No action is taken if there are no dataflow nodes.</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.create_dataflow_partition.CreateDataflowPartition.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.hlssynth_ipgen"> -<span id="src-finn-transformation-fpgadataflow-hlssynth-ipgen-module"></span><h2>src.finn.transformation.fpgadataflow.hlssynth_ipgen module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.hlssynth_ipgen" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.hlssynth_ipgen.</code><code class="sig-name descname">HLSSynth_IPGen</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Compile for all nodes in model</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.hlssynth_ipgen.HLSSynth_IPGen.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.insert_tlastmarker"> -<span id="src-finn-transformation-fpgadataflow-insert-tlastmarker-module"></span><h2>src.finn.transformation.fpgadataflow.insert_tlastmarker module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.insert_tlastmarker" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.insert_tlastmarker.</code><code class="sig-name descname">InsertTLastMarker</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Ensure that the graph is terminated with a TLastMarker node, inserting -one if necessary.</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.insert_tlastmarker.InsertTLastMarker.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.make_deployment"> -<span id="src-finn-transformation-fpgadataflow-make-deployment-module"></span><h2>src.finn.transformation.fpgadataflow.make_deployment module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.make_deployment" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.make_deployment.</code><code class="sig-name descname">DeployToPYNQ</code><span class="sig-paren">(</span><em class="sig-param">ip</em>, <em class="sig-param">username</em>, <em class="sig-param">password</em>, <em class="sig-param">target_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Collects all necessary files for deployment and copies them to the PYNQ board. -Expects information about PYNQ board to make scp possible: -* ip address of board -* username and password for board -* target directory where the files are stored on the board</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.make_deployment.DeployToPYNQ.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.make_pynq_driver"> -<span id="src-finn-transformation-fpgadataflow-make-pynq-driver-module"></span><h2>src.finn.transformation.fpgadataflow.make_pynq_driver module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.make_pynq_driver" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.make_pynq_driver.</code><code class="sig-name descname">MakePYNQDriver</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Create PYNQ Python code to correctly interface the generated -accelerator, including data packing/unpacking. The MakePYNQProject -transformation must have been already applied.</p> -<p>Outcome if successful: sets the pynq_driver_dir attribute in the ONNX -ModelProto’s metadata_props field, with the created driver dir as the -value.</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.make_pynq_driver.MakePYNQDriver.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.make_pynq_proj"> -<span id="src-finn-transformation-fpgadataflow-make-pynq-proj-module"></span><h2>src.finn.transformation.fpgadataflow.make_pynq_proj module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.make_pynq_proj" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.make_pynq_proj.</code><code class="sig-name descname">MakePYNQProject</code><span class="sig-paren">(</span><em class="sig-param">platform</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Create a Vivado PYNQ overlay project (including the shell infrastructure) -from the already-stitched IP block for this graph. -All nodes in the graph must have the fpgadataflow backend attribute, -and the CodeGen_ipstitch transformation must have been previously run on -the graph.</p> -<p>Outcome if successful: sets the vivado_pynq_proj attribute in the ONNX -ModelProto’s metadata_props field, with the created project dir as the -value.</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.make_pynq_proj.MakePYNQProject.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.set_sim_mode"> -<span id="src-finn-transformation-fpgadataflow-set-sim-mode-module"></span><h2>src.finn.transformation.fpgadataflow.set_sim_mode module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.set_sim_mode" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.set_sim_mode.</code><code class="sig-name descname">SetSimMode</code><span class="sig-paren">(</span><em class="sig-param">mode</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Set attribute sim_mode in all fpgadataflow nodes</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.set_sim_mode.SetSimMode.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.synth_pynq_proj"> -<span id="src-finn-transformation-fpgadataflow-synth-pynq-proj-module"></span><h2>src.finn.transformation.fpgadataflow.synth_pynq_proj module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.synth_pynq_proj" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fpgadataflow.synth_pynq_proj.</code><code class="sig-name descname">SynthPYNQProject</code><a class="headerlink" href="#src.finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Run synthesis for the PYNQ project for this graph. The MakePYNQProject -transformation must be applied prior to this transformation.</p> -<dl class="method"> -<dt id="src.finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fpgadataflow.synth_pynq_proj.SynthPYNQProject.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow.templates"> -<span id="src-finn-transformation-fpgadataflow-templates-module"></span><h2>src.finn.transformation.fpgadataflow.templates module<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow.templates" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="module-src.finn.transformation.fpgadataflow"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.transformation.fpgadataflow" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.finn.transformation.fpgadataflow.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/src.finn.transformation.html b/docs/finn/_build/html/src.finn.transformation.html deleted file mode 100644 index c59cf5670..000000000 --- a/docs/finn/_build/html/src.finn.transformation.html +++ /dev/null @@ -1,304 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src.finn.transformation package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-finn-transformation-package"> -<h1>src.finn.transformation package<a class="headerlink" href="#src-finn-transformation-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2> -<div class="toctree-wrapper compound"> -<ul> -<li class="toctree-l1"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html">src.finn.transformation.fpgadataflow package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.cleanup">src.finn.transformation.fpgadataflow.cleanup module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipgen">src.finn.transformation.fpgadataflow.codegen_ipgen module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipstitch">src.finn.transformation.fpgadataflow.codegen_ipstitch module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_npysim">src.finn.transformation.fpgadataflow.codegen_npysim module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.compile">src.finn.transformation.fpgadataflow.compile module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.convert_to_hls_layers">src.finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.create_dataflow_partition">src.finn.transformation.fpgadataflow.create_dataflow_partition module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.hlssynth_ipgen">src.finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.insert_tlastmarker">src.finn.transformation.fpgadataflow.insert_tlastmarker module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_deployment">src.finn.transformation.fpgadataflow.make_deployment module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_driver">src.finn.transformation.fpgadataflow.make_pynq_driver module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_proj">src.finn.transformation.fpgadataflow.make_pynq_proj module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.set_sim_mode">src.finn.transformation.fpgadataflow.set_sim_mode module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.synth_pynq_proj">src.finn.transformation.fpgadataflow.synth_pynq_proj module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.templates">src.finn.transformation.fpgadataflow.templates module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow">Module contents</a></li> -</ul> -</li> -<li class="toctree-l1"><a class="reference internal" href="src.finn.transformation.streamline.html">src.finn.transformation.streamline package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#submodules">Submodules</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.absorb">src.finn.transformation.streamline.absorb module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.collapse_repeated">src.finn.transformation.streamline.collapse_repeated module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.reorder">src.finn.transformation.streamline.reorder module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.round_thresholds">src.finn.transformation.streamline.round_thresholds module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.sign_to_thres">src.finn.transformation.streamline.sign_to_thres module</a></li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -<div class="section" id="submodules"> -<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2> -</div> -<div class="section" id="module-src.finn.transformation.batchnorm_to_affine"> -<span id="src-finn-transformation-batchnorm-to-affine-module"></span><h2>src.finn.transformation.batchnorm_to_affine module<a class="headerlink" href="#module-src.finn.transformation.batchnorm_to_affine" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.batchnorm_to_affine.BatchNormToAffine"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.batchnorm_to_affine.</code><code class="sig-name descname">BatchNormToAffine</code><a class="headerlink" href="#src.finn.transformation.batchnorm_to_affine.BatchNormToAffine" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Replaces any test-time BatchNorm layers with Mul-Add layers.</p> -<dl class="method"> -<dt id="src.finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.batchnorm_to_affine.BatchNormToAffine.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.bipolar_to_xnor"> -<span id="src-finn-transformation-bipolar-to-xnor-module"></span><h2>src.finn.transformation.bipolar_to_xnor module<a class="headerlink" href="#module-src.finn.transformation.bipolar_to_xnor" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.bipolar_to_xnor.</code><code class="sig-name descname">ConvertBipolarMatMulToXnorPopcount</code><a class="headerlink" href="#src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Convert MatMul nodes with all-bipolar inputs to XnorPopcountMatMul -and associated result correction.</p> -<dl class="method"> -<dt id="src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.bipolar_to_xnor.ConvertBipolarMatMulToXnorPopcount.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.fold_constants"> -<span id="src-finn-transformation-fold-constants-module"></span><h2>src.finn.transformation.fold_constants module<a class="headerlink" href="#module-src.finn.transformation.fold_constants" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.fold_constants.FoldConstants"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.fold_constants.</code><code class="sig-name descname">FoldConstants</code><a class="headerlink" href="#src.finn.transformation.fold_constants.FoldConstants" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Replace the output of a node with const-only inputs with a precomputed -result.</p> -<dl class="method"> -<dt id="src.finn.transformation.fold_constants.FoldConstants.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.fold_constants.FoldConstants.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.general"> -<span id="src-finn-transformation-general-module"></span><h2>src.finn.transformation.general module<a class="headerlink" href="#module-src.finn.transformation.general" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.general.ConvertSubToAdd"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.general.</code><code class="sig-name descname">ConvertSubToAdd</code><a class="headerlink" href="#src.finn.transformation.general.ConvertSubToAdd" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Convert sub nodes to add nodes of appropriate sign.</p> -<dl class="method"> -<dt id="src.finn.transformation.general.ConvertSubToAdd.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.general.ConvertSubToAdd.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="src.finn.transformation.general.GiveRandomTensorNames"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.general.</code><code class="sig-name descname">GiveRandomTensorNames</code><a class="headerlink" href="#src.finn.transformation.general.GiveRandomTensorNames" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Give random tensor names to all tensors.</p> -<dl class="method"> -<dt id="src.finn.transformation.general.GiveRandomTensorNames.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.general.GiveRandomTensorNames.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="src.finn.transformation.general.GiveReadableTensorNames"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.general.</code><code class="sig-name descname">GiveReadableTensorNames</code><a class="headerlink" href="#src.finn.transformation.general.GiveReadableTensorNames" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Give more human-readable names to all internal tensors. It’s recommended -to apply give_unique_node_names prior to this transform.</p> -<dl class="method"> -<dt id="src.finn.transformation.general.GiveReadableTensorNames.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.general.GiveReadableTensorNames.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="src.finn.transformation.general.GiveUniqueNodeNames"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.general.</code><code class="sig-name descname">GiveUniqueNodeNames</code><a class="headerlink" href="#src.finn.transformation.general.GiveUniqueNodeNames" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Give unique names to each node in the graph using enumeration.</p> -<dl class="method"> -<dt id="src.finn.transformation.general.GiveUniqueNodeNames.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.general.GiveUniqueNodeNames.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.infer_datatypes"> -<span id="src-finn-transformation-infer-datatypes-module"></span><h2>src.finn.transformation.infer_datatypes module<a class="headerlink" href="#module-src.finn.transformation.infer_datatypes" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.infer_datatypes.InferDataTypes"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.infer_datatypes.</code><code class="sig-name descname">InferDataTypes</code><a class="headerlink" href="#src.finn.transformation.infer_datatypes.InferDataTypes" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Infer FINN DataType info for all intermediate/output tensors based on -inputs and node type.</p> -<dl class="method"> -<dt id="src.finn.transformation.infer_datatypes.InferDataTypes.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.infer_datatypes.InferDataTypes.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.infer_shapes"> -<span id="src-finn-transformation-infer-shapes-module"></span><h2>src.finn.transformation.infer_shapes module<a class="headerlink" href="#module-src.finn.transformation.infer_shapes" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.infer_shapes.InferShapes"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.infer_shapes.</code><code class="sig-name descname">InferShapes</code><a class="headerlink" href="#src.finn.transformation.infer_shapes.InferShapes" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Ensure every tensor in the model has a specified shape (ValueInfo).</p> -<dl class="method"> -<dt id="src.finn.transformation.infer_shapes.InferShapes.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.infer_shapes.InferShapes.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.transformation" title="Permalink to this headline">¶</a></h2> -<div class="section" id="guide-to-writing-finn-transformations"> -<h3>Guide to writing FINN transformations<a class="headerlink" href="#guide-to-writing-finn-transformations" title="Permalink to this headline">¶</a></h3> -<ul class="simple"> -<li><p>Your transformation must inherit the Transformation abstract base class.</p></li> -<li><p>Your transformation’s apply function should take in a ModelWrapper, and return -a tuple with (transformed_model: ModelWrapper, model_was_changed: Bool)</p></li> -<li><p>The transformations are meant to be applied using the .transform function -in ModelWrapper. This makes a deep copy of the input model by default, so -you don’t have to.</p></li> -<li><p>model_was_changed indicates whether your transformation made any changes to -the model. If you know your transformation needs to be called only once and -repeated calls have no further effect, you can return False even if the model -was changed.</p></li> -<li><p>You MUST return model_was_changed=False at some point when your transformation -is called multiple times, otherwise apply_repeated() will loop infinitely.</p></li> -<li><p>If you cannot guarantee that the transformation will reach a fixed point, -you must declare this, return model_was_changed = False and let the user -manually re-apply the transform.</p></li> -</ul> -<dl class="class"> -<dt id="src.finn.transformation.Transformation"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.</code><code class="sig-name descname">Transformation</code><a class="headerlink" href="#src.finn.transformation.Transformation" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">abc.ABC</span></code></p> -<dl class="method"> -<dt id="src.finn.transformation.Transformation.apply"> -<em class="property">abstract </em><code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.Transformation.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.finn.transformation.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/src.finn.transformation.streamline.html b/docs/finn/_build/html/src.finn.transformation.streamline.html deleted file mode 100644 index c10e10cf9..000000000 --- a/docs/finn/_build/html/src.finn.transformation.streamline.html +++ /dev/null @@ -1,277 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src.finn.transformation.streamline package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-finn-transformation-streamline-package"> -<h1>src.finn.transformation.streamline package<a class="headerlink" href="#src-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> -<div class="section" id="module-src.finn.transformation.streamline.absorb"> -<span id="src-finn-transformation-streamline-absorb-module"></span><h2>src.finn.transformation.streamline.absorb module<a class="headerlink" href="#module-src.finn.transformation.streamline.absorb" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.absorb.</code><code class="sig-name descname">Absorb1BitMulIntoMatMul</code><a class="headerlink" href="#src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Absorb bipolar or binary multiplications into the preciding matrix -multiply.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.absorb.Absorb1BitMulIntoMatMul.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbAddIntoMultiThreshold</code><a class="headerlink" href="#src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Absorb preceding Add ops into MultiThreshold by updating the threshold -values. Only scalar/1D add vectors can be absorbed.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.absorb.AbsorbAddIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.absorb.</code><code class="sig-name descname">AbsorbMulIntoMultiThreshold</code><a class="headerlink" href="#src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Absorb preceding Mul ops into MultiThreshold by updating the threshold -values. Only <em>positive</em> scalar/1D mul vectors can be absorbed.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.absorb.AbsorbMulIntoMultiThreshold.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.absorb.</code><code class="sig-name descname">FactorOutMulSignMagnitude</code><a class="headerlink" href="#src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Split multiply-by-constant nodes into two multiply-by-constant nodes, -where the first node is a bipolar vector (of signs) and the second is a -vector of magnitudes.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.absorb.FactorOutMulSignMagnitude.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.streamline.collapse_repeated"> -<span id="src-finn-transformation-streamline-collapse-repeated-module"></span><h2>src.finn.transformation.streamline.collapse_repeated module<a class="headerlink" href="#module-src.finn.transformation.streamline.collapse_repeated" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedAdd</code><a class="headerlink" href="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedAdd" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p> -</dd></dl> - -<dl class="class"> -<dt id="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedMul</code><a class="headerlink" href="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <a class="reference internal" href="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"><code class="xref py py-class docutils literal notranslate"><span class="pre">src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp</span></code></a></p> -</dd></dl> - -<dl class="class"> -<dt id="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.collapse_repeated.</code><code class="sig-name descname">CollapseRepeatedOp</code><span class="sig-paren">(</span><em class="sig-param">op_name</em>, <em class="sig-param">make_collapsed_param_fxn</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Collapse repeated consecutive operations with constant parameters into -a single operation. make_collapsed_param_fxn must take two tensors and -return a tensor which gives the equivalent result using a single op.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.collapse_repeated.CollapseRepeatedOp.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.streamline.reorder"> -<span id="src-finn-transformation-streamline-reorder-module"></span><h2>src.finn.transformation.streamline.reorder module<a class="headerlink" href="#module-src.finn.transformation.streamline.reorder" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.streamline.reorder.MoveAddPastMul"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveAddPastMul</code><a class="headerlink" href="#src.finn.transformation.streamline.reorder.MoveAddPastMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Move add operations past multiply operations. The aim is to have them -next to each other such that they can be collapsed into a single add.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.reorder.MoveAddPastMul.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.reorder.MoveAddPastMul.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarAddPastMatMul</code><a class="headerlink" href="#src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Move scalar add operations past matmul operations. We want to have adds -next to each other such that they can be collapsed into a single add.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.reorder.MoveScalarAddPastMatMul.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.reorder.</code><code class="sig-name descname">MoveScalarMulPastMatMul</code><a class="headerlink" href="#src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Move scalar mul operations past matmul operations. We want to have muls -next to each other such that they can be collapsed into a single mul.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.reorder.MoveScalarMulPastMatMul.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.streamline.round_thresholds"> -<span id="src-finn-transformation-streamline-round-thresholds-module"></span><h2>src.finn.transformation.streamline.round_thresholds module<a class="headerlink" href="#module-src.finn.transformation.streamline.round_thresholds" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.round_thresholds.</code><code class="sig-name descname">RoundAndClipThresholds</code><a class="headerlink" href="#src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>For MultiThreshold nodes operating on integer inputs, round up -thresholds values to the nearest integer. Additionally, if the input -is unsigned, sets negative thresholds to zero.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.round_thresholds.RoundAndClipThresholds.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.streamline.sign_to_thres"> -<span id="src-finn-transformation-streamline-sign-to-thres-module"></span><h2>src.finn.transformation.streamline.sign_to_thres module<a class="headerlink" href="#module-src.finn.transformation.streamline.sign_to_thres" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.streamline.sign_to_thres.ConvertSignToThres"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.sign_to_thres.</code><code class="sig-name descname">ConvertSignToThres</code><a class="headerlink" href="#src.finn.transformation.streamline.sign_to_thres.ConvertSignToThres" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Convert Sign node instances to MultiThreshold with threshold at 0.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.sign_to_thres.ConvertSignToThres.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -<div class="section" id="module-src.finn.transformation.streamline"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.transformation.streamline" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.transformation.streamline.Streamline"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.transformation.streamline.</code><code class="sig-name descname">Streamline</code><a class="headerlink" href="#src.finn.transformation.streamline.Streamline" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">finn.transformation.Transformation</span></code></p> -<p>Apply the streamlining transform, see arXiv:1709.04060.</p> -<dl class="method"> -<dt id="src.finn.transformation.streamline.Streamline.apply"> -<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.transformation.streamline.Streamline.apply" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.finn.transformation.streamline.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/src.finn.util.html b/docs/finn/_build/html/src.finn.util.html deleted file mode 100644 index 1bb5f9360..000000000 --- a/docs/finn/_build/html/src.finn.util.html +++ /dev/null @@ -1,368 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src.finn.util package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-finn-util-package"> -<h1>src.finn.util package<a class="headerlink" href="#src-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> -<div class="section" id="module-src.finn.util.basic"> -<span id="src-finn-util-basic-module"></span><h2>src.finn.util.basic module<a class="headerlink" href="#module-src.finn.util.basic" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.util.basic.CppBuilder"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">CppBuilder</code><a class="headerlink" href="#src.finn.util.basic.CppBuilder" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> -<dl class="method"> -<dt id="src.finn.util.basic.CppBuilder.append_includes"> -<code class="sig-name descname">append_includes</code><span class="sig-paren">(</span><em class="sig-param">library_path</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.CppBuilder.append_includes" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.util.basic.CppBuilder.append_sources"> -<code class="sig-name descname">append_sources</code><span class="sig-paren">(</span><em class="sig-param">cpp_file</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.CppBuilder.append_sources" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.util.basic.CppBuilder.build"> -<code class="sig-name descname">build</code><span class="sig-paren">(</span><em class="sig-param">code_gen_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.CppBuilder.build" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.util.basic.CppBuilder.set_executable_path"> -<code class="sig-name descname">set_executable_path</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.CppBuilder.set_executable_path" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.basic.calculate_signed_dot_prod_range"> -<code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">calculate_signed_dot_prod_range</code><span class="sig-paren">(</span><em class="sig-param">dt_a</em>, <em class="sig-param">dt_b</em>, <em class="sig-param">len</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.calculate_signed_dot_prod_range" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the (min,max) values a dot product between two signed vectors of -types dt_a and dt_b of len elements can take.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.basic.gen_finn_dt_tensor"> -<code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">gen_finn_dt_tensor</code><span class="sig-paren">(</span><em class="sig-param">finn_dt</em>, <em class="sig-param">tensor_shape</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.gen_finn_dt_tensor" title="Permalink to this definition">¶</a></dt> -<dd><p>Generates random tensor in given shape and with given FINN DataType</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.basic.get_by_name"> -<code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">get_by_name</code><span class="sig-paren">(</span><em class="sig-param">container</em>, <em class="sig-param">name</em>, <em class="sig-param">name_field='name'</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.get_by_name" title="Permalink to this definition">¶</a></dt> -<dd><p>Return item from container by .name field if it exists, None otherwise</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.basic.get_finn_root"> -<code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">get_finn_root</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.get_finn_root" title="Permalink to this definition">¶</a></dt> -<dd><p>Return the root directory that FINN is cloned into.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.basic.interleave_matrix_outer_dim_from_partitions"> -<code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">interleave_matrix_outer_dim_from_partitions</code><span class="sig-paren">(</span><em class="sig-param">matrix</em>, <em class="sig-param">n_partitions</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.interleave_matrix_outer_dim_from_partitions" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="function"> -<dt id="src.finn.util.basic.make_build_dir"> -<code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">make_build_dir</code><span class="sig-paren">(</span><em class="sig-param">prefix=''</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.make_build_dir" title="Permalink to this definition">¶</a></dt> -<dd><p>Creates a temporary folder with given prefix to be used as a build dir. -Use this function instead of tempfile.mkdtemp to ensure any generated files -will survive on the host after the FINN Docker container exits.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.basic.pad_tensor_to_multiple_of"> -<code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">pad_tensor_to_multiple_of</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">pad_to_dims</em>, <em class="sig-param">val=0</em>, <em class="sig-param">distr_pad=False</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.pad_tensor_to_multiple_of" title="Permalink to this definition">¶</a></dt> -<dd><p>Pad each dimension of given NumPy ndarray using val, so that each -dimension is a multiple of the respective value in pad_to_dims. -1 means -do not pad that particular dimension. If distr_pad is False, all padding -will be inserted after the existing values; otherwise it will be split -evenly between before and after the existing values, with one extra value -inserted after if the padding amount is not divisible by two.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.basic.random_string"> -<code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">random_string</code><span class="sig-paren">(</span><em class="sig-param">stringLength=6</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.random_string" title="Permalink to this definition">¶</a></dt> -<dd><p>Randomly generate a string of letters and digits.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.basic.remove_by_name"> -<code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">remove_by_name</code><span class="sig-paren">(</span><em class="sig-param">container</em>, <em class="sig-param">name</em>, <em class="sig-param">name_field='name'</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.remove_by_name" title="Permalink to this definition">¶</a></dt> -<dd><p>Remove item from container by .name field if it exists</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.basic.roundup_to_integer_multiple"> -<code class="sig-prename descclassname">src.finn.util.basic.</code><code class="sig-name descname">roundup_to_integer_multiple</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">factor</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.basic.roundup_to_integer_multiple" title="Permalink to this definition">¶</a></dt> -<dd><p>Round up integer x to the nearest integer multiple of integer factor. -Returns x if factor is set to -1. Both x and factor must otherwise be -positive.</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.util.data_packing"> -<span id="src-finn-util-data-packing-module"></span><h2>src.finn.util.data_packing module<a class="headerlink" href="#module-src.finn.util.data_packing" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="src.finn.util.data_packing.array2hexstring"> -<code class="sig-prename descclassname">src.finn.util.data_packing.</code><code class="sig-name descname">array2hexstring</code><span class="sig-paren">(</span><em class="sig-param">array</em>, <em class="sig-param">dtype</em>, <em class="sig-param">pad_to_nbits</em>, <em class="sig-param">prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.data_packing.array2hexstring" title="Permalink to this definition">¶</a></dt> -<dd><p>Pack given one-dimensional NumPy array with FINN DataType dtype into a hex -string. -Any BIPOLAR values will be converted to a single bit with a 0 representing --1. -pad_to_nbits is used to prepend leading zeros to ensure packed strings of -fixed width. The minimum value for pad_to_nbits is 4, since a single hex -digit is four bits.</p> -<p>Examples: -array2hexstring([1, 1, 1, 0], DataType.BINARY, 4) = “e†-array2hexstring([1, 1, 1, 0], DataType.BINARY, 8) = “0eâ€</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.data_packing.finnpy_to_packed_bytearray"> -<code class="sig-prename descclassname">src.finn.util.data_packing.</code><code class="sig-name descname">finnpy_to_packed_bytearray</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.data_packing.finnpy_to_packed_bytearray" title="Permalink to this definition">¶</a></dt> -<dd><p>Given a numpy ndarray with FINN DataType dtype, pack the innermost -dimension and return the packed representation as an ndarray of uint8. -The packed innermost dimension will be padded to the nearest multiple -of 8 bits. The returned ndarray has the same number of dimensions as the -input.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.data_packing.hexstring2npbytearray"> -<code class="sig-prename descclassname">src.finn.util.data_packing.</code><code class="sig-name descname">hexstring2npbytearray</code><span class="sig-paren">(</span><em class="sig-param">hexstring</em>, <em class="sig-param">remove_prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.data_packing.hexstring2npbytearray" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert a hex string into a NumPy array of dtype uint8. Examples:</p> -<p>hexstring2npbytearray(“0f01â€) = array([15, 1], dtype=uint8)</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.data_packing.npbytearray2hexstring"> -<code class="sig-prename descclassname">src.finn.util.data_packing.</code><code class="sig-name descname">npbytearray2hexstring</code><span class="sig-paren">(</span><em class="sig-param">npbytearray</em>, <em class="sig-param">prefix='0x'</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.data_packing.npbytearray2hexstring" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert a NumPy array of uint8 dtype into a hex string. Examples:</p> -<p>npbytearray2hexstring(array([15, 1], dtype=uint8)) = “0x0f01â€</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.data_packing.npy_to_rtlsim_input"> -<code class="sig-prename descclassname">src.finn.util.data_packing.</code><code class="sig-name descname">npy_to_rtlsim_input</code><span class="sig-paren">(</span><em class="sig-param">input_file</em>, <em class="sig-param">input_dtype</em>, <em class="sig-param">pad_to_nbits</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.data_packing.npy_to_rtlsim_input" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert the multidimensional NumPy array of integers (stored as floats) -from input_file into a flattened sequence of Python arbitrary-precision -integers, packing the innermost dimension. See -finn.util.basic.pack_innermost_dim_as_hex_string() for more info on how the -packing works.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.data_packing.numpy_to_hls_code"> -<code class="sig-prename descclassname">src.finn.util.data_packing.</code><code class="sig-name descname">numpy_to_hls_code</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">hls_var_name</em>, <em class="sig-param">pack_innermost_dim=True</em>, <em class="sig-param">no_decl=False</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.data_packing.numpy_to_hls_code" title="Permalink to this definition">¶</a></dt> -<dd><p>Return C++ code representation of a numpy ndarray with FINN DataType -dtype, using hls_var_name as the resulting C++ variable name. If -pack_innermost_dim is specified, the innermost dimension of the ndarray -will be packed into a hex string using array2hexstring. If no_decl is -set to True, no variable name and type will be generated as part of the -emitted string.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.data_packing.pack_innermost_dim_as_hex_string"> -<code class="sig-prename descclassname">src.finn.util.data_packing.</code><code class="sig-name descname">pack_innermost_dim_as_hex_string</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">pad_to_nbits</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.data_packing.pack_innermost_dim_as_hex_string" title="Permalink to this definition">¶</a></dt> -<dd><p>Pack the innermost dimension of the given numpy ndarray into hex -strings using array2hexstring. Examples:</p> -<p>A = [[1, 1, 1, 0], [0, 1, 1, 0]] -eA = [“0eâ€, “06â€] -pack_innermost_dim_as_hex_string(A, DataType.BINARY, 8) == eA -B = [[[3, 3], [3, 3]], [[1, 3], [3, 1]]] -eB = [[ “0fâ€, “0fâ€], [“07â€, “0dâ€]] -pack_innermost_dim_as_hex_string(B, DataType.UINT2, 8) == eB</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.data_packing.packed_bytearray_to_finnpy"> -<code class="sig-prename descclassname">src.finn.util.data_packing.</code><code class="sig-name descname">packed_bytearray_to_finnpy</code><span class="sig-paren">(</span><em class="sig-param">packed_bytearray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">output_shape=None</em>, <em class="sig-param">reverse_inner=False</em>, <em class="sig-param">reverse_endian=False</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.data_packing.packed_bytearray_to_finnpy" title="Permalink to this definition">¶</a></dt> -<dd><p>Given a packed numpy uint8 ndarray, unpack it into a FINN array of -given DataType. output_shape can be specified to remove padding from the -packed dimension, or set to None to be inferred from the input.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.data_packing.rtlsim_output_to_npy"> -<code class="sig-prename descclassname">src.finn.util.data_packing.</code><code class="sig-name descname">rtlsim_output_to_npy</code><span class="sig-paren">(</span><em class="sig-param">output</em>, <em class="sig-param">path</em>, <em class="sig-param">dtype</em>, <em class="sig-param">shape</em>, <em class="sig-param">packedBits</em>, <em class="sig-param">targetBits</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.data_packing.rtlsim_output_to_npy" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert a flattened sequence of Python arbitrary-precision integers -output into a NumPy array, saved as npy file at path. Each arbitrary-precision -integer is assumed to be a packed array of targetBits-bit elements, which -will be unpacked as the innermost dimension of the NumPy array.</p> -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.data_packing.unpack_innermost_dim_from_hex_string"> -<code class="sig-prename descclassname">src.finn.util.data_packing.</code><code class="sig-name descname">unpack_innermost_dim_from_hex_string</code><span class="sig-paren">(</span><em class="sig-param">ndarray</em>, <em class="sig-param">dtype</em>, <em class="sig-param">out_shape</em>, <em class="sig-param">reverse_inner=False</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.data_packing.unpack_innermost_dim_from_hex_string" title="Permalink to this definition">¶</a></dt> -<dd><p>Convert a NumPy array of hex strings into a FINN NumPy array by unpacking -the hex strings into the specified data type. out_shape can be specified -such that any padding in the packing dimension is removed. If reverse_inner -is set, the innermost unpacked dimension will be reversed.</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.util.fpgadataflow"> -<span id="src-finn-util-fpgadataflow-module"></span><h2>src.finn.util.fpgadataflow module<a class="headerlink" href="#module-src.finn.util.fpgadataflow" title="Permalink to this headline">¶</a></h2> -<dl class="class"> -<dt id="src.finn.util.fpgadataflow.IPGenBuilder"> -<em class="property">class </em><code class="sig-prename descclassname">src.finn.util.fpgadataflow.</code><code class="sig-name descname">IPGenBuilder</code><a class="headerlink" href="#src.finn.util.fpgadataflow.IPGenBuilder" title="Permalink to this definition">¶</a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> -<dl class="method"> -<dt id="src.finn.util.fpgadataflow.IPGenBuilder.append_tcl"> -<code class="sig-name descname">append_tcl</code><span class="sig-paren">(</span><em class="sig-param">tcl_script</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.fpgadataflow.IPGenBuilder.append_tcl" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.util.fpgadataflow.IPGenBuilder.build"> -<code class="sig-name descname">build</code><span class="sig-paren">(</span><em class="sig-param">code_gen_dir</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.fpgadataflow.IPGenBuilder.build" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="method"> -<dt id="src.finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path"> -<code class="sig-name descname">set_ipgen_path</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.fpgadataflow.IPGenBuilder.set_ipgen_path" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</dd></dl> - -<dl class="function"> -<dt id="src.finn.util.fpgadataflow.pyverilate_stitched_ip"> -<code class="sig-prename descclassname">src.finn.util.fpgadataflow.</code><code class="sig-name descname">pyverilate_stitched_ip</code><span class="sig-paren">(</span><em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.fpgadataflow.pyverilate_stitched_ip" title="Permalink to this definition">¶</a></dt> -<dd><p>Given a model with stitched IP, return a PyVerilator sim object.</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.util.onnx"> -<span id="src-finn-util-onnx-module"></span><h2>src.finn.util.onnx module<a class="headerlink" href="#module-src.finn.util.onnx" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="src.finn.util.onnx.valueinfo_to_tensor"> -<code class="sig-prename descclassname">src.finn.util.onnx.</code><code class="sig-name descname">valueinfo_to_tensor</code><span class="sig-paren">(</span><em class="sig-param">vi</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.onnx.valueinfo_to_tensor" title="Permalink to this definition">¶</a></dt> -<dd><p>Creates an all-zeroes numpy tensor from a ValueInfoProto.</p> -</dd></dl> - -</div> -<div class="section" id="module-src.finn.util.test"> -<span id="src-finn-util-test-module"></span><h2>src.finn.util.test module<a class="headerlink" href="#module-src.finn.util.test" title="Permalink to this headline">¶</a></h2> -<dl class="function"> -<dt id="src.finn.util.test.get_test_model_def_fxn"> -<code class="sig-prename descclassname">src.finn.util.test.</code><code class="sig-name descname">get_test_model_def_fxn</code><span class="sig-paren">(</span><em class="sig-param">netname</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.test.get_test_model_def_fxn" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="function"> -<dt id="src.finn.util.test.get_test_model_trained"> -<code class="sig-prename descclassname">src.finn.util.test.</code><code class="sig-name descname">get_test_model_trained</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.test.get_test_model_trained" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="function"> -<dt id="src.finn.util.test.get_test_model_untrained"> -<code class="sig-prename descclassname">src.finn.util.test.</code><code class="sig-name descname">get_test_model_untrained</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.test.get_test_model_untrained" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="function"> -<dt id="src.finn.util.test.get_trained_checkpoint"> -<code class="sig-prename descclassname">src.finn.util.test.</code><code class="sig-name descname">get_trained_checkpoint</code><span class="sig-paren">(</span><em class="sig-param">netname</em>, <em class="sig-param">wbits</em>, <em class="sig-param">abits</em><span class="sig-paren">)</span><a class="headerlink" href="#src.finn.util.test.get_trained_checkpoint" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -</div> -<div class="section" id="module-src.finn.util"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src.finn.util" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.finn.util.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/_build/html/src.html b/docs/finn/_build/html/src.html deleted file mode 100644 index e27a39891..000000000 --- a/docs/finn/_build/html/src.html +++ /dev/null @@ -1,225 +0,0 @@ - -<!DOCTYPE html> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta charset="utf-8" /> - <title>src package — FINN documentation</title> - <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="_static/language_data.js"></script> - <link rel="index" title="Index" href="genindex.html" /> - <link rel="search" title="Search" href="search.html" /> - - <link rel="stylesheet" href="_static/custom.css" type="text/css" /> - - - <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> - - </head><body> - - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - - - <div class="body" role="main"> - - <div class="section" id="src-package"> -<h1>src package<a class="headerlink" href="#src-package" title="Permalink to this headline">¶</a></h1> -<div class="section" id="subpackages"> -<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2> -<div class="toctree-wrapper compound"> -<ul> -<li class="toctree-l1"><a class="reference internal" href="src.finn.html">src.finn package</a><ul> -<li class="toctree-l2"><a class="reference internal" href="src.finn.html#subpackages">Subpackages</a><ul> -<li class="toctree-l3"><a class="reference internal" href="src.finn.analysis.html">src.finn.analysis package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#subpackages">Subpackages</a><ul> -<li class="toctree-l5"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html">src.finn.analysis.fpgadataflow package</a><ul> -<li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.hls_synth_res_estimation">src.finn.analysis.fpgadataflow.hls_synth_res_estimation module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow.res_estimation">src.finn.analysis.fpgadataflow.res_estimation module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.analysis.fpgadataflow.html#module-src.finn.analysis.fpgadataflow">Module contents</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis.topology">src.finn.analysis.topology module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis.verify_custom_nodes">src.finn.analysis.verify_custom_nodes module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.analysis.html#module-src.finn.analysis">Module contents</a><ul> -<li class="toctree-l5"><a class="reference internal" href="src.finn.analysis.html#how-to-write-an-analysis-pass-for-finn">How to write an analysis pass for FINN</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l3"><a class="reference internal" href="src.finn.core.html">src.finn.core package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.datatype">src.finn.core.datatype module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.execute_custom_node">src.finn.core.execute_custom_node module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.modelwrapper">src.finn.core.modelwrapper module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-src.finn.core.onnx_exec">src.finn.core.onnx_exec module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.core.html#module-src.finn.core">Module contents</a></li> -</ul> -</li> -<li class="toctree-l3"><a class="reference internal" href="src.finn.custom_op.html">src.finn.custom_op package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#subpackages">Subpackages</a><ul> -<li class="toctree-l5"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html">src.finn.custom_op.fpgadataflow package</a><ul> -<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.convolutioninputgenerator">src.finn.custom_op.fpgadataflow.convolutioninputgenerator module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingfclayer_batch">src.finn.custom_op.fpgadataflow.streamingfclayer_batch module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.streamingmaxpool_batch">src.finn.custom_op.fpgadataflow.streamingmaxpool_batch module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.templates">src.finn.custom_op.fpgadataflow.templates module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow.tlastmarker">src.finn.custom_op.fpgadataflow.tlastmarker module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.custom_op.fpgadataflow.html#module-src.finn.custom_op.fpgadataflow">Module contents</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.multithreshold">src.finn.custom_op.multithreshold module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.registry">src.finn.custom_op.registry module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.streamingdataflowpartition">src.finn.custom_op.streamingdataflowpartition module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op.xnorpopcount">src.finn.custom_op.xnorpopcount module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.custom_op.html#module-src.finn.custom_op">Module contents</a></li> -</ul> -</li> -<li class="toctree-l3"><a class="reference internal" href="src.finn.transformation.html">src.finn.transformation package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#subpackages">Subpackages</a><ul> -<li class="toctree-l5"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html">src.finn.transformation.fpgadataflow package</a><ul> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#submodules">Submodules</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.cleanup">src.finn.transformation.fpgadataflow.cleanup module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipgen">src.finn.transformation.fpgadataflow.codegen_ipgen module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_ipstitch">src.finn.transformation.fpgadataflow.codegen_ipstitch module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.codegen_npysim">src.finn.transformation.fpgadataflow.codegen_npysim module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.compile">src.finn.transformation.fpgadataflow.compile module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.convert_to_hls_layers">src.finn.transformation.fpgadataflow.convert_to_hls_layers module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.create_dataflow_partition">src.finn.transformation.fpgadataflow.create_dataflow_partition module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.hlssynth_ipgen">src.finn.transformation.fpgadataflow.hlssynth_ipgen module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.insert_tlastmarker">src.finn.transformation.fpgadataflow.insert_tlastmarker module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_deployment">src.finn.transformation.fpgadataflow.make_deployment module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_driver">src.finn.transformation.fpgadataflow.make_pynq_driver module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.make_pynq_proj">src.finn.transformation.fpgadataflow.make_pynq_proj module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.set_sim_mode">src.finn.transformation.fpgadataflow.set_sim_mode module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.synth_pynq_proj">src.finn.transformation.fpgadataflow.synth_pynq_proj module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow.templates">src.finn.transformation.fpgadataflow.templates module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.fpgadataflow.html#module-src.finn.transformation.fpgadataflow">Module contents</a></li> -</ul> -</li> -<li class="toctree-l5"><a class="reference internal" href="src.finn.transformation.streamline.html">src.finn.transformation.streamline package</a><ul> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#submodules">Submodules</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.absorb">src.finn.transformation.streamline.absorb module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.collapse_repeated">src.finn.transformation.streamline.collapse_repeated module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.reorder">src.finn.transformation.streamline.reorder module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.round_thresholds">src.finn.transformation.streamline.round_thresholds module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline.sign_to_thres">src.finn.transformation.streamline.sign_to_thres module</a></li> -<li class="toctree-l6"><a class="reference internal" href="src.finn.transformation.streamline.html#module-src.finn.transformation.streamline">Module contents</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.batchnorm_to_affine">src.finn.transformation.batchnorm_to_affine module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.bipolar_to_xnor">src.finn.transformation.bipolar_to_xnor module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.fold_constants">src.finn.transformation.fold_constants module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.general">src.finn.transformation.general module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.infer_datatypes">src.finn.transformation.infer_datatypes module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation.infer_shapes">src.finn.transformation.infer_shapes module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.transformation.html#module-src.finn.transformation">Module contents</a><ul> -<li class="toctree-l5"><a class="reference internal" href="src.finn.transformation.html#guide-to-writing-finn-transformations">Guide to writing FINN transformations</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l3"><a class="reference internal" href="src.finn.util.html">src.finn.util package</a><ul> -<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#submodules">Submodules</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.basic">src.finn.util.basic module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.data_packing">src.finn.util.data_packing module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.fpgadataflow">src.finn.util.fpgadataflow module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.onnx">src.finn.util.onnx module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util.test">src.finn.util.test module</a></li> -<li class="toctree-l4"><a class="reference internal" href="src.finn.util.html#module-src.finn.util">Module contents</a></li> -</ul> -</li> -</ul> -</li> -<li class="toctree-l2"><a class="reference internal" href="src.finn.html#module-src.finn">Module contents</a></li> -</ul> -</li> -</ul> -</div> -</div> -<div class="section" id="module-src"> -<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src" title="Permalink to this headline">¶</a></h2> -</div> -</div> - - - </div> - - </div> - </div> - <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> - <div class="sphinxsidebarwrapper"> -<h1 class="logo"><a href="index.html">FINN</a></h1> - - - - - - - - -<h3>Navigation</h3> - -<div class="relations"> -<h3>Related Topics</h3> -<ul> - <li><a href="index.html">Documentation overview</a><ul> - </ul></li> -</ul> -</div> -<div id="searchbox" style="display: none" role="search"> - <h3 id="searchlabel">Quick search</h3> - <div class="searchformwrapper"> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" aria-labelledby="searchlabel" /> - <input type="submit" value="Go" /> - </form> - </div> -</div> -<script type="text/javascript">$('#searchbox').show(0);</script> - - - - - - - - - </div> - </div> - <div class="clearer"></div> - </div> - <div class="footer"> - ©2020, Y. Umuroglu, J. Petri-Koenig. - - | - Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.2</a> - & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> - - | - <a href="_sources/src.rst.txt" - rel="nofollow">Page source</a> - </div> - - - - - </body> -</html> \ No newline at end of file diff --git a/docs/finn/modules.rst b/docs/finn/modules.rst index e9ff8ac1a..8355e03ee 100644 --- a/docs/finn/modules.rst +++ b/docs/finn/modules.rst @@ -1,7 +1,7 @@ -src +finn === .. toctree:: :maxdepth: 4 - src + finn -- GitLab