fpga_interchange: cmake: generate only one device family
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
This commit is contained in:
parent
77ffdd7fd4
commit
490fdb0a1c
@ -1,6 +1,6 @@
|
|||||||
function(create_rapidwright_device_db)
|
function(create_rapidwright_device_db)
|
||||||
set(options)
|
set(options)
|
||||||
set(oneValueArgs part)
|
set(oneValueArgs device part)
|
||||||
set(multiValueArgs)
|
set(multiValueArgs)
|
||||||
|
|
||||||
cmake_parse_arguments(
|
cmake_parse_arguments(
|
||||||
@ -11,6 +11,7 @@ function(create_rapidwright_device_db)
|
|||||||
${ARGN}
|
${ARGN}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set(device ${create_rapidwright_device_db_device})
|
||||||
set(part ${create_rapidwright_device_db_part})
|
set(part ${create_rapidwright_device_db_part})
|
||||||
set(rapidwright_device_db ${CMAKE_CURRENT_BINARY_DIR}/${part}.device)
|
set(rapidwright_device_db ${CMAKE_CURRENT_BINARY_DIR}/${part}.device)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
@ -24,35 +25,32 @@ function(create_rapidwright_device_db)
|
|||||||
${RAPIDWRIGHT_PATH}/scripts/invoke_rapidwright.sh
|
${RAPIDWRIGHT_PATH}/scripts/invoke_rapidwright.sh
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(rapidwright-${part}-device DEPENDS ${rapidwright_device_db})
|
add_custom_target(rapidwright-${device}-device DEPENDS ${rapidwright_device_db})
|
||||||
set_property(TARGET rapidwright-${part}-device PROPERTY LOCATION ${rapidwright_device_db})
|
set_property(TARGET rapidwright-${device}-device PROPERTY LOCATION ${rapidwright_device_db})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(generate_chipdb)
|
function(create_patched_device_db)
|
||||||
set(options)
|
set(options)
|
||||||
set(oneValueArgs part)
|
set(oneValueArgs device)
|
||||||
set(multiValueArgs)
|
set(multiValueArgs)
|
||||||
|
|
||||||
cmake_parse_arguments(
|
cmake_parse_arguments(
|
||||||
generate_chipdb
|
create_patched_device_db
|
||||||
"${options}"
|
"${options}"
|
||||||
"${oneValueArgs}"
|
"${oneValueArgs}"
|
||||||
"${multiValueArgs}"
|
"${multiValueArgs}"
|
||||||
${ARGN}
|
${ARGN}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(part ${generate_chipdb_part})
|
set(device ${create_patched_device_db_device})
|
||||||
|
|
||||||
create_rapidwright_device_db(part ${part})
|
get_property(rapidwright_device_loc TARGET rapidwright-${device}-device PROPERTY LOCATION)
|
||||||
|
|
||||||
set(rapidwright_device_target rapidwright-${part}-device)
|
set(constraints_device ${CMAKE_CURRENT_BINARY_DIR}/${device}_constraints.device)
|
||||||
get_property(rapidwright_device_loc TARGET ${rapidwright_device_target} PROPERTY LOCATION)
|
|
||||||
|
|
||||||
set(constraints_device ${CMAKE_CURRENT_BINARY_DIR}/${part}_constraints.device)
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${constraints_device}
|
OUTPUT ${constraints_device}
|
||||||
COMMAND
|
COMMAND
|
||||||
python3 -mfpga_interchange.patch
|
${PYTHON_EXECUTABLE} -mfpga_interchange.patch
|
||||||
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
||||||
--schema device
|
--schema device
|
||||||
--patch_path constraints
|
--patch_path constraints
|
||||||
@ -61,16 +59,16 @@ function(generate_chipdb)
|
|||||||
${PYTHON_INTERCHANGE_PATH}/test_data/series7_constraints.yaml
|
${PYTHON_INTERCHANGE_PATH}/test_data/series7_constraints.yaml
|
||||||
${constraints_device}
|
${constraints_device}
|
||||||
DEPENDS
|
DEPENDS
|
||||||
${rapidwright_device_target}
|
rapidwright-${device}-device
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(constraints-${part}-device DEPENDS ${constraints_device})
|
add_custom_target(constraints-${device}-device DEPENDS ${constraints_device})
|
||||||
|
|
||||||
set(constraints_luts_device ${CMAKE_CURRENT_BINARY_DIR}/${part}_constraints_luts.device)
|
set(constraints_luts_device ${CMAKE_CURRENT_BINARY_DIR}/${device}_constraints_luts.device)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${constraints_luts_device}
|
OUTPUT ${constraints_luts_device}
|
||||||
COMMAND
|
COMMAND
|
||||||
python3 -mfpga_interchange.patch
|
${PYTHON_EXECUTABLE} -mfpga_interchange.patch
|
||||||
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
||||||
--schema device
|
--schema device
|
||||||
--patch_path lutDefinitions
|
--patch_path lutDefinitions
|
||||||
@ -82,26 +80,50 @@ function(generate_chipdb)
|
|||||||
${constraints_device}
|
${constraints_device}
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(constraints-luts-${part}-device DEPENDS ${constraints_luts_device})
|
add_custom_target(constraints-luts-${device}-device DEPENDS ${constraints_luts_device})
|
||||||
set_property(TARGET constraints-luts-${part}-device PROPERTY LOCATION ${constraints_luts_device})
|
set_property(TARGET constraints-luts-${device}-device PROPERTY LOCATION ${constraints_luts_device})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
set(chipdb_bba ${chipdb_dir}/chipdb-${part}.bba)
|
function(generate_chipdb)
|
||||||
|
set(options)
|
||||||
|
set(oneValueArgs device part)
|
||||||
|
set(multiValueArgs)
|
||||||
|
|
||||||
|
cmake_parse_arguments(
|
||||||
|
generate_chipdb
|
||||||
|
"${options}"
|
||||||
|
"${oneValueArgs}"
|
||||||
|
"${multiValueArgs}"
|
||||||
|
${ARGN}
|
||||||
|
)
|
||||||
|
|
||||||
|
set(device ${generate_chipdb_device})
|
||||||
|
set(part ${generate_chipdb_part})
|
||||||
|
|
||||||
|
create_rapidwright_device_db(
|
||||||
|
device ${device}
|
||||||
|
part ${part}
|
||||||
|
)
|
||||||
|
create_patched_device_db(device ${device})
|
||||||
|
|
||||||
|
get_property(constrained_luts_device_loc TARGET constraints-luts-${device}-device PROPERTY LOCATION)
|
||||||
|
set(chipdb_bba ${chipdb_dir}/chipdb-${device}.bba)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${chipdb_bba}
|
OUTPUT ${chipdb_bba}
|
||||||
COMMAND
|
COMMAND
|
||||||
python3 -mfpga_interchange.nextpnr_emit
|
${PYTHON_EXECUTABLE} -mfpga_interchange.nextpnr_emit
|
||||||
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
||||||
--output_dir ${chipdb_dir}
|
--output_dir ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
--bel_bucket_seeds ${PYTHON_INTERCHANGE_PATH}/test_data/series7_bel_buckets.yaml
|
--bel_bucket_seeds ${PYTHON_INTERCHANGE_PATH}/test_data/series7_bel_buckets.yaml
|
||||||
--device ${constraints_luts_device}
|
--device ${constrained_luts_device_loc}
|
||||||
COMMAND
|
COMMAND
|
||||||
mv ${chipdb_dir}/chipdb.bba ${chipdb_bba}
|
mv ${CMAKE_CURRENT_BINARY_DIR}/chipdb.bba ${chipdb_bba}
|
||||||
DEPENDS
|
DEPENDS
|
||||||
${constraints_luts_device}
|
constraints-luts-${device}-device
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(chipdb-${part}-bba DEPENDS ${chipdb_bba})
|
add_custom_target(chipdb-${device}-bba DEPENDS ${chipdb_bba})
|
||||||
add_dependencies(chipdb-${family}-bbas chipdb-${part}-bba)
|
add_dependencies(chipdb-${family}-bbas chipdb-${device}-bba)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
set(chipdb_dir ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb)
|
set(chipdb_dir ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb)
|
||||||
|
@ -1 +1,4 @@
|
|||||||
add_subdirectory(xc7a35t)
|
generate_chipdb(
|
||||||
|
device xc7a50t
|
||||||
|
part xc7a50tfgg484-1
|
||||||
|
)
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
generate_chipdb(part xc7a35tcsg324-1)
|
|
||||||
generate_chipdb(part xc7a35tcpg236-1)
|
|
@ -2,8 +2,8 @@ function(add_interchange_test)
|
|||||||
# ~~~
|
# ~~~
|
||||||
# add_interchange_test(
|
# add_interchange_test(
|
||||||
# name <name>
|
# name <name>
|
||||||
# part <part>
|
# device <common device>
|
||||||
# part <package>
|
# package <package>
|
||||||
# tcl <tcl>
|
# tcl <tcl>
|
||||||
# xdc <xdc>
|
# xdc <xdc>
|
||||||
# top <top name>
|
# top <top name>
|
||||||
@ -12,7 +12,7 @@ function(add_interchange_test)
|
|||||||
# ~~~
|
# ~~~
|
||||||
|
|
||||||
set(options)
|
set(options)
|
||||||
set(oneValueArgs name part package tcl xdc top)
|
set(oneValueArgs name device package tcl xdc top)
|
||||||
set(multiValueArgs sources)
|
set(multiValueArgs sources)
|
||||||
|
|
||||||
cmake_parse_arguments(
|
cmake_parse_arguments(
|
||||||
@ -24,7 +24,7 @@ function(add_interchange_test)
|
|||||||
)
|
)
|
||||||
|
|
||||||
set(name ${add_interchange_test_name})
|
set(name ${add_interchange_test_name})
|
||||||
set(part ${add_interchange_test_part})
|
set(device ${add_interchange_test_device})
|
||||||
set(package ${add_interchange_test_package})
|
set(package ${add_interchange_test_package})
|
||||||
set(top ${add_interchange_test_top})
|
set(top ${add_interchange_test_top})
|
||||||
set(tcl ${CMAKE_CURRENT_SOURCE_DIR}/${add_interchange_test_tcl})
|
set(tcl ${CMAKE_CURRENT_SOURCE_DIR}/${add_interchange_test_tcl})
|
||||||
@ -54,14 +54,14 @@ function(add_interchange_test)
|
|||||||
add_custom_target(test-${family}-${name}-json DEPENDS ${synth_json})
|
add_custom_target(test-${family}-${name}-json DEPENDS ${synth_json})
|
||||||
|
|
||||||
# Logical Netlist
|
# Logical Netlist
|
||||||
set(device_target constraints-luts-${part}-device)
|
set(device_target constraints-luts-${device}-device)
|
||||||
get_property(device_loc TARGET constraints-luts-${part}-device PROPERTY LOCATION)
|
get_property(device_loc TARGET constraints-luts-${device}-device PROPERTY LOCATION)
|
||||||
|
|
||||||
set(netlist ${CMAKE_CURRENT_BINARY_DIR}/${name}.netlist)
|
set(netlist ${CMAKE_CURRENT_BINARY_DIR}/${name}.netlist)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${netlist}
|
OUTPUT ${netlist}
|
||||||
COMMAND
|
COMMAND
|
||||||
python3 -mfpga_interchange.yosys_json
|
${PYTHON_EXECUTABLE} -mfpga_interchange.yosys_json
|
||||||
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
||||||
--device ${device_loc}
|
--device ${device_loc}
|
||||||
--top ${top}
|
--top ${top}
|
||||||
@ -74,7 +74,7 @@ function(add_interchange_test)
|
|||||||
|
|
||||||
add_custom_target(test-${family}-${name}-netlist DEPENDS ${netlist})
|
add_custom_target(test-${family}-${name}-netlist DEPENDS ${netlist})
|
||||||
|
|
||||||
set(chipdb_target chipdb-${part}-bba)
|
set(chipdb_target chipdb-${device}-bba)
|
||||||
|
|
||||||
# Physical Netlist
|
# Physical Netlist
|
||||||
set(phys ${CMAKE_CURRENT_BINARY_DIR}/${name}.phys)
|
set(phys ${CMAKE_CURRENT_BINARY_DIR}/${name}.phys)
|
||||||
@ -82,7 +82,7 @@ function(add_interchange_test)
|
|||||||
OUTPUT ${phys}
|
OUTPUT ${phys}
|
||||||
COMMAND
|
COMMAND
|
||||||
nextpnr-fpga_interchange
|
nextpnr-fpga_interchange
|
||||||
--chipdb ${chipdb_dir}/chipdb-${part}.bba
|
--chipdb ${chipdb_dir}/chipdb-${device}.bba
|
||||||
--xdc ${xdc}
|
--xdc ${xdc}
|
||||||
--netlist ${netlist}
|
--netlist ${netlist}
|
||||||
--phys ${phys}
|
--phys ${phys}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
add_interchange_test(
|
add_interchange_test(
|
||||||
name const_wire_basys3
|
name const_wire_basys3
|
||||||
part xc7a35tcpg236-1
|
device xc7a50t
|
||||||
package cpg236
|
package cpg236
|
||||||
tcl run.tcl
|
tcl run.tcl
|
||||||
xdc wire.xdc
|
xdc wire.xdc
|
||||||
@ -9,7 +9,7 @@ add_interchange_test(
|
|||||||
|
|
||||||
add_interchange_test(
|
add_interchange_test(
|
||||||
name const_wire_arty
|
name const_wire_arty
|
||||||
part xc7a35tcsg324-1
|
device xc7a50t
|
||||||
package csg324
|
package csg324
|
||||||
tcl run.tcl
|
tcl run.tcl
|
||||||
xdc wire.xdc
|
xdc wire.xdc
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
add_interchange_test(
|
add_interchange_test(
|
||||||
name counter_basys3
|
name counter_basys3
|
||||||
part xc7a35tcpg236-1
|
device xc7a50t
|
||||||
package cpg236
|
package cpg236
|
||||||
tcl run.tcl
|
tcl run.tcl
|
||||||
xdc counter.xdc
|
xdc counter.xdc
|
||||||
@ -9,7 +9,7 @@ add_interchange_test(
|
|||||||
|
|
||||||
add_interchange_test(
|
add_interchange_test(
|
||||||
name counter_arty
|
name counter_arty
|
||||||
part xc7a35tcsg324-1
|
device xc7a50t
|
||||||
package csg324
|
package csg324
|
||||||
tcl run.tcl
|
tcl run.tcl
|
||||||
xdc counter.xdc
|
xdc counter.xdc
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
add_interchange_test(
|
add_interchange_test(
|
||||||
name ff_basys3
|
name ff_basys3
|
||||||
part xc7a35tcpg236-1
|
device xc7a50t
|
||||||
package cpg236
|
package cpg236
|
||||||
tcl run.tcl
|
tcl run.tcl
|
||||||
xdc ff.xdc
|
xdc ff.xdc
|
||||||
@ -9,7 +9,7 @@ add_interchange_test(
|
|||||||
|
|
||||||
add_interchange_test(
|
add_interchange_test(
|
||||||
name ff_arty
|
name ff_arty
|
||||||
part xc7a35tcsg324-1
|
device xc7a50t
|
||||||
package csg324
|
package csg324
|
||||||
tcl run.tcl
|
tcl run.tcl
|
||||||
xdc ff.xdc
|
xdc ff.xdc
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
add_interchange_test(
|
add_interchange_test(
|
||||||
name lut_basys3
|
name lut_basys3
|
||||||
part xc7a35tcpg236-1
|
device xc7a50t
|
||||||
package cpg236
|
package cpg236
|
||||||
tcl run.tcl
|
tcl run.tcl
|
||||||
xdc lut.xdc
|
xdc lut.xdc
|
||||||
@ -9,7 +9,7 @@ add_interchange_test(
|
|||||||
|
|
||||||
add_interchange_test(
|
add_interchange_test(
|
||||||
name lut_arty
|
name lut_arty
|
||||||
part xc7a35tcsg324-1
|
device xc7a50t
|
||||||
package csg324
|
package csg324
|
||||||
tcl run.tcl
|
tcl run.tcl
|
||||||
xdc lut.xdc
|
xdc lut.xdc
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
add_interchange_test(
|
add_interchange_test(
|
||||||
name wire_basys3
|
name wire_basys3
|
||||||
part xc7a35tcpg236-1
|
device xc7a50t
|
||||||
package cpg236
|
package cpg236
|
||||||
tcl run.tcl
|
tcl run.tcl
|
||||||
xdc wire.xdc
|
xdc wire.xdc
|
||||||
@ -9,7 +9,7 @@ add_interchange_test(
|
|||||||
|
|
||||||
add_interchange_test(
|
add_interchange_test(
|
||||||
name wire_arty
|
name wire_arty
|
||||||
part xc7a35tcsg324-1
|
device xc7a50t
|
||||||
package csg324
|
package csg324
|
||||||
tcl run.tcl
|
tcl run.tcl
|
||||||
xdc wire.xdc
|
xdc wire.xdc
|
||||||
|
Loading…
Reference in New Issue
Block a user