Merge pull request #2349 from umarcor/dependabot
ci: add dependabot config file
diff --git a/.github/check-status/Dockerfile b/.github/check-status/Dockerfile
index d4ebead..97822f4 100644
--- a/.github/check-status/Dockerfile
+++ b/.github/check-status/Dockerfile
@@ -1,6 +1,6 @@
FROM python:alpine
-RUN apk add git && pip install PyGithub git+https://github.com/SymbiFlow/symbiflow-tools-data-manager#egg=stdm --progress-bar off
+RUN apk update && apk add git gcc libc-dev libffi-dev && pip install PyGithub git+https://github.com/SymbiFlow/symbiflow-tools-data-manager#egg=stdm --progress-bar off
COPY check-status.py /check-status.py
COPY entrypoint.sh /entrypoint.sh
diff --git a/.gitmodules b/.gitmodules
index 424270b..4d64ff1 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -58,9 +58,6 @@
[submodule "third_party/pythondata-software-compiler_rt"]
path = third_party/pythondata-software-compiler_rt
url = https://github.com/litex-hub/pythondata-software-compiler_rt
-[submodule "third_party/qlfpga-symbiflow-plugins"]
- path = third_party/qlfpga-symbiflow-plugins
- url = https://github.com/QuickLogic-Corp/qlfpga-symbiflow-plugins.git
[submodule "third_party/qlf-fasm"]
path = third_party/qlf-fasm
url = https://github.com/QuickLogic-Corp/ql_fasm.git
diff --git a/common/cmake/devices.cmake b/common/cmake/devices.cmake
index 1f9c14d..b1218e1 100644
--- a/common/cmake/devices.cmake
+++ b/common/cmake/devices.cmake
@@ -1608,7 +1608,7 @@
PINMAP_FILE=${PINMAP}
PYTHON3=${PYTHON3}
${ADD_FPGA_TARGET_DEFINES}
- ${QUIET_CMD} ${YOSYS} -p "${COMPLETE_YOSYS_SYNTH_SCRIPT}" -l ${OUT_JSON_SYNTH}.log ${SOURCE_FILES}
+ ${QUIET_CMD} ${YOSYS} -r ${TOP} -p "${COMPLETE_YOSYS_SYNTH_SCRIPT}" -l ${OUT_JSON_SYNTH}.log ${SOURCE_FILES}
COMMAND
${CMAKE_COMMAND} -E touch ${OUT_FASM_EXTRA}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
@@ -2703,7 +2703,9 @@
get_target_property_required(PYTHON3 env PYTHON3)
get_target_property_required(QUIET_CMD env QUIET_CMD)
+ set(NAME ${GENERATE_PINMAP_NAME})
set(BOARD ${GENERATE_PINMAP_BOARD})
+ set(TOP ${GENERATE_PINMAP_TOP})
get_target_property_required(DEVICE ${BOARD} DEVICE)
get_target_property_required(PACKAGE ${BOARD} PACKAGE)
get_target_property_required(PINMAP_FILE ${BOARD} PINMAP)
@@ -2720,8 +2722,8 @@
endforeach()
add_custom_command(
- OUTPUT ${GENERATE_PINMAP_NAME}.json
- COMMAND ${QUIET_CMD} ${YOSYS} -p \"proc $<SEMICOLON> write_json ${CMAKE_CURRENT_BINARY_DIR}/${GENERATE_PINMAP_NAME}.json\" -l ${CMAKE_CURRENT_BINARY_DIR}/${GENERATE_PINMAP_NAME}.json.log ${SOURCE_FILES}
+ OUTPUT ${NAME}.json
+ COMMAND ${QUIET_CMD} ${YOSYS} -r ${TOP} -p \"proc $<SEMICOLON> write_json ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.json\" -l ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.json.log ${SOURCE_FILES}
DEPENDS
${QUIET_CMD}
${YOSYS}
@@ -2730,16 +2732,16 @@
)
add_custom_command(
- OUTPUT ${GENERATE_PINMAP_NAME}
+ OUTPUT ${NAME}
COMMAND ${PYTHON3} ${CREATE_PINMAP}
- --design_json ${CMAKE_CURRENT_BINARY_DIR}/${GENERATE_PINMAP_NAME}.json
+ --design_json ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.json
--pinmap_csv ${PINMAP}
- --module ${GENERATE_PINMAP_TOP} > ${CMAKE_CURRENT_BINARY_DIR}/${GENERATE_PINMAP_NAME}
+ --module ${TOP} > ${CMAKE_CURRENT_BINARY_DIR}/${NAME}
DEPENDS
${PYTHON3}
${CREATE_PINMAP}
${PINMAP} ${PINMAP_TARGET}
- ${GENERATE_PINMAP_NAME}.json
+ ${NAME}.json
)
add_file_target(FILE ${GENERATE_PINMAP_NAME} GENERATED)
diff --git a/conda_lock.yml b/conda_lock.yml
index 0da6223..a53a319 100644
--- a/conda_lock.yml
+++ b/conda_lock.yml
@@ -5,24 +5,24 @@
dependencies:
- _libgcc_mutex=0.1=main
- _openmp_mutex=4.5=1_gnu
- - binutils-riscv64-elf=2.34=20211006_163223
+ - binutils-riscv64-elf=2.34=20220104_202018
- bison=3.7.5=h2531618_1
- bzip2=1.0.8=h7b6447c_0
- - c-ares=1.17.1=h27cfd23_0
+ - c-ares=1.18.1=h7f8727e_0
- ca-certificates=2021.10.26=h06a4308_2
- capnproto=0.8.0=20210316_201220
- capnproto-java=0.1.5_0012_g44a8c1e=20201104_165332
- - certifi=2021.10.8=py37h06a4308_0
+ - certifi=2021.10.8=py37h06a4308_2
- cloog=0.18.0=0
- - cmake=3.19.6=h973ab73_0
- - cython=0.29.24=py37hdbfa776_0
+ - cmake=3.22.1=h1fce559_0
+ - cython=0.29.25=py37hdbfa776_0
- expat=2.4.1=h2531618_2
- flake8=3.9.2=pyhd3eb1b0_0
- flex=2.6.4=ha10e3a4_1
- gcc-riscv64-elf-newlib=9.2.0=20201119_154229
- gcc-riscv64-elf-nostdc=9.2.0=20210923_213204
- gmp=6.2.1=h2531618_2
- - gperftools=2.9.1_3_gc259412=20211122_104637
+ - gperftools=2.9.1_6_ge80652b=20220114_081711
- icestorm=0.0_0719_g792cef0=20201120_145821
- icu=58.2=he6710b0_3
- importlib-metadata=4.8.2=py37h06a4308_0
@@ -30,11 +30,11 @@
- iverilog=s20150603_0957_gad862020=20201120_145821
- krb5=1.19.2=hac12032_0
- ld_impl_linux-64=2.35.1=h7274673_9
- - libcurl=7.78.0=h0b77cf5_0
+ - libcurl=7.80.0=h0b77cf5_0
- libedit=3.1.20210910=h7f8727e_0
- libev=4.33=h7f8727e_1
- libffi=3.3=he6710b0_2
- - libftdi=1.3=20210923_083448
+ - libftdi=1.3=20220104_201921
- libgcc-ng=9.3.0=h5101ec6_17
- libgomp=9.3.0=h5101ec6_17
- libiconv=1.15=h63c8f33_5
@@ -42,7 +42,7 @@
- libssh2=1.9.0=h1ba5d50_1
- libstdcxx-ng=9.3.0=hd4cf53a_17
- libunwind=1.5.0=h295c915_1
- - libusb=1.0.20=20210923_083448
+ - libusb=1.0.20=20220104_201921
- libuuid=1.0.3=h7f8727e_2
- libuv=1.40.0=h7b6447c_0
- libxml2=2.9.12=h03d6c58_0
@@ -56,57 +56,57 @@
- nodejs=10.13.0=he6710b0_0
- openjdk=8.0.152=h7b6447c_3
- openocd=0.10.0_1514_ga8edbd020=20201119_154304
- - openssl=1.1.1l=h7f8727e_0
+ - openssl=1.1.1m=h7f8727e_0
- packaging=21.3=pyhd3eb1b0_0
- pcre=8.45=h295c915_0
- perl=5.26.2=h14c3975_0
- pip=21.2.2=py37h06a4308_0
- pkg-config=0.29.2=h1bed415_8
- - prjxray-db=0.0_253_gcd41f08=20211122_104637
- - prjxray-tools=0.1_2934_g60168e9b=20211122_104637
+ - prjxray-db=0.0_257_g0a0adde=20220114_081711
+ - prjxray-tools=0.1_2942_g5349556b=20220114_081711
- pycodestyle=2.7.0=pyhd3eb1b0_0
- pyflakes=2.3.1=pyhd3eb1b0_0
- pyparsing=3.0.4=pyhd3eb1b0_0
- python=3.7.11=h12debd9_0
- - readline=8.1=h27cfd23_0
+ - readline=8.1.2=h7f8727e_1
- rhash=1.4.1=h3c74f83_1
- setuptools=58.0.4=py37h06a4308_0
- - sqlite=3.36.0=hc218d9a_0
- - surelog=0.0_3778_gffd348877=20211122_104637_py37
+ - sqlite=3.37.0=hc218d9a_0
+ - surelog=0.0_4027_g84b7eb870=20220114_081711_py37
- swig=4.0.2=h295c915_4
- - symbiflow-yosys-plugins=1.0.0_7_511_g6c4141c=20211122_104637
+ - symbiflow-yosys-plugins=1.0.0_7_599_gdb3a9c7=20220114_081711
- tbb=2020.3=hfd86e86_0
- tk=8.6.11=h1ccaba5_0
- typing_extensions=3.10.0.2=pyh06a4308_0
- - vtr-optimized=8.0.0_4986_gf92cfebaf=20211122_104637
- - wheel=0.37.0=pyhd3eb1b0_1
+ - vtr-optimized=8.0.0_5105_g116f30cb8=20220114_081711
+ - wheel=0.37.1=pyhd3eb1b0_0
- xz=5.2.5=h7b6447c_0
- - yosys=0.11_48_g113c94384=20211122_104637_py37
+ - yosys=0.13_4_g61324cf55=20220114_081711_py37
- zachjs-sv2v=0.0.5_0025_ge9f9696=20201120_205532
- - zipp=3.6.0=pyhd3eb1b0_0
- - zlib=1.2.11=h7b6447c_3
- - zstd=1.4.9=haebb681_0
+ - zipp=3.7.0=pyhd3eb1b0_0
+ - zlib=1.2.11=h7f8727e_4
+ - zstd=1.5.0=ha4553b6_1
- pip:
- Arpeggio==1.10.2
- - attrs==21.2.0
+ - attrs==21.4.0
- cairocffi==1.3.0
- CairoSVG==2.5.2
- certifi==2021.10.8
- cffi==1.15.0
- chardet==4.0.0
- - charset-normalizer==2.0.9
+ - charset-normalizer==2.0.10
- colorama==0.4.4
- - cryptography==36.0.0
+ - cryptography==36.0.1
- cssselect2==0.4.1
- cycler==0.11.0
- defusedxml==0.7.1
- edalize @ git+https://github.com/lowRISC/edalize.git@23e1beab41508e13c565125e5edcadb86b0032f6
- fasm==0.0.2.post80
- fasm-utils @ git+https://github.com/QuickLogic-Corp/quicklogic-fasm-utils@3d6a375ddb6b55aaa5a59d99e44a207d4c18709f
- - fonttools==4.28.3
+ - fonttools==4.28.5
- fusesoc @ git+https://github.com/lowRISC/fusesoc.git@14dfc825ced58fe1fb343662fa80fc4fbd0fdc50
- gitdb==4.0.9
- - GitPython==3.1.24
+ - GitPython==3.1.26
- hilbertcurve==1.0.5
- idna==3.3
- importlib-resources==5.4.0
@@ -115,41 +115,40 @@
- intervaltree==3.1.0
- Jinja2==3.0.3
- jsonmerge==1.8.0
- - jsonschema==4.2.1
+ - jsonschema==4.4.0
- kiwisolver==1.3.2
- - lxml==4.6.4
+ - lxml==4.7.1
- Mako==1.1.6
- MarkupSafe==2.0.1
- - matplotlib==3.5.0
+ - matplotlib==3.5.1
- mccabe==0.6.1
- - numpy==1.21.4
+ - numpy==1.21.5
- okonomiyaki==1.3.2
- parameterized==0.8.1
- pdfminer.six==20211012
- - Pillow==8.4.0
+ - Pillow==9.0.0
- pluggy==1.0.0
- ply==3.11
- - progressbar2==3.55.0
+ - progressbar2==4.0.0
- py==1.11.0
- pycapnp==1.0.0b1
- pycparser==2.21
- pyjson==1.3.0
- pyjson5==1.6.0
- - pyrsistent==0.18.0
+ - pyrsistent==0.18.1
- pyserial==3.5
- pytest==6.2.5
- python-constraint==1.4.0
- python-dateutil==2.8.2
- python-fpga-interchange @ git+https://github.com/SymbiFlow/python-fpga-interchange.git@b13ee55ebce358a488fe9087f3b4f1bf087a0f24
- python-sat==0.1.7.dev15
- - python-utils==2.5.6
+ - python-utils==3.1.0
- pyusb==1.2.1
- PyYAML==6.0
- quicklogic-fasm @ git+https://github.com/QuickLogic-Corp/quicklogic-fasm.git@57b6e60574a9d483dc94710d0d3ff42a62b4ec41
- - requests==2.26.0
+ - requests==2.27.1
- rr-graph @ git+https://github.com/SymbiFlow/symbiflow-rr-graph.git@f0c41b77ad25b3afc438f4a7bff4c2297f6587d5
- scipy==1.7.3
- - setuptools-scm==6.3.2
- simplejson==3.17.6
- simplesat==0.8.2
- six==1.16.0
@@ -162,9 +161,8 @@
- tinyfpgab==1.1.0
- tinyprog==1.0.21
- toml==0.10.2
- - tomli==1.2.2
- tqdm==4.62.3
- - urllib3==1.26.7
+ - urllib3==1.26.8
- webencodings==0.5.1
- yapf==0.26.0
- zipfile2==0.0.12
diff --git a/environment.yml b/environment.yml
index a8437be..2713ff2 100644
--- a/environment.yml
+++ b/environment.yml
@@ -14,6 +14,7 @@
- litex-hub::vtr-optimized
- litex-hub::yosys
- litex-hub::symbiflow-yosys-plugins
+ - litex-hub::surelog
- litex-hub::zachjs-sv2v=0.0.5_0025_ge9f9696=20201120_205532
- cmake
- make
diff --git a/quicklogic/CMakeLists.txt b/quicklogic/CMakeLists.txt
index 1ccdc8b..85d26f9 100644
--- a/quicklogic/CMakeLists.txt
+++ b/quicklogic/CMakeLists.txt
@@ -1,6 +1,9 @@
-set(QLF_FPGA_DATABASE_DIR ${symbiflow-arch-defs_SOURCE_DIR}/third_party/qlfpga-symbiflow-plugins)
-
add_subdirectory(common)
+add_quicklogic_plugins()
+
+set(QLF_FPGA_DATABASE_DIR ${symbiflow-arch-defs_BINARY_DIR}/quicklogic/third_party/qlfpga-symbiflow-plugins)
+set(QLF_FPGA_PLUGINS_DIR ${symbiflow-arch-defs_SOURCE_DIR}/quicklogic/third_party/qlfpga-symbiflow-plugins)
+
add_subdirectory(qlf_k4n8)
add_subdirectory(pp3)
diff --git a/quicklogic/common/cmake/CMakeLists.txt b/quicklogic/common/cmake/CMakeLists.txt
index 3855944..052fc33 100644
--- a/quicklogic/common/cmake/CMakeLists.txt
+++ b/quicklogic/common/cmake/CMakeLists.txt
@@ -6,3 +6,4 @@
include(quicklogic_toolchain_test.cmake)
include(quicklogic_jlink.cmake)
include(quicklogic_openocd.cmake)
+include(quicklogic_env.cmake)
diff --git a/quicklogic/common/cmake/quicklogic_env.cmake b/quicklogic/common/cmake/quicklogic_env.cmake
new file mode 100644
index 0000000..1ce5504
--- /dev/null
+++ b/quicklogic/common/cmake/quicklogic_env.cmake
@@ -0,0 +1,85 @@
+function(ADD_QUICKLOGIC_PLUGINS)
+ set(QLFPGA_LATEST_URL https://storage.googleapis.com/symbiflow-arch-defs-install/qlfpga_symbiflow_plugins/qlf_k4n8/latest)
+
+ set(QLFPGA_LATEST_REL latest)
+ set(QLFPGA_REPACKING_RULES_REL repacking_rules.json)
+ set(QLFPGA_FASM_DB_TAR_GZ_REL fasm_database.tar.gz)
+ set(QLFPGA_FASM_DB_REL fasm_database)
+ set(QLFPGA_FAST_VPR_ARCH_REL fast/vpr_arch/UMC22nm_vpr.xml)
+ set(QLFPGA_FAST_VPR_RR_GRAPH_REL fast/vpr_rr_graph/UMC22nm_vpr.bin.gz)
+ set(QLFPGA_SLOW_VPR_ARCH_REL slow/vpr_arch/UMC22nm_vpr.xml)
+ set(QLFPGA_SLOW_VPR_RR_GRAPH_REL slow/vpr_rr_graph/UMC22nm_vpr.bin.gz)
+
+ set(QLFPGA_BASE_DIR third_party/qlfpga-symbiflow-plugins/qlf_k4n8)
+
+ set(QLFPGA_LATEST ${QLFPGA_BASE_DIR}/${QLFPGA_LATEST_REL})
+ set(QLFPGA_REPACKING_RULES ${QLFPGA_BASE_DIR}/${QLFPGA_REPACKING_RULES_REL})
+ set(QLFPGA_FASM_DB_TAR_GZ ${QLFPGA_BASE_DIR}/${QLFPGA_FASM_DB_TAR_GZ_REL})
+ set(QLFPGA_FASM_DB ${QLFPGA_BASE_DIR}/${QLFPGA_FASM_DB_REL})
+ set(QLFPGA_FAST_VPR_ARCH ${QLFPGA_BASE_DIR}/${QLFPGA_FAST_VPR_ARCH_REL})
+ set(QLFPGA_FAST_VPR_RR_GRAPH ${QLFPGA_BASE_DIR}/${QLFPGA_FAST_VPR_RR_GRAPH_REL})
+ set(QLFPGA_SLOW_VPR_ARCH ${QLFPGA_BASE_DIR}/${QLFPGA_SLOW_VPR_ARCH_REL})
+ set(QLFPGA_SLOW_VPR_RR_GRAPH ${QLFPGA_BASE_DIR}/${QLFPGA_SLOW_VPR_RR_GRAPH_REL})
+
+ # File with pointer to the latest version of qlfpga plugins
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${QLFPGA_LATEST}
+ COMMAND
+ ${CMAKE_COMMAND} -E make_directory
+ ${QLFPGA_BASE_DIR}
+ COMMAND bash -c
+ 'wget ${QLFPGA_LATEST_URL} -O ${QLFPGA_LATEST}'
+ COMMENT "Generating ${QLFPGA_LATEST}"
+ )
+ add_file_target(FILE ${QLFPGA_LATEST} GENERATED)
+
+ fetch_qlfpga(${QLFPGA_REPACKING_RULES} ${QLFPGA_REPACKING_RULES_REL})
+ fetch_qlfpga(${QLFPGA_FASM_DB_TAR_GZ} ${QLFPGA_FASM_DB_TAR_GZ_REL})
+ fetch_qlfpga(${QLFPGA_FAST_VPR_ARCH} ${QLFPGA_FAST_VPR_ARCH_REL})
+ fetch_qlfpga(${QLFPGA_FAST_VPR_RR_GRAPH} ${QLFPGA_FAST_VPR_RR_GRAPH_REL})
+ fetch_qlfpga(${QLFPGA_SLOW_VPR_ARCH} ${QLFPGA_SLOW_VPR_ARCH_REL})
+ fetch_qlfpga(${QLFPGA_SLOW_VPR_RR_GRAPH} ${QLFPGA_SLOW_VPR_RR_GRAPH_REL})
+
+ get_file_target(QLFPGA_FASM_DB_TAR_GZ_TARGET ${QLFPGA_FASM_DB_TAR_GZ})
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${QLFPGA_FASM_DB}
+ COMMAND bash -c 'tar -xf ${QLFPGA_FASM_DB_TAR_GZ} -C ${QLFPGA_BASE_DIR}'
+ DEPENDS ${QLFPGA_FASM_DB_TAR_GZ_TARGET}
+ COMMENT "Generating ${QLFPGA_FASM_DB}"
+ )
+ add_file_target(FILE ${QLFPGA_FASM_DB} GENERATED)
+
+ set(QLFPGA_PLUGINS_FILES
+ ${QLFPGA_REPACKING_RULES}
+ ${QLFPGA_FASM_DB}
+ ${QLFPGA_FAST_VPR_ARCH}
+ ${QLFPGA_FAST_VPR_RR_GRAPH}
+ ${QLFPGA_SLOW_VPR_ARCH}
+ ${QLFPGA_SLOW_VPR_RR_GRAPH}
+ )
+
+ set(QLFPGA_PLUGINS_DEPS )
+ foreach(FILE_NAME ${QLFPGA_PLUGINS_FILES})
+ get_file_target(FILE_TARGET ${FILE_NAME})
+ list(APPEND QLFPGA_PLUGINS_DEPS ${FILE_TARGET})
+ endforeach()
+
+ add_custom_target(qlfpga_plugins
+ DEPENDS ${QLFPGA_PLUGINS_DEPS}
+ )
+endfunction()
+
+function(FETCH_QLFPGA FILE_PATH FILE_REL_PATH)
+
+ get_filename_component(FILE_DIRECTORY ${FILE_PATH} DIRECTORY)
+ get_file_target(QLFPGA_LATEST_TARGET ${QLFPGA_LATEST})
+
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE_PATH}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${FILE_DIRECTORY}
+ COMMAND bash -c 'wget `cat ${QLFPGA_LATEST}`/${FILE_REL_PATH} -O ${FILE_PATH}'
+ DEPENDS ${QLFPGA_LATEST_TARGET}
+ COMMENT "Generating ${FILE_PATH}"
+ )
+ add_file_target(FILE ${FILE_PATH} GENERATED)
+endfunction()
diff --git a/quicklogic/common/cmake/quicklogic_install.cmake b/quicklogic/common/cmake/quicklogic_install.cmake
index 7fc3229..016c415 100644
--- a/quicklogic/common/cmake/quicklogic_install.cmake
+++ b/quicklogic/common/cmake/quicklogic_install.cmake
@@ -218,8 +218,10 @@
if(NOT "${DEVICE}" STREQUAL "ql-pp3e" AND NOT "${DEVICE}" STREQUAL "ql-eos-s3")
# install lib files
- install(DIRECTORY ${QLF_FPGA_DATABASE_DIR}/${FAMILY}/lib/
- DESTINATION "share/symbiflow/arch/${DEVICE}_${PACKAGE}/lib")
+ if(EXISTS "${QLF_FPGA_DATABASE_DIR}/${FAMILY}/lib" AND IS_DIRECTORY "${QLF_FPGA_DATABASE_DIR}/${FAMILY}/lib")
+ install(DIRECTORY ${QLF_FPGA_DATABASE_DIR}/${FAMILY}/lib/
+ DESTINATION "share/symbiflow/arch/${DEVICE}_${PACKAGE}/lib")
+ endif()
else()
message(status ": workaround: skipping lib install for ${DEVICE} device")
endif()
diff --git a/quicklogic/common/cmake/quicklogic_qlf_arch.cmake b/quicklogic/common/cmake/quicklogic_qlf_arch.cmake
index 7a6c5e0..3e70152 100644
--- a/quicklogic/common/cmake/quicklogic_qlf_arch.cmake
+++ b/quicklogic/common/cmake/quicklogic_qlf_arch.cmake
@@ -37,6 +37,14 @@
set(SDC_PATCH_TOOL ${symbiflow-arch-defs_SOURCE_DIR}/quicklogic/common/utils/process_sdc_constraints.py)
+ 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 ${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}
@@ -96,18 +104,19 @@
FASM_TO_BIT_CMD "${CMAKE_COMMAND} -E env \
PYTHONPATH=${symbiflow-arch-defs_BINARY_DIR}/env/conda/lib/python3.7/site-packages \
\${QUIET_CMD} \${FASM_TO_BIT} \
- --db-root ${QLF_FPGA_DATABASE_DIR}/${ARCH}/fasm_database \
+ --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=${symbiflow-arch-defs_BINARY_DIR}/env/conda/lib/python3.7/site-packages \
\${QUIET_CMD} \${FASM_TO_BIT} \
- --db-root ${QLF_FPGA_DATABASE_DIR}/${ARCH}/fasm_database \
+ --db-root ${QLFPGA_FASM_DATABASE_LOC_REL} \
--assemble \
--format txt \
\${OUT_FASM} \
@@ -117,7 +126,7 @@
BIT_TO_FASM_CMD "${CMAKE_COMMAND} -E env \
PYTHONPATH=${symbiflow-arch-defs_BINARY_DIR}/env/conda/lib/python3.7/site-packages \
\${QUIET_CMD} \${BIT_TO_FASM} \
- --db-root ${QLF_FPGA_DATABASE_DIR}/${ARCH}/fasm_database \
+ --db-root ${QLFPGA_FASM_DATABASE_LOC_REL} \
--disassemble \
--format 4byte \
\${OUT_BITSTREAM} \
diff --git a/quicklogic/common/cmake/quicklogic_qlf_device.cmake b/quicklogic/common/cmake/quicklogic_qlf_device.cmake
index 38ba61b..88f3d34 100644
--- a/quicklogic/common/cmake/quicklogic_qlf_device.cmake
+++ b/quicklogic/common/cmake/quicklogic_qlf_device.cmake
@@ -49,14 +49,23 @@
# .......................................................
- # Copy VPR arch XML
set(ARCH_XML_NAME ${DEVICE}.arch.xml)
+ # If there is a file target then depend on it
+ get_file_target(ARCH_XML_TARGET ${ARCH_XML})
+ if (TARGET "${ARCH_XML_TARGET}")
+ set(ARCH_XML_DEP ${ARCH_XML_TARGET})
+ get_file_location(ARCH_XML ${ARCH_XML})
+ else ()
+ set(ARCH_XML_DEP ${ARCH_XML})
+ endif ()
+
+ # Copy VPR arch XML
add_custom_command(
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/${ARCH_XML_NAME}
DEPENDS
- ${ARCH_XML}
+ ${ARCH_XML_DEP}
COMMAND
${CMAKE_COMMAND} -E copy
${ARCH_XML}
@@ -69,6 +78,15 @@
set(RR_GRAPH_FOR_DEVICE ${DEVICE}.rr_graph.bin)
+ # If there is a file target then depend on it
+ get_file_target(RR_GRAPH_TARGET ${RR_GRAPH})
+ if (TARGET "${RR_GRAPH_TARGET}")
+ set(RR_GRAPH_DEP ${RR_GRAPH_TARGET})
+ get_file_location(RR_GRAPH ${RR_GRAPH})
+ else ()
+ set(RR_GRAPH_DEP ${RR_GRAPH})
+ endif ()
+
# If the routing graph is compressed uncompress it
if ("${RR_GRAPH}" MATCHES ".*\\.gz$")
@@ -76,7 +94,7 @@
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/${RR_GRAPH_FOR_DEVICE}
DEPENDS
- ${RR_GRAPH}
+ ${RR_GRAPH_DEP}
COMMAND
${CMAKE_COMMAND} -E copy
${RR_GRAPH}
@@ -92,7 +110,7 @@
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/${RR_GRAPH_FOR_DEVICE}
DEPENDS
- ${RR_GRAPH}
+ ${RR_GRAPH_DEP}
COMMAND
${CMAKE_COMMAND} -E copy
${RR_GRAPH}
@@ -105,14 +123,23 @@
# .......................................................
- # Copy repacking rules
set(REPACKING_RULES_NAME ${DEVICE}.repacking_rules.json)
+ # If there is a file target then depend on it
+ get_file_target(REPACKING_RULES_TARGET ${REPACKING_RULES})
+ if (TARGET "${REPACKING_RULES_TARGET}")
+ set(REPACKING_RULES_DEP ${REPACKING_RULES_TARGET})
+ get_file_location(REPACKING_RULES ${REPACKING_RULES})
+ else ()
+ set(REPACKING_RULES_DEP ${REPACKING_RULES})
+ endif ()
+
+ # Copy repacking rules
add_custom_command(
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/${REPACKING_RULES_NAME}
DEPENDS
- ${ARCH_XML}
+ ${REPACKING_RULES_DEP}
COMMAND
${CMAKE_COMMAND} -E copy
${REPACKING_RULES}
diff --git a/quicklogic/common/utils/CMakeLists.txt b/quicklogic/common/utils/CMakeLists.txt
index 80c5711..876d8c8 100644
--- a/quicklogic/common/utils/CMakeLists.txt
+++ b/quicklogic/common/utils/CMakeLists.txt
@@ -6,6 +6,7 @@
${CMAKE_COMMAND} -E env
PYTHONPATH=${symbiflow-arch-defs_SOURCE_DIR}/utils:${symbiflow-arch-defs_SOURCE_DIR}/quicklogic/common/utils:$PYTHONPATH
${PYTHON3} -m pytest --doctest-modules -vv
+ DEPENDS qlfpga_plugins
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
diff --git a/quicklogic/common/utils/repacker/tests/lut_padding/test_lut_padding.py b/quicklogic/common/utils/repacker/tests/lut_padding/test_lut_padding.py
index 0cc903a..b916c32 100644
--- a/quicklogic/common/utils/repacker/tests/lut_padding/test_lut_padding.py
+++ b/quicklogic/common/utils/repacker/tests/lut_padding/test_lut_padding.py
@@ -28,8 +28,8 @@
basedir = os.path.dirname(__file__)
qlfpga_plugins = os.path.join(
- basedir, "..", "..", "..", "..", "..", "..", "third_party",
- "qlfpga-symbiflow-plugins"
+ basedir, "..", "..", "..", "..", "..", "..", "build", "quicklogic",
+ "third_party", "qlfpga-symbiflow-plugins"
)
vpr_arch = os.path.join(
diff --git a/quicklogic/qlf_k4n8/devices/umc22/CMakeLists.txt b/quicklogic/qlf_k4n8/devices/umc22/CMakeLists.txt
index 3ea76a8..9cea234 100644
--- a/quicklogic/qlf_k4n8/devices/umc22/CMakeLists.txt
+++ b/quicklogic/qlf_k4n8/devices/umc22/CMakeLists.txt
@@ -1,31 +1,37 @@
set(ARCH qlf_k4n8)
-set(ARCH_DIR ${QLF_FPGA_DATABASE_DIR}/${ARCH})
-
+set(ARCH_DIR ${QLF_FPGA_PLUGINS_DIR}/${ARCH})
set(FAST_CORNER_ARCH_DIR ${ARCH_DIR}/fast)
+set(SLOW_CORNER_ARCH_DIR ${ARCH_DIR}/slow)
+
+set(QLFPGA_REPACKING_RULES_LOC ${ARCH_DIR}/repacking_rules.json)
+set(QLFPGA_FAST_ARCH_XML_LOC ${FAST_CORNER_ARCH_DIR}/vpr_arch/UMC22nm_vpr.xml)
+set(QLFPGA_FAST_RR_GRAPH_LOC ${FAST_CORNER_ARCH_DIR}/vpr_rr_graph/UMC22nm_vpr.bin.gz)
+set(QLFPGA_SLOW_ARCH_XML_LOC ${SLOW_CORNER_ARCH_DIR}/vpr_arch/UMC22nm_vpr.xml)
+set(QLFPGA_SLOW_RR_GRAPH_LOC ${SLOW_CORNER_ARCH_DIR}/vpr_rr_graph/UMC22nm_vpr.bin.gz)
+
quicklogic_define_qlf_device (
NAME ${ARCH}_umc22_fast
ARCH ${ARCH}
FAMILY ${ARCH}
LAYOUT 24x24
- ARCH_XML ${FAST_CORNER_ARCH_DIR}/vpr_arch/UMC22nm_vpr.xml
- RR_GRAPH ${FAST_CORNER_ARCH_DIR}/vpr_rr_graph/UMC22nm_vpr.bin.gz
+ ARCH_XML ${QLFPGA_FAST_ARCH_XML_LOC}
+ RR_GRAPH ${QLFPGA_FAST_RR_GRAPH_LOC}
- REPACKING_RULES ${ARCH_DIR}/repacking_rules.json
+ REPACKING_RULES ${QLFPGA_REPACKING_RULES_LOC}
ROUTE_CHAN_WIDTH 60
)
-set(SLOW_CORNER_ARCH_DIR ${ARCH_DIR}/slow)
quicklogic_define_qlf_device (
NAME ${ARCH}_umc22_slow
ARCH ${ARCH}
FAMILY ${ARCH}
LAYOUT 24x24
- ARCH_XML ${SLOW_CORNER_ARCH_DIR}/vpr_arch/UMC22nm_vpr.xml
- RR_GRAPH ${SLOW_CORNER_ARCH_DIR}/vpr_rr_graph/UMC22nm_vpr.bin.gz
+ ARCH_XML ${QLFPGA_SLOW_ARCH_XML_LOC}
+ RR_GRAPH ${QLFPGA_SLOW_RR_GRAPH_LOC}
- REPACKING_RULES ${ARCH_DIR}/repacking_rules.json
+ REPACKING_RULES ${QLFPGA_REPACKING_RULES_LOC}
ROUTE_CHAN_WIDTH 60
)
diff --git a/quicklogic/qlf_k4n8/tests/synth_flow/rgb2ycrcb/CMakeLists.txt b/quicklogic/qlf_k4n8/tests/synth_flow/rgb2ycrcb/CMakeLists.txt
index 45c050c..a56c98e 100644
--- a/quicklogic/qlf_k4n8/tests/synth_flow/rgb2ycrcb/CMakeLists.txt
+++ b/quicklogic/qlf_k4n8/tests/synth_flow/rgb2ycrcb/CMakeLists.txt
@@ -3,7 +3,7 @@
add_fpga_target(
NAME rgb2ycrcb_test-umc22-no-adder
- TOP rgb2ycrcb
+ TOP top
BOARD qlf_k4n8-qlf_k4n8_umc22_slow_board
SOURCES ${CURR_DIR}/rgb2ycrcb.v
EXPLICIT_ADD_FILE_TARGET
@@ -12,7 +12,7 @@
add_fpga_target(
NAME rgb2ycrcb_test-umc22-adder
- TOP rgb2ycrcb
+ TOP top
BOARD qlf_k4n8-qlf_k4n8_umc22_slow_board
SOURCES ${CURR_DIR}/rgb2ycrcb.v
EXPLICIT_ADD_FILE_TARGET
diff --git a/third_party/qlfpga-symbiflow-plugins b/third_party/qlfpga-symbiflow-plugins
deleted file mode 160000
index a598aa2..0000000
--- a/third_party/qlfpga-symbiflow-plugins
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit a598aa2d3c5157d33d6a7aa2abab609f592ea1a8
diff --git a/xc/common/primitives/slicem/slicem.pb_type.xml b/xc/common/primitives/slicem/slicem.pb_type.xml
index fc3b280..35c114b 100644
--- a/xc/common/primitives/slicem/slicem.pb_type.xml
+++ b/xc/common/primitives/slicem/slicem.pb_type.xml
@@ -400,6 +400,25 @@
</metadata>
</pb_type>
+ <pb_type name="BDI1MUX_ROUTING" num_pb="1">
+ <input name="DI" num_pins="1"/>
+ <input name="STUB" num_pins="1"/>
+ <input name="BI" num_pins="1"/>
+ <output name="DI1" num_pins="1"/>
+ <mode name="default">
+ <interconnect>
+ <mux input="BDI1MUX_ROUTING.DI BDI1MUX_ROUTING.STUB BDI1MUX_ROUTING.BI" name="BDI1MUX" output="BDI1MUX_ROUTING.DI1">
+ <metadata>
+ <meta name="fasm_mux">
+ BDI1MUX_ROUTING.DI = BLUT.DI1MUX.DI_CMC31
+ BDI1MUX_ROUTING.STUB = BLUT.DI1MUX.DI_CMC31
+ BDI1MUX_ROUTING.BI = BLUT.DI1MUX.BI
+ </meta>
+ </metadata>
+ </mux>
+ </interconnect>
+ </mode>
+ </pb_type>
<interconnect>
<!-- The DLUT must be in RAM-mode for any of the RAM's to work.
As a corollary, a DRAM requires the clock, so only turn on the
@@ -510,19 +529,19 @@
</metadata>
<pack_pattern in_port="DI64_STUB[0].DO" name="DRAM_DP" out_port="C_DRAM.DI1" />
</mux>
- <mux name="BDI1MUX" input="SLICEM_MODES.DI DI64_STUB[1].DO SLICEM_MODES.BI" output="B_DRAM.DI1">
+
+ <!-- To enforce that AD1MUX gets the BDI input from the output of the BDI1MUX as specified
+ in the Series7 arcitecture, a "routing" pb type is used to correctly drive the BDI pin
+ -->
+ <direct input="SLICEM_MODES.DI" name="BDI1MUX_ROUTING.DI" output="BDI1MUX_ROUTING.DI"/>
+ <direct input="DI64_STUB[1].DO" name="BDI1MUX_ROUTING.DO" output="BDI1MUX_ROUTING.STUB"/>
+ <direct input="SLICEM_MODES.BI" name="BDI1MUX_ROUTING.BI" output="BDI1MUX_ROUTING.BI"/>
+ <direct input="BDI1MUX_ROUTING.DI1" name="BDI1MUX_ROUTING.DI1" output="B_DRAM.DI1"/>
+
+ <mux name="ADI1MUX" input="BDI1MUX_ROUTING.DI1 DI64_STUB[2].DO SLICEM_MODES.BI SLICEM_MODES.AI" output="A_DRAM.DI1">
<metadata>
<meta name="fasm_mux">
- SLICEM_MODES.DI = BLUT.DI1MUX.DI_CMC31
- DI64_STUB[1].DO = BLUT.DI1MUX.DI_CMC31
- SLICEM_MODES.BI = BLUT.DI1MUX.BI
- </meta>
- </metadata>
- </mux>
- <mux name="ADI1MUX" input="SLICEM_MODES.DI DI64_STUB[2].DO SLICEM_MODES.BI SLICEM_MODES.AI" output="A_DRAM.DI1">
- <metadata>
- <meta name="fasm_mux">
- SLICEM_MODES.DI = ALUT.DI1MUX.BDI1_BMC31,BLUT.DI1MUX.DI_CMC31
+ BDI1MUX_ROUTING.DI1 = ALUT.DI1MUX.BDI1_BMC31,BLUT.DI1MUX.DI_CMC31
DI64_STUB[2].DO = ALUT.DI1MUX.BDI1_BMC31
SLICEM_MODES.BI = ALUT.DI1MUX.BDI1_BMC31,BLUT.DI1MUX.BI
SLICEM_MODES.AI = ALUT.DI1MUX.AI
diff --git a/xc/xc7/techmap/cells_map.v b/xc/xc7/techmap/cells_map.v
index 51554c7..563fc06 100644
--- a/xc/xc7/techmap/cells_map.v
+++ b/xc/xc7/techmap/cells_map.v
@@ -29,6 +29,25 @@
endmodule
+module FD (output reg Q, input C, D);
+
+parameter [0:0] INIT = 1'b0;
+
+wire CE_SIG;
+wire SR_SIG;
+
+CESR_MUX cesr_mux(
+ .CE(1'b1),
+ .SR(1'b0),
+ .CE_OUT(CE_SIG),
+ .SR_OUT(SR_SIG)
+);
+
+FDRE_ZINI #(.ZINI(!|INIT), .IS_C_INVERTED(|0))
+ _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(CE_SIG), .R(SR_SIG));
+
+endmodule
+
module FDRE (output reg Q, input C, CE, D, R);
parameter [0:0] INIT = 1'b0;
diff --git a/xc/xc7/tests/install_test/CMakeLists.txt b/xc/xc7/tests/install_test/CMakeLists.txt
index e1ae7b2..117a15d 100644
--- a/xc/xc7/tests/install_test/CMakeLists.txt
+++ b/xc/xc7/tests/install_test/CMakeLists.txt
@@ -2,7 +2,7 @@
get_target_property_required(XC7FRAMES2BIT env XC7FRAMES2BIT)
-function(add_binary_test test_name part_name device board)
+function(add_binary_test test_name part_name device board surelog_cmd)
add_test(NAME ${test_name}
COMMAND ${CMAKE_COMMAND} -E env
PATH=${INSTALLATION_DIR_BIN}:$ENV{PATH}
@@ -10,11 +10,15 @@
PYTHONPATH=${PRJXRAY_DIR}:${PRJXRAY_DIR}/third_party/fasm
DATABASE_DIR=${PRJXRAY_DB_DIR}
FRAMES2BIT=${XC7FRAMES2BIT}
+ SURELOG_CMD=${surelog_cmd}
make PARTNAME=${part_name} DEVICE=${device} BOARD=${board}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endfunction()
-add_binary_test(binary_toolchain_test_xc7_50t xc7a35tcpg236-1 xc7a50t_test basys3)
-add_binary_test(binary_toolchain_test_xc7_100t xc7a100tcsg324-1 xc7a100t_test arty-100t)
-add_binary_test(binary_toolchain_test_xc7_200t xc7a200tsbg484-1 xc7a200t_test nexys_video)
+add_binary_test(binary_toolchain_test_xc7_50t xc7a35tcpg236-1 xc7a50t_test basys3 "")
+add_binary_test(binary_toolchain_test_xc7_100t xc7a100tcsg324-1 xc7a100t_test arty-100t "")
+add_binary_test(binary_toolchain_test_xc7_200t xc7a200tsbg484-1 xc7a200t_test nexys_video "")
+add_binary_test(binary_toolchain_test_xc7_50t_surelog xc7a35tcpg236-1 xc7a50t_test basys3 "-parse -DSYNTHESIS")
+add_binary_test(binary_toolchain_test_xc7_100t_surelog xc7a100tcsg324-1 xc7a100t_test arty-100t "-parse -DSYNTHESIS")
+add_binary_test(binary_toolchain_test_xc7_200t_surelog xc7a200tsbg484-1 xc7a200t_test nexys_video "-parse -DSYNTHESIS")
diff --git a/xc/xc7/tests/install_test/Makefile b/xc/xc7/tests/install_test/Makefile
index 564d1b7..82eacd1 100644
--- a/xc/xc7/tests/install_test/Makefile
+++ b/xc/xc7/tests/install_test/Makefile
@@ -10,13 +10,19 @@
BUILDDIR:=build_${BOARD}
ADDITIONAL_VPR_OPTIONS="--seed 1024"
+# Determine if we should use uhdm-plugin to read sources
+ifneq (${SURELOG_CMD},)
+ SURELOG_OPT := -s ${SURELOG_CMD}
+ BUILDDIR = build_${BOARD}_surelog
+endif
+
all: ${BUILDDIR}/${TOP}.bit
${BUILDDIR}:
mkdir ${BUILDDIR}
${BUILDDIR}/${TOP}.eblif: | ${BUILDDIR}
- cd ${BUILDDIR} && symbiflow_synth -t ${TOP} -v ${VERILOG} -d ${BITSTREAM_DEVICE} -p ${PARTNAME} -x ${XDC}
+ cd ${BUILDDIR} && symbiflow_synth -t ${TOP} ${SURELOG_OPT} -v ${VERILOG} -d ${BITSTREAM_DEVICE} -p ${PARTNAME} -x ${XDC}
${BUILDDIR}/${TOP}.net: ${BUILDDIR}/${TOP}.eblif
cd ${BUILDDIR} && symbiflow_pack -e ${TOP}.eblif -d ${DEVICE} -a ${ADDITIONAL_VPR_OPTIONS}
diff --git a/xc/xc7/toolchain_wrappers/symbiflow_synth b/xc/xc7/toolchain_wrappers/symbiflow_synth
index 11996f5..5d2e4b8 100755
--- a/xc/xc7/toolchain_wrappers/symbiflow_synth
+++ b/xc/xc7/toolchain_wrappers/symbiflow_synth
@@ -18,12 +18,14 @@
TOP=top
DEVICE="*"
PART=""
+SURELOG_CMD=()
VERILOGLIST=0
XDCLIST=0
TOPNAME=0
DEVICENAME=0
PARTNAME=0
+SURELOG=0
for arg in $@; do
echo $arg
@@ -35,6 +37,7 @@
TOPNAME=1
DEVICENAME=0
PARTNAME=0
+ SURELOG=0
;;
-x|--xdc)
VERILOGLIST=0
@@ -42,6 +45,7 @@
TOPNAME=0
DEVICENAME=0
PARTNAME=0
+ SURELOG=0
;;
-v|--verilog)
VERILOGLIST=1
@@ -49,6 +53,7 @@
TOPNAME=0
DEVICENAME=0
PARTNAME=0
+ SURELOG=0
;;
-d|--device)
VERILOGLIST=0
@@ -56,6 +61,7 @@
TOPNAME=0
DEVICENAME=1
PARTNAME=0
+ SURELOG=0
;;
-p|--part)
VERILOGLIST=0
@@ -63,6 +69,15 @@
TOPNAME=0
DEVICENAME=0
PARTNAME=1
+ SURELOG=0
+ ;;
+ -s|--surelog)
+ VERILOGLIST=0
+ XDCLIST=0
+ TOPNAME=0
+ DEVICENAME=0
+ PARTNAME=0
+ SURELOG=1
;;
*)
if [ $VERILOGLIST -eq 1 ]; then
@@ -75,9 +90,11 @@
DEVICE=$arg
elif [ $PARTNAME -eq 1 ]; then
PART=$arg
+ elif [ $SURELOG -eq 1 ]; then
+ SURELOG_CMD+=($arg)
else
echo "Usage: synth [-t|--top <top module name> -v|--verilog <Verilog files list> [-x|--xdc <XDC files list>]"
- echo " [-d|--device <device type (e.g. artix7)>] [-p|--part <part name>]"
+ echo " [-d|--device <device type (e.g. artix7)>] [-p|--part <part name>] [-s|--surelog] <parameters to surelog>"
echo "note: device and part parameters are required if xdc is passed"
exit 1
fi
@@ -104,7 +121,10 @@
export OUT_FASM_EXTRA=${TOP}_fasm_extra.fasm
export PYTHON3=${PYTHON3:=$(which python3)}
LOG=${TOP}_synth.log
-
+if [ -z "$SURELOG_CMD" ]; then
yosys -p "tcl ${SYNTH_TCL_PATH}" -l $LOG ${VERILOG_FILES[*]}
+else
+yosys -p "plugin -i uhdm" -p "read_verilog_with_uhdm ${SURELOG_CMD[*]} ${VERILOG_FILES[*]}" -p "tcl ${SYNTH_TCL_PATH}" -l $LOG
+fi
python3 ${SPLIT_INOUTS} -i ${OUT_JSON} -o ${SYNTH_JSON}
yosys -p "read_json $SYNTH_JSON; tcl ${CONV_TCL_PATH}"
diff --git a/xc/xc7/yosys/synth.tcl b/xc/xc7/yosys/synth.tcl
index 00a547b..6944fab 100644
--- a/xc/xc7/yosys/synth.tcl
+++ b/xc/xc7/yosys/synth.tcl
@@ -30,8 +30,11 @@
# Overwrite some models (e.g. IBUF with more parameters)
read_verilog -lib $::env(TECHMAP_PATH)/iobs.v
- # Re-targetting FD to FDREs
- techmap -map $::env(TECHMAP_PATH)/retarget.v
+ # TODO: This should eventually end up in upstream Yosys
+ # as models such as FD are not currently supported
+ # as being used in old FPGAs (e.g. Spartan6)
+ # Read in unsupported models
+ read_verilog -lib $::env(TECHMAP_PATH)/retarget.v
if { [info exists ::env(TOP)] && $::env(TOP) != "" } {
hierarchy -check -top $::env(TOP)