<_whitenotifier-9>
[amaranth-lang/amaranth-lang.github.io] whitequark 9c7a816 - Deploying to main from @ amaranth-lang/rfcs@a5a5030ee57d6408f8fcb66796ed4f6bb3570cf0 🚀
<_whitenotifier-9>
[amaranth-lang/amaranth-boards] galibert a1da1f5 - mister/de10-nano: In order to detect clock-stretching, i2c clock lines must be bidirectional
<d1b2>
<Olivier Galibert> ah great, current minerve, current amaranth and current python don't seem to be compatible
<whitequark>
can you elaborate?
<d1b2>
<Olivier Galibert> is (1, False) supposed to be castable to a shape, and if not was it recently?
<whitequark>
it was
<whitequark>
it's been deprecated since before 0.1
<d1b2>
<Olivier Galibert> well, minerva uses it, great
<d1b2>
<Olivier Galibert> class CSR(Record): def __init__(self, addr, description, name=None, src_loc_at=0): fields = [] mask = 0 offset = 0 for fname, shape, access in description: if isinstance(shape, int): shape = shape, False width, signed = shape fields.append((fname, shape)) [...]
<d1b2>
<Olivier Galibert> does it just mean unsigned(1)?
<whitequark>
this should've been fixed by minerva commit 6c3294b9655311c43d8cd0cc78bdf1e7336a28c1
<whitequark>
yes, it means unsigned(1)
<d1b2>
<Olivier Galibert> well, that commit missed the csr code, should be an easy fix then
<d1b2>
<Olivier Galibert> are there examples of how to use the result of platform.request() for things that are more complicated than a led or a switch? Thinking the hdmi port of the mister there
<whitequark>
how would you do it in Verilog?
<d1b2>
<Olivier Galibert> for once it would be easy because it's just a collection of pins and they're technically separate in verilog
<d1b2>
<Olivier Galibert> amranth-boards is the one adding structure
<whitequark>
do you need to use something like OSERDES?
<d1b2>
<Olivier Galibert> no
<adamgreig[m]>
are you just looking to know that platform.request returns an object with attributes for each subsignal?
<d1b2>
<Olivier Galibert> pretty much yes, and how I use that return to actually get to what I need to .eq() to
<d1b2>
<Olivier Galibert> and also how I do in/out/enable for the bidirectional pins (e.g. i2c)
<whitequark>
.i/.o/.oe
<d1b2>
<Olivier Galibert> sounds perfect, lemme try it now
<d1b2>
<Olivier Galibert> I'd love a method for the platform to tell me what resources it proposes/what signals it provides, should I make an Issue? amaranth core or -boards?
<whitequark>
you can just look at .resources
<whitequark>
note, the whole resource subsystem will be overhauled at some point
<d1b2>
<Olivier Galibert> that what I tried, honestly it didn't really help 🙂
<whitequark>
hm? why didn't it?
<d1b2>
<Olivier Galibert> well, that gets you the names of the top resources, like ('adv7513', 0), which is my hdmi, but it did not tell me about the impact of subsignals on the names (now I knw)
<adamgreig[m]>
have you checked the python file for the board you're using? it's maybe somewhat more complicated in amaranth_boards because of the indirection through the predefined resource types, but that's usually the simplest list of signals
<d1b2>
<Olivier Galibert> adam: yeah, it's opened in another window, but that didn't tell me how to reach them 🙂
<whitequark>
I think that's just an ambient bit of knowledge you acquire once and then keep using
<d1b2>
<Olivier Galibert> wq told me now, so I'm good
<adamgreig[m]>
I guess yea, you have to know that you can `hdmi = platform.request("adv7513", 0)` and then get back something where you can `m.d.comb += hdmi.tx_d_r.eq(12)` or so
<d1b2>
<Olivier Galibert> yeah, amaranth is currently suffering from a lack of real-world examples to do not reimplement their own infrastructure
<whitequark>
I'm hesitant to extensively document a lot of the bits of Amaranth because they (especially the ones with more Migen influence) are kind of terrible
<whitequark>
the resource system in particular is something I put together under severe time pressure and it falls apart for all but the simplest cases
<d1b2>
<Olivier Galibert> I guess you should document what you want to have instead (but I guess it's just called rfc)
<whitequark>
yes
<d1b2>
<Olivier Galibert> but resources need the new lib.data/lib.connect, etc. Dependencies hell, futures edition
<whitequark>
yes
<whitequark>
it's fine, interfaces are the most critical and that's getting done in immediate future
<_whitenotifier-9>
[amaranth-lang/amaranth-lang.github.io] whitequark d77057d - Deploying to main from @ amaranth-lang/rfcs@2af204df7fa21b7a521a0b1e8a268cf018740b64 🚀
anuejn has joined #amaranth-lang
vup has joined #amaranth-lang
mindw0rk has quit [Ping timeout: 264 seconds]
mindw0rk has joined #amaranth-lang
<whitequark>
jfng: have you run the Minerva formal testbench recently?
<jfng[m]>
nope, is there an issue with it ?
<whitequark>
Jannis Harder was looking for cores that pass riscv-formal master
<jfng[m]>
though minerva support isn't in upstream riscv-formal
<whitequark>
yeah
<whitequark>
adamgreig: would you be willing to submit the CRC generator as an Amaranth RFC first?
<whitequark>
I've reviewed the code and I like it a lot, but our process does require going through an RFC first for a significant new addition to the stdlib
<adamgreig[m]>
no problem
<whitequark>
re valid, it looks like the CRC generator has an always-ready stream as an input
<whitequark>
so I think having data/valid is OK. I'm not sure if maybe we should actually have that as a stream?
<whitequark>
then it could be automatically compatible
<adamgreig[m]>
what's the status of streams? it seems like once they are stable it would be the obvious choice of interface, sure (I expect streams are/will be just data+ready+valid bundled up?)
<whitequark>
this question also applies to FIFOs, whose r_rdy/r_en/r_data and the write signals form a valid stream (except for fwft=False which I just filed an issue to deprecate)
<adamgreig[m]>
yea, whatever you end up with in FIFOs is probably what CRC would want too, I suppose
<adamgreig[m]>
(with the exception that CRC happens to be always-ready but I don't think that's a concern really?)
<whitequark>
no, that's fine and the streams proposal will handle that
<whitequark>
(it's just a signal that's reset=1)
<adamgreig[m]>
(hm, I guess matrix emoji reactions are not the best choice in a room that's bridged to irc and then onwards to discord, heh)
<adamgreig[m]>
would you rather wait for streams to be done before I write an rfc for crc, or take crc as it is and change it later, or change it now to the current stream concept?
<whitequark>
you can take CRC as it is and file an RFC for it
<whitequark>
there are some discussion items we could do now, with this one maybe being bumped for later
<whitequark>
re masking: would it skip over the masked words?
<whitequark>
I think streams should have an adapter type thing that implements the muxing necessary for coalescing words
<whitequark>
I'm thinking that in streams, valid could be n-wide, in which case data would be a data.ArrayLayout of n elements
<whitequark>
the existing interfaces infrastructure would take care of not letting you make incorrect connections
<d1b2>
<Olivier Galibert> are streams rfced or not yet?
<whitequark>
they require interfaces
<adamgreig[m]>
yea, I think the usual use case for masking is a wide interface from a high speed serial protocol but you're computing crcs over words that are smaller than the interface
<adamgreig[m]>
like 128 bit stream from a gige mac but you need byte-wise ethernet crc
<adamgreig[m]>
so you'd want it to just not process any masked bytes in that case
<adamgreig[m]>
but that's not trivial to actually do, so it might be a more specialist use-case anyway
<whitequark>
right I see
<adamgreig[m]>
(in particular in that case you'd only ever mask off bytes at the end, not the start/middle, which probably makes it a bit easier? but even so it's not immediately obvious to me what the best way to do it is without basically generating a whole new crc logic for every possible width)
<d1b2>
<Olivier Galibert> Quartus is so so so so so so slow
<d1b2>
<Olivier Galibert> really need to go back to mistral at some point and blow it out of the water
<whitequark>
@everyone: note that the next meeting will have RFCs 3, 4, 5 up for discussion; you might want to read these beforehand https://github.com/amaranth-lang/rfcs/pulls
<d1b2>
<johnsel> ummm
<d1b2>
<ScarlettCatte> Uhhh
<d1b2>
<TheManiacalLemon> That's pretty neat that the IRC <-> 1b2 bot still has permissions to ping @-everyone on Discord 😬
<d1b2>
<TheManiacalLemon> I thought those permissions got fixed the last time we had an issue on IRC with people joining, unless that was the GSG discord
<d1b2>
<__fastcall> when the webhook is created there's a way to disable mentions iirc
<whitequark>
I think this is probably the loudest reply-all I've ever sent
<d1b2>
<Sludge> Truly the @ of the century
<whitequark>
how many people is that, anyway?
<d1b2>
<__fastcall> everyone knows about those rfs now
<d1b2>
<theatrus> :neverendingblobs:
<d1b2>
<Gallagher> :waaat:
<d1b2>
<johnsel> 600 people are online, so at least those
<whitequark>
ouch
<d1b2>
<johnsel> I can see that number rising, lol
<d1b2>
<__fastcall> discord.gg/S5jfXeZW
<d1b2>
<__fastcall> 2766 people
<d1b2>
<johnsel> ah, 2766
<d1b2>
<johnsel> haha
<d1b2>
<__fastcall> a @ everyone notifies offline people too
<d1b2>
<ScarlettCatte> Yep.
<d1b2>
<ScarlettCatte> RIP
<d1b2>
<josuah> that would be a thing for discord to fix, happens all of the time
<d1b2>
<ScarlettCatte> :ping:
<d1b2>
<__fastcall> well it's a permissions issue
<d1b2>
<Freyja> Bots should not have everyone pings by default imo, I've been in servers where someone abused the quote system of a bot was abused as privilege escalation, so this is me with my security hat on
<d1b2>
<johnsel> it's fine, now we all can review the RFCs and join the meeting
<d1b2>
<DriftingPancake> lmao
<d1b2>
<johnsel> it will be a hoot
<whitequark>
I mean, you're... welcome?
<whitequark>
the weekly meeting is open for anyone who wants to participate
<d1b2>
<ScarlettCatte> Look forward to 2700 attendees I guess?
<d1b2>
<johnsel> Yep, I'll bring snacks.
<d1b2>
<johnsel> Anyway, my dinner just arrived. I wish you all the best
<_whitenotifier-9>
[amaranth-lang/amaranth-lang.github.io] whitequark 505ca6b - Deploying to main from @ amaranth-lang/amaranth@fcc4f54367e4931cfb4e13d96de7d32d7f81219d 🚀
nelgau has joined #amaranth-lang
<d1b2>
<Perigoso> Ah, so this is what the toot was about 😄
<d1b2>
<esden> I wish the irc<->discord bridge tool was still maintained... when I find some time I will patch out the role mentioning from IRC. sigh sorry everyone.
<d1b2>
<esden> (there is no bridge software between irc and discord that is actively maintained and works well... it is quite annoying and I don't need another project 😦 )
<whitequark>
esden: didn't you mean "sorry @everyоne"?
<d1b2>
<esden> lol! 😄
<d1b2>
<esden> indeed indeed 😄
<jn>
U+043EоCYRILLIC SMALL LETTER O, nice
<whitequark>
I wasn't sure if a non-breaking space would survive the bridge
<whitequark>
and I really didn't want to do this again
<d1b2>
<sierra (she/her)> I mean I’m gonna read those RFCs now
<d1b2>
<Olivier Galibert> they're good rfcs
<d1b2>
<nyanotech> still lol at discord behaving weirdly if you @ everyone, but escape the @ with a \