def METHOD_NAME(gsyn_exc, gsyn_inh):
    """
    Converts two neo objects into the spynnaker7 format.
    .. note::
        It is acceptable for both neo parameters to be the same object
    :param ~neo.core.Block gsyn_exc: neo with gsyn_exc data
    :param ~neo.core.Block gsyn_inh: neo with gsyn_exc data
    :rtype: ~numpy.ndarray
    """
    exc = gsyn_exc.segments[0].filter(name='gsyn_exc')[0]
    inh = gsyn_inh.segments[0].filter(name='gsyn_inh')[0]
    ids = exc.annotations["channel_names"]
    ids2 = inh.annotations["channel_names"]
    if len(ids) != len(ids2):
        raise ValueError(
            f"Found {len(ids)} neuron IDs in gsyn_exc "
            f"but {len(ids2)} in gsyn_inh")
    if not np.allclose(ids, ids2):
        raise ValueError("IDs in gsyn_exc and gsyn_inh do not match")
    times = exc.times.rescale(quantities.ms)
    times2 = inh.times.rescale(quantities.ms)
    if len(times) != len(times2):
        raise ValueError(
            f"Found {len(times)} times in gsyn_exc "
            f"but {len(times2)} in gsyn_inh")
    if not np.allclose(times, times2):
        raise ValueError("times in gsyn_exc and gsyn_inh do not match")
    all_times = np.tile(times, len(ids))
    neurons = np.repeat(ids, len(times))
    idlist = list(range(len(ids)))
    exc_np = np.concatenate([exc[:, x] for x in idlist])
    inh_np = np.concatenate([inh[:, x] for x in idlist])
    return np.column_stack((neurons, all_times, exc_np, inh_np))