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 August 24th
awe00 has quit [Ping timeout: 265 seconds]
<_whitenotifier-3> [YoWASP/nextpnr] whitequark pushed 1 commit to develop [+0/-0/±2] https://git.io/JUkVz
<_whitenotifier-3> [YoWASP/nextpnr] whitequark 51342cd - Update dependencies.
emeb_mac has quit [Ping timeout: 240 seconds]
emeb_mac has joined #nmigen
jeanthom has joined #nmigen
<_whitenotifier-3> [YoWASP/yosys] whitequark pushed 1 commit to develop [+0/-0/±1] https://git.io/JUkwL
<_whitenotifier-3> [YoWASP/yosys] whitequark ab92183 - Update dependencies.
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 2 commits to master [+32/-30/±2] https://git.io/JUkwR
<_whitenotifier-3> [nmigen/nmigen] whitequark 67b957d - tests: move out of the main package.
<_whitenotifier-3> [nmigen/nmigen] whitequark 5b01499 - nmigen.test.utils: restore FHDLTestCase to gracefully deprecate it.
<_whitenotifier-3> [nmigen] whitequark closed issue #484: Explicit deprecation/removal notice for FHDLTestCase - https://git.io/JUvr2
<_whitenotifier-3> [nmigen] whitequark edited a comment on issue #479: Add `proc -nomux` to Yosys and migrate to it - https://git.io/JUTqh
<_whitenotifier-3> [nmigen/nmigen] github-actions[bot] pushed 1 commit to gh-pages [+0/-0/±13] https://git.io/JUkwE
<_whitenotifier-3> [nmigen/nmigen] whitequark ad9fe67 - Deploying to gh-pages from @ 5b01499901d45400c58fba184c3ba6702d012858 🚀
jeanthom has quit [Ping timeout: 265 seconds]
Yehowshua has quit [Remote host closed the connection]
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to master [+0/-0/±2] https://git.io/JUkrL
<_whitenotifier-3> [nmigen/nmigen] whitequark fde242a - hdl.ast: clarify exception message for out of bounds indexing.
<_whitenotifier-3> [nmigen] whitequark closed issue #488: Change error message for IndexError for increased clarity - https://git.io/JUU6R
<_whitenotifier-3> [nmigen/nmigen] github-actions[bot] pushed 1 commit to gh-pages [+0/-0/±13] https://git.io/JUkrm
<_whitenotifier-3> [nmigen/nmigen] whitequark 7e8b818 - Deploying to gh-pages from @ fde242aa47bed6ca692d292e44bc525bdf6f4e59 🚀
Yehowshua has joined #nmigen
<Yehowshua> `letters = Array(ord(i) for i in "Hello, world! \r\n")`
<Yehowshua> That snippet of nMigen code is very elegant I think
<Yehowshua> Saw it in luna
* whitequark would write it as `letters = Array(b"Hello, world! \r\n")`
<Yehowshua> oh wow
<Yehowshua> even better
<Yehowshua> showoff
<whitequark> pfff :p
<whitequark> it's literally my job to know this kind of fine detail!
<Yehowshua> >>> bus_factor(whitequark)
<Yehowshua> Nan
<Yehowshua> You see, that can be good an bad
<Yehowshua> **and
<whitequark> oh, i *hate* being a single point of failure
<Yehowshua> hehe
<whitequark> it is quite important for me to make sure that nmigen, in near term even, has at least one maintainer i generally trust with language design issues
<Yehowshua> One small business owner once told me "nobody does it like you"
<Yehowshua> That can be hard
<whitequark> yes, but on the other hand, i'm not magic
<whitequark> whatever principles and experience i rely on, can be transferred. not perfectly, but "most of the way there" is fine
<whitequark> it certainly helps a budding language to have one person with a specific plan in charge, but there's nothing i want to avoid more than becoming a "BDFL"
<whitequark> not only my experience isn't *so* valuable that it should override the insight of others (there's a reason i discuss nearly every language change in meetings!), but also, the "for life" part only looks good if you don't look up what happened to the original BDFL
<Yehowshua> What i've observed is maintainership gets transferred naturally to those who make the most insightful/freequent contributions
<Yehowshua> At least that was the case for ESR
<whitequark> that's common, yeah
<whitequark> or, sometimes it transfers to the person who runs away the slowest :p
<Yehowshua> I read through a bulk of the nmigen source last winter. Its not so hard to learn
<Yehowshua> Getting maintainers for GCC is probably a lot harder
<whitequark> oh, it's quite easy to read the entire thing
<whitequark> what's a lot harder is evolving it in a consistent way that also doesn't make the life of downstream worse
Yehowshua has quit [Remote host closed the connection]
<whitequark> people sometimes try to introduce language changes in pull requests dropping with no previous discussion, and well
<whitequark> lots of questions left aside. is this feature consistent with the rest of the language? will it introduce footguns? will it interfere with future evolution?
<whitequark> will it be easy to teach?
<ktemkin> I don’t know if there’s a good way to have maintainership be a shared/not-crushing burden.
<ktemkin> I’ve never found one.
<whitequark> grim
<ktemkin> dunno; maybe the answer is just to not be me =P
<whitequark> can't say I have strong counterexamples
Yehowshua has joined #nmigen
<Yehowshua> Open source is weird like that. Everybody wants an open codebase, but usually a few people bear 95% of the brunt making it work
<whitequark> it's harder for something like a language, or perhaps a library with a really intricate API, because you actually have to have someone making hard decisions
<whitequark> you can't just accept PRs as they roll in
<Yehowshua> The maintainer of homebrew reviews maybe a couple hundred PRs a month. Very much respect him because he often has to repeat feedback, but is very patient
<whitequark> something i'd like to explore for nmigen is checklists
<whitequark> checklists for new and existing platforms, for language changes, for standard library changes
<whitequark> take the knowledge maintainers use to guide contributors and write it down
<ktemkin> the hard part is conveying the general vision to others
<whitequark> also true
<ktemkin> especially for others who want to do things but haven’t borne the burden of steering something like this
<ktemkin> whitequark: tbh, one of the reasons nMigen works is because you‘re filling the role of “vision-haver & decider”
<whitequark> in the docs i'm writing (ok well i'm mostly merging PRs this week but you get the idea), i plan to have a page dedicated to rationale and history of its features
<whitequark> surprisingly few languages have that
<ktemkin> if you want to spread that role out, you need to have other people with the same sense of “what nMigen should be”
<whitequark> say, std::iostream. i had to dig out the rationale for that out of *HOPL*
<whitequark> ktemkin: yep and yep
<whitequark> i mean, it's not so much a question of "want" as one of "have to"
<d1b2> <TiltMeSenpai> I think one of the hardest things for any library of meaningful size is conveying code style
<whitequark> i watched how rust evolved, and by whom
<whitequark> i think it's on its 3rd generation of designers
<d1b2> <TiltMeSenpai> with any codebase of a decent size, it's only a matter of time before a feature comes in that makes you go "this doesn't feel like it fits, but I can't express why"
<whitequark> yeah
<whitequark> one thing that might help nmigen in particular is that i'd really like to keep it small, prefer composability over concrete features
<whitequark> it won't have types, in the traditional PL sense, ever. it's the C89 of HDLs, building with amorphous chunks of bits
<Yehowshua> Well now's a good time as any I suppose
<Yehowshua> whitequark, what's your Vision for nMigen?
<whitequark> i'm not sure if i have something so grand
<Yehowshua> That's one thing to consider - and the other is, what makes people like nMigen
<Yehowshua> And then see if those align
<whitequark> i'm building a neat little language that tries to do RTL really well and other things preferably not at all
<d1b2> <TiltMeSenpai> I think one of the advantages of python is it's trivial to have one or more nmigen standard libraries exist as seperate packages
<d1b2> <TiltMeSenpai> meaning nmigen itself only really has to worry about "what can I not express with existing primitives"
<whitequark> i can see it being, roughly speaking, finished. not that it'll stop evolve, but that it'll fill the niche it aims at to the point of diminishing returns
<whitequark> kinda like C is finished, even though the spec grows constantly
<Yehowshua> I' m actually curious to hear other's opinions on this channel. Why not chisel, or bluespec?
<whitequark> TiltMeSenpai: pretty much. well, I don't think that alternative standard libraries, specifically, are very viable
<whitequark> because the stdlib integrates with platforms
<whitequark> (the stdlib also has a bunch of helpers and a bunch of interoperability stuff, which is fine; but it *has to exist* because it needs to integrate with platforms)
<whitequark> Yehowshua: honestly, my Vision, if you will, is to have a HDL that works for me and not against me, one that would be useful to lots and lots of people
<Yehowshua> That's pretty simple I think.
<Yehowshua> Good
<whitequark> I started working on it because I needed something to build Glasgow upon
<whitequark> Verilog? absurd. oMigen? well, I started out with it, but it has so many flaws that aren't going anywhere without a redesign
<Yehowshua> I use nMigen because it feels natural. It reflects the way I think about hardware.
<whitequark> means I succeeded :)
<Yehowshua> With verilog, I have to translate those thoughts when I design
<Yehowshua> Also, running tests in nMigen is very easy to do
<whitequark> tbh the nMigen testbench story kinda sucks
<Yehowshua> You can get a similar level of ease with CocoTb, but you're still interfacing with verilog or VHDL
<Yehowshua> Hm, what testbench paradigm do you prefer?
<whitequark> I know people figure it out, but I still think the interface is waaaay too crude and irritating
<whitequark> well
<whitequark> it's not really a different paradigm
<whitequark> Settle() should not be explicit in testbenches. that's basically it
<Yehowshua> Oh yeah
<Yehowshua> Actually I appreciate that its not
<Yehowshua> Its revealed subtle bugs for me before
<whitequark> as in
<whitequark> you shouldn't be able to observe unstable signal values in a testbench
<whitequark> where by "unstable" I mean "about to change on the next delta cycle"
<whitequark> there's a more important reason as well
<whitequark> consider the FIFOs. in oMigen, FIFOs had simulation helpers that let you read or write a byte using `yield from`
<whitequark> the problem was that this always consumed 2 cycles because it didn't have Settle() at all
<Yehowshua> So with nmigen, I use sim.add_process instead of add_sync_process
<Yehowshua> That allows me to do multiple sim.runs one after another
<Yehowshua> while not rebuilding the AST in very large unit tests
<Yehowshua> using sync_process add an extra Tick in between every sim.run call
DaKnig has quit [Ping timeout: 240 seconds]
<whitequark> oh, interesting approach
DaKnig has joined #nmigen
<whitequark> I haven't specifically designed it to be used like that, but I think it's a good way to utilize that API
<whitequark> anyway, about those helpers
<Yehowshua> anyways, back to your settle question
lkcl_ has quit [Ping timeout: 240 seconds]
<whitequark> they face two problems
<whitequark> first, they need to wait for a tick and then read the new state of the flag. hence, Settle()
<whitequark> second, when you enter the helper, well, you don't know if the simulation has settled or not
<Yehowshua> I wrote a reciever simulation model that was changing a signals state multiple times a delta
<Yehowshua> Settle helped me catch that
<Yehowshua> or maybe settle helped me create that haha
<whitequark> the old API is probably not going anywhere for a while; there's really no technical reason to rip it out aggressively
<whitequark> since both the old (current) API and the new (planned) API use the exact same foundation
Yehowshua has quit [Remote host closed the connection]
<whitequark> there really should be three kinds of simulator processes
<whitequark> one that replaces a comb function, one that replaces a sync function (similar to add_sync_process but you couldn't send any simulator commands like Settle() from it so that it doesn't do things that are impossible in hardware), and one for writing testbenches, where Settle() is automatic
<whitequark> speaking of the bug you had
<whitequark> I think it's entirely realistic to make an automatic race condition detector, similar to TSAN
<whitequark> but for gateware
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 8 commits to cxxsim [+3/-0/±13] https://git.io/JUkK3
<_whitenotifier-3> [nmigen/nmigen] whitequark 4456d5a - _toolchain.cxx: new toolchain.
<_whitenotifier-3> [nmigen/nmigen] whitequark e919193 - wip
<_whitenotifier-3> [nmigen/nmigen] whitequark 8b5375a - wip
<_whitenotifier-3> [nmigen/nmigen] ... and 5 more commits.
lkcl_ has joined #nmigen
zignig has quit [Ping timeout: 240 seconds]
zignig has joined #nmigen
Yehowshua has joined #nmigen
<Yehowshua> So one thing that I find interesting is that FPGAs and CPUs are full of vendor black boxes, but
<Yehowshua> if you go into the film/broadcast world, all camera manufactures document the internals and APIs of their cameras very well
<Yehowshua> (I film events and do promo videos for clients occasionally)
<Yehowshua> Its really easy to write custom controls for most cameras
<Yehowshua> Also, camera companies are pretty friendly, you can call them up asking them for docs
<Yehowshua> Not so with hardware necessarily
jaseg has quit [Ping timeout: 260 seconds]
jaseg has joined #nmigen
electronic_eel has quit [Ping timeout: 240 seconds]
electronic_eel has joined #nmigen
Yehowshua has quit [Remote host closed the connection]
PyroPeter_ has joined #nmigen
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to cxxsim [+0/-0/±2] https://git.io/JUkiL
<_whitenotifier-3> [nmigen/nmigen] whitequark 7ca1477 - wip
PyroPeter has quit [Ping timeout: 265 seconds]
PyroPeter_ is now known as PyroPeter
<_whitenotifier-3> [nmigen] whitequark commented on issue #455: cxxsim: synchronous assignment inside If statement is not executed - https://git.io/JUkis
<_whitenotifier-3> [nmigen] whitequark commented on issue #439: fsm_state changes mid cycle - https://git.io/JUkig
emeb_mac has quit [Ping timeout: 258 seconds]
emeb_mac has joined #nmigen
lkcl__ has joined #nmigen
lkcl_ has quit [Ping timeout: 258 seconds]
Degi has quit [Ping timeout: 240 seconds]
Degi has joined #nmigen
nelgau has quit [Remote host closed the connection]
nelgau has joined #nmigen
nelgau has quit [Ping timeout: 256 seconds]
nelgau has joined #nmigen
nelgau has quit [Ping timeout: 240 seconds]
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 2 commits to cxxsim [+0/-0/±2] https://git.io/JUk1H
<_whitenotifier-3> [nmigen/nmigen] whitequark 069f3f0 - wip
<_whitenotifier-3> [nmigen/nmigen] whitequark 6d1acae - wip
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to cxxsim [+0/-0/±1] https://git.io/JUkMe
<_whitenotifier-3> [nmigen/nmigen] whitequark 32338f9 - wip (#439, #455)
<_whitenotifier-3> [nmigen] whitequark commented on issue #455: cxxsim: synchronous assignment inside If statement is not executed - https://git.io/JUkMk
<_whitenotifier-3> [nmigen] whitequark commented on issue #439: fsm_state changes mid cycle - https://git.io/JUkMI
hitomi2507 has joined #nmigen
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to cxxsim [+0/-0/±2] https://git.io/JUkMH
<_whitenotifier-3> [nmigen/nmigen] whitequark 0caa57e - wip
jeanthom has joined #nmigen
nelgau has joined #nmigen
emeb_mac has quit [Ping timeout: 265 seconds]
nelgau has quit [Ping timeout: 258 seconds]
emeb_mac has joined #nmigen
emeb_mac has quit [Quit: Leaving.]
cr1901_modern has quit [Quit: Leaving.]
cr1901_modern has joined #nmigen
nelgau has joined #nmigen
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to toolchain.cxx [+2/-0/±0] https://git.io/JUky4
<_whitenotifier-3> [nmigen/nmigen] whitequark 4180cc5 - _toolchain.cxx: new toolchain.
nelgau has quit [Ping timeout: 246 seconds]
<_whitenotifier-3> [nmigen] whitequark deleted branch toolchain.cxx - https://git.io/JJJOy
<_whitenotifier-3> [nmigen/nmigen] whitequark deleted branch toolchain.cxx
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to master [+2/-0/±0] https://git.io/JUky2
<_whitenotifier-3> [nmigen/nmigen] whitequark 4180cc5 - _toolchain.cxx: new toolchain.
<_whitenotifier-3> [nmigen/nmigen] github-actions[bot] pushed 1 commit to gh-pages [+0/-0/±13] https://git.io/JUkyw
<_whitenotifier-3> [nmigen/nmigen] whitequark 46da075 - Deploying to gh-pages from @ 4180cc537b7e1317dfe942ca889aa924e11e065b 🚀
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to master [+0/-0/±1] https://git.io/JUkyx
<_whitenotifier-3> [nmigen/nmigen] whitequark 141eaf0 - _toolchain.cxx: work around PyPy missing LDCXXSHARED sysconfig variable.
lkcl_ has joined #nmigen
<_whitenotifier-3> [nmigen/nmigen] github-actions[bot] pushed 1 commit to gh-pages [+0/-0/±13] https://git.io/JUkyj
<_whitenotifier-3> [nmigen/nmigen] whitequark df0c761 - Deploying to gh-pages from @ 141eaf0e405ad009e276d5c3d22edde6f8ac8e22 🚀
lkcl__ has quit [Ping timeout: 256 seconds]
Asu has joined #nmigen
<tannewt> whitequark: just saw the maintainer discussion. for vision, one thing that helped for circuitpython was a design guide: https://circuitpython.readthedocs.io/en/latest/docs/design_guide.html
<tannewt> rather than one catch all vision its a number of smaller guides
<tannewt> we did have micropython's approach to contrast to which helped as well
<whitequark> tannewt: yeah that's excellent
<whitequark> it's a part of the suite of docs i want to write
<tannewt> when it comes to going from 1 to 1+ maintainers I think it helps to trust that others know their boundaries
<tannewt> the design guide style can be easier because it can be written piece by piece
<whitequark> 1+ maintainer *per se* isn't something i usually have trouble with... i mean, i already comaintain nmigen-soc with jfng
<whitequark> it's mostly the language design aspect that makes things harder
<whitequark> but i think it's solvable
<tannewt> ya makes sense
<whitequark> like, so far, my expectations are pretty positive
<tannewt> there are very few people at the intersection of python and hardware design languages
<whitequark> mm
<tannewt> I've been impressed with nmigen a bunch. I feel like it finally got far enough that I could understand it
<whitequark> nice :)
<tannewt> told myself to just treat it like python :-)
<tannewt> running build is a bonus
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to master [+0/-0/±1] https://git.io/JUkSM
<_whitenotifier-3> [nmigen/nmigen] whitequark c00219d - sim._pycoro: make src_loc() more robust.
<_whitenotifier-3> [nmigen/nmigen] github-actions[bot] pushed 1 commit to gh-pages [+0/-0/±13] https://git.io/JUkSS
<_whitenotifier-3> [nmigen/nmigen] whitequark 0a00c21 - Deploying to gh-pages from @ c00219d9f3bd76f406ffa3cacb9768a1468b1452 🚀
cr1901_modern1 has joined #nmigen
cr1901_modern has quit [Ping timeout: 246 seconds]
cr1901_modern1 has quit [Client Quit]
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to master [+1/-0/±1] https://git.io/JUkQW
<_whitenotifier-3> [nmigen/nmigen] whitequark 9bc42cb - sim._pyclock: new type of process.
<_whitenotifier-3> [nmigen/nmigen] github-actions[bot] pushed 1 commit to gh-pages [+0/-0/±13] https://git.io/JUkQB
<_whitenotifier-3> [nmigen/nmigen] whitequark 8112026 - Deploying to gh-pages from @ 9bc42cb8c50b9124f308c13d6ceb7e25bbe41c65 🚀
<whitequark> i made pysim even faster
<whitequark> in total, master is 2x faster than v0.2
<whitequark> ... though a lot of that difference is because v0.2 had a bug that made it way inefficient
cr1901_modern has joined #nmigen
jeanthom has quit [Ping timeout: 258 seconds]
cr1901_modern has quit [Quit: Leaving.]
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to master [+0/-0/±1] https://git.io/JUk78
<_whitenotifier-3> [nmigen/nmigen] whitequark 9bdb7ac - sim.pysim: in write_vcd(), close files if an exception is raised.
<_whitenotifier-3> [nmigen/nmigen] github-actions[bot] pushed 1 commit to gh-pages [+0/-0/±13] https://git.io/JUk7u
<_whitenotifier-3> [nmigen/nmigen] whitequark 0726d87 - Deploying to gh-pages from @ 9bdb7accc886cf0a588df58635419c03a8484168 🚀
nelgau has joined #nmigen
nelgau has quit [Remote host closed the connection]
awe00 has joined #nmigen
cr1901_modern has joined #nmigen
nelgau has joined #nmigen
nelgau has quit [Ping timeout: 240 seconds]
cr1901_modern1 has joined #nmigen
cr1901_modern1 has quit [Client Quit]
cr1901_modern1 has joined #nmigen
cr1901_modern1 has quit [Client Quit]
cr1901_modern has quit [Ping timeout: 240 seconds]
cr1901_modern has joined #nmigen
cr1901_modern has quit [Client Quit]
cr1901_modern has joined #nmigen
cr1901_modern has quit [Client Quit]
cr1901_modern has joined #nmigen
cr1901_modern has quit [Client Quit]
cr1901_modern has joined #nmigen
cr1901_modern1 has joined #nmigen
cr1901_modern has quit [Ping timeout: 256 seconds]
cr1901_modern1 has quit [Client Quit]
cr1901_modern has joined #nmigen
cr1901_modern has quit [Quit: Leaving.]
cr1901_modern has joined #nmigen
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to master [+2/-2/±15] https://git.io/JUIew
<_whitenotifier-3> [nmigen/nmigen] whitequark b65e11f - sim: split into base, core, and engines.
<_whitenotifier-3> [nmigen/nmigen] github-actions[bot] pushed 1 commit to gh-pages [+0/-0/±13] https://git.io/JUIeD
<_whitenotifier-3> [nmigen/nmigen] whitequark 55ddcf9 - Deploying to gh-pages from @ b65e11f38fcc5efe1ae4cad5e37e2121f863737e 🚀
<_whitenotifier-3> [nmigen] whitequark opened issue #491: nmigen-yosys versions are internally inconsistent - https://git.io/JUIv4
<whitequark> awygle: poke
nelgau has joined #nmigen
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to cxxsim [+3/-0/±3] https://git.io/JUIv2
<_whitenotifier-3> [nmigen/nmigen] whitequark 41ff77a - [WIP] sim: add cxxsim engine.
<_whitenotifier-3> [nmigen] cestrauss commented on issue #439: fsm_state changes mid cycle - https://git.io/JUIvK
<_whitenotifier-3> [nmigen] whitequark commented on issue #439: fsm_state changes mid cycle - https://git.io/JUIff
<cesar[m]> Shouldn't I open a new issue? Or the title, changed? I don't think it has to do with signals changing mid-cycle anymore.
<whitequark> cesar[m]: doesn't really matter
<whitequark> all of these issues (+ the other issue i linked) are basically the same race condition on the c++/python interface
<whitequark> logical race, of course, not some kind of UB
<cesar[m]> OK, thanks.
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to master [+0/-0/±1] https://git.io/JUIUW
<_whitenotifier-3> [nmigen/nmigen] whitequark 955f3f6 - back.verilog: use `proc -nomux` if it is available.
<_whitenotifier-3> [nmigen] whitequark closed issue #479: Add `proc -nomux` to Yosys and migrate to it - https://git.io/JJbvQ
<_whitenotifier-3> [nmigen/nmigen] github-actions[bot] pushed 1 commit to gh-pages [+0/-0/±13] https://git.io/JUIUK
<_whitenotifier-3> [nmigen/nmigen] whitequark 97a7fc7 - Deploying to gh-pages from @ 955f3f6dcc68a04b5754871b1a9540ca1f771d0a 🚀
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to cxxsim [+3/-0/±3] https://git.io/JUIUy
<_whitenotifier-3> [nmigen/nmigen] whitequark 5904b28 - [WIP] sim: add cxxsim engine.
<_whitenotifier-3> [nmigen/nmigen-yosys] whitequark pushed 3 commits to develop [+0/-0/±4] https://git.io/JUITw
<_whitenotifier-3> [nmigen/nmigen-yosys] whitequark a28d988 - Derive PyPI version from Yosys makefile version, not git-describe.
<_whitenotifier-3> [nmigen/nmigen-yosys] whitequark c5166bf - Don't clobber Yosys makefile version in `yosys -V`.
<_whitenotifier-3> [nmigen/nmigen-yosys] whitequark fd7eaf1 - Update yosys.
lkcl_ is now known as lkcl
<_whitenotifier-3> [nmigen/nmigen-yosys] whitequark pushed 3 commits to release [+0/-0/±4] https://git.io/JUITw
<_whitenotifier-3> [nmigen/nmigen-yosys] whitequark a28d988 - Derive PyPI version from Yosys makefile version, not git-describe.
<_whitenotifier-3> [nmigen/nmigen-yosys] whitequark c5166bf - Don't clobber Yosys makefile version in `yosys -V`.
<_whitenotifier-3> [nmigen/nmigen-yosys] whitequark fd7eaf1 - Update yosys.
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to cxxsim [+0/-0/±1] https://git.io/JUIk0
<_whitenotifier-3> [nmigen/nmigen] whitequark cc8c097 - setup: synchronize builtin-yosys dependency.
<_whitenotifier-3> [nmigen] whitequark commented on issue #491: nmigen-yosys versions are internally inconsistent - https://git.io/JUIki
<_whitenotifier-3> [nmigen] whitequark closed issue #491: nmigen-yosys versions are internally inconsistent - https://git.io/JUIv4
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to master [+0/-0/±1] https://git.io/JUIkH
<_whitenotifier-3> [nmigen/nmigen] whitequark d12c782 - setup: synchronize builtin-yosys dependency.
<_whitenotifier-3> [nmigen/nmigen] whitequark pushed 1 commit to cxxsim [+3/-0/±3] https://git.io/JUIkQ
<_whitenotifier-3> [nmigen/nmigen] whitequark 17d501c - [WIP] sim: add cxxsim engine.
<_whitenotifier-3> [nmigen/nmigen] github-actions[bot] pushed 1 commit to gh-pages [+0/-0/±13] https://git.io/JUIk7
<_whitenotifier-3> [nmigen/nmigen] whitequark 00b334f - Deploying to gh-pages from @ d12c7827a09daef2389259fc9fbc195454a525aa 🚀
<_whitenotifier-3> [nmigen] whitequark commented on pull request #482: Fix deprecated back.pysim imports - https://git.io/JUIkb
<_whitenotifier-3> [nmigen] whitequark closed pull request #482: Fix deprecated back.pysim imports - https://git.io/JUvnm
<_whitenotifier-3> [nmigen] BrettRD opened issue #492: How do you make a bounded up-down counter without modulo? - https://git.io/JUII0
emeb has joined #nmigen
<Degi> Can I somehow view the generated logic three as a visual representation in nmigen simulations?
<Degi> *tree
<Lofty> Hmm. You could dump it to RTLIL/Verilog and use Yosys' show command to get a graphviz file
<whitequark> yup
<Degi> Oh cool
<Degi> I guess its the .vcd file?
<Degi> Hm nah
<whitequark> ./yosys netlist.il -p show
<Degi> Awh it says that for formats different than 'ps' or 'dot' that only one module must be selected
<lkcl> Degi: "apt-get install xdot graphviz"
<DaKnig> ideally, as an objective for the long term, would cxxsim use the same python API as in pysim? or some different thing on the C-level?
<DaKnig> would it even benefit from using C-level co-sim in terms of speed?
<whitequark> DaKnig: it already does use the exact same api
<whitequark> that's kind of the point
<DaKnig> I see
<DaKnig> can I see an example of using ValueCastable?
<DaKnig> another question : I passed a Record as one of the ports of my module to sim.write_vcd; I expected the values inside it to be spilled into the gtkw file, but instead it did not show up at all. is that intended?
<whitequark> DaKnig: ValueCastable is not merged yet...
<whitequark> regarding Record, not quite
<whitequark> i'm not sure if it qualifies as a bug but it definitely qualifies as inconvenience
<whitequark> the Record redesign will fix this
<DaKnig> what I think should be the behavior: at least have it under a separate category, or just call the signal `recordname.signalname`
<DaKnig> should I make an issue about that? enhancement issue I mean ofc
<whitequark> the signals inside the record are already called that
<whitequark> it's a bit tricky to implement what you suggest right now for boring legacy reasons
<DaKnig> I dont see them then; not even in the hierarchy view
<whitequark> yeah, it's a bug
<whitequark> it should either show them or crash with a TypeError or w/e
hitomi2507 has quit [Quit: Nettalk6 - www.ntalk.de]
jeanthom has joined #nmigen
greni has joined #nmigen
<Degi> lkcl I still seem to get that error http://paste.debian.net/1161494/
greni has quit [Remote host closed the connection]
<lkcl> Degi: intriguing / puzzling.
<Degi> Maybe I need to restart my PC or so.
<lkcl> Degi: lol only if you are running windows
<lkcl> try this:
<lkcl> $ yosys
<lkcl> > read_ilang "the_file.il"
<lkcl> > show top
<lkcl> or, modifying the command whitequark originally sent: "yosys netlist.il -p 'show top'"
<lkcl> from that reddit post we can guess that you have a hierarchichal (submodules) design
<lkcl> the "apt-get install graphviz xdot" was a red herring, apologies
<Degi> Oh yes that works
<Degi> Hm, sometimes when I do kernel updates I need to restart my PC if I wanna use USB to serial cables again lol
<Degi> Oh cool. I can see how it optimizes
<Degi> Huh
<lkcl> seeing the graphs and knowing that's what's going to end up as hardware, i find to be utterly cool :)
<Degi> I have no idea how to read this graph lol https://imgur.com/2NbBQBX.png
<Degi> Ahh I can do 'show crc' to show the submdule
<Degi> Do things further down the toolchain do further optimizations?
<Degi> It is a relatively long logic chain but it still meets 499 MHz heh
<daveshah> Degi: yes, there are lots of optimisations along the way. Have a look at the opt_ family of passes which do mostly coarser-grained optimisations; then abc does some very fine-grain AIG optimisations before mapping
<daveshah> in the case of synth_ecp5; one of the first steps is to flatten the netlist, to enable cross-hierarchy optimisations
<DaKnig> so many optimizations are locked behind removing the processes though :(
<Degi> Oops Dot Viewer just took a minute or two to show up.
<lkcl> Degi; that means that you've an above-average complex design
<Degi> 16 bit per cycle CRC16
<lkcl> ah, yes, that'd take a while to render :)
<Degi> I kinda wanna know what it compiles to... To 284 MHz
<lkcl> my recommendation there would be, you see those towers of signals? i would move whatever is creating them into a separate submodule
<Degi> Hm why
<lkcl> purely on the basis that "if render time is long, it's a problem"
nelgau has quit [Remote host closed the connection]
<lkcl> it's a rule-of-thumb (that i have been known to break / ignore)
<lkcl> but
<Degi> Is there a simpler renderer to go faster...
<lkcl> there isn't. that's an *exceptionally* complex diagram - about 8x larger than i would normally be comfortable with
<lkcl> but
<lkcl> here's the thing
<lkcl> those boundaries tend to provide "natural" pipeline breakpoints
<lkcl> but (again...) :)
emeb_mac has joined #nmigen
<lkcl> you can only really properly tell that by using yosys "ltp" after running the synth command
<Degi> What does that do
<lkcl> "longest something path"
<lkcl> daveshah: is it "ltp"?
<lkcl> This command prints the longest topological path in the design. (Only considers
<lkcl> paths within a single module, so the design must be flattened.)
<lkcl> ltp :)
<lkcl> yosys> help ltp
<DaKnig> maybe longest time?
<DaKnig> longest time path
<lkcl> and if you've done that, there's _no way_ you'll be able to do "show top" on a large synth'd diagram.
<DaKnig> since when do programming tools make any , let alone gramatical, sense?
<lkcl> topological
<lkcl> :)
<Degi> Lol
<Degi> hmm
<Lofty> lkcl: in the eddie/sta branch there's a time-based longest path command called sta, which uses the information from Verilog specify blocks
<Degi> Might do that when I'm halfway done with this overnight
<Lofty> Hasn't been touched in a while though
<lkcl> Lofty: nice
<DaKnig> can you get that info without flattening?
<DaKnig> I keep most of my modules with synchronous outputs
<DaKnig> so it would make less sense to flatten there
<DaKnig> especially since it takes way more time to check that
<Lofty> Well, it can exclude flops anyway
<Lofty> And no, there's no reason it would take more time to check that, really
<DaKnig> if the same module is copied several times it owuld check all instances, no?
<Degi> Oh cool I can print it to pdf and view it in okular, much faster
<lkcl> Degi: oh? ah ha!
Yehowshua has joined #nmigen
Yehowshua6 has joined #nmigen
<Yehowshua6> Luna seems to max out at 300KB/s on TinyFPGABX
<Yehowshua6> Can anybody confirm that that seems reasonable?
<Lofty> DaKnig: it's possible to prune a lot of paths for something like that through dynamic programming
<DaKnig> but does yosys do that?
<Lofty> Admittedly, no
<Lofty> Nothing stopping it from doing that though
Yehowshua has quit [Ping timeout: 245 seconds]
nelgau has joined #nmigen
Yehowshua6 has quit [Remote host closed the connection]
Asu has quit [Quit: Konversation terminated!]
lkcl has quit [Ping timeout: 240 seconds]
lkcl has joined #nmigen
awe00_ has joined #nmigen
awe00 has quit [Ping timeout: 240 seconds]
<_whitenotifier-3> [nmigen] cr1901 opened pull request #493: Add documentation for how to set up NMIGEN_ENV_Diamond on Windows. - https://git.io/JUI4Y
<_whitenotifier-3> [nmigen] cr1901 edited pull request #493: Add documentation for how to set up NMIGEN_ENV_Diamond on Windows. - https://git.io/JUI4Y
Degi has quit [Ping timeout: 240 seconds]
jeanthom has quit [Ping timeout: 240 seconds]
Degi has joined #nmigen
zignig has quit [Ping timeout: 260 seconds]
zignig has joined #nmigen