Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
base: 9ccd6471b132
Choose a base ref
...
head repository: NixOS/nixpkgs
compare: 61e57a827b84
Choose a head ref
  • 2 commits
  • 1 file changed
  • 1 contributor

Commits on Jan 12, 2019

  1. icestorm: improve x86 build/runtime perf with pypy

    PyPy3 offers tremendous speedups for IceStorm tools written in Python,
    including tools used at compile-time to generate the chip databases, and
    runtime tools distributed to users, such as icebox_vlog.
    
    For example, on my ThreadRipper 1950X, build times for IceStorm
    consistently go from 2m30s -> 1m30s with this change, a 40% improvement,
    simply due to improvements in raw CPU efficiency. (This is also worsened
    by the fact the build is currently serial, but that can easily be fixed
    anyway.)
    
    On top of that, tools distributed to users are also now run using PyPy.
    Utilities such as icebox_vlog are useful for post-bitstream testing, for
    instance, and also are improved due to improved CPU efficiency as well.
    For example, when "decompiling" an ICE40 bitstream for HX8K devices,
    containing a synthesized copy of PicoRV32 (from the NextPNR demos), the
    runtime of icebox_vlog is cut from 25 seconds to 9 seconds consistently
    with this change alone.
    
    Normally, picking a Python interpreter outright for Python-based code is
    a "bad idea", but in the case of IceStorm it should be perfectly safe,
    and an excellent improvement for users. There are a few reasons for
    this:
    
      - IceStorm uses pure Python 3 and nothing else. There are no
    requirements for any 3rd party packages, which might cause annoying
    incompatibilities, and PyPy has historically shown very strong core
    Python compatibility.
    
      - IceStorm is NOT a set of Python libraries, it is a set of tools,
    some of which, coincidentally, are written in Python. It is (normally)
    bad form to fix libraries to certain interpreters versions if the reason
    strictly isn't "it doesn't work/isn't compatible". That is not the case
    here. These tools may later be used by other programs, such as NextPNR,
    but the Python interpreter is ultimately not that important in quesion
    for the user. In this sense, there is almost no downside to picking
    PyPy explicitly if it offers far better performance.
    
    (Point 2 is not actually strictly true; there are some distributed .py
    files that you can import from but they are basically just static
    classes that are imported by tools like nextpnr; this is expected.)
    
    Because of this, users should see very little change except better
    performance for IceStorm tools on their machines.
    
    Note that PyPy is not supported on aarch64 -- this only applies to
    x86_64 machines.
    
    Signed-off-by: Austin Seipp <aseipp@pobox.com>
    thoughtpolice committed Jan 12, 2019
    2
    Copy the full SHA
    18839e1 View commit details
    Browse the repository at this point in the history
  2. icestorm: enableParallelBuilding = true

    With the previous PyPy3 change, this reduces the compile time from
    ~1m30s to roughly 36s (compared to the original, serial, Python 3 build
    time of 2:30s).
    
    Signed-off-by: Austin Seipp <aseipp@pobox.com>
    thoughtpolice committed Jan 12, 2019
    Copy the full SHA
    61e57a8 View commit details
    Browse the repository at this point in the history