2021-03-12 19:25:41 +08:00
|
|
|
function(create_rapidwright_device_db)
|
|
|
|
set(options)
|
2021-03-12 23:37:00 +08:00
|
|
|
set(oneValueArgs device part)
|
2021-03-12 19:25:41 +08:00
|
|
|
set(multiValueArgs)
|
|
|
|
|
|
|
|
cmake_parse_arguments(
|
|
|
|
create_rapidwright_device_db
|
|
|
|
"${options}"
|
|
|
|
"${oneValueArgs}"
|
|
|
|
"${multiValueArgs}"
|
|
|
|
${ARGN}
|
|
|
|
)
|
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
set(device ${create_rapidwright_device_db_device})
|
2021-03-12 19:25:41 +08:00
|
|
|
set(part ${create_rapidwright_device_db_part})
|
|
|
|
set(rapidwright_device_db ${CMAKE_CURRENT_BINARY_DIR}/${part}.device)
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${rapidwright_device_db}
|
|
|
|
COMMAND
|
|
|
|
RAPIDWRIGHT_PATH=${RAPIDWRIGHT_PATH}
|
|
|
|
${RAPIDWRIGHT_PATH}/scripts/invoke_rapidwright.sh
|
|
|
|
com.xilinx.rapidwright.interchange.DeviceResourcesExample
|
|
|
|
${part}
|
|
|
|
DEPENDS
|
|
|
|
${RAPIDWRIGHT_PATH}/scripts/invoke_rapidwright.sh
|
|
|
|
)
|
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
add_custom_target(rapidwright-${device}-device DEPENDS ${rapidwright_device_db})
|
|
|
|
set_property(TARGET rapidwright-${device}-device PROPERTY LOCATION ${rapidwright_device_db})
|
2021-03-12 19:25:41 +08:00
|
|
|
endfunction()
|
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
function(create_patched_device_db)
|
2021-03-12 19:25:41 +08:00
|
|
|
set(options)
|
2021-03-12 23:37:00 +08:00
|
|
|
set(oneValueArgs device)
|
2021-03-12 19:25:41 +08:00
|
|
|
set(multiValueArgs)
|
|
|
|
|
|
|
|
cmake_parse_arguments(
|
2021-03-12 23:37:00 +08:00
|
|
|
create_patched_device_db
|
2021-03-12 19:25:41 +08:00
|
|
|
"${options}"
|
|
|
|
"${oneValueArgs}"
|
|
|
|
"${multiValueArgs}"
|
|
|
|
${ARGN}
|
|
|
|
)
|
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
set(device ${create_patched_device_db_device})
|
2021-03-12 19:25:41 +08:00
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
get_property(rapidwright_device_loc TARGET rapidwright-${device}-device PROPERTY LOCATION)
|
2021-03-12 19:25:41 +08:00
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
set(constraints_device ${CMAKE_CURRENT_BINARY_DIR}/${device}_constraints.device)
|
2021-03-12 19:25:41 +08:00
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${constraints_device}
|
|
|
|
COMMAND
|
2021-03-12 23:37:00 +08:00
|
|
|
${PYTHON_EXECUTABLE} -mfpga_interchange.patch
|
2021-03-12 19:25:41 +08:00
|
|
|
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
|
|
|
--schema device
|
|
|
|
--patch_path constraints
|
|
|
|
--patch_format yaml
|
|
|
|
${rapidwright_device_loc}
|
|
|
|
${PYTHON_INTERCHANGE_PATH}/test_data/series7_constraints.yaml
|
|
|
|
${constraints_device}
|
|
|
|
DEPENDS
|
2021-03-12 23:37:00 +08:00
|
|
|
rapidwright-${device}-device
|
2021-03-12 19:25:41 +08:00
|
|
|
)
|
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
add_custom_target(constraints-${device}-device DEPENDS ${constraints_device})
|
2021-03-12 19:25:41 +08:00
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
set(constraints_luts_device ${CMAKE_CURRENT_BINARY_DIR}/${device}_constraints_luts.device)
|
2021-03-12 19:25:41 +08:00
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${constraints_luts_device}
|
|
|
|
COMMAND
|
2021-03-12 23:37:00 +08:00
|
|
|
${PYTHON_EXECUTABLE} -mfpga_interchange.patch
|
2021-03-12 19:25:41 +08:00
|
|
|
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
|
|
|
--schema device
|
|
|
|
--patch_path lutDefinitions
|
|
|
|
--patch_format yaml
|
|
|
|
${constraints_device}
|
|
|
|
${PYTHON_INTERCHANGE_PATH}/test_data/series7_luts.yaml
|
|
|
|
${constraints_luts_device}
|
|
|
|
DEPENDS
|
|
|
|
${constraints_device}
|
|
|
|
)
|
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
add_custom_target(constraints-luts-${device}-device DEPENDS ${constraints_luts_device})
|
|
|
|
set_property(TARGET constraints-luts-${device}-device PROPERTY LOCATION ${constraints_luts_device})
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
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})
|
2021-03-12 19:25:41 +08:00
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
get_property(constrained_luts_device_loc TARGET constraints-luts-${device}-device PROPERTY LOCATION)
|
|
|
|
set(chipdb_bba ${chipdb_dir}/chipdb-${device}.bba)
|
2021-03-12 19:25:41 +08:00
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${chipdb_bba}
|
|
|
|
COMMAND
|
2021-03-12 23:37:00 +08:00
|
|
|
${PYTHON_EXECUTABLE} -mfpga_interchange.nextpnr_emit
|
2021-03-12 19:25:41 +08:00
|
|
|
--schema_dir ${INTERCHANGE_SCHEMA_PATH}
|
2021-03-12 23:37:00 +08:00
|
|
|
--output_dir ${CMAKE_CURRENT_BINARY_DIR}
|
2021-03-12 19:25:41 +08:00
|
|
|
--bel_bucket_seeds ${PYTHON_INTERCHANGE_PATH}/test_data/series7_bel_buckets.yaml
|
2021-03-12 23:37:00 +08:00
|
|
|
--device ${constrained_luts_device_loc}
|
2021-03-12 19:25:41 +08:00
|
|
|
COMMAND
|
2021-03-12 23:37:00 +08:00
|
|
|
mv ${CMAKE_CURRENT_BINARY_DIR}/chipdb.bba ${chipdb_bba}
|
2021-03-12 19:25:41 +08:00
|
|
|
DEPENDS
|
2021-03-12 23:37:00 +08:00
|
|
|
constraints-luts-${device}-device
|
2021-03-12 19:25:41 +08:00
|
|
|
)
|
|
|
|
|
2021-03-12 23:37:00 +08:00
|
|
|
add_custom_target(chipdb-${device}-bba DEPENDS ${chipdb_bba})
|
|
|
|
add_dependencies(chipdb-${family}-bbas chipdb-${device}-bba)
|
2021-03-12 19:25:41 +08:00
|
|
|
endfunction()
|
|
|
|
|
|
|
|
set(chipdb_dir ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb)
|
|
|
|
file(MAKE_DIRECTORY ${chipdb_dir})
|
|
|
|
|
|
|
|
add_custom_target(chipdb-${family}-bbas)
|
|
|
|
|
|
|
|
add_subdirectory(${family}/examples/devices)
|