hardware.assembly: fix `HardwareInOutPipe.reset`.
by Wanda 1 month 1 week
13614df4
software: update firmware.
by whitequark 1 month 1 week
3651b66b
firmware: reset FPGA side FIFOs automatically (-61...
by whitequark 1 month 1 week
firmware: reset FPGA side FIFOs automatically (-61 bytes XRAM).

This commit ties together several changes that align the way FIFOs work
with the new API with the way the firmware treats FIFOs. With new API,
applets can request up to 4 independent pipes: two OUT and two IN.
There is no inherent ties between any of the pipes, in particular they
are not paired as IN+OUT.

Until this commit, the gateware would pair pipes into interfaces: one
IN+OUT pair per interface. After this commit, each endpoint gets its
own interface, independent from all others. Moreover, the firmware is
now aware of a pipe reset register in the FPGA, and will reset a pipe
in response to the standard Set Interface command. This command would
already clear buffers in the FX2, and for correctness it is necessary
to reset the complementary buffers in the FPGA too; until now this was
the responsibility of the host software, which made using the Glasgow
hardware with non-Glasgow software rather annoying. (Even while it is
not supported, we don't want to make it painful.)

Until this commit, the hardware assembly would create a global reset
register, and apply `ResetInserter` to every added submodule. This was
not robust: due to Amaranth issues, it is less reliable than adding
a clock domain per applet (`ResetValue()` only looks at the domain
reset, not any added reset), and it made it impossible to a single
applet individually in a multiple applet configuration. After this
commit, an applet is reset whenever *any* of the pipes connected to it
are reset. (Also, pipes gain a `reset()` method.) While a bit limited,
this approach avoids needing to introduce applet resets explicitly, at
least for most applets which are controlled via a pipe.

The approach of offering two configurations (one with four EPs and one
with two EPs) is unchanged, with all of its upsides and downsides.
b8b10014
cli: eliminate noise on Ctrl+C.
by whitequark 1 month 1 week
cli: eliminate noise on Ctrl+C.

This try..except* block forgotten in an earlier commit.
f9412012
applet.interface.jtag_pinout: migrate to V2 API.
by Wanda 1 month 1 week
4545bfe4
gateware.cobs: don't lose NUL bytes writing end ma...
by whitequark 1 month 1 week
gateware.cobs: don't lose NUL bytes writing end marker into full FIFO.

Discovered-by: @attie
d38ed219
software: update `pdm.min.lock`.
by github-merge-queue 1 month 1 week
581d7099
applet.control.servo: migrate to V2 API.
by Wanda 1 month 1 week
f2853625
applet.memory.25x: include list of commands in dec...
by whitequark 1 month 1 week
applet.memory.25x: include list of commands in decoder help.
3e8c3539
applet.memory.25x: decode command 4Bh (RDUID).
by whitequark 1 month 1 week
2f3ebdac
Report a bug