<@U016EM8L91B> Hi Tim. We have a few questions on ...
# magic
k
@User Hi Tim. We have a few questions on magic. 1. Db unit in GDSII issue. Previously we found the Magic LVS extracts the layout with magnitude of order differences in length units. We are guessing it is because Magic does not correctly honor the DBU configuration in the GDSII file.  2. The parallel fingers issue. As we observed last week, Magic seems failed to recognize the fingers of the same transistors and extract them as parallel single-finger transistors. Is it the expected behavior of the tool? 3. Magic device generation does not pass DRC. Specifically, sky130_fd_pr__res_generic_po, length 1.65um, width 0.33um. All other attributes are default. We constructed a simple case of a circuit with only one NMOS using Magic. Then we write the GDS and extract a netlist from the GDS using Magic. The commands we are using are
crashbackups stop
drc off
gds readonly true
gds flatten true
gds rescale false
tech unlock *
cif istyle sky130(vendor)
gds read $1
load ${1%.gds} -dereference
select top cell
extract do local
extract all
ext2spice lvs
ext2spice -o ./gds-extracted-${1%.gds}.spice
EOF
We have the resulting extracted netlist and GDS for the reference. The Magic version we are using is 8.3.262. @User @User @User @User @User
t
Length units are strange because magic outputs in microns using the "u" suffix, assuming that netlists are in SI units, but the SkyWater SPICE models (unwisely) include a built-in 1E-6 scalefactor, such that all netlist units are in units of microns, not SI units. The combination of these two means that magic's extracted output has things like "W=1000000u" which is equivalent to "W=1" and matches the SkyWater built-in scalefactor in the device models.
Magic was written in the 1980s before there were BSIM models that differentiate between multiple devices and fingered devices. So magic does not extract fingered devices, a lack of functionality that I need to address.
In generating a default res_generic_po device, the only DRC errors I see are minimum area of metal1; This is intentional, as the device will be connected to metal1 in the cell hierarchy above, and the DRC error will be resolved.
k
Thanks for the information! Do you have any suggestion on working around the unit issue?
t
Why are the units an issue?
k
We are trying to do LVS with the extracted layouts. The unit issue causes mismatches from the pre-layout netlists.
t
Maybe I didn't explain properly. . . the units that magic produces are correct; the notation just looks strange. If your pre-layout netlists use SI units then they would not be compatible with the simulation models.
k
I see. Then it shall be fine. Thanks!
m
@User Hi Tim. I might be more familiar with the DRC issue. I am using Klayout DRC engine with the scripts: https://github.com/mabrains/sky130_klayout_pdk. I am receiving the following DRC error with the default poly-res device generation: licon.1b/c : minimum/maximum width/length of licon inside poly resistor : 2.0/0.19um. It might be because either a mismatch in the DRC engine or an issue with device generation. @User
t
@User: You should be using the klayout decks that are distributed with open_pdks. That particular error was found and fixed about half a year ago.
m
@User Okay Thanks. Can you point me to the LVS decks?
t
@User: If you install open_pdks in the standard place, they would be found in
/usr/local/share/pdk/sky130A/libs.tech/klayout/sky130.lydrc
. Note that the error you mentioned was in the DRC deck, not an LVS deck.