module systolicFilter
#(	parameter	filteredDataWidth	=	35,
	parameter	inOutDataWidth	=	18,
	parameter	decimCntWidth	=	7,
	parameter	CoeffCount		=	25
)
(
	input Clk_i,
	input Rst_i,
	input [inOutDataWidth-1:0] CoefData_i,
	input [3-1:0] DecimFactor_i,
	input CoefDataVal_i,
	input [inOutDataWidth-1:0] Data_i,
	input DataNd_i,
	output [inOutDataWidth-1:0] Data_o,
	output DataValid_o
);

	wire [47:0] outData;
	wire outDataValid;
	
	wire	[17:0]	test2 = outData[35-:18];
	
	
	// systolicFilterBlockTest # (
		// .CoeffCount(CoeffCount)
	// )
	// systolicFilterBlockInst
	// (
		// .Clk_i(Clk_i),
		// .Rst_i(Rst_i),
		// .Data_i(Data_i),
		// .DecimFactor_i(DecimFactor_i),
		// .DataNd_i(DataNd_i),
		// .DataNd_i(1'b1),
		// .Data_o(outData),
		// .DataValid_o(outDataValid)
	// );
	
	systolicFilterBlock # (
		.CoeffCount(CoeffCount)
	)
	systolicFilterBlockInst
	(
		.Clk_i(Clk_i),
		.Rst_i(Rst_i),
		.Data_i(Data_i),
		.CoefData_i(CoefData_i),
		.CoefDataVal_i(CoefDataVal_i),
		.DataNd_i(DataNd_i),
		.Data_o(outData),
		.DataValid_o(outDataValid)
	);
	
	roundSymmetric #
	( 
		.inDataWidth(inOutDataWidth),
		.outDataWidth(inOutDataWidth)
	)
	roundInst
	(
		.Rst_i(Rst_i),
		.Clk_i(Clk_i),
		// .Data_i(outData[35:0]),
		.Data_i(outData[33-:18]),
		.DataNd_i(outDataValid),
		.Data_o(Data_o),
		.DataValid_o(DataValid_o)
	);


endmodule