Hi everyone, do anyone have experience in solving ...
# general
c
Hi everyone, do anyone have experience in solving max fanout violation using openlane? your help is much precious๐Ÿ™
h
You could try to decrease
SYNTH_MAX_FANOUT
in your configuration file.
๐Ÿ‘ 1
d
How does a decrease of ``SYNTH_MAX_FANOUT`` have a positive effect on a 49>10 scenario ? I have a few fanout=13 limit=10 to resolve myself somewhere. Doesn't the flow automatically insert buffers to achieve fanout ? What if I create that buf/clkbuf tree manually (that was to be my next experiment). Top google hit on this configuration item indicates cranking it all the way up to 15 has previously caused crash or halt with flow.
๐Ÿ‘ 2
h
Yosys calls abc for tech mapping in the synthesis phase, which uses some combination of buffering, resizing and duplication to keep fanout under
SYNTH_MAX_FANOUT
if
SYNTH_BUFFERING
is enabled (which is the default). The fanout is modified by later phases in the flow, so it won't necessarily stay under this value, but the flag still provides some control over it.
๐Ÿ‘ 1
If you are curious about the details,
SYNTH_MAX_FANOUT
is used in openlane's
scripts/yosys/synth.tcl
to set the
-N
option for abc's
buffer
command, which is in turn implemented in
Scl_CommandBuffer()
in yosys'
abc/src/map/scl/scl.c
which calls the
Abc_SclBufSize()
function in
abc/src/map/scl/sclBufSize.c
where the fanout value is used as
p->pPars->nDegree
.
๐Ÿ‘ 1
By the way, you can most likely ignore the warning about a fanout of 13. I'm not sure about the 49 though, it feels high so if it were my design I would try to tweak the config to push it down, but some more knowledgeable people might tell that you that it's safe as long as it doesn't cause other errors down the line.
๐Ÿ‘ 2
c
hi htamas, this is the sta i get from routing .odb file, is that also can using yosys to doing buffer insert inside the .odb or openroad?
d
I am understanding this to mean,
SYNTH_MAX_FANOUT
is being used by an early flow step, but later steps will keep on rearranging things without regard to this, so the warning at the end it to show of how out of hand those later stages needed to insert elements compared to targets
๐Ÿ‘ 2
c
hi Darryl Miles, ya i understand regarding this, is there anyway for solving the max fanout on the later stage๏ผŸso far i got to know in openroad with cmd "repair_design -max" to limit the wire length and insert buffer, but in here, timing violation will be a great number.
v
Check the resizer.log and if fanout number is high, create an issue_reproducible and file a github issue
๐Ÿ‘ 1
c
thanks from helping i will put on discussion on this matter on github
๐Ÿ‘ 1