| larsc | hm, I keep forgetting this. What's the difference between a bram where the output is clock and one where it is not and when do you want to use one or the other? | 10:14 |
|---|---|---|
| lekernel | you mean registered? | 10:48 |
| larsc | probably. basically the difference between data = ram[raddr] and @(posedge clk) data <= ram[raddr] | 10:49 |
| lekernel | all BRAMs have 1-cycle latency. you can optionally add another output register that improves the clock-to-output delay, but on slowtan6 the performance is less than registering in the fabric so you should never use it (as performance optimization is always the target due to the inherent slowness of the silicon) | 10:50 |
| lekernel | if you have an asynchronous read, you cannot map to BRAM | 10:51 |
| lekernel | unless the synthesizer moves some other design register into the memory via retiming | 10:51 |
| larsc | ok, I see | 10:53 |
| larsc | thanks | 10:53 |
| lekernel | you can still have the form | 10:53 |
| lekernel | @(posedge clk) addr_registered <= addr | 10:53 |
| lekernel | assign data = ram[addr_registered] | 10:54 |
| lekernel | which describes a write-first memory mappable to block RAM | 10:54 |
| lekernel | as opposed to @(posedge clk) data <= ram[raddr] | 10:54 |
| lekernel | which is read-first | 10:54 |
| larsc | so only if the address is combinatorial logic I won't be able to map it to a BRAM? | 10:58 |
| lekernel | and if you can't register the data either | 11:30 |
| lekernel | Xst will generally try to extract a register from the address generation logic, or the data processing logic, and put it into the BRAM. but a) it's only so smart b) in some cases, extracting the register would lead to disasterous timing | 11:32 |
| larsc | but for a fifo with a read counter I should be fine I guess? | 11:32 |
| lekernel | try synthesizing it and look at the netlist | 11:33 |
| lekernel | it's not always that clear | 11:33 |
| lekernel | depends how your fifo works :) | 11:33 |
| larsc | It will probably be fine since the output will eventually be a register again, but in a different core | 11:34 |
| lekernel | ah, I'd double check that. we're talking about Xilinx software, remember? :) | 11:48 |
| lekernel | I'm willing to take bets it won't work | 11:48 |
| larsc | the FF will probably explode if it does not work | 11:54 |
| larsc | FF count | 11:54 |
| lekernel | distributed RAMs are never mapped to FFs - they use the LUTs themselves as storage (with read-write capability), in a special mode | 11:55 |
| larsc | ok, so the lut cound will explode | 11:56 |
| larsc | good to know: "INFO: [Common 17-86] Your PlanAhead license expires in -127 day(s)" | 12:15 |
| larsc | ;) | 12:15 |
| lekernel | DRM failing in that direction is unusal, but less bothersome :) | 12:16 |
| larsc | looks as if I got a BRAM | 12:27 |
| larsc | I wonder how you go about implementing a stb-ack style handshaking for a read-first BRAM, since you essentially need to increment the address one cycle before ack is asserted. | 12:30 |
| lekernel | assign addr_next = ack ? addr + 1 : addr | 12:33 |
| lekernel | always @clk addr <= addr_next | 12:33 |
| lekernel | always @clk data <= mem[addr_next] | 12:34 |
| lekernel | something like that | 12:34 |
| larsc | that makes sense, thanks | 12:41 |
| ysionneau | hum, seems I fixed the jbig2dec issue | 18:19 |
| ysionneau | will post a patch later in the evening | 18:19 |
| GitHub52 | [scripts] sbourdeauducq pushed 2 new commits to master: http://git.io/i1RFDw | 22:16 |
| GitHub52 | scripts/master a748e57 Yann Sionneau: binutils and GDB update | 22:16 |
| GitHub52 | scripts/master 8222d63 Yann Sionneau: Fix jbig2dec 404 error issue | 22:16 |
| ysionneau | thanks! | 22:18 |
| ysionneau | lekernel wpwrak I am trying to put together a list of videos showing the Milkymist One board doing visual effects | 22:33 |
| ysionneau | if I miss some links please add thel | 22:34 |
| ysionneau | them | 22:34 |
| ysionneau | http://piratepad.net/YF1BItQOiH | 22:34 |
| ysionneau | I know that on some links it's the ML401 and on some other links it's the first milkymist one demo which is not the flickernoise software | 22:34 |
| ysionneau | maybe I should tag those videos with [flickernoise] and [early engineering demo] | 22:34 |
| ysionneau | if you have videos of the Mixxeo board in action, please put the links on the piratepad as well | 22:35 |
| ysionneau | and now, I'm calling it a day | 22:36 |
| ysionneau | gn8 :) | 22:36 |
| wpwrak | if you like technical, here's one: http://downloads.qi-hardware.com/people/werner/m1/demo/wheel.ogv | 22:41 |
| wpwrak | then there's of course this one: http://downloads.qi-hardware.com/people/werner/m1/demo/MVI_1747.MOV | 22:47 |
| ysionneau | great! could you put them on the piratepad page ? | 22:47 |
| ysionneau | if not already dlne | 22:47 |
| ysionneau | done | 22:47 |
| ysionneau | im on my phone right now | 22:47 |
| ysionneau | *zZzZ* | 22:48 |
| wpwrak | done. lemme check two larger ones ... | 22:51 |
| wpwrak | bah. mplayer doesn't want to play them. that sucks. | 22:53 |
| sh4rm4 | wpwrak, time to get mpv player then ;) | 23:54 |
| sh4rm4 | looks as if wolfspraul hasn't been around lately, hmm ? | 23:55 |
| sh4rm4 | i'm curious why/how he got all commit names in his fpgatools repo changed | 23:55 |
| --- Wed Nov 6 2013 | 00:00 | |
Generated by irclog2html.py 2.9.2 by Marius Gedminas - find it at mg.pov.lt!