diff --git a/f4pga/__init__.py b/f4pga/__init__.py index 6e90202..cc217e7 100755 --- a/f4pga/__init__.py +++ b/f4pga/__init__.py @@ -619,18 +619,16 @@ def make_flow_config(project_flow_cfg: ProjectFlowConfig, part_name: str) -> Flo scan_modules(str(ROOT)) - platform_path = ROOT / f'platforms/{platform}.yml' - if not platform_path.exists(): - raise F4PGAException( - message=f'The platform flow definition file {platform_path} for the platform ' \ - f'{platform} cannot be found.' - ) - with platform_path.open('r') as rfptr: - flow_cfg = FlowConfig( - project_flow_cfg, - FlowDefinition(yaml_load(rfptr, yaml_loader), r_env), - part_name - ) + with (ROOT / 'platforms.yml').open('r') as rfptr: + platforms = yaml_load(rfptr, yaml_loader) + if platform not in platforms: + raise F4PGAException(message=f'Flow definition for platform <{platform}> cannot be found!') + + flow_cfg = FlowConfig( + project_flow_cfg, + FlowDefinition(platforms[platform], r_env), + part_name + ) if len(flow_cfg.stages) == 0: raise F4PGAException(message = 'Platform flow does not define any stage') diff --git a/f4pga/platforms.yml b/f4pga/platforms.yml new file mode 100644 index 0000000..4a21494 --- /dev/null +++ b/f4pga/platforms.yml @@ -0,0 +1,1093 @@ +# Copyright (C) 2022 F4PGA Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + + +xc7a50t: + + values: + device: xc7a50t_test + bitstream_device: artix7 + pinmap: '${shareDir}/arch/xc7a50t_test/vpr_grid_map.csv' + arch_def: '${shareDir}/arch/xc7a50t_test/arch.timing.xml' + rr_graph_lookahead_bin: '${shareDir}/arch/xc7a50t_test/rr_graph_xc7a50t_test.lookahead.bin' + rr_graph_real_bin: '${shareDir}/arch/xc7a50t_test/rr_graph_xc7a50t_test.rr_graph.real.bin' + vpr_place_delay: '${shareDir}/arch/xc7a50t_test/rr_graph_xc7a50t_test.place_delay.bin' + vpr_grid_layout_name: xc7a50t-test + vpr_options: + max_router_iterations: 500 + routing_failure_predictor: 'off' + router_high_fanout_threshold: -1 + constant_net_method: route + route_chan_width: 500 + router_heap: bucket + clock_modeling: route + place_delta_delay_matrix_calculation_method: dijkstra + place_delay_model: delta + router_lookahead: extended_map + check_route: quick + strict_checks: 'off' + allow_dangling_combinational_nodes: 'on' + disable_errors: 'check_unbuffered_edges:check_route' + congested_routing_iteration_threshold: '0.8' + incremental_reroute_delay_ripup: 'off' + base_cost_type: delay_normalized_length_bounded + bb_factor: 10 + acc_fac: '0.7' + astar_fac: '1.8' + initial_pres_fac: '2.828' + pres_fac_mult: '1.2' + check_rr_graph: 'off' + suppress_warnings: >- + ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment:calculate_average_switch + + stages: + mk_build_dir: + module: 'common:mkdirs' + params: + build_dir: 'build/${device}' + synth: + module: 'common:synth' + params: + takes: + - xdc? + produces: + - sdc + - synth_v + prod_meta: + sdc: Standard Design Constraints file for X7 series. + values: + tcl_scripts: '${shareDir}/scripts/xc7' + yosys_tcl_env: + USE_ROI: 'FALSE' + TOP: '${top}' + OUT_JSON: '${:json}' + OUT_SDC: '${:sdc}' + PART_JSON: '${prjxray_db}/${bitstream_device}/${part_name}/part.json' + OUT_FASM_EXTRA: '${:fasm_extra}' + TECHMAP_PATH: '${shareDir}/techmaps/xc7_vpr/techmap' + OUT_SYNTH_V: '${:synth_v}' + SYNTH_JSON: '${:synth_json}' + OUT_EBLIF: '${:eblif}' + PYTHON3: '${python3}' + UTILS_PATH: '${shareDir}/scripts' + INPUT_XDC_FILES: '${:xdc}' + pack: + module: 'common:pack' + ioplace: + module: 'common:generic_script_wrapper' + params: + stage_name: ioplace + interpreter: '${python3}' + script: '${shareDir}/scripts/prjxray_create_ioplace.py' + outputs: + io_place: + mode: stdout + target: '${:net[noext]}.ioplace' + inputs: + blif: '${:eblif}' + map: '${shareDir}/arch/${device}/${part_name}/pinmap.csv' + net: '${:net}' + pcf: '${:pcf?}' + $PYTHONPATH: '${binDir}/python/' + place_constraints: + module: 'common:generic_script_wrapper' + params: + stage_name: place_constraints + interpreter: '${python3}' + script: '${shareDir}/scripts/prjxray_create_place_constraints.py' + outputs: + place_constraints: + mode: stdout + target: '${:net[noext]}.preplace' + inputs: + net: '${:net}' + arch: '${shareDir}/arch/${device}/arch.timing.xml' + blif: '${:eblif}' + input: '${:io_place}' + db_root: '${prjxray_db}' + part: '${part_name}' + vpr_grid_map: '${shareDir}/arch/${device}/vpr_grid_map.csv' + $PYTHONPATH: '${binDir}/python/' + place: + module: 'common:place' + route: + module: 'common:route' + fasm: + module: 'common:fasm' + bitstream: + module: 'common:generic_script_wrapper' + params: + stage_name: bitstream + script: xcfasm + outputs: + bitstream: + mode: file + file: '${:fasm[noext]}.bit' + target: '${:fasm[noext]}.bit' + inputs: + db-root: '${prjxray_db}/${bitstream_device}' + part: '${part_name}' + part_file: '${prjxray_db}/${bitstream_device}/${part_name}/part.yaml' + sparse: true + emit_pudc_b_pullup: true + fn_in: '${:fasm}' + frm2bit: xc7frames2bit + bit_out: '${:fasm[noext]}.bit' + + +xc7a100t: + + values: + device: xc7a100t_test + bitstream_device: artix7 + pinmap: '${shareDir}/arch/xc7a100t_test/vpr_grid_map.csv' + arch_def: '${shareDir}/arch/xc7a100t_test/arch.timing.xml' + rr_graph_lookahead_bin: '${shareDir}/arch/xc7a100t_test/rr_graph_xc7a100t_test.lookahead.bin' + rr_graph_real_bin: '${shareDir}/arch/xc7a100t_test/rr_graph_xc7a100t_test.rr_graph.real.bin' + vpr_place_delay: '${shareDir}/arch/xc7a100t_test/rr_graph_xc7a100t_test.place_delay.bin' + vpr_grid_layout_name: xc7a100t-test + vpr_options: + max_router_iterations: 500 + routing_failure_predictor: 'off' + router_high_fanout_threshold: -1 + constant_net_method: route + route_chan_width: 500 + router_heap: bucket + clock_modeling: route + place_delta_delay_matrix_calculation_method: dijkstra + place_delay_model: delta + router_lookahead: extended_map + check_route: quick + strict_checks: 'off' + allow_dangling_combinational_nodes: 'on' + disable_errors: 'check_unbuffered_edges:check_route' + congested_routing_iteration_threshold: '0.8' + incremental_reroute_delay_ripup: 'off' + base_cost_type: delay_normalized_length_bounded + bb_factor: 10 + acc_fac: '0.7' + astar_fac: '1.8' + initial_pres_fac: '2.828' + pres_fac_mult: '1.2' + check_rr_graph: 'off' + suppress_warnings: >- + ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment:calculate_average_switch + + stages: + mk_build_dir: + module: 'common:mkdirs' + params: + build_dir: 'build/${device}' + synth: + module: 'common:synth' + params: + takes: + - xdc? + produces: + - sdc + - synth_v + prod_meta: + sdc: Standard Design Constraints file for X7 series. + values: + tcl_scripts: '${shareDir}/scripts/xc7' + yosys_tcl_env: + USE_ROI: 'FALSE' + TOP: '${top}' + OUT_JSON: '${:json}' + OUT_SDC: '${:sdc}' + PART_JSON: '${prjxray_db}/${bitstream_device}/${part_name}/part.json' + OUT_FASM_EXTRA: '${:fasm_extra}' + TECHMAP_PATH: '${shareDir}/techmaps/xc7_vpr/techmap' + OUT_SYNTH_V: '${:synth_v}' + SYNTH_JSON: '${:synth_json}' + OUT_EBLIF: '${:eblif}' + PYTHON3: '${python3}' + UTILS_PATH: '${shareDir}/scripts' + INPUT_XDC_FILES: '${:xdc}' + pack: + module: 'common:pack' + ioplace: + module: 'common:generic_script_wrapper' + params: + stage_name: ioplace + interpreter: '${python3}' + script: '${shareDir}/scripts/prjxray_create_ioplace.py' + outputs: + io_place: + mode: stdout + target: '${:net[noext]}.ioplace' + inputs: + blif: '${:eblif}' + map: '${shareDir}/arch/${device}/${part_name}/pinmap.csv' + net: '${:net}' + pcf: '${:pcf?}' + $PYTHONPATH: '${binDir}/python/' + place_constraints: + module: 'common:generic_script_wrapper' + params: + stage_name: place_constraints + interpreter: '${python3}' + script: '${shareDir}/scripts/prjxray_create_place_constraints.py' + outputs: + place_constraints: + mode: stdout + target: '${:net[noext]}.preplace' + inputs: + net: '${:net}' + arch: '${shareDir}/arch/${device}/arch.timing.xml' + blif: '${:eblif}' + input: '${:io_place}' + db_root: '${prjxray_db}' + part: '${part_name}' + vpr_grid_map: '${shareDir}/arch/${device}/vpr_grid_map.csv' + $PYTHONPATH: '${binDir}/python/' + place: + module: 'common:place' + route: + module: 'common:route' + fasm: + module: 'common:fasm' + bitstream: + module: 'common:generic_script_wrapper' + params: + stage_name: bitstream + script: xcfasm + outputs: + bitstream: + mode: file + file: '${:fasm[noext]}.bit' + target: '${:fasm[noext]}.bit' + inputs: + db-root: '${prjxray_db}/${bitstream_device}' + part: '${part_name}' + part_file: '${prjxray_db}/${bitstream_device}/${part_name}/part.yaml' + sparse: true + emit_pudc_b_pullup: true + fn_in: '${:fasm}' + frm2bit: xc7frames2bit + bit_out: '${:fasm[noext]}.bit' + + +xc7a200t: + + values: + device: xc7a200t_test + bitstream_device: artix7 + pinmap: '${shareDir}/arch/xc7a200t_test/vpr_grid_map.csv' + arch_def: '${shareDir}/arch/xc7a200t_test/arch.timing.xml' + rr_graph_lookahead_bin: '${shareDir}/arch/xc7a200t_test/rr_graph_xc7a200t_test.lookahead.bin' + rr_graph_real_bin: '${shareDir}/arch/xc7a200t_test/rr_graph_xc7a200t_test.rr_graph.real.bin' + vpr_place_delay: '${shareDir}/arch/xc7a200t_test/rr_graph_xc7a200t_test.place_delay.bin' + vpr_grid_layout_name: xc7a200t-test + vpr_options: + max_router_iterations: 500 + routing_failure_predictor: 'off' + router_high_fanout_threshold: -1 + constant_net_method: route + route_chan_width: 500 + router_heap: bucket + clock_modeling: route + place_delta_delay_matrix_calculation_method: dijkstra + place_delay_model: delta + router_lookahead: extended_map + check_route: quick + strict_checks: 'off' + allow_dangling_combinational_nodes: 'on' + disable_errors: 'check_unbuffered_edges:check_route' + congested_routing_iteration_threshold: '0.8' + incremental_reroute_delay_ripup: 'off' + base_cost_type: delay_normalized_length_bounded + bb_factor: 10 + acc_fac: '0.7' + astar_fac: '1.8' + initial_pres_fac: '2.828' + pres_fac_mult: '1.2' + check_rr_graph: 'off' + suppress_warnings: >- + ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment:calculate_average_switch + + stages: + mk_build_dir: + module: 'common:mkdirs' + params: + build_dir: 'build/${device}' + synth: + module: 'common:synth' + params: + takes: + - xdc? + produces: + - sdc + - synth_v + prod_meta: + sdc: Standard Design Constraints file for X7 series. + values: + tcl_scripts: '${shareDir}/scripts/xc7' + yosys_tcl_env: + USE_ROI: 'FALSE' + TOP: '${top}' + OUT_JSON: '${:json}' + OUT_SDC: '${:sdc}' + PART_JSON: '${prjxray_db}/${bitstream_device}/${part_name}/part.json' + OUT_FASM_EXTRA: '${:fasm_extra}' + TECHMAP_PATH: '${shareDir}/techmaps/xc7_vpr/techmap' + OUT_SYNTH_V: '${:synth_v}' + SYNTH_JSON: '${:synth_json}' + OUT_EBLIF: '${:eblif}' + PYTHON3: '${python3}' + UTILS_PATH: '${shareDir}/scripts' + INPUT_XDC_FILES: '${:xdc}' + pack: + module: 'common:pack' + ioplace: + module: 'common:generic_script_wrapper' + params: + stage_name: ioplace + interpreter: '${python3}' + script: '${shareDir}/scripts/prjxray_create_ioplace.py' + outputs: + io_place: + mode: stdout + target: '${:net[noext]}.ioplace' + inputs: + blif: '${:eblif}' + map: '${shareDir}/arch/${device}/${part_name}/pinmap.csv' + net: '${:net}' + pcf: '${:pcf?}' + $PYTHONPATH: '${binDir}/python/' + place_constraints: + module: 'common:generic_script_wrapper' + params: + stage_name: place_constraints + interpreter: '${python3}' + script: '${shareDir}/scripts/prjxray_create_place_constraints.py' + outputs: + place_constraints: + mode: stdout + target: '${:net[noext]}.preplace' + inputs: + net: '${:net}' + arch: '${shareDir}/arch/${device}/arch.timing.xml' + blif: '${:eblif}' + input: '${:io_place}' + db_root: '${prjxray_db}' + part: '${part_name}' + vpr_grid_map: '${shareDir}/arch/${device}/vpr_grid_map.csv' + $PYTHONPATH: '${binDir}/python/' + place: + module: 'common:place' + route: + module: 'common:route' + fasm: + module: 'common:fasm' + bitstream: + module: 'common:generic_script_wrapper' + params: + stage_name: bitstream + script: xcfasm + outputs: + bitstream: + mode: file + file: '${:fasm[noext]}.bit' + target: '${:fasm[noext]}.bit' + inputs: + db-root: '${prjxray_db}/${bitstream_device}' + part: '${part_name}' + part_file: '${prjxray_db}/${bitstream_device}/${part_name}/part.yaml' + sparse: true + emit_pudc_b_pullup: true + fn_in: '${:fasm}' + frm2bit: xc7frames2bit + bit_out: '${:fasm[noext]}.bit' + + +ql-eos-s3: + + values: + device: ql-eos-s3 + device_alt: ql-eos-s3_wlcsp + pinmap: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' + arch_def: '${shareDir}/arch/ql-eos-s3_wlcsp/arch.timing.xml' + rr_graph_lookahead_bin: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.lookahead.bin' + rr_graph_real_bin: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.rr_graph.real.bin' + vpr_place_delay: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.place_delay.bin' + vpr_grid_layout_name: ql-eos-s3 + vpr_options: + max_router_iterations: 500 + routing_failure_predictor: 'off' + router_high_fanout_threshold: -1 + constant_net_method: route + route_chan_width: 100 + clock_modeling: route + place_delay_model: delta_override + router_lookahead: extended_map + check_route: quick + strict_checks: 'off' + allow_dangling_combinational_nodes: 'on' + disable_errors: 'check_unbuffered_edges:check_route' + congested_routing_iteration_threshold: '0.8' + incremental_reroute_delay_ripup: 'off' + base_cost_type: delay_normalized_length_bounded + bb_factor: '10' + initial_pres_fac: '4.0' + check_rr_graph: 'off' + pack_high_fanout_threshold: 'PB-lOGIC:18' + suppress_warnings: >- + ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment + + stages: + mk_build_dir: + module: 'common:mkdirs' + params: + build_dir: 'build/${device}' + synth: + module: 'common:synth' + params: + takes: + - pcf? + produces: + - synth_v + values: + tcl_scripts: '${shareDir}/scripts/pp3' + read_verilog_args: [] + yosys_tcl_env: + OUT_JSON: '${:json}' + OUT_SYNTH_V: '${:synth_v}' + OUT_EBLIF: '${:eblif}' + OUT_FASM_EXTRA: '${:fasm_extra}' + TECHMAP_PATH: '${shareDir}/techmaps/pp3' + DEVICE_CELLS_SIM: '${shareDir}/arch/ql-eos-s3_wlcsp/cells/ram_sim.v' + DEVICE_CELLS_MAP: '${shareDir}/arch/ql-eos-s3_wlcsp/cells/ram_map.v' + PINMAP_FILE: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' + PCF_FILE: '${:pcf}' + PYTHON3: '${python3}' + UTILS_PATH: '${shareDir}/scripts' + prepare_sdc: + module: 'common:generic_script_wrapper' + params: + stage_name: prepare_sdc + interpreter: '${python3}' + script: '${shareDir}/scripts/process_sdc_constraints.py' + outputs: + sdc: + mode: file + file: '${:eblif[noext]}.sdc' + target: '${:eblif[noext]}.sdc' + inputs: + eblif: '${:eblif}' + sdc-in: '${:sdc-in}' + sdc-out: '${:eblif[noext]}.sdc' + pcf: '${:pcf}' + pin-map: '' + $PYTHONPATH: '${shareDir}/scripts/' + pack: + module: 'common:pack' + values: + device: ql-eos-s3 + device_alt: ql-eos-s3_wlcsp + pinmap: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' + arch_def: '${shareDir}/arch/ql-eos-s3_wlcsp/arch.timing.xml' + rr_graph_lookahead_bin: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.lookahead.bin' + rr_graph_real_bin: >- + ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.rr_graph.real.bin + vpr_place_delay: >- + ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.place_delay.bin + vpr_grid_layout_name: ql-eos-s3 + vpr_options: + write_block_usage: block_usage.json + max_router_iterations: 500 + routing_failure_predictor: 'off' + router_high_fanout_threshold: -1 + constant_net_method: route + route_chan_width: 100 + clock_modeling: route + place_delay_model: delta_override + router_lookahead: extended_map + check_route: quick + strict_checks: 'off' + allow_dangling_combinational_nodes: 'on' + disable_errors: 'check_unbuffered_edges:check_route' + congested_routing_iteration_threshold: '0.8' + incremental_reroute_delay_ripup: 'off' + base_cost_type: delay_normalized_length_bounded + bb_factor: '10' + initial_pres_fac: '4.0' + check_rr_graph: 'off' + pack_high_fanout_threshold: 'PB-lOGIC:18' + suppress_warnings: >- + ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment + ioplace: + module: 'common:generic_script_wrapper' + params: + stage_name: ioplace + interpreter: '${python3}' + script: '${shareDir}/scripts/pp3_create_ioplace.py' + outputs: + io_place: + mode: stdout + target: '${:eblif[noext]}.ioplace' + inputs: + blif: '${:eblif}' + net: '${:net}' + pcf: '${:pcf}' + map: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' + $PYTHONPATH: '${shareDir}/scripts/' + place_constraints: + module: 'common:generic_script_wrapper' + params: + stage_name: place_constraints + interpreter: '${python3}' + script: '${shareDir}/scripts/pp3_create_place_constraints.py' + outputs: + place_constraints: + mode: stdout + target: '${:eblif[noext]}_constraints.place' + inputs: + blif: '${:eblif}' + map: '${shareDir}/arch/ql-eos-s3_wlcsp/clkmap_${package}.csv' + i: '${:io_place}' + $PYTHONPATH: '${shareDir}/scripts/' + place: + module: 'common:place' + iomux_jlink: + module: 'common:generic_script_wrapper' + params: + stage_name: iomux_jlink + interpreter: '${python3}' + script: '${shareDir}/scripts/pp3_eos_s3_iomux_config.py' + outputs: + iomux_jlink: + mode: stdout + target: '${:eblif[noext]}_iomux.jlink' + inputs: + eblif: '${:eblif}' + pcf: '${:pcf}' + map: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' + output-format: jlink + $PYTHONPATH: '${shareDir}/scripts/' + iomux_openocd: + module: 'common:generic_script_wrapper' + params: + stage_name: iomux_openocd + interpreter: '${python3}' + script: '${shareDir}/scripts/pp3_eos_s3_iomux_config.py' + outputs: + iomux_openocd: + mode: stdout + target: '${:eblif[noext]}_iomux.openocd' + inputs: + eblif: '${:eblif}' + pcf: '${:pcf}' + map: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' + output-format: openocd + $PYTHONPATH: '${shareDir}/scripts/' + iomux_binary: + module: 'common:generic_script_wrapper' + params: + stage_name: iomux_binary + interpreter: '${python3}' + script: '${shareDir}/scripts/pp3_eos_s3_iomux_config.py' + outputs: + iomux_binary: + mode: stdout + target: '${:eblif[noext]}_iomux.bin' + inputs: + eblif: '${:eblif}' + pcf: '${:pcf}' + map: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' + output-format: binary + $PYTHONPATH: '${shareDir}/scripts/' + route: + module: 'common:route' + values: + device: ql-eos-s3 + device_alt: ql-eos-s3_wlcsp + pinmap: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' + arch_def: '${shareDir}/arch/ql-eos-s3_wlcsp/arch.timing.xml' + rr_graph_lookahead_bin: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.lookahead.bin' + rr_graph_real_bin: >- + ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.rr_graph.real.bin + vpr_place_delay: >- + ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.place_delay.bin + vpr_grid_layout_name: ql-eos-s3 + vpr_options: + write_timing_summary: timing_summary.json + max_router_iterations: 500 + routing_failure_predictor: 'off' + router_high_fanout_threshold: -1 + constant_net_method: route + route_chan_width: 100 + clock_modeling: route + place_delay_model: delta_override + router_lookahead: extended_map + check_route: quick + strict_checks: 'off' + allow_dangling_combinational_nodes: 'on' + disable_errors: 'check_unbuffered_edges:check_route' + congested_routing_iteration_threshold: '0.8' + incremental_reroute_delay_ripup: 'off' + base_cost_type: delay_normalized_length_bounded + bb_factor: '10' + initial_pres_fac: '4.0' + check_rr_graph: 'off' + pack_high_fanout_threshold: 'PB-lOGIC:18' + suppress_warnings: >- + ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment + analysis: + module: 'common:analysis' + values: + device: ql-eos-s3 + device_alt: ql-eos-s3_wlcsp + pinmap: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' + arch_def: '${shareDir}/arch/ql-eos-s3_wlcsp/arch.timing.xml' + rr_graph_lookahead_bin: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.lookahead.bin' + rr_graph_real_bin: >- + ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.rr_graph.real.bin + vpr_place_delay: >- + ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.place_delay.bin + vpr_grid_layout_name: ql-eos-s3 + vpr_options: + gen_post_synthesis_netlist: 'on' + gen_post_implementation_merged_netlist: 'on' + post_synth_netlist_unconn_inputs: nets + post_synth_netlist_unconn_outputs: nets + verify_file_digests: 'off' + max_router_iterations: 500 + routing_failure_predictor: 'off' + router_high_fanout_threshold: -1 + constant_net_method: route + route_chan_width: 100 + clock_modeling: route + place_delay_model: delta_override + router_lookahead: extended_map + check_route: quick + strict_checks: 'off' + allow_dangling_combinational_nodes: 'on' + disable_errors: 'check_unbuffered_edges:check_route' + congested_routing_iteration_threshold: '0.8' + incremental_reroute_delay_ripup: 'off' + base_cost_type: delay_normalized_length_bounded + bb_factor: '10' + initial_pres_fac: '4.0' + check_rr_graph: 'off' + pack_high_fanout_threshold: 'PB-lOGIC:18' + suppress_warnings: >- + ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment + fasm: + module: 'common:fasm' + bitstream: + module: 'common:generic_script_wrapper' + params: + stage_name: bitstream + script: qlfasm + outputs: + bitstream: + mode: file + file: '${:eblif[noext]}.bit' + target: '${:eblif[noext]}.bit' + bitstream_log: + mode: stdout + target: '${:eblif[noext]}.bit.log' + inputs: + '#1': '${:fasm}' + '#2': '${:eblif[noext]}.bit' + dev-type: ql-eos-s3 + values: + build_dir: . + bitstream_bitheader: + module: 'common:generic_script_wrapper' + params: + stage_name: bitstream_bitheader + script: symbiflow_write_bitheader + outputs: + bitstream_bitheader: + mode: file + file: '${:bitstream}.h' + target: '${:bitstream}.h' + bitstream_bitheader_log: + mode: stdout + target: '${:bitstream}.h.log' + inputs: + '#1': '${:bitstream}' + '#2': '${:bitstream}.h' + '#3': '${:iomux_binary}' + bitstream_jlink: + module: 'common:generic_script_wrapper' + params: + stage_name: bitstream_jlink + script: symbiflow_write_jlink + outputs: + bitstream_jlink: + mode: file + file: '${:bitstream}.jlink' + target: '${:bitstream}.jlink' + bitstream_jlink_log: + mode: stdout + target: '${:bitstream}.jlink.log' + inputs: + '#1': '${:bitstream}' + '#2': '${:bitstream}.jlink' + '#3': '${:iomux_jlink}' + bitstream_openocd: + module: 'common:generic_script_wrapper' + params: + stage_name: bitstream_openocd + script: symbiflow_write_openocd + outputs: + bitstream_openocd: + mode: file + file: '${:bitstream}.openocd' + target: '${:bitstream}.openocd' + bitstream_openocd_log: + mode: stdout + target: '${:bitstream}.openocd.log' + inputs: + '#1': '${:bitstream}' + '#2': '${:bitstream}.openocd' + '#3': '${:iomux_openocd}' + bitstream_binary: + module: 'common:generic_script_wrapper' + params: + stage_name: bitstream_binary + script: symbiflow_write_binary + outputs: + bitstream_binary: + mode: file + file: '${:bitstream}.bin' + target: '${:bitstream}.bin' + bitstream_binary_log: + mode: stdout + target: '${:bitstream}.bin.log' + inputs: + '#1': '${:bitstream}' + '#2': '${:bitstream}.bin' + '#3': '${:iomux_binary}' + fasm2bels: + module: 'common:generic_script_wrapper' + params: + stage_name: fasm2bels + script: symbiflow_fasm2bels + outputs: + fasm2bels_verilog: + mode: file + file: '${:bitstream}.v' + target: '${:bitstream}.v' + fasm2bels_pcf: + mode: file + file: '${:bitstream}.pcf' + target: '${:bitstream}.pcf' + fasm2bels_qcf: + mode: file + file: '${:bitstream}.qcf' + target: '${:bitstream}.qcf' + fasm2bels_log: + mode: stdout + target: '${:bitstream}.log' + inputs: + device: '${device}' + part: '${package}' + pcf: '${:pcf}' + bit: '${:bitstream}' + out-verilog: '${:bitstream}.v' + out-pcf: '${:bitstream}.pcf' + out-qcf: '${:bitstream}.qcf' + $F4PGA_INSTALL_DIR: '${shareDir}/../../../../' + $FPGA_FAM: eos-s3 + $PATH: >- + ${shareDir}/../../../conda/envs/eos-s3/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + $BIN_DIR_PATH: '${binDir}' + + +ql-k4n8_fast: + + values: + device: qlf_k4n8_umc22 + rr_graph_lookahead_bin: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/rr_graph_qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast.lookahead.bin + rr_graph_real_bin: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/qlf_k4n8-qlf_k4n8_umc22_fast.rr_graph.bin + vpr_place_delay: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/rr_graph_qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast.place_delay.bin + vpr_grid_layout_name: qlf_k4n8-qlf_k4n8_umc22_fast + arch_def: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/arch_qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast.xml + vpr_options: + max_router_iterations: 500 + routing_failure_predictor: 'off' + router_high_fanout_threshold: -1 + constant_net_method: route + route_chan_width: 100 + clock_modeling: ideal + place_delta_delay_matrix_calculation_method: dijkstra + place_delay_model: delta_override + router_lookahead: extended_map + allow_dangling_combinational_nodes: 'on' + absorb_buffer_luts: 'off' + + stages: + mk_build_dir: + module: 'common:mkdirs' + params: + build_dir: 'build/${device}' + synth: + module: 'common:synth' + params: + produces: + - synth_v + values: + tcl_scripts: '${shareDir}/scripts/qlf_k4n8' + read_verilog_args: [] + yosys_tcl_env: + TOP: '${top}' + OUT_JSON: '${:json}' + TECHMAP_PATH: '${shareDir}/techmaps/qlf_k4n8' + OUT_SYNTH_V: '${:synth_v}' + OUT_EBLIF: '${:eblif}' + PYTHON3: '${python3}' + pack: + module: 'common:pack' + ioplace: + module: 'common:generic_script_wrapper' + params: + stage_name: ioplace + interpreter: '${python3}' + script: '${binDir}/python/ql_qlf_create_ioplace.py' + outputs: + io_place: + mode: stdout + target: '${:eblif[noext]}.ioplace' + inputs: + blif: '${:eblif}' + net: '${:net}' + pcf: '${:pcf}' + pinmap_xml: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/pinmap_qlf_k4n8_umc22.xml + csv_file: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/pinmap_qlf_k4n8_umc22.csv + $PYTHONPATH: '${binDir}/python/' + repack: + module: 'common:generic_script_wrapper' + params: + stage_name: repack + interpreter: '${python3}' + script: '${binDir}/python/repacker/repack.py' + outputs: + eblif_repacked: + mode: file + file: '${:eblif[noext]}_repacked.eblif' + target: '${:eblif[noext]}_repacked.eblif' + place_repacked: + mode: file + file: '${:place[noext]}_repacked.place' + target: '${:place[noext]}_repacked.place' + net_repacked: + mode: file + file: '${:net[noext]}_repacked.net' + target: '${:net[noext]}_repacked.net' + repack_log: + mode: stdout + target: '${top}.repack.log' + inputs: + eblif-in: '${:eblif}' + net-in: '${:net}' + place-in: '${:place}' + eblif-out: '${:eblif[noext]}_repacked.eblif' + place-out: '${:place[noext]}_repacked.place' + net-out: '${:net[noext]}_repacked.net' + absorb_buffer_luts: 'on' + vpr-arch: '${arch_def}' + repacking-rules: '${repacking_rules}' + json-constraints: '${json_constraints?}' + pcf-constraints: '${pcf?}' + $PYTHONPATH: '${binDir}/python/' + values: + repacking_rules: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/qlf_k4n8-qlf_k4n8_umc22_fast.repacking_rules.json + place: + module: 'common:place' + route: + module: 'common:io_rename' + params: + module: 'common:route' + rename_takes: + eblif: eblif_repacked + place: place_repacked + net: net_repacked + fasm: + module: 'common:io_rename' + params: + module: 'common:fasm' + rename_takes: + eblif: eblif_repacked + place: place_repacked + net: net_repacked + bitstream: + module: 'common:generic_script_wrapper' + params: + stage_name: bitstream + script: qlf_fasm + outputs: + bitstream: + mode: file + file: '${:fasm[noext]}.bit' + target: '${:fasm[noext]}.bit' + inputs: + '#1': '${:fasm}' + '#2': '${:fasm[noext]}.bit' + db-root: '${shareDir}/fasm_database/qlf_k4n8' + format: 4byte + assemble: true + + +ql-k4n8_slow: + + values: + device: qlf_k4n8_umc22 + rr_graph_lookahead_bin: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/rr_graph_qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow.lookahead.bin + rr_graph_real_bin: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/qlf_k4n8-qlf_k4n8_umc22_slow.rr_graph.bin + vpr_place_delay: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/rr_graph_qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow.place_delay.bin + vpr_grid_layout_name: qlf_k4n8-qlf_k4n8_umc22_slow + arch_def: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/arch_qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow.xml + vpr_options: + max_router_iterations: 500 + routing_failure_predictor: 'off' + router_high_fanout_threshold: -1 + constant_net_method: route + route_chan_width: 100 + clock_modeling: ideal + place_delta_delay_matrix_calculation_method: dijkstra + place_delay_model: delta_override + router_lookahead: extended_map + allow_dangling_combinational_nodes: 'on' + absorb_buffer_luts: 'off' + + stages: + mk_build_dir: + module: 'common:mkdirs' + params: + build_dir: 'build/${device}' + synth: + module: 'common:synth' + params: + produces: + - synth_v + values: + tcl_scripts: '${shareDir}/scripts/qlf_k4n8' + read_verilog_args: [] + yosys_tcl_env: + TOP: '${top}' + OUT_JSON: '${:json}' + TECHMAP_PATH: '${shareDir}/techmaps/qlf_k4n8' + OUT_SYNTH_V: '${:synth_v}' + OUT_EBLIF: '${:eblif}' + PYTHON3: '${python3}' + pack: + module: 'common:pack' + ioplace: + module: 'common:generic_script_wrapper' + params: + stage_name: ioplace + interpreter: '${python3}' + script: '${binDir}/python/ql_qlf_create_ioplace.py' + outputs: + io_place: + mode: stdout + target: '${:eblif[noext]}.ioplace' + inputs: + blif: '${:eblif}' + net: '${:net}' + pcf: '${:pcf}' + pinmap_xml: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/pinmap_qlf_k4n8_umc22.xml + csv_file: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/pinmap_qlf_k4n8_umc22.csv + $PYTHONPATH: '${binDir}/python/' + repack: + module: 'common:generic_script_wrapper' + params: + stage_name: repack + interpreter: '${python3}' + script: '${binDir}/python/repacker/repack.py' + outputs: + eblif_repacked: + mode: file + file: '${:eblif[noext]}_repacked.eblif' + target: '${:eblif[noext]}_repacked.eblif' + place_repacked: + mode: file + file: '${:place[noext]}_repacked.place' + target: '${:place[noext]}_repacked.place' + net_repacked: + mode: file + file: '${:net[noext]}_repacked.net' + target: '${:net[noext]}_repacked.net' + repack_log: + mode: stdout + target: '${top}.repack.log' + inputs: + eblif-in: '${:eblif}' + net-in: '${:net}' + place-in: '${:place}' + eblif-out: '${:eblif[noext]}_repacked.eblif' + place-out: '${:place[noext]}_repacked.place' + net-out: '${:net[noext]}_repacked.net' + absorb_buffer_luts: 'on' + vpr-arch: '${arch_def}' + repacking-rules: '${repacking_rules}' + json-constraints: '${json_constraints?}' + pcf-constraints: '${pcf?}' + $PYTHONPATH: '${binDir}/python/' + values: + repacking_rules: >- + ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/qlf_k4n8-qlf_k4n8_umc22_slow.repacking_rules.json + place: + module: 'common:place' + route: + module: 'common:io_rename' + params: + module: 'common:route' + rename_takes: + eblif: eblif_repacked + place: place_repacked + net: net_repacked + fasm: + module: 'common:io_rename' + params: + module: 'common:fasm' + rename_takes: + eblif: eblif_repacked + place: place_repacked + net: net_repacked + bitstream: + module: 'common:generic_script_wrapper' + params: + stage_name: bitstream + script: qlf_fasm + outputs: + bitstream: + mode: file + file: '${:fasm[noext]}.bit' + target: '${:fasm[noext]}.bit' + inputs: + '#1': '${:fasm}' + '#2': '${:fasm[noext]}.bit' + db-root: '${shareDir}/fasm_database/qlf_k4n8' + format: 4byte + assemble: true diff --git a/f4pga/platforms/ql-eos-s3.yml b/f4pga/platforms/ql-eos-s3.yml deleted file mode 100644 index 39d9c2c..0000000 --- a/f4pga/platforms/ql-eos-s3.yml +++ /dev/null @@ -1,408 +0,0 @@ -# Copyright (C) 2022 F4PGA Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -values: - device: ql-eos-s3 - device_alt: ql-eos-s3_wlcsp - pinmap: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' - arch_def: '${shareDir}/arch/ql-eos-s3_wlcsp/arch.timing.xml' - rr_graph_lookahead_bin: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.lookahead.bin' - rr_graph_real_bin: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.rr_graph.real.bin' - vpr_place_delay: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.place_delay.bin' - vpr_grid_layout_name: ql-eos-s3 - vpr_options: - max_router_iterations: 500 - routing_failure_predictor: 'off' - router_high_fanout_threshold: -1 - constant_net_method: route - route_chan_width: 100 - clock_modeling: route - place_delay_model: delta_override - router_lookahead: extended_map - check_route: quick - strict_checks: 'off' - allow_dangling_combinational_nodes: 'on' - disable_errors: 'check_unbuffered_edges:check_route' - congested_routing_iteration_threshold: '0.8' - incremental_reroute_delay_ripup: 'off' - base_cost_type: delay_normalized_length_bounded - bb_factor: '10' - initial_pres_fac: '4.0' - check_rr_graph: 'off' - pack_high_fanout_threshold: 'PB-lOGIC:18' - suppress_warnings: >- - ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment -stages: - mk_build_dir: - module: 'common:mkdirs' - params: - build_dir: 'build/${device}' - synth: - module: 'common:synth' - params: - takes: - - pcf? - produces: - - synth_v - values: - tcl_scripts: '${shareDir}/scripts/pp3' - read_verilog_args: [] - yosys_tcl_env: - OUT_JSON: '${:json}' - OUT_SYNTH_V: '${:synth_v}' - OUT_EBLIF: '${:eblif}' - OUT_FASM_EXTRA: '${:fasm_extra}' - TECHMAP_PATH: '${shareDir}/techmaps/pp3' - DEVICE_CELLS_SIM: '${shareDir}/arch/ql-eos-s3_wlcsp/cells/ram_sim.v' - DEVICE_CELLS_MAP: '${shareDir}/arch/ql-eos-s3_wlcsp/cells/ram_map.v' - PINMAP_FILE: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' - PCF_FILE: '${:pcf}' - PYTHON3: '${python3}' - UTILS_PATH: '${shareDir}/scripts' - prepare_sdc: - module: 'common:generic_script_wrapper' - params: - stage_name: prepare_sdc - interpreter: '${python3}' - script: '${shareDir}/scripts/process_sdc_constraints.py' - outputs: - sdc: - mode: file - file: '${:eblif[noext]}.sdc' - target: '${:eblif[noext]}.sdc' - inputs: - eblif: '${:eblif}' - sdc-in: '${:sdc-in}' - sdc-out: '${:eblif[noext]}.sdc' - pcf: '${:pcf}' - pin-map: '' - $PYTHONPATH: '${shareDir}/scripts/' - pack: - module: 'common:pack' - values: - device: ql-eos-s3 - device_alt: ql-eos-s3_wlcsp - pinmap: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' - arch_def: '${shareDir}/arch/ql-eos-s3_wlcsp/arch.timing.xml' - rr_graph_lookahead_bin: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.lookahead.bin' - rr_graph_real_bin: >- - ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.rr_graph.real.bin - vpr_place_delay: >- - ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.place_delay.bin - vpr_grid_layout_name: ql-eos-s3 - vpr_options: - write_block_usage: block_usage.json - max_router_iterations: 500 - routing_failure_predictor: 'off' - router_high_fanout_threshold: -1 - constant_net_method: route - route_chan_width: 100 - clock_modeling: route - place_delay_model: delta_override - router_lookahead: extended_map - check_route: quick - strict_checks: 'off' - allow_dangling_combinational_nodes: 'on' - disable_errors: 'check_unbuffered_edges:check_route' - congested_routing_iteration_threshold: '0.8' - incremental_reroute_delay_ripup: 'off' - base_cost_type: delay_normalized_length_bounded - bb_factor: '10' - initial_pres_fac: '4.0' - check_rr_graph: 'off' - pack_high_fanout_threshold: 'PB-lOGIC:18' - suppress_warnings: >- - ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment - ioplace: - module: 'common:generic_script_wrapper' - params: - stage_name: ioplace - interpreter: '${python3}' - script: '${shareDir}/scripts/pp3_create_ioplace.py' - outputs: - io_place: - mode: stdout - target: '${:eblif[noext]}.ioplace' - inputs: - blif: '${:eblif}' - net: '${:net}' - pcf: '${:pcf}' - map: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' - $PYTHONPATH: '${shareDir}/scripts/' - place_constraints: - module: 'common:generic_script_wrapper' - params: - stage_name: place_constraints - interpreter: '${python3}' - script: '${shareDir}/scripts/pp3_create_place_constraints.py' - outputs: - place_constraints: - mode: stdout - target: '${:eblif[noext]}_constraints.place' - inputs: - blif: '${:eblif}' - map: '${shareDir}/arch/ql-eos-s3_wlcsp/clkmap_${package}.csv' - i: '${:io_place}' - $PYTHONPATH: '${shareDir}/scripts/' - place: - module: 'common:place' - iomux_jlink: - module: 'common:generic_script_wrapper' - params: - stage_name: iomux_jlink - interpreter: '${python3}' - script: '${shareDir}/scripts/pp3_eos_s3_iomux_config.py' - outputs: - iomux_jlink: - mode: stdout - target: '${:eblif[noext]}_iomux.jlink' - inputs: - eblif: '${:eblif}' - pcf: '${:pcf}' - map: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' - output-format: jlink - $PYTHONPATH: '${shareDir}/scripts/' - iomux_openocd: - module: 'common:generic_script_wrapper' - params: - stage_name: iomux_openocd - interpreter: '${python3}' - script: '${shareDir}/scripts/pp3_eos_s3_iomux_config.py' - outputs: - iomux_openocd: - mode: stdout - target: '${:eblif[noext]}_iomux.openocd' - inputs: - eblif: '${:eblif}' - pcf: '${:pcf}' - map: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' - output-format: openocd - $PYTHONPATH: '${shareDir}/scripts/' - iomux_binary: - module: 'common:generic_script_wrapper' - params: - stage_name: iomux_binary - interpreter: '${python3}' - script: '${shareDir}/scripts/pp3_eos_s3_iomux_config.py' - outputs: - iomux_binary: - mode: stdout - target: '${:eblif[noext]}_iomux.bin' - inputs: - eblif: '${:eblif}' - pcf: '${:pcf}' - map: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' - output-format: binary - $PYTHONPATH: '${shareDir}/scripts/' - route: - module: 'common:route' - values: - device: ql-eos-s3 - device_alt: ql-eos-s3_wlcsp - pinmap: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' - arch_def: '${shareDir}/arch/ql-eos-s3_wlcsp/arch.timing.xml' - rr_graph_lookahead_bin: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.lookahead.bin' - rr_graph_real_bin: >- - ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.rr_graph.real.bin - vpr_place_delay: >- - ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.place_delay.bin - vpr_grid_layout_name: ql-eos-s3 - vpr_options: - write_timing_summary: timing_summary.json - max_router_iterations: 500 - routing_failure_predictor: 'off' - router_high_fanout_threshold: -1 - constant_net_method: route - route_chan_width: 100 - clock_modeling: route - place_delay_model: delta_override - router_lookahead: extended_map - check_route: quick - strict_checks: 'off' - allow_dangling_combinational_nodes: 'on' - disable_errors: 'check_unbuffered_edges:check_route' - congested_routing_iteration_threshold: '0.8' - incremental_reroute_delay_ripup: 'off' - base_cost_type: delay_normalized_length_bounded - bb_factor: '10' - initial_pres_fac: '4.0' - check_rr_graph: 'off' - pack_high_fanout_threshold: 'PB-lOGIC:18' - suppress_warnings: >- - ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment - analysis: - module: 'common:analysis' - values: - device: ql-eos-s3 - device_alt: ql-eos-s3_wlcsp - pinmap: '${shareDir}/arch/ql-eos-s3_wlcsp/pinmap_${package}.csv' - arch_def: '${shareDir}/arch/ql-eos-s3_wlcsp/arch.timing.xml' - rr_graph_lookahead_bin: '${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.lookahead.bin' - rr_graph_real_bin: >- - ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.rr_graph.real.bin - vpr_place_delay: >- - ${shareDir}/arch/ql-eos-s3_wlcsp/rr_graph_ql-eos-s3_wlcsp.place_delay.bin - vpr_grid_layout_name: ql-eos-s3 - vpr_options: - gen_post_synthesis_netlist: 'on' - gen_post_implementation_merged_netlist: 'on' - post_synth_netlist_unconn_inputs: nets - post_synth_netlist_unconn_outputs: nets - verify_file_digests: 'off' - max_router_iterations: 500 - routing_failure_predictor: 'off' - router_high_fanout_threshold: -1 - constant_net_method: route - route_chan_width: 100 - clock_modeling: route - place_delay_model: delta_override - router_lookahead: extended_map - check_route: quick - strict_checks: 'off' - allow_dangling_combinational_nodes: 'on' - disable_errors: 'check_unbuffered_edges:check_route' - congested_routing_iteration_threshold: '0.8' - incremental_reroute_delay_ripup: 'off' - base_cost_type: delay_normalized_length_bounded - bb_factor: '10' - initial_pres_fac: '4.0' - check_rr_graph: 'off' - pack_high_fanout_threshold: 'PB-lOGIC:18' - suppress_warnings: >- - ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment - fasm: - module: 'common:fasm' - bitstream: - module: 'common:generic_script_wrapper' - params: - stage_name: bitstream - script: qlfasm - outputs: - bitstream: - mode: file - file: '${:eblif[noext]}.bit' - target: '${:eblif[noext]}.bit' - bitstream_log: - mode: stdout - target: '${:eblif[noext]}.bit.log' - inputs: - '#1': '${:fasm}' - '#2': '${:eblif[noext]}.bit' - dev-type: ql-eos-s3 - values: - build_dir: . - bitstream_bitheader: - module: 'common:generic_script_wrapper' - params: - stage_name: bitstream_bitheader - script: symbiflow_write_bitheader - outputs: - bitstream_bitheader: - mode: file - file: '${:bitstream}.h' - target: '${:bitstream}.h' - bitstream_bitheader_log: - mode: stdout - target: '${:bitstream}.h.log' - inputs: - '#1': '${:bitstream}' - '#2': '${:bitstream}.h' - '#3': '${:iomux_binary}' - bitstream_jlink: - module: 'common:generic_script_wrapper' - params: - stage_name: bitstream_jlink - script: symbiflow_write_jlink - outputs: - bitstream_jlink: - mode: file - file: '${:bitstream}.jlink' - target: '${:bitstream}.jlink' - bitstream_jlink_log: - mode: stdout - target: '${:bitstream}.jlink.log' - inputs: - '#1': '${:bitstream}' - '#2': '${:bitstream}.jlink' - '#3': '${:iomux_jlink}' - bitstream_openocd: - module: 'common:generic_script_wrapper' - params: - stage_name: bitstream_openocd - script: symbiflow_write_openocd - outputs: - bitstream_openocd: - mode: file - file: '${:bitstream}.openocd' - target: '${:bitstream}.openocd' - bitstream_openocd_log: - mode: stdout - target: '${:bitstream}.openocd.log' - inputs: - '#1': '${:bitstream}' - '#2': '${:bitstream}.openocd' - '#3': '${:iomux_openocd}' - bitstream_binary: - module: 'common:generic_script_wrapper' - params: - stage_name: bitstream_binary - script: symbiflow_write_binary - outputs: - bitstream_binary: - mode: file - file: '${:bitstream}.bin' - target: '${:bitstream}.bin' - bitstream_binary_log: - mode: stdout - target: '${:bitstream}.bin.log' - inputs: - '#1': '${:bitstream}' - '#2': '${:bitstream}.bin' - '#3': '${:iomux_binary}' - fasm2bels: - module: 'common:generic_script_wrapper' - params: - stage_name: fasm2bels - script: symbiflow_fasm2bels - outputs: - fasm2bels_verilog: - mode: file - file: '${:bitstream}.v' - target: '${:bitstream}.v' - fasm2bels_pcf: - mode: file - file: '${:bitstream}.pcf' - target: '${:bitstream}.pcf' - fasm2bels_qcf: - mode: file - file: '${:bitstream}.qcf' - target: '${:bitstream}.qcf' - fasm2bels_log: - mode: stdout - target: '${:bitstream}.log' - inputs: - device: '${device}' - part: '${package}' - pcf: '${:pcf}' - bit: '${:bitstream}' - out-verilog: '${:bitstream}.v' - out-pcf: '${:bitstream}.pcf' - out-qcf: '${:bitstream}.qcf' - $F4PGA_INSTALL_DIR: '${shareDir}/../../../../' - $FPGA_FAM: eos-s3 - $PATH: >- - ${shareDir}/../../../conda/envs/eos-s3/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - $BIN_DIR_PATH: '${binDir}' diff --git a/f4pga/platforms/ql-k4n8_fast.yml b/f4pga/platforms/ql-k4n8_fast.yml deleted file mode 100644 index 4c0eea4..0000000 --- a/f4pga/platforms/ql-k4n8_fast.yml +++ /dev/null @@ -1,152 +0,0 @@ -# Copyright (C) 2022 F4PGA Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -values: - device: qlf_k4n8_umc22 - rr_graph_lookahead_bin: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/rr_graph_qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast.lookahead.bin - rr_graph_real_bin: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/qlf_k4n8-qlf_k4n8_umc22_fast.rr_graph.bin - vpr_place_delay: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/rr_graph_qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast.place_delay.bin - vpr_grid_layout_name: qlf_k4n8-qlf_k4n8_umc22_fast - arch_def: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/arch_qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast.xml - vpr_options: - max_router_iterations: 500 - routing_failure_predictor: 'off' - router_high_fanout_threshold: -1 - constant_net_method: route - route_chan_width: 100 - clock_modeling: ideal - place_delta_delay_matrix_calculation_method: dijkstra - place_delay_model: delta_override - router_lookahead: extended_map - allow_dangling_combinational_nodes: 'on' - absorb_buffer_luts: 'off' -stages: - mk_build_dir: - module: 'common:mkdirs' - params: - build_dir: 'build/${device}' - synth: - module: 'common:synth' - params: - produces: - - synth_v - values: - tcl_scripts: '${shareDir}/scripts/qlf_k4n8' - read_verilog_args: [] - yosys_tcl_env: - TOP: '${top}' - OUT_JSON: '${:json}' - TECHMAP_PATH: '${shareDir}/techmaps/qlf_k4n8' - OUT_SYNTH_V: '${:synth_v}' - OUT_EBLIF: '${:eblif}' - PYTHON3: '${python3}' - pack: - module: 'common:pack' - ioplace: - module: 'common:generic_script_wrapper' - params: - stage_name: ioplace - interpreter: '${python3}' - script: '${binDir}/python/ql_qlf_create_ioplace.py' - outputs: - io_place: - mode: stdout - target: '${:eblif[noext]}.ioplace' - inputs: - blif: '${:eblif}' - net: '${:net}' - pcf: '${:pcf}' - pinmap_xml: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/pinmap_qlf_k4n8_umc22.xml - csv_file: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/pinmap_qlf_k4n8_umc22.csv - $PYTHONPATH: '${binDir}/python/' - repack: - module: 'common:generic_script_wrapper' - params: - stage_name: repack - interpreter: '${python3}' - script: '${binDir}/python/repacker/repack.py' - outputs: - eblif_repacked: - mode: file - file: '${:eblif[noext]}_repacked.eblif' - target: '${:eblif[noext]}_repacked.eblif' - place_repacked: - mode: file - file: '${:place[noext]}_repacked.place' - target: '${:place[noext]}_repacked.place' - net_repacked: - mode: file - file: '${:net[noext]}_repacked.net' - target: '${:net[noext]}_repacked.net' - repack_log: - mode: stdout - target: '${top}.repack.log' - inputs: - eblif-in: '${:eblif}' - net-in: '${:net}' - place-in: '${:place}' - eblif-out: '${:eblif[noext]}_repacked.eblif' - place-out: '${:place[noext]}_repacked.place' - net-out: '${:net[noext]}_repacked.net' - absorb_buffer_luts: 'on' - vpr-arch: '${arch_def}' - repacking-rules: '${repacking_rules}' - json-constraints: '${json_constraints?}' - pcf-constraints: '${pcf?}' - $PYTHONPATH: '${binDir}/python/' - values: - repacking_rules: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_fast_qlf_k4n8-qlf_k4n8_umc22_fast/qlf_k4n8-qlf_k4n8_umc22_fast.repacking_rules.json - place: - module: 'common:place' - route: - module: 'common:io_rename' - params: - module: 'common:route' - rename_takes: - eblif: eblif_repacked - place: place_repacked - net: net_repacked - fasm: - module: 'common:io_rename' - params: - module: 'common:fasm' - rename_takes: - eblif: eblif_repacked - place: place_repacked - net: net_repacked - bitstream: - module: 'common:generic_script_wrapper' - params: - stage_name: bitstream - script: qlf_fasm - outputs: - bitstream: - mode: file - file: '${:fasm[noext]}.bit' - target: '${:fasm[noext]}.bit' - inputs: - '#1': '${:fasm}' - '#2': '${:fasm[noext]}.bit' - db-root: '${shareDir}/fasm_database/qlf_k4n8' - format: 4byte - assemble: true diff --git a/f4pga/platforms/ql-k4n8_slow.yml b/f4pga/platforms/ql-k4n8_slow.yml deleted file mode 100644 index 9c77583..0000000 --- a/f4pga/platforms/ql-k4n8_slow.yml +++ /dev/null @@ -1,152 +0,0 @@ -# Copyright (C) 2022 F4PGA Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -values: - device: qlf_k4n8_umc22 - rr_graph_lookahead_bin: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/rr_graph_qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow.lookahead.bin - rr_graph_real_bin: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/qlf_k4n8-qlf_k4n8_umc22_slow.rr_graph.bin - vpr_place_delay: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/rr_graph_qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow.place_delay.bin - vpr_grid_layout_name: qlf_k4n8-qlf_k4n8_umc22_slow - arch_def: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/arch_qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow.xml - vpr_options: - max_router_iterations: 500 - routing_failure_predictor: 'off' - router_high_fanout_threshold: -1 - constant_net_method: route - route_chan_width: 100 - clock_modeling: ideal - place_delta_delay_matrix_calculation_method: dijkstra - place_delay_model: delta_override - router_lookahead: extended_map - allow_dangling_combinational_nodes: 'on' - absorb_buffer_luts: 'off' -stages: - mk_build_dir: - module: 'common:mkdirs' - params: - build_dir: 'build/${device}' - synth: - common: synth - params: - produces: - - synth_v - values: - tcl_scripts: '${shareDir}/scripts/qlf_k4n8' - read_verilog_args: [] - yosys_tcl_env: - TOP: '${top}' - OUT_JSON: '${:json}' - TECHMAP_PATH: '${shareDir}/techmaps/qlf_k4n8' - OUT_SYNTH_V: '${:synth_v}' - OUT_EBLIF: '${:eblif}' - PYTHON3: '${python3}' - pack: - module: 'common:pack' - ioplace: - module: 'common:generic_script_wrapper' - params: - stage_name: ioplace - interpreter: '${python3}' - script: '${binDir}/python/ql_qlf_create_ioplace.py' - outputs: - io_place: - mode: stdout - target: '${:eblif[noext]}.ioplace' - inputs: - blif: '${:eblif}' - net: '${:net}' - pcf: '${:pcf}' - pinmap_xml: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/pinmap_qlf_k4n8_umc22.xml - csv_file: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/pinmap_qlf_k4n8_umc22.csv - $PYTHONPATH: '${binDir}/python/' - repack: - module: 'common:generic_script_wrapper' - params: - stage_name: repack - interpreter: '${python3}' - script: '${binDir}/python/repacker/repack.py' - outputs: - eblif_repacked: - mode: file - file: '${:eblif[noext]}_repacked.eblif' - target: '${:eblif[noext]}_repacked.eblif' - place_repacked: - mode: file - file: '${:place[noext]}_repacked.place' - target: '${:place[noext]}_repacked.place' - net_repacked: - mode: file - file: '${:net[noext]}_repacked.net' - target: '${:net[noext]}_repacked.net' - repack_log: - mode: stdout - target: '${top}.repack.log' - inputs: - eblif-in: '${:eblif}' - net-in: '${:net}' - place-in: '${:place}' - eblif-out: '${:eblif[noext]}_repacked.eblif' - place-out: '${:place[noext]}_repacked.place' - net-out: '${:net[noext]}_repacked.net' - absorb_buffer_luts: 'on' - vpr-arch: '${arch_def}' - repacking-rules: '${repacking_rules}' - json-constraints: '${json_constraints?}' - pcf-constraints: '${pcf?}' - $PYTHONPATH: '${binDir}/python/' - values: - repacking_rules: >- - ${shareDir}/arch/qlf_k4n8-qlf_k4n8_umc22_slow_qlf_k4n8-qlf_k4n8_umc22_slow/qlf_k4n8-qlf_k4n8_umc22_slow.repacking_rules.json - place: - module: 'common:place' - route: - module: 'common:io_rename' - params: - module: 'common:route' - rename_takes: - eblif: eblif_repacked - place: place_repacked - net: net_repacked - fasm: - module: 'common:io_rename' - params: - module: 'common:fasm' - rename_takes: - eblif: eblif_repacked - place: place_repacked - net: net_repacked - bitstream: - module: 'common:generic_script_wrapper' - params: - stage_name: bitstream - script: qlf_fasm - outputs: - bitstream: - mode: file - file: '${:fasm[noext]}.bit' - target: '${:fasm[noext]}.bit' - inputs: - '#1': '${:fasm}' - '#2': '${:fasm[noext]}.bit' - db-root: '${shareDir}/fasm_database/qlf_k4n8' - format: 4byte - assemble: true diff --git a/f4pga/platforms/xc7a100t.yml b/f4pga/platforms/xc7a100t.yml deleted file mode 100644 index 72a4648..0000000 --- a/f4pga/platforms/xc7a100t.yml +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright (C) 2022 F4PGA Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -values: - device: xc7a100t_test - bitstream_device: artix7 - pinmap: '${shareDir}/arch/xc7a100t_test/vpr_grid_map.csv' - arch_def: '${shareDir}/arch/xc7a100t_test/arch.timing.xml' - rr_graph_lookahead_bin: '${shareDir}/arch/xc7a100t_test/rr_graph_xc7a100t_test.lookahead.bin' - rr_graph_real_bin: '${shareDir}/arch/xc7a100t_test/rr_graph_xc7a100t_test.rr_graph.real.bin' - vpr_place_delay: '${shareDir}/arch/xc7a100t_test/rr_graph_xc7a100t_test.place_delay.bin' - vpr_grid_layout_name: xc7a100t-test - vpr_options: - max_router_iterations: 500 - routing_failure_predictor: 'off' - router_high_fanout_threshold: -1 - constant_net_method: route - route_chan_width: 500 - router_heap: bucket - clock_modeling: route - place_delta_delay_matrix_calculation_method: dijkstra - place_delay_model: delta - router_lookahead: extended_map - check_route: quick - strict_checks: 'off' - allow_dangling_combinational_nodes: 'on' - disable_errors: 'check_unbuffered_edges:check_route' - congested_routing_iteration_threshold: '0.8' - incremental_reroute_delay_ripup: 'off' - base_cost_type: delay_normalized_length_bounded - bb_factor: 10 - acc_fac: '0.7' - astar_fac: '1.8' - initial_pres_fac: '2.828' - pres_fac_mult: '1.2' - check_rr_graph: 'off' - suppress_warnings: >- - ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment:calculate_average_switch -stages: - mk_build_dir: - module: 'common:mkdirs' - params: - build_dir: 'build/${device}' - synth: - module: 'common:synth' - params: - takes: - - xdc? - produces: - - sdc - - synth_v - prod_meta: - sdc: Standard Design Constraints file for X7 series. - values: - tcl_scripts: '${shareDir}/scripts/xc7' - yosys_tcl_env: - USE_ROI: 'FALSE' - TOP: '${top}' - OUT_JSON: '${:json}' - OUT_SDC: '${:sdc}' - PART_JSON: '${prjxray_db}/${bitstream_device}/${part_name}/part.json' - OUT_FASM_EXTRA: '${:fasm_extra}' - TECHMAP_PATH: '${shareDir}/techmaps/xc7_vpr/techmap' - OUT_SYNTH_V: '${:synth_v}' - SYNTH_JSON: '${:synth_json}' - OUT_EBLIF: '${:eblif}' - PYTHON3: '${python3}' - UTILS_PATH: '${shareDir}/scripts' - INPUT_XDC_FILES: '${:xdc}' - pack: - module: 'common:pack' - ioplace: - module: 'common:generic_script_wrapper' - params: - stage_name: ioplace - interpreter: '${python3}' - script: '${shareDir}/scripts/prjxray_create_ioplace.py' - outputs: - io_place: - mode: stdout - target: '${:net[noext]}.ioplace' - inputs: - blif: '${:eblif}' - map: '${shareDir}/arch/${device}/${part_name}/pinmap.csv' - net: '${:net}' - pcf: '${:pcf?}' - $PYTHONPATH: '${binDir}/python/' - place_constraints: - module: 'common:generic_script_wrapper' - params: - stage_name: place_constraints - interpreter: '${python3}' - script: '${shareDir}/scripts/prjxray_create_place_constraints.py' - outputs: - place_constraints: - mode: stdout - target: '${:net[noext]}.preplace' - inputs: - net: '${:net}' - arch: '${shareDir}/arch/${device}/arch.timing.xml' - blif: '${:eblif}' - input: '${:io_place}' - db_root: '${prjxray_db}' - part: '${part_name}' - vpr_grid_map: '${shareDir}/arch/${device}/vpr_grid_map.csv' - $PYTHONPATH: '${binDir}/python/' - place: - module: 'common:place' - route: - module: 'common:route' - fasm: - module: 'common:fasm' - bitstream: - module: 'common:generic_script_wrapper' - params: - stage_name: bitstream - script: xcfasm - outputs: - bitstream: - mode: file - file: '${:fasm[noext]}.bit' - target: '${:fasm[noext]}.bit' - inputs: - db-root: '${prjxray_db}/${bitstream_device}' - part: '${part_name}' - part_file: '${prjxray_db}/${bitstream_device}/${part_name}/part.yaml' - sparse: true - emit_pudc_b_pullup: true - fn_in: '${:fasm}' - frm2bit: xc7frames2bit - bit_out: '${:fasm[noext]}.bit' diff --git a/f4pga/platforms/xc7a200t.yml b/f4pga/platforms/xc7a200t.yml deleted file mode 100644 index 94d3292..0000000 --- a/f4pga/platforms/xc7a200t.yml +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright (C) 2022 F4PGA Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -values: - device: xc7a200t_test - bitstream_device: artix7 - pinmap: '${shareDir}/arch/xc7a200t_test/vpr_grid_map.csv' - arch_def: '${shareDir}/arch/xc7a200t_test/arch.timing.xml' - rr_graph_lookahead_bin: '${shareDir}/arch/xc7a200t_test/rr_graph_xc7a200t_test.lookahead.bin' - rr_graph_real_bin: '${shareDir}/arch/xc7a200t_test/rr_graph_xc7a200t_test.rr_graph.real.bin' - vpr_place_delay: '${shareDir}/arch/xc7a200t_test/rr_graph_xc7a200t_test.place_delay.bin' - vpr_grid_layout_name: xc7a200t-test - vpr_options: - max_router_iterations: 500 - routing_failure_predictor: 'off' - router_high_fanout_threshold: -1 - constant_net_method: route - route_chan_width: 500 - router_heap: bucket - clock_modeling: route - place_delta_delay_matrix_calculation_method: dijkstra - place_delay_model: delta - router_lookahead: extended_map - check_route: quick - strict_checks: 'off' - allow_dangling_combinational_nodes: 'on' - disable_errors: 'check_unbuffered_edges:check_route' - congested_routing_iteration_threshold: '0.8' - incremental_reroute_delay_ripup: 'off' - base_cost_type: delay_normalized_length_bounded - bb_factor: 10 - acc_fac: '0.7' - astar_fac: '1.8' - initial_pres_fac: '2.828' - pres_fac_mult: '1.2' - check_rr_graph: 'off' - suppress_warnings: >- - ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment:calculate_average_switch -stages: - mk_build_dir: - module: 'common:mkdirs' - params: - build_dir: 'build/${device}' - synth: - module: 'common:synth' - params: - takes: - - xdc? - produces: - - sdc - - synth_v - prod_meta: - sdc: Standard Design Constraints file for X7 series. - values: - tcl_scripts: '${shareDir}/scripts/xc7' - yosys_tcl_env: - USE_ROI: 'FALSE' - TOP: '${top}' - OUT_JSON: '${:json}' - OUT_SDC: '${:sdc}' - PART_JSON: '${prjxray_db}/${bitstream_device}/${part_name}/part.json' - OUT_FASM_EXTRA: '${:fasm_extra}' - TECHMAP_PATH: '${shareDir}/techmaps/xc7_vpr/techmap' - OUT_SYNTH_V: '${:synth_v}' - SYNTH_JSON: '${:synth_json}' - OUT_EBLIF: '${:eblif}' - PYTHON3: '${python3}' - UTILS_PATH: '${shareDir}/scripts' - INPUT_XDC_FILES: '${:xdc}' - pack: - module: 'common:pack' - ioplace: - module: 'common:generic_script_wrapper' - params: - stage_name: ioplace - interpreter: '${python3}' - script: '${shareDir}/scripts/prjxray_create_ioplace.py' - outputs: - io_place: - mode: stdout - target: '${:net[noext]}.ioplace' - inputs: - blif: '${:eblif}' - map: '${shareDir}/arch/${device}/${part_name}/pinmap.csv' - net: '${:net}' - pcf: '${:pcf?}' - $PYTHONPATH: '${binDir}/python/' - place_constraints: - module: 'common:generic_script_wrapper' - params: - stage_name: place_constraints - interpreter: '${python3}' - script: '${shareDir}/scripts/prjxray_create_place_constraints.py' - outputs: - place_constraints: - mode: stdout - target: '${:net[noext]}.preplace' - inputs: - net: '${:net}' - arch: '${shareDir}/arch/${device}/arch.timing.xml' - blif: '${:eblif}' - input: '${:io_place}' - db_root: '${prjxray_db}' - part: '${part_name}' - vpr_grid_map: '${shareDir}/arch/${device}/vpr_grid_map.csv' - $PYTHONPATH: '${binDir}/python/' - place: - module: 'common:place' - route: - module: 'common:route' - fasm: - module: 'common:fasm' - bitstream: - module: 'common:generic_script_wrapper' - params: - stage_name: bitstream - script: xcfasm - outputs: - bitstream: - mode: file - file: '${:fasm[noext]}.bit' - target: '${:fasm[noext]}.bit' - inputs: - db-root: '${prjxray_db}/${bitstream_device}' - part: '${part_name}' - part_file: '${prjxray_db}/${bitstream_device}/${part_name}/part.yaml' - sparse: true - emit_pudc_b_pullup: true - fn_in: '${:fasm}' - frm2bit: xc7frames2bit - bit_out: '${:fasm[noext]}.bit' diff --git a/f4pga/platforms/xc7a50t.yml b/f4pga/platforms/xc7a50t.yml deleted file mode 100644 index 4f021cb..0000000 --- a/f4pga/platforms/xc7a50t.yml +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright (C) 2022 F4PGA Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -values: - device: xc7a50t_test - bitstream_device: artix7 - pinmap: '${shareDir}/arch/xc7a50t_test/vpr_grid_map.csv' - arch_def: '${shareDir}/arch/xc7a50t_test/arch.timing.xml' - rr_graph_lookahead_bin: '${shareDir}/arch/xc7a50t_test/rr_graph_xc7a50t_test.lookahead.bin' - rr_graph_real_bin: '${shareDir}/arch/xc7a50t_test/rr_graph_xc7a50t_test.rr_graph.real.bin' - vpr_place_delay: '${shareDir}/arch/xc7a50t_test/rr_graph_xc7a50t_test.place_delay.bin' - vpr_grid_layout_name: xc7a50t-test - vpr_options: - max_router_iterations: 500 - routing_failure_predictor: 'off' - router_high_fanout_threshold: -1 - constant_net_method: route - route_chan_width: 500 - router_heap: bucket - clock_modeling: route - place_delta_delay_matrix_calculation_method: dijkstra - place_delay_model: delta - router_lookahead: extended_map - check_route: quick - strict_checks: 'off' - allow_dangling_combinational_nodes: 'on' - disable_errors: 'check_unbuffered_edges:check_route' - congested_routing_iteration_threshold: '0.8' - incremental_reroute_delay_ripup: 'off' - base_cost_type: delay_normalized_length_bounded - bb_factor: 10 - acc_fac: '0.7' - astar_fac: '1.8' - initial_pres_fac: '2.828' - pres_fac_mult: '1.2' - check_rr_graph: 'off' - suppress_warnings: >- - ${noisyWarnings},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment:calculate_average_switch -stages: - mk_build_dir: - module: 'common:mkdirs' - params: - build_dir: 'build/${device}' - synth: - module: 'common:synth' - params: - takes: - - xdc? - produces: - - sdc - - synth_v - prod_meta: - sdc: Standard Design Constraints file for X7 series. - values: - tcl_scripts: '${shareDir}/scripts/xc7' - yosys_tcl_env: - USE_ROI: 'FALSE' - TOP: '${top}' - OUT_JSON: '${:json}' - OUT_SDC: '${:sdc}' - PART_JSON: '${prjxray_db}/${bitstream_device}/${part_name}/part.json' - OUT_FASM_EXTRA: '${:fasm_extra}' - TECHMAP_PATH: '${shareDir}/techmaps/xc7_vpr/techmap' - OUT_SYNTH_V: '${:synth_v}' - SYNTH_JSON: '${:synth_json}' - OUT_EBLIF: '${:eblif}' - PYTHON3: '${python3}' - UTILS_PATH: '${shareDir}/scripts' - INPUT_XDC_FILES: '${:xdc}' - pack: - module: 'common:pack' - ioplace: - module: 'common:generic_script_wrapper' - params: - stage_name: ioplace - interpreter: '${python3}' - script: '${shareDir}/scripts/prjxray_create_ioplace.py' - outputs: - io_place: - mode: stdout - target: '${:net[noext]}.ioplace' - inputs: - blif: '${:eblif}' - map: '${shareDir}/arch/${device}/${part_name}/pinmap.csv' - net: '${:net}' - pcf: '${:pcf?}' - $PYTHONPATH: '${binDir}/python/' - place_constraints: - module: 'common:generic_script_wrapper' - params: - stage_name: place_constraints - interpreter: '${python3}' - script: '${shareDir}/scripts/prjxray_create_place_constraints.py' - outputs: - place_constraints: - mode: stdout - target: '${:net[noext]}.preplace' - inputs: - net: '${:net}' - arch: '${shareDir}/arch/${device}/arch.timing.xml' - blif: '${:eblif}' - input: '${:io_place}' - db_root: '${prjxray_db}' - part: '${part_name}' - vpr_grid_map: '${shareDir}/arch/${device}/vpr_grid_map.csv' - $PYTHONPATH: '${binDir}/python/' - place: - module: 'common:place' - route: - module: 'common:route' - fasm: - module: 'common:fasm' - bitstream: - module: 'common:generic_script_wrapper' - params: - stage_name: bitstream - script: xcfasm - outputs: - bitstream: - mode: file - file: '${:fasm[noext]}.bit' - target: '${:fasm[noext]}.bit' - inputs: - db-root: '${prjxray_db}/${bitstream_device}' - part: '${part_name}' - part_file: '${prjxray_db}/${bitstream_device}/${part_name}/part.yaml' - sparse: true - emit_pudc_b_pullup: true - fn_in: '${:fasm}' - frm2bit: xc7frames2bit - bit_out: '${:fasm[noext]}.bit' diff --git a/f4pga/setup.py b/f4pga/setup.py index 8af115b..0b1e9c8 100644 --- a/f4pga/setup.py +++ b/f4pga/setup.py @@ -89,7 +89,6 @@ setuptools_setup( package_data={ 'f4pga': [ '*.yml', - 'platforms/*.yml' ], 'f4pga.wrappers.sh': [ 'xc7/*.f4pga.sh',