[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
https://bugs.libre-soc.org/show_bug.cgi?id=413
--- 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