code: def format(self, node):
      # Separable master config
      params = {}
      params["index"] = node.index
      params["depthwise_config"] = f"config{node.index}_depthwise"
      params["pointwise_config"] = f"config{node.index}_pointwise"
      sep_config = self.template.format(**params)
  
      # Depthwise config
      params = self._default_config_params(node)
      # Override bias and bias_t since these are zeros in depthwise step of SepConv2D
      params["bias"] = params["zero_bias"]
      params["bias_t"] = params["zero_bias_t"]
      params["n_filt"] = params[
          "n_chan"
      ]  # In depthwise step n_chan == n_filt
      params["dilation"] = node.get_attr("dilation", 1)
      params["nzeros"] = node.get_weights("depthwise").nzeros
      params["index"] = str(node.index) + "_depthwise"
      params["weight_t"] = node.get_weights("depthwise").type
      params["fill_fn"] = "FillConv2DBuffer"
  
      if node.get_attr("unscaled_h"):
          params["scale_index_height_type"] = "scale_index_unscaled"
      else:
          params["scale_index_height_type"] = "scale_index_regular"
  
      if node.get_attr("unscaled_w"):
          params["scale_index_width_type"] = "scale_index_unscaled"
      else:
          params["scale_index_width_type"] = "scale_index_regular"
  
      params["config_t"] = f"config{node.index}_depthwise_mult"
      depthwise_config = self.depthwise_template.format(**params)
  
      # Depthwise mult config
      mult_params = self._default_config_params(node)
      mult_params["index"] = str(node.index) + "_depthwise"
      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_chan")
      mult_params["nzeros"] = node.get_weights("depthwise").nzeros
      mult_params["weight_t"] = node.get_weights("depthwise").type
      mult_params["product_type"] = get_backend("vivado").product_type(
          node.get_input_variable().type.precision,
          node.get_weights("depthwise").type.precision,
      )
      depthwise_mult_config = self.depthwise_mult_template.format(
          **mult_params
      )
  
      # Pointwise config
      params = self._default_config_params(node)
      if node.get_attr("data_format") == "channels_last":
          params["in_height"] = node.get_output_variable().shape[0]
          params["in_width"] = node.get_output_variable().shape[1]
      else:
          params["in_height"] = node.get_output_variable().shape[1]
          params["in_width"] = node.get_output_variable().shape[2]
  
      params["filt_height"] = params["filt_width"] = 1
      params["stride_height"] = params["stride_width"] = 1
      params["dilation"] = node.get_attr("dilation", 1)
      params["nzeros"] = node.get_weights("pointwise").nzeros
      params["index"] = str(node.index) + "_pointwise"
      params["weight_t"] = node.get_weights("pointwise").type
      params["min_height"] = params["in_height"]
      params["min_width"] = params["in_width"]
      params["instructions"] = "0"
      params["fill_fn"] = "FillConv2DBuffer"
  
      if node.get_attr("unscaled_h"):
          params["scale_index_height_type"] = "scale_index_unscaled"
      else:
          params["scale_index_height_type"] = "scale_index_regular"
  
      if node.get_attr("unscaled_w"):
          params["scale_index_width_type"] = "scale_index_unscaled"
      else:
          params["scale_index_width_type"] = "scale_index_regular"
      params["config_t"] = f"config{node.index}_pointwise_mult"
      pointwise_config = self.pointwise_template.format(**params)
  
      # Pointwise mult config
      mult_params = self._default_config_params(node)
      mult_params["index"] = str(node.index) + "_pointwise"
      mult_params["n_in"] = node.get_attr("n_chan")
      mult_params["n_out"] = node.get_attr("n_filt")
      mult_params["nzeros"] = node.get_weights("pointwise").nzeros
      mult_params["weight_t"] = node.get_weights("pointwise").type
      mult_params["product_type"] = get_backend("vivado").product_type(
          node.get_input_variable().type.precision,
          node.get_weights("pointwise").type.precision,
      )
      pointwise_mult_config = self.pointwise_mult_template.format(
          **mult_params
      )
  
      return (
          depthwise_mult_config
          + "\n"
          + depthwise_config
          + "\n"
          + pointwise_mult_config
          + "\n"
          + pointwise_config
          + "\n"
          + sep_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 SeparableConv2DConfigTemplate obj's underlying member method code with example usage: obj.format(node) and returns: unknown