diff options
author | Alessandro Comodi <acomodi@antmicro.com> | 2021-03-16 21:49:06 +0100 |
---|---|---|
committer | Alessandro Comodi <acomodi@antmicro.com> | 2021-03-16 22:02:06 +0100 |
commit | c1e668f8238141a7d19525e9eb7a23c17cd1b120 (patch) | |
tree | 522ac7362ca83cde34b04233fc7dcce75d24b666 /fpga_interchange/examples | |
parent | f9e9fadbc8ec794ed43f94d237fe4b889c5e13d8 (diff) | |
download | nextpnr-c1e668f8238141a7d19525e9eb7a23c17cd1b120.tar.gz nextpnr-c1e668f8238141a7d19525e9eb7a23c17cd1b120.tar.bz2 nextpnr-c1e668f8238141a7d19525e9eb7a23c17cd1b120.zip |
fpga_interchange: address review comments
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
Diffstat (limited to 'fpga_interchange/examples')
8 files changed, 91 insertions, 16 deletions
diff --git a/fpga_interchange/examples/chipdb.cmake b/fpga_interchange/examples/chipdb.cmake index 21ec3e7b..aa81bbe8 100644 --- a/fpga_interchange/examples/chipdb.cmake +++ b/fpga_interchange/examples/chipdb.cmake @@ -123,6 +123,7 @@ function(generate_xc7_device_db) # generate_xc7_device_db( # device <common device> # part <part> + # device_target <variable name for device target> # ) # ~~~ # @@ -134,7 +135,7 @@ function(generate_xc7_device_db) # The final device target is output in the device_target variable to use in the parent scope set(options) - set(oneValueArgs device part) + set(oneValueArgs device part device_target) set(multiValueArgs) cmake_parse_arguments( @@ -147,6 +148,7 @@ function(generate_xc7_device_db) set(device ${create_rapidwright_device_db_device}) set(part ${create_rapidwright_device_db_part}) + set(device_target ${create_rapidwright_device_db_device_target}) create_rapidwright_device_db( device ${device} @@ -176,12 +178,15 @@ function(generate_xc7_device_db) output_target constraints_luts_device ) - set(device_target ${constraints_luts_device} PARENT_SCOPE) + if(DEFINED device_target) + set(${device_target} ${constraints_luts_device} PARENT_SCOPE) + endif() endfunction() function(generate_chipdb) # ~~~ # generate_chipdb( + # family <family> # device <common device> # part <part> # device_target <device target> @@ -198,10 +203,15 @@ function(generate_chipdb) # The package argument is only used to run the architecture check target. # # Targets generated: - # - chipdb-<device>-bba + # - chipdb-${device}-bba + # - chipdb-${device}-bin + # - device-${device} + # + # The device-${device} target contains properties to get the interchange device as well + # as the binary chipdb set(options) - set(oneValueArgs device part device_target bel_bucket_seeds package) + set(oneValueArgs family device part device_target bel_bucket_seeds package) set(multiValueArgs) cmake_parse_arguments( @@ -212,6 +222,7 @@ function(generate_chipdb) ${ARGN} ) + set(family ${generate_chipdb_family}) set(device ${generate_chipdb_device}) set(part ${generate_chipdb_part}) set(device_target ${generate_chipdb_device_target}) @@ -219,7 +230,7 @@ function(generate_chipdb) set(package ${generate_chipdb_package}) get_target_property(device_loc ${device_target} LOCATION) - set(chipdb_bba ${CMAKE_CURRENT_BINARY_DIR}/chipdb-${device}.bba) + set(chipdb_bba ${CMAKE_CURRENT_BINARY_DIR}/chipdb.bba) add_custom_command( OUTPUT ${chipdb_bba} COMMAND @@ -228,8 +239,6 @@ function(generate_chipdb) --output_dir ${CMAKE_CURRENT_BINARY_DIR} --bel_bucket_seeds ${bel_bucket_seeds} --device ${device_loc} - COMMAND - mv ${CMAKE_CURRENT_BINARY_DIR}/chipdb.bba ${chipdb_bba} DEPENDS ${bel_bucket_seeds} ${device_target} @@ -251,6 +260,17 @@ function(generate_chipdb) add_custom_target(chipdb-${device}-bin DEPENDS ${chipdb_bin}) + # Setting device target properties + add_custom_target(device-${device}) + set_target_properties( + device-${device} + PROPERTIES + DEVICE_LOC ${device_loc} + DEVICE_TARGET ${device_target} + CHIPDB_BIN_LOC ${chipdb_bin} + CHIPDB_BIN_TARGET chipdb-${device}-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) @@ -273,6 +293,7 @@ function(generate_chipdb) --test DEPENDS ${chipdb_bin} + chipdb-${device}-bin ) add_custom_target( @@ -281,10 +302,13 @@ function(generate_chipdb) nextpnr-fpga_interchange --chipdb ${chipdb_bin} --package ${package} - --run ${root_dir}/python/check_arch_api.py + --run ${PROJECT_SOURCE_DIR}/python/check_arch_api.py DEPENDS ${chipdb_bin} + chipdb-${device}-bin ${test_data_binary} ) + +add_dependencies(all-${family}-archcheck-tests chipdb-${device}-bin-check-test-data chipdb-${device}-bin-check) endfunction() diff --git a/fpga_interchange/examples/devices/xc7a35t/CMakeLists.txt b/fpga_interchange/examples/devices/xc7a35t/CMakeLists.txt index a7a49751..465ff66d 100644 --- a/fpga_interchange/examples/devices/xc7a35t/CMakeLists.txt +++ b/fpga_interchange/examples/devices/xc7a35t/CMakeLists.txt @@ -1,12 +1,14 @@ generate_xc7_device_db( device xc7a35t part xc7a35tcsg324-1 + device_target target ) generate_chipdb( + family ${family} device xc7a35t part xc7a35tcsg324-1 - device_target ${device_target} + device_target ${target} bel_bucket_seeds ${PYTHON_INTERCHANGE_PATH}/test_data/series7_bel_buckets.yaml package csg324 ) diff --git a/fpga_interchange/examples/tests.cmake b/fpga_interchange/examples/tests.cmake index 899bfa4a..194a3f21 100644 --- a/fpga_interchange/examples/tests.cmake +++ b/fpga_interchange/examples/tests.cmake @@ -2,6 +2,7 @@ function(add_interchange_test) # ~~~ # add_interchange_test( # name <name> + # family <family> # device <common device> # package <package> # tcl <tcl> @@ -20,7 +21,7 @@ function(add_interchange_test) # - test-fpga_interchange-<name>-dcp : design checkpoint with RapidWright set(options) - set(oneValueArgs name device package tcl xdc top techmap) + set(oneValueArgs name family device package tcl xdc top techmap) set(multiValueArgs sources) cmake_parse_arguments( @@ -32,6 +33,7 @@ function(add_interchange_test) ) set(name ${add_interchange_test_name}) + set(family ${add_interchange_test_family}) set(device ${add_interchange_test_device}) set(package ${add_interchange_test_package}) set(top ${add_interchange_test_top}) @@ -64,8 +66,8 @@ function(add_interchange_test) add_custom_target(test-${family}-${name}-json DEPENDS ${synth_json}) # Logical Netlist - set(device_target constraints-luts-${device}-device) - get_property(device_loc TARGET constraints-luts-${device}-device PROPERTY LOCATION) + get_property(device_target TARGET device-${device} PROPERTY DEVICE_TARGET) + get_property(device_loc TARGET device-${device} PROPERTY DEVICE_LOC) set(netlist ${CMAKE_CURRENT_BINARY_DIR}/${name}.netlist) add_custom_command( @@ -85,27 +87,64 @@ function(add_interchange_test) add_custom_target(test-${family}-${name}-netlist DEPENDS ${netlist}) - set(chipdb_target chipdb-${device}-bin) + # Logical Netlist YAML + set(netlist_yaml ${CMAKE_CURRENT_BINARY_DIR}/${name}.netlist.yaml) + add_custom_command( + OUTPUT ${netlist_yaml} + COMMAND + ${PYTHON_EXECUTABLE} -mfpga_interchange.convert + --schema_dir ${INTERCHANGE_SCHEMA_PATH} + --schema logical + --input_format capnp + --output_format yaml + ${netlist} + ${netlist_yaml} + DEPENDS + ${netlist} + ) + + add_custom_target(test-${family}-${name}-netlist-yaml DEPENDS ${netlist_yaml}) # Physical Netlist + get_property(chipdb_bin_target TARGET device-${device} PROPERTY CHIPDB_BIN_TARGET) + get_property(chipdb_bin_loc TARGET device-${device} PROPERTY CHIPDB_BIN_LOC) + set(phys ${CMAKE_CURRENT_BINARY_DIR}/${name}.phys) add_custom_command( OUTPUT ${phys} COMMAND nextpnr-fpga_interchange - --chipdb ${chipdb_dir}/chipdb-${device}.bin + --chipdb ${chipdb_bin_loc} --xdc ${xdc} --netlist ${netlist} --phys ${phys} --package ${package} DEPENDS ${netlist} - ${chipdb_target} - ${chipdb_dir}/chipdb-${device}.bin + ${chipdb_bin_target} + ${chipdb_bin_loc} ) add_custom_target(test-${family}-${name}-phys DEPENDS ${phys}) + # Physical Netlist YAML + set(phys_yaml ${CMAKE_CURRENT_BINARY_DIR}/${name}.phys.yaml) + add_custom_command( + OUTPUT ${phys_yaml} + COMMAND + ${PYTHON_EXECUTABLE} -mfpga_interchange.convert + --schema_dir ${INTERCHANGE_SCHEMA_PATH} + --schema physical + --input_format capnp + --output_format yaml + ${phys} + ${phys_yaml} + DEPENDS + ${phys} + ) + + add_custom_target(test-${family}-${name}-phys-yaml DEPENDS ${phys_yaml}) + set(dcp ${CMAKE_CURRENT_BINARY_DIR}/${name}.dcp) add_custom_command( OUTPUT ${dcp} diff --git a/fpga_interchange/examples/tests/const_wire/CMakeLists.txt b/fpga_interchange/examples/tests/const_wire/CMakeLists.txt index 8a3c4375..ba013e47 100644 --- a/fpga_interchange/examples/tests/const_wire/CMakeLists.txt +++ b/fpga_interchange/examples/tests/const_wire/CMakeLists.txt @@ -1,5 +1,6 @@ add_interchange_test( name const_wire_basys3 + family ${family} device xc7a35t package cpg236 tcl run.tcl @@ -9,6 +10,7 @@ add_interchange_test( add_interchange_test( name const_wire_arty + family ${family} device xc7a35t package csg324 tcl run.tcl diff --git a/fpga_interchange/examples/tests/counter/CMakeLists.txt b/fpga_interchange/examples/tests/counter/CMakeLists.txt index 0da62934..dc41d8da 100644 --- a/fpga_interchange/examples/tests/counter/CMakeLists.txt +++ b/fpga_interchange/examples/tests/counter/CMakeLists.txt @@ -1,5 +1,6 @@ add_interchange_test( name counter_basys3 + family ${family} device xc7a35t package cpg236 tcl run.tcl @@ -10,6 +11,7 @@ add_interchange_test( add_interchange_test( name counter_arty + family ${family} device xc7a35t package csg324 tcl run.tcl diff --git a/fpga_interchange/examples/tests/ff/CMakeLists.txt b/fpga_interchange/examples/tests/ff/CMakeLists.txt index 953e6038..ccf16d44 100644 --- a/fpga_interchange/examples/tests/ff/CMakeLists.txt +++ b/fpga_interchange/examples/tests/ff/CMakeLists.txt @@ -1,5 +1,6 @@ add_interchange_test( name ff_basys3 + family ${family} device xc7a35t package cpg236 tcl run.tcl @@ -9,6 +10,7 @@ add_interchange_test( add_interchange_test( name ff_arty + family ${family} device xc7a35t package csg324 tcl run.tcl diff --git a/fpga_interchange/examples/tests/lut/CMakeLists.txt b/fpga_interchange/examples/tests/lut/CMakeLists.txt index 47b6f389..f5503f71 100644 --- a/fpga_interchange/examples/tests/lut/CMakeLists.txt +++ b/fpga_interchange/examples/tests/lut/CMakeLists.txt @@ -1,5 +1,6 @@ add_interchange_test( name lut_basys3 + family ${family} device xc7a35t package cpg236 tcl run.tcl @@ -9,6 +10,7 @@ add_interchange_test( add_interchange_test( name lut_arty + family ${family} device xc7a35t package csg324 tcl run.tcl diff --git a/fpga_interchange/examples/tests/wire/CMakeLists.txt b/fpga_interchange/examples/tests/wire/CMakeLists.txt index 9af3f0db..59faf402 100644 --- a/fpga_interchange/examples/tests/wire/CMakeLists.txt +++ b/fpga_interchange/examples/tests/wire/CMakeLists.txt @@ -1,5 +1,6 @@ add_interchange_test( name wire_basys3 + family ${family} device xc7a35t package cpg236 tcl run.tcl @@ -9,6 +10,7 @@ add_interchange_test( add_interchange_test( name wire_arty + family ${family} device xc7a35t package csg324 tcl run.tcl |