NEXTPNR-GENERIC(1)

πŸ’– NEXTPNR-GENERIC πŸ’–

okay bestie, so this is the man page for nextpnr-generic, living in section 1 (General Commands) of the manual. pull up a chair, grab a boba, we're doing place and route 🫢


✨ NAME ✨

nextpnr-generic β€” Next Generation Place and Route πŸ‘‘


✨ DESCRIPTION ✨

So. "nextpnr-generic" is literally Next Generation Place and Route, and this version is Version 0.10-5. she's an icon, she's a legend, and she's about to place AND route ur design πŸ’…


🌸 General options: 🌸

these are the big universal knobs, the main character options if u will:

  • -h, --help β€” show help. ur little "what does this do again" button πŸ™ˆ
  • -v, --verbose β€” verbose output. she's chatty, she tells u everything πŸ’¬
  • -q, --quiet β€” quiet mode, only errors and warnings displayed. no small talk, just the tea β˜•
  • --Werror β€” Turn warnings into errors. warnings are NOT beating the allegations in this mode 😀
  • -l, --log arg β€” log file, all log messages are written to this file regardless of -q. so even in quiet mode, the receipts go here πŸ“
  • --debug β€” debug output. for when u need to see EVERYTHING πŸ”
  • --debug-placer β€” debug output from placer only. just the placer's diary πŸ“”
  • --debug-router β€” debug output from router only. just the router's diary πŸ“”
  • --threads arg β€” number of threads for passes where this is configurable. multithreading era 🧡
  • -f, --force β€” keep running after errors. she does NOT know how to give up πŸ’€
  • --run arg β€” python file to execute instead of default flow 🐍
  • --pre-pack arg β€” python file to run before packing
  • --pre-place arg β€” python file to run before placement
  • --pre-route arg β€” python file to run before routing
  • --post-route arg β€” python file to run after routing
  • --on-failure arg β€” python file to run in event of crash for design introspection. so when it all goes wrong u can go "hmm why tho" 😭
  • --json arg β€” JSON design file to ingest. feed her πŸ“
  • --write arg β€” JSON design file to write
  • --top arg β€” name of top module
  • --seed arg β€” seed value for random number generator. deterministic queen 🌱
  • -r, --randomize-seed β€” randomize seed value for random number generator. chaos era 🎲
  • --placer arg β€” placer algorithm to use; available: sa, heap; default: heap
  • --router arg β€” router algorithm to use; available: router1, router2; default: router1
  • --slack_redist_iter arg β€” number of iterations between slack redistribution
  • --cstrweight arg β€” placer weighting for relative constraint satisfaction
  • --starttemp arg β€” placer SA start temperature. it's giving cozy but make it annealing πŸ”₯
  • --pack-only β€” pack design only without placement or routing. pack it up, we're done here πŸ“¦
  • --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. girl we don't see them πŸ™ˆ
  • --ignore-rel-clk β€” ignore clock-to-clock relations in timing checks
  • -V, --version β€” show version. the "who even are u" option πŸ’
  • --test β€” check architecture database integrity
  • --freq arg β€” set target frequency for design in MHz
  • --timing-allow-fail β€” allow timing to fail in design. permission slip granted, lowkey stressful tho 😬
  • --no-tmdriv β€” disable timing-driven placement
  • --sdc arg β€” Generic timing constraints SDC file to load
  • --sdf arg β€” 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-alpha arg β€” placer heap alpha value (float, default: 0.1)
  • --placer-heap-beta arg β€” placer heap maximum placement density (float, default: 0.9)
  • --placer-heap-critexp arg β€” placer heap criticality exponent (int, default: 2)
  • --placer-heap-timingweight arg β€” placer heap timing weight (int, default: 10)
  • --placer-heap-cell-placement-timeout arg β€” allow placer to attempt up to max(10000, total cells^2 / N) iterations to place a cell (int N, default: 8, 0 for no timeout)
  • --static-dump-density β€” write density csv files during placer-static flow
  • --parallel-refine β€” use new experimental parallelised engine for placement refinement. experimental alert!! πŸ§ͺ
  • --router2-heatmap arg β€” prefix for router2 resource congestion heatmaps
  • --tmg-ripup β€” enable experimental timing-driven ripup in router. also experimental, don't say I didn't warn u πŸ§ͺ
  • --router2-tmg-ripup β€” enable experimental timing-driven ripup in router (deprecated; use --tmg-ripup instead). she's old news, bestie, use the other one πŸ’€
  • --router2-alt-weights β€” use alternate router2 weights
  • --report arg β€” write timing and utilization report in JSON format to file
  • --detailed-timing-report β€” Append detailed net timing data to the JSON report
  • --placed-svg arg β€” write render of placement to SVG file. visual feast 🎨
  • --routed-svg arg β€” write render of routing to SVG file

πŸ¦‹ Architecture specific options: πŸ¦‹

these ones are for the viaduct side of things specifically:

  • --uarch arg β€” viaduct micro-arch to use (available: example, fabulous) ✨
  • --no-iobs β€” disable automatic IO buffer insertion
  • -o, --vopt arg β€” options to pass to the viaduct uarch

friendly reminder bestie: -q hides stuff, but -l still writes everything to the log file no matter what. the receipts are forever πŸ’–

aaaaand that's the whole page fr fr πŸŽ€ this was nextpnr-generic version 0.10-5, dated March 2026, and it's the nextpnr-generic manual page from Generic Commands section 1. slay, u read the whole thing, I'm so proud of u πŸ«Άβœ¨πŸ’…

πŸ“¦ where this page comes from