<ikskuh>
rowang077[m]: thank you, using BB works as expected! \o/
<pepijndevos[m]>
<whitequark> "will look in a few hours, ping..." <- ping?
vidbina has quit [Ping timeout: 245 seconds]
kraiskil has joined #yosys
<rowang077[m]>
I would like to implement output register inference for brams in yosys? Anyone can point me in the right direction?
<lofty>
rowang077[m]: Do you mean "inference" or do you mean "merging"?
<lofty>
Consider that the latter is near-universally tech-dependent
<rowang077[m]>
lofty: I think I mean merging. For example the DP16KD bram primitive for the ECP5 FPGA has an input register and an optional output register. Using the output register greatly reduces propagation delay. What I want is that if a register is placed on the output it will instantiate a DP16KD with the output register enabled.
<lofty>
rowang077[m]: Okay, this sounds unrelated but isn't - do you know what register retiming is?
<rowang077[m]>
Yes
<lofty>
Given the possibility of register retiming, isn't it potentially too early to decide to merge the register into the BRAM?
<rowang077[m]>
Because retiming happens primitive mapping? If yes, then possibly. But looking at the propagation delay of the DP16KD it seems quite dramatic. I would expect that that would almost be the sensible choice.
<rowang077[m]>
Oke so from reading the code. What I would have to do is specify a pmg
<rowang077[m]>
Ah yes tha's what I was looking at
<rowang077[m]>
hmm Oke
<rowang077[m]>
lofty: Thanks I will try to play around with this to get a better feel on what I can do
<lofty>
rowang077[m]: AIUI pmgen is hyperspecific, expect pain trying to generalise patterns
kraiskil has quit [Ping timeout: 245 seconds]
<jix>
shouldn't memory_dff already try to merge output reigsters into the read port? or does that somehow get undone when mapping to architecture specific things?
FabM has quit [Quit: Leaving]
kraiskil has joined #yosys
Raito_Bezarius has quit [Ping timeout: 240 seconds]
Guest72 has joined #yosys
Guest72 has quit [Client Quit]
Raito_Bezarius has joined #yosys
kraiskil has quit [Ping timeout: 268 seconds]
<gatecat>
jix: memory_dff will fold in one layer of output register, which is required to map to BRAM at all (which always has a registered output), but the hardware also has an optional second output register for pipelining for improved Fmax that nothing in Yosys can infer currently, and I suspect is what this discussion is about
<pepijndevos[m]>
All the ones that don't say yowasp are built with regular nextpnr
<whitequark>
does it return an error?
<pepijndevos[m]>
not on master, master. The latest releases... don't tend to work
<whitequark>
if you want me to look deeper at it you should test the exact same inputs against yowasp-nextpnr-gowin and normal nextpnr-gowin
<whitequark>
built from the same sources
<pepijndevos[m]>
Well, what's happening is that we build all the examples on the latest yosys and nextpnr from git, as well as the latest yowasp packages. So the inputs are identical down... the randomness of yosys I guess?
<pepijndevos[m]>
Lemme rerun the yowasp one to see if it's a random failure
<pepijndevos[m]>
If it is a random failure, I won't be able to reproduce it. If it's not, the native and yowaps runs should be from identical inputs. Probably the yowasp commit lags a bit behind the native commit, so if there was a regression, native should fail too. We'll know in half an hour...
<pepijndevos[m]>
The fact that it failed on attosoc rather than a small example makes me fear it's a random failure. So I'm not sure where we'd go from there.
<pepijndevos[m]>
On the other hand it failed right at the start, not halfway during PnR...
Raito_Bezarius has quit [Ping timeout: 268 seconds]