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
Degi has quit [Ping timeout: 264 seconds]
Degi has joined #amaranth-lang
notgull has joined #amaranth-lang
notgull has quit [Ping timeout: 272 seconds]
smkz has quit [Quit: smkz]
smkz has joined #amaranth-lang
<_whitenotifier-9> [yosys] qarlosalberto opened issue #35: frontend error - https://github.com/YoWASP/yosys/issues/35
notgull has joined #amaranth-lang
notgull has quit [Ping timeout: 268 seconds]
notgull has joined #amaranth-lang
<cr1901> http://gopher.wdj-consulting.com:70/store/vKQzOZjUD1.png What's happening at the blue circle (glitch?) and the red circle (did the stream responder see PutX1 or PutX2 for the circled transaction?)?
notgull has quit [Ping timeout: 268 seconds]
<cr1901> (Actually I know it's not a glitch; I assume it's a transition that lasts for 0 time, but for e.g. the red circle, it's not clear to me _from visual inspection alone_ whether PutX2 or PutX1 is the command latched in during that 0-time-elapsed cycle.)
Psentee has quit [Quit: Off]
Psentee has joined #amaranth-lang
Psentee has quit [Quit: Off]
Psentee has joined #amaranth-lang
Psentee has quit [Client Quit]
Psentee has joined #amaranth-lang
Psentee has quit [Quit: Off]
Psentee has joined #amaranth-lang
SpaceCoaster has quit [Ping timeout: 256 seconds]
<_whitenotifier-9> [yosys] whitequark commented on issue #35: frontend error - https://github.com/YoWASP/yosys/issues/35#issuecomment-2181346697
<_whitenotifier-9> [yosys] whitequark closed issue #35: frontend error - https://github.com/YoWASP/yosys/issues/35
skipwich has quit [Ping timeout: 256 seconds]
<whitequark[cis]> <cr1901> "(Actually I know it's not a..." <- a 0-time transition is what I would call a glitch
<whitequark[cis]> <cr1901> "http://gopher.wdj-consulting.com..." <- at the last cycle where PutX1 is active, there is ready+valid; therefore the transfer is concluded at that point. since the next cycle (which has valid) the command processor performs PutX2
<cr1901> Is the "mode" stream from the POV of the sink/receiver in that waveform viewer screenshot?
<whitequark[cis]> "mode" is from the controller pov
<whitequark[cis]> so "putx1" sends a command to the flash for example
<cr1901> > since the next cycle (which has valid) the command processor performs PutX2. That makes sense. It's just that immediate when PutX2 is put on the bus, bus.mode__ready starts being ready twice as fast (even though for one of those transactions where PutX2 is on the payload the processer is still processing a PutX1)
<whitequark[cis]> the processor keeps ready low until it's done processing a transaction, actually
<cr1901> So why is the last PutX1 transaction (the transaction clocked into the command processor in the red circle, after which PutX2 is immediately put on the payload, _unless I'm misunderstanding which is likely_) finished twice as fast as the preceding ones?
<whitequark[cis]> the processor does not have its own buffer for commands
<whitequark[cis]> it relies on the fact that until it asserts ready, payload must not change
<whitequark[cis]> so the output register of whatever's driving the processor is the command buffer
<cr1901> Ahh, so valid goes low for "that infinitesimal amount of time that the processor driver is changing commands", which is 0 time elapsed in the case of sim and just before the leading edge of top.clk for convenience of testbench/processes?
<whitequark[cis]> yes; it's an artifact of how the stream_put function is written
<whitequark[cis]> two back-to-back calls to it lower valid and then raise it immediately after
<_whitenotifier-9> [amaranth] whitequark opened issue #1413: Enumeration values don't work when used in a constant initializer - https://github.com/amaranth-lang/amaranth/issues/1413
<cr1901> >the processor does not have its own buffer for commands <-- I'm not used to this, as I've never written streams like this (w/o an internal command buffer). I'll keep that in mind from now on.
<whitequark[cis]> it saves you a cycle in many cases
<whitequark[cis]> also the QSPI processor doesn't have any FSMs inside
<cr1901> What causes the glitch in the blue circle? Is it also process/testbench-stimulus-related?
<whitequark[cis]> I think that one might be comb propagation
<whitequark[cis]> do note that sck_buffer__o is an input to FFBuffer; it is not intended to drive the device directly
<cr1901> So none of the artifacts "matter" (for want of better term) in this waveform.
<whitequark[cis]> yes
<cr1901> I never saw these in the pre-testbench/process split simulator (that I can recall), and whenever I saw artifacts like these in iverilog, they typically indicated that I made a coding mistake (floating point precision issue w/ clock period vs how much to delay my testbench stimuli). So they throw me off here.
<whitequark[cis]> this is with fs_per_delta=1
<whitequark[cis]> which is an undocumented parameter whose purpose is to show comb settling in the VCD
<cr1901> oh ffs, why didn't you tell me that from the beginning :P
<cr1901> ALL of what I'm seeing makes sense now
<cr1901> Disregard all of the above. I don't understand 100% how pysim works, but I've looked at it enough to grok the fs_per_delta stuff. I thought all of this was fs_per_delta = 0, and GTKWave was _still_ (somehow) deciding to show 0 length pulses without time having elapsed.
<whitequark[cis]> there is an open issue to make that happen
<whitequark[cis]> because otherwise debugging certain races makes you feel insane
<cr1901> Interesting
<cr1901> That'll be a good aid, especially b/c I'll immediately recognize the glitches as "yea, those def shouldn't be there".
<cr1901> s/the glitches/_those_ glitches/
<_whitenotifier-9> [amaranth] whitequark opened issue #1414: Allow comparison of data.View with a dict - https://github.com/amaranth-lang/amaranth/issues/1414
SpaceCoaster has joined #amaranth-lang
<_whitenotifier-9> [amaranth] whitequark opened issue #1415: Warn after simulation ends if a domain's clock isn't driven by either logic or testbench - https://github.com/amaranth-lang/amaranth/issues/1415
<miek> it looks like the discord bridge is down
<whitequark[cis]> bleh
<whitequark[cis]> test
<whitequark[cis]> ok, so only one direction is down
<whitequark[cis]> for whatever reason the bot cannot... oh
whitequark[m] has joined #amaranth-lang
<whitequark[m]> test
<whitequark[cis]> i know what happened
<cr1901> Your clone went out to lunch until you called it back it seems
<whitequark[cis]> i probably need to accept the new T&C
<whitequark[cis]> huh, i guess no
<whitequark[cis]> i have not a faintest clue as to why it fails
<whitequark[cis]> hm
Wanda[cis] has quit [Quit: Idle timeout reached: 172800s]
<cr1901> What does that issue mean?
<cr1901> (Other than "nobody seems to be working on fixing it")
peepsalot has quit [Quit: Connection reset by peep]
<whitequark[cis]> that i'd have to mess with the homeserver or bridge manually to make it work properly again :(
<cr1901> Hrm :(
peepsalot has joined #amaranth-lang