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