Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion quicklogic/common/cmake/quicklogic_install.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ function(DEFINE_QL_TOOLCHAIN_TARGET)
set(SCRIPTS
create_ioplace.py
create_place_constraints.py
eos_s3_iomux_config.py
iomux_config.py
)

foreach(NAME ${SCRIPTS})
Expand Down
24 changes: 10 additions & 14 deletions quicklogic/common/cmake/quicklogic_jlink.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ function(ADD_JLINK_OUTPUT)
get_target_property_required(PCF ${PARENT} INPUT_IO_FILE)
get_target_property_required(BITSTREAM ${PARENT} BIT)

get_target_property_required(BOARD ${PARENT} BOARD)
get_target_property_required(DEVICE ${BOARD} DEVICE)
string(REPLACE "ql-" "" DEVICE_NAME "${DEVICE}")

# Get the output directory
get_file_location(BITSTREAM_LOC ${BITSTREAM})
get_filename_component(WORK_DIR ${BITSTREAM_LOC} DIRECTORY)
Expand All @@ -37,7 +41,7 @@ function(ADD_JLINK_OUTPUT)
set(PINMAP ${symbiflow-arch-defs_BINARY_DIR}/quicklogic/pp3/${BOARD}_pinmap.csv)

# Generate a JLINK script that sets IOMUX configuration.
set(IOMUX_CONFIG_GEN ${symbiflow-arch-defs_SOURCE_DIR}/quicklogic/pp3/utils/eos_s3_iomux_config.py)
set(IOMUX_CONFIG_GEN ${symbiflow-arch-defs_SOURCE_DIR}/quicklogic/pp3/utils/iomux_config.py)
set(IOMUX_CONFIG "top_iomux.jlink")

set(IOMUX_CONFIG_DEPS)
Expand All @@ -59,31 +63,23 @@ function(ADD_JLINK_OUTPUT)
${IOMUX_CONFIG_ARGS}
--map ${PINMAP}
--output-format jlink
--device-name ${DEVICE_NAME}
>${WORK_DIR}/${IOMUX_CONFIG}
DEPENDS ${IOMUX_CONFIG_GEN} ${IOMUX_CONFIG_DEPS}
)

add_file_target(FILE ${WORK_DIR_REL}/${IOMUX_CONFIG} GENERATED)

# Convert the binary bitstream to a JLINK script
set(BIT_AS_JLINK "top.bit.jlink")

add_custom_command(
OUTPUT ${WORK_DIR}/${BIT_AS_JLINK}
COMMAND ${PYTHON3} -m quicklogic_fasm.bitstream_to_jlink ${BITSTREAM_LOC} ${WORK_DIR}/${BIT_AS_JLINK}
DEPENDS ${BITSTREAM}
)

add_file_target(FILE ${WORK_DIR_REL}/${BIT_AS_JLINK} GENERATED)

# Concatenate th bitstream JLink script and the IOMUX config JLink script
set(OUT_JLINK "top.jlink")
add_custom_command(
OUTPUT ${WORK_DIR}/${OUT_JLINK}
COMMAND cat ${WORK_DIR}/${BIT_AS_JLINK} ${WORK_DIR}/${IOMUX_CONFIG} >${WORK_DIR}/${OUT_JLINK}
DEPENDS ${WORK_DIR}/${BIT_AS_JLINK} ${WORK_DIR}/${IOMUX_CONFIG}
COMMAND ${PYTHON3} -m quicklogic_fasm.bitstream_to_jlink ${BITSTREAM_LOC} ${WORK_DIR}/${OUT_JLINK}
DEPENDS ${BITSTREAM} ${WORK_DIR}/${IOMUX_CONFIG}
)

add_file_target(FILE ${WORK_DIR_REL}/${OUT_JLINK} GENERATED)

add_custom_target(${PARENT}_jlink DEPENDS ${WORK_DIR}/${OUT_JLINK})


Expand Down
25 changes: 11 additions & 14 deletions quicklogic/common/cmake/quicklogic_openocd.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ function(ADD_OPENOCD_OUTPUT)
get_target_property_required(PCF ${PARENT} INPUT_IO_FILE)
get_target_property_required(BITSTREAM ${PARENT} BIT)

get_target_property_required(BOARD ${PARENT} BOARD)
get_target_property_required(DEVICE ${BOARD} DEVICE)
string(REPLACE "ql-" "" DEVICE_NAME "${DEVICE}")

# Get the output directory
get_file_location(BITSTREAM_LOC ${BITSTREAM})
get_filename_component(WORK_DIR ${BITSTREAM_LOC} DIRECTORY)
Expand All @@ -37,7 +41,7 @@ function(ADD_OPENOCD_OUTPUT)
set(PINMAP ${symbiflow-arch-defs_BINARY_DIR}/quicklogic/pp3/${BOARD}_pinmap.csv)

# Generate a OpenOCD script that sets IOMUX configuration.
set(IOMUX_CONFIG_GEN ${symbiflow-arch-defs_SOURCE_DIR}/quicklogic/pp3/utils/eos_s3_iomux_config.py)
set(IOMUX_CONFIG_GEN ${symbiflow-arch-defs_SOURCE_DIR}/quicklogic/pp3/utils/iomux_config.py)
set(IOMUX_CONFIG "top_iomux.openocd")

set(IOMUX_CONFIG_DEPS)
Expand All @@ -59,31 +63,24 @@ function(ADD_OPENOCD_OUTPUT)
${IOMUX_CONFIG_ARGS}
--map ${PINMAP}
--output-format openocd
--device-name ${DEVICE_NAME}
>${WORK_DIR}/${IOMUX_CONFIG}
DEPENDS ${IOMUX_CONFIG_GEN} ${IOMUX_CONFIG_DEPS}
)

add_file_target(FILE ${WORK_DIR_REL}/${IOMUX_CONFIG} GENERATED)

# Convert the binary bitstream to a OpenOCD script
set(BIT_AS_OPENOCD "top.bit.openocd")

add_custom_command(
OUTPUT ${WORK_DIR}/${BIT_AS_OPENOCD}
COMMAND ${PYTHON3} -m quicklogic_fasm.bitstream_to_openocd ${BITSTREAM_LOC} ${WORK_DIR}/${BIT_AS_OPENOCD}
DEPENDS ${BITSTREAM}
)

add_file_target(FILE ${WORK_DIR_REL}/${BIT_AS_OPENOCD} GENERATED)

# Concatenate the bitstream OpenOCD script and the IOMUX config OpenOCD script
set(OUT_OPENOCD "top.openocd")

add_custom_command(
OUTPUT ${WORK_DIR}/${OUT_OPENOCD}
COMMAND head -n -1 ${WORK_DIR}/${BIT_AS_OPENOCD} > ${WORK_DIR}/${OUT_OPENOCD} && cat ${WORK_DIR}/${IOMUX_CONFIG} >> ${WORK_DIR}/${OUT_OPENOCD} && echo '}' >> ${WORK_DIR}/${OUT_OPENOCD}
DEPENDS ${WORK_DIR}/${BIT_AS_OPENOCD} ${WORK_DIR}/${IOMUX_CONFIG}
COMMAND ${PYTHON3} -m quicklogic_fasm.bitstream_to_openocd ${BITSTREAM_LOC} ${WORK_DIR}/${OUT_OPENOCD}
DEPENDS ${BITSTREAM} ${WORK_DIR}/${IOMUX_CONFIG}
)

add_file_target(FILE ${WORK_DIR_REL}/${OUT_OPENOCD} GENERATED)

add_custom_target(${PARENT}_openocd DEPENDS ${WORK_DIR}/${OUT_OPENOCD})

endfunction()
Original file line number Diff line number Diff line change
Expand Up @@ -64,15 +64,15 @@ elif [[ "$DEVICE" =~ ^(ql-.*)$ ]]; then
# EOS-S3 IOMUX configuration
if [[ "$DEVICE" =~ ^(ql-eos-s3)$ ]]; then

IOMUXGEN=`realpath ${MYPATH}/python/pp3_eos_s3_iomux_config.py`
IOMUXGEN=`realpath ${MYPATH}/python/pp3_iomux_config.py` # script renamed during installation, prefixed with family name

IOMUX_JLINK="${PROJECT%.*}_iomux.jlink"
IOMUX_OPENOCD="${PROJECT%.*}_iomux.openocd"
IOMUX_BINARY="${PROJECT%.*}_iomux.bin"

python3 ${IOMUXGEN} --eblif $EBLIF --pcf $PCF --map $PINMAP --output-format=jlink > ${IOMUX_JLINK}
python3 ${IOMUXGEN} --eblif $EBLIF --pcf $PCF --map $PINMAP --output-format=openocd > ${IOMUX_OPENOCD}
python3 ${IOMUXGEN} --eblif $EBLIF --pcf $PCF --map $PINMAP --output-format=binary > ${IOMUX_BINARY}
python3 ${IOMUXGEN} --eblif $EBLIF --pcf $PCF --map $PINMAP --output-format=jlink --device-name eos-s3 > ${IOMUX_JLINK}
python3 ${IOMUXGEN} --eblif $EBLIF --pcf $PCF --map $PINMAP --output-format=openocd --device-name eos-s3 > ${IOMUX_OPENOCD}
python3 ${IOMUXGEN} --eblif $EBLIF --pcf $PCF --map $PINMAP --output-format=binary --device-name eos-s3 > ${IOMUX_BINARY}
fi

else
Expand Down
Loading