aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlessandro Comodi <acomodi@antmicro.com>2021-03-16 21:49:06 +0100
committerAlessandro Comodi <acomodi@antmicro.com>2021-03-16 22:02:06 +0100
commitc1e668f8238141a7d19525e9eb7a23c17cd1b120 (patch)
tree522ac7362ca83cde34b04233fc7dcce75d24b666
parentf9e9fadbc8ec794ed43f94d237fe4b889c5e13d8 (diff)
downloadnextpnr-c1e668f8238141a7d19525e9eb7a23c17cd1b120.tar.gz
nextpnr-c1e668f8238141a7d19525e9eb7a23c17cd1b120.tar.bz2
nextpnr-c1e668f8238141a7d19525e9eb7a23c17cd1b120.zip
fpga_interchange: address review comments
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
-rw-r--r--.github/workflows/interchange_ci.yml6
-rw-r--r--fpga_interchange/examples/chipdb.cmake40
-rw-r--r--fpga_interchange/examples/devices/xc7a35t/CMakeLists.txt4
-rw-r--r--fpga_interchange/examples/tests.cmake53
-rw-r--r--fpga_interchange/examples/tests/const_wire/CMakeLists.txt2
-rw-r--r--fpga_interchange/examples/tests/counter/CMakeLists.txt2
-rw-r--r--fpga_interchange/examples/tests/ff/CMakeLists.txt2
-rw-r--r--fpga_interchange/examples/tests/lut/CMakeLists.txt2
-rw-r--r--fpga_interchange/examples/tests/wire/CMakeLists.txt2
-rw-r--r--fpga_interchange/family.cmake3
10 files changed, 96 insertions, 20 deletions
diff --git a/.github/workflows/interchange_ci.yml b/.github/workflows/interchange_ci.yml
index 66cdfc6c..1ca42bb7 100644
--- a/.github/workflows/interchange_ci.yml
+++ b/.github/workflows/interchange_ci.yml
@@ -22,6 +22,8 @@ jobs:
- name: Execute build script
run: stdbuf -i0 -o0 -e0 ./.github/ci/build_interchange.sh
- - name: Execute test script
+ - name: Run tests
run: |
- cd build && make all-fpga_interchange-tests -j`nproc`
+ cd build
+ make all-fpga_interchange-archcheck-tests -j`nproc`
+ make all-fpga_interchange-tests -j`nproc`
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
diff --git a/fpga_interchange/family.cmake b/fpga_interchange/family.cmake
index ec5cdb59..bad439f8 100644
--- a/fpga_interchange/family.cmake
+++ b/fpga_interchange/family.cmake
@@ -19,9 +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_custom_target(all-${family}-archcheck-tests)
add_subdirectory(${family}/examples/devices)
add_subdirectory(${family}/examples/tests)