| cmake_minimum_required(VERSION 3.14.0) | |
| project(f4pga-arch-defs) | |
| enable_testing() | |
| include(common/cmake/util.cmake) | |
| include(common/cmake/file_targets.cmake) | |
| include(common/cmake/env.cmake) | |
| include(common/cmake/xml.cmake) | |
| include(common/cmake/timings.cmake) | |
| include(common/cmake/v2x.cmake) | |
| include(common/cmake/install.cmake) | |
| include(common/cmake/devices.cmake) | |
| include(common/cmake/tools.cmake) | |
| include(common/cmake/sv2v.cmake) | |
| include(common/cmake/litex.cmake) | |
| # Parse lists of architectures / devices to be installed | |
| parse_install_lists() | |
| find_package(PythonInterp 3 REQUIRED) | |
| add_custom_target(test_python) | |
| # Dummy old targets, left in for backwards compability. | |
| add_custom_target(all_conda) | |
| add_custom_target(clean_locks) | |
| # Add dummy targets for attaching test targets too. | |
| add_custom_target(all_xc7_tests) | |
| add_custom_target(all_ice40_tests) | |
| add_custom_target(all_quicklogic_tests) | |
| set(ENV_DIR ${f4pga-arch-defs_SOURCE_DIR}/env/conda/envs/f4pga_arch_def_base/ CACHE PATH "Path to environment") | |
| set(YOSYS_DATADIR ${ENV_DIR}/share/yosys CACHE PATH "Path to yosys data directory") | |
| set(OPENOCD_DATADIR ${ENV_DIR}/share/openocd CACHE PATH "Path to openocd data directory") | |
| set(VPR_CAPNP_SCHEMA_DIR ${ENV_DIR}/share/vtr CACHE PATH "Path to VPR schema directory") | |
| option(LIGHT_BUILD "Perform a light build for a quicker CI check" OFF) | |
| setup_env() | |
| add_env_executable(EXE yosys REQUIRED) | |
| add_env_executable(EXE vpr REQUIRED) | |
| add_env_executable(EXE genfasm REQUIRED) | |
| add_env_executable(EXE node REQUIRED) | |
| add_env_executable(EXE npm REQUIRED) | |
| add_env_executable(EXE pytest REQUIRED) | |
| add_env_executable(EXE xmllint REQUIRED) | |
| add_env_executable(EXE openocd REQUIRED) | |
| add_env_executable(EXE yapf REQUIRED) | |
| add_env_executable(EXE icebox.py REQUIRED) | |
| add_env_executable(EXE icebox_hlc2asc REQUIRED) | |
| add_env_executable(EXE icebox_vlog REQUIRED) | |
| add_env_executable(EXE icepack REQUIRED) | |
| add_env_executable(EXE icetime REQUIRED) | |
| add_env_executable(EXE tinyfpgab REQUIRED) | |
| add_env_executable(EXE tinyprog REQUIRED) | |
| add_env_executable(EXE flake8 REQUIRED) | |
| add_env_executable(EXE vvp REQUIRED) | |
| add_env_executable(EXE iverilog REQUIRED) | |
| add_env_executable(EXE xcfasm REQUIRED) | |
| add_env_executable(EXE qlfasm REQUIRED) | |
| add_env_executable(EXE qlf_fasm REQUIRED) | |
| add_env_executable(EXE quicklogic_timings_importer REQUIRED) | |
| add_env_executable(EXE xc7frames2bit REQUIRED) | |
| add_env_executable(EXE bitread REQUIRED) | |
| add_env_executable(EXE prjxray-config) | |
| get_target_property_required(PYTHON3 env PYTHON3) | |
| include(common/cmake/image_gen.cmake) | |
| include(common/cmake/gen.cmake) | |
| # Target for all check tests. | |
| add_custom_target(all_check_tests) | |
| # Target for all route tests. | |
| add_custom_target(all_route_tests) | |
| # Target for all merged_arch_xmls. | |
| add_custom_target(all_merged_arch_xmls) | |
| # Target for all rrgraph xmls. | |
| add_custom_target(all_rrgraph_xmls) | |
| # Target to lint all xml files. | |
| add_custom_target(all_xml_lint) | |
| # Target to validate pbtype files using vpr | |
| add_custom_target(all_vpr_test_pbtype) | |
| add_subdirectory(common) | |
| add_subdirectory(utils) | |
| add_subdirectory(vpr) | |
| add_subdirectory(library) | |
| # Disable 7-series support in CI because it consumes too much memory. | |
| if (NOT LIGHT_BUILD) | |
| add_subdirectory(xilinx) | |
| endif() | |
| add_subdirectory(lattice/ice40) | |
| add_subdirectory(quicklogic) | |
| add_subdirectory(testarch) | |
| add_subdirectory(tests) | |
| get_target_property_required(YAPF env YAPF) | |
| add_custom_target( | |
| check_python | |
| COMMAND ${f4pga-arch-defs_SOURCE_DIR}/common/python_health_helper.sh -c -y ${YAPF} | |
| ) | |
| add_custom_target( | |
| format_python | |
| COMMAND ${f4pga-arch-defs_SOURCE_DIR}/common/python_health_helper.sh -f -y ${YAPF} | |
| ) | |
| get_target_property_required(FLAKE8 env FLAKE8) | |
| add_custom_target( | |
| lint_python | |
| COMMAND ${f4pga-arch-defs_SOURCE_DIR}/common/python_health_helper.sh -l -p "${FLAKE8}" | |
| ) | |
| add_custom_target(all_ice40_demos) | |
| add_dependencies(all_ice40_demos | |
| all_icestick_bin | |
| all_iceblink40-lp1k_bin | |
| ) | |
| add_custom_target(all_ice40_route_tests) | |
| add_dependencies(all_ice40_route_tests | |
| all_dummy_ice40_hx1k_tq144_route | |
| all_dummy_ice40_lp1k_qn84_route | |
| all_dummy_ice40_hx1k_tq144_route | |
| ) | |
| if (NOT LIGHT_BUILD) | |
| add_dependencies(all_ice40_demos | |
| all_icevision_bin | |
| all_hx8k-b-evn_bin | |
| all_tinyfpga-bx_bin | |
| all_tinyfpga-b2_bin | |
| ) | |
| add_dependencies(all_ice40_route_tests | |
| all_dummy_ice40_up5k_sg48_route | |
| all_dummy_ice40_lp8k_cm81_route | |
| all_dummy_ice40_hx8k_ct256_route | |
| ) | |
| endif() | |
| add_custom_target(all_ice40) | |
| add_dependencies(all_ice40 | |
| all_ice40_demos | |
| all_ice40_tests | |
| all_ice40_route_tests | |
| ) | |
| add_custom_target(all_quicklogic) | |
| add_dependencies(all_quicklogic | |
| all_quicklogic_tests | |
| ) | |
| add_custom_target(all_xc7_route_tests) | |
| if (NOT LIGHT_BUILD) | |
| add_dependencies(all_xc7_route_tests | |
| all_dummy_artix7_xc7a50t-arty-swbut_test_route | |
| all_dummy_artix7_xc7a50t-arty-uart_test_route | |
| all_dummy_artix7_xc7a50t-basys3_test_route | |
| ) | |
| endif() | |
| add_custom_target(all_xc7_demos) | |
| if (NOT LIGHT_BUILD) | |
| add_dependencies(all_xc7_demos | |
| all_arty-swbut_bin | |
| all_arty-uart_bin | |
| all_arty-full_bin | |
| all_arty100t-full_bin | |
| all_netv2-a100t_bin | |
| all_basys3_bin | |
| all_basys3-full_bin | |
| all_pynqz1-full_bin | |
| #all_basys3-bottom_bin | |
| # TODO(#548) Zybo targets not currently working, so removed from all target. | |
| #all_zybo_bin | |
| all_zybo-full_bin | |
| all_ax7050_bin | |
| ) | |
| endif() | |
| add_custom_target(all_xc7_diff_fasm) | |
| if (NOT LIGHT_BUILD) | |
| add_dependencies(all_xc7_diff_fasm | |
| all_artix7_diff_fasm | |
| all_artix7_100t_diff_fasm | |
| all_zynq7_diff_fasm | |
| all_zynq7_z020_diff_fasm | |
| ) | |
| endif() | |
| add_custom_target(all_xc7) | |
| add_dependencies(all_xc7 | |
| all_xc7_demos | |
| all_xc7_route_tests | |
| all_xc7_tests | |
| ) | |
| if (NOT LIGHT_BUILD) | |
| add_dependencies(all_xc7 | |
| test_dram_packing | |
| ) | |
| endif() | |
| add_custom_target(all_xc7_200t) | |
| if (NOT LIGHT_BUILD) | |
| add_dependencies(all_xc7_200t | |
| all_nexys_video_bin | |
| all_nexys_video-mid_bin | |
| ) | |
| endif() | |
| add_custom_target(all_testarch) | |
| add_dependencies(all_testarch | |
| all_dummy_testarch_10x10_dummy_route | |
| all_dummy_testarch_4x4_dummy_route | |
| ) | |
| add_custom_target(all_demos) | |
| add_dependencies(all_demos | |
| all_ice40_demos | |
| all_xc7_demos | |
| ) | |
| add_custom_target(all_tests) | |
| add_dependencies(all_tests | |
| all_testarch | |
| all_ice40_tests | |
| all_quicklogic_tests | |
| all_xc7_tests | |
| ) | |
| add_custom_target(docs) | |
| add_custom_target(print_qor | |
| COMMAND ${PYTHON3} ${f4pga-arch-defs_SOURCE_DIR}/utils/print_qor.py ${f4pga-arch-defs_BINARY_DIR} | |
| ) |