blob: 2b6ef05d904eae5a31715df47b4baa55945ffe1b [file] [log] [blame] [edit]
if (NOT LIGHT_BUILD)
add_file_target(FILE spiflash.v SCANNER_TYPE verilog)
add_file_target(FILE picosoc.v SCANNER_TYPE verilog)
add_file_target(FILE picorv32.v SCANNER_TYPE verilog)
add_file_target(FILE simpleuart.v SCANNER_TYPE verilog)
add_file_target(FILE spimemio.v SCANNER_TYPE verilog)
add_file_target(FILE picosoc_noflash.v SCANNER_TYPE verilog)
get_target_property_required(PYTHON3 env PYTHON3)
get_target_property(PYTHON3_TARGET env PYTHON3_TARGET)
set(HEX_FILES
firmware.hex
firmware_noflash_100.hex
firmware_noflash_50.hex
firmware_noflash_25.hex
)
foreach(HEX_FILE ${HEX_FILES})
get_filename_component(HEX_TITLE ${HEX_FILE} NAME_WE)
add_custom_command(
OUTPUT ${HEX_TITLE}.v
COMMAND ${PYTHON3} ${CMAKE_CURRENT_SOURCE_DIR}/hex2progmem.py ${CMAKE_CURRENT_SOURCE_DIR}/${HEX_FILE} --rom-style initial >${HEX_TITLE}.v
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/hex2progmem.py ${PYTHON3}
)
add_file_target(FILE ${HEX_TITLE}.v GENERATED)
endforeach()
# ============================================================================
# HX8K-B-EVN
add_file_target(FILE hx8kdemo.v SCANNER_TYPE verilog)
add_file_target(FILE hx8kdemo_tb.v SCANNER_TYPE verilog)
add_file_target(FILE hx8k-b-evn.pcf)
add_fpga_target(
NAME picosoc
BOARD hx8k-b-evn
TOP hx8kdemo
SOURCES
hx8kdemo.v
picosoc.v
picorv32.v
simpleuart.v
spimemio.v
TESTBENCH_SOURCES hx8kdemo_tb.v
INPUT_IO_FILE hx8k-b-evn.pcf
EXPLICIT_ADD_FILE_TARGET
)
# ============================================================================
# Basys3 (with ROI)
add_file_target(FILE basys3_demo.v SCANNER_TYPE verilog)
add_file_target(FILE basys3_demo_tb.v SCANNER_TYPE verilog)
add_fpga_target(
NAME picosoc_basys3
BOARD basys3
TOP basys3_demo
SOURCES
basys3_demo.v
picosoc_noflash.v
picorv32.v
simpleuart.v
firmware_noflash_100.v
INPUT_IO_FILE ${f4pga-arch-defs_SOURCE_DIR}/xilinx/xc7/tests/common/basys3.pcf
TESTBENCH_SOURCES basys3_demo_tb.v
EXPLICIT_ADD_FILE_TARGET
)
add_vivado_target(
NAME picosoc_basys3_vivado
PARENT_NAME picosoc_basys3
CLOCK_PINS clk
CLOCK_PERIODS 10.0
)
add_vivado_pnr_target(
NAME picosoc_basys3_vivado_pnr
PARENT_NAME picosoc_basys3
CLOCK_PINS clk
CLOCK_PERIODS 10.0
IOSTANDARD LVCMOS33
)
# ============================================================================
# Basys3 (full A50T, no ROI)
set(BASYS3_PCF ${f4pga-arch-defs_SOURCE_DIR}/xilinx/xc7/tests/common/basys3.pcf)
get_file_target(TARGET_BASYS3_PCF ${BASYS3_PCF})
set(BASYS3_FREQS 50 100)
add_file_target(FILE basys3.xdc)
foreach(FREQ ${BASYS3_FREQS})
add_file_target(FILE basys3-full_demo_${FREQ}.v SCANNER_TYPE verilog)
get_file_target(TARGET_BASYS3_DEMO_V basys3-full_demo_${FREQ}.v)
add_dependencies(${TARGET_BASYS3_DEMO_V} ${TARGET_BASYS3_PCF})
add_fpga_target(
NAME picosoc_basys3_full_${FREQ}
BOARD basys3-full
TOP basys3_demo
SOURCES
basys3-full_demo_${FREQ}.v
picosoc_noflash.v
picorv32.v
simpleuart.v
firmware_noflash_${FREQ}.v
INPUT_XDC_FILES basys3.xdc
INPUT_IO_FILE ${BASYS3_PCF}
EXPLICIT_ADD_FILE_TARGET
INSTALL_CIRCUIT
)
math(EXPR PERIOD "1000 / ${FREQ}" OUTPUT_FORMAT DECIMAL)
add_vivado_target(
NAME picosoc_basys3_full_${FREQ}_vivado
PARENT_NAME picosoc_basys3_full_${FREQ}
CLOCK_PINS clk
CLOCK_PERIODS ${PERIOD}
)
endforeach()
# ============================================================================
# Nexys Video
set(NEXYS_VIDEO_PCF ${f4pga-arch-defs_SOURCE_DIR}/xilinx/xc7//tests/common/nexys_video.pcf)
set(NEXYS_VIDEO_XDC ${f4pga-arch-defs_SOURCE_DIR}/xilinx/xc7//tests/common/nexys_video.xdc)
get_file_target(TARGET_NEXYS_VIDEO_PCF ${NEXYS_VIDEO_PCF})
get_file_target(TARGET_NEXYS_VIDEO_XDC ${NEXYS_VIDEO_XDC})
set(NEXYS_VIDEO_FREQS 50 100)
foreach(FREQ ${NEXYS_VIDEO_FREQS})
add_file_target(FILE nexys_video_demo_${FREQ}.v SCANNER_TYPE verilog)
get_file_target(TARGET_NEXYS_VIDEO_DEMO_V nexys_video_demo_${FREQ}.v)
add_dependencies(${TARGET_NEXYS_VIDEO_DEMO_V} ${TARGET_NEXYS_VIDEO_XDC} ${TARGET_NEXYS_VIDEO_PCF})
math(EXPR PERIOD "1000 / ${FREQ}" OUTPUT_FORMAT DECIMAL)
add_fpga_target(
NAME picosoc_nexys_video_${FREQ}
BOARD nexys_video
TOP nexys_video_demo
SOURCES
nexys_video_demo_${FREQ}.v
picosoc_noflash.v
picorv32.v
simpleuart.v
firmware_noflash_${FREQ}.v
INPUT_IO_FILE ${NEXYS_VIDEO_PCF}
INPUT_XDC_FILES ${NEXYS_VIDEO_XDC}
EXPLICIT_ADD_FILE_TARGET
)
add_vivado_target(
NAME picosoc_nexys_video_${FREQ}_vivado
PARENT_NAME picosoc_nexys_video_${FREQ}
CLOCK_PINS clk
CLOCK_PERIODS ${PERIOD}
)
# Nexys Video with a limited grid
add_fpga_target(
NAME picosoc_nexys_video_mid_${FREQ}
BOARD nexys_video-mid
TOP nexys_video_demo
SOURCES
nexys_video_demo_${FREQ}.v
picosoc_noflash.v
picorv32.v
simpleuart.v
firmware_noflash_${FREQ}.v
INPUT_IO_FILE ${NEXYS_VIDEO_PCF}
INPUT_XDC_FILES ${NEXYS_VIDEO_XDC}
EXPLICIT_ADD_FILE_TARGET
)
add_vivado_target(
NAME picosoc_nexys_video_mid_${FREQ}_vivado
PARENT_NAME picosoc_nexys_video_mid_${FREQ}
CLOCK_PINS clk
CLOCK_PERIODS ${PERIOD}
)
endforeach()
# ============================================================================
endif (NOT LIGHT_BUILD)