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]
tpb has joined #yosys
Degi has quit [Ping timeout: 256 seconds]
az0re has quit [Remote host closed the connection]
Degi has joined #yosys
emeb has quit [Read error: Connection reset by peer]
kristianpaul has quit [Ping timeout: 265 seconds]
kristianpaul has joined #yosys
cr1901_modern has quit [Quit: Leaving.]
cr1901_modern has joined #yosys
az0re has joined #yosys
X-Scale` has joined #yosys
X-Scale has quit [Ping timeout: 246 seconds]
X-Scale` is now known as X-Scale
citypw has joined #yosys
kristianpaul has quit [Ping timeout: 260 seconds]
anticw has quit [Remote host closed the connection]
xtro has joined #yosys
anticw has joined #yosys
kristianpaul has joined #yosys
kristianpaul has quit [Ping timeout: 240 seconds]
kristianpaul has joined #yosys
maartenBE has quit [Ping timeout: 240 seconds]
kristianpaul has quit [Ping timeout: 256 seconds]
maartenBE has joined #yosys
kristianpaul has joined #yosys
kristianpaul has quit [Read error: Connection reset by peer]
ayazar1 has joined #yosys
kristianpaul has joined #yosys
kristianpaul has quit [Read error: Connection reset by peer]
kristianpaul has joined #yosys
emeb_mac has quit [Quit: Leaving.]
jordigw has joined #yosys
kraiskil has joined #yosys
jakobwenzel has joined #yosys
ayazar1 has quit [Quit: ayazar1]
Asu has joined #yosys
xtro has quit [Ping timeout: 240 seconds]
flaviusb has joined #yosys
proteusguy has quit [Ping timeout: 256 seconds]
proteusguy has joined #yosys
proteusguy has quit [Ping timeout: 265 seconds]
<pepijndevos> How well does Yosys support division?
sorear has quit [Ping timeout: 244 seconds]
svenn has quit [Read error: Connection reset by peer]
svenn has joined #yosys
sorear has joined #yosys
proteusguy has joined #yosys
Asuu has joined #yosys
Asu has quit [Ping timeout: 260 seconds]
<daveshah> My experience is that anything other than a power of two ends up with a massive circuit
<daveshah> Sometimes abc9 does clean things up a bit
<pepijndevos> daveshah, yea I guess that is to be expected. But from what I read some synthesis tools outright don't support anything other than powers of two, or maybe constants only or stuff like that.
<daveshah> Yosys will bravely try and synthesis any divide
<pepijndevos> Cool
<pepijndevos> Maybe in the end I will implement a sequential division if it turns out to be too unreasonable.
<Lofty> It'll also attempt combinational modulus too, I think
<daveshah> Yep
<daveshah> I suspect there are much better combinational algorithms than the one Yosys uses
<daveshah> But I haven't looked into it in detail
<daveshah> Even if you do want single cycle divide, often it needs to be pipelined so you wouldn't infer it anyway
<pepijndevos> Just because it's so unwieldy it drives fmax down the drain?
<Lofty> Pretty much
<pepijndevos> Hm, pipelining only gets you more throughput, not more latency, right...
<pepijndevos> (compared to normal clocked)
<Lofty> pepijndevos: for the specific path, latency generally goes up. But because your division is no longer part of the critical path, effective latency everywhere else goes down :P
<pepijndevos> I mean latency in "number of clock cycles to complete calculation" not in the timing sense, but yea
DaKnig has quit [Ping timeout: 265 seconds]
DaKnig has joined #yosys
Asuu has quit [Ping timeout: 256 seconds]
Asu has joined #yosys
kraiskil has quit [Ping timeout: 260 seconds]
kraiskil has joined #yosys
kraiskil has quit [Ping timeout: 240 seconds]
indy has quit [Read error: Connection reset by peer]
indy has joined #yosys
<promach3> For https://github.com/promach/noc/blob/development/spidergon_node.v#L475 , why formal verification failed for this BMC basecase assert() ?
<tpb> Title: noc/spidergon_node.v at development · promach/noc · GitHub (at github.com)
Asu has quit [Read error: Connection reset by peer]
Asu has joined #yosys
emeb has joined #yosys
xtro has joined #yosys
philtor has joined #yosys
emeb has quit [Ping timeout: 260 seconds]
emeb has joined #yosys
emeb has quit [Ping timeout: 240 seconds]
emeb has joined #yosys
citypw has quit [Ping timeout: 240 seconds]
<Forty-Bot> is there a way to indicate "don't care" in combinatorial logic?
<tpb> Title: How can I assign a "dont care" value to an output in a combinational module in Verilog - Stack Overflow (at stackoverflow.com)
<Forty-Bot> one answer is for quartus, however when I try the same thing in yosys the "don't cares" get interpreted as zeros
<mwk> just use x bits, they are supported
<mwk> (yosys might miss some optimization opportunities though)
<Forty-Bot> ok, so for that example, bit 0 synthesizes as an and gate
<Forty-Bot> but since it is don't-care, it should synthesize as a constant 1
<Forty-Bot> which to me means that the Xs are interpreted as 0s and not "don't care"s
<mwk> look
<mwk> "don't care" means that synthesis can pick any bit it wants
<mwk> it picked 0 in this case, this is not an error
<Forty-Bot> right, and I want it to pick a bit which minimizes the amount of area
<Forty-Bot> instead of picking any bit it wants
<mwk> yeah, it seems yosys has no optimization pass that'd be able to figure this out
<Forty-Bot> :l
emeb_mac has joined #yosys
<mwk> it is an interesting case though
<mwk> I think whitequark had a draft pass (opt_match?) that would solve it nicely
<whitequark> yes
<whitequark> and i actually know how to properly put it into yosys now
<whitequark> like, in a way that would get it merged and nicely intregrated with the existing passes, rather than a total rewrite of proc i initially planned (which is unnecessary anyway, at least for the reasons i wanted it)
<mwk> do you want it as an extra opt pass, or an extra proc pass?
<whitequark> extra proc pass
<mwk> huh.
<whitequark> either that or mmm
<whitequark> i think it would actually be a new mode for proc_mux
<mwk> right, proc_mux replacement
<whitequark> the idea is to ditch everything i wrote for proc_match except for the, well, match-related parts
<whitequark> all the stuff i did for mux insertion was really clever... clever enough i never figured out how to make it work
<whitequark> and tbh
<whitequark> it's possible that with better column order selection the rest of yosys will cope just fine
<whitequark> possibly not but i don't want to prematurely rewrite it
<mwk> (I might have a refactor of proc incoming for unrelated reasons though — better async reset support)
<mwk> (the main idea being that proc_dff / proc_dlatch should run *before* proc_mux and be merged with proc_arst, to remove some current weirdness with async resets in DFFs and support resets in dlatches)
<whitequark> uh, that might actually break nmigen
<whitequark> i'm not saying you shouldn't
<mwk> huh, why?
<whitequark> i'm saying you might
<whitequark> wait
<whitequark> nevermind, i misremembered
<whitequark> (because nmigen uses proc_arst;proc_dff, but i misremembered that it just uses proc_arst alone)
<mwk> oh, you're actually using proc_* subpasses on their own, without the proc wrapper?
<whitequark> yes
<mwk> ... okay, that has a good chance of breaking
<whitequark> yes
<whitequark> the reason i do that is because i want write_verilog to get a netlist it can actually process
<whitequark> but i don't want processes to be bitblasted away
<whitequark> tbh
<whitequark> if there was a `proc -nomux` it's likely i could just use that
<mwk> hmmmm, that sounds good
<Forty-Bot> so is there any other approach to doing this other than hand-optimization?
<Forty-Bot> especially with much bigger cases
<mwk> not really, this is the obvious pattern
<mwk> we just need more optimization power
<Forty-Bot> oof
<tpb> Title: Add `proc -nomux` to Yosys and migrate to it · Issue #479 · nmigen/nmigen · GitHub (at github.com)
<whitequark> Forty-Bot: people sometimes automate it
<Forty-Bot> yeah, I was reading https://static.docs.arm.com/arp0009/a/Verilog_X_Bugs.pdf and in section 7.2 they say to just shove it through an optimizer
<Forty-Bot> though apprently espresso has not been updated since 2008
<mwk> ... heh
<mwk> of course skipping proc_mux breaks latches
<whitequark> that might be why i don't run proc_dlatch
<mwk> yeah, I suppose you don't care about them anyway
<Forty-Bot> ok, so is it possible to get yosys to enumerate the inputs/outputs of a design in a truth table, or would I need to write that myself?
<mwk> there's the eval pass, but I'm not sure that's what you have in mind
<Forty-Bot> e.g. anything close to what this thing inputs http://users.ece.utexas.edu/~patt/06s.382N/tutorial/espresso_manual.html
<tpb> Title: EE 382N - Espresso Manual (at users.ece.utexas.edu)
Asuu has joined #yosys
Asu has quit [Ping timeout: 256 seconds]
<Lofty> Way too late, but Forty-Bot, you should really consider using ABC.
<Forty-Bot> how would I do that?
<Lofty> Yosys bundles it as yosys-abc
<Forty-Bot> I tried playing around with the options, but "undef" values in the blif seemed to get removed even with an empty script
<Lofty> Well, I can't remember what the Yosys ABC pass does, but I think it dumps to AIGER
<Lofty> Which doesn't support DC
<Forty-Bot> by default it reads/writes blif in yosys
<Lofty> ABC9 goes through XAIGER, I know that much
<Forty-Bot> anyway, what do you suggest I look into for optimizing dontcares?
<Lofty> ...ABC.
<Forty-Bot> yes, and ABC has something like 100 commands
<Lofty> Don't use the Yosys internal pass
<tpb> Title: abc/abc.rc at master · berkeley-abc/abc · GitHub (at github.com)
<Lofty> Then run resyn2 a bunch of times, as I understand it
<Forty-Bot> haha
<Lofty> Most (&if is a sad exception) commands have -h for help
<Forty-Bot> thanks for the tip
<Lofty> I think ABC might read DCs separately
<Lofty> BLIF is a mostly theoretically interchangeable format
<Lofty> And I think this proves it quite well :P
emeb_mac has quit [Ping timeout: 256 seconds]
emeb_mac has joined #yosys
Asuu has quit [Read error: Connection reset by peer]
Asu has joined #yosys
Asu has quit [Client Quit]
emeb_mac has quit [Ping timeout: 264 seconds]
emeb_mac has joined #yosys
kristianpaul has quit [Read error: Connection reset by peer]
kristianpaul has joined #yosys
lf_ has quit [Ping timeout: 260 seconds]
lf has joined #yosys
bzztploink has quit [Read error: Connection reset by peer]
bzztploink has joined #yosys
bzztploink has quit [Read error: Connection reset by peer]
bzztploink has joined #yosys
emeb has quit [Quit: Leaving.]