sb0 changed the topic of #m-labs to: ARTIQ, Migen, MiSoC, Mixxeo & other M-Labs projects :: fka #milkymist :: Logs http://irclog.whitequark.org/m-labs
<whitequark> sb0: yes, I've looked at the entire dma code, including FSM states, quite extensively
<whitequark> and I've checked that FSMs don't get stuck (the state when the code hangs is always 0)
<whitequark> this is why I suspected the arbiter, in fact
<sb0> cr1901_modern, it does bypass verilog generation
<cr1901_modern> sb0: I think I figured it out. whitequark and I were talking in ##openfpga. They suggested that migen could target yosys directly and skip verilog generation, to offer an "alternative backend" that obeys the semantics of Migen (which match in both simulation and synthesis) instead of targeting verilog, where synthesis and sim semantics differ. >>
<cr1901_modern> sb0: What I didn't realize is that in order for this to work, *I* have to convert fragments into EDIF that yosys understands
<sb0> cr1901_modern, edif is for synthesized netlists, so it won't work for this purpose
<sb0> cr1901_modern, and the migen verilog output has no particular simulation/synthesis mismatch
<cr1901_modern> okay, then nevermind.
<sb0> plugging the migen output directly into yosys via some NIH format won't improve the simulation/synthesis matching at all
<cr1901_modern> Why is the edif backend useful then?
<sb0> the idea of the EDIF backend was to perform what yosys does in python, working directly with the Migen FHDL objects, so you don't have to reinvent a verilog parser/pattern matcher
<cr1901_modern> But you can only create instances/specials right now. Any fragment that has a comb or sync attribute will cause edif to bomb.
<cr1901_modern> The instances and specials *have* to come from somewhere external (not migen)
<sb0> cr1901_modern, of course. how would you represent a comb statement in edif?
<cr1901_modern> sb0: I thought the idea was to examine the "comb" statements and match it to something that could be put into an edif file
<sb0> cr1901_modern, this "matching" is called synthesis
<cr1901_modern> like a Case statement would become a "mux" cell
<sb0> there are no "mux cells", edif doesn't define what the cells are, it's device-dependent
<cr1901_modern> sb0: Can we continue this convo at another time? I think I grossly misunderstand the purpose of EDIF
<sb0> well, I guess you could put all of FHDL into EDIF directly using some special set of cells, and then have yosys read that and optimize/map it, but it's a very bad format for doing that
<cr1901_modern> sb0: So basically it's up to me to provide the synthesis stage by operating on FHDL fragments, and converting them to black box instances?
<sb0> yes
<sb0> there is some code here https://github.com/nakengelhardt/mist but it's far from finished
<cr1901_modern> I'll take a peek
<cr1901_modern> If it's device dependent, then that sounds like a lot of work to remove the verilog component for very little gain.
<cr1901_modern> The linked convo just got me thinking, is all
<cr1901_modern> Okay, the mist code is *very* helpful. My idea was to map to yosys RTLIL as the "special set of cells", which is fairly generic. Why is edif a very bad format for that?
<cr1901_modern> (Probably *because* it's generic?)
madgoat has joined #m-labs
madgoat has left #m-labs [#m-labs]
nurelin has quit [Ping timeout: 268 seconds]
nurelin has joined #m-labs
MiW has quit [Quit: changing servers]
MiW has joined #m-labs
_whitelogger has joined #m-labs
_whitelogger has joined #m-labs
fengling has quit [Ping timeout: 252 seconds]
fengling has joined #m-labs
fengling has quit [Ping timeout: 252 seconds]
fengling has joined #m-labs
hhh has joined #m-labs
hhh has quit [Client Quit]
acathla has quit [Quit: Coyote finally caught me]
acathla has joined #m-labs
stekern_ has quit [Ping timeout: 246 seconds]
_whitelogger has joined #m-labs
<mithro> I now have spiflash + single width bitbanging working under qemu -> https://github.com/timvideos/qemu-litex
<mithro> (which means we have i2c, liteeth, flash, uart all working)
<cr1901_modern> I need to test whether single-width spiflash works under misoc (misoc and litex diverged in their spiflash code, and I don't think the misoc side was ever tested)
stekern has joined #m-labs
<GitHub> [artiq] sbourdeauducq pushed 4 new commits to master: https://github.com/m-labs/artiq/compare/0a687b7902c4...12249dac573c
<GitHub> artiq/master db3118b Sebastien Bourdeauducq: drtio: use BlindTransfer for error reporting
<GitHub> artiq/master 8c414ce Sebastien Bourdeauducq: drtio: report busy errors
<GitHub> artiq/master 008678b Sebastien Bourdeauducq: drtio: add infrastructure for reporting busy/collision errors
<GitHub> [artiq] sbourdeauducq commented on issue #562: Remaining steps:... https://github.com/m-labs/artiq/issues/562#issuecomment-282458954
<sb0> amazing, this time the conda garbage in the buildbot is behaving
<sb0> maybe it's --revision that tickles the bug
<bb-m-labs> build #505 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/505
<bb-m-labs> build #450 of artiq-win64-test is complete: Warnings [warnings python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/450 blamelist: Sebastien Bourdeauducq <sb@m-labs.hk>
<bb-m-labs> build #1441 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1441
sb0 has quit [Quit: Leaving]
stekern has quit [Ping timeout: 268 seconds]