Open Ravenslofty opened 4 years ago
From previous experience, performance on iCE40 was somewhat sensitive to "wire delay". It is quite possible that this could be fuzzed to find a value that improves QoR.
Thanks for keeping at this @ZirconiumX. Can we post the testcase we were investigating together? I have some commentary I'd like to share about that particular case.
Sure, it's only picorv32_large.v. Nothing secret about it.
On Fri, 20 Mar 2020, 22:35 Eddie Hung, notifications@github.com wrote:
Thanks for keeping at this @ZirconiumX https://github.com/ZirconiumX. Can we post the testcase we were investigating together? I have some commentary I'd like to share about that particular case.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/YosysHQ/yosys/issues/1792#issuecomment-601939143, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALPDWYKJBFJAYDIJPAGMT3RIPVTDANCNFSM4LQTUQLA .
For the record I should mention that I have a statistical comparison tester for this, but I feel it needs a bunch of improvement...
@ZirconiumX and I looked at this a while back. What I found was that from Yosys' (and ABC9's) point of view, the critical-path delay (logic only, assuming net delays are zero) of the circuit (as computed by #1732) were the same:
Done with 3e46faa58:
synth_ice40 -top top_large
on picorv32's synth_area_top.v
; critical-path delay 8794 pssynth_ice40 -top top_large -abc9
on picorv32's synth_area_top.v
; critical-path delay 8794 ps
However, @ZirconiumX found that the ABC9 result here has a consistently worse post P+R timing, and to this day I don't think we have a good reason why.
From Yosys' point of view, I'm going to posit that Yosys+ABC9 is doing everything right in that it is optimising for this single long carry chain that is the critical path across both solutions (even if ABC doesn't really know it), and is free to implement non-critical logic however it wishes as long as it doesn't increase this critical delay....
I think if we had a way of diff
ing two designs, that might be a helpful tool to have.
This has been an issue I've discussed with @eddiehung for a while, but I want to file it publicly so people can submit testcases for us to work through.
Essentially, the problem is that ABC9 - which does perform much better for ECP5 - performs notably worse for iCE40, producing larger solutions with lower maximum frequency.
What would be nice would be if people could submit testbenches, along with the Yosys version they used for comparison,
stat
output and if willing, put the results of 50nextpnr-ice40 --randomize-seed
runs.