NEXTPNR-ECP5(1)
β¨ NEXTPNR-ECP5 β¨
okay bestie come CLOSE because this is the manual page for nextpnr-ecp5, and honestly it's giving "the whole pipeline in one binary" π
we're talking Next Generation Place and Route, version 0.10-5, and it lives under the manual section 1 for General Commands. yes it's a lot of flags. no you don't have to memorise them all. let's get into it π«Ά
πΈ NAME πΈ
nextpnr-ecp5 β Next Generation Place and Route π
π¦ DESCRIPTION π¦
nextpnr-ecp5 is Next Generation Place and Route, and this particular one is Version 0.10-5 β it takes your design from "a pile of logic" to "actually placed and routed", and it gives you approximately one million knobs to turn while it does it. no cap.
π§ General options
the everyday stuff, the buttons you'll actually be mashing:
-h,--helpβ show help πββοΈ-v,--verboseβ verbose output, aka it tells you everything-q,--quietβ quiet mode, only errors and warnings get shown π€«--Werrorβ turn warnings into errors. dramatic but valid π-l,--logarg β log file; all log messages are written to this file regardless of-qπ--debugβ debug output--debug-placerβ debug output from the placer only--debug-routerβ debug output from the router only--threadsarg β number of threads for passes where this is configurable π§΅-f,--forceβ keep running after errors. chaotic. iconic.--runarg β python file to execute instead of default flow π--pre-packarg β python file to run before packing--pre-placearg β python file to run before placement--pre-routearg β python file to run before routing--post-routearg β python file to run after routing--on-failurearg β python file to run in event of crash for design introspection π (when it all goes wrong, this is your little forensic buddy)--jsonarg β JSON design file to ingest--writearg β JSON design file to write--toparg β name of top module π--seedarg β seed value for random number generator π²-r,--randomize-seedβ randomize seed value for random number generator--placerarg β placer algorithm to use; available:sa,heap,static; default:heap--routerarg β router algorithm to use; available:router1,router2; default:router1--slack_redist_iterarg β number of iterations between slack redistribution--cstrweightarg β placer weighting for relative constraint satisfaction--starttemparg β placer SA start temperature π‘οΈ--pack-onlyβ pack design only without placement or routing--no-routeβ process design without routing--no-placeβ process design without placement--no-packβ process design without packing--ignore-loopsβ ignore combinational loops in timing analysis--ignore-rel-clkβ ignore clock-to-clock relations in timing checks-V,--versionβ show version--testβ check architecture database integrity β--freqarg β set target frequency for design in MHz--timing-allow-failβ allow timing to fail in design (it's fine, it's fine, everything's fine π)--no-tmdrivβ disable timing-driven placement--sdcarg β Generic timing constraints SDC file to load--sdfarg β SDF delay back-annotation file to write--sdf-cvcβ enable tweaks for SDF file compatibility with the CVC simulator--no-print-critical-path-sourceβ disable printing of the line numbers associated with each net in the critical path--placer-heap-alphaarg β placer heap alpha value (float, default:0.1)--placer-heap-betaarg β placer heap maximum placement density (float, default:0.9)--placer-heap-critexparg β placer heap criticality exponent (int, default:2)--placer-heap-timingweightarg β placer heap timing weight (int, default:10)--placer-heap-cell-placement-timeoutarg β allow placer to attempt up tomax(10000, total cells^2 / N)iterations to place a cell (intN, default:8,0for no timeout)--static-dump-densityβ write density csv files during placer-static flow--parallel-refineβ use new experimental parallelised engine for placement refinement β‘--router2-heatmaparg β prefix for router2 resource congestion heatmaps π₯--tmg-ripupβ enable experimental timing-driven ripup in router--router2-tmg-ripupβ enable experimental timing-driven ripup in router (deprecated; use--tmg-ripupinstead) π--router2-alt-weightsβ use alternate router2 weights--reportarg β write timing and utilization report in JSON format to file--detailed-timing-reportβ Append detailed net timing data to the JSON report--placed-svgarg β write render of placement to SVG file π¨--routed-svgarg β write render of routing to SVG file
π§ Architecture specific options
this is the ECP5 part, the part that actually knows what chip you're talking to:
--packagearg β select device package (defaults toCABGA381)--speedarg β select device speedgrade (6,7or8)--basecfgarg β base chip configuration in Trellis text format (deprecated)--override-basecfgarg β base chip configuration in Trellis text format--textcfgarg β textual configuration in Trellis format to write--lpfarg β LPF pin constraint file(s) π--lpf-allow-unconstrainedβ don't require LPF file(s) to constrain all IO--no-promote-globalsβ disable all global promotion--out-of-contextβ disable IO buffer insertion and global promotion/routing, for building pre-routed blocks (experimental)--disable-router-lutpermβ don't allow the router to permute LUT inputs
π heads up bestie:--basecfgis deprecated, and--router2-tmg-ripupis deprecated too (use--tmg-ripupinstead). also--out-of-contextand--parallel-refineare on their experimental arc β slay responsibly π
and that's the whole thing, you made it to the end ily π₯Ή this was nextpnr-ecp5 version 0.10-5, from March 2026 β go place and route something gorgeous, you've got this πβ¨π¦
π¦ where this page comes from
- ubuntu stonking: nextpnr-ecp5 0.10-5 Β· ISC
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms