software: rename `[toolchain]` feature to `[builti...
by whitequark 1 year 11 months
software: rename `[toolchain]` feature to `[builtin-toolchain]`.

* Because `[toolchain]` is ambiguous and it could indicate "Glasgow
toolchain" rather than "YoWASP toolchain".
* For consistency with `GLASGOW_TOOLCHAIN=builtin`.
* For consistency with Amaranth that is using `[builtin-yosys]`.
b5f7b6cc
target: locate and examine the FPGA build tools.
by whitequark 1 year 11 months
target: locate and examine the FPGA build tools.

This commit adds a mechanism to Glasgow similar to the existing
`AMARANTH_USE_YOSYS` mechanism that selects a Yosys binary to run.
It introduces the concept of a toolchain (a collection of tools
that come from a single source; currently, either the system binaries
or the co-installed YoWASP packages). The toolchain is used
as a whole, i.e. system and YoWASP packages cannot be mixed since
this has a high probability of being a mistake. Any missing
components required for operation are reported.

To select the toolchain, a new `GLASGOW_TOOLCHAIN` environment
variable is introduced. It can be set to `builtin`, `system`, or
a comma separated list where earlier entry has priority.

The default is `builtin,system` to make YoWASP packages take priority
since when installed with pipx or pdm, these packages are guaranteed
to provide a consistent experience.

Experienced users can globally set `GLASGOW_TOOLCHAIN` to be `system`
or `system,builtin`, which will improve bitstream build performance.

The digest of the tool versions is included in the bitstream ID,
meaning the applets will be rebuilt if the toolchain is upgraded.

The `target.toolchain` code includes support for `nextpnr-ecp5` and
`ecppack` that are not currently used. We're likely to use them in
the future so it doesn't hurt to have them here.

This commit also updates the installation instructions, which are
now almost entirely aligned for all OSes, and do not require anything
besides git, Python, and pipx.

The dependencies are updated to point to the versions of YoWASP tools
with bugfixes around terminal interaction (^C and ABC output spew).

Fixes #302.
36769e73
cli: don't print a backtrace when interrupted.
by whitequark 1 year 11 months
576f610e
software: add PDM support.
by whitequark 1 year 11 months
software: add PDM support.

PDM's functionality is essentially equivalent to that of pipx for
the Glasgow use case, but it can still be handy for development.
5eb4c72e
README: acknowledge @mwkmwkmwk.
by whitequark 1 year 11 months
b16ee97b
pyproject: setuptools~=67.0 → setuptools>=67.0
by whitequark 1 year 11 months
pyproject: setuptools~=67.0 → setuptools>=67.0

The latter is overly strict and breaks installation with PDM (which
is more principled than our other PEP517 build backends).
0d595593
meetings: add minutes from 2023-07-15
by attie 1 year 11 months
edc57fa0
Don't use pkg_resources
by Marcelina Kościelnicka 1 year 11 months
18dc6741
applet.sensor.scd30: remove unused imports
by Marcelina Kościelnicka 1 year 11 months
9a668a21
software: move from `TSTriple` to `Pin`, simplify ...
by Marcelina Kościelnicka 1 year 12 months
software: move from `TSTriple` to `Pin`, simplify `Pads`

This removes the last dependency on `amaranth.compat`, finishing the
migration.
ac7472aa
Report a bug