Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proof-of-concept Nix environments for Ibex development #2156

Draft
wants to merge 19 commits into
base: master
Choose a base branch
from

Commits on Mar 26, 2024

  1. [VENDOR] Hack riscv-dv files to fixup shebangs/abspaths

    - Changes in /vendor should be applied using a vendoring patch, or fixed upstream
    
    Signed-off-by: Harry Callahan <[email protected]>
    hcallahan-lowrisc committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    a622da8 View commit details
    Browse the repository at this point in the history
  2. Change all shebangs to '#!/usr/bin/env'

    This improves portability across different operating systems
    
    Signed-off-by: Harry Callahan <[email protected]>
    hcallahan-lowrisc committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    3cea534 View commit details
    Browse the repository at this point in the history
  3. Update .gitignore

    hcallahan-lowrisc committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    e17dd02 View commit details
    Browse the repository at this point in the history
  4. [dv,yaml] Remove '-kdb' flag from vcs sim command (nix problems)

    There was problems running vcs simulations with this command, as something to do
    with launching verdi is not working correctly. It seems we are missing deps for
    some executable, but the error messages are really unhelpful on tracking down
    exactly what. This seems to work, for now.
    
    Signed-off-by: Harry Callahan <[email protected]>
    hcallahan-lowrisc committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    8e49fab View commit details
    Browse the repository at this point in the history
  5. [dv,py] Flush logfiles before spawning subprocess

    This ensures any logging we do before the call to 'run_one()' will appear in the
    correct order in the file.
    
    Signed-off-by: Harry Callahan <[email protected]>
    hcallahan-lowrisc committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    086f997 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    155b35f View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    b441bf2 View commit details
    Browse the repository at this point in the history
  8. [dv,yaml] Move SIM_DIR environment variable under the 'env_var' key0

    This is in-line with how we handle other environment variables in the build, and
    we set the variable inside the appropriate dictionary when invoking the
    command (run_rtl.py in this case).
    hcallahan-lowrisc committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    36185cc View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    c512d50 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    cd50da1 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    5238c6d View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    aecb838 View commit details
    Browse the repository at this point in the history

Commits on Mar 27, 2024

  1. Configuration menu
    Copy the full SHA
    fa8dedf View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    93b6095 View commit details
    Browse the repository at this point in the history
  3. [nix] Add poetry version of ibex python dependencies

    This matches the dependencies given in the python-requirements.txt file in the
    repo root, but uses the pyproject.toml format and the poetry tool to allow nix
    to import this information to construct a python environment.
    
    The poetry.lock file allows each python dep to be pinned, and would need to be
    updated using the poetry tool to bump any dependency.
    
    e.g.
    ```
    nix shell nixpkgs#poetry
    poetry update
    ```
    hcallahan-lowrisc committed Mar 27, 2024
    Configuration menu
    Copy the full SHA
    75bbb77 View commit details
    Browse the repository at this point in the history

Commits on Mar 28, 2024

  1. [nix] Nix sv2v

    hcallahan-lowrisc committed Mar 28, 2024
    Configuration menu
    Copy the full SHA
    ed222da View commit details
    Browse the repository at this point in the history
  2. Create basic flake.nix

    - The default devShell has enough dependencies to run verilator simulations of Ibex
    - Some other dependencies are setup but yet unusued.
    hcallahan-lowrisc committed Mar 28, 2024
    Configuration menu
    Copy the full SHA
    c9c6d47 View commit details
    Browse the repository at this point in the history

Commits on Mar 29, 2024

  1. Configuration menu
    Copy the full SHA
    813f510 View commit details
    Browse the repository at this point in the history
  2. [lowrisc] Add a Nix shell for lowrisc internal use

    This adds a devShell that employees can use to bootstrap access to non-public
    EDA tooling. Evaluation will fail without appropriate credentials to fetch
    the repository 'lowrisc-nix-private'.
    
    Disclaimer: EXPERIMENTAL
    
    These shells will only be functional in the appropriate restricted environments.
    
    This is an experiment at tracking dependencies on proprietary tooling that is
    less out-of-band compared to simply assuming the underlying environment is
    pre-populated. For obvious reasons, this will always have much weaker
    reproducibility guarantees than freely-available software and open-source deps.
    However we can still lean on Nix to make bootstrapping non-public environments
    fast, ergonomic and hopefully reproducible within the constricted space.
    
    Using a nix flake input that is a private repository, we can effectively pin a
    version of the private dependencies (hash+timestamp etc) without exposing what
    they are. As nix is lazily evaluated, these inputs will not attempt to be
    fetched unless we evaluate an output which depends on them, and hence they
    should happily co-exist with other flake attributes for most consumers.
    
    To avoid the flake.lock in this repository from exposing the transitive deps of
    the private input, that flake does not track it's inputs in the standard way.
    Hence, impure evaluation mode is required when using these outputs.
    
    e.g.
    ```
    nix develop .#eda_shell_lowrisc
    nix develop .#eda_shell_lowrisc --command bash -c \
    "make -C dv/uvm/core_ibex SIMULATOR=xlm ITERATIONS=4 TEST=riscv_rand_instr_test"
    ```
    
    Signed-off-by: Harry Callahan <[email protected]>
    hcallahan-lowrisc committed Mar 29, 2024
    Configuration menu
    Copy the full SHA
    00bec32 View commit details
    Browse the repository at this point in the history