[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