| 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} |
| ) |