nelgau has quit [Read error: Connection reset by peer]
crzwdjk has quit [Ping timeout: 260 seconds]
crzwdjk has joined #yosys
nelgau has joined #yosys
nelgau_ has quit [Ping timeout: 255 seconds]
lexano has quit [Ping timeout: 256 seconds]
citypw has joined #yosys
nelgau has quit [Read error: Connection reset by peer]
nelgau_ has joined #yosys
bjork1intosh has quit [Ping timeout: 256 seconds]
bjorkintosh has joined #yosys
bjorkintosh has quit [Changing host]
bjorkintosh has joined #yosys
cr1901_ has joined #yosys
cr1901 has quit [Ping timeout: 268 seconds]
jn has quit [Ping timeout: 256 seconds]
jn_ has joined #yosys
jn_ has joined #yosys
nelgau_ has quit [Read error: Connection reset by peer]
uis246[m]1 has quit [Quit: Idle timeout reached: 172800s]
nelgau has joined #yosys
FabM has joined #yosys
FabM has joined #yosys
<Myrl-saki>
Hi. :) I finally got an ECP5 board, how do I use registered output BRAM?
<Myrl-saki>
Oh wait.
<Myrl-saki>
In hindsight, maybe it's getting inferred? And that's why I'm having weird timings.
<Myrl-saki>
TL;DR is that the slowest path right now is the BRAM, so I wanted to use registered output. So I did. But it still considers the output to not be regisetred.
<Myrl-saki>
At least if I'm understanding it correctly..
<tnt>
The ECP5 BRAM have a very long clock-to-out on BRAMs.
<tnt>
well this ram model doesn't have an output register ...
<Myrl-saki>
Wait, give me a bit to think about this lol. So, my original implementation was to just do `assign out[...] = cells[addr];`
<tnt>
enabling out_reg on ecp5 means you have the input registers (because they are bram, always synchronous), then another register on the data output. So you have a read latency of 2 cycles.
<tnt>
Your implementation was an asynchronous read ram ... that doesn't even _map_ to BRAMs at all ...
<Myrl-saki>
Okay, I think I get it. So the way this works is that it actually latches the address?
<Myrl-saki>
Like, one way I can see this is: `assign out[...] = cells[a_reg]; ... a_reg <= addr;`?
<tnt>
yes
mobius has quit [Ping timeout: 246 seconds]
mobius has joined #yosys
<Myrl-saki>
Can block RAM be considered as async write?
<Myrl-saki>
Wait, that kind of makes no sense does it
<lofty>
Myrl-saki: you basically never want async write
<Myrl-saki>
Yeah, I kind of had a messup in understanding "async" and "sync" there, but I think I get it now.
jkm has joined #yosys
jkm has quit [Ping timeout: 250 seconds]
jkm has joined #yosys
lexano has joined #yosys
citypw has quit [Ping timeout: 240 seconds]
nelgau has quit [Read error: Connection reset by peer]
nelgau has joined #yosys
<Myrl-saki>
Okay, stupid question, but like
<Myrl-saki>
Am I having a hard time timing, because I'm using BRAM and IO at the same time? And using combinatorial logic between them
<Myrl-saki>
A bit more specific: I'm progressively converting my CPU and peripherals into Wishbone, and it's not going as fast as I expected. This wasn't a problem on the Tang Nano 9K, so I'm surprised that it's a problem on this board.
<Myrl-saki>
Hm, I think the coordinates should reveal if that's the problem, but I don't think it's that.