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 | 
