blob: b4b86c9128e62b67063caddbb1987a22b7dda08d [file] [log] [blame]
# 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()