code: def format(self, node):
      params = self._default_config_params(node)
      params["dilation"] = node.get_attr("dilation", 1)
      params["nzeros"] = node.get_weights("weight").nzeros
  
      params["config_t"] = f"config{node.index}_mult"
  
      if node.get_attr("in_height") == node.get_attr("min_height"):
          params["scale_index_height_type"] = "scale_index_unscaled"
      else:
          params["scale_index_height_type"] = "scale_index_regular"
  
      if node.get_attr("in_width") == node.get_attr("min_width"):
          params["scale_index_width_type"] = "scale_index_unscaled"
      else:
          params["scale_index_width_type"] = "scale_index_regular"
  
      if node.model.config.get_config_value("IOType") == "io_parallel":
          params["fill_fn"] = f"fill_buffer_{node.index}"
      else:
          params["fill_fn"] = "FillConv2DBuffer"
  
      conv_config = self.template.format(**params)
  
      mult_params = self._default_config_params(node)
      mult_params["n_in"] = (
          node.get_attr("n_chan")
          * node.get_attr("filt_height")
          * node.get_attr("filt_width")
      )
      mult_params["n_out"] = node.get_attr("n_filt")
      mult_params["nzeros"] = node.get_weights("weight").nzeros
      mult_params["product_type"] = get_backend("vivado").product_type(
          node.get_input_variable().type.precision,
          node.get_weights("weight").type.precision,
      )
      mult_config = self.mult_template.format(**mult_params)
  
      return mult_config + "\n" + conv_config
  
imports: from hls4ml.backends.backend import get_backend
  from hls4ml.backends.template import FunctionCallTemplate, LayerConfigTemplate
  from hls4ml.model.layers import Conv1D, Conv2D, Conv2DBatchnorm, DepthwiseConv1D, DepthwiseConv2D, SeparableConv1D, SeparableConv2D
label_desc: Use image node_id 2 for calling the Conv2DConfigTemplate obj's underlying member method code with example usage: obj.format(node) and returns: unknown