Hi <@U016EM8L91B> , I am able to pass Magic DRC an...
# magic
r
Hi @Tim Edwards , I am able to pass Magic DRC and Klayout FEOL, but now BEOL has some issues. One in particular is the mcon dimensions. In Magic, this shape is a really tall rectangle of mcon for the guard ring. When write to gds, the long rectangle is split into small rectangles of width 0.175um by 0.17um. I tried
cif see CONT
in Magic to see how the mcon squares would be cut, but in Magic, the contacts are all square with 0.17um by 0.17um. How could I fix this step as the wrapper gds that Klayout is checking has 0.175um by 0.17um mcons? Thanks
The ct.2 error is similar: it says that the minimum separation for mcon should be 0.19um, but I just measured and it is 0.18um.
@Can Wang
👀 1
t
I don't get that at all. It does sound like a rounding error, although how you get from something on a 10nm multiple onto a 5nm multiple by rounding is puzzling. Try using magic with
-T $PDK_ROOT/sky130A/libs.tech/magic/sky130A-GDS.tech
, which will read in the GDS mask layers (almost) verbatim, and then you can look at what magic thinks the size of the contact cuts are when it reads it, to get a 2nd opinion. That will pin down whether the positions get misaligned when writing in magic or when reading in klayout. One way you might get that effect is to have two contact stripes not quite overlaid exactly, but it should be apparent in klayout that you have two contact cuts drawn over each other and offset by 0.005um, but that should be flagged by magic as a DRC error, and in the screenshot it doesn't look like that's the situation.
r
I read the generated gds back into magic with sky130A-GDS.tech, and this looks correct.
t
Then it must have something to do with klayout. Klayout reads GDS pretty much verbatim, so the likeliest candidate would be a mismatch in GDS database units somewhere. Does klayout have some GDS input option for setting its own database units or minimum grid?
r
Wait, it seems only some mcon have this problem, this indeed looks like overlapping mcons. I might have applied mcon layer multiple times over different hierarchies... I'll fix this and try again.
Ok, removed the overlapping mcon and BEOL passed! Thanks! Never would have thought of this on my own.
t
The cut-placing algorithm in magic is supposed to make all cuts symmetric along the length of the drawn contact area, so that you are supposed to be able to overlay two contacts of exactly the same size without worrying about overlapping offset contact cuts---But I see now that if a contact area is an odd number of manufacturing grid units long, then the cuts by definition can't be exactly centered, and exactly-overlapping contact areas may not have exactly the same arrangement of cuts; they could be offset by one manufacturing grid distance (0.005um in this case). So I need to rework the "exact overlap" rule to account for these specific arrangements, because otherwise magic won't flag that as an error, which is what happened in your case.