From 0bb2f321de98ebce580340c56e501a084f8b6f13 Mon Sep 17 00:00:00 2001 From: Yaman Umuroglu <yamanu@xilinx.com> Date: Fri, 4 Mar 2022 12:31:01 +0100 Subject: [PATCH] [Lookup] add ip stitching ifnames + test --- src/finn/custom_op/fpgadataflow/lookup.py | 6 ++++++ tests/fpgadataflow/test_fpgadataflow_lookup.py | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/finn/custom_op/fpgadataflow/lookup.py b/src/finn/custom_op/fpgadataflow/lookup.py index d34209ce6..073105253 100644 --- a/src/finn/custom_op/fpgadataflow/lookup.py +++ b/src/finn/custom_op/fpgadataflow/lookup.py @@ -437,3 +437,9 @@ class Lookup(HLSCustomOp): return max(ext_mem_width, parent_max) else: return parent_max + + def get_verilog_top_module_intf_names(self): + intf_names = super().get_verilog_top_module_intf_names() + intf_names["axilite"] = ["s_axi_control"] + intf_names["aximm"] = [("m_axi_gmem", self.get_nodeattr("ext_mem_width"))] + return intf_names diff --git a/tests/fpgadataflow/test_fpgadataflow_lookup.py b/tests/fpgadataflow/test_fpgadataflow_lookup.py index b481e8065..77f0a7124 100644 --- a/tests/fpgadataflow/test_fpgadataflow_lookup.py +++ b/tests/fpgadataflow/test_fpgadataflow_lookup.py @@ -39,6 +39,7 @@ from finn.core.onnx_exec import execute_onnx from finn.custom_op.registry import getCustomOp from finn.transformation.fpgadataflow.compile_cppsim import CompileCppSim from finn.transformation.fpgadataflow.convert_to_hls_layers import InferLookupLayer +from finn.transformation.fpgadataflow.create_stitched_ip import CreateStitchedIP from finn.transformation.fpgadataflow.hlssynth_ip import HLSSynthIP from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim from finn.transformation.fpgadataflow.prepare_ip import PrepareIP @@ -136,6 +137,7 @@ def test_fpgadataflow_lookup(edt, embedding_cfg, exec_mode): @pytest.mark.vivado @pytest.mark.slow def test_fpgadataflow_lookup_external(): + fpga_part = "xczu3eg-sbva484-1-e" edt = DataType["INT8"] embedding_cfg = (200000, DataType["UINT32"], 300) ishape = (1, 600) @@ -168,5 +170,12 @@ def test_fpgadataflow_lookup_external(): assert model.graph.node[0].output[0] == oname getCustomOp(model.graph.node[0]).set_nodeattr("mem_mode", "external") model = model.transform(GiveUniqueNodeNames()) - model = model.transform(PrepareIP("xczu3eg-sbva484-1-e", 10)) + model = model.transform(PrepareIP(fpga_part, 10)) model = model.transform(HLSSynthIP()) + model = model.transform(CreateStitchedIP(fpga_part, 10.0)) + ifnames = eval(model.get_metadata_prop("vivado_stitch_ifnames")) + # check some generated files/interfaces for the generated stitched IP + assert ifnames["aximm"] == [["m_axi_gmem0", 32]] + assert ifnames["s_axis"] == [["s_axis_0", 32]] + assert ifnames["m_axis"] == [["m_axis_0", 32]] + assert ifnames["axilite"] == ["s_axi_control_0"] -- GitLab