ChanServ changed the topic of #yosys to: Yosys Open SYnthesis Suite: https://github.com/YosysHQ/yosys/ | Channel logs: https://libera.irclog.whitequark.org/yosys/
tpb has quit [Remote host closed the connection]
tpb has joined #yosys
AdamHorden has joined #yosys
AdamHorden has quit [Quit: Adam Horden]
AdamHorden has joined #yosys
cr1901 has quit [Read error: Connection reset by peer]
cr1901 has joined #yosys
<ikskuh> rowang077[m]: thank you! i've read the document you've sent more thoroughly and figured that BB is the right primitive to use
<ikskuh> what i have now is this:
<ikskuh> BB i2c_sda_io (.I(i2c_sda_out), .T(i2c_sda_tristate), .O(i2c_sda_input), .B(i2c_sda_pin));
rowang077[m] has quit [*.net *.split]
oldtopman has quit [*.net *.split]
tmiw has quit [*.net *.split]
tmiw has joined #yosys
oldtopman has joined #yosys
rowang077[m] has joined #yosys
mathu has quit [*.net *.split]
benreynwar has quit [*.net *.split]
esden has quit [*.net *.split]
corecode has quit [*.net *.split]
benreynwar has joined #yosys
mathu has joined #yosys
esden has joined #yosys
corecode has joined #yosys
FabM has joined #yosys
FabM has joined #yosys
FabM has quit [Changing host]
vidbina has joined #yosys
<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.
<tpb> Title: ECP5 Speed Grade -6 Cell Timings (at yosyshq.net)
<rowang077[m]> 983 ps with output register vs 5609ps without
<lofty> These are quick, actually
<lofty> (ask me how I know >.>)
<rowang077[m]> @lofty What do you mean quick :p? I don't think a propagation delay of 5609 ps is that quick.
<lofty> rowang077[m]: "hey, lofty, can you write a flow for these QuickLogic chips?"
<lofty> "oh, yeah, sure, send me the timings"
<lofty> "sure, a 32x32 multiply takes 25ns"
* lofty looks at camera
<lofty> Well, anyway
<lofty> Do you want the good news or the bad news?
<rowang077[m]> 🥲
<lofty> Bad news is that merging things together in Yosys is Tricky
<lofty> Good news is that Yosys has some amount of infrastructure for this: pmgen
<lofty> Bad news: it's mildly terrifying to pattern match on RTLIL
<lofty> At least gatecat made the sensible design choice to abstract the FF models into TRELLIS_FF
<lofty> I would not want to have to match over every single one of the Lattice flop primitives
<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
<mwk> gatecat: speaking of which, ping on https://github.com/YosysHQ/yosys/pull/3420 ?
<gatecat> don't have access to the board atm, sorry, life has been quite chaotic
<jix> gatecat: ah, makes sense and explains my confusion
<mwk> .... it be like that
<mwk> *sigh*
<mwk> (same)
emeb has joined #yosys
<whitequark> pepijndevos: pong
<whitequark> pepijndevos: please feed the same inputs to non-yowasp nextpnr-gowin
<pepijndevos[m]> Catherine: take your pick https://github.com/YosysHQ/apicula/actions
<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]
GenTooMan has quit [Ping timeout: 272 seconds]
Raito_Bezarius has joined #yosys
GenTooMan has joined #yosys
Raito_Bezarius has quit [Max SendQ exceeded]
Raito_Bezarius has joined #yosys
skipwich has quit [Ping timeout: 252 seconds]
skipwich has joined #yosys
svenn_ has joined #yosys
sorear_ has joined #yosys
duck25 has joined #yosys
buhman_ has joined #yosys
freshmaker666 has joined #yosys
Kamilion|ZNC has joined #yosys
lkcl- has joined #yosys
indy_ has joined #yosys
gruetze_ has joined #yosys
chaoticryptidz_ has joined #yosys
indy has quit [*.net *.split]
chaoticryptidz has quit [*.net *.split]
greeb has quit [*.net *.split]
gruetzkopf has quit [*.net *.split]
Kamilion has quit [*.net *.split]
lkcl has quit [*.net *.split]
sorear has quit [*.net *.split]
buhman has quit [*.net *.split]
svenn has quit [*.net *.split]
duck2 has quit [*.net *.split]
Kamilion|ZNC is now known as Kamilion
sorear_ is now known as sorear
buhman_ is now known as buhman
skipwich has quit [Quit: DISCONNECT]
skipwich has joined #yosys
skipwich has quit [Ping timeout: 240 seconds]
svenn_ is now known as svenn
nonchip has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
skipwich has joined #yosys
bwidawsk has quit [Remote host closed the connection]
emeb has quit [Quit: Leaving.]