It might help a tiny bit if your design is just on...
# tapeout-job
h
It might help a tiny bit if your design is just on the edge in terms of metal density, but decap_8 is still pretty dense. The filler_placement routine will try to fill the empty spaces in your design with the largest filler cell that fits (combined from DECAP_CELL and FILL_CELL). If you remove decap_12 from the list, most of your area will be filled with decap_8, so your only advantage will come from the small areas where adjacent decap cells meet which is not covered by metal. If your li1_ca_density in the tapout was, say, 0.39 instead of the 0.4 required, it may help. Otherwise the improvement won't be noticable.
m
@User It is 0.391376โ€ฆ Is it going to help?
How about removing DECAP8? ๐Ÿ˜†
h
I'd guess it won't be enough, but you can try it. (I know it takes time and there is 21 hours to the deadline.)
If you remove decap_8, you might also want to remove fill_8 from FILL_CELL. Otherwise fill_8 will be the widest filler cell available.
a
I am trying to use
sky130_fd_sc_hd__decap_12
instead of s`ky130_ef_sc_hd__decap_12` and keep the other cells as @User told. Let's see what happens
m
@User Is it going to help if I remove DECAP8?
@User I think
sky130_fd_sc_hd__decap_12
is the one which you should NOT use.
a
why?
h
If you remove decap_8, most of your design will be filled with fill_8 which will avoid the li1_ca_density problem, but you'll get a different one with fom_pattern_density being too low. If you remove both decap_8 and fill_8 (from FILL_CELL), it's again a slight improvement from just removing decap_12, but it might not be enough. Also your design will be filled with more smaller cells so everything will take longer.
m
@User OMG!
Any suggestions? ๐Ÿ˜ž
@User I think itโ€™s the standard cell which caused all of these prbs!
@User How about all DECAP3 and FILL3? I know it will took a loooot of time!
h
The real solution would be to use
sky130_ef_sc_hd__decap_12
, but there seems to be some problem with that cell which falls outside my area of expertise. It's something that @User could help with if it wasn't the middle of the night in PST.
m
@User Tim is working on the issue but it wont be ready till the deadline! It needs a kinda PDK patch.
h
@User I think there is no fill_3. There is decap_12, decap_8, decap_6, decap_4, decap_3 and also fill_8, fill_4, fill_2 & fill_1. Anyway, if there is a DECAP_CELL with the same width as a FILL_CELL, DECAP_CELL takes priority as it appears earlier in the filler_placement argument list. But you can try to set DECAP_CELL to "sky130_fd_sc_hd__decap_3" and FILL_CELL to "sky130_fd_sc_hd__fill_1 sky130_fd_sc_hd__fill_2". It's not the real solution but it might help in the interim.
๐Ÿ‘ 1
m
@User Thanks a lot. Really appreciate it.
a
@User Thanks a lot! We will also try it
h
I also have an experimental patch that fills the empty space with a mix of decap & fill cells. If you are comfortable building your own openroad & openlane, you can find it here: https://github.com/htfab/treepram/tree/main/patch. Then you can set DECAP_PERCENT in your config.tcl to something around 75. It's tricky because a too high value will cause a li1_ca_density error and a too low value will cause a fom_pattern_density error. If your project builds & checks fast enough to experiment, you could try finding the sweet spot.
๐Ÿ‘ 1
m
@User Is there a way to find out the density without going through the tapeout phase?
a
@User how can I install it?
h
@User I don't have a really good way to do that, so if you learn about it please also tell me. My heuristic so far is to run a local precheck (or just the
klayout_met_min_ca_density
step) and look for
li1_ca_density
in
precheck_results/*/logs/klayout_met_min_ca_density_check.log
. Now that's the li1 complement density for just your part of the chip, not the full integrated one, so it will have a pretty different value, but as a rule of thumb, if you decrease the metal density in your part of the chip then the total density will also decrease to a smaller extent and vica versa.
โœ… 1
@User If you use docker, you'll need to rebuild the docker image as described in https://github.com/The-OpenROAD-Project/OpenLane/blob/master/docker/README.md. If you have a dockerless install, you follow the steps in https://github.com/The-OpenROAD-Project/OpenLane/blob/master/docs/source/local_installs.md. Unfortunately neither of these is easy if you haven't done it before. Considering the deadline, it would probably be easier to get someone to build & upload the docker image for you and then update
OPENLANE_IMAGE_NAME
in your project's
openlane/Makefile
. I guess there are some people here who do that routinely and have a script to build & upload a patched docker image.
๐Ÿ‘ 1