*** tpb <[email protected]> has joined #yosys | 00:00 | |
*** lumo_e <[email protected]> has quit IRC (Ping timeout: 245 seconds) | 00:07 | |
*** lexano <[email protected]> has quit IRC (Ping timeout: 260 seconds) | 00:48 | |
*** FabM <[email protected]> has joined #yosys | 06:15 | |
*** strobo <[email protected]> has quit IRC (Read error: Connection reset by peer) | 07:37 | |
*** strobo <[email protected]> has joined #yosys | 07:43 | |
*** notgull <notgull!~notgull@2600:1f14:8f4:3100:e2a2:c920:847d:d23> has quit IRC (Ping timeout: 260 seconds) | 09:56 | |
*** notgull <notgull!~notgull@2600:1f14:8f4:3100:e2a2:c920:847d:d23> has joined #yosys | 10:01 | |
*** nak <nak!~nak@yosys/nak> has quit IRC (Ping timeout: 255 seconds) | 10:43 | |
*** mwk_ is now known as mwk | 11:13 | |
povik | re: do abc choices improve synthesis | 11:39 |
---|---|---|
povik | on the epfl benchmarks the answer appears to be no, they make it worse on average | 11:40 |
povik | at least if we go by the simple lut area/depth metrics | 11:40 |
povik | https://gist.github.com/povik/d06279abeb9616bcebb09bc9d11822e8 | 11:40 |
povik | partly it's because with choices abc doesn't do what it calls "best cut extension", what would be the "E:" pass in the verbose output | 11:41 |
povik | if i disable that on the choiceless mapping, the gap closes somewhat, at least where i tried that | 11:42 |
povik | lofty: where toymap doesn't match epfl reference results by depth, i can't reproduce that locally with abc | 12:02 |
povik | e.g. for the 'lookahead xy router', i get depth 11 with plain toymap and locally running abc's `if -K 6` after reading in the aiger | 12:03 |
povik | but the epfl reference has 7 for depth | 12:03 |
lofty | povik: here's the thing: choices should never make a solution worse >.> | 12:04 |
povik | of course in principle, but the presence of choices disables other things in abc making the result worse, it seems | 12:05 |
povik | or not even in principle if choices make heuristics take unlucky decisions | 12:05 |
povik | i'm interested in the practical here... | 12:06 |
lofty | povik: oh; run `if -K 6` *twice* to get 7 levels | 12:07 |
povik | huh, how does that make a difference? | 12:07 |
povik | reproduced here | 12:07 |
povik | > The network was strashed and balanced before FPGA mapping. | 12:07 |
povik | ah, here's my answer | 12:07 |
povik | that shows up only if i run it twice | 12:07 |
lofty | It's to do with the balancing, I think | 12:07 |
povik | yeah, that would make perfect sense | 12:08 |
povik | i suspected as much because i saw that message before | 12:08 |
povik | but i don't understand the triggers of the balancing pass | 12:08 |
povik | since it doesn't run with the first `if` invocation... | 12:09 |
lofty | I think based on the "strashed" part of it: when it has a network made of LUTs, it first turns that back into an AIG through strashing | 12:10 |
lofty | and then performs...SOP balancing, I guess? | 12:11 |
povik | Abc_NtkBalance | 12:11 |
povik | is what it is | 12:11 |
povik | `balance; if -K 6` reproduces 7 too | 12:13 |
lofty | the benchmark numbers they have are pretty crazy in the best results list | 12:14 |
lofty | povik: if I may ask, what's your methodology for comparing with and without choices? | 12:16 |
povik | it's in the gist | 12:16 |
povik | `write_aiger meh.aig; read_aiger meh.aig;` | 12:16 |
povik | is how i drop the choices | 12:16 |
povik | and then in the `if` output | 12:16 |
povik | > Node = 1019. Ch = 0. Total mem = 0.19 MB. Peak cut mem = 0.00 MB. | 12:16 |
povik | Ch=0 confirms they were lost | 12:17 |
lofty | povik: okay, I tried that, however there's something which bothers me | 12:19 |
povik | do tell | 12:19 |
lofty | compare the output of the two scripts: | 12:20 |
lofty | - read router.aig; dch; if -K 6 -v | 12:20 |
lofty | - read router.aig; dch; write_aiger meh.aig; read_aiger meh.aig; if -K 6 -v | 12:20 |
povik | what should i be looking for? | 12:21 |
lofty | The first is PPPFAA; the second is PPPEFEAEAE | 12:21 |
povik | yeah, hence my earlier comment | 12:21 |
povik | 13:41 < povik> partly it's because with choices abc doesn't do what it calls "best cut extension", what would be the "E:" pass in the verbose output | 12:21 |
lofty | Hmmm | 12:22 |
povik | you can disable that with -q i think? | 12:22 |
povik | no, something else | 12:22 |
povik | -r | 12:22 |
povik | with -r choiceless still comes out on top | 12:23 |
lofty | It never ceases to amuse me how the solution to "ABC performs badly" is "do more ABC" | 12:32 |
lofty | :p | 12:32 |
povik | is that in regards to something particular you just discovered? :D | 12:33 |
lofty | Even if you take some random paper like https://people.eecs.berkeley.edu/~alanmi/publications/2010/fpga10_speedup.pdf | 12:33 |
lofty | the baseline synth script is "run if like eight times, I dunno" | 12:33 |
lofty | :p | 12:33 |
povik | ah, so people in the know understand `if; if` is better than `if` | 12:34 |
lofty | One of the best-performing ABC scripts we have is, uh, flow3 | 12:35 |
lofty | (yosys -p "scratchpad -get abc9.script.flow3") | 12:35 |
*** FabM <FabM!~FabM@armadeus/team/FabM> has quit IRC (Ping timeout: 246 seconds) | 15:04 | |
*** lexano <[email protected]> has joined #yosys | 15:44 | |
*** myon98_ <myon98_!~myon98@user/myon98> has quit IRC (*.net *.split) | 18:01 | |
*** myon98_ <myon98_!~myon98@user/myon98> has joined #yosys | 18:03 | |
*** Adrien[m] <Adrien[m]!adrienpbma@2a01:4f8:c012:5b7:0:1:0:7e> has quit IRC (Quit: Idle timeout reached: 172800s) | 19:03 | |
*** xiretza[cis] <xiretza[cis]!xiretzaxir@2a01:4f8:c012:5b7:0:1:0:88> has quit IRC (Quit: Idle timeout reached: 172800s) | 19:18 | |
*** ec_ <ec_!~ec@gateway/tor-sasl/ec> has quit IRC (Remote host closed the connection) | 20:00 | |
*** ec_ <ec_!~ec@gateway/tor-sasl/ec> has joined #yosys | 20:00 | |
*** ec_ is now known as ec | 20:12 | |
*** cr1901_ <cr1901_!~cr1901@2601:8d:8600:226:5076:abde:6458:a5ba> has joined #yosys | 20:18 | |
*** cr1901 <cr1901!~cr1901@2601:8d:8600:226:9d3b:a53f:a76b:d5bd> has quit IRC (Ping timeout: 248 seconds) | 20:22 | |
*** Wanda[cis] <Wanda[cis]!mwkmwkmwkm@2a01:4f8:c012:5b7:0:1:0:c> has quit IRC (Quit: Idle timeout reached: 172800s) | 20:35 | |
*** cr1901_ is now known as cr1901 | 20:56 | |
*** vancz_ is now known as vancz | 21:30 | |
*** nonchip <[email protected]> has quit IRC (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) | 22:17 | |
*** nonchip <[email protected]> has joined #yosys | 22:17 | |
*** cr1901_ <cr1901_!~cr1901@2601:8d:8600:226:c051:a10a:e0b1:d641> has joined #yosys | 23:12 | |
*** cr1901 <cr1901!~cr1901@2601:8d:8600:226:5076:abde:6458:a5ba> has quit IRC (Ping timeout: 248 seconds) | 23:15 |
Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!