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
fengling has quit [Ping timeout: 276 seconds]
fengling has joined #m-labs
larsc has quit [Remote host closed the connection]
<cr1901_modern> Well, my first exposure to C# (to port the programmer for my dev board to the command line) lulled me into a false sense of security that it would be easy to port. Spent more time debugging race conditions after turning on optimizations than I did porting the damn thing.
fengling has quit [Quit: WeeChat 1.1.1]
larsc has joined #m-labs
lars_ is now known as larsc
fengling has joined #m-labs
<GitHub159> [artiq] whitequark pushed 1 new commit to new-py2llvm: http://git.io/vI7XP
<GitHub159> artiq/new-py2llvm c89bf6f whitequark: Add support for UnaryOp.
travis-ci has joined #m-labs
<travis-ci> m-labs/artiq#204 (new-py2llvm - c89bf6f : whitequark): The build is still failing.
travis-ci has left #m-labs [#m-labs]
<whitequark> travis-ci: shut uuuuup
<sb0> whitequark, can't edit travis.yml to disable non-master builds?
<whitequark> yeah I should do that
<sb0> whitequark, do you know why python list comprehensions with multiple for are in the [item for sublist in list for item in sublist] order?
<whitequark> as opposed to?
<sb0> instead of [item for item in sublist for sublist in list]
<whitequark> oh
<whitequark> I have no idea.
<whitequark> possibly for consistency with `if`?
<whitequark> the dataflow, logically, is: for..in -> if -> for..in -> if
<whitequark> (I'm assuming if predates multiple for's)
<whitequark> aha, exactly. to quote PEP-202
<whitequark> It is proposed to allow conditional construction of list literals
<whitequark> using for and if clauses. They would nest in the same way for
<whitequark> loops and if statements nest now.
<whitequark> "BDFL Pronouncement":
<whitequark> - The form [... for x... for y...] nests, with the last index
<whitequark> varying fastest, just like nested for loops.
sb0 has quit [Ping timeout: 256 seconds]
rjo has quit [Ping timeout: 264 seconds]
rjo has joined #m-labs
aeris has quit [Ping timeout: 265 seconds]
sb0 has joined #m-labs
aeris has joined #m-labs
sb0 has quit [Ping timeout: 245 seconds]
sb0 has joined #m-labs
Gurty has quit [Ping timeout: 265 seconds]
aeris has quit [Ping timeout: 250 seconds]
aeris has joined #m-labs
<GitHub181> [artiq] sbourdeauducq pushed 1 new commit to master: http://git.io/vI53m
<GitHub181> artiq/master 86fbe38 Sebastien Bourdeauducq: gui: DDS monitor/injection (WIP)
<cr1901_modern> sb0: I think I'm missing something, but... [item for sublist in list for item in sublist], do you have a code snippet demonstrating that? It's been a while, but I thought [item for sublist in list for item in sublist] WAS correct o.0;
<cr1901_modern> or whitequark... anyone who gets it can answer this XD
<sb0> yes, it's correct
<cr1901_modern> Okay, that's what I thought. Started second guessing myself lol.
travis-ci has joined #m-labs
<travis-ci> m-labs/artiq#205 (master - 86fbe38 : Sebastien Bourdeauducq): The build passed.
travis-ci has left #m-labs [#m-labs]
key2 has quit [Quit: Page closed]
<cr1901_modern> sb0: Any known cases where Migen will generate invalid Verilog (or alternatively, valid Verilog where vendor tools won't accept it)?
Gurty has joined #m-labs
fengling has quit [Quit: WeeChat 1.1.1]
<attie> cr1901_modern: a pretty trivial one is if you give it an invalid slicing, it'll reproduce that.
<attie> just made it spit out s[64:63] earlier by getting my loop indices wrong.
<attie> er, 63:64
<cr1901_modern> I made Migen generate a concatenation that was subsequently indexed in an assignment expression
<cr1901_modern> e.g. assign {a, b, c, d}[0] = my_wire;, where a,b,c,d are prev. defined
<sb0> cr1901_modern, can you fill in a issue on github?
<sb0> I don't guarantee I'll fix it because this sort of verilog problem tends to piss me off more than anything else, but at least those are documented
<cr1901_modern> Yea it's fine. I could also very well be doing something wrong.
<sb0> bah, {a, b, c, d}[0] = my_wire should be a valid expression
<cr1901_modern> Yea, then it's Xilinx's fault then.
<sb0> I mean, it makes sense. but the verilog standard often does not.
<cr1901_modern> For my dev board platform, I defined the GPIO/SRAM bus in terms of SRAM subsignals. As I'm writing the mux, I wanted to convert the SRAM record into a bus in Migen- manipulate it as an array. Migen is replacing EVERY instance of pads.raw_bits() with the concatenation of {a, b, c, d}.
<sb0> yeah, so?
<cr1901_modern> Well, I didn't know that was valid Verilog until 2 minutes ago >>
<cr1901_modern> and I thought the "correct" thing to do would've been to do an intermediate assignment to a bus
<cr1901_modern> e.g. my_bus = {a,b,c,d}; assign my_bus[0] = my_wire;
<sb0> that won't work because raw_bits() is bidirectional
<cr1901_modern> Oh... good point lol
<sb0> and yes, if verilog cannot slice concatenations, you have to write a transform that looks at each slicing of a concatenation, figure out the direction, and inserts appropriate intermediate signals and assignments
<sb0> which is annoying as hell for such a small detail
<cr1901_modern> And that would make the {a,b,c,d}[0] form necessary... not all of the lines with that expression fail in my example.
<cr1901_modern> And indeed: a, b, c, and d are not all the same direction
<sb0> ah yeah, for those cases it's even worse, you have to break the slice yourself...
<cr1901_modern> I'm making a test gist now (f***ing Tab Errors)
<sb0> put it in the issue tracker
<cr1901_modern> sb0: Done. Linked to relevant gist as well, as well as generated Verilog and Xilinx output, so you don't have to build it.
* cr1901_modern is away for a bit
<sb0> cr1901_modern, ok, thanks!
antgreen has joined #m-labs
rjo_ has joined #m-labs
<rjo_> sb0: do you have a log/link to florent's and your discussion about the shared L2 cache?
<sb0> rjo_, hmm, it was private emails in French
<sb0> but my latest email should tell you the essential points
<rjo_> ;) ok.
<rjo_> so do i get this right: you want to improve the current mailbox interface and widen it + speed it up.
<sb0> yeah, the current design is ugly (and I suspect, buggy)
<sb0> the mailbox itself is just passing pointers, the CPUs are using shared memory
<rjo_> naively i would just do a ~1.5 kB sized (ethernet frame) BRAM-backed, shared, mmapped window.
<rjo_> for data exchange
<rjo_> for code exchange still the shared/independently cached dram + flushing
<sb0> the CPUs have to share memory anyway for loading kernels
<sb0> and using the same shared memory mechanism for comms remove any need for serialization by the kernel CPU
<sb0> you can just pass any pointer to any structure
<rjo_> ok. that does break the layering principle a bit and the comms cpu now needs to understand the data to do the serialization.
<rjo_> isn't this still very much like regular DMA? how is the cache coherency thing solved in the usual DMA scenarios?
<sb0> flush the caches or access them via multiported memory to dma to/from them in parallel
<rjo_> ack. lasmi gives you the "multiport/parallel access/arbitration". and you are saying that cache flusing is expensive and could be avoided?
<sb0> ysionneau, what are cairo, cairoplot3, pycairo still doing in artiq/conda ? remove
<sb0> and pygobject
<sb0> rjo_, wishbone has it as well and is simpler
<sb0> some of the cache flushing could be avoided, yes
<sb0> all requires implementing a protocol like MSI and digging deep into the mor1kx code
<rjo_> sb0: are those L2 caches preserving the ordering of the writes (in time or in address) if they commit?
<sb0> what do you mean?
<sb0> anyway, I need to go. see you!
sb0 has quit [Quit: Leaving]
<rjo_> if they preserve ordering could you not just do a ring buffer style thing and then the atomicity/coherence only needs to happen in the pointers?
<rjo_> see you.
<GitHub119> [artiq] fallen pushed 1 new commit to master: http://git.io/vIFri
<GitHub119> artiq/master 2ed81f7 Yann Sionneau: conda: remove recipes we dont need anymore since the switch to Qt
mumptai has joined #m-labs
rjo_ has quit [Ping timeout: 272 seconds]
travis-ci has joined #m-labs
<travis-ci> m-labs/artiq#206 (master - 2ed81f7 : Yann Sionneau): The build passed.
travis-ci has left #m-labs [#m-labs]
antgreen has quit [Ping timeout: 258 seconds]
rjo_ has joined #m-labs
rjo_ has quit [Quit: leaving]
cr1901_modern1 has joined #m-labs
cr1901_modern has quit [Ping timeout: 264 seconds]
cr1901_modern has joined #m-labs
cr1901_modern1 has quit [Ping timeout: 256 seconds]
Gurty has quit [*.net *.split]
mindrunner has quit [*.net *.split]
Gurty has joined #m-labs
mindrunner has joined #m-labs