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
<_whitenotifier-f> [YoWASP/nextpnr] whitequark pushed 1 commit to develop [+0/-0/±1] https://git.io/JTs5p
<_whitenotifier-f> [YoWASP/nextpnr] whitequark 7090482 - Update dependencies.
peepsalot has quit [Read error: No route to host]
<_whitenotifier-f> [YoWASP/yosys] whitequark pushed 1 commit to develop [+0/-0/±2] https://git.io/JTsb8
<_whitenotifier-f> [YoWASP/yosys] whitequark a0e1e76 - Update dependencies.
Degi has quit [Ping timeout: 260 seconds]
Degi has joined #nmigen
Wolong has joined #nmigen
<Wolong> Hello, I recently started learning nmigen. I got an error when installing nmigen according to the document here.:http://blog.lambdaconcept.com/doku.php?id=nmigen:nmigen_installThe error message is shown in the figure below. Will this affect my normal use of nmigen?
<Wolong> Hello, I recently started learning nmigen. I got an error when installing nmigen according to the document here:http://blog.lambdaconcept.com/doku.php?id=nmigen:nmigen_install
<Wolong> The error message is below:
<Wolong> fl@fl-virtual-machine:~$ pip3 install git+https://github.com/m-labs/nmigen.git
<Wolong> Uninstalling pyvcd-0.2.3:
<Wolong> nmigen-0.2.dev72+g39602ae pyvcd-0.1.7
<Wolong> Will this affect my normal use of nmigen?
<Wolong> The system I use is ubuntu18.04. The version of python is Python 3.7.9, and the version of pip is pip 20.1.1
<whitequark> that page is outdated
<Wolong> Thank you whitequark for the information ^^
electronic_eel_ has joined #nmigen
electronic_eel has quit [Ping timeout: 260 seconds]
PyroPeter_ has joined #nmigen
peepsalot has joined #nmigen
PyroPeter has quit [Ping timeout: 260 seconds]
PyroPeter_ is now known as PyroPeter
_whitelogger has joined #nmigen
hitomi2509 has joined #nmigen
emeb_mac has quit [Quit: Leaving.]
chipmuenk has joined #nmigen
jeanthom has joined #nmigen
<lkcl> Wk
<lkcl> Wolong: welcome. nmigen is pretty cool. any questions just ask.
<_whitenotifier-f> [nmigen] cr1901 opened issue #505: Formal Platform Integration - https://git.io/JTGge
hitomi2509 has quit [Quit: Nettalk6 - www.ntalk.de]
hitomi2509 has joined #nmigen
jeanthom has quit [Ping timeout: 256 seconds]
jeanthom has joined #nmigen
<_whitenotifier-f> [nmigen-boards] kowalewskijan synchronize pull request #117: Add quickfeather board - https://git.io/JTYG0
<_whitenotifier-f> [nmigen-boards] kowalewskijan synchronize pull request #117: Add quickfeather board - https://git.io/JTYG0
electronic_eel_ is now known as electronic_eel
jeanthom has quit [Ping timeout: 240 seconds]
jeanthom has joined #nmigen
Asu has joined #nmigen
Wolong has quit [Remote host closed the connection]
<FL4SHK> question about `f_past_valid` signals
<FL4SHK> wait, I think I just figured out the answer
<lkcl> FL4SHK: :)
<FL4SHK> seems that formal is ignoring an assignment to a signal
<FL4SHK> no
<FL4SHK> the RTLIL doesn't have this assignment in it
<FL4SHK> I just checked
<FL4SHK> seems that not reading from it ever is the problem?
<FL4SHK> I'm trying to set up a debug signal
<FL4SHK> all I do is assign to it with an `m.d.sync +=`
<FL4SHK> this assignment doesn't show up at all in toplevel.il
<FL4SHK> m.d.sync += loc.formal.formal_numer.eq(bus.numer)
<FL4SHK> the signal *does* show up within the toplevel.il
<FL4SHK> but all I can see is the reset stuff
Lord_Nightmare has quit [Ping timeout: 258 seconds]
<FL4SHK> well, I got it to pass
<FL4SHK> Had to replace some `.eq` with some `Assume ==`
<FL4SHK> I don't think this divider should be verified this quickly
<FL4SHK> my computer isn't *that* beefy
<FL4SHK> okay so a sanity check reveals that it's not working
<FL4SHK> time for a VCD
<FL4SHK> from regular simulation
<whitequark> FL4SHK: if you don't ever read from a signal then opt_clean will remove it
<whitequark> same sort of issue than before
<_whitenotifier-f> [nmigen] whitequark commented on issue #505: Formal Platform Integration - https://git.io/JTZa4
hitomi2509 has quit [Quit: Nettalk6 - www.ntalk.de]
Lord_Nightmare has joined #nmigen
emeb has joined #nmigen
<_whitenotifier-f> [nmigen] awygle commented on issue #505: Formal Platform Integration - https://git.io/JTZrw
<_whitenotifier-f> [nmigen] whitequark commented on issue #505: Formal Platform Integration - https://git.io/JTZKC
<_whitenotifier-f> [nmigen] awygle commented on issue #505: Formal Platform Integration - https://git.io/JTZ6E
<_whitenotifier-f> [nmigen] whitequark commented on issue #505: Formal Platform Integration - https://git.io/JTZib
<_whitenotifier-f> [nmigen] Xiretza opened pull request #506: hdl.ir: Update error message for Instance arguments - https://git.io/JTZD5
jeanthom has quit [Ping timeout: 264 seconds]
<awygle> whitequark: do you wanna talk about platforms here, the questionably-relevant github issue, or the relevant-but-very-old github issue?
<whitequark> awygle: hmm
<whitequark> either works, let's start with platforms because people are really persistent about them, which means there's a significant need for improvement
<awygle> (also, do you want to discuss it now, after you've kept your house from burning down, or at the meeting next week)
<whitequark> lol
<whitequark> let's push it to the meeting
<awygle> mkay
<awygle> real quick tho, i now think i understand your concerns about defining how such a platform would work. do you feel like you understand why people keep asking for sim/formal platforms? you are giving a slight "why do people want this" vibe, similar to the Array stuff
<whitequark> no, i don't, that would be the first step
<whitequark> figure out what people actually want when they say they want a sim/formal platform
<awygle> well that's a slightly different thing
<awygle> "why do they ask" and "what do they want" are related but distinct
<whitequark> "why do they ask" because there's something nmigen doesn't do well, that much is clear
<_whitenotifier-f> [nmigen] whitequark commented on pull request #506: hdl.ir: Update error message for Instance arguments - https://git.io/JTZ7n
<FL4SHK> seems I misunderstood `word_select`
<FL4SHK> I was doing the multiplication in advance!
<FL4SHK> It acts just like Verilog `+:`
<FL4SHK> I was treating things more like VHDL
<FL4SHK> *now* my long divider works
<FL4SHK> now exhaustively testing a 16/10=16 divider
<FL4SHK> won't take that long
<FL4SHK> so far results are good
<FL4SHK> I suspect that since it worked for smaller stuff it'll "just work" for bigger stuff
<FL4SHK> *not* sure whether I should pipeline it
<FL4SHK> I lean towards not doing that since I need to include a lot of these
<lkcl> FL4SHK: nice
<lkcl> we didn't take any chances with the DIV unit, created a massive suite of unit tests covering corner-cases.
<lkcl> if you're doing a formal correctness proof - and get it right - you should be fine
<_whitenotifier-f> [nmigen] cr1901 commented on issue #505: Formal Platform Integration - https://git.io/JTnfC
<_whitenotifier-f> [nmigen] whitequark commented on issue #505: Formal Platform Integration - https://git.io/JTnfb
<_whitenotifier-f> [nmigen] cr1901 commented on issue #505: Formal Platform Integration - https://git.io/JTnUe
<_whitenotifier-f> [nmigen] whitequark commented on issue #505: Formal Platform Integration - https://git.io/JTnUz
<_whitenotifier-f> [nmigen] cr1901 commented on issue #505: Formal Platform Integration - https://git.io/JTnkc
<_whitenotifier-f> [nmigen] cr1901 commented on issue #505: Formal Platform Integration - https://git.io/JTnk1
<FL4SHK> I'm surprised that this is going so quickly...
<FL4SHK> so I think my divider is not bugged, but rather my formal stuff is
<FL4SHK> I really don't think this should be finishing so quickly?
<FL4SHK> I think I see
emeb_mac has joined #nmigen
<whitequark> formal verification mostly shines when you verify *multiple things*
<whitequark> if you just verify one, you're as likely to have bugs in your spec as in your design
<awygle> on the other hand, at least you don't have to write tests
<awygle> (ok you still do, let me dream...)
<whitequark> yeah
chipmuenk has quit [Quit: chipmuenk]
chipmuenk has joined #nmigen
Asu has quit [Remote host closed the connection]
chipmuenk has quit [Client Quit]
<lkcl> FL4SHK: so what whitequark is saying is: that if we (libre-soc team) use your formal proof and test *our* DIV engine...
<lkcl> basically, as the author of both your own code *and* the formal correctness proof, you have no idea if both are correct, or both are wrong.
<lkcl> i.e. the proof could be 100% verifying - correctly - that the *implementation* is producing wrong divide answers.
<whitequark> it's not just that, though it's that too
<whitequark> it's also omissions in the proof
* lkcl interested to know the other things
<lkcl> ah yeah
<whitequark> formal verification is most powerful when you write a proof against multiple existing designs
<whitequark> like it happened with riscv-formal
<whitequark> it also works reasonably well if you're verifying several generations of a single design
<whitequark> but for one-offs it's not all that better than tests IMO
danfoster has joined #nmigen
<lkcl> well, ALUs are a little different we've found
<lkcl> however for POWER9 multiply pipeline, the code written for the formal test is.. er... a leeetle bit too much like the actual implementation
<lkcl> but in other areas it's been incredibly useful.
<lkcl> we have complex optimised algorithms (recursive trees) that are hard to understand
<lkcl> but the core algorithm behind the proof is err... 3 lines (just horribly inefficient if put into silicon)
emeb has quit [Quit: Leaving.]
<lkcl> i can't explain how the "optimised" algorithm works... but because the proof says "it's equivalent", i don't care! :)
<whitequark> oh yeah, it makes sense to distinguish equivalence proofs and behavioral proofs
<whitequark> if you can implement what you want in a simpler but inefficient way it often pays off to prove the equivalence of the complex thing with that
<whitequark> but if you're just stating properties it can be a lot harder