def METHOD_NAME(self, comp_type, sched_type, outer, inner, dtype, scope):
    """Generate schedule."""
    sch = tir.Schedule(compute(comp_type, outer, inner, dtype))
    compute_block = sch.get_block("compute")
    i, _ = sch.get_loops(compute_block)
    if "read" in sched_type:
        cache_read_a = sch.cache_read(compute_block, 0, scope)
        sch.compute_at(cache_read_a, i)
        if "multi_input" in comp_type:
            cache_read_b = sch.cache_read(compute_block, 1, scope)
            sch.compute_at(cache_read_b, i)
    if "write" in sched_type:
        cache_write_out = sch.cache_write(compute_block, 0, scope)
        sch.reverse_compute_at(cache_write_out, i)
    if "read" in sched_type and "write" in sched_type:
        if comp_type == "single_input":
            sch.annotate(i, "software_pipeline_stage", [0, 1, 2])
            sch.annotate(i, "software_pipeline_order", [0, 1, 2])
            sch.annotate(i, "software_pipeline_async_stages", [0, 2])
        elif comp_type == "multi_input_sameQ":
            sch.annotate(i, "software_pipeline_stage", [0, 0, 1, 2])
            sch.annotate(i, "software_pipeline_order", [0, 1, 2, 3])
            sch.annotate(i, "software_pipeline_async_stages", [0, 2])
        elif comp_type == "multi_input_diffQ":
            sch.annotate(i, "software_pipeline_stage", [0, 1, 2, 3])
            sch.annotate(i, "software_pipeline_order", [0, 1, 2, 3])
            sch.annotate(i, "software_pipeline_async_stages", [0, 1, 2])
    elif "read" in sched_type:
        if comp_type == "single_input":
            sch.annotate(i, "software_pipeline_stage", [0, 1])
            sch.annotate(i, "software_pipeline_order", [0, 1])
            sch.annotate(i, "software_pipeline_async_stages", [0])
        elif comp_type == "multi_input_sameQ":
            sch.annotate(i, "software_pipeline_stage", [0, 0, 1])
            sch.annotate(i, "software_pipeline_order", [0, 1, 2])
            sch.annotate(i, "software_pipeline_async_stages", [0])
        elif comp_type == "multi_input_diffQ":
            sch.annotate(i, "software_pipeline_stage", [0, 1, 2])
            sch.annotate(i, "software_pipeline_order", [0, 1, 2])
            sch.annotate(i, "software_pipeline_async_stages", [0, 1])
    elif "write" in sched_type:
        sch.annotate(i, "software_pipeline_stage", [0, 1])
        sch.annotate(i, "software_pipeline_order", [0, 1])
        sch.annotate(i, "software_pipeline_async_stages", [1])
    return sch