# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# Development version of edalize until all our changes are upstream
git+https://github.com/lowRISC/edalize.git@ot

# Development version with OT-specific changes
git+https://github.com/lowRISC/fusesoc.git@ot

pyyaml
mako

# Needed by dvsim.py (not actually used in Ibex)
premailer

# Recurse to get any requirements from riscv-dv
-r vendor/google_riscv-dv/requirements.txt
