diff --git a/finn-rtllib/fmpadding/hdl/fmpadding.sv b/finn-rtllib/fmpadding/hdl/fmpadding.sv index 7e408f6241a5985c6b530d2722797c88500a9496..b3e7f2b65ad0a38ae69551e1ab53aaed0933c96f 100644 --- a/finn-rtllib/fmpadding/hdl/fmpadding.sv +++ b/finn-rtllib/fmpadding/hdl/fmpadding.sv @@ -38,6 +38,14 @@ module fmpadding #( int unsigned NUM_CHANNELS, int unsigned SIMD, int unsigned ELEM_BITS, + + int unsigned INIT_XON, + int unsigned INIT_XOFF, + int unsigned INIT_XEND, + int unsigned INIT_YON, + int unsigned INIT_YOFF, + int unsigned INIT_YEND, + localparam int unsigned STREAM_BITS = 8*(1 + (SIMD*ELEM_BITS-1)/8) )( //- Global Control ------------------ @@ -66,14 +74,15 @@ module fmpadding #( //----------------------------------------------------------------------- // Dynamically configurable state typedef logic [XCOUNTER_BITS-1:0] xcount_t; - xcount_t XEnd = 0; - xcount_t XOn = 0; - xcount_t XOff = 0; + xcount_t XEnd = INIT_XEND; + xcount_t XOn = INIT_XON; + xcount_t XOff = INIT_XOFF; typedef logic [YCOUNTER_BITS-1:0] ycount_t; - ycount_t YEnd = 0; - ycount_t YOn = 0; - ycount_t YOff = 0; + ycount_t YEnd = INIT_YEND; + ycount_t YOn = INIT_YON; + ycount_t YOff = INIT_YOFF; + always_ff @(posedge clk) begin if(we) begin unique case(wa) diff --git a/finn-rtllib/fmpadding/hdl/fmpadding_axi.sv b/finn-rtllib/fmpadding/hdl/fmpadding_axi.sv index f5313801e5226992b4180370757d03a47115eba1..71cdf0a45282a5b75c8d3178337fd496a0a1623e 100644 --- a/finn-rtllib/fmpadding/hdl/fmpadding_axi.sv +++ b/finn-rtllib/fmpadding/hdl/fmpadding_axi.sv @@ -38,6 +38,14 @@ module fmpadding_axi #( int unsigned NUM_CHANNELS, int unsigned SIMD, int unsigned ELEM_BITS, + + int unsigned INIT_XON, + int unsigned INIT_XOFF, + int unsigned INIT_XEND, + int unsigned INIT_YON, + int unsigned INIT_YOFF, + int unsigned INIT_YEND, + localparam int unsigned STREAM_BITS = 8*(1 + (SIMD*ELEM_BITS-1)/8) )( //- Global Control ------------------ @@ -101,6 +109,8 @@ module fmpadding_axi #( fmpadding #( .XCOUNTER_BITS(XCOUNTER_BITS), .YCOUNTER_BITS(YCOUNTER_BITS), .NUM_CHANNELS(NUM_CHANNELS), .SIMD(SIMD), + .INIT_XON(INIT_XON), .INIT_XOFF(INIT_XOFF), .INIT_XEND(INIT_XEND), + .INIT_YON(INIT_YON), .INIT_YOFF(INIT_YOFF), .INIT_YEND(INIT_YEND), .ELEM_BITS(ELEM_BITS) ) padding ( .ap_clk, .ap_rst_n, diff --git a/finn-rtllib/fmpadding/hdl/fmpadding_axi_tb.sv b/finn-rtllib/fmpadding/hdl/fmpadding_axi_tb.sv index fedf5dcb69cdcb564a237a9ec4748f7e8e779cd8..741689b3a7af7ad4d07f2af569f71135c1d35c7b 100644 --- a/finn-rtllib/fmpadding/hdl/fmpadding_axi_tb.sv +++ b/finn-rtllib/fmpadding/hdl/fmpadding_axi_tb.sv @@ -39,6 +39,8 @@ module fmpadding_axi_tb #( .YCOUNTER_BITS(YCOUNTER_BITS), .NUM_CHANNELS(NUM_CHANNELS), .SIMD(SIMD), + .INIT_XON(0), .INIT_XOFF(0), .INIT_XEND(0), + .INIT_YON(0), .INIT_YOFF(0), .INIT_YEND(0), .ELEM_BITS(ELEM_BITS) ) dut ( .ap_clk(clk), .ap_rst_n(!rst),