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)
