Updated the sky130 Makefile to take advantage of the "gds unique"
option just added to magic version 8.2.60; this prevents issues with
the SRAM macro installation by preventing duplicate cell names, since
many of the cell names are reused among all the macros.
diff --git a/common/foundry_install.py b/common/foundry_install.py
index 7c38dae..f44ba3a 100755
--- a/common/foundry_install.py
+++ b/common/foundry_install.py
@@ -2027,6 +2027,11 @@
print('gds rescale false', file=ofile)
print('tech unlock *', file=ofile)
+ # Add custom Tcl script lines before "gds read".
+ if tclscript:
+ for line in tcllines:
+ print(line, file=ofile)
+
if not os.path.isfile(allgdslibname):
for gdsfile in glist:
print('gds read ' + gdsfile, file=ofile)
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 5afc129..afbfe8d 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -802,11 +802,12 @@
${STAGING_PATH}/${SKY130A}/libs.ref/sky130_ml_xx_hd/scripts
sram-a:
- # Install SRAM library.
+ # Install SRAM library. NOTE: SRAM macros share some of the same
+ # cell names, so use special option script gds_import_sram.tcl
${STAGE} -source ${SRAM_PATH}/.. -target ${STAGING_PATH}/${SKY130A} \
-lef %l/*/*.lef \
-lib %l/*/*.lib \
- -gds %l/*/*.gds options=custom/scripts/gds_import_setup.tcl \
+ -gds %l/*/*.gds options=custom/scripts/gds_import_sram.tcl \
-spice %l/*/sky130_sram_1kbyte_1rw1r_32x256_8.lvs.sp \
rename=sky130_sram_1kbyte_1rw1r_32x256_8.spice \
-spice %l/*/sky130_sram_2kbyte_1rw1r_32x512_8.lvs.sp \
diff --git a/sky130/custom/scripts/gds_import_sram.tcl b/sky130/custom/scripts/gds_import_sram.tcl
new file mode 100644
index 0000000..c84332f
--- /dev/null
+++ b/sky130/custom/scripts/gds_import_sram.tcl
@@ -0,0 +1,6 @@
+# Set the GDS input style to sky130(vendor). This treats labels on the
+# TXT purpose (5) as pins, which is unfortunately done in a lot of the
+# vendor GDS files.
+cif istyle sky130(vendor)
+# Ensure unique cell names when reading multiple GDS files.
+calma unique on