From 08a204dfa6844a92f9810e62b2feb9d2923df650 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Th=C3=B6rnblad?= Date: Fri, 22 Nov 2024 14:24:32 +0100 Subject: [PATCH 1/2] Minimize number of Dockerfile RUN commands to lower number of used layers in the image. Too many layers will give an error. --- contrib/Dockerfile | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/contrib/Dockerfile b/contrib/Dockerfile index a913bad6..c0798f2a 100644 --- a/contrib/Dockerfile +++ b/contrib/Dockerfile @@ -72,8 +72,8 @@ RUN git clone --depth=1 https://github.com/YosysHQ/icestorm /src WORKDIR /src RUN git checkout 738af822905fdcf0466e9dd784b9ae4b0b34987f \ && make -j$(nproc --ignore=2) \ - && make install -RUN git describe --all --always --long --dirty > /usr/local/repo-commit-icestorm + && make install \ + && git describe --all --always --long --dirty > /usr/local/repo-commit-icestorm WORKDIR / RUN rm -rf /src @@ -81,8 +81,8 @@ RUN rm -rf /src RUN git clone -b interfaces --depth=1 https://github.com/tillitis/icestorm /src WORKDIR /src/iceprog RUN make -j$(nproc --ignore=2) \ - && make PROGRAM_PREFIX=tillitis- install -RUN git describe --all --always --long --dirty > /usr/local/repo-commit-tillitis--icestorm + && make PROGRAM_PREFIX=tillitis- install \ + && git describe --all --always --long --dirty > /usr/local/repo-commit-tillitis--icestorm WORKDIR / RUN rm -rf /src @@ -90,8 +90,8 @@ RUN git clone -b 0.45 --depth=1 https://github.com/YosysHQ/yosys /src WORKDIR /src RUN git submodule update --init \ && make -j$(nproc --ignore=2) \ - && make install -RUN git describe --all --always --long --dirty > /usr/local/repo-commit-yosys + && make install \ + && git describe --all --always --long --dirty > /usr/local/repo-commit-yosys WORKDIR / RUN rm -rf /src @@ -104,8 +104,8 @@ RUN sed -i 's/if (do_route) {/if (do_route \&\& !had_nonfatal_error) {/' common/ RUN sed -i 's/bool warn_on_failure = false/bool warn_on_failure = true/' common/kernel/timing.h RUN cmake -DARCH=ice40 . \ && make -j$(nproc --ignore=2) \ - && make install -RUN git describe --all --always --long --dirty > /usr/local/repo-commit-nextpnr + && make install \ + && git describe --all --always --long --dirty > /usr/local/repo-commit-nextpnr WORKDIR / RUN rm -rf /src @@ -114,8 +114,8 @@ WORKDIR /src RUN sh autoconf.sh \ && ./configure \ && make -j$(nproc --ignore=2) \ - && make install -RUN git describe --all --always --long --dirty > /usr/local/repo-commit-iverilog + && make install \ + && git describe --all --always --long --dirty > /usr/local/repo-commit-iverilog WORKDIR / RUN rm -rf /src @@ -125,8 +125,8 @@ RUN autoconf \ && ./configure \ && make -j$(nproc --ignore=2) \ && make test \ - && make install -RUN git describe --all --always --long --dirty > /usr/local/repo-commit-verilator + && make install \ + && git describe --all --always --long --dirty > /usr/local/repo-commit-verilator WORKDIR / RUN rm -rf /src @@ -140,8 +140,8 @@ RUN rm -rf /src RUN git clone -b v1.9.1 https://github.com/cocotb/cocotb.git /src WORKDIR /src -RUN pip install . --break-system-packages -RUN git describe --all --always --long --dirty > /usr/local/repo-commit-cocotb +RUN pip install . --break-system-packages \ + && git describe --all --always --long --dirty > /usr/local/repo-commit-cocotb WORKDIR / RUN rm -rf /src From 0445c8f993f43877a3eb545e5022b748de8dc01d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Th=C3=B6rnblad?= Date: Fri, 22 Nov 2024 14:36:38 +0100 Subject: [PATCH 2/2] Add nextpnr flag '--exit-on-failed-target-frequency' --- contrib/Dockerfile | 20 ++++++++++++++++++-- hw/application_fpga/tools/run_pnr.sh | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/contrib/Dockerfile b/contrib/Dockerfile index c0798f2a..37ed2481 100644 --- a/contrib/Dockerfile +++ b/contrib/Dockerfile @@ -100,8 +100,24 @@ WORKDIR /src # Add "Fix handling of RNG seed" #1369 RUN git cherry-pick --no-commit 6ca64526bb18ace8690872b09ca1251567c116de # Add early exit if place fails on timing -RUN sed -i 's/if (do_route) {/if (do_route \&\& !had_nonfatal_error) {/' common/kernel/command.cc -RUN sed -i 's/bool warn_on_failure = false/bool warn_on_failure = true/' common/kernel/timing.h +RUN sed -i \ + '345i \ \ \ \ general.add_options()("exit-on-failed-target-frequency",' \ + common/kernel/command.cc +RUN sed -i \ + '346i \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "exit if target frequency is not achieved (use together with "' \ + common/kernel/command.cc +RUN sed -i \ + '347i \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "--randomize-seed option)");' \ + common/kernel/command.cc +RUN sed -i \ + '348i \\' \ + common/kernel/command.cc +RUN sed -i \ + '662s/if (do_route) {/if (do_route \&\& (vm.count("exit-on-failed-target-frequency") ? !had_nonfatal_error : true)) {/' \ + common/kernel/command.cc +RUN sed -i \ + '244s/bool warn_on_failure = false/bool warn_on_failure = true/' \ + common/kernel/timing.h RUN cmake -DARCH=ice40 . \ && make -j$(nproc --ignore=2) \ && make install \ diff --git a/hw/application_fpga/tools/run_pnr.sh b/hw/application_fpga/tools/run_pnr.sh index 3c069d1f..68f9e70e 100755 --- a/hw/application_fpga/tools/run_pnr.sh +++ b/hw/application_fpga/tools/run_pnr.sh @@ -67,6 +67,7 @@ start_thread() { --log $LOG_FILE \ --randomize-seed \ --freq $FREQ \ + --exit-on-failed-target-frequency \ --ignore-loops \ --up5k \ --package $PACKAGE \