ChanServ changed the topic of #nmigen to: nMigen hardware description language · code at https://github.com/nmigen · logs at https://freenode.irclog.whitequark.org/nmigen · IRC meetings each Monday at 1800 UTC · next meeting October 12th
<whitequark> think you can add it?
emeb has quit [Quit: Leaving.]
<awygle> oh, sure
<whitequark> thanks!
<awygle> what's the irc handle of the person working on PCIe on the Versa?
<whitequark> Degi ^
<awygle> that was my best guess, should have had confidence in myself lol
<_whitenotifier-f> [YoWASP/yosys] whitequark pushed 1 commit to develop [+0/-0/±1] https://git.io/JTB2K
<_whitenotifier-f> [YoWASP/yosys] whitequark 63b5929 - Update dependencies.
<mwk> whitequark: I'm listening
<whitequark> mwk: okay, so the plan to fix this problem before was to do it at the same time as getting rid of explicit `yield` in favor of `await` for a few reasons
<whitequark> that plan is a bit complicated though and there was no progress on it so far
<mwk> right
<whitequark> what i'm thinking is that we can add a new function, `add_bench_process`, which implicitly calls `yield Settle()` after ~every other statement
<whitequark> this is what the new async/await based system would do anyway, just... without async/await
<mwk> hmm
<mwk> like for x in process: yield x; yield Settle()?
<whitequark> more or less
<mwk> right
<mwk> there is no way to yield a "composite" command, right?
<mwk> like make the "default" yield value Tick() + Settle()
<whitequark> that won't be enough
<whitequark> think of what happens if you observe combinatorial feedback in a testbench
<mwk> ah, right
<whitequark> there are two options
<whitequark> settle after `yield eq()` and settle before `yield sig`
<whitequark> the latter is perhaps a bit more efficient (you can settle lazily) but it leads to observable races
<whitequark> if you use multiple bench processes
<whitequark> whcih is an obscure but valid use case
<mwk> you'd also need to settle after a Tick
<whitequark> yeah
<mwk> in the first case
<whitequark> and after Delay
<whitequark> in practice I think just settling after every command is fine at first
<whitequark> then we can optimize that if necessary
<mwk> right
<whitequark> anyway if you're happy with that i can implement it
<mwk> yeah it sounds good
<whitequark> mkay
Wolong has joined #nmigen
<_whitenotifier-f> [nmigen/nmigen] whitequark pushed 1 commit to sim-bench-processes [+0/-0/±2] https://git.io/JTBrQ
<_whitenotifier-f> [nmigen/nmigen] whitequark b420994 - sim.core: add bench processes that always settle implicitly.
<whitequark> mwk: see the sim-bench-processes branch
<mwk> looks mostly ok
<mwk> except that exceptions from "yield command" should be propagated into the generator
<whitequark> oh yeah let me fix that
<mwk> not sure about yield Settle(); presumably it shouldn't throw?
<whitequark> it won't
<mwk> okay
Degi has quit [Ping timeout: 272 seconds]
<whitequark> fixed
<_whitenotifier-f> [nmigen/nmigen] whitequark pushed 1 commit to sim-bench-processes [+0/-0/±2] https://git.io/JTBoD
<_whitenotifier-f> [nmigen/nmigen] whitequark 75da41d - sim.core: add bench processes that always settle implicitly.
Degi has joined #nmigen
<mwk> LGTM now, I guess
<whitequark> mwk: the other problem is that if you use Tick(), the stimulus and response end up on the same edge
<whitequark> which makes the VCD excessively hard to read
<whitequark> i'm hesitant to merge the branch until we decide something about that, at least
<whitequark> other than that it should be fine
<mwk> hmm, kind of right
<mwk> it seems orthogonal though?
<mwk> oh wait, you'd probably want a diff default commånd, right?
<whitequark> yeah
* whitequark . o O ( Tock() )
<whitequark> (this is a terrible suggestion)
<mwk> ... actually nice one
alexhw has quit [Remote host closed the connection]
<whitequark> hm, really?
<mwk> but anyway, not sure if it's really a big problem
emeb_mac has quit [Ping timeout: 264 seconds]
<whitequark> so, that's kinda why i put it in a branch and asked you to look at it: i think once you start debugging real VCD traces it becomes apparent
<mwk> hm, maybe
<mwk> I mean it's really no different from a module's inputs synchronously changed by its parent module
<whitequark> it's different, isn't it?
<mwk> it all happens on the exact same timestamp in the vcd
<mwk> IMO testbench is kind of the parent module to the DUT
<whitequark> if a parent module changes inputs, it happens "simultaneously" with the tick, but if a bench changes inputs, it happens "after" the tick because of the implicit settle
<mwk> if a parent module changes inputs according to combinatorial function of module's outputs, it still happens on a tick
<whitequark> mhm
<mwk> testbench reacting to results of the tick within same cycle would be really the same case, no?
<whitequark> yes, i see your point
<whitequark> do you mind if we keep it in a branch until the next meeting?
emeb_mac has joined #nmigen
<mwk> fine with me
<mwk> I mean, I'll have to go with git anyway since there's not going to be a release in the next few hours, so I'll just point to my fork I guess
<whitequark> yeah, I wasn't sure what your plan was exactly
<mwk> well original plan was to use nmigen release, but this seems to be enough of a confusion point to justify going with git
<whitequark> right
<_whitenotifier-f> [nmigen] whitequark commented on issue #377: Our recommended way to write testbenches is racy - https://git.io/JTBiB
<mwk> like... come one, I can bet some student will end up forgetting the Settle and spending a lot of time debugging it, or just having a testbench with a random one-cycle offset in one particular place where the Settle is missing because they didn't bother to think
<whitequark> yep
emeb_mac has quit [Quit: Leaving.]
electronic_eel has quit [Ping timeout: 265 seconds]
electronic_eel has joined #nmigen
emeb_mac has joined #nmigen
PyroPeter_ has joined #nmigen
PyroPeter has quit [Ping timeout: 264 seconds]
PyroPeter_ is now known as PyroPeter
zignig has joined #nmigen
* zignig solves a layer 0 problem.
<zignig> after doing a big update, my remote reset stopped working.
<zignig> little did I know that going into summer meant that my breadboard FTDI bridge had moved.
<zignig> 5 hours of debug and vcds, pull out the 0.1' header wiggle everything and put it back in.
<zignig> remote reset works again.
<zignig> grrr
<whitequark> yeah, solderless connections are annoying like that
hitomi2509 has joined #nmigen
<zignig> the breadboard has been in process for almost 2y.
<zignig> Ver WQ, I have screen -> luna -> boneless-v3 almost working.
<whitequark> neat
<zignig> my break is converting a luna stream into two asyncfifo.
<zignig> i have tried so many times.
<zignig> I don't know how to get an asyncfifo so I can hook it up to my boneless bootloader. !!!
chipmuenk has joined #nmigen
Asu has joined #nmigen
emeb_mac has quit [Quit: Leaving.]
* zignig stacks the relevant.
<zignig> !global ping
<zignig> all nmigen-o-naughts, can WE pls sublimate nmigen-boards into drivers?
happycube has quit [Ping timeout: 256 seconds]
<zignig> blinky is working on all boards; et al ; MAY WE have a 16 bit CPU pls...
* zignig should throbular the ine-ex-stepped.
happycube has joined #nmigen
<whitequark> i have no idea what you're asking for
phire has quit [Read error: Connection reset by peer]
phiren has joined #nmigen
<zignig> whitequark: I have two luna stream_interfaces, I wish to make two ansyfifos.
* Lofty wants whatever zignig is on at the moment
<whitequark> oh, i don't think i can help you with luna. i meant i don't understand what you want from nmigen-boards
emily has quit [Quit: killed]
jfng has quit [Quit: killed]
cesar[m] has quit [Quit: killed]
gkelly has quit [Quit: killed]
cesar[m] has joined #nmigen
<_whitenotifier-f> [nmigen] anuejn commented on issue #386: Inverted DiffPairs in connectors - https://git.io/JTRGV
<_whitenotifier-f> [nmigen] anuejn commented on issue #386: Inverted DiffPairs in connectors - https://git.io/JTRGi
<_whitenotifier-f> [nmigen] whitequark commented on issue #386: Inverted DiffPairs in connectors - https://git.io/JTRGS
emily has joined #nmigen
jfng has joined #nmigen
gkelly has joined #nmigen
<_whitenotifier-f> [nmigen] anuejn opened issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRnU
<_whitenotifier-f> [nmigen] anuejn edited issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRnU
<_whitenotifier-f> [nmigen] anuejn edited issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRnU
<_whitenotifier-f> [nmigen] whitequark commented on issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRn7
<_whitenotifier-f> [nmigen] whitequark edited a comment on issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRn7
<_whitenotifier-f> [nmigen] whitequark commented on issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRcv
<_whitenotifier-f> [nmigen] whitequark edited a comment on issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRcv
<_whitenotifier-f> [nmigen] adamgreig commented on issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRcC
<key2> ktemkin: hi. did you manage to get Luna to work on ECP5 serdes finally ? ?
<_whitenotifier-f> [nmigen] whitequark commented on issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRcD
<_whitenotifier-f> [nmigen] anuejn commented on issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRcx
<_whitenotifier-f> [nmigen] whitequark commented on issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRCZ
<_whitenotifier-f> [nmigen] anuejn commented on issue #510: [RFC] Allow DiffPairs and Pins to be inverted individually - https://git.io/JTRC2
attie has quit [Quit: attie]
alexhw has joined #nmigen
jeanthom has joined #nmigen
alexhw has quit [Client Quit]
jeanthom has quit [Ping timeout: 260 seconds]
alexhw has joined #nmigen
jeanthom has joined #nmigen
<FL4SHK> so I've got a question
<FL4SHK> with `Interface`, can I do a whole assignment?
<FL4SHK> i.e. `my_interf.eq(my_other_interf)`
<FL4SHK> that's one thing I'd want to have given that you can't stick an `Array` within a `PackedStruct`
moony has quit [Quit: Bye!]
Asu has quit [Quit: Konversation terminated!]
jeanthom has quit [Ping timeout: 272 seconds]
<awygle> g'mornin
jeanthom has joined #nmigen
moony has joined #nmigen
jeanthom has quit [Ping timeout: 258 seconds]
jeanthom has joined #nmigen
hitomi2509 has quit [Quit: Nettalk6 - www.ntalk.de]
<mithro> I found https://github.com/peteut/litepcie_phy_wrappers recently... I'm guessing it is not particularly interesting but could be a bit of history?
<mithro> OpenRAM on SKY130 talk from Matt as part of FOSSi Foundation DialUp talk series is starting in 10 minutes -- https://youtu.be/9Lw83kFtnc4
emeb has joined #nmigen
<Lofty> FL4SHK: that's exactly the use case of Interface
<Lofty> Morning awygle
jeanthom has quit [Ping timeout: 258 seconds]
<FL4SHK> Lofty: I see!
oter_ has joined #nmigen
jeanthom has joined #nmigen
<FL4SHK> Lofty: what about arrays of `Interface`s?
Asu has joined #nmigen
<Lofty> What's your use case there?
<Lofty> I don't see why you couldn't just use a list comprehension to map over all the interfaces in an array
<FL4SHK> Lofty: that's annoying
<Lofty> You do the same with signals after all
<FL4SHK> No, I use an `Array` of `Signal`s
<FL4SHK> oh
<FL4SHK> Hm, I misunderstood you
jeanthom has quit [Ping timeout: 260 seconds]
Wolong has quit [Remote host closed the connection]
chipmuenk has quit [Quit: chipmuenk]
moony has quit [Quit: Bye!]
moony has joined #nmigen
<d1b2> <marble> If I set pass reset=-1 as a Signal constructor argument, that should set all bits, right?
<d1b2> <marble> * to 1
SpaceCoaster_ has joined #nmigen
SpaceCoaster has quit [Ping timeout: 260 seconds]
jeanthom has joined #nmigen
emeb has quit [Quit: Leaving.]
emeb_mac has joined #nmigen
oter_ has quit [Quit: Textual IRC Client: www.textualapp.com]
jeanthom has quit [Ping timeout: 246 seconds]
jeanthom has joined #nmigen
jeanthom has quit [Ping timeout: 246 seconds]
Asu has quit [Quit: Konversation terminated!]