Hello <@U017UPJEGKZ>, We ran precheck over your NM...
# sky130
a
Hello @Weston Braun, We ran precheck over your NMOS waffle from Open-PMIC and got several DRC errors for rule hvntm.1 (in Klayout, not in Magic). @Tim Edwards do you have any ideas? Was this rule updated since the tapeout of Open-PMIC? There are no subcells.
t
I'd have to look closely at both the layout and the rule implementation.
a
By rule implementation you mean the .drc file? I took it from mpw_precheck. (First I ran precheck over a parent cell and noticed that the errors where within this cell, then I ran the FEOL check on KLaout for the cell alone).
w
What DRC error is that? Minimum diffusion width or something?
a
The hvntm layer is described as "tip implants for the HV NMOS".
t
It is a real error, and magic doesn't catch it. It occurs around the perimeter of the waffle because the perimeter doesn't have diffusion contacts, and the diffusion is narrow and generates a narrow HVNTM layer. I think that this is one of those cases that needs to be solved with a "mask hint" to draw a perimeter layer of HVNTM and HVI around the perimeter of the device to satisfy the layer width rule For the layout above, it should be sufficient to do the following in magic while editing the layout of `nmos_waffle_36x36`:
Copy code
property MASKHINTS_HVNTM "43 39417 39557 39557 43 43 39557 183 43 183 183 39417 39419 183 39557 39417"
This adds four rectangles of HVNTM that cover the perimeter; the inner edge of each rectangle coincides with where magic draws the HVNTM layer, but extends outward by 0.7um to ensure the HVNTM minimum width rule. @Weston Braun: How easy/hard would it be to extend the waffle pattern generator to add the
property MASKHINTS_HVNTM
string to the cell? I think it should be pretty easy; if you know the coordinates of the outer dummy poly ring, the HVNTM just needs to be overlapping the inner edge of that poly ring by 0.035um; from that you should be able to place the box and use the
box values
command to get the coordinate string that needs to be given to the
property
command.
a
Thanks @Tim Edwards, it works. But there seems to be a typo in the last rectangle. I had to change it to
Copy code
property MASKHINTS_HVNTM "43 39417 39557 39557 43 43 39557 183 43 183 183 39417 39417 183 39557 39417"
t
Not really a typo; I just measured wrong and didn't notice that it didn't match the other coordinates. Thanks for catching it.
a
Hello @Tim Edwards, did you change something about the 'i' measurement unit? I exported this layout (from last year) into GDS and the MASKHINTS now have different size and position.
t
i
is an internal unit and might change if the database units are changed. If you always start with the default sky130
sky130A.magicrc
file, then the internal units are scaled to the minimum manufacturing grid of 5nm and should always be the same.
a
Then it is a problem from our container. Thank you. @Mario Romero fyi