code: def transform(self, model, node):
      if (
          model.config.backend.name not in ["Vivado"]
          or model.config.get_config_value("IOType") != "io_stream"
      ):
          return False
  
      inp = [
          node.get_input_variable(inp_name) for inp_name in node.inputs
      ]
  
      if np.prod(inp[0].shape) > np.prod(inp[1].shape):
          idx = 1
          attrs = {"target_shape": inp[0].shape}
      else:
          idx = 0
          attrs = {"target_shape": inp[1].shape}
  
      def supported_broadcast(inp_shape, target_shape):
          # Must be (H, W, C)
          if not len(inp_shape) == 3:
              return False
          # Supported: (1, 1, C) -> (H, W, C)
          if (
              inp_shape[0] == inp_shape[1] == 1
              and inp_shape[2] == target_shape[2]
          ):
              return True
          # Supported: (H, W, 1) -> (H, W, C)
          if (
              inp_shape[2] == 1
              and inp_shape[0] == target_shape[0]
              and inp_shape[1] == target_shape[1]
          ):
              return True
          return False
  
      brdcst_inp = node.inputs[idx]
      inp_shape = node.get_input_variable(brdcst_inp).shape
      target_shape = attrs["target_shape"]
      if not supported_broadcast(inp_shape, target_shape):
          raise RuntimeError(
              f"Unsupported broadcast type for stream: {inp_shape} -> {target_shape};"
              + "Only (1, 1, C) -> (H, W, C) and (H, W, 1) -> (H, W, C) currently supported"
          )
      brdcst_out = "broadcast_" + brdcst_inp
      brdcst_layer = model.make_node(
          "Broadcast", brdcst_out, attrs, [brdcst_inp].copy()
      )
      model.insert_node(brdcst_layer, before=node, input_idx=idx)
      node.inputs[idx] = brdcst_out
  
      return True
  
imports: import numpy
  from hls4ml.backends.template import FunctionCallTemplate, LayerConfigTemplate
  from hls4ml.model.layers import Concatenate, Layer, Merge, register_layer
  from hls4ml.model.optimizer import OptimizerPass
label_desc: Use image node_id 2 for calling the BroadcastStream obj's underlying member method code with example usage: obj.transform(model, node) and returns: True, False, False, False, True, True