Jean-François Nguyen

Results 22 issues of Jean-François Nguyen

"TODO" isn't a very convincing pitch.

improvement

- RFC PR: https://github.com/amaranth-lang/rfcs/pull/16 - Amaranth SoC PR: https://github.com/amaranth-lang/amaranth-soc/pull/40 - [x] Implementation: amaranth-lang/amaranth-soc#40 - [x] Fix amaranth-lang/amaranth-soc#69 - [ ] Reference documentation - [ ] Guide-level documentation

Currently, `csr.Builder` works around this by casting array indices to strings calling `MemoryMap.add_resource()`. Repro: ```python3 from amaranth import * from amaranth_soc import csr class FooRegister(csr.Register, access="r"): a: csr.Field(csr.action.R, unsigned(8)) regs...

bug

Depends on PR amaranth-lang/amaranth#978. `MemoryMap` resources (e.g. `csr.Element`s) are now assumed to have a `.signature` property, which lets them hold annotations. I am not sure whether we should enforce this...

Peripherals are a currently missing building block from nmigen-soc. They would provide wrappers to cores by means of a CSR interface (also interrupts, but handling these could be the subject...

question
meta:needs-rfc

The previous behaviour was to raise a NotImplementedError. It is now the responsibility of the caller to check if the property was initialized or not. Affected properties: * wishbone.Interface.memory_map *...

This PR aims to add support for CSR-capable peripherals. Related issue: #10 A new base class `csr.Peripheral` can be subclassed to provide nmigen-soc peripherals with helpers for managing CSR registers...

Repro: ```python3 from nmigen import * from nmigen.back import rtlil from nmigen_soc import wishbone class Top(Elaboratable): def elaborate(self, platform): m = Module() m.submodules.dec = dec = wishbone.Decoder(addr_width=5, data_width=8, granularity=8) bus...

bug

This arbiter should be compatible with all the optional features of `wishbone.Interface`. The round-robin implementation could perhaps be moved to `nmigen.lib` and imported back here, but that would make nmigen-soc...

Repro: ```python3 from amaranth import * from amaranth.lib import wiring from amaranth.hdl import Fragment class Foo(wiring.Component): def __init__(self, arg): if not isinstance(arg, int): raise TypeError self._arg = arg super().__init__({}) def...

improvement