<lofty>
The `cook` code confuses me; I realise it's for counting the number of unique inputs, but if you keep the LUT inputs in a cut sorted then deduplication is just std::set_union
bjorkintosh has joined #yosys
bjorkintosh has quit [Changing host]
bjorkintosh has joined #yosys
notgull has quit [Ping timeout: 246 seconds]
notgull has joined #yosys
FabM has joined #yosys
FabM has joined #yosys
FabM has quit [Changing host]
<povik>
you mean because of the 3 of the last 4 testcases?
<povik>
there are other explanations, toymap and abc might not be working on exactly the same aig
<povik>
also there's an edge case where toymap needs to connect a PO to the rest of the network with an inverter, making the depth 1 greater than what the cut mapper comes up with
<povik>
(this is a quirk of the internal representation for now)
<povik>
that can't explain random_control/priority.aig
<povik>
i think i should do proper hashing of the inputs in a cut, instead of adding the pointers :p
<lofty>
povik: I doubt the problem is that you're working on different AIG; I've been frustrated by this issue before and the problem really was a lack of cut diversity
<povik>
ok, the improper cut hashing is what i suspect first
<lofty>
But it's easy enough to test if the problem is that it's working on wrong aig
<lofty>
The input and output netlists must be equivalent, so you can so `equiv_opt toymap` or whatever
<povik>
yeah, that passes last time i checked
<povik>
but there's no guarantee `abc -g aig` gives the same graph as abc uses for lut mapping
<lofty>
whitequark[cis]: beginning to wonder if that command should be renamed `equiv_pass` instead
<lofty>
Or something
<lofty>
povik: Yosys can read aiger files
<lofty>
So use them directly and operate directly on that
<lofty>
I'm pretty sure that the EPFL benchmarks have already been optimised enough that the ABC opts don't do anything
<lofty>
With the point of there being no low hanging fruit
<povik>
not true actually
<povik>
%fraig -x does tremendous cutting down of div.aig
<povik>
and that's one of the few i looked into
<povik>
err, &fraig -x
<lofty>
Okay, but the reference numbers have *no* optimisation
<lofty>
Those are what you should compare against, IMO
<lofty>
Otherwise you're making things more difficult for yourself
<povik>
i have no issue with that
<povik>
i'm interested in implementing some degree of aig preprocessing into toymap
<lofty>
Like, maybe ABC is discovering structural choices while optimising; those can't cross the ABC/Yosys border
<lofty>
A lot of AIG preprocessing algorithms start with the netlist mapped into cuts anyway
<povik>
09:20 < lofty> Like, maybe ABC is discovering structural choices while optimising; those can't cross the ABC/Yosys border
<povik>
one think i want to check is whether abc uses *any* structural choices anywhere in the epfl benchmark
<povik>
i find out what i need to look for in the `if -v` output
<povik>
s/i find out/i found out/
<lofty>
I tend to use &if over if simply because I'm a snob /j
<povik>
so far it seems more like a legend of "abc does structural choices! you can't match that" instead of something that actually makes a difference
<povik>
but maybe i will be proven wrong
<lofty>
What optimisation passes are you using?
<povik>
the default yosys script
<lofty>
`abc` or `abc9`?
<povik>
the blank variety
<povik>
err, by that i mean `abc`
<lofty>
Hmm. There *are* calls to dc2 and dch -f
<lofty>
So there *should* be choices generated
<povik>
i will let you know what i find out
<lofty>
I will be curious to see how you might represent choices, since it's something I've discussed with the others in the past