https://open-source-silicon.dev logo
m

Matt Venn

07/23/2020, 3:13 PM
ok, next step - try to create a new design
I created the design with this: ./flow.tcl -design inverter -init_design_config
the design is in src/inverter.v
image.png
and then ./flow.tcl -design inverter fails with this
image.png
a

Ahmed Ghazy

07/23/2020, 3:36 PM
This is interesting; thanks for raising this. The thing is that the design is very tiny (2 cells). So with a high core utilization (see the FP_CORE_UTIL setting here), you get a very tiny layout, which is smaller than the default pitch of the power grid. You can control both the utilization and the PDN stripe pitches using some configurations variables. I suggest setting the utilization to a low value to get a larger layout. For example, try appending the following into your
designs/inverter/config.tcl
:
Copy code
set ::env(FP_CORE_UTIL) 10; # 10 % utilization
set ::env(FP_PDN_VOFFSET) 4; # in microns
set ::env(FP_PDN_VPITCH) 15
set ::env(FP_PDN_HOFFSET) 4
set ::env(FP_PDN_HPITCH) 15
This reduces the core utilization down to 10% and the PDN vertical and horizontal stripe pitches down to 15um.
m

Matt Venn

07/23/2020, 4:05 PM
thanks
I tried this and quit it after 700 iterations
I'm now trying with vpitch and hpitch reduced to 10
when watching those numbers, is there anything to look for in terms of convergence?
I had this exact issue with qflow btw. I had to tweak the power distribution settings to get it to route
a

Ahmed Ghazy

07/23/2020, 4:27 PM
Adding the following configuration should help it converge in cases where the design is very tiny. This increases the density, bringing the cells closer to each other.
Copy code
set ::env(PL_TARGET_DENSITY) 0.9
Very tiny designs can be a bit tricky. Things applied by default like diode insertion, clock tree synthesis, etc. may not be relevant in many cases.
when watching those numbers, is there anything to look for in terms of convergence?
The overflow (OVFL) is what the global placer is trying to get down, so that's what you'd be looking for.
m

Matt Venn

07/24/2020, 8:41 AM
changing the target density worked, thanks!
image.png
a

Ahmed Ghazy

07/24/2020, 11:36 AM
@Matt Venn: Great! Do you mind if we include this example as one of the test designs?
m

Matt Venn

07/24/2020, 11:37 AM
no problem at all
a

Ahmed Ghazy

07/24/2020, 11:39 AM
thanks!
m

Matt Venn

07/24/2020, 11:42 AM
I was actually trying to do just an inverter, (without flop), so I could compare it to this: https://twitter.com/matthewvenn/status/1274732696942542851/photo/2
but couldn't get openlane to work without a clock
a

Ahmed Ghazy

07/24/2020, 11:55 AM
Ah, I see. You can disable clock tree synthesis by setting
CLOCK_TREE_SYNTH
to 0.
2 Views