From 84c0c83977df42d12cad262273fbcd160dbbb7e5 Mon Sep 17 00:00:00 2001 From: soheil Date: Sat, 30 Dec 2023 04:25:26 -0500 Subject: [PATCH 01/18] Added per-circuit traffic flow option to task file syntax --- vtr_flow/scripts/python_libs/vtr/task.py | 103 ++++++++++++----------- 1 file changed, 55 insertions(+), 48 deletions(-) diff --git a/vtr_flow/scripts/python_libs/vtr/task.py b/vtr_flow/scripts/python_libs/vtr/task.py index 0cfb6f3ebbe..1e547a6f456 100644 --- a/vtr_flow/scripts/python_libs/vtr/task.py +++ b/vtr_flow/scripts/python_libs/vtr/task.py @@ -46,7 +46,8 @@ def __init__( script_params_list_add=None, pass_requirements_file=None, sdc_dir=None, - noc_traffic_list_add=None, + noc_traffic_list_type="outer_product", + noc_traffic_list_add=[None], noc_traffics_dir=None, place_constr_dir=None, qor_parse_file=None, @@ -71,6 +72,7 @@ def __init__( self.script_params_list_add = script_params_list_add self.pass_requirements_file = pass_requirements_file self.sdc_dir = sdc_dir + self.noc_traffic_list_type = noc_traffic_list_type self.noc_traffics = noc_traffic_list_add self.noc_traffic_dir = noc_traffics_dir self.place_constr_dir = place_constr_dir @@ -203,6 +205,7 @@ def load_task_config(config_file) -> TaskConfig: "script_params_common", "pass_requirements_file", "sdc_dir", + "noc_traffic_list_type", "noc_traffics_dir", "place_constr_dir", "qor_parse_file", @@ -473,56 +476,41 @@ def create_jobs(args, configs, after_run=False) -> List[Job]: """ jobs = [] for config in configs: - for arch, circuit in itertools.product(config.archs, config.circuits): - noc_traffic = [] - if config.noc_traffics: - noc_traffics = config.noc_traffics - else: - noc_traffics = [None] - for noc_traffic in noc_traffics: - golden_results = load_parse_results( - str(PurePath(config.config_dir).joinpath("golden_results.txt")) + if config.noc_traffic_list_type == "outer_product": + combinations = list(itertools.product(config.circuits, config.noc_traffics)) + elif config.noc_traffic_list_type == "per_circuit": + assert len(config.circuits) == len(config.noc_traffics) + combinations = [(circuit, noc_traffic) for circuit, noc_traffic in zip(config.circuits, config.noc_traffics)] + else: + assert False, "Invalid noc_traffic_list_type" + + combinations = [(arch, circuit, noc_traffic) for arch in config.archs for circuit, noc_traffic in combinations] + + for arch, circuit, noc_traffic in combinations: + golden_results = load_parse_results( + str(PurePath(config.config_dir).joinpath("golden_results.txt")) + ) + abs_arch_filepath = resolve_vtr_source_file(config, arch, config.arch_dir) + abs_circuit_filepath = resolve_vtr_source_file(config, circuit, config.circuit_dir) + work_dir = get_work_dir_addr(arch, circuit, noc_traffic) + + run_dir = ( + str( + Path(get_latest_run_dir(find_task_dir(config, args.alt_tasks_dir))) + / work_dir ) - abs_arch_filepath = resolve_vtr_source_file(config, arch, config.arch_dir) - abs_circuit_filepath = resolve_vtr_source_file(config, circuit, config.circuit_dir) - work_dir = get_work_dir_addr(arch, circuit, noc_traffic) - - run_dir = ( - str( - Path(get_latest_run_dir(find_task_dir(config, args.alt_tasks_dir))) - / work_dir - ) - if after_run - else str( - Path(get_next_run_dir(find_task_dir(config, args.alt_tasks_dir))) / work_dir - ) + if after_run + else str( + Path(get_next_run_dir(find_task_dir(config, args.alt_tasks_dir))) / work_dir ) + ) - includes, parse_cmd, second_parse_cmd, qor_parse_command, cmd = create_cmd( - abs_circuit_filepath, abs_arch_filepath, config, args, circuit, noc_traffic - ) + includes, parse_cmd, second_parse_cmd, qor_parse_command, cmd = create_cmd( + abs_circuit_filepath, abs_arch_filepath, config, args, circuit, noc_traffic + ) - if config.script_params_list_add: - for value in config.script_params_list_add: - jobs.append( - create_job( - args, - config, - circuit, - includes, - arch, - noc_traffic, - value, - cmd, - parse_cmd, - second_parse_cmd, - qor_parse_command, - work_dir, - run_dir, - golden_results, - ) - ) - else: + if config.script_params_list_add: + for value in config.script_params_list_add: jobs.append( create_job( args, @@ -531,7 +519,7 @@ def create_jobs(args, configs, after_run=False) -> List[Job]: includes, arch, noc_traffic, - None, + value, cmd, parse_cmd, second_parse_cmd, @@ -541,6 +529,25 @@ def create_jobs(args, configs, after_run=False) -> List[Job]: golden_results, ) ) + else: + jobs.append( + create_job( + args, + config, + circuit, + includes, + arch, + noc_traffic, + None, + cmd, + parse_cmd, + second_parse_cmd, + qor_parse_command, + work_dir, + run_dir, + golden_results, + ) + ) return jobs From 436c56b7c6be1b53a9d9eaae1e2a015aaca57ad4 Mon Sep 17 00:00:00 2001 From: soheil Date: Sat, 30 Dec 2023 04:47:36 -0500 Subject: [PATCH 02/18] Add symlinks for synthetic benchmarks --- .../Synthetic_Designs/blif_files/complex_16_noc_1D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/complex_2_noc_1D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/complex_32_noc_clique.blif | 1 + .../noc/Synthetic_Designs/blif_files/complex_32_noc_star.blif | 1 + .../noc/Synthetic_Designs/blif_files/complex_4_noc_1D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/complex_64_noc_clique.blif | 1 + .../blif_files/complex_64_noc_nearest_neighbor.blif | 1 + .../noc/Synthetic_Designs/blif_files/complex_64_noc_star.blif | 1 + .../noc/Synthetic_Designs/blif_files/complex_8_noc_1D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/simple_16_noc_1D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/simple_2_noc_1D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/simple_32_noc_clique.blif | 1 + .../noc/Synthetic_Designs/blif_files/simple_32_noc_star.blif | 1 + .../noc/Synthetic_Designs/blif_files/simple_4_noc_1D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/simple_64_noc_2D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/simple_64_noc_clique.blif | 1 + .../noc/Synthetic_Designs/blif_files/simple_64_noc_star.blif | 1 + .../noc/Synthetic_Designs/blif_files/simple_8_noc_1D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/spread_2_noc_1D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/spread_32_noc_clique.blif | 1 + .../noc/Synthetic_Designs/blif_files/spread_32_noc_star.blif | 1 + .../noc/Synthetic_Designs/blif_files/spread_64_noc_2D_chain.blif | 1 + .../noc/Synthetic_Designs/blif_files/spread_64_noc_clique.blif | 1 + .../noc/Synthetic_Designs/blif_files/spread_64_noc_star.blif | 1 + .../traffic_flow_files/complex_16_noc_1D_chain.flows | 1 + .../traffic_flow_files/complex_2_noc_1D_chain.flows | 1 + .../traffic_flow_files/complex_32_noc_clique.flows | 1 + .../traffic_flow_files/complex_32_noc_star.flows | 1 + .../traffic_flow_files/complex_32_noc_star_no_constraints.flows | 1 + .../complex_32_star_12_latency_constraints.flows | 1 + .../complex_32_star_24_latency_constraints.flows | 1 + .../traffic_flow_files/complex_32_star_2_bandwdiths.flows | 1 + .../complex_32_star_31_latency_constraints.flows | 1 + .../traffic_flow_files/complex_32_star_3_bandwdiths.flows | 1 + .../traffic_flow_files/complex_32_star_4_bandwdiths.flows | 1 + .../complex_32_star_4_latency_constraints.flows | 1 + .../traffic_flow_files/complex_4_noc_1D_chain.flows | 1 + .../traffic_flow_files/complex_64_noc_clique.flows | 1 + .../traffic_flow_files/complex_64_noc_nearest_neighbor.flows | 1 + .../traffic_flow_files/complex_64_noc_star.flows | 1 + .../complex_64_noc_star_12_latency_constraints.flows | 1 + .../complex_64_noc_star_24_latency_constraints.flows | 1 + .../traffic_flow_files/complex_64_noc_star_2_bandwidths.flows | 1 + .../traffic_flow_files/complex_64_noc_star_3_bandwidths.flows | 1 + .../complex_64_noc_star_40_latency_constraints.flows | 1 + .../traffic_flow_files/complex_64_noc_star_4_bandwidths.flows | 1 + .../complex_64_noc_star_4_latency_constraints.flows | 1 + .../complex_64_noc_star_58_latency_constraints.flows | 1 + .../traffic_flow_files/complex_64_noc_star_5_bandwidths.flows | 1 + .../complex_64_noc_star_63_latency_constraints.flows | 1 + .../traffic_flow_files/complex_64_noc_star_6_bandwidths.flows | 1 + .../traffic_flow_files/complex_64_noc_star_no_constraints.flows | 1 + .../traffic_flow_files/complex_8_noc_1D_chain.flows | 1 + .../traffic_flow_files/simple_16_noc_1D_chain.flows | 1 + .../traffic_flow_files/simple_2_noc_1D_chain.flows | 1 + .../traffic_flow_files/simple_32_noc_clique.flows | 1 + .../traffic_flow_files/simple_32_noc_star.flows | 1 + .../traffic_flow_files/simple_32_noc_star_no_constraints.flows | 1 + .../simple_32_star_12_latency_constraints.flows | 1 + .../simple_32_star_24_latency_constraints.flows | 1 + .../traffic_flow_files/simple_32_star_2_bandwidths.flows | 1 + .../simple_32_star_31_latency_constraints.flows | 1 + .../traffic_flow_files/simple_32_star_3_bandwidths.flows | 1 + .../traffic_flow_files/simple_32_star_4_bandwidths.flows | 1 + .../simple_32_star_4_latency_constraints.flows | 1 + .../traffic_flow_files/simple_4_noc_1D_chain.flows | 1 + .../traffic_flow_files/simple_64_noc_2D_chain.flows | 1 + .../traffic_flow_files/simple_64_noc_clique.flows | 1 + .../traffic_flow_files/simple_64_noc_star.flows | 1 + .../simple_64_noc_star_12_latency_constraints.flows | 1 + .../simple_64_noc_star_24_latency_constraints.flows | 1 + .../traffic_flow_files/simple_64_noc_star_2_bandwidths.flows | 1 + .../traffic_flow_files/simple_64_noc_star_3_bandwidths.flows | 1 + .../simple_64_noc_star_40_latency_constraints.flows | 1 + .../traffic_flow_files/simple_64_noc_star_4_bandwidths.flows | 1 + .../simple_64_noc_star_4_latency_constraints.flows | 1 + .../simple_64_noc_star_58_latency_constraints.flows | 1 + .../traffic_flow_files/simple_64_noc_star_5_bandwidths.flows | 1 + .../simple_64_noc_star_63_latency_constraints.flows | 1 + .../traffic_flow_files/simple_64_noc_star_6_bandwidths.flows | 1 + .../traffic_flow_files/simple_64_noc_star_no_constraints.flows | 1 + .../traffic_flow_files/simple_8_noc_1D_chain.flows | 1 + .../traffic_flow_files/spread_2_noc_1D_chain.flows | 1 + .../traffic_flow_files/spread_32_noc_clique.flows | 1 + .../traffic_flow_files/spread_32_noc_star.flows | 1 + .../traffic_flow_files/spread_64_noc_2D_chain.flows | 1 + .../traffic_flow_files/spread_64_noc_clique.flows | 1 + .../traffic_flow_files/spread_64_noc_star.flows | 1 + 88 files changed, 88 insertions(+) create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_16_noc_1D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_2_noc_1D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_32_noc_clique.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_32_noc_star.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_4_noc_1D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_clique.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_nearest_neighbor.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_star.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_8_noc_1D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_16_noc_1D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_2_noc_1D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_32_noc_clique.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_32_noc_star.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_4_noc_1D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_2D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_clique.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_star.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_8_noc_1D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_2_noc_1D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_32_noc_clique.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_32_noc_star.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_2D_chain.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_clique.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_star.blif create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_16_noc_1D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_2_noc_1D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_clique.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_star.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_star_no_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_12_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_24_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_2_bandwdiths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_31_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_3_bandwdiths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_4_bandwdiths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_4_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_4_noc_1D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_clique.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_nearest_neighbor.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_12_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_24_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_2_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_3_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_40_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_4_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_4_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_58_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_5_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_63_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_6_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_no_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_8_noc_1D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_16_noc_1D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_2_noc_1D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_clique.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_star.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_star_no_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_12_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_24_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_2_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_31_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_3_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_4_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_4_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_4_noc_1D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_2D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_clique.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_12_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_24_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_2_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_3_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_40_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_4_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_4_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_58_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_5_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_63_latency_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_6_bandwidths.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_no_constraints.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_8_noc_1D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_2_noc_1D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_32_noc_clique.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_32_noc_star.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_2D_chain.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_clique.flows create mode 120000 vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_star.flows diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_16_noc_1D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_16_noc_1D_chain.blif new file mode 120000 index 00000000000..bb1fb38847d --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_16_noc_1D_chain.blif @@ -0,0 +1 @@ +.././complex_16_noc_1D_chain/complex_16_noc_1D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_2_noc_1D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_2_noc_1D_chain.blif new file mode 120000 index 00000000000..19c37074a2a --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_2_noc_1D_chain.blif @@ -0,0 +1 @@ +.././complex_2_noc_1D_chain/complex_2_noc_1D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_32_noc_clique.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_32_noc_clique.blif new file mode 120000 index 00000000000..dee250dc2d4 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_32_noc_clique.blif @@ -0,0 +1 @@ +.././complex_32_noc_clique/complex_32_noc_clique.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_32_noc_star.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_32_noc_star.blif new file mode 120000 index 00000000000..a5383129514 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_32_noc_star.blif @@ -0,0 +1 @@ +.././complex_32_noc_star/complex_32_noc_star.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_4_noc_1D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_4_noc_1D_chain.blif new file mode 120000 index 00000000000..fc90e0e18e8 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_4_noc_1D_chain.blif @@ -0,0 +1 @@ +.././complex_4_noc_1D_chain/complex_4_noc_1D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_clique.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_clique.blif new file mode 120000 index 00000000000..512f415a386 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_clique.blif @@ -0,0 +1 @@ +.././complex_64_noc_clique/complex_64_noc_clique.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_nearest_neighbor.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_nearest_neighbor.blif new file mode 120000 index 00000000000..877fad605fc --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_nearest_neighbor.blif @@ -0,0 +1 @@ +.././complex_64_noc_nearest_neighbor/complex_64_noc_nearest_neighbor.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_star.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_star.blif new file mode 120000 index 00000000000..b3aac6ff710 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_64_noc_star.blif @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_8_noc_1D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_8_noc_1D_chain.blif new file mode 120000 index 00000000000..c4f49b01108 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/complex_8_noc_1D_chain.blif @@ -0,0 +1 @@ +.././complex_8_noc_1D_chain/complex_8_noc_1D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_16_noc_1D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_16_noc_1D_chain.blif new file mode 120000 index 00000000000..061abd91a9c --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_16_noc_1D_chain.blif @@ -0,0 +1 @@ +.././simple_16_noc_1D_chain/simple_16_noc_1D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_2_noc_1D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_2_noc_1D_chain.blif new file mode 120000 index 00000000000..0f978978070 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_2_noc_1D_chain.blif @@ -0,0 +1 @@ +.././simple_2_noc_1D_chain/simple_2_noc_1D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_32_noc_clique.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_32_noc_clique.blif new file mode 120000 index 00000000000..30dc14711cf --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_32_noc_clique.blif @@ -0,0 +1 @@ +.././simple_32_noc_clique/simple_32_noc_clique.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_32_noc_star.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_32_noc_star.blif new file mode 120000 index 00000000000..0097bf0dc36 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_32_noc_star.blif @@ -0,0 +1 @@ +.././simple_32_noc_star/simple_32_noc_star.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_4_noc_1D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_4_noc_1D_chain.blif new file mode 120000 index 00000000000..86bece83bed --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_4_noc_1D_chain.blif @@ -0,0 +1 @@ +.././simple_4_noc_1D_chain/simple_4_noc_1D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_2D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_2D_chain.blif new file mode 120000 index 00000000000..112228f88f2 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_2D_chain.blif @@ -0,0 +1 @@ +.././simple_64_noc_2D_chain/simple_64_noc_2D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_clique.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_clique.blif new file mode 120000 index 00000000000..a372660e7a9 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_clique.blif @@ -0,0 +1 @@ +.././simple_64_noc_clique/simple_64_noc_clique.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_star.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_star.blif new file mode 120000 index 00000000000..bfefc59ee62 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_64_noc_star.blif @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_8_noc_1D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_8_noc_1D_chain.blif new file mode 120000 index 00000000000..0a25cb05988 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/simple_8_noc_1D_chain.blif @@ -0,0 +1 @@ +.././simple_8_noc_1D_chain/simple_8_noc_1D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_2_noc_1D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_2_noc_1D_chain.blif new file mode 120000 index 00000000000..a179d14b003 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_2_noc_1D_chain.blif @@ -0,0 +1 @@ +.././spread_2_noc_1D_chain/spread_2_noc_1D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_32_noc_clique.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_32_noc_clique.blif new file mode 120000 index 00000000000..2d955e7db37 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_32_noc_clique.blif @@ -0,0 +1 @@ +.././spread_32_noc_clique/spread_32_noc_clique.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_32_noc_star.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_32_noc_star.blif new file mode 120000 index 00000000000..0ebcafce8cc --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_32_noc_star.blif @@ -0,0 +1 @@ +.././spread_32_noc_star/spread_32_noc_star.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_2D_chain.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_2D_chain.blif new file mode 120000 index 00000000000..d7545a24b53 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_2D_chain.blif @@ -0,0 +1 @@ +.././spread_64_noc_2D_chain/spread_64_noc_2D_chain.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_clique.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_clique.blif new file mode 120000 index 00000000000..ceb49b263b7 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_clique.blif @@ -0,0 +1 @@ +.././spread_64_noc_clique/spread_64_noc_clique.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_star.blif b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_star.blif new file mode 120000 index 00000000000..0c19f7fa33b --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/blif_files/spread_64_noc_star.blif @@ -0,0 +1 @@ +.././spread_64_noc_star/spread_64_noc_star.blif \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_16_noc_1D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_16_noc_1D_chain.flows new file mode 120000 index 00000000000..e35020df1de --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_16_noc_1D_chain.flows @@ -0,0 +1 @@ +.././complex_16_noc_1D_chain/complex_16_noc_1D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_2_noc_1D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_2_noc_1D_chain.flows new file mode 120000 index 00000000000..1c9e32ef01a --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_2_noc_1D_chain.flows @@ -0,0 +1 @@ +.././complex_2_noc_1D_chain/complex_2_noc_1D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_clique.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_clique.flows new file mode 120000 index 00000000000..f8083687e84 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_clique.flows @@ -0,0 +1 @@ +.././complex_32_noc_clique/complex_32_noc_clique.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_star.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_star.flows new file mode 120000 index 00000000000..309d2eec9af --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_star.flows @@ -0,0 +1 @@ +.././complex_32_noc_star/complex_32_noc_star.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_star_no_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_star_no_constraints.flows new file mode 120000 index 00000000000..ad4885530b7 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_noc_star_no_constraints.flows @@ -0,0 +1 @@ +.././complex_32_noc_star/complex_32_noc_star_no_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_12_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_12_latency_constraints.flows new file mode 120000 index 00000000000..98520135a1e --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_12_latency_constraints.flows @@ -0,0 +1 @@ +.././complex_32_noc_star/complex_32_star_12_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_24_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_24_latency_constraints.flows new file mode 120000 index 00000000000..d1e22827a5f --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_24_latency_constraints.flows @@ -0,0 +1 @@ +.././complex_32_noc_star/complex_32_star_24_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_2_bandwdiths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_2_bandwdiths.flows new file mode 120000 index 00000000000..08e3a0ef7cf --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_2_bandwdiths.flows @@ -0,0 +1 @@ +.././complex_32_noc_star/complex_32_star_2_bandwdiths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_31_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_31_latency_constraints.flows new file mode 120000 index 00000000000..daedc69ccec --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_31_latency_constraints.flows @@ -0,0 +1 @@ +.././complex_32_noc_star/complex_32_star_31_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_3_bandwdiths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_3_bandwdiths.flows new file mode 120000 index 00000000000..a711497cbb9 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_3_bandwdiths.flows @@ -0,0 +1 @@ +.././complex_32_noc_star/complex_32_star_3_bandwdiths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_4_bandwdiths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_4_bandwdiths.flows new file mode 120000 index 00000000000..528da24f0ee --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_4_bandwdiths.flows @@ -0,0 +1 @@ +.././complex_32_noc_star/complex_32_star_4_bandwdiths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_4_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_4_latency_constraints.flows new file mode 120000 index 00000000000..1d428c5aac3 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_32_star_4_latency_constraints.flows @@ -0,0 +1 @@ +.././complex_32_noc_star/complex_32_star_4_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_4_noc_1D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_4_noc_1D_chain.flows new file mode 120000 index 00000000000..63c9b0d1d72 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_4_noc_1D_chain.flows @@ -0,0 +1 @@ +.././complex_4_noc_1D_chain/complex_4_noc_1D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_clique.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_clique.flows new file mode 120000 index 00000000000..e09563d42d3 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_clique.flows @@ -0,0 +1 @@ +.././complex_64_noc_clique/complex_64_noc_clique.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_nearest_neighbor.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_nearest_neighbor.flows new file mode 120000 index 00000000000..deccfdc1b4f --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_nearest_neighbor.flows @@ -0,0 +1 @@ +.././complex_64_noc_nearest_neighbor/complex_64_noc_nearest_neighbor.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star.flows new file mode 120000 index 00000000000..be1b729ccda --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_12_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_12_latency_constraints.flows new file mode 120000 index 00000000000..66b37ef9cb2 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_12_latency_constraints.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_12_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_24_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_24_latency_constraints.flows new file mode 120000 index 00000000000..b8fe35edd4f --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_24_latency_constraints.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_24_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_2_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_2_bandwidths.flows new file mode 120000 index 00000000000..9d121901c18 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_2_bandwidths.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_2_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_3_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_3_bandwidths.flows new file mode 120000 index 00000000000..1305de61db7 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_3_bandwidths.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_3_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_40_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_40_latency_constraints.flows new file mode 120000 index 00000000000..7a5a7a8f740 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_40_latency_constraints.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_40_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_4_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_4_bandwidths.flows new file mode 120000 index 00000000000..914323476c5 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_4_bandwidths.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_4_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_4_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_4_latency_constraints.flows new file mode 120000 index 00000000000..b1fd727a6c4 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_4_latency_constraints.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_4_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_58_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_58_latency_constraints.flows new file mode 120000 index 00000000000..f7dbf82756f --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_58_latency_constraints.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_58_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_5_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_5_bandwidths.flows new file mode 120000 index 00000000000..e8e38410e30 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_5_bandwidths.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_5_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_63_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_63_latency_constraints.flows new file mode 120000 index 00000000000..766ede63af0 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_63_latency_constraints.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_63_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_6_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_6_bandwidths.flows new file mode 120000 index 00000000000..5a823b9b27c --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_6_bandwidths.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_6_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_no_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_no_constraints.flows new file mode 120000 index 00000000000..5c6bbca70fd --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_64_noc_star_no_constraints.flows @@ -0,0 +1 @@ +.././complex_64_noc_star/complex_64_noc_star_no_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_8_noc_1D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_8_noc_1D_chain.flows new file mode 120000 index 00000000000..cf2c27d7ba4 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/complex_8_noc_1D_chain.flows @@ -0,0 +1 @@ +.././complex_8_noc_1D_chain/complex_8_noc_1D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_16_noc_1D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_16_noc_1D_chain.flows new file mode 120000 index 00000000000..f57315b6532 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_16_noc_1D_chain.flows @@ -0,0 +1 @@ +.././simple_16_noc_1D_chain/simple_16_noc_1D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_2_noc_1D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_2_noc_1D_chain.flows new file mode 120000 index 00000000000..e76f323e6a2 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_2_noc_1D_chain.flows @@ -0,0 +1 @@ +.././simple_2_noc_1D_chain/simple_2_noc_1D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_clique.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_clique.flows new file mode 120000 index 00000000000..8edb91ebd53 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_clique.flows @@ -0,0 +1 @@ +.././simple_32_noc_clique/simple_32_noc_clique.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_star.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_star.flows new file mode 120000 index 00000000000..03d150c503e --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_star.flows @@ -0,0 +1 @@ +.././simple_32_noc_star/simple_32_noc_star.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_star_no_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_star_no_constraints.flows new file mode 120000 index 00000000000..09f0391c07b --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_noc_star_no_constraints.flows @@ -0,0 +1 @@ +.././simple_32_noc_star/simple_32_noc_star_no_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_12_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_12_latency_constraints.flows new file mode 120000 index 00000000000..bb3be9944fd --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_12_latency_constraints.flows @@ -0,0 +1 @@ +.././simple_32_noc_star/simple_32_star_12_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_24_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_24_latency_constraints.flows new file mode 120000 index 00000000000..ccb941567a8 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_24_latency_constraints.flows @@ -0,0 +1 @@ +.././simple_32_noc_star/simple_32_star_24_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_2_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_2_bandwidths.flows new file mode 120000 index 00000000000..d7fcdbf8047 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_2_bandwidths.flows @@ -0,0 +1 @@ +.././simple_32_noc_star/simple_32_star_2_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_31_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_31_latency_constraints.flows new file mode 120000 index 00000000000..b19f73f260b --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_31_latency_constraints.flows @@ -0,0 +1 @@ +.././simple_32_noc_star/simple_32_star_31_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_3_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_3_bandwidths.flows new file mode 120000 index 00000000000..18abd6c2b12 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_3_bandwidths.flows @@ -0,0 +1 @@ +.././simple_32_noc_star/simple_32_star_3_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_4_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_4_bandwidths.flows new file mode 120000 index 00000000000..bf0a7c49b90 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_4_bandwidths.flows @@ -0,0 +1 @@ +.././simple_32_noc_star/simple_32_star_4_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_4_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_4_latency_constraints.flows new file mode 120000 index 00000000000..897370adeec --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_32_star_4_latency_constraints.flows @@ -0,0 +1 @@ +.././simple_32_noc_star/simple_32_star_4_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_4_noc_1D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_4_noc_1D_chain.flows new file mode 120000 index 00000000000..f6678d8ebb8 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_4_noc_1D_chain.flows @@ -0,0 +1 @@ +.././simple_4_noc_1D_chain/simple_4_noc_1D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_2D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_2D_chain.flows new file mode 120000 index 00000000000..9f27e5ca673 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_2D_chain.flows @@ -0,0 +1 @@ +.././simple_64_noc_2D_chain/simple_64_noc_2D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_clique.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_clique.flows new file mode 120000 index 00000000000..1a772cc5b7b --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_clique.flows @@ -0,0 +1 @@ +.././simple_64_noc_clique/simple_64_noc_clique.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star.flows new file mode 120000 index 00000000000..ea04f064514 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_12_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_12_latency_constraints.flows new file mode 120000 index 00000000000..4273c8e3186 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_12_latency_constraints.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_12_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_24_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_24_latency_constraints.flows new file mode 120000 index 00000000000..674ab9a0147 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_24_latency_constraints.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_24_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_2_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_2_bandwidths.flows new file mode 120000 index 00000000000..8ae3522c77b --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_2_bandwidths.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_2_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_3_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_3_bandwidths.flows new file mode 120000 index 00000000000..225910c1986 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_3_bandwidths.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_3_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_40_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_40_latency_constraints.flows new file mode 120000 index 00000000000..41c290d4c60 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_40_latency_constraints.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_40_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_4_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_4_bandwidths.flows new file mode 120000 index 00000000000..ee2584fe4fa --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_4_bandwidths.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_4_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_4_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_4_latency_constraints.flows new file mode 120000 index 00000000000..323c8d99ec0 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_4_latency_constraints.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_4_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_58_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_58_latency_constraints.flows new file mode 120000 index 00000000000..e5514e27ddb --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_58_latency_constraints.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_58_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_5_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_5_bandwidths.flows new file mode 120000 index 00000000000..d6d1a9f150d --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_5_bandwidths.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_5_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_63_latency_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_63_latency_constraints.flows new file mode 120000 index 00000000000..103c3cd3c7e --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_63_latency_constraints.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_63_latency_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_6_bandwidths.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_6_bandwidths.flows new file mode 120000 index 00000000000..75df9590850 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_6_bandwidths.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_6_bandwidths.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_no_constraints.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_no_constraints.flows new file mode 120000 index 00000000000..b40e08839ca --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_64_noc_star_no_constraints.flows @@ -0,0 +1 @@ +.././simple_64_noc_star/simple_64_noc_star_no_constraints.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_8_noc_1D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_8_noc_1D_chain.flows new file mode 120000 index 00000000000..2f1dfa86de3 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/simple_8_noc_1D_chain.flows @@ -0,0 +1 @@ +.././simple_8_noc_1D_chain/simple_8_noc_1D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_2_noc_1D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_2_noc_1D_chain.flows new file mode 120000 index 00000000000..87cd723e9db --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_2_noc_1D_chain.flows @@ -0,0 +1 @@ +.././spread_2_noc_1D_chain/spread_2_noc_1D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_32_noc_clique.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_32_noc_clique.flows new file mode 120000 index 00000000000..ac1f74eb262 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_32_noc_clique.flows @@ -0,0 +1 @@ +.././spread_32_noc_clique/spread_32_noc_clique.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_32_noc_star.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_32_noc_star.flows new file mode 120000 index 00000000000..00e3cc25866 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_32_noc_star.flows @@ -0,0 +1 @@ +.././spread_32_noc_star/spread_32_noc_star.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_2D_chain.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_2D_chain.flows new file mode 120000 index 00000000000..63d81a3ea8b --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_2D_chain.flows @@ -0,0 +1 @@ +.././spread_64_noc_2D_chain/spread_64_noc_2D_chain.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_clique.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_clique.flows new file mode 120000 index 00000000000..67899accace --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_clique.flows @@ -0,0 +1 @@ +.././spread_64_noc_clique/spread_64_noc_clique.flows \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_star.flows b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_star.flows new file mode 120000 index 00000000000..d6a7137c1a6 --- /dev/null +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/traffic_flow_files/spread_64_noc_star.flows @@ -0,0 +1 @@ +.././spread_64_noc_star/spread_64_noc_star.flows \ No newline at end of file From 9f888cea0a0a72ee95d7b1b55697ef788a7dac85 Mon Sep 17 00:00:00 2001 From: soheil Date: Sat, 30 Dec 2023 05:09:29 -0500 Subject: [PATCH 03/18] Add a task for large simple synthetic NoC benchmarks --- .../large_simple__synthetic/config/config.txt | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 vtr_flow/tasks/noc_qor/large_simple__synthetic/config/config.txt diff --git a/vtr_flow/tasks/noc_qor/large_simple__synthetic/config/config.txt b/vtr_flow/tasks/noc_qor/large_simple__synthetic/config/config.txt new file mode 100644 index 00000000000..beee0c0912f --- /dev/null +++ b/vtr_flow/tasks/noc_qor/large_simple__synthetic/config/config.txt @@ -0,0 +1,75 @@ +############################################## +# Configuration file for running experiments +############################################## + +# Path to directory of circuits to use +circuits_dir=benchmarks/noc/Synthetic_Designs/blif_files/ + +# Path to directory of architectures to use +archs_dir=arch/noc/mesh_noc_topology + +# Path to directory of NoC Traffic Patterns to use +noc_traffics_dir=benchmarks/noc/Synthetic_Designs/traffic_flow_files/ + +# Traffic flow files are added per circuit +noc_traffic_list_type=per_circuit + +# Add circuits and traffic flows to list to sweep +circuit_list_add=simple_16_noc_1D_chain.blif +noc_traffic_list_add=simple_16_noc_1D_chain.flows + +circuit_list_add=simple_32_noc_clique.blif +noc_traffic_list_add=simple_32_noc_clique.flows + +circuit_list_add=simple_32_noc_star.blif +noc_traffic_list_add=simple_32_noc_star.flows +circuit_list_add=simple_32_noc_star.blif +noc_traffic_list_add=simple_32_noc_star_no_constraints.flows + +circuit_list_add=simple_64_noc_clique.blif +noc_traffic_list_add=simple_64_noc_clique.flows + +circuit_list_add=simple_64_noc_2D_chain.blif +noc_traffic_list_add=simple_64_noc_2D_chain.flows + +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_12_latency_constraints.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_24_latency_constraints.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_2_bandwidths.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_3_bandwidths.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_40_latency_constraints.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_4_bandwidths.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_4_latency_constraints.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_58_latency_constraints.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_5_bandwidths.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_63_latency_constraints.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_6_bandwidths.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star.flows +circuit_list_add=simple_64_noc_star.blif +noc_traffic_list_add=simple_64_noc_star_no_constraints.flows + +# Add architectures to list to sweep +arch_list_add=stratixiv_arch.timing_with_a_embedded_10X10_mesh_noc_topology.xml + +# Parse info and how to parse +parse_file=vpr_noc.txt + +# How to parse QoR info +qor_parse_file=qor_noc_spec.txt + +# Pass requirements +#pass_requirements_file= + +# Script parameters +script_params_common =-starting_stage vpr --noc on --noc_routing_algorithm xy_routing --device "EP4SE820" From c93e2bc0c6dbdea128fe3073ff49bebfa6229e3a Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Wed, 17 Jan 2024 18:54:19 -0500 Subject: [PATCH 04/18] Add a task for large complex synthetic NoC benchmarks --- .../large_complex_synthetic/config/config.txt | 89 +++++++++++++++++++ .../config/config.txt | 0 2 files changed, 89 insertions(+) create mode 100644 vtr_flow/tasks/noc_qor/large_complex_synthetic/config/config.txt rename vtr_flow/tasks/noc_qor/{large_simple__synthetic => large_simple_synthetic}/config/config.txt (100%) diff --git a/vtr_flow/tasks/noc_qor/large_complex_synthetic/config/config.txt b/vtr_flow/tasks/noc_qor/large_complex_synthetic/config/config.txt new file mode 100644 index 00000000000..55e2261866c --- /dev/null +++ b/vtr_flow/tasks/noc_qor/large_complex_synthetic/config/config.txt @@ -0,0 +1,89 @@ +############################################## +# Configuration file for running experiments +############################################## + +# Path to directory of circuits to use +circuits_dir=benchmarks/noc/Synthetic_Designs/blif_files/ + +# Path to directory of architectures to use +archs_dir=arch/noc/mesh_noc_topology + +# Path to directory of NoC Traffic Patterns to use +noc_traffics_dir=benchmarks/noc/Synthetic_Designs/traffic_flow_files/ + +# Traffic flow files are added per circuit +noc_traffic_list_type=per_circuit + +# Add circuits and traffic flows to list to sweep +circuit_list_add=complex_16_noc_1D_chain.blif +noc_traffic_list_add=complex_16_noc_1D_chain.flows + +circuit_list_add=complex_32_noc_clique.blif +noc_traffic_list_add=complex_32_noc_clique.flows + +circuit_list_add=complex_32_noc_star.blif +noc_traffic_list_add=complex_32_noc_star.flows +circuit_list_add=complex_32_noc_star.blif +noc_traffic_list_add=complex_32_noc_star_no_constraints.flows +circuit_list_add=complex_32_noc_star.blif +noc_traffic_list_add=complex_32_star_12_latency_constraints.flows +circuit_list_add=complex_32_noc_star.blif +noc_traffic_list_add=complex_32_star_24_latency_constraints.flows +circuit_list_add=complex_32_noc_star.blif +noc_traffic_list_add=complex_32_star_2_bandwdiths.flows +circuit_list_add=complex_32_noc_star.blif +noc_traffic_list_add=complex_32_star_31_latency_constraints.flows +circuit_list_add=complex_32_noc_star.blif +noc_traffic_list_add=complex_32_star_3_bandwdiths.flows +circuit_list_add=complex_32_noc_star.blif +noc_traffic_list_add=complex_32_star_4_bandwdiths.flows +circuit_list_add=complex_32_noc_star.blif +noc_traffic_list_add=complex_32_star_4_latency_constraints.flows + +circuit_list_add=complex_64_noc_clique.blif +noc_traffic_list_add=complex_64_noc_clique.flows + +circuit_list_add=complex_64_noc_nearest_neighbor.blif +noc_traffic_list_add=complex_64_noc_nearest_neighbor.flows + +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_12_latency_constraints.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_24_latency_constraints.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_2_bandwidths.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_3_bandwidths.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_40_latency_constraints.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_4_bandwidths.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_4_latency_constraints.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_58_latency_constraints.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_5_bandwidths.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_63_latency_constraints.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_6_bandwidths.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star.flows +circuit_list_add=complex_64_noc_star.blif +noc_traffic_list_add=complex_64_noc_star_no_constraints.flows + +# Add architectures to list to sweep +arch_list_add=stratixiv_arch.timing_with_a_embedded_10X10_mesh_noc_topology.xml + +# Parse info and how to parse +parse_file=vpr_noc.txt + +# How to parse QoR info +qor_parse_file=qor_noc_spec.txt + +# Pass requirements +#pass_requirements_file= + +# Script parameters +script_params_common =-starting_stage vpr --noc on --noc_routing_algorithm xy_routing --device "EP4SE820" diff --git a/vtr_flow/tasks/noc_qor/large_simple__synthetic/config/config.txt b/vtr_flow/tasks/noc_qor/large_simple_synthetic/config/config.txt similarity index 100% rename from vtr_flow/tasks/noc_qor/large_simple__synthetic/config/config.txt rename to vtr_flow/tasks/noc_qor/large_simple_synthetic/config/config.txt From 24fd2262a2913675031d902f48bebf20d6454228 Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Thu, 18 Jan 2024 10:43:36 -0500 Subject: [PATCH 05/18] new task for small simple synthetic benchmarks --- .../small_simple_synthetic/config/config.txt | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 vtr_flow/tasks/noc_qor/small_simple_synthetic/config/config.txt diff --git a/vtr_flow/tasks/noc_qor/small_simple_synthetic/config/config.txt b/vtr_flow/tasks/noc_qor/small_simple_synthetic/config/config.txt new file mode 100644 index 00000000000..b2cc899fbf1 --- /dev/null +++ b/vtr_flow/tasks/noc_qor/small_simple_synthetic/config/config.txt @@ -0,0 +1,40 @@ +############################################## +# Configuration file for running experiments +############################################## + +# Path to directory of circuits to useks +circuits_dir=benchmarks/noc/Synthetic_Designs/blif_files/ + +# Path to directory of architectures to use +archs_dir=arch/noc/mesh_noc_topology + +# Path to directory of NoC Traffic Patterns to use +noc_traffics_dir=benchmarks/noc/Synthetic_Designs/traffic_flow_files/ + +# Traffic flow files are added per circuit +noc_traffic_list_type=per_circuit + +# Add circuits and traffic flows to list to sweep +circuit_list_add=simple_2_noc_1D_chain.blif +noc_traffic_list_add=simple_2_noc_1D_chain.flows + +circuit_list_add=simple_4_noc_1D_chain.blif +noc_traffic_list_add=simple_4_noc_1D_chain.flows + +circuit_list_add=simple_8_noc_1D_chain.blif +noc_traffic_list_add=simple_8_noc_1D_chain.flows + +# Add architectures to list to sweep +arch_list_add=stratixiv_arch.timing_with_a_embedded_3X3_mesh_noc_topology_2.xml + +# Parse info and how to parse +parse_file=vpr_noc.txt + +# How to parse QoR info +qor_parse_file=qor_noc_spec.txt + +# Pass requirements +#pass_requirements_file= + +# Script parameters +script_params_common =-starting_stage vpr --noc on --noc_routing_algorithm xy_routing --device "EP4SGX110" From b71dbc89eb545d565f799777a6845e9acbc1d80e Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Thu, 18 Jan 2024 10:44:01 -0500 Subject: [PATCH 06/18] new task for small complex synthetic benchmarks --- .../small_complex_synthetic/config/config.txt | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 vtr_flow/tasks/noc_qor/small_complex_synthetic/config/config.txt diff --git a/vtr_flow/tasks/noc_qor/small_complex_synthetic/config/config.txt b/vtr_flow/tasks/noc_qor/small_complex_synthetic/config/config.txt new file mode 100644 index 00000000000..b1365a0a27d --- /dev/null +++ b/vtr_flow/tasks/noc_qor/small_complex_synthetic/config/config.txt @@ -0,0 +1,40 @@ +############################################## +# Configuration file for running experiments +############################################## + +# Path to directory of circuits to useks +circuits_dir=benchmarks/noc/Synthetic_Designs/blif_files/ + +# Path to directory of architectures to use +archs_dir=arch/noc/mesh_noc_topology + +# Path to directory of NoC Traffic Patterns to use +noc_traffics_dir=benchmarks/noc/Synthetic_Designs/traffic_flow_files/ + +# Traffic flow files are added per circuit +noc_traffic_list_type=per_circuit + +# Add circuits and traffic flows to list to sweep +circuit_list_add=complex_2_noc_1D_chain.blif +noc_traffic_list_add=complex_2_noc_1D_chain.flows + +circuit_list_add=complex_4_noc_1D_chain.blif +noc_traffic_list_add=complex_4_noc_1D_chain.flows + +circuit_list_add=complex_8_noc_1D_chain.blif +noc_traffic_list_add=complex_8_noc_1D_chain.flows + +# Add architectures to list to sweep +arch_list_add=stratixiv_arch.timing_with_a_embedded_3X3_mesh_noc_topology_2.xml + +# Parse info and how to parse +parse_file=vpr_noc.txt + +# How to parse QoR info +qor_parse_file=qor_noc_spec.txt + +# Pass requirements +#pass_requirements_file= + +# Script parameters +script_params_common =-starting_stage vpr --noc on --noc_routing_algorithm xy_routing --device "EP4SGX110" From 1666d5a9a0b6a60f28fb5e49c126220b72033ba4 Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Fri, 19 Jan 2024 12:08:47 -0500 Subject: [PATCH 07/18] Add download_noc_mlp.py This script downloads a compressed file containing NoC MLP netlists and extracts them into appropriate directories. Compressed files are still to be uploaded. Vaughn suggested they should be uploaded onto EECG network. --- vtr_flow/scripts/download_noc_mlp.py | 164 +++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100755 vtr_flow/scripts/download_noc_mlp.py diff --git a/vtr_flow/scripts/download_noc_mlp.py b/vtr_flow/scripts/download_noc_mlp.py new file mode 100755 index 00000000000..4f6cf338ab0 --- /dev/null +++ b/vtr_flow/scripts/download_noc_mlp.py @@ -0,0 +1,164 @@ +#!/usr/bin/env python3 +import sys +import os +import argparse +import urllib.parse +import urllib.request, urllib.parse, urllib.error +import urllib.request, urllib.error, urllib.parse +import math +import textwrap +import tarfile +import tempfile +import shutil + + +class DownloadError(Exception): + pass + + +class ChecksumError(Exception): + pass + + +class ExtractionError(Exception): + pass + + +TITAN_URL_MIRRORS = {"eecg": "https://www.eecg.utoronto.ca/~vaughn/titan/"} + + +def parse_args(): + description = textwrap.dedent( + """ + Download and extract a MLP NoC benchmarks into a + VTR-style directory structure. + + If a previous matching titan release tar.gz file is found + does nothing (unless --force is specified). + """ + ) + parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + + parser.add_argument( + "--vtr_flow_dir", + required=True, + help="The 'vtr_flow' directory under the VTR tree. " + "If specified this will extract the titan release, " + "placing benchmarks under vtr_flow/benchmarks/titan ", + ) + parser.add_argument( + "--force", + default=False, + action="store_true", + help="Run extraction step even if directores etc. already exist", + ) + parser.add_argument( + "--full_archive", + default=False, + action="store_true", + help="Download the full archive instead of just downloading the blif archive", + ) + + return parser.parse_args() + + +def main(): + + args = parse_args() + + try: + if args.full_archive: + tar_gz_filename = "MLP_Benchmark_Netlist_Files_vqm_blif" + ".tar.gz" + else: + tar_gz_filename = "MLP_Benchmark_Netlist_Files_blif" + ".tar.gz" + + tar_gz_url = urllib.parse.urljoin(TITAN_URL_MIRRORS["eecg"], tar_gz_filename) + + if not args.force and os.path.isfile(tar_gz_filename): + print("Found existing {} (skipping download and extraction)".format(tar_gz_filename)) + else: + print("Downloading {}".format(tar_gz_url)) + # download_url(tar_gz_filename, tar_gz_url) + + print("Extracting {}".format(tar_gz_filename)) + extract_to_vtr_flow_dir(args, tar_gz_filename) + + except DownloadError as e: + print("Failed to download:", e) + sys.exit(1) + except ExtractionError as e: + print("Failed to extract titan release:", e) + sys.exit(3) + + sys.exit(0) + + +def download_url(filename, url): + """ + Downloads NoC MLP benchmarks + """ + urllib.request.urlretrieve(url, filename, reporthook=download_progress_callback) + + +def download_progress_callback(block_num, block_size, expected_size): + """ + Callback for urllib.urlretrieve which prints a dot for every percent of a file downloaded + """ + total_blocks = int(math.ceil(expected_size / block_size)) + progress_increment = int(math.ceil(total_blocks / 100)) + + if block_num % progress_increment == 0: + sys.stdout.write(".") + sys.stdout.flush() + if block_num * block_size >= expected_size: + print("") + + +def extract_to_vtr_flow_dir(args, tar_gz_filename): + """ + Extracts the NoC MLP benchmarks into its corresponding vtr directory + """ + + # Reference directories + # arch_dir = os.path.join(args.vtr_flow_dir, "arch") + benchmarks_dir = os.path.join(args.vtr_flow_dir, "benchmarks") + mlp_benchmarks_dir = os.path.join(benchmarks_dir, "noc/Large_Designs/MLP") + + + if not args.force: + # Check that all expected directories exist + expected_dirs = [ + args.vtr_flow_dir, + benchmarks_dir, + mlp_benchmarks_dir, + ] + for dir in expected_dirs: + if not os.path.isdir(dir): + raise ExtractionError("{} should be a directory".format(dir)) + + # Create a temporary working directory + tmpdir = tempfile.mkdtemp(suffix="download_NoC_MLP", dir= os.path.abspath(".")) + try: + # Extract the contents of the .tar.gz archive directly into the destination directory + with tarfile.open(tar_gz_filename, "r:gz") as tar: + tar.extractall(tmpdir) + tmp_source_blif_dir = os.path.join(tmpdir, "MLP_Benchmark_Netlist_Files") + for root, dirs, files in os.walk(tmp_source_blif_dir): + for file in files: + source_file = os.path.join(root, file) + relative_path = os.path.relpath(source_file, tmp_source_blif_dir) + destination_file = os.path.join(mlp_benchmarks_dir, relative_path) + print(source_file, destination_file) + os.makedirs(os.path.dirname(destination_file), exist_ok=True) + shutil.copy2(source_file, destination_file) + + finally: + # Clean-up + shutil.rmtree(tmpdir) + + print("Done") + + + +if __name__ == "__main__": + main() From d068167561654adf544ff669a31e7be4405410cc Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Fri, 19 Jan 2024 12:13:43 -0500 Subject: [PATCH 08/18] ignore .vqm and .blif files in NoC MLP benchmark directories. --- .gitignore | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitignore b/.gitignore index 372746ab416..8bf6aa0b212 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,14 @@ vtr_flow/benchmarks/titan_blif/titan23 vtr_flow/benchmarks/titan_blif/titan_new +# +# NoC MLP benchmarks +# +# We ignore blif and vqm files because of thier large size/ +# +vtr_flow/benchmarks/noc/Large_Designs/MLP/**/*.vqm +vtr_flow/benchmarks/noc/Large_Designs/MLP/**/*.blif + # # ISPD benchmarks # From 6cc52c8c939fb7109025a970d70fa264fa3d12fa Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Fri, 19 Jan 2024 12:21:57 -0500 Subject: [PATCH 09/18] Add get_noc_mlp_benchmarks target to CmakeLists --- CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5199c7c42cb..6ec1813e020 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -341,6 +341,14 @@ add_custom_target(get_titan_benchmarks WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Downloading (~1GB) and extracting Titan benchmarks (~10GB) into VTR source tree.") +# +# NoC MLP Benchmarks +# +add_custom_target(get_noc_mlp_benchmarks + COMMAND ./vtr_flow/scripts/download_noc_mlp.py --vtr_flow_dir ./vtr_flow + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Downloading (~100MB) and extracting NoC MLP benchmarks (~3.2GB) into VTR source tree.") + # # ISPD Benchmarks # From f3c46bf4bc974952f4c83e37f47d71d1ab597e32 Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Fri, 19 Jan 2024 12:51:11 -0500 Subject: [PATCH 10/18] create symbolic links to blif and traffic flow files in NoC MLP benchmarks Created symbolic links are ignored --- .gitignore | 5 ++++- vtr_flow/scripts/download_noc_mlp.py | 29 +++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 8bf6aa0b212..635a26be6dc 100644 --- a/.gitignore +++ b/.gitignore @@ -41,10 +41,13 @@ vtr_flow/benchmarks/titan_blif/titan_new # # NoC MLP benchmarks # -# We ignore blif and vqm files because of thier large size/ +# We ignore blif and vqm files because of thier large size. +# We also ignore symbolic links to traffic flow and blif files. # vtr_flow/benchmarks/noc/Large_Designs/MLP/**/*.vqm vtr_flow/benchmarks/noc/Large_Designs/MLP/**/*.blif +vtr_flow/benchmarks/noc/Large_Designs/MLP/blif_files/* +vtr_flow/benchmarks/noc/Large_Designs/MLP/traffic_flow_files/* # # ISPD benchmarks diff --git a/vtr_flow/scripts/download_noc_mlp.py b/vtr_flow/scripts/download_noc_mlp.py index 4f6cf338ab0..f8f86938763 100755 --- a/vtr_flow/scripts/download_noc_mlp.py +++ b/vtr_flow/scripts/download_noc_mlp.py @@ -148,10 +148,14 @@ def extract_to_vtr_flow_dir(args, tar_gz_filename): source_file = os.path.join(root, file) relative_path = os.path.relpath(source_file, tmp_source_blif_dir) destination_file = os.path.join(mlp_benchmarks_dir, relative_path) - print(source_file, destination_file) os.makedirs(os.path.dirname(destination_file), exist_ok=True) shutil.copy2(source_file, destination_file) + # Create symbolic links to blif files + find_and_link_files(mlp_benchmarks_dir, ".blif", "blif_files") + # Create symbolic links to traffic flow files + find_and_link_files(mlp_benchmarks_dir, ".flows", "traffic_flow_files") + finally: # Clean-up shutil.rmtree(tmpdir) @@ -159,6 +163,29 @@ def extract_to_vtr_flow_dir(args, tar_gz_filename): print("Done") +def find_and_link_files(base_path, target_extension, link_folder_name): + """ + Finds files with a given extension and make symbolic links to them + """ + + # Create a folder to store symbolic links + link_folder_path = os.path.join(base_path, link_folder_name) + os.makedirs(link_folder_path, exist_ok=True) + + # Walk through all subdirectories + for root, dirs, files in os.walk(base_path): + if root == link_folder_path: + continue + + for file in files: + if file.endswith(target_extension): + # Get the full path of the file + file_path = os.path.join(root, file) + + # Create symbolic link in the link folder + link_name = os.path.join(link_folder_path, file) + os.symlink(file_path, link_name) + if __name__ == "__main__": main() From 30484b1cdf632613ff8a13d40994ef8fbee4c9e1 Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Fri, 19 Jan 2024 13:04:46 -0500 Subject: [PATCH 11/18] Add new task to run QoR measurement for NoC MLP benchmarks --- vtr_flow/tasks/noc_qor/MLP/config/config.txt | 44 ++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 vtr_flow/tasks/noc_qor/MLP/config/config.txt diff --git a/vtr_flow/tasks/noc_qor/MLP/config/config.txt b/vtr_flow/tasks/noc_qor/MLP/config/config.txt new file mode 100644 index 00000000000..7561fa0e3c5 --- /dev/null +++ b/vtr_flow/tasks/noc_qor/MLP/config/config.txt @@ -0,0 +1,44 @@ +############################################## +# Configuration file for running experiments +############################################## + +# Path to directory of circuits to use +circuits_dir=benchmarks/noc/Large_Designs/MLP/blif_files/ + +# Path to directory of architectures to use +archs_dir=arch/noc/mesh_noc_topology + +# Path to directory of NoC Traffic Patterns to use +noc_traffics_dir=benchmarks/noc/Large_Designs/MLP/traffic_flow_files/ + +# Traffic flow files are added per circuit +noc_traffic_list_type=per_circuit + +# Add circuits to list to sweep +circuit_list_add=mlp_1.blif +noc_traffic_list_add=mlp_1.flows + +circuit_list_add=mlp_2.blif +noc_traffic_list_add=mlp_2.flows + +circuit_list_add=mlp_3.blif +noc_traffic_list_add=mlp_3.flows + +circuit_list_add=mlp_4.blif +noc_traffic_list_add=mlp_4.flows + +# Add architectures to list to sweep +arch_list_add=mlp_benchmarks.stratixiv_arch.timing_with_a_embedded_4x4_mesh_noc_topology.xml + + +# Parse info and how to parse +parse_file=vpr_noc.txt + +# How to parse QoR info +qor_parse_file=qor_noc_spec.txt + +# Pass requirements +pass_requirements_file=pass_requirements.txt + +# Script parameters +script_params_common =-starting_stage vpr --noc on --noc_routing_algorithm xy_routing --device "EP4SE820" --pack --place From 8db79f6489b81222c960b5f8ff0f87afc02b8c2f Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Fri, 19 Jan 2024 15:33:40 -0500 Subject: [PATCH 12/18] Downlaod NoC MLP benchmarks from EECG network If blif and traffic flow symlinks already exits, recreate them Ignores downloaded tar.gz files --- .gitignore | 2 ++ vtr_flow/scripts/download_noc_mlp.py | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 635a26be6dc..e7a4c799299 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,8 @@ vtr_flow/benchmarks/noc/Large_Designs/MLP/**/*.vqm vtr_flow/benchmarks/noc/Large_Designs/MLP/**/*.blif vtr_flow/benchmarks/noc/Large_Designs/MLP/blif_files/* vtr_flow/benchmarks/noc/Large_Designs/MLP/traffic_flow_files/* +MLP_Benchmark_Netlist_Files_blif.tar.gz +MLP_Benchmark_Netlist_Files_vqm_blif.tar.gz # # ISPD benchmarks diff --git a/vtr_flow/scripts/download_noc_mlp.py b/vtr_flow/scripts/download_noc_mlp.py index f8f86938763..41f7da96616 100755 --- a/vtr_flow/scripts/download_noc_mlp.py +++ b/vtr_flow/scripts/download_noc_mlp.py @@ -10,6 +10,7 @@ import tarfile import tempfile import shutil +import errno class DownloadError(Exception): @@ -78,7 +79,7 @@ def main(): print("Found existing {} (skipping download and extraction)".format(tar_gz_filename)) else: print("Downloading {}".format(tar_gz_url)) - # download_url(tar_gz_filename, tar_gz_url) + download_url(tar_gz_filename, tar_gz_url) print("Extracting {}".format(tar_gz_filename)) extract_to_vtr_flow_dir(args, tar_gz_filename) @@ -184,7 +185,14 @@ def find_and_link_files(base_path, target_extension, link_folder_name): # Create symbolic link in the link folder link_name = os.path.join(link_folder_path, file) - os.symlink(file_path, link_name) + try: + os.symlink(file_path, link_name) + except OSError as e: + if e.errno == errno.EEXIST: + os.remove(link_name) + os.symlink(file_path, link_name) + else: + raise e if __name__ == "__main__": From 6db596d69298eaa227e1eb1daf04229951de8b50 Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Sun, 21 Jan 2024 13:17:49 -0500 Subject: [PATCH 13/18] Fixed symbolic file target path --- vtr_flow/scripts/download_noc_mlp.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vtr_flow/scripts/download_noc_mlp.py b/vtr_flow/scripts/download_noc_mlp.py index 41f7da96616..dc3485627aa 100755 --- a/vtr_flow/scripts/download_noc_mlp.py +++ b/vtr_flow/scripts/download_noc_mlp.py @@ -185,14 +185,14 @@ def find_and_link_files(base_path, target_extension, link_folder_name): # Create symbolic link in the link folder link_name = os.path.join(link_folder_path, file) + file_relative_path = os.path.relpath(file_path, start=link_folder_path) + try: - os.symlink(file_path, link_name) + os.symlink(file_relative_path, link_name) except OSError as e: if e.errno == errno.EEXIST: os.remove(link_name) - os.symlink(file_path, link_name) - else: - raise e + os.symlink(file_relative_path, link_name) if __name__ == "__main__": From 37ef28b9098d76eaf816d5bb5883038090d38d60 Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Sun, 21 Jan 2024 13:25:35 -0500 Subject: [PATCH 14/18] Clean download_noc_mlp.py from Titan mentions --- vtr_flow/scripts/download_noc_mlp.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/vtr_flow/scripts/download_noc_mlp.py b/vtr_flow/scripts/download_noc_mlp.py index dc3485627aa..3660dfd2543 100755 --- a/vtr_flow/scripts/download_noc_mlp.py +++ b/vtr_flow/scripts/download_noc_mlp.py @@ -25,7 +25,7 @@ class ExtractionError(Exception): pass -TITAN_URL_MIRRORS = {"eecg": "https://www.eecg.utoronto.ca/~vaughn/titan/"} +URL_MIRRORS = {"eecg": "https://www.eecg.utoronto.ca/~vaughn/titan/"} def parse_args(): @@ -34,7 +34,7 @@ def parse_args(): Download and extract a MLP NoC benchmarks into a VTR-style directory structure. - If a previous matching titan release tar.gz file is found + If a previous matching tar.gz file is found does nothing (unless --force is specified). """ ) @@ -44,8 +44,8 @@ def parse_args(): "--vtr_flow_dir", required=True, help="The 'vtr_flow' directory under the VTR tree. " - "If specified this will extract the titan release, " - "placing benchmarks under vtr_flow/benchmarks/titan ", + "If specified this will extract benchmarks files, " + "placing them under vtr_flow/benchmarks/noc/Large_Designs/MLP ", ) parser.add_argument( "--force", @@ -73,7 +73,7 @@ def main(): else: tar_gz_filename = "MLP_Benchmark_Netlist_Files_blif" + ".tar.gz" - tar_gz_url = urllib.parse.urljoin(TITAN_URL_MIRRORS["eecg"], tar_gz_filename) + tar_gz_url = urllib.parse.urljoin(URL_MIRRORS["eecg"], tar_gz_filename) if not args.force and os.path.isfile(tar_gz_filename): print("Found existing {} (skipping download and extraction)".format(tar_gz_filename)) @@ -88,7 +88,7 @@ def main(): print("Failed to download:", e) sys.exit(1) except ExtractionError as e: - print("Failed to extract titan release:", e) + print("Failed to extract NoC MLP benchmarks release:", e) sys.exit(3) sys.exit(0) @@ -121,7 +121,6 @@ def extract_to_vtr_flow_dir(args, tar_gz_filename): """ # Reference directories - # arch_dir = os.path.join(args.vtr_flow_dir, "arch") benchmarks_dir = os.path.join(args.vtr_flow_dir, "benchmarks") mlp_benchmarks_dir = os.path.join(benchmarks_dir, "noc/Large_Designs/MLP") From 0d46da653dd85331cf493632b638e36a35ad4b75 Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Sun, 21 Jan 2024 17:33:24 -0500 Subject: [PATCH 15/18] Add a task list for NoC QoR measurements --- vtr_flow/tasks/noc_qor/task_list.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 vtr_flow/tasks/noc_qor/task_list.txt diff --git a/vtr_flow/tasks/noc_qor/task_list.txt b/vtr_flow/tasks/noc_qor/task_list.txt new file mode 100644 index 00000000000..ff7c2010a53 --- /dev/null +++ b/vtr_flow/tasks/noc_qor/task_list.txt @@ -0,0 +1,5 @@ +noc_qor/small_complex_synthetic +noc_qor/small_simple_synthetic +noc_qor/large_simple_synthetic +noc_qor/large_complex_synthetic +noc_qor/MLP/ From df30f289603d85c0a924aa8baf7074843c48e580 Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Sun, 21 Jan 2024 17:36:24 -0500 Subject: [PATCH 16/18] Updated documentation --- README.developers.md | 62 ++++++++++++++++--- doc/README | 4 +- doc/src/vtr/benchmarks.rst | 15 ++++- .../noc/Large_Designs/MLP/Readme.txt | 15 +++-- .../noc/Synthetic_Designs/Readme.txt | 10 ++- vtr_flow/benchmarks/titan_blif/README.rst | 6 +- 6 files changed, 90 insertions(+), 22 deletions(-) diff --git a/README.developers.md b/README.developers.md index 92e59ac8614..917954a6610 100644 --- a/README.developers.md +++ b/README.developers.md @@ -386,17 +386,21 @@ The following are key QoR metrics which should be used to evaluate the impact of Implementation Quality Metrics: -| Metric | Meaning | Sensitivity | -|-----------------------------|--------------------------------------------------------------------------|-------------| -| num_pre_packed_blocks | Number of primitive netlist blocks (after tech. mapping, before packing) | Low | -| num_post_packed_blocks | Number of Clustered Blocks (after packing) | Medium | -| device_grid_tiles | FPGA size in grid tiles | Low-Medium | -| min_chan_width | The minimum routable channel width | Medium\* | -| crit_path_routed_wirelength | The routed wirelength at the relaxed channel width | Medium | -| critical_path_delay | The critical path delay at the relaxed channel width | Medium-High | +| Metric | Meaning | Sensitivity | +|---------------------------------|------------------------------------------------------------------------------|-------------| +| num_pre_packed_blocks | Number of primitive netlist blocks (after tech. mapping, before packing) | Low | +| num_post_packed_blocks | Number of Clustered Blocks (after packing) | Medium | +| device_grid_tiles | FPGA size in grid tiles | Low-Medium | +| min_chan_width | The minimum routable channel width | Medium\* | +| crit_path_routed_wirelength | The routed wirelength at the relaxed channel width | Medium | +| NoC_agg_bandwidth\** | The total link bandwidth utilized by all traffic flows | Low | +| NoC_latency\** | The total time of traffic flow data transfer (summed over all traffic flows) | Low | +| NoC_latency_constraints_cost\** | The total number of traffic flow latency constraints | Low | \* By default, VPR attempts to find the minimum routable channel width; it then performs routing at a relaxed (e.g. 1.3x minimum) channel width. At minimum channel width routing congestion can distort the true timing/wirelength characteristics. Combined with the fact that most FPGA architectures are built with an abundance of routing, post-routing metrics are usually only evaluated at the relaxed channel width. +\** NoC-related metrics are only reported when --noc option is enabled. + Run-time/Memory Usage Metrics: | Metric | Meaning | Sensitivity | @@ -493,7 +497,7 @@ k6_frac_N10_frac_chain_mem32K_40nm.xml boundtop.v common 9f591f6- k6_frac_N10_frac_chain_mem32K_40nm.xml ch_intrinsics.v common 9f591f6-dirty success 363 493 270 247 10 10 17 99 130 1 0 1792 1.86527 -194.602 -1.86527 46 1562 13 1438 20 2.4542 -226.033 -2.4542 0 0 3.92691e+06 1.4642e+06 259806. 2598.06 333135. 3331.35 0.03 0.01 -1 -1 -1 0.46 0.31 0.94 0.09 2.59 62684 8672 32940 ``` -### Example: Titan Benchmarks QoR Measurements +### Example: Titan Benchmarks QoR Measurement The [Titan benchmarks](https://docs.verilogtorouting.org/en/latest/vtr/benchmarks/#titan-benchmarks) are a group of large benchmark circuits from a wide range of applications, which are compatible with the VTR project. The are typically used as post-technology mapped netlists which have been pre-synthesized with Quartus. @@ -511,7 +515,7 @@ $ make get_titan_benchmarks #Move to the task directory $ cd vtr_flow/tasks -#Run the VTR benchmarks +#Run the Titan benchmarks $ ../scripts/run_vtr_task.py regression_tests/vtr_reg_nightly_test2/titan_quick_qor #Several days later... they complete @@ -528,6 +532,44 @@ stratixiv_arch.timing.xml stereo_vision_stratixiv_arch_timing.blif 0208312 stratixiv_arch.timing.xml cholesky_mc_stratixiv_arch_timing.blif 0208312 success 140214 108592 67410 5444 121 90 -1 111 151 -1 -1 5221059 8.16972 -454610 -8.16972 1518597 15 0 0 2.38657e+08 21915.3 9.34704 -531231 -9.34704 0 0 211.12 364.32 490.24 6356252 -1 -1 ``` +### Example: NoC Benchmarks QoR Measurements +NoC benchmarks currently include synthetic and MLP benchmarks. Synthetic benchmarks have various NoC traffic patters, +bandwidth utilization, and latency requirements. High-quality NoC router placement solutions for these benchmarks are +known. By comparing the known solutions with NoC router placement results, the developer can evaluate the sanity of +the NoC router placement algorithm. MLP benchmarks are the only realistic netlists included in this benchmark set. + +Based on the number of NoC routers in a synthetic benchmark, it is run on one of two different architectures. All MLP +benchmarks are run on an FPGA architecture with 16 NoC routers. Post-technology mapped netlists (blif files) +for synthetic benchmarks are added to the VTR project. However, MLP blif files are very large and should be downloaded +separately. + +Since NoC benchmarks target different FPGA architectures, they are run as different circuits. A typical way to run all +NoC benchmarks is to run a task list and gather QoR data form different tasks: + +#### Running and Integrating the NoC Benchmarks with VTR +```shell +#From the VTR root + +#Download and integrate NoC MLP benchmarks into the VTR source tree +$ make get_noc_mlp_benchmarks + +#Move to the task directory +$ cd vtr_flow + +#Run the VTR benchmarks +$ scripts/run_vtr_task.py -l tasks/noc_qor/task_list.txt + +#Several days later... they complete + +#NoC benchmarks are run as several different tasks. Therefore, QoR results should be gathered from multiple directories, +#one for each task. +$ head -5 tasks/noc_qor/large_complex_synthetic/latest/parse_results.txt +$ head -5 tasks/noc_qor/large_simple_synthetic/latest/parse_results.txt +$ head -5 tasks/noc_qor/small_complex_synthetic/latest/parse_results.txt +$ head -5 tasks/noc_qor/small_simple_synthetic/latest/parse_results.txt +$ head -5 tasks/noc_qor/MLP/latest/parse_results.txt +``` + ### Example: Koios Benchmarks QoR Measurement The [Koios benchmarks](https://github.com/verilog-to-routing/vtr-verilog-to-routing/tree/master/vtr_flow/benchmarks/verilog/koios) are a group of Deep Learning benchmark circuits distributed with the VTR project. diff --git a/doc/README b/doc/README index aac93b8dc63..490c3cd8297 100644 --- a/doc/README +++ b/doc/README @@ -4,7 +4,7 @@ Overview The VTR documentation is generated using sphinx, a python based documentation generator. The documentation itself is written in re-structured text (files ending in .rst), which -is a lightwieght mark-up language for text documents. +is a lightweight mark-up language for text documents. Currently VTR's documenation is automatically built by https://readthedocs.org/projects/vtr/ and is served at: @@ -36,7 +36,7 @@ from the main documentation directory (i.e. /doc). This will produce the output html in the _build directory. -You can then view the resulting documention with the web-browser of your choice. +You can then view the resulting documentation with the web-browser of your choice. For instance: $ firefox _build/html/index.html diff --git a/doc/src/vtr/benchmarks.rst b/doc/src/vtr/benchmarks.rst index d30ba6119f3..bdd9062b919 100644 --- a/doc/src/vtr/benchmarks.rst +++ b/doc/src/vtr/benchmarks.rst @@ -191,7 +191,20 @@ The SymbiFlow benchmarks can be downloaded and extracted by running the followin cd $VTR_ROOT make get_symbiflow_benchmarks -Once downloaded and extracted, benchmarks are provided as post-synthesized eblif files under: :: +Once downloaded and extracted, benchmarks are provided as post-synthesized blif files under: :: $VTR_ROOT/vtr_flow/benchmarks/symbiflow +.. _noc_benchmarks: + +NoC Benchmarks +---------------- +NoC benchmarks are composed of synthetic and MLP benchmarks and target NoC-enhanced FPGA architectures. Synthetic +benchmarks include a wide variety of traffic flow patters and are divided into two groups: 1) simple and 2) complex +benchmarks. As their names imply, simple benchmarks use very simple and small logic modules connected to NoC routers, +while complex benchmarks implement more complicated functionalities like encryption. These benchmarks do not come from +real application domains. On the other hand, MLP benchmarks include modules that perform matrix-vector multiplication +and move data. Pre-synthesized netlists for the synthetic benchmarks are added to VTR project, but MLP netlists should +be downloaded separately. + +.. note:: The NoC MLP benchmarks are not included with the VTR release (due to their size). However they can be downloaded and extracted by running ``make get_noc_mlp_benchmarks`` from the root of the VTR tree. They can also be `downloaded manually `_. \ No newline at end of file diff --git a/vtr_flow/benchmarks/noc/Large_Designs/MLP/Readme.txt b/vtr_flow/benchmarks/noc/Large_Designs/MLP/Readme.txt index f36dcccf7ab..b9ec2f3f1c9 100644 --- a/vtr_flow/benchmarks/noc/Large_Designs/MLP/Readme.txt +++ b/vtr_flow/benchmarks/noc/Large_Designs/MLP/Readme.txt @@ -12,7 +12,9 @@ Benchmark Structure: |---.flows - Is the NoC traffic flows file associated with the given benchmark (A benchmark can have multiple traffic flows files) |---verilog - Contains design files needed to generate the netlist file for the benchmark - |---shared_verilog - Contains design files needed by all benchmarks to generate thier netlist files + |---shared_verilog - Contains design files needed by all benchmarks to generate their netlist files + |---blif_files - Contains symbolic links to all .blif files that exist in this directory + |---flow_files - Contains symbolic links to all .flow files that exist in this directory Running the benchmarks: Pre-requisite @@ -20,7 +22,7 @@ Running the benchmarks: - Set 'VTR_ROOT' as environment variable pointing to the location of the VTR source tree - Ensure python version 3.6.9 or higher is installed - Copy over the netlist files from 'https://drive.google.com/drive/folders/135QhmfgUaGnK2ZEfbfEXtdm1BfS7YoG7?usp=sharing'. - The file structure in the previous link is similiar to structure found in '$VTR_ROOT/vtr_flow/benchmarks/noc/Large_Designs/MLP'. + The file structure in the previous link is similar to structure found in '$VTR_ROOT/vtr_flow/benchmarks/noc/Large_Designs/MLP'. Place the netlist files in the appropriate folder locations. Running single instance: @@ -48,7 +50,7 @@ Running the benchmarks: -vpr_executable $VTR_ROOT/build/vpr/vpr --device EP4SE820 -flow_file $VTR_ROOT/vtr_flow/benchmarks/noc/Large_Designs/MLP/MLP_1/mlp_1.flows \ -noc_routing_algorithm xy_routing -number_of_seeds 5 -number_of_threads 1 -route - - The above command will generate an output file in the run directory that contains all the place and route metrics. This is a txt file with a name which matches the + - The above command will generate an output file in the run directory that contains all the place and route metrics. This is a txt file with a name which matches the flows file provided. So for the command shown above the output file is 'mlp_1.txt' Special benchmarks: @@ -64,8 +66,13 @@ Running the benchmarks: of the NoC routers needs to be locked. A - To run a single instance of this benchmark, pass in the following command line parameter and its value to the command shown above: '--fix_clusters $VTR_ROOT/vtr_flow/benchmarks/noc/Large_Designs/MLP/MLP_2_phase_optimization/MLP_2_phase_optimization_step_2/MLP_two_phase_optimization_step_two_constraints.place' - - To run the benchmarkusing the automated script just pass in the following command line parameter and its value to the script command above: + - To run the benchmarking the automated script just pass in the following command line parameter and its value to the script command above: '-fix_clusters $VTR_ROOT/vtr_flow/benchmarks/noc/Large_Designs/MLP/MLP_2_phase_optimization/MLP_2_phase_optimization_step_2/MLP_two_phase_optimization_step_two_constraints.place' + + Running VTR tasks: + - All synthetic benchmarks can be run as VTR tasks. Example tasks are provided in vtr_flow/tasks/noc_qor + - Instructions on how to run VTR tasks to measure QoR for NoC benchmarks in available in VTR Developer Guide. + Expected run time: - These benchmarks are quite large so the maximum expected run time for a single run is a few hours - To speed up the run time with multiple VPR runs the thread count can be increased from 1. Set thread count equal to number seeds for fastest run time. diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/Readme.txt b/vtr_flow/benchmarks/noc/Synthetic_Designs/Readme.txt index 820b160caef..45963d5d84d 100644 --- a/vtr_flow/benchmarks/noc/Synthetic_Designs/Readme.txt +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/Readme.txt @@ -8,7 +8,9 @@ Benchmark Structure: |---.flows - Is the NoC traffic flows file associated with the given benchmark (A benchmark can have multiple traffic flows files) |---verilog - Contains design files needed to generate the netlist file for the benchmark - |---shared_verilog - Contains design files needed by all benchmarks to generate thier netlist files + |---shared_verilog - Contains design files needed by all benchmarks to generate their netlist files + |---blif_files - Contains symbolic links to all .blif files that exist in this directory + |---flow_files - Contains symbolic links to all .flow files that exist in this directory Running the benchmarks: Pre-requisite @@ -42,7 +44,11 @@ Running the benchmarks: -noc_routing_algorithm xy_routing -noc_swap_percentage 40 -number_of_seeds 5 -number_of_threads 1 - The above command will generate an output file in the run directory that contains all the place and route metrics. This is a txt file with a name which matches the - the flows file provided. So for the command shown above the outout file is 'complex_2_noc_1D_chain.txt' + flows file provided. So for the command shown above the output file is 'complex_2_noc_1D_chain.txt' + + Running VTR tasks: + - All synthetic benchmarks can be run as VTR tasks. Example tasks are provided in vtr_flow/tasks/noc_qor + - Instructions on how to run VTR tasks to measure QoR for NoC benchmarks in available in VTR Developer Guide. Expected run time: - These benchmarks are quite small so the maximum expected run time for a single run is ~30 minutes diff --git a/vtr_flow/benchmarks/titan_blif/README.rst b/vtr_flow/benchmarks/titan_blif/README.rst index 54d19d81694..a9ace032b69 100644 --- a/vtr_flow/benchmarks/titan_blif/README.rst +++ b/vtr_flow/benchmarks/titan_blif/README.rst @@ -1,10 +1,10 @@ -The `Titan ` benchmarks are distributed seperately from VTR due to their large size. +The `Titan ` benchmarks are distributed separately from VTR due to their large size. -The Titan repo is located under /home/kmurray/trees/titan on the U of T EECG network. Memebers of Vaughn Betz's research lab have read/write privileges. +The Titan repo is located under /home/kmurray/trees/titan on the U of T EECG network. Members of Vaughn Betz's research lab have read/write privileges. This repo is where the Titan flow is developed and where any changes to it should be made. -In addition to the titan benchmarks, this repo contains scripts that are used ingeneration of the architecture description for Stratix IV. +In addition to the titan benchmarks, this repo contains scripts that are used in generation of the architecture description for Stratix IV. More specifically, they contain scripts that generate memory blocks & complex switch blocks. From 64ff25a395778b9c1dd03f42f5484dcc7cc885ef Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Sun, 21 Jan 2024 18:39:51 -0500 Subject: [PATCH 17/18] fixed pylint errors --- vtr_flow/scripts/download_noc_mlp.py | 53 +++++++++++------------- vtr_flow/scripts/download_titan.py | 3 +- vtr_flow/scripts/python_libs/vtr/task.py | 12 ++++-- 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/vtr_flow/scripts/download_noc_mlp.py b/vtr_flow/scripts/download_noc_mlp.py index 3660dfd2543..c483da753df 100755 --- a/vtr_flow/scripts/download_noc_mlp.py +++ b/vtr_flow/scripts/download_noc_mlp.py @@ -1,10 +1,15 @@ #!/usr/bin/env python3 + +""" + Module for downloading and extracting NoC MLP benchmarks +""" + import sys import os import argparse +import urllib.request import urllib.parse -import urllib.request, urllib.parse, urllib.error -import urllib.request, urllib.error, urllib.parse +import urllib.error import math import textwrap import tarfile @@ -12,23 +17,19 @@ import shutil import errno - -class DownloadError(Exception): - pass - - -class ChecksumError(Exception): - pass - - class ExtractionError(Exception): - pass + """ + Raised when extracting the downlaoded file fails + """ URL_MIRRORS = {"eecg": "https://www.eecg.utoronto.ca/~vaughn/titan/"} def parse_args(): + """ + Parses command line arguments + """ description = textwrap.dedent( """ Download and extract a MLP NoC benchmarks into a @@ -38,7 +39,8 @@ def parse_args(): does nothing (unless --force is specified). """ ) - parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, + description=description) parser.add_argument( "--vtr_flow_dir", @@ -64,6 +66,9 @@ def parse_args(): def main(): + """ + main() implementation + """ args = parse_args() @@ -83,10 +88,6 @@ def main(): print("Extracting {}".format(tar_gz_filename)) extract_to_vtr_flow_dir(args, tar_gz_filename) - - except DownloadError as e: - print("Failed to download:", e) - sys.exit(1) except ExtractionError as e: print("Failed to extract NoC MLP benchmarks release:", e) sys.exit(3) @@ -124,17 +125,11 @@ def extract_to_vtr_flow_dir(args, tar_gz_filename): benchmarks_dir = os.path.join(args.vtr_flow_dir, "benchmarks") mlp_benchmarks_dir = os.path.join(benchmarks_dir, "noc/Large_Designs/MLP") - if not args.force: # Check that all expected directories exist - expected_dirs = [ - args.vtr_flow_dir, - benchmarks_dir, - mlp_benchmarks_dir, - ] - for dir in expected_dirs: - if not os.path.isdir(dir): - raise ExtractionError("{} should be a directory".format(dir)) + for directory in [args.vtr_flow_dir, benchmarks_dir, mlp_benchmarks_dir]: + if not os.path.isdir(directory): + raise ExtractionError("{} should be a directory".format(directory)) # Create a temporary working directory tmpdir = tempfile.mkdtemp(suffix="download_NoC_MLP", dir= os.path.abspath(".")) @@ -143,13 +138,13 @@ def extract_to_vtr_flow_dir(args, tar_gz_filename): with tarfile.open(tar_gz_filename, "r:gz") as tar: tar.extractall(tmpdir) tmp_source_blif_dir = os.path.join(tmpdir, "MLP_Benchmark_Netlist_Files") - for root, dirs, files in os.walk(tmp_source_blif_dir): + for root, _, files in os.walk(tmp_source_blif_dir): for file in files: source_file = os.path.join(root, file) relative_path = os.path.relpath(source_file, tmp_source_blif_dir) destination_file = os.path.join(mlp_benchmarks_dir, relative_path) os.makedirs(os.path.dirname(destination_file), exist_ok=True) - shutil.copy2(source_file, destination_file) + shutil.copy2(source_file, destination_file) # Create symbolic links to blif files find_and_link_files(mlp_benchmarks_dir, ".blif", "blif_files") @@ -173,7 +168,7 @@ def find_and_link_files(base_path, target_extension, link_folder_name): os.makedirs(link_folder_path, exist_ok=True) # Walk through all subdirectories - for root, dirs, files in os.walk(base_path): + for root, _, files in os.walk(base_path): if root == link_folder_path: continue diff --git a/vtr_flow/scripts/download_titan.py b/vtr_flow/scripts/download_titan.py index 84e37d4d985..cf025dc38ab 100755 --- a/vtr_flow/scripts/download_titan.py +++ b/vtr_flow/scripts/download_titan.py @@ -41,7 +41,8 @@ def parse_args(): does nothing (unless --force is specified). """ ) - parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, + description=description) parser.add_argument( "--titan_version", default="2.0.0", help="Titan release version to download" diff --git a/vtr_flow/scripts/python_libs/vtr/task.py b/vtr_flow/scripts/python_libs/vtr/task.py index 1e547a6f456..8959d836ea9 100644 --- a/vtr_flow/scripts/python_libs/vtr/task.py +++ b/vtr_flow/scripts/python_libs/vtr/task.py @@ -47,7 +47,7 @@ def __init__( pass_requirements_file=None, sdc_dir=None, noc_traffic_list_type="outer_product", - noc_traffic_list_add=[None], + noc_traffic_list_add=None, noc_traffics_dir=None, place_constr_dir=None, qor_parse_file=None, @@ -73,7 +73,7 @@ def __init__( self.pass_requirements_file = pass_requirements_file self.sdc_dir = sdc_dir self.noc_traffic_list_type = noc_traffic_list_type - self.noc_traffics = noc_traffic_list_add + self.noc_traffics = [None] if noc_traffic_list_add is None else noc_traffic_list_add self.noc_traffic_dir = noc_traffics_dir self.place_constr_dir = place_constr_dir self.qor_parse_file = qor_parse_file @@ -480,11 +480,15 @@ def create_jobs(args, configs, after_run=False) -> List[Job]: combinations = list(itertools.product(config.circuits, config.noc_traffics)) elif config.noc_traffic_list_type == "per_circuit": assert len(config.circuits) == len(config.noc_traffics) - combinations = [(circuit, noc_traffic) for circuit, noc_traffic in zip(config.circuits, config.noc_traffics)] + combinations = zip(config.circuits, config.noc_traffics) else: assert False, "Invalid noc_traffic_list_type" - combinations = [(arch, circuit, noc_traffic) for arch in config.archs for circuit, noc_traffic in combinations] + combinations = [ + (arch, circ, traffic_flow) + for arch in config.archs + for circ, traffic_flow in combinations + ] for arch, circuit, noc_traffic in combinations: golden_results = load_parse_results( From 844b9d29b363ed32daae4e7097b76600c0837c01 Mon Sep 17 00:00:00 2001 From: soheilshahrouz Date: Mon, 22 Jan 2024 19:29:54 -0500 Subject: [PATCH 18/18] applied pr comments --- README.developers.md | 2 +- vtr_flow/benchmarks/noc/Large_Designs/MLP/Readme.txt | 1 + vtr_flow/benchmarks/noc/Synthetic_Designs/Readme.txt | 1 + vtr_flow/scripts/python_libs/vtr/task.py | 5 +++++ vtr_flow/tasks/noc_qor/MLP/config/config.txt | 5 ++++- .../tasks/noc_qor/large_complex_synthetic/config/config.txt | 5 ++++- .../tasks/noc_qor/large_simple_synthetic/config/config.txt | 5 ++++- .../tasks/noc_qor/small_complex_synthetic/config/config.txt | 5 ++++- .../tasks/noc_qor/small_simple_synthetic/config/config.txt | 5 ++++- 9 files changed, 28 insertions(+), 6 deletions(-) diff --git a/README.developers.md b/README.developers.md index 917954a6610..411c8653d90 100644 --- a/README.developers.md +++ b/README.developers.md @@ -395,7 +395,7 @@ Implementation Quality Metrics: | crit_path_routed_wirelength | The routed wirelength at the relaxed channel width | Medium | | NoC_agg_bandwidth\** | The total link bandwidth utilized by all traffic flows | Low | | NoC_latency\** | The total time of traffic flow data transfer (summed over all traffic flows) | Low | -| NoC_latency_constraints_cost\** | The total number of traffic flow latency constraints | Low | +| NoC_latency_constraints_cost\** | Total number of traffic flows that meet their latency constraints | Low | \* By default, VPR attempts to find the minimum routable channel width; it then performs routing at a relaxed (e.g. 1.3x minimum) channel width. At minimum channel width routing congestion can distort the true timing/wirelength characteristics. Combined with the fact that most FPGA architectures are built with an abundance of routing, post-routing metrics are usually only evaluated at the relaxed channel width. diff --git a/vtr_flow/benchmarks/noc/Large_Designs/MLP/Readme.txt b/vtr_flow/benchmarks/noc/Large_Designs/MLP/Readme.txt index b9ec2f3f1c9..ba8002b85ec 100644 --- a/vtr_flow/benchmarks/noc/Large_Designs/MLP/Readme.txt +++ b/vtr_flow/benchmarks/noc/Large_Designs/MLP/Readme.txt @@ -72,6 +72,7 @@ Running the benchmarks: Running VTR tasks: - All synthetic benchmarks can be run as VTR tasks. Example tasks are provided in vtr_flow/tasks/noc_qor - Instructions on how to run VTR tasks to measure QoR for NoC benchmarks in available in VTR Developer Guide. + - Link to VTR Developer Guide: https://docs.verilogtorouting.org/en/latest/README.developers/#example-noc-benchmarks-qor-measurements Expected run time: - These benchmarks are quite large so the maximum expected run time for a single run is a few hours diff --git a/vtr_flow/benchmarks/noc/Synthetic_Designs/Readme.txt b/vtr_flow/benchmarks/noc/Synthetic_Designs/Readme.txt index 45963d5d84d..69e11b8cd07 100644 --- a/vtr_flow/benchmarks/noc/Synthetic_Designs/Readme.txt +++ b/vtr_flow/benchmarks/noc/Synthetic_Designs/Readme.txt @@ -49,6 +49,7 @@ Running the benchmarks: Running VTR tasks: - All synthetic benchmarks can be run as VTR tasks. Example tasks are provided in vtr_flow/tasks/noc_qor - Instructions on how to run VTR tasks to measure QoR for NoC benchmarks in available in VTR Developer Guide. + - Link to VTR Developer Guide: https://docs.verilogtorouting.org/en/latest/README.developers/#example-noc-benchmarks-qor-measurements Expected run time: - These benchmarks are quite small so the maximum expected run time for a single run is ~30 minutes diff --git a/vtr_flow/scripts/python_libs/vtr/task.py b/vtr_flow/scripts/python_libs/vtr/task.py index 8959d836ea9..c382501e6bd 100644 --- a/vtr_flow/scripts/python_libs/vtr/task.py +++ b/vtr_flow/scripts/python_libs/vtr/task.py @@ -476,6 +476,11 @@ def create_jobs(args, configs, after_run=False) -> List[Job]: """ jobs = [] for config in configs: + # A task usually runs the CAD flow for a cartesian product of circuits and architectures. + # NoC traffic flow files might need to be specified per circuit. If this is the case, + # circuits and traffic flow files are paired. Otherwise, a cartesian product is performed + # between circuits and traffic flow files. In both cases, the result is cartesian multiplied + # with given architectures. if config.noc_traffic_list_type == "outer_product": combinations = list(itertools.product(config.circuits, config.noc_traffics)) elif config.noc_traffic_list_type == "per_circuit": diff --git a/vtr_flow/tasks/noc_qor/MLP/config/config.txt b/vtr_flow/tasks/noc_qor/MLP/config/config.txt index 7561fa0e3c5..90240033db7 100644 --- a/vtr_flow/tasks/noc_qor/MLP/config/config.txt +++ b/vtr_flow/tasks/noc_qor/MLP/config/config.txt @@ -11,7 +11,10 @@ archs_dir=arch/noc/mesh_noc_topology # Path to directory of NoC Traffic Patterns to use noc_traffics_dir=benchmarks/noc/Large_Designs/MLP/traffic_flow_files/ -# Traffic flow files are added per circuit +# Traffic flow files are added per circuit. +# By default, the task performs a cartesian product between circuits and traffic flow files. +# Since each circuit is compatible with specific traffic flow files, we need to specify +# traffic flow files for each circuit separately. noc_traffic_list_type=per_circuit # Add circuits to list to sweep diff --git a/vtr_flow/tasks/noc_qor/large_complex_synthetic/config/config.txt b/vtr_flow/tasks/noc_qor/large_complex_synthetic/config/config.txt index 55e2261866c..cc574139a0f 100644 --- a/vtr_flow/tasks/noc_qor/large_complex_synthetic/config/config.txt +++ b/vtr_flow/tasks/noc_qor/large_complex_synthetic/config/config.txt @@ -11,7 +11,10 @@ archs_dir=arch/noc/mesh_noc_topology # Path to directory of NoC Traffic Patterns to use noc_traffics_dir=benchmarks/noc/Synthetic_Designs/traffic_flow_files/ -# Traffic flow files are added per circuit +# Traffic flow files are added per circuit. +# By default, the task performs a cartesian product between circuits and traffic flow files. +# Since each circuit is compatible with specific traffic flow files, we need to specify +# traffic flow files for each circuit separately. noc_traffic_list_type=per_circuit # Add circuits and traffic flows to list to sweep diff --git a/vtr_flow/tasks/noc_qor/large_simple_synthetic/config/config.txt b/vtr_flow/tasks/noc_qor/large_simple_synthetic/config/config.txt index beee0c0912f..5fb6b5234d8 100644 --- a/vtr_flow/tasks/noc_qor/large_simple_synthetic/config/config.txt +++ b/vtr_flow/tasks/noc_qor/large_simple_synthetic/config/config.txt @@ -11,7 +11,10 @@ archs_dir=arch/noc/mesh_noc_topology # Path to directory of NoC Traffic Patterns to use noc_traffics_dir=benchmarks/noc/Synthetic_Designs/traffic_flow_files/ -# Traffic flow files are added per circuit +# Traffic flow files are added per circuit. +# By default, the task performs a cartesian product between circuits and traffic flow files. +# Since each circuit is compatible with specific traffic flow files, we need to specify +# traffic flow files for each circuit separately. noc_traffic_list_type=per_circuit # Add circuits and traffic flows to list to sweep diff --git a/vtr_flow/tasks/noc_qor/small_complex_synthetic/config/config.txt b/vtr_flow/tasks/noc_qor/small_complex_synthetic/config/config.txt index b1365a0a27d..2eb7fb508f9 100644 --- a/vtr_flow/tasks/noc_qor/small_complex_synthetic/config/config.txt +++ b/vtr_flow/tasks/noc_qor/small_complex_synthetic/config/config.txt @@ -11,7 +11,10 @@ archs_dir=arch/noc/mesh_noc_topology # Path to directory of NoC Traffic Patterns to use noc_traffics_dir=benchmarks/noc/Synthetic_Designs/traffic_flow_files/ -# Traffic flow files are added per circuit +# Traffic flow files are added per circuit. +# By default, the task performs a cartesian product between circuits and traffic flow files. +# Since each circuit is compatible with specific traffic flow files, we need to specify +# traffic flow files for each circuit separately. noc_traffic_list_type=per_circuit # Add circuits and traffic flows to list to sweep diff --git a/vtr_flow/tasks/noc_qor/small_simple_synthetic/config/config.txt b/vtr_flow/tasks/noc_qor/small_simple_synthetic/config/config.txt index b2cc899fbf1..d1f70e6f28a 100644 --- a/vtr_flow/tasks/noc_qor/small_simple_synthetic/config/config.txt +++ b/vtr_flow/tasks/noc_qor/small_simple_synthetic/config/config.txt @@ -11,7 +11,10 @@ archs_dir=arch/noc/mesh_noc_topology # Path to directory of NoC Traffic Patterns to use noc_traffics_dir=benchmarks/noc/Synthetic_Designs/traffic_flow_files/ -# Traffic flow files are added per circuit +# Traffic flow files are added per circuit. +# By default, the task performs a cartesian product between circuits and traffic flow files. +# Since each circuit is compatible with specific traffic flow files, we need to specify +# traffic flow files for each circuit separately. noc_traffic_list_type=per_circuit # Add circuits and traffic flows to list to sweep