So an issue that we encounter quite often in tinyt...
# sky130
t
So an issue that we encounter quite often in tinytapeout when hardening with the
hd
library is that it fails the
npc.2
klayout FEOL precheck. After investigating a bit the cases that happens and how the various cells are laid out, I think the main culprit is actually the
conb_1
cell. To make sure cells can abut properly, the
npc
geometry of the cell must have the "central" band which is common to all cells and if it needs more geometry to contact a gate outside of that area then either that geometry needs to be more than 0.27u away from the edge, or it must extend right to the edge. This avoid forming a small gap between two abutting cells. The current geometry of
conb_1
doesn't respect this. I have written a demonstration python script using
gdspy
that corrects the
npc
geometry inside the
conb_1
cell and this has fixed the issue in the various cases we encountered ( https://pastebin.com/uQqhi3eY ). The geometry still doesn't strictly conform to the requirements above, so it's not 100% fool proof but AFAICT it's enough to fix compatibility with all the other cells. (I'll need to write a quick script to verify that though). So how would one go about getting this fixed in the PDK ? If we're following the same path as for the
decap_12
issue, I think a new
sky130_ef_hd__conb_1
should be added and then pointing yosys to use this instead of the one in the library ?
πŸ™ 2
So I just parsed all the cells in the
hd
library and AFAICT the fix I applied should be good for all possible cell combination of
conb_1
next to any other cell.
u
@Tim Edwards we discussed this a few months ago, and this seems to fix the issue well
( Note that while I have checked that the new NPC geometry does fix the issue, this integration of the fix into open_pdk is so far untested )
Mmm, I get
[IFP-0039] Liberty cell or port sky130_ef_sc_hd__conb_1/LO not found.
so obviously I missed something somewhere πŸ˜…
AFAICT it needs to be in the
.lib
but none of the other custom cells area dded in there because they are just fillers so it's not needed meaning there isn't any infra / examples on how to do that in open_pdk ...
πŸ‘‹
d
@David Lindley fyi
d
@tnt Thanks! It's now on my todo list. I have some additional filler/decap work to do, too.
d
So wait, we're dynamically replacing them in user submissions or should we fix this in the PDK?
d
Right now I plan to fix things in the submissions. It needs to be fixed in the PDK for 2411.
t
@David Lindley Will all the
decap
be gone, or just enough to pass new density ? ( like replace
decap_12
with
decap_4
and
fill_8
maybe )
d
@tnt More like 60% of the decap_12 will be swapped with a combination of fill_4 and fill_8. We have to leave the diff in there for the fom density requirements. That's what I did for the harnesses. But, I'm still working on the solution.
We will do something like you suggest though for the next shuttle.
t
πŸ‘Œ
As suggested by @Tim Edwards , fix directly against the hd cell https://github.com/efabless/skywater-pdk-libs-sky130_fd_sc_hd/pull/23
t
This patch has been applied to the sky130_fd_sc_hd repository, and I have updated open_pdks with the new commit hashes for the standard cell library (and the I/O library, for which I applied another patch to a DRC error yesterday).
πŸŽ‰ 2