|  | function(QUICKLOGIC_DEFINE_QLF_ARCH) | 
|  | # ~~~ | 
|  | # QUICKLOGIC_DEFINE_QLF_ARCH( | 
|  | #   FAMILY <family> | 
|  | #   ARCH <arch> | 
|  | #   VPR_ARGS <VPR args common to the architecture> | 
|  | #   ROUTE_CHAN_WIDTH <channel width> | 
|  | # | 
|  | # The ROUTE_CHAN_WIDTH parameter specifies the channel width for the | 
|  | # architecture. It may be overriden per each device. | 
|  |  | 
|  | set(options) | 
|  | set(oneValueArgs FAMILY ARCH ROUTE_CHAN_WIDTH) | 
|  | set(multiValueArgs VPR_ARGS) | 
|  |  | 
|  | cmake_parse_arguments( | 
|  | QUICKLOGIC_DEFINE_QLF_ARCH | 
|  | "${options}" | 
|  | "${oneValueArgs}" | 
|  | "${multiValueArgs}" | 
|  | ${ARGN} | 
|  | ) | 
|  |  | 
|  | set(FAMILY   ${QUICKLOGIC_DEFINE_QLF_ARCH_FAMILY}) | 
|  | set(ARCH     ${QUICKLOGIC_DEFINE_QLF_ARCH_ARCH}) | 
|  | set(VPR_ARGS ${QUICKLOGIC_DEFINE_QLF_ARCH_VPR_ARGS}) | 
|  |  | 
|  | set(FAMILY_DIR ${f4pga-arch-defs_SOURCE_DIR}/quicklogic/${FAMILY}) | 
|  |  | 
|  | get_target_property_required(QLF_FASM env QLF_FASM) | 
|  |  | 
|  | if("${FAMILY}" STREQUAL "qlf_k4n8") | 
|  | set(REPACKER_PATH "python3 -m f4pga.utils.quicklogic.repacker.repack") | 
|  | else() | 
|  | set(REPACKER_PATH ) | 
|  | endif() | 
|  |  | 
|  | set(ARCH_DIR ${QLF_FPGA_PLUGINS_DIR}/${ARCH}) | 
|  | set(ARCH_DIR_REL ${QLF_FPGA_DATABASE_DIR}/${ARCH}) | 
|  | set(QLFPGA_FASM_DATABASE_LOC ${ARCH_DIR}/fasm_database) | 
|  | set(QLFPGA_FASM_DATABASE_LOC_REL ${f4pga-arch-defs_BINARY_DIR}/${ARCH_DIR_REL}/fasm_database) | 
|  |  | 
|  | set(FASM_TO_BIT_DEPS "") | 
|  | append_file_dependency(FASM_TO_BIT_DEPS /${QLFPGA_FASM_DATABASE_LOC}) | 
|  |  | 
|  | # Define the architecture | 
|  | define_arch( | 
|  | FAMILY ${FAMILY} | 
|  | ARCH ${ARCH} | 
|  | YOSYS_TECHMAP ${FAMILY_DIR}/techmap | 
|  | DEVICE_FULL_TEMPLATE \${DEVICE} | 
|  | VPR_ARCH_ARGS ${VPR_ARGS} | 
|  | CELLS_SIM ${FAMILY_DIR}/techmap/cells_sim.v | 
|  |  | 
|  | RR_GRAPH_EXT ".bin" | 
|  |  | 
|  | # FIXME: Make common for k4n8 and k6n10 | 
|  | PLACE_TOOL_CMD "${CMAKE_COMMAND} -E env \ | 
|  | PYTHONPATH=${f4pga-arch-defs_SOURCE_DIR}/utils:$PYTHONPATH:${f4pga-arch-defs_SOURCE_DIR}/quicklogic/common/utils \ | 
|  | python3 -m f4pga.utils.quicklogic.qlf_k4n8.create_ioplace \ | 
|  | --pinmap_xml \${PINMAP_XML} \ | 
|  | --blif \${OUT_EBLIF} \ | 
|  | --pcf \${INPUT_IO_FILE} \ | 
|  | --net \${OUT_NET} \ | 
|  | --csv_file \${PINMAP}" | 
|  |  | 
|  | NO_TEST_PINS | 
|  | NO_PLACE_CONSTR | 
|  |  | 
|  | SDC_PATCH_TOOL | 
|  | ${SDC_PATCH_TOOL} | 
|  | SDC_PATCH_TOOL_CMD "${CMAKE_COMMAND} -E env \ | 
|  | PYTHONPATH=${f4pga-arch-defs_SOURCE_DIR}/utils \ | 
|  | \${QUIET_CMD} \${PYTHON3} \${SDC_PATCH_TOOL} \ | 
|  | --sdc-in \${IN_SDC} \ | 
|  | --pcf \${INPUT_IO_FILE} \ | 
|  | --eblif \${OUT_EBLIF} \ | 
|  | --pin-map \${PINMAP} \ | 
|  | --sdc-out \${OUT_SDC}" | 
|  |  | 
|  | NET_PATCH_TOOL | 
|  | ${REPACKER_PATH} | 
|  | NET_PATCH_TOOL_CMD "${CMAKE_COMMAND} -E env \ | 
|  | PYTHONPATH=${f4pga-arch-defs_SOURCE_DIR}/utils \ | 
|  | \${QUIET_CMD} \${NET_PATCH_TOOL} \ | 
|  | --net-in \${IN_NET} \ | 
|  | --eblif-in \${IN_EBLIF} \ | 
|  | --place-in \${IN_PLACE} \ | 
|  | --net-out \${OUT_NET} \ | 
|  | --eblif-out \${OUT_EBLIF} \ | 
|  | --place-out \${OUT_PLACE} \ | 
|  | --vpr-arch \${VPR_ARCH} \ | 
|  | --log \${OUT_NET}.log \ | 
|  | --log-level DEBUG \ | 
|  | --absorb_buffer_luts on" | 
|  |  | 
|  | BITSTREAM_EXTENSION bit | 
|  | FASM_TO_BIT ${QLF_FASM} | 
|  | FASM_TO_BIT_CMD "${CMAKE_COMMAND} -E env \ | 
|  | PYTHONPATH=${f4pga-arch-defs_BINARY_DIR}/env/conda/lib/python3.7/site-packages \ | 
|  | \${QUIET_CMD} \${FASM_TO_BIT} \ | 
|  | --db-root ${QLFPGA_FASM_DATABASE_LOC_REL} \ | 
|  | --assemble \ | 
|  | --format 4byte \ | 
|  | \${OUT_FASM} \ | 
|  | \${OUT_BITSTREAM} " | 
|  | FASM_TO_BIT_DEPS ${FASM_TO_BIT_DEPS} | 
|  |  | 
|  | BIN_EXTENSION bin | 
|  | BIT_TO_BIN ${QLF_FASM} | 
|  | BIT_TO_BIN_CMD "${CMAKE_COMMAND} -E env \ | 
|  | PYTHONPATH=${f4pga-arch-defs_BINARY_DIR}/env/conda/lib/python3.7/site-packages \ | 
|  | \${QUIET_CMD} \${FASM_TO_BIT} \ | 
|  | --db-root ${QLFPGA_FASM_DATABASE_LOC_REL} \ | 
|  | --assemble \ | 
|  | --format txt \ | 
|  | \${OUT_FASM} \ | 
|  | \${OUT_BIN} " | 
|  |  | 
|  | BIT_TO_FASM ${QLF_FASM} | 
|  | BIT_TO_FASM_CMD "${CMAKE_COMMAND} -E env \ | 
|  | PYTHONPATH=${f4pga-arch-defs_BINARY_DIR}/env/conda/lib/python3.7/site-packages \ | 
|  | \${QUIET_CMD} \${BIT_TO_FASM} \ | 
|  | --db-root ${QLFPGA_FASM_DATABASE_LOC_REL} \ | 
|  | --disassemble \ | 
|  | --format 4byte \ | 
|  | \${OUT_BITSTREAM} \ | 
|  | \${OUT_BIT_FASM} " | 
|  |  | 
|  | NO_BIT_TO_V | 
|  | NO_BIT_TIME | 
|  | USE_FASM | 
|  |  | 
|  | ROUTE_CHAN_WIDTH ${QUICKLOGIC_DEFINE_QLF_ARCH_ROUTE_CHAN_WIDTH} | 
|  | ) | 
|  |  | 
|  | endfunction() |