<@U016EM8L91B> <@U01680FK487> I'm using netgen 1.5...
# verification-be
m
@User @User I'm using netgen 1.5.192 for device level LVS on the
chip_io
macro. I've extracted the layout; flattening all the cells with
_example_
in the name. netgen is seg-faulting. You might be able to recreate it by making the following changes to
scripts/tcl_scripts/magic.tcl
Copy code
diff --git a/scripts/tcl_commands/magic.tcl b/scripts/tcl_commands/magic.tcl
index 6a7904e..6f9ec84 100755
--- a/scripts/tcl_commands/magic.tcl
+++ b/scripts/tcl_commands/magic.tcl
@@ -151,6 +151,9 @@ proc run_magic_spice_export {args} {
        set commands \
 "
 if { \[info exist ::env(MAGIC_EXT_USE_GDS)\] && \$::env(MAGIC_EXT_USE_GDS) } {
+    cif istyle sky130(vendor)
+    gds flatglob *__example_*
+    gds flatten true
    gds read \$::env(CURRENT_GDS)
 } else {
and then in
caravel/openlane
, add the following to
chip_io/config.tcl
,
Copy code
diff --git a/openlane/chip_io/config.tcl b/openlane/chip_io/config.tcl
index 1581aa4..1bdb3c5 100755
--- a/openlane/chip_io/config.tcl
+++ b/openlane/chip_io/config.tcl
@@ -51,4 +51,9 @@ set ::env(LVS_CONNECT_BY_LABEL) 1
 
 # "There are areas of ntap and ptap and/or low voltage and high voltage that magic can't parse properly from the GDS. \
  Those aren't parts of devices, so they don't affect the extraction, but they may raise overlap errors". Tim E. 
set ::env(QUIT_ON_ILLEGAL_OVERLAPS) 0
+
+set ::env(LVS_EXTRA_STD_CELL_LIBRARY) "\
+    $::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_io/spice/sky130_fd_io.spice\
+    $::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_io/spice/sky130_ef_io.spice"
and run the following commands in docker.
Copy code
gunzip ../gds/chip_io.gz
flow.tcl -design chip_io -tag lvs -lvs -gds ../gds/chip_io.gz -net ../verilog/gl/chip_io.v
Here's the seg-fault output.
Copy code
Contents of circuit 1: Circuit: 'sky130_fd_io__gpiov2_obpredrvr'
Circuit sky130_fd_io__gpiov2_obpredrvr contains 164 device instances.
 Class: sky130_fd_io__gpiov2_octl_mux instances:  1
 Class: sky130_fd_io__gpiov2_pdpredrvr_strong_nr3 instances:  1
 Class: sky130_fd_pr__nfet_g5v0d10v5 instances: 63
 Class: sky130_fd_pr__res_generic_po instances:  1
 Class: sky130_fd_io__gpiov2_pupredrvr_strong_nd2 instances:  1
 Class: sky130_fd_pr__pfet_g5v0d10v5 instances: 61
 Class: sky130_fd_pr__res_generic_m1 instances: 36
Circuit contains 119 nets.
Contents of circuit 2: Circuit: 'sky130_fd_io__gpiov2_obpredrvr'
Circuit sky130_fd_io__gpiov2_obpredrvr contains 151 device instances.
 Class: sky130_fd_io__gpiov2_octl_mux instances:  1
 Class: sky130_fd_io__gpiov2_pdpredrvr_strong_nr3 instances:  1
 Class: sky130_fd_pr__nfet_g5v0d10v5 instances: 53
 Class: sky130_fd_io__gpiov2_pupredrvr_strong_nd2 instances:  2
 Class: sky130_fd_pr__pfet_g5v0d10v5 instances: 59
 Class: sky130_fd_pr__res_generic_m1 instances: 35
Circuit contains 116 nets.

Circuit 1 contains 164 devices, Circuit 2 contains 151 devices. *** MISMATCH ***
Circuit 1 contains 109 nets,  Circuit 2 contains 105 nets. *** MISMATCH ***


Program received signal SIGSEGV, Segmentation fault.