whitequark[cis] changed the topic of #amaranth-lang to: Amaranth hardware definition language · weekly meetings: Amaranth each Mon 1700 UTC, Amaranth SoC each Fri 1700 UTC · play https://amaranth-lang.org/play/ · code https://github.com/amaranth-lang · logs https://libera.irclog.whitequark.org/amaranth-lang · Matrix #amaranth-lang:matrix.org
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 245 seconds]
<_whitenotifier-4> [rfcs] whitequark reviewed pull request #41 commit - https://github.com/amaranth-lang/rfcs/pull/41#discussion_r1845735337
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 252 seconds]
Degi has quit [Ping timeout: 252 seconds]
Degi has joined #amaranth-lang
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 260 seconds]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 276 seconds]
Bluefoxicy has quit [Ping timeout: 246 seconds]
Bluefoxicy has joined #amaranth-lang
h_ro has quit [Ping timeout: 276 seconds]
h_ro has joined #amaranth-lang
jorolf[m] has joined #amaranth-lang
<jorolf[m]> I saw that a while back @ld_cd:matrix.org was working on an AXI RFC. Is that still being worked on?
frgo has joined #amaranth-lang
frgo has quit [Read error: Connection reset by peer]
frgo has joined #amaranth-lang
frgo has quit [Remote host closed the connection]
frgo has joined #amaranth-lang
frgo has quit [Remote host closed the connection]
frgo has joined #amaranth-lang
bai has joined #amaranth-lang
bai has quit [Client Quit]
bai_ has joined #amaranth-lang
AledCuda[m] has joined #amaranth-lang
<AledCuda[m]> Yup
<AledCuda[m]> Higher priority work took over for a while (etch tool shit the bed) but I've got a working draft of the interface/sig and CSR bridge stuff which I'm testing out with some peripherals at work
<AledCuda[m]> Once I'm satisfied with it I'll write up an RFC
frgo has quit [Remote host closed the connection]
frgo has joined #amaranth-lang
frgo has quit [Remote host closed the connection]
<_whitenotifier-4> [rfcs] ld-cd reviewed pull request #41 commit - https://github.com/amaranth-lang/rfcs/pull/41#discussion_r1846965095
frgo has joined #amaranth-lang
<AledCuda[m]> Actually I did have a question here for anyone more familiar with the language internals here. Each of the axi signalling channels has semantics that map well onto amaranth streams. Someone a while back pointed out that it would be handy to have a method like .rstream/.wstream methods on lib.fifo.*. My understanding is that the lack of a correspondence between structs and lib.wiring signatures makes this impractical because you
<AledCuda[m]> have multiple distinct signals that you'd need to pack into a single payload. Is this inference correct and still the case?
<zyp[m]> it's not impractical, it's the way it's intended to work
<zyp[m]> but yeah, I wrote RFC 73 to improve how this works in practice: https://amaranth-lang.org/rfcs/0073-stricter-connections.html
frgo has quit [Remote host closed the connection]
frgo_ has joined #amaranth-lang
<AledCuda[m]> Sorry I think I'm not quite understanding
whitequark[cis] has joined #amaranth-lang
<whitequark[cis]> you can connect a single bare Signal and a lib.struct just fine
<AledCuda[m]> But not multiple in an ergonomic way if I understand correctly?
<whitequark[cis]> I don't understand
<AledCuda[m]> Maybe to reduce the scope of my question imagine an wiring.Compobent that provides an AXI stream FIFO that at a top level has a DATA and LAST signal, in an amaranth stream those would be packed into a single payload signal. Is it possible to provide a .w_stream method like on lib.FIFO https://github.com/amaranth-lang/amaranth/blob/590cba1d6c00dffba7abb5f399680ac50e252adf/amaranth/lib/fifo.py#L98
<AledCuda[m]> IE w_stream.payload = Cat(LAST, USER) but in a way that produces a StructLayout
<zyp[m]> sure, you can do that
<whitequark[cis]> lib.fifo hasn't been updated for lib.data and will probably get replaced wholesale with a new module
frgo_ has quit [Ping timeout: 248 seconds]
<whitequark[cis]> the r_stream/w_stream methods are kind of a thing to tide us over until then
<AledCuda[m]> Basically I'm looking to provide something similar for an AXI rfc
<zyp[m]> I would consider using stream interfaces directly in the AXI interfaces instead of making stream gaskets
<whitequark[cis]> yeah
<AledCuda[m]> Hmm, I'll try and see if I can get that to play well with vendor IP integrators but I understand that's not a broader concern to the broader language
<AledCuda[m]> Ah
<AledCuda[m]> Yup
<AledCuda[m]> Thanks
<AledCuda[m]> Sorry I had convinced myself that was impossible
<zyp[m]> I'd add that this is ugly, and if this becomes commonplace due to gaskets or whatever, it'd be good to have a kind of Cat that takes a layout and a dict of signals
<zyp[m]> Unless we already have it and I just can't remember it
<AledCuda[m]> I might end up writing something like that because an annoying number of the axi signals are optional
frgo has joined #amaranth-lang
<zyp[m]> I guess it could be a method on data.Layout, so you could do e.g. interface.payload = payload_shape.aggregate({'data': data, 'last': last})
<_whitenotifier-4> [rfcs] galibert closed pull request #12: Better definition of clock domains - https://github.com/amaranth-lang/rfcs/pull/12
<_whitenotifier-4> [rfcs] galibert commented on pull request #12: Better definition of clock domains - https://github.com/amaranth-lang/rfcs/pull/12#issuecomment-2483777089
frgo has quit [Ping timeout: 264 seconds]
frgo has joined #amaranth-lang
frgo has quit [Remote host closed the connection]
frgo has joined #amaranth-lang
frgo has quit [Remote host closed the connection]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 252 seconds]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 276 seconds]
Lord_Nightmare has quit [Ping timeout: 248 seconds]
Lord_Nightmare has joined #amaranth-lang
frgo has joined #amaranth-lang
Lord_Nightmare has quit [Quit: ZNC - http://znc.in]
Lord_Nightmare has joined #amaranth-lang
frgo has quit [Ping timeout: 272 seconds]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 252 seconds]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 272 seconds]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 265 seconds]
jjsuperpower__ has joined #amaranth-lang
<cr1901> Will this get backported to 0.5.x branch/releases?
<whitequark[cis]> if you send a PR for v0.5.x it definitely will
bai_ has quit [Ping timeout: 276 seconds]
<whitequark[cis]> it's done on a per-request basis (we had an RFC about it; https://amaranth-lang.org/rfcs/0021-patch-releases.html)
<cr1901> I'll do it when I'm less distracted
<cr1901> It's "just" a cherry-pick of two commits, so shouldn't be too bad
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 272 seconds]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 260 seconds]
frgo has joined #amaranth-lang