From bc1842f8fcfdba70f1279a2fa6a9cfc53fd84c00 Mon Sep 17 00:00:00 2001 From: Yaman Umuroglu <yamanu@xilinx.com> Date: Wed, 27 Oct 2021 23:18:14 +0200 Subject: [PATCH] [SWG] tentative new formula for 1D SWG URAM calc --- .../convolutioninputgenerator1d.py | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/finn/custom_op/fpgadataflow/convolutioninputgenerator1d.py b/src/finn/custom_op/fpgadataflow/convolutioninputgenerator1d.py index c4cf80412..333f1bddc 100644 --- a/src/finn/custom_op/fpgadataflow/convolutioninputgenerator1d.py +++ b/src/finn/custom_op/fpgadataflow/convolutioninputgenerator1d.py @@ -288,20 +288,24 @@ class ConvolutionInputGenerator1D(HLSCustomOp): def uram_estimation(self): # NOTE: not tested for correctness - simd = self.get_nodeattr("SIMD") - ifm_ch = self.get_nodeattr("IFMChannels") - ifm_dim = np.prod(self.get_nodeattr("IFMDim")) - k = np.prod(self.get_nodeattr("ConvKernelDim")) - stride = np.prod(self.get_nodeattr("Stride")) + ( + ifm_ch, + ifm_dim, + ofm_dim, + k, + stride, + dilation, + ) = self.get_1d_conv_attrs_normalized() + ifm_dim_y, ifm_dim_x = ifm_dim + k_y, k_x = k + stride_y, stride_x = stride ram_style = self.get_nodeattr("ram_style") + simd = self.get_nodeattr("SIMD") if ram_style == "ultra": - return int( - (k + stride) - * ( - math.ceil(simd * self.get_input_datatype().bitwidth() / 64) - * math.ceil(ifm_dim * ifm_ch / simd / 4096) - ) - ) + block_mul = 2 + width_mul = math.ceil(simd * self.get_input_datatype().bitwidth() / 64) + depth_mul = math.ceil(stride_x * ifm_dim_x * (ifm_ch // simd) / 4096) + return block_mul * width_mul * depth_mul else: return 0 -- GitLab