clifford changed the topic of #yosys to: Yosys Open SYnthesis Suite: http://www.clifford.at/yosys/ -- Channel Logs: https://irclog.whitequark.org/yosys
tpb has quit [Remote host closed the connection]
adjtm has quit [Remote host closed the connection]
adjtm has joined #yosys
vidbina has joined #yosys
X-Scale` has joined #yosys
X-Scale has quit [Ping timeout: 260 seconds]
X-Scale` is now known as X-Scale
twnqx has quit [Ping timeout: 256 seconds]
X-Scale` has joined #yosys
X-Scale has quit [Ping timeout: 260 seconds]
X-Scale` is now known as X-Scale
rohitksingh has joined #yosys
vidbina has quit [Ping timeout: 268 seconds]
emeb has left #yosys [#yosys]
emeb_mac has joined #yosys
vidbina has joined #yosys
vidbina has quit [Ping timeout: 258 seconds]
vidbina has joined #yosys
vidbina has quit [Read error: Connection reset by peer]
rohitksingh has quit [Ping timeout: 268 seconds]
citypw_ has joined #yosys
rohitksingh has joined #yosys
vidbina has joined #yosys
vidbina has quit [Ping timeout: 258 seconds]
vidbina has joined #yosys
_whitelogger has joined #yosys
elGamal has quit [Ping timeout: 268 seconds]
elGamal has joined #yosys
vidbina has quit [Ping timeout: 256 seconds]
emeb_mac has quit [Quit: Leaving.]
twnqx has joined #yosys
dys has quit [Ping timeout: 258 seconds]
twnqx has quit [Ping timeout: 256 seconds]
twnqx has joined #yosys
emily has quit [Quit: killed]
jryans has quit [Quit: killed]
fevv8[m] has quit [Quit: killed]
promach3 has quit [Quit: killed]
nrossi has quit [Quit: killed]
pepijndevos[m] has quit [Quit: killed]
rjo has quit [Quit: killed]
emily has joined #yosys
strubi has joined #yosys
promach3 has joined #yosys
nrossi has joined #yosys
jryans has joined #yosys
fevv8[m] has joined #yosys
rjo has joined #yosys
ZipCPU has joined #yosys
rohitksingh has quit [Ping timeout: 240 seconds]
ZipCPU has quit [Ping timeout: 265 seconds]
strongsaxophone has joined #yosys
hexagon5un has joined #yosys
twnqx has quit [Ping timeout: 240 seconds]
tlwoerner is now known as tw-eh
tw-eh is now known as tlwoerner
rohitksingh has joined #yosys
oter has quit [Quit: Textual IRC Client: www.textualapp.com]
Stary has quit [Quit: ZNC - http://znc.in]
Stary has joined #yosys
klotz has joined #yosys
citypw_ has quit [Ping timeout: 258 seconds]
develonepi3 has joined #yosys
strubi has quit [Ping timeout: 256 seconds]
rohitksingh has quit [Ping timeout: 256 seconds]
proteusguy has quit [Ping timeout: 265 seconds]
attie has quit [Ping timeout: 258 seconds]
develonepi3 has quit [Remote host closed the connection]
attie has joined #yosys
Jybz has joined #yosys
Jybz has quit [Remote host closed the connection]
rohitksingh has joined #yosys
develonepi3 has joined #yosys
rohitksingh has quit [Ping timeout: 255 seconds]
emeb has joined #yosys
strongsaxophone has quit [Ping timeout: 268 seconds]
dys has joined #yosys
strongsaxophone has joined #yosys
dys has quit [Ping timeout: 256 seconds]
klotz has quit [Quit: klotz]
rohitksingh has joined #yosys
ld-cd has joined #yosys
rohitksingh has quit [Ping timeout: 240 seconds]
ld-cd has quit [Ping timeout: 260 seconds]
vidbina has joined #yosys
dormito has quit [Ping timeout: 268 seconds]
dormito has joined #yosys
ld-cd has joined #yosys
<ld-cd> I'm new here, but I'm looking to improve support for dsp blocks, specifically for the ECP5
<ld-cd> do the bits in the bitstream docs correspond fairly exactly to the muxes and things described in the sysdsp guide
<ld-cd> file:///home/aled/downloads/TN1267.pdf
<ld-cd> whoops
<ld-cd> (sorry if I double sent, my school wifi is terrible)
develonepi3 has quit [Quit: Leaving]
vidbina has quit [Ping timeout: 256 seconds]
<ZirconiumX> daveshah: ^
<ZirconiumX> ld-cd: when you say DSP, what specifically do you want to add?
<ZirconiumX> For example, Yosys can already infer DSP blocks for multiplication
<ld-cd> support for preadders and the accumulator, and 9x9 mode
<ld-cd> my understanding is that on the ecp5 only 18x18 mode is supported, and only by direct instantiation unless something has changed
<ZirconiumX> Things changed a good while back
<ld-cd> Ah
<ld-cd> Is there good up to date documentation I can look at
<ZirconiumX> Not that I'm aware of
<ld-cd> neat
<ld-cd> and that works on the ecp5?
<ZirconiumX> Yep
<ZirconiumX> There's a mul2dsp.v script that maps multiplication to fixed-size DSP blocks
<ld-cd> awesome, are there any areas in yosys that could use some work thats within the grasp of a newer contributer
<ZirconiumX> Currently it works for MULT18x18
<ld-cd> inferring these kind of large blocks seems really interesting
<ZirconiumX> But if you want to add 9x9 support - and if there's support for it in nextpnr - then it would be a case of running mul2dsp again after the 18x18 block
<ZirconiumX> Inference is an incredibly tricky thing
<ld-cd> thats what I've gathered, but its also fascinating
<ld-cd> oh also, sorry if this is a dumb question but I've been wondering
<ZirconiumX> To paraphrase whitequark, it's a case where you're trying to guess the programmer's intentions, but all you have is the code they wrote.
<ZirconiumX> There are no dumb questions, especially not from newbies
<ld-cd> it seems like yosys can easily make a netlist with more dsp/ebr blocks than the device has, does nextpnr know how to demote those to luts
<ZirconiumX> ~~I still consider myself a newbie~~
<ZirconiumX> It doesn't, as far as I know
<ZirconiumX> And I would argue it shouldn't
<ld-cd> that does seem to make sense
<ld-cd> can you give yosys on limits of certain kinds of resources
<ZirconiumX> Yosys maps the netlist assuming given timings, but if nextpnr silently changes them to LUTs it will almost certainly majorly distort the timings
<ZirconiumX> And be more difficult to route.
<ZirconiumX> As for resource limits: not at present, for a few different reasons
<ZirconiumX> The primary one is that almost everything works in a vacuum
<ZirconiumX> mul2dsp is not charged with mapping *all* multiplications
<ZirconiumX> It's charged with mapping *a* multiplication
<ZirconiumX> And then it gets called on every multiplication it can find
<ZirconiumX> It is completely unaware of what the rest of the netlist looks like.
<ZirconiumX> To impose a resource limit, you basically have to throw away mul2dsp and write a whole new pass
<ZirconiumX> And that's going to be very tricky, because even if you are in charge of mapping *all* multipliers, you are *still* in a vacuum.
<ZirconiumX> Which multipliers are on the critical path? Which aren't?
<ZirconiumX> You can't know at the stage mul2dsp works at.
ld-cd has quit [Ping timeout: 260 seconds]
<ZirconiumX> Welp.
<ZirconiumX> Though they did say their WiFi was crap.
ld-cd has joined #yosys
<ld-cd> yeah it really is
<ld-cd> moving from one place to another drops it pretty much instantly
<ZirconiumX> I think you missed much of my monologue
<ld-cd> yeah I've been following along there while it was out
<ZirconiumX> If you want to do this "properly" you need to simultaneously map everything at the same time.
<ld-cd> I didn't realize some mapping was done in verilog like that
<ZirconiumX> Ah, yeah, techmap is incredibly versatile for this kind of thing.
<ld-cd> so if ABC supported multiplies for example it would be done there?
<ZirconiumX> When you want to transform from A to B, we generally point you in the direction of techmap.
<ZirconiumX> Indeed it could.
<ZirconiumX> But it doesn't.
<ZirconiumX> Additionally, memory is another point.
<ld-cd> Is there a split between yosys development philosophy and abc's
<ZirconiumX> ABC predates Yosys and is a separate project as such
<ZirconiumX> But it gets used for LUT mapping because there is presently nothing better.
<ZirconiumX> I have the aim of changing that for a few reasons, but I'm basically incapable of getting stuff done alone ^.^;;
<ZirconiumX> So I've instead spent what energy I can muster on a way of quantifying improvements to Yosys in a more scientific manner than "it seems good to me"
ld-cd has quit [Ping timeout: 260 seconds]
ld-cd55 has joined #yosys
ld-cd55 is now known as ld-cd
<ld-cd> yikes today is a bad day, literally sitting still
<ld-cd> yeah thats what I'd gathered, I was just surprised to notice that yosys pulls in what I can tell is a fairly patched versionIs it theoretically possible to support memories and things in ABC and the author doesn't want to or would it just be a massive undertaking?
<ld-cd> :/
<mwk> heh
<ld-cd> that was supposed to be two messages
<mwk> people who have been studying long enough at my uni remember which desks in a room have working wifi and which do not
<ld-cd> <insert newline here> Is it theoretically possible to support memories and things in ABC and the author doesn't want to or would it just be a massive undertaking?
<mwk> because it's that bad and that's crucial information when picking a seat
<ld-cd> unfortunatly I'm in a basement hallway rn waiting for my lab to start
<ld-cd> literally the worst spot
<ZirconiumX> ld-cd: Actually Yosys just vendors vanilla ABC
<ld-cd> might be the extra people here for the primary, although they shouldn't be on this ap
<ld-cd> ah
<ZirconiumX> There are no patches involved :P
<ZirconiumX> Well anyway
<ZirconiumX> As far as I can tell, the author of ABC considers it out of scope
<ZirconiumX> And hasn't done much research on it as such
<ld-cd> I could go ask him I guess
<ld-cd> I think he works here
<ZirconiumX> Mishchenko?
<ld-cd> but he's a reasearcher from what I can tell
<ld-cd> yeah
<ZirconiumX> Yeah, ABC is a research project:tm:
<ZirconiumX> And to be fair, as far as I can tell it's pretty state of the art
<ZirconiumX> It's just missing an awful lot of things that would be nice to have
<ld-cd> does it handle timing information?
<ZirconiumX> Yes, that's ABC9
<ZirconiumX> (you ever wondered what the shiny -abc9 option does? that's your answer)
<ld-cd> very neat
<ZirconiumX> Well. Kind of.
<ZirconiumX> I wrote ~~an essay~~ a thought piece based on an instance where ABC9 does *worse* than ABC1
<ld-cd> by abc9 you just mean version 9 right?
<ZirconiumX> No, I don't :P
<ZirconiumX> ABC is still version 0.1
<ZirconiumX> But the algorithms themselves are called ABC9
<ld-cd> ah
<ZirconiumX> Don't ask me why, I'm not Alan
<ld-cd> Is there any public research on mapping block rams and dsps in a systematic way
<ZirconiumX> By itself it's not all that difficult
<ZirconiumX> So it's probably quite a boring topic