set(BASE_TEST_NAME bram_test)
get_target_property_required(UART_SOURCES uart_library SOURCES)

list(APPEND SOURCES ${f4pga-arch-defs_SOURCE_DIR}/library/lfsr.v ${COMMON}/error_output_logic.v ${COMMON}/ram_test.v)

get_target_property_required(DEVICE basys3 DEVICE)
get_target_property_required(ARCH ${DEVICE} ARCH)

# Symmetric modes only
set(BRAM18_WIDTHS 1 2 4 9 18)
set(BRAM36_WIDTHS 1 2 4 9 18 36)

add_file_target(FILE bram_test.v SCANNER_TYPE verilog)

get_target_property_required(PYTHON3 env PYTHON3)
set(GENERATE_DEPS ${CMAKE_CURRENT_SOURCE_DIR}/generate_test.py ${PYTHON3})

add_custom_target(all_xc7_bram_diff_fasm)
set(ANY_BRAM_DIFF_FASM FALSE)
foreach(type 18 36)
    foreach(width ${BRAM${type}_WIDTHS})
        set(FNAME ${BASE_TEST_NAME}_${type}_${width}.v)
        add_custom_command(
            OUTPUT ${FNAME}
            COMMAND ${PYTHON3}
              ${CMAKE_CURRENT_SOURCE_DIR}/generate_test.py
                --type ${type}
                --width ${width}
                > ${CMAKE_CURRENT_BINARY_DIR}/${FNAME}
            DEPENDS ${GENERATE_DEPS})

        add_file_target(FILE ${FNAME} GENERATED)
        get_file_target(TARGET_NAME ${FNAME})

        set_target_properties(
            ${TARGET_NAME}
            PROPERTIES
                INCLUDE_FILES bram_test.v)

        add_fpga_target(
            NAME ${BASE_TEST_NAME}_${type}_${width}
            BOARD basys3
            INPUT_IO_FILE ${COMMON}/basys3.pcf
            SOURCES ${UART_SOURCES} ${SOURCES} ${FNAME}
            EXPLICIT_ADD_FILE_TARGET
            )

        get_target_property_required(SYNTH_V ${BASE_TEST_NAME}_${type}_${width} SYNTH_V)

        add_autosim(
            NAME ${BASE_TEST_NAME}_${type}_${width}_autosim_synth
            TOP top
            ARCH ${ARCH}
            SOURCES ${SYNTH_V}
            CYCLES 3000
            )

        add_vivado_target(
            NAME bram_test_${type}_${width}_vivado
            PARENT_NAME bram_test_${type}_${width}
            CLOCK_PINS clk
            CLOCK_PERIODS 10.0
            )

        if(${ALL_XC7_DIFF_FASM_VERILOG})
            set(DIFF_FASM_TARGET bram_test_${type}_${width}_vivado_diff_fasm)
            if(TARGET ${DIFF_FASM_TARGET})
                add_dependencies(all_xc7_bram_diff_fasm ${DIFF_FASM_TARGET})
                set(ANY_BRAM_DIFF_FASM TRUE)
            endif()
        endif()
        if(${ALL_XC7_DIFF_FASM_INTERCHANGE})
            set(DIFF_FASM_TARGET bram_test_${type}_${width}_vivado_interchange_diff_fasm)
            if(TARGET ${DIFF_FASM_TARGET})
                add_dependencies(all_xc7_bram_diff_fasm ${DIFF_FASM_TARGET})
                set(ANY_BRAM_DIFF_FASM TRUE)
            endif()
        endif()
    endforeach()
endforeach()

if(NOT ${ANY_BRAM_DIFF_FASM})
    add_custom_target(
        no_bram_diff_fasm_targets
        COMMAND ${CMAKE_COMMAND} -E echo "No targets for all_xc7_bram_diff_fasm, check CMake configure messages for details.")
    add_dependencies(all_xc7_bram_diff_fasm no_bram_diff_fasm_targets)
endif()
