https://open-source-silicon.dev logo
Title
c

calvin

05/13/2023, 12:20 PM
Hi everyone, do anyone have experience in solving max fanout violation using openlane? your help is much preciousπŸ™
h

htamas

05/13/2023, 3:43 PM
You could try to decrease
SYNTH_MAX_FANOUT
in your configuration file.
πŸ‘ 1
d

dlmiles

05/13/2023, 6:03 PM
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

htamas

05/13/2023, 6:47 PM
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

calvin

05/14/2023, 6:27 AM
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

dlmiles

05/14/2023, 10:11 AM
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

calvin

05/14/2023, 10:17 AM
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

Vijayan Krishnan

05/15/2023, 4:57 AM
Check the resizer.log and if fanout number is high, create an issue_reproducible and file a github issue
πŸ‘ 1
c

calvin

05/15/2023, 3:18 PM
thanks from helping i will put on discussion on this matter on github
πŸ‘ 1