From 0ff8041a3332ba9aebba6b9cd67c5e900a7b04f5 Mon Sep 17 00:00:00 2001 From: Yaman Umuroglu <maltanar@gmail.com> Date: Tue, 21 Apr 2020 21:37:10 +0100 Subject: [PATCH] [HLSCustomOp] allow customizing numIters in TLastMarker --- src/finn/custom_op/fpgadataflow/tlastmarker.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/finn/custom_op/fpgadataflow/tlastmarker.py b/src/finn/custom_op/fpgadataflow/tlastmarker.py index a04b2a886..432bcb3d9 100644 --- a/src/finn/custom_op/fpgadataflow/tlastmarker.py +++ b/src/finn/custom_op/fpgadataflow/tlastmarker.py @@ -83,7 +83,7 @@ class TLastMarker(HLSCustomOp): self.code_gen_dict["$DEFINES$"] = [ "#define StreamWidth %d" % stream_width, "#define OutDType %s" % out_stream_dtype, - "#define NumIters %d" % self.get_nodeattr("NumIters"), + "#define NumItersPerImg %d" % self.get_nodeattr("NumIters"), ] def read_npy_data(self): @@ -91,12 +91,13 @@ class TLastMarker(HLSCustomOp): def docompute(self): self.code_gen_dict["$DOCOMPUTE$"] = [ - "for(int i=0; i<NumIters; i++) {", + "unsigned int n = (numIters == 0 ? NumItersPerImg : numIters);" + "for(unsigned int i=0; i<n; i++) {", "#pragma HLS PIPELINE II=1", "OutDType t;", "t.set_data(in0.read());", "t.set_keep(-1);", - "t.set_last(i==(NumIters-1));", + "t.set_last(i==(n-1));", "out.write(t);", "}", ] @@ -110,13 +111,16 @@ class TLastMarker(HLSCustomOp): def blackboxfunction(self): self.code_gen_dict["$BLACKBOXFUNCTION$"] = [ """void %s(hls::stream<ap_uint<StreamWidth> > &in0, - hls::stream<OutDType> &out)""" + hls::stream<OutDType> &out, unsigned int numIters)""" % self.onnx_node.name ] def pragmas(self): self.code_gen_dict["$PRAGMAS$"] = ["#pragma HLS INTERFACE axis port=in0"] self.code_gen_dict["$PRAGMAS$"].append("#pragma HLS INTERFACE axis port=out") + self.code_gen_dict["$PRAGMAS$"].append( + "#pragma HLS INTERFACE s_axilite port=numIters bundle=control" + ) self.code_gen_dict["$PRAGMAS$"].append( "#pragma HLS INTERFACE ap_ctrl_none port=return" ) -- GitLab