def create_bm_dictionary(name, federate_count, core_type, real_time, cpu_time, threads):
    """This function creates a dictionary for a single benchmark
    run.

    Args:
        name (str) - The name of the benchmark, e.g. BMecho_singleCore
        federate_count (int) - The number of federates.

        core_type (str) - The name of the core type.

        real_time (float) - The human-interpreted time it takes to
        execute this script.

        cpu_time (float) - The time it takes a CPU to execute this script.

        threads (int) - The number of threads.

    Returns:
        bm_dict (dict) - A dictionary of the benchmark results.
    """
    if name == "BMecho_singleCore":
        bm_dict = {
            "name": "{}/{}/iterations:1/real_time".format(name, federate_count),
            "run_name": "{}/{}/iterations:1/real_time".format(name, federate_count),
            "run_type": "iteration",
            "repetitions": 1,
            "repetitions_index": 1,
            "threads": threads,
            "iterations": 1,
            "real_time": real_time,
            "cpu_time": cpu_time,
            "time_unit": "s",
        }
    else:
        bm_dict = {
            "name": "{}/{}Core/{}/real_time".format(name, core_type, federate_count),
            "run_name": "{}/{}Core/{}/real_time".format(name, core_type, federate_count),
            "run_type": "iteration",
            "repetitions": 1,
            "repetitions_index": 1,
            "threads": threads,
            "iterations": 1,
            "real_time": real_time,
            "cpu_time": cpu_time,
            "time_unit": "s",
        }
    return bm_dict