[Libre-soc-bugs] [Bug 413] DIV "trial" blocks are too large

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Thu Jul 2 20:39:40 BST 2020


--- Comment #5 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Jacob Lifshay from comment #4)
> (In reply to Luke Kenneth Casson Leighton from comment #0)
> > the "trial" blocks used in the div pipelines create 2.1 megabyte VHDL
> > files each, during layout, and there are 270 of them.  this results
> > in a jump in the size of the BLIF file from 10 megabytes to 100 megabytes,
> > and a jump from 85,000 blocks (which coriolis2 can cope with)
> > to 500,000 (which it cannot).
> one additional way that the size might be unnecessarily large is if yosys
> for some reason doesn't do the almost-trivial constant propagation on the
> DivPipeCoreOperation, since I'm relying on that to discard the dead code for
> the sqrt/rsqrt portions of the div pipe.

inside a module that's fine.  in *between* modules it is not fine because
yosys cannot detect those cases without flattening.

so for example passing a Const as an input to a module: that's guaranteed
not to be detected.

> I didn't check if yosys discards
> that. It probably needs to be flattened for yosys to optimize properly.

which will need a customised script to do that as it will be the
only module that needs custom flattening.

these are the size of the trial blocks, now:

    876K Jul  2 19:31 trial1_311.vst

that's down from 2 megabytes (each).  the reduction has got things down
from 500,000 blocks down to 250,000 blocks which is still 2.5 times larger
than anything that anyone has done with coriolis2 before.

You are receiving this mail because:
You are on the CC list for the bug.

More information about the libre-soc-bugs mailing list