Hi <@U016EM8L91B>, I am trying to find the GDS layer number and descriptions for high voltage transi...
c
Hi @Tim Edwards, I am trying to find the GDS layer number and descriptions for high voltage transistors (
sky130_fd_pr__nfet_g5v0d10v5
and
sky130_fd_pr__pfet_g5v0d10v5
). Through the
sky130A.tcl
file, I found their layers. Through the spreadsheet provided here (https://docs.google.com/spreadsheets/d/1oL6ldkQdLu-4FEQE0lX6BcgbqzYfNnd1XA8vERe0vpE/edit#gid=459375686) I found some layers corresponding GDS layer info. However, I am missing some other layers, such as
mvndc
,
mvpsd
, and
mvpsc
(just name a few), and I am not sure where to find their corresponding design rulesets. Any idea? Thanks.
m
@Chris the magic layer to gds layer translation is not straight-forward. The translation is encoded in the
$PDK_ROOT/sky130x/libs.tech/magic/sky130x.tech
file. See the
cifout
section. The easiest thing to do might be to display the gds layers (temporarily) in magic. Use
cif see <gds_layer>
.
cif see
by itself gives you a list of valid layers, I think. Use
feedback clear
to unsee the layers.
t
@Chris: The first tab of the spreadsheet you cited gives some of the magic-to-GDS layer mappings, although not a full set. It is probably worth making the effort to add another page to that document with a complete set of layer names and aliases in magic, and which GDS layers they correspond to. It's normal for a foundry to provide documentation of logic tables for derived layers, so I should do the same.
c
@Mitch Bailey @Tim Edwards Thanks for the info! While I am looking at the
cifoutput
section, I am under the impression that, in Magic there are multiple layers that are actually corresponding to the same GDS layer. For instance, I see the
DIFF
layer in GDS:
Copy code
#----------------------------------------------------------------
# DIFF
#----------------------------------------------------------------

 layer DIFF 	allnactivenontap,allpactivenontap,allactiveres
 	calma 	65 20
Which is matching to
allnactivenontap
,
allpactivenontap
, and
allactiveres
, and I understand they are just the aliases to some other Magic layers. For example,
allnactivenontap
, is corresponding to all the following layers:
Copy code
allnactivenontap *ndiff,*ndiode,*nndiode,*mvndiff,*mvndiode,*ndiodelvt,allnfets
My question is, how do you differentiate different layers in Magic if they are matching to the same GDS layer (such as both
ndiff
and
mvndiff
are
DIFF
in GDS. Also, I am wondering what is that
*
doing here. For example,
*mvndiff
. Thanks!
m
@Chris the
cifin
section of the technology file contains the rules for “mapping” the gds layers to magic layers.
t
@Chris: These are fairly standard definitions that have been in magic techfiles since the 1980s and work well with magic's database format. The most common derived layers are "ndiff", "pdiff", "nsc", and "psc"---These correspond to multiple GDS layers, as you noted, but you need to look through the whole cifoutput section to determine the combinations (if I don't provide you with a spreadsheet like I mentioned above would be a good idea). ndiff = DIFF & NSDM & !NWELL pdiff = DIFF & PSDM & NWELL nsd = DIFF & NSDM & NWELL psd = DIFF & PSDM & !NWELL
The
mv
in front of layers are equivalent derived layers as the above but including "& NVI" (thick oxide mask) for each one. The
*
before a layer in the magic tech file is a shorthand for the layer and all contact types that include the layer (because contacts are also a kind of derived layer).
c
Thanks, @Tim Edwards and @Mitch Bailey, they are clear to me for now! That's a lot of work to put together all this info 🙂