diff options
Diffstat (limited to 'fpga_interchange')
| -rw-r--r-- | fpga_interchange/examples/archcheck/Makefile | 23 | ||||
| -rw-r--r-- | fpga_interchange/examples/chipdb.cmake | 64 | ||||
| -rw-r--r-- | fpga_interchange/examples/devices/CMakeLists.txt | 12 | ||||
| -rw-r--r-- | fpga_interchange/examples/devices/xc7a35t/CMakeLists.txt | 12 | ||||
| -rw-r--r-- | fpga_interchange/examples/devices/xc7a35t/test_data.yaml (renamed from fpga_interchange/examples/archcheck/test_data.yaml) | 0 | ||||
| -rw-r--r-- | fpga_interchange/examples/tests.cmake | 6 | ||||
| -rw-r--r-- | fpga_interchange/family.cmake | 2 | 
7 files changed, 78 insertions, 41 deletions
| diff --git a/fpga_interchange/examples/archcheck/Makefile b/fpga_interchange/examples/archcheck/Makefile deleted file mode 100644 index 02e1c08e..00000000 --- a/fpga_interchange/examples/archcheck/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -include ../common.mk - -PACKAGE := csg324 - -.PHONY: check check_test_data - -check: check_test_data -	$(NEXTPNR_BIN) \ -		--chipdb $(BBA_PATH) \ -		--package $(PACKAGE) \ -		--test - -check_test_data: -	$(NEXTPNR_BIN) \ -		--chipdb $(BBA_PATH) \ -		--package $(PACKAGE) \ -		--run $(NEXTPNR_PATH)/python/check_arch_api.py - -debug_check_test_data: -	gdb --args $(NEXTPNR_BIN) \ -		--chipdb $(BBA_PATH) \ -		--package $(PACKAGE) \ -		--run $(NEXTPNR_PATH)/python/check_arch_api.py diff --git a/fpga_interchange/examples/chipdb.cmake b/fpga_interchange/examples/chipdb.cmake index ed6f173f..21ec3e7b 100644 --- a/fpga_interchange/examples/chipdb.cmake +++ b/fpga_interchange/examples/chipdb.cmake @@ -184,18 +184,24 @@ function(generate_chipdb)      # generate_chipdb(      #    device <common device>      #    part <part> +    #    device_target <device target> +    #    bel_bucket_seeds <bel bucket seeds> +    #    package <package>      # )      # ~~~      #      # Generates a chipdb BBA file, starting from a device database.      # -    # The chipdb file is moved to the <nextpnr-root>/build/fpga_interchange/chipdb/ directory +    # The chipdb binary file is directly generated to the +    # <nextpnr-root>/build/fpga_interchange/chipdb/ directory. +    # +    # The package argument is only used to run the architecture check target.      #      # Targets generated:      #   - chipdb-<device>-bba      set(options) -    set(oneValueArgs device part device_target bel_bucket_seeds) +    set(oneValueArgs device part device_target bel_bucket_seeds package)      set(multiValueArgs)      cmake_parse_arguments( @@ -210,13 +216,14 @@ function(generate_chipdb)      set(part ${generate_chipdb_part})      set(device_target ${generate_chipdb_device_target})      set(bel_bucket_seeds ${generate_chipdb_bel_bucket_seeds}) +    set(package ${generate_chipdb_package})      get_target_property(device_loc ${device_target} LOCATION) -    set(chipdb_bba ${chipdb_dir}/chipdb-${device}.bba) +    set(chipdb_bba ${CMAKE_CURRENT_BINARY_DIR}/chipdb-${device}.bba)      add_custom_command(          OUTPUT ${chipdb_bba}          COMMAND -           ${PYTHON_EXECUTABLE} -mfpga_interchange.nextpnr_emit +            ${PYTHON_EXECUTABLE} -mfpga_interchange.nextpnr_emit                  --schema_dir ${INTERCHANGE_SCHEMA_PATH}                  --output_dir ${CMAKE_CURRENT_BINARY_DIR}                  --bel_bucket_seeds ${bel_bucket_seeds} @@ -230,5 +237,54 @@ function(generate_chipdb)      )      add_custom_target(chipdb-${device}-bba DEPENDS ${chipdb_bba}) + +    set(chipdb_bin ${chipdb_dir}/chipdb-${device}.bin) +    add_custom_command( +        OUTPUT ${chipdb_bin} +        COMMAND +            bbasm -l ${chipdb_bba} ${chipdb_bin} +        DEPENDS +            chipdb-${device}-bba +            ${chipdb_bba} +            bbasm +    ) + +    add_custom_target(chipdb-${device}-bin DEPENDS ${chipdb_bin}) + +    # Generate architecture check target +    set(test_data_source ${CMAKE_CURRENT_SOURCE_DIR}/test_data.yaml) +    set(test_data_binary ${CMAKE_CURRENT_BINARY_DIR}/test_data.yaml) +    add_custom_command( +        OUTPUT ${test_data_binary} +        COMMAND +            ${CMAKE_COMMAND} -E create_symlink +            ${test_data_source} +            ${test_data_binary} +        DEPENDS +            ${test_data_source} +    ) + +    add_custom_target( +        chipdb-${device}-bin-check +        COMMAND +            nextpnr-fpga_interchange +                --chipdb ${chipdb_bin} +                --package ${package} +                --test +        DEPENDS +            ${chipdb_bin} +    ) + +    add_custom_target( +        chipdb-${device}-bin-check-test-data +        COMMAND +            nextpnr-fpga_interchange +                --chipdb ${chipdb_bin} +                --package ${package} +                --run ${root_dir}/python/check_arch_api.py +        DEPENDS +            ${chipdb_bin} +            ${test_data_binary} +    )  endfunction() diff --git a/fpga_interchange/examples/devices/CMakeLists.txt b/fpga_interchange/examples/devices/CMakeLists.txt index 6a60d4f8..5b96ac80 100644 --- a/fpga_interchange/examples/devices/CMakeLists.txt +++ b/fpga_interchange/examples/devices/CMakeLists.txt @@ -1,11 +1 @@ -generate_xc7_device_db( -    device xc7a35t -    part xc7a35tcsg324-1 -) - -generate_chipdb( -    device xc7a35t -    part xc7a35tcsg324-1 -    device_target ${device_target} -    bel_bucket_seeds ${PYTHON_INTERCHANGE_PATH}/test_data/series7_bel_buckets.yaml -) +add_subdirectory(xc7a35t) diff --git a/fpga_interchange/examples/devices/xc7a35t/CMakeLists.txt b/fpga_interchange/examples/devices/xc7a35t/CMakeLists.txt new file mode 100644 index 00000000..a7a49751 --- /dev/null +++ b/fpga_interchange/examples/devices/xc7a35t/CMakeLists.txt @@ -0,0 +1,12 @@ +generate_xc7_device_db( +    device xc7a35t +    part xc7a35tcsg324-1 +) + +generate_chipdb( +    device xc7a35t +    part xc7a35tcsg324-1 +    device_target ${device_target} +    bel_bucket_seeds ${PYTHON_INTERCHANGE_PATH}/test_data/series7_bel_buckets.yaml +    package csg324 +) diff --git a/fpga_interchange/examples/archcheck/test_data.yaml b/fpga_interchange/examples/devices/xc7a35t/test_data.yaml index 268d180a..268d180a 100644 --- a/fpga_interchange/examples/archcheck/test_data.yaml +++ b/fpga_interchange/examples/devices/xc7a35t/test_data.yaml diff --git a/fpga_interchange/examples/tests.cmake b/fpga_interchange/examples/tests.cmake index ebbdb6be..9dc73add 100644 --- a/fpga_interchange/examples/tests.cmake +++ b/fpga_interchange/examples/tests.cmake @@ -82,7 +82,7 @@ function(add_interchange_test)      add_custom_target(test-${family}-${name}-netlist DEPENDS ${netlist}) -    set(chipdb_target chipdb-${device}-bba) +    set(chipdb_target chipdb-${device}-bin)      # Physical Netlist      set(phys ${CMAKE_CURRENT_BINARY_DIR}/${name}.phys) @@ -90,7 +90,7 @@ function(add_interchange_test)          OUTPUT ${phys}          COMMAND              nextpnr-fpga_interchange -                --chipdb ${chipdb_dir}/chipdb-${device}.bba +                --chipdb ${chipdb_dir}/chipdb-${device}.bin                  --xdc ${xdc}                  --netlist ${netlist}                  --phys ${phys} @@ -98,7 +98,7 @@ function(add_interchange_test)          DEPENDS              ${netlist}              ${chipdb_target} -            ${chipdb_dir}/chipdb-${device}.bba +            ${chipdb_dir}/chipdb-${device}.bin      )      add_custom_target(test-${family}-${name}-phys DEPENDS ${phys}) diff --git a/fpga_interchange/family.cmake b/fpga_interchange/family.cmake index cf92ef2e..ec5cdb59 100644 --- a/fpga_interchange/family.cmake +++ b/fpga_interchange/family.cmake @@ -19,6 +19,8 @@ include(${family}/examples/tests.cmake)  set(chipdb_dir ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb)  file(MAKE_DIRECTORY ${chipdb_dir}) +set(root_dir ${CMAKE_CURRENT_SOURCE_DIR}) +  add_custom_target(all-${family}-tests)  add_subdirectory(${family}/examples/devices)  add_subdirectory(${family}/examples/tests) | 
