def add_concat_nd(self, name, input_names, output_name, axis, interleave=False):
        """
        Add a concat_nd layer to the model that performs concatenation along the
        given axis.
        Refer to the ``ConcatNDLayerParams`` message in the specification (NeuralNetwork.proto) for more details.

        Parameters
        ----------
        name: str
            The name of this layer.
        input_names: list of str
            The input blob names of this layer.
        output_name: str
            The output blob name of this layer.
        axis: int
            Axis to perform the concat operation on.
        interleave : bool
            (Only available in Core ML Specification >= 5 (iOS >= 14, macOS >= 11.0)
            If true, concatenate by interleaving the inputs
        """

        spec_layer = self._add_generic_layer(name, input_names, [output_name])
        spec_layer_params = spec_layer.concatND
        spec_layer_params.axis = axis
        if interleave:
            spec_layer_params.interleave = True
            if self.spec:
                self.spec.specificationVersion = max(self.spec.specificationVersion, _SPECIFICATION_VERSION_IOS_14)
        return spec_layer

        Add a concat_nd layer to the model that performs concatenation along the
        given axis.
        Refer to the ``ConcatNDLayerParams`` message in the specification (NeuralNetwork.proto) for more details.

        Parameters
        ----------
        name: str
            The name of this layer.
        input_names: list of str
            The input blob names of this layer.
        output_name: str
            The output blob name of this layer.
        axis: int
            Axis to perform the concat operation on.
        interleave : bool
            (Only available in Core ML Specification >= 5 (iOS >= 14, macOS >= 11.0)
            If true, concatenate by interleaving the inputs
        
coremltools/models/neural_network/builder.py