blob: c1773a1f25be6a31c0630110f9d3d297fe11caed [file] [log] [blame] [edit]
get_filename_component(IBEX_DIR ${f4pga-arch-defs_SOURCE_DIR}/third_party/ibex ABSOLUTE)
set(SV2V_ROM_INIT_FILE led.vmem)
set(SV2V_IBEX_FLAGS --define=RegFile=ibex_pkg::RegFileFF --define=SRAMInitFile=${SV2V_ROM_INIT_FILE})
# Get the list of source files used by the fusesoc to build the Ibex example
execute_process(
COMMAND
python3 ${CMAKE_CURRENT_SOURCE_DIR}/generate.py
--only-deps
--root_source_dir ${f4pga-arch-defs_SOURCE_DIR}
--current_binary_dir ${CMAKE_CURRENT_BINARY_DIR}
OUTPUT_VARIABLE FILES_FROM_GENERATE_SCRIPT
)
# Sort the file list into sources and includes
set(SOURCE_FILE_LIST "")
set(INCLUDE_FILE_LIST "")
string(REPLACE "\n" ";" FILE_LIST "${FILES_FROM_GENERATE_SCRIPT}")
foreach(FILE_NAME ${FILE_LIST})
get_filename_component(FILE_EXT ${FILE_NAME} EXT)
if (${FILE_EXT} STREQUAL ".sv")
list(APPEND SOURCE_FILE_LIST ${FILE_NAME})
elseif (${FILE_EXT} STREQUAL ".svh")
list(APPEND INCLUDE_FILE_LIST ${FILE_NAME})
endif()
endforeach()
# Add a command for generating the Ibex source files in the build directory
add_custom_command(
OUTPUT ${SOURCE_FILE_LIST} ${INCLUDE_FILE_LIST}
COMMAND
python3 ${CMAKE_CURRENT_SOURCE_DIR}/generate.py
--root_source_dir ${f4pga-arch-defs_SOURCE_DIR}
--current_binary_dir ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${PYTHON3} ${IBEX_DIR}
)
# Create file targets
add_file_target(FILE ${SV2V_ROM_INIT_FILE})
foreach(INC ${INCLUDE_FILE_LIST})
add_file_target(FILE ${INC} GENERATED)
endforeach()
foreach(SRC ${SOURCE_FILE_LIST})
add_file_target(FILE ${SRC} GENERATED)
get_file_target(TARGET ${SRC})
set_target_properties(${TARGET} PROPERTIES INCLUDE_FILES "${INCLUDE_FILE_LIST};${SV2V_ROM_INIT_FILE}")
endforeach()
# sv2v conversion
add_sv2v_target(
NAME ibex
SOURCES ${SOURCE_FILE_LIST}
FLAGS ${SV2V_IBEX_FLAGS}
)
# Arty Board
#
add_file_target(FILE pins_artya7.sdc)
add_file_target(FILE pins_artya7.pcf)
add_fpga_target(
NAME ibex_arty
BOARD arty-full
TOP top_artya7
SOURCES ibex_sv2v.v
INPUT_IO_FILE pins_artya7.pcf
INPUT_SDC_FILE pins_artya7.sdc
EXPLICIT_ADD_FILE_TARGET
INSTALL_CIRCUIT
)
add_vivado_target(
NAME ibex_arty_vivado
PARENT_NAME ibex_arty
)
# Nexys Video Board
add_file_target(FILE pins_nexys_video.sdc)
add_file_target(FILE pins_nexys_video.pcf)
add_fpga_target(
NAME ibex_nexys_video
BOARD nexys_video-mid
TOP top_artya7
SOURCES ibex_sv2v.v
INPUT_IO_FILE pins_nexys_video.pcf
INPUT_SDC_FILE pins_nexys_video.sdc
EXPLICIT_ADD_FILE_TARGET
)
add_vivado_target(
NAME ibex_nexys_video_vivado
PARENT_NAME ibex_nexys_video
)