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

# Keep sorted.
flake8
gitpython
hjson
ipyxact >= 0.2.4
isort
livereload
mako
meson >= 0.53.0, <= 0.54 # minimum matches version in meson.build
mistletoe>=0.7.2
premailer
pyelftools
pyftdi
pyserial
pygments
pytest
pytest-timeout
pyyaml >= 5.1
tabulate
yapf

# Used by OTBN simulator
riscv-model == 0.6.5

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

# Development version with OT-specific changes
git+https://github.com/lowRISC/edalize.git@ot#egg=edalize >= 0.2.0
