diff --git a/notebooks/6-FINN-CodeGenerationAndCompilation.ipynb b/notebooks/6-FINN-CodeGenerationAndCompilation.ipynb index df28989756bde4e1984bb18f94528ef935854f3c..66d6d0fe9516c2fa721dce08b1e9e4f7eba86a50 100644 --- a/notebooks/6-FINN-CodeGenerationAndCompilation.ipynb +++ b/notebooks/6-FINN-CodeGenerationAndCompilation.ipynb @@ -53,7 +53,7 @@ "outputs": [], "source": [ "from onnx import TensorProto, helper\n", - "import finn.core.utils as util\n", + "import finn.util.basic as util\n", "from finn.core.datatype import DataType\n", "from finn.core.modelwrapper import ModelWrapper" ] diff --git a/src/finn/analysis/fpgadataflow/hls_synth_res_estimation.py b/src/finn/analysis/fpgadataflow/hls_synth_res_estimation.py index d7485b924e7ddb7f59fbc9e316df4d74e50218bc..ff20adce6c513c212059373823ebf3aaf76b8cea 100644 --- a/src/finn/analysis/fpgadataflow/hls_synth_res_estimation.py +++ b/src/finn/analysis/fpgadataflow/hls_synth_res_estimation.py @@ -1,8 +1,8 @@ import os import xml.etree.ElementTree as ET -import finn.core.utils as util import finn.custom_op.registry as registry +import finn.util.basic as util def hls_synth_res_estimation(model): diff --git a/src/finn/analysis/fpgadataflow/res_estimation.py b/src/finn/analysis/fpgadataflow/res_estimation.py index 1693e413dcf0f2bee2587984c4f1db9de8a9cb68..eb2d81037774fe7f888c2b3f547da9288b2201e9 100644 --- a/src/finn/analysis/fpgadataflow/res_estimation.py +++ b/src/finn/analysis/fpgadataflow/res_estimation.py @@ -1,5 +1,5 @@ -import finn.core.utils as util import finn.custom_op.registry as registry +import finn.util.basic as util def res_estimation(model): diff --git a/src/finn/core/modelwrapper.py b/src/finn/core/modelwrapper.py index 483fc0bcf1f1029c50a18ace37bc8d855d55285b..3b541b06ee4dd7a6e51b5d4ad131838bc9b2542c 100644 --- a/src/finn/core/modelwrapper.py +++ b/src/finn/core/modelwrapper.py @@ -5,7 +5,7 @@ import onnx.helper as oh import onnx.numpy_helper as np_helper from onnx import TensorProto -import finn.core.utils as util +import finn.util.basic as util from finn.core.datatype import DataType diff --git a/src/finn/custom_op/__init__.py b/src/finn/custom_op/__init__.py index 797916cf20ce9c61cc349df41383b687ed0c101b..4e95763f3a7aa52f23b3c0ed8b0b7840c76c9ebf 100644 --- a/src/finn/custom_op/__init__.py +++ b/src/finn/custom_op/__init__.py @@ -1,5 +1,5 @@ from abc import ABC, abstractmethod -from finn.core.utils import get_by_name +from finn.util.basic import get_by_name import onnx.helper as helper diff --git a/src/finn/custom_op/fpgadataflow/__init__.py b/src/finn/custom_op/fpgadataflow/__init__.py index 99a3e5be1848eae49931a8b77497f1db815c56ba..d95503dc2e5edc2087dc67d1796ad0a68de227bc 100644 --- a/src/finn/custom_op/fpgadataflow/__init__.py +++ b/src/finn/custom_op/fpgadataflow/__init__.py @@ -3,7 +3,7 @@ import numpy as np import os import subprocess from finn.custom_op import CustomOp -from finn.core.utils import CppBuilder, IPGenBuilder +from finn.util.basic import CppBuilder, IPGenBuilder from . import templates diff --git a/src/finn/custom_op/fpgadataflow/streamingfclayer_batch.py b/src/finn/custom_op/fpgadataflow/streamingfclayer_batch.py index acd577be3d5d58d1abcef8a1a2b64a029e9ced62..7585a6e8cc455aeffba7e3b34856b7d482998d37 100644 --- a/src/finn/custom_op/fpgadataflow/streamingfclayer_batch.py +++ b/src/finn/custom_op/fpgadataflow/streamingfclayer_batch.py @@ -4,14 +4,14 @@ import os import numpy as np from pyverilator import PyVerilator -from finn.backend.fpgadataflow.utils import ( +from finn.core.datatype import DataType +from finn.custom_op.fpgadataflow import HLSCustomOp +from finn.util.basic import interleave_matrix_outer_dim_from_partitions +from finn.util.fpgadataflow import ( npy_to_rtlsim_input, numpy_to_hls_code, rtlsim_output_to_npy, ) -from finn.core.datatype import DataType -from finn.core.utils import interleave_matrix_outer_dim_from_partitions -from finn.custom_op.fpgadataflow import HLSCustomOp class StreamingFCLayer_Batch(HLSCustomOp): diff --git a/src/finn/transformation/bipolar_to_xnor.py b/src/finn/transformation/bipolar_to_xnor.py index ad785699f607cab0608884828795cd0f5e7017d3..26892e29c9c4d882f215de45d97651eb094a2251 100644 --- a/src/finn/transformation/bipolar_to_xnor.py +++ b/src/finn/transformation/bipolar_to_xnor.py @@ -3,9 +3,9 @@ from onnx import TensorProto from onnx import helper as oh from finn.core.datatype import DataType -from finn.core.utils import get_by_name from finn.transformation import Transformation from finn.transformation.infer_shapes import InferShapes +from finn.util.basic import get_by_name class ConvertBipolarMatMulToXnorPopcount(Transformation): diff --git a/src/finn/transformation/fpgadataflow/cleanup.py b/src/finn/transformation/fpgadataflow/cleanup.py index 741b69d57b09846ce1f6989bdb15de77f8175ce1..5979193fb383ede09014c5a66576baab9aecafdc 100644 --- a/src/finn/transformation/fpgadataflow/cleanup.py +++ b/src/finn/transformation/fpgadataflow/cleanup.py @@ -1,8 +1,8 @@ import os import shutil -import finn.core.utils as util import finn.custom_op.registry as registry +import finn.util.basic as util from finn.transformation import Transformation diff --git a/src/finn/transformation/fpgadataflow/codegen_ipgen.py b/src/finn/transformation/fpgadataflow/codegen_ipgen.py index 13686f846c7ee9893dd0ad7d12add79402599efb..2774aaaebd3029de38a786e556e8b57c8c1ed9cf 100644 --- a/src/finn/transformation/fpgadataflow/codegen_ipgen.py +++ b/src/finn/transformation/fpgadataflow/codegen_ipgen.py @@ -1,8 +1,8 @@ import os import finn.custom_op.registry as registry -from finn.core.utils import get_by_name, make_build_dir from finn.transformation import Transformation +from finn.util.basic import get_by_name, make_build_dir def _codegen_single_node(node, model, fpgapart, clk): diff --git a/src/finn/transformation/fpgadataflow/codegen_ipstitch.py b/src/finn/transformation/fpgadataflow/codegen_ipstitch.py index e4c303f847940bb00bfe86bd917535ba477891a6..4cb148b17610719276410c4fa35a27bee6ac7493 100644 --- a/src/finn/transformation/fpgadataflow/codegen_ipstitch.py +++ b/src/finn/transformation/fpgadataflow/codegen_ipstitch.py @@ -1,8 +1,8 @@ import os import subprocess -from finn.core.utils import get_by_name, make_build_dir from finn.transformation import Transformation +from finn.util.basic import get_by_name, make_build_dir class CodeGen_ipstitch(Transformation): @@ -84,8 +84,7 @@ class CodeGen_ipstitch(Transformation): assert node.op_type == "TLastMarker" # make output external connect_cmds.append( - "make_bd_intf_pins_external [get_bd_intf_pins %s/out_r]" - % inst_name + "make_bd_intf_pins_external [get_bd_intf_pins %s/out_r]" % inst_name ) # create a temporary folder for the project diff --git a/src/finn/transformation/fpgadataflow/codegen_npysim.py b/src/finn/transformation/fpgadataflow/codegen_npysim.py index 51a7c5bb8257afbf8cadda11c97e87ef2c12e725..c0c90239072df525ab40b87274c75a0971f992ce 100644 --- a/src/finn/transformation/fpgadataflow/codegen_npysim.py +++ b/src/finn/transformation/fpgadataflow/codegen_npysim.py @@ -1,8 +1,8 @@ import os import finn.custom_op.registry as registry -from finn.core.utils import get_by_name, make_build_dir from finn.transformation import Transformation +from finn.util.basic import get_by_name, make_build_dir def _codegen_single_node(node, model): diff --git a/src/finn/transformation/fpgadataflow/compile.py b/src/finn/transformation/fpgadataflow/compile.py index c4f6a1a094f0963845440280add791f2a349ba9d..8592844c7d908966b6f19ef5317d2bdb6313bb07 100644 --- a/src/finn/transformation/fpgadataflow/compile.py +++ b/src/finn/transformation/fpgadataflow/compile.py @@ -1,5 +1,5 @@ -import finn.core.utils as util import finn.custom_op.registry as registry +import finn.util.basic as util from finn.transformation import Transformation diff --git a/src/finn/transformation/fpgadataflow/hlssynth_ipgen.py b/src/finn/transformation/fpgadataflow/hlssynth_ipgen.py index f704b513e78e78b4dc08302efa56f19acfa62423..dd87ae51c9f51f494fb5181edc7be99f1e1ae7e1 100644 --- a/src/finn/transformation/fpgadataflow/hlssynth_ipgen.py +++ b/src/finn/transformation/fpgadataflow/hlssynth_ipgen.py @@ -1,5 +1,5 @@ -import finn.core.utils as util import finn.custom_op.registry as registry +import finn.util.basic as util from finn.transformation import Transformation diff --git a/src/finn/transformation/fpgadataflow/make_pynq_proj.py b/src/finn/transformation/fpgadataflow/make_pynq_proj.py index 4150ca532f272d84448f4b6d0e30c0a9d93390a4..a2bf211061546d05161e44737622b24de31a176a 100644 --- a/src/finn/transformation/fpgadataflow/make_pynq_proj.py +++ b/src/finn/transformation/fpgadataflow/make_pynq_proj.py @@ -3,8 +3,8 @@ import subprocess import numpy as np -from finn.core.utils import get_by_name, make_build_dir, roundup_to_integer_multiple from finn.transformation import Transformation +from finn.util.basic import get_by_name, make_build_dir, roundup_to_integer_multiple from . import templates diff --git a/src/finn/transformation/fpgadataflow/set_sim_mode.py b/src/finn/transformation/fpgadataflow/set_sim_mode.py index 31692c89bb8285f0aba70b27a344e8d66c21533c..2e760e3bb8d4808b3db945a109ed8d9d8370d100 100644 --- a/src/finn/transformation/fpgadataflow/set_sim_mode.py +++ b/src/finn/transformation/fpgadataflow/set_sim_mode.py @@ -1,5 +1,5 @@ -import finn.core.utils as util import finn.custom_op.registry as registry +import finn.util.basic as util from finn.transformation import Transformation diff --git a/src/finn/transformation/general.py b/src/finn/transformation/general.py index b6845312b06c409fe244ad1126d6ce37c0d85ca2..5c138c5aad0cc4adf59a6aedad233321def9c4c4 100644 --- a/src/finn/transformation/general.py +++ b/src/finn/transformation/general.py @@ -1,4 +1,4 @@ -import finn.core.utils as util +import finn.util.basic as util from finn.transformation import Transformation diff --git a/src/finn/backend/fpgadataflow/__init__.py b/src/finn/util/__init__.py similarity index 100% rename from src/finn/backend/fpgadataflow/__init__.py rename to src/finn/util/__init__.py diff --git a/src/finn/core/utils.py b/src/finn/util/basic.py similarity index 100% rename from src/finn/core/utils.py rename to src/finn/util/basic.py diff --git a/src/finn/backend/fpgadataflow/utils.py b/src/finn/util/fpgadataflow.py similarity index 97% rename from src/finn/backend/fpgadataflow/utils.py rename to src/finn/util/fpgadataflow.py index 257c2b0988b6dd8ed724c37cef120b1c4f0da473..c2d848d48a245a1c594dd10f3bdcda8783995b24 100644 --- a/src/finn/backend/fpgadataflow/utils.py +++ b/src/finn/util/fpgadataflow.py @@ -3,7 +3,7 @@ import sys import numpy as np from finn.core.datatype import DataType -from finn.core.utils import ( +from finn.util.basic import ( pack_innermost_dim_as_hex_string, unpack_innermost_dim_from_hex_string, ) @@ -65,7 +65,7 @@ def npy_to_rtlsim_input(input_file, input_dtype, pad_to_nbits): """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.core.utils.pack_innermost_dim_as_hex_string() for more info on how the + finn.util.basic.pack_innermost_dim_as_hex_string() for more info on how the packing works.""" inp = np.load(input_file) diff --git a/tests/fpgadataflow/test_code_gen_trafo.py b/tests/fpgadataflow/test_code_gen_trafo.py index 308f2c3b278fd9ef56d413ce94775a35e8240101..db966c4952f7cf971ad7c85eb3c53ea5dc8fe41f 100644 --- a/tests/fpgadataflow/test_code_gen_trafo.py +++ b/tests/fpgadataflow/test_code_gen_trafo.py @@ -2,7 +2,7 @@ import os from onnx import TensorProto, helper -import finn.core.utils as util +import finn.util.basic as util from finn.core.datatype import DataType from finn.core.modelwrapper import ModelWrapper from finn.transformation.fpgadataflow.cleanup import CleanUp diff --git a/tests/fpgadataflow/test_compilation_trafo.py b/tests/fpgadataflow/test_compilation_trafo.py index d6e5d3f111d4c0595305fc54653b925bdefc2157..3579485f37fb84a4bed6b5ca575e27c689a6521d 100644 --- a/tests/fpgadataflow/test_compilation_trafo.py +++ b/tests/fpgadataflow/test_compilation_trafo.py @@ -2,7 +2,7 @@ import os from onnx import TensorProto, helper -import finn.core.utils as util +import finn.util.basic as util from finn.core.datatype import DataType from finn.core.modelwrapper import ModelWrapper from finn.transformation.fpgadataflow.cleanup import CleanUp diff --git a/tests/fpgadataflow/test_fpgadataflow_convinputgenerator.py b/tests/fpgadataflow/test_fpgadataflow_convinputgenerator.py index e558807d7936e084a3cd8d8739fc4335f6642c0e..7b08e4ae8629c74776380b95a9d0ba26558bf95b 100644 --- a/tests/fpgadataflow/test_fpgadataflow_convinputgenerator.py +++ b/tests/fpgadataflow/test_fpgadataflow_convinputgenerator.py @@ -6,7 +6,6 @@ from onnx import TensorProto, helper import finn.core.onnx_exec as oxe from finn.core.datatype import DataType from finn.core.modelwrapper import ModelWrapper -from finn.core.utils import gen_finn_dt_tensor from finn.transformation.fpgadataflow.cleanup import CleanUp from finn.transformation.fpgadataflow.codegen_ipgen import CodeGen_ipgen from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim @@ -14,6 +13,7 @@ from finn.transformation.fpgadataflow.compile import Compile from finn.transformation.fpgadataflow.hlssynth_ipgen import HLSSynth_IPGen from finn.transformation.fpgadataflow.set_sim_mode import SetSimMode from finn.transformation.general import GiveUniqueNodeNames +from finn.util.basic import gen_finn_dt_tensor def get_im2col_indices(x_shape, k, stride): diff --git a/tests/fpgadataflow/test_fpgadataflow_fclayer.py b/tests/fpgadataflow/test_fpgadataflow_fclayer.py index 0c40000762019c93c049eeadc684c5f6043f6fcb..9e174b3d39f35495e0c8f269ad8bd136f288b86c 100644 --- a/tests/fpgadataflow/test_fpgadataflow_fclayer.py +++ b/tests/fpgadataflow/test_fpgadataflow_fclayer.py @@ -8,7 +8,6 @@ import finn.custom_op.xnorpopcount as xp from finn.analysis.fpgadataflow.hls_synth_res_estimation import hls_synth_res_estimation from finn.core.datatype import DataType from finn.core.modelwrapper import ModelWrapper -from finn.core.utils import calculate_signed_dot_prod_range, gen_finn_dt_tensor from finn.custom_op.multithreshold import multithreshold from finn.transformation.fpgadataflow.cleanup import CleanUp from finn.transformation.fpgadataflow.codegen_ipgen import CodeGen_ipgen @@ -17,6 +16,7 @@ from finn.transformation.fpgadataflow.compile import Compile from finn.transformation.fpgadataflow.hlssynth_ipgen import HLSSynth_IPGen from finn.transformation.fpgadataflow.set_sim_mode import SetSimMode from finn.transformation.general import GiveUniqueNodeNames +from finn.util.basic import calculate_signed_dot_prod_range, gen_finn_dt_tensor def make_single_fclayer_modelwrapper(W, pe, simd, wdt, idt, odt, T=None, tdt=None): diff --git a/tests/fpgadataflow/test_fpgadataflow_ip_stitch.py b/tests/fpgadataflow/test_fpgadataflow_ip_stitch.py index c17925531ac80b99353df3eab38033e8ec6c897b..604ddf1a581388bd294664058eff015a9f19bd1e 100644 --- a/tests/fpgadataflow/test_fpgadataflow_ip_stitch.py +++ b/tests/fpgadataflow/test_fpgadataflow_ip_stitch.py @@ -7,13 +7,13 @@ from onnx import TensorProto, helper from finn.core.datatype import DataType from finn.core.modelwrapper import ModelWrapper -from finn.core.utils import calculate_signed_dot_prod_range, gen_finn_dt_tensor from finn.transformation.fpgadataflow.codegen_ipgen import CodeGen_ipgen from finn.transformation.fpgadataflow.codegen_ipstitch import CodeGen_ipstitch from finn.transformation.fpgadataflow.hlssynth_ipgen import HLSSynth_IPGen from finn.transformation.fpgadataflow.make_pynq_proj import MakePYNQProject from finn.transformation.fpgadataflow.synth_pynq_proj import SynthPYNQProject from finn.transformation.general import GiveUniqueNodeNames +from finn.util.basic import calculate_signed_dot_prod_range, gen_finn_dt_tensor # TODO control board/part for tests from a global place # settings for Ultra96 diff --git a/tests/fpgadataflow/test_npy2hls.py b/tests/fpgadataflow/test_npy2hls.py index 775b486c0ac3c9b9354f33b28127b00adc694af6..daa6356a66296dfb243447796284e44a2c91d4c6 100644 --- a/tests/fpgadataflow/test_npy2hls.py +++ b/tests/fpgadataflow/test_npy2hls.py @@ -3,13 +3,13 @@ import subprocess import numpy as np -import finn.core.utils as cutil -from finn.backend.fpgadataflow.utils import numpy_to_hls_code +import finn.util.basic as cutil from finn.core.datatype import DataType +from finn.util.fpgadataflow import numpy_to_hls_code def make_npy2apintstream_testcase(ndarray, dtype): - test_dir = make_build_dir(prefix="test_npy2apintstream_") + test_dir = cutil.make_build_dir(prefix="test_npy2apintstream_") shape = ndarray.shape elem_bits = dtype.bitwidth() packed_bits = shape[-1] * elem_bits diff --git a/tests/fpgadataflow/test_rtlsim2npy.py b/tests/fpgadataflow/test_rtlsim2npy.py index 9c8087906dd9e5700811568fb3459cc1c168ac32..56281d6bfd88958a39ddb215e70b7eb38a879d10 100644 --- a/tests/fpgadataflow/test_rtlsim2npy.py +++ b/tests/fpgadataflow/test_rtlsim2npy.py @@ -1,7 +1,7 @@ import numpy as np from finn.core.datatype import DataType -from finn.core.utils import unpack_innermost_dim_from_hex_string +from finn.util.basic import unpack_innermost_dim_from_hex_string def test_unpack_innermost_dim_from_hex_string(): diff --git a/tests/test_gen_FINN_dt_tensor.py b/tests/test_gen_finn_dt_tensor.py similarity index 97% rename from tests/test_gen_FINN_dt_tensor.py rename to tests/test_gen_finn_dt_tensor.py index 444b60ed42b5d13927f93ab95eeabb9727ce907f..a640690ab44abdd24206e4f8fc4260e46c9cb808 100644 --- a/tests/test_gen_FINN_dt_tensor.py +++ b/tests/test_gen_finn_dt_tensor.py @@ -1,6 +1,4 @@ -import numpy as np - -import finn.core.utils as util +import finn.util.basic as util from finn.core.datatype import DataType diff --git a/tests/test_padding.py b/tests/test_padding.py index 8075b1be8fc2ad442e29ef9ed56b22b178ce66ee..4475c44c3bc8d05be858d77fe02a82d480e8c372 100644 --- a/tests/test_padding.py +++ b/tests/test_padding.py @@ -1,6 +1,6 @@ import numpy as np -from finn.core.utils import pad_tensor_to_multiple_of +from finn.util.basic import pad_tensor_to_multiple_of def test_pad_tensor_to_multiple_of(): diff --git a/tests/test_set_attribute.py b/tests/test_set_attribute.py index 7e56fdbb938441115bf458532560af8ac803b4f9..50e379194d715a9be68dcf44feefa1c3a351cd72 100644 --- a/tests/test_set_attribute.py +++ b/tests/test_set_attribute.py @@ -2,7 +2,7 @@ from onnx import TensorProto, helper from finn.core.datatype import DataType from finn.core.modelwrapper import ModelWrapper -from finn.core.utils import get_by_name +from finn.util.basic import get_by_name def test_set_attribute(): diff --git a/tests/test_shape_utils.py b/tests/test_shape_utils.py index 09e14bb05a52579af56d65cd0f4ef75c49fd5d81..f24461a12ace586b540ae51aff0079e3b9694318 100644 --- a/tests/test_shape_utils.py +++ b/tests/test_shape_utils.py @@ -1,6 +1,6 @@ import numpy as np -import finn.core.utils as util +import finn.util.basic as util def test_interleave_matrix_outer_dim_from_partitions(): diff --git a/tests/transformation/test_infer_shapes.py b/tests/transformation/test_infer_shapes.py index 20841b32275968ed842fdbbebffa7168b61b7e06..253344ed46c17ea44a20e96149c19f225fc12ceb 100644 --- a/tests/transformation/test_infer_shapes.py +++ b/tests/transformation/test_infer_shapes.py @@ -3,7 +3,7 @@ from pkgutil import get_data import numpy as np from onnx import TensorProto, helper -import finn.core.utils as util +import finn.util.basic as util from finn.core.modelwrapper import ModelWrapper from finn.transformation.infer_shapes import InferShapes