|  | add_subdirectory(utils) | 
|  |  | 
|  | # Copy map files to binary dir. | 
|  | get_filename_component(FAMILY_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME) | 
|  |  | 
|  | add_custom_target(QL_CELLS_SIM_DEPS) | 
|  | include(cells_sim_gen.cmake) | 
|  |  | 
|  | set(CELLS_SIM_FILE ${f4pga-arch-defs_BINARY_DIR}/quicklogic/${FAMILY_NAME}/techmap/cells_sim.v) | 
|  | add_subdirectory(primitives) | 
|  | set(CELLS_MAP_DEST_DIR ${f4pga-arch-defs_BINARY_DIR}/quicklogic/${FAMILY_NAME}/techmap/) | 
|  | file(COPY "techmap/cells_map.v"  DESTINATION ${CELLS_MAP_DEST_DIR}) | 
|  | file(COPY "techmap/lut2tomux4.v" DESTINATION ${CELLS_MAP_DEST_DIR}) | 
|  | file(COPY "techmap/lut2tomux2.v" DESTINATION ${CELLS_MAP_DEST_DIR}) | 
|  | file(COPY "techmap/lut3tomux2.v" DESTINATION ${CELLS_MAP_DEST_DIR}) | 
|  | file(COPY "techmap/mux4tomux2.v" DESTINATION ${CELLS_MAP_DEST_DIR}) | 
|  |  | 
|  | add_cells_sim_target(${CELLS_SIM_FILE} ${FAMILY_NAME}) | 
|  |  | 
|  | set(SDF_TIMING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/timings) | 
|  |  | 
|  | get_target_property_required(QLFASM env QLFASM) | 
|  |  | 
|  | set(VPR_ARCH_ARGS "\ | 
|  | --clock_modeling route \ | 
|  | --place_delay_model delta_override \ | 
|  | --router_lookahead extended_map \ | 
|  | --check_route quick \ | 
|  | --strict_checks off \ | 
|  | --allow_dangling_combinational_nodes on \ | 
|  | --disable_errors check_unbuffered_edges:check_route \ | 
|  | --congested_routing_iteration_threshold 0.8 \ | 
|  | --incremental_reroute_delay_ripup off \ | 
|  | --base_cost_type delay_normalized_length_bounded \ | 
|  | --bb_factor 10 \ | 
|  | --initial_pres_fac 4.0 \ | 
|  | --check_rr_graph off \ | 
|  | --pack_high_fanout_threshold PB-LOGIC:18 \ | 
|  | --suppress_warnings \${OUT_NOISY_WARNINGS},sum_pin_class:check_unbuffered_edges:load_rr_indexed_data_T_values:check_rr_node:trans_per_R:check_route:set_rr_graph_tool_comment " | 
|  | ) | 
|  |  | 
|  | define_arch( | 
|  | ARCH ql-s3 | 
|  | FAMILY pp3 | 
|  | YOSYS_TECHMAP ${f4pga-arch-defs_BINARY_DIR}/quicklogic/${FAMILY_NAME}/techmap | 
|  | DEVICE_FULL_TEMPLATE \${DEVICE} | 
|  | VPR_ARCH_ARGS ${VPR_ARCH_ARGS} | 
|  |  | 
|  | RR_PATCH_CMD "\${CMAKE_COMMAND} -E env \ | 
|  | PYTHONPATH=${f4pga-arch-defs_SOURCE_DIR}/utils:$PYTHONPATH \ | 
|  | python3 -m f4pga.utils.quicklogic.pp3.routing_import \ | 
|  | --vpr-db ${CMAKE_CURRENT_BINARY_DIR}/devices/\${DEVICE_TYPE}/db_vpr.pickle \ | 
|  | --rr-graph-in \${OUT_RRXML_VIRT} \ | 
|  | --rr-graph-out \${OUT_RRXML_REAL}" | 
|  |  | 
|  | PLACE_TOOL_CMD "${CMAKE_COMMAND} -E env \ | 
|  | PYTHONPATH=${f4pga-arch-defs_SOURCE_DIR}/utils:$PYTHONPATH \ | 
|  | python3 -m f4pga.utils.quicklogic.pp3.create_ioplace \ | 
|  | --map \${PINMAP} \ | 
|  | --blif \${OUT_EBLIF} \ | 
|  | --pcf \${INPUT_IO_FILE} \ | 
|  | --net \${OUT_NET}" | 
|  |  | 
|  | PLACE_CONSTR_TOOL_CMD "${CMAKE_COMMAND} -E env \ | 
|  | PYTHONPATH=${f4pga-arch-defs_SOURCE_DIR}/utils \ | 
|  | python3 -m f4pga.utils.quicklogic.pp3.create_place_constraints \ | 
|  | --map ${f4pga-arch-defs_BINARY_DIR}/quicklogic/${FAMILY_NAME}/\${BOARD}_clkmap.csv \ | 
|  | --blif \${OUT_EBLIF} \ | 
|  | --i /dev/stdin \ | 
|  | --o /dev/stdout \ | 
|  | \${PLACE_CONSTR_TOOL_EXTRA_ARGS}" | 
|  |  | 
|  | FASM_TO_BIT | 
|  | ${QLFASM} | 
|  | FASM_TO_BIT_CMD "\${PYTHON3} \ | 
|  | \${QLFASM} \ | 
|  | --no-default-bitstream --dev-type \${DEVICE} | 
|  | \${OUT_FASM} | 
|  | \${OUT_BITSTREAM} | 
|  | \${FASM_TO_BIT_EXTRA_ARGS}" | 
|  | BITSTREAM_EXTENSION bit | 
|  |  | 
|  | CELLS_SIM | 
|  | ${CELLS_SIM_FILE} | 
|  |  | 
|  | NO_BIT_TO_BIN | 
|  | BIT_TO_V_CMD | 
|  | "${CMAKE_COMMAND} -E env PYTHONPATH=${f4pga-arch-defs_SOURCE_DIR}/utils:${f4pga-arch-defs_SOURCE_DIR}/quicklogic/${FAMILY_NAME}/utils:$PYTHONPATH \ | 
|  | python3 -m f4pga.utils.quicklogic.pp3.fasm2bels \${OUT_BITSTREAM} | 
|  | --phy-db ${CMAKE_CURRENT_BINARY_DIR}/devices/\${DEVICE_TYPE}/db_phy.pickle | 
|  | --input-type bitstream | 
|  | --output-verilog \${OUT_BIT_VERILOG} | 
|  | --output-pcf \${OUT_BIT_VERILOG}.pcf | 
|  | --output-qcf \${OUT_BIT_VERILOG}.qcf | 
|  | --input-pcf \${INPUT_IO_FILE}" | 
|  | BIT_TO_V_DEPS | 
|  | ${f4pga-arch-defs_SOURCE_DIR}/quicklogic/pp3/utils/verilogmodule.py | 
|  | ${CMAKE_CURRENT_BINARY_DIR}/devices/\${DEVICE_TYPE}/db_vpr.pickle | 
|  | NO_BIT_TIME | 
|  |  | 
|  | ROUTE_CHAN_WIDTH 100 | 
|  | USE_FASM | 
|  | ) | 
|  |  | 
|  | add_subdirectory(devices) | 
|  | include(boards.cmake) | 
|  | add_subdirectory(tests) | 
|  |  | 
|  | define_ql_toolchain_target( | 
|  | FAMILY pp3 | 
|  | ARCH ql-s3 | 
|  | ROUTE_CHAN_WIDTH 100 | 
|  | CELLS_SIM ${CELLS_SIM_FILE} | 
|  | VPR_ARCH_ARGS ${VPR_ARCH_ARGS} | 
|  | SYNTH_SCRIPT ${YOSYS_SYNTH_SCRIPT} | 
|  | ) |