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
<vegard_e[m]> theoretically it's possible to simply just add a signature to a record
<vegard_e[m]> and it should be fairly trivial to write a helper that iterates/recurses though a record layout and generates an equivalent signature
<whitequark[cis]> there isn't; you could make such a way yourself if you need it
<vegard_e[m]> only gotcha is that record instances doesn't have an overall direction, wiring interfaces does
<_whitenotifier-4> [amaranth] whitequark closed issue #1551: Amaranth not compatible with Yosys 0.48 - https://github.com/amaranth-lang/amaranth/issues/1551
greghashtag9468[ has joined #amaranth-lang
<greghashtag9468[> I've been using the built-in stream support to build up a data pipelines. I have components that wrap sequences of blocks together.
<greghashtag9468[> Is there a preferred way to connect to a stream exposed as a component interface from within the module? Using `wiring.connect` picks up the wrong direction, as it sees the external Out/In direction.
<greghashtag9468[> I'm currently using a wrapper function to extract the signature of the stream and flip it, this seems a bit better than manually connecting stream members. But curious if there is a better way.
<vegard_e[m]> flipped()
<greghashtag9468[> Ahh, yep. flipped() does exactly what I need. 👍
<whitequark[cis]> hi Greg!
<whitequark[cis]> how's your experience with the wiring library so far?
<greghashtag9468[> I like it. Adding more design intent to each module/blocks interfaces is good.
<greghashtag9468[> My current project is porting a MIPI PHY I'd written in litex over to amaranth. I have noticed the simulator creates a lot of duplicate names. Each block has an "i" and "o" stream. In the simulator the module contains `o__payload`, `o__payload$20`, etc. It's a bit tricky to pair up payload/valid/ready groups. This might just be a user error. 😅
<whitequark[cis]> ah, so this isn't (just) a simulator issue, the namer is the same for RTL output
<whitequark[cis]> we have an open issue for improving the namer
<greghashtag9468[> That makes, sense. It doesn't seem like there is way yet of not creating overlaping names using `wiring.connect`. I'm using kwargs as demonstrated in the docs. If that could be prefixed to the signals connected? I've not thought through any extra implication of that.
<whitequark[cis]> the namer doesn't know you're using connect(), since connect() is just a bunch of .eq()
<whitequark[cis]> all it knows is signal names + some abstracted version of the hierarchy
<whitequark[cis]> the rest of the context is lost by that point
<whitequark[cis]> (unfortunately this is fairly normal for a compiler)
cr1901 has quit [Ping timeout: 248 seconds]
Degi has quit [Ping timeout: 248 seconds]
Degi has joined #amaranth-lang
cr1901 has joined #amaranth-lang
Raito_Bezarius has quit [Ping timeout: 265 seconds]
Raito_Bezarius has joined #amaranth-lang
frgo has quit [Remote host closed the connection]
frgo has joined #amaranth-lang
FFY00_ has quit [Ping timeout: 260 seconds]
FFY00 has joined #amaranth-lang
Psentee has quit [Quit: Off]
Psentee has joined #amaranth-lang
Psentee has quit [Client Quit]
Psentee has joined #amaranth-lang
Stary has quit [Ping timeout: 265 seconds]
Stary has joined #amaranth-lang