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.
<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.
<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