| # ADD_BINARY_TOOLCHAIN_TEST |
| # |
| # This function adds a test for installed SymbiFlow toolchain (a.k.a. binary |
| # toolchain) |
| # |
| # Tests added require "make install" to be run upfront to install the toolchain |
| |
| function(ADD_BINARY_TOOLCHAIN_TEST) |
| |
| set(options) |
| set(oneValueArgs TEST_NAME DEVICE PINMAP EXTRA_ARGS) |
| set(multiValueArgs) |
| |
| cmake_parse_arguments( |
| ADD_BINARY_TOOLCHAIN_TEST |
| "${options}" |
| "${oneValueArgs}" |
| "${multiValueArgs}" |
| ${ARGN} |
| ) |
| |
| set(INSTALLATION_DIR_BIN "${CMAKE_INSTALL_PREFIX}/bin") |
| |
| set(TEST_NAME ${ADD_BINARY_TOOLCHAIN_TEST_TEST_NAME}) |
| set(DEVICE ${ADD_BINARY_TOOLCHAIN_TEST_DEVICE}) |
| set(PINMAP ${ADD_BINARY_TOOLCHAIN_TEST_PINMAP}) |
| set(EXTRA_ARGS ${ADD_BINARY_TOOLCHAIN_TEST_EXTRA_ARGS}) |
| |
| set(SOURCES "${TEST_NAME}.v") |
| |
| set(PCF "${TEST_NAME}.pcf") |
| set(SDC "${TEST_NAME}.sdc") |
| |
| set(TOOLCHAIN_COMMAND "\ |
| ql_symbiflow \ |
| -synth \ |
| -src ${CMAKE_CURRENT_SOURCE_DIR} \ |
| -d ${DEVICE} \ |
| -t top \ |
| -v ${SOURCES} \ |
| -P ${PINMAP} " |
| ) |
| |
| if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PCF}") |
| set(TOOLCHAIN_COMMAND "${TOOLCHAIN_COMMAND} -p \"${PCF}\"") |
| endif() |
| if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SDC}") |
| set(TOOLCHAIN_COMMAND "${TOOLCHAIN_COMMAND} -s \"${SDC}\"") |
| endif() |
| |
| set(TOOLCHAIN_COMMAND "${TOOLCHAIN_COMMAND} ${EXTRA_ARGS}") |
| separate_arguments(TOOLCHAIN_COMMAND_LIST NATIVE_COMMAND ${TOOLCHAIN_COMMAND}) |
| |
| add_test(NAME quicklogic_toolchain_test_${TEST_NAME}_${DEVICE} |
| COMMAND |
| ${CMAKE_COMMAND} -E env |
| PATH=${INSTALLATION_DIR_BIN}:$ENV{PATH} |
| ${TOOLCHAIN_COMMAND_LIST} |
| WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| ) |
| |
| endfunction() |