Hi, we have npc violations in klayout DRC while ou...
# klayout
j
Hi, we have npc violations in klayout DRC while our magic DRC is clean. Can someone please explain what is
npc.2
?
m
Looks like npc (nitride poly cut) spacing rule. Can you show just these layers
npc 95/20
,
poly 66/20
,
licon1 66/44
? There may be a corner case where standard cell placement causes an error. In magic, it looks like npc is a generated layer and does not have a drc check in the normal rules. #shuttle-precheck @Tim Edwards This may be way off base, but AFAICT, the pre-check uses the normal tech file for DRC which doesn't appear to have a NPC check. From
mpw_precheck/checks/drc_checks/magic/magic_gds_drc_check.py
Copy code
magicrc_file_path = parent_directory.parent.parent / 'tech-files' / 'sky130A.magicrc'
From
mpw_precheck/checks/tech-files/sky130A.magicrc
Copy code
tech load $PDKPATH/libs.tech/magic/sky130A.tech
There is another tech file in the pdk,
sky130A-GDS.tech
, that does have an NPC check. Should this be the tech file used with pre-check?
j
Thanks, @Mitch Bailey. It looks like the following with just those 3 layers.
m
Looks like a "lucky" corner case due to cell placement. I think you could add NPC to fill the space (being careful of minimum width), or in this case, swap the
conb
cell with the
fill
cell to the left and adjust the wiring.
j
How can you tell which is the
conb
cell and which is the
fill
cell? Would this be a manual swap I do in Innovus?
m
Not familiar with innovus. I was thinking magic or klayout. Your original post had the standard cells. You can somewhat tell what the cells are by the poly.
t
This looks like standard cells that were placed without filler cells between them---those can and will cause all sorts of errors. The standard cells were not designed to have gaps. The NPC layer stretches across the width of the standard cell so that it (also NSDM and PSDM, done the same way) makes a continuous unbroken row across the entire digital cell. Magic auto-corrects this kind of error in analog layout, but where it is using standard cells, it does not see all the layers that it would normally auto-generate itself. That said, the error above looks strange because as far as I know, all standard cells are designed with a single line of NPC in the middle. What cell is it that has, apparently, poly contacts on both the top and bottom of the cell?
m
@Tim Edwards The fill cells are there, it's just only the poly is displayed (see the first screen shot). The npc space error occurs when the
conb
cell is placed next to the AND? cell.
t
@Mitch Bailey: My mistake(s); I really thought that the fill cell has a strip of NPC across it to maintain continuity across a digital design. But I looked at it, and nope, it doesn't. And yes, the conb cell has poly contacts top and bottom and has a 2nd, unconnected area of NPC. The cell on the right is not an
and2_1
. I'm trying to figure out what it is. I'm curious if there is really a standard cell combination that violates DRC rules when abutted as designed. If so, the offending cell might be able to be redesigned, or just added to the "don't use" list (which is already too long, in my opinion).
@Mitch Bailey, @Jake Ke: The gate on the right is
and2_0
(good eye, Mitch!). The NPC on pin
A
stretches much too far, all the way to the cell border, which must be a design mistake. I will have to add that to the list of cells that I have layout fixes for, and get a repaired version into open_pdks. Meanwhile, you can make a quick fix by replacing that one cell with an
and2_1
, which is the same size but does not have the NPC layer issue.
👍 2