1. Make sure you have an x32-capable kernel (CONFIG_X86_X32=y); Debian amd64 kernels are configured with the conditional x32 patch and CONFIG_X86_X32_DISABLED=y (https://salsa.debian.org/kernel-team/linux/-/blob/a2f701044777053055ef9c0f145b24731f60f4ea/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch), and will work out-of-box with just "syscall.x32=y" in the cmdline. 2. Untar nextpnr.tgz to somewhere (I used /mnt/zest/nextpnr for the build and tests, so the libraries would end up in /mnt/zest/nextpnr/nextpnr/ARCH/nextpnr-ecp5; you might or might not need to replicate that). 3. If your environment doesn't have python3.8, you can use the bare-bones (12MB!) chroot from nextpnr-chroot.tgz by untaring it, then nextpnr.tgz in nextpnr-chroot/mnt/zest/nextpnr, then chrooting to nextpnr-chroot and cding to mnt/zest/nextpnr/nexpnr (note that the chroot results might not be absolutely optimal since I haven't managed to compile the bytecode but I'm 99% sure the python isn't in the hot path, so). 4. From the newly-created directory run ./ld-linux-ARCH.so.2 --library-path ARCH ./ARCH/nextpnr-ecp5 --quiet --placer heap --um-45k --package CABGA381 --speed 8 --json JSON.json wherein blinky.json is the ecp5_evn example: https://github.com/SymbiFlow/prjtrellis/tree/1e03e4e09ae1e7bec0aea3cdfa5658932470a2e2/examples/ecp5_evn and attosoc.json is the soc_ecp5_evn example: https://github.com/SymbiFlow/prjtrellis/tree/1e03e4e09ae1e7bec0aea3cdfa5658932470a2e2/examples/soc_ecp5_evn ./ld-linux-x86-64.so.2 --library-path amd64 ./amd64/nextpnr-ecp5 --quiet --placer heap --um-45k --package CABGA381 --speed 8 --json attosoc.json ./ld-linux-x32.so.2 --library-path x32 ./x32/nextpnr-ecp5 --quiet --placer heap --um-45k --package CABGA381 --speed 8 --json attosoc.json Numbers (probably calculated wrong, see screenshots/): ecp5_evn: ≈19% on E6400, ≈25% on i5-3450 soc_ecp5_evn: ≈22% on E6400, ≈29% on i5-3450, ≈28% on i7-8565U, 23% on i9-9980XE with scheduler, and 29% without screenshots/ and respective machines: 0N (screendump, image): Core 2 Duo E6400-based DDR2-666 HP rp5700 PoS system (https://twitter.com/nabijaczleweli/status/1204465652628672512) fbN (framebuffer 3840x2160 BGRA8, image): i5-3450-based DDR3-1600 desktop (both on 5.6.7-1 kernels) lbN (framebuffer 640x480 BGRA8, image): i7-8565U-based DDR4-2400 Toshiba Tecra X40 laptop ( 4.19.118-2 kernel) tN (image): i9-9980XE, 5 GHz, hyperthreads off, latency-tuned™ HFT server (4.9-based kernel) Everything based on HEAD clones of yosys/prjtrellis/nextpnr/icestorm around dawn CEST 25 May 2020: https://twitter.com/nabijaczleweli/status/1264771251165368323, libraries (and the dynamic linkers) from up-to-date sid at that time.