Made a number of changes to the foundry_install script to allow LEF annotation to be used in conjunction with the "compile" or "compile-only" options, indicating that the LEF file sources should only be used to annotate the cells in magic, and that the LEF views generated from magic should then be used to compile a LEF library. The Makefile was modified to use this method for the sky130_fd_io library. Abstract views that had been staged in the custom area as a workaround were removed.
diff --git a/common/foundry_install.py b/common/foundry_install.py index 80e5c64..457483c 100755 --- a/common/foundry_install.py +++ b/common/foundry_install.py
@@ -658,7 +658,8 @@ for option in optionlist[:]: if option[0] == 'lef': - have_lef = True + have_lefanno = True if 'annotate' in option or 'anno' in option else False + have_lef = True if not have_lefanno else False if option[0] == 'techlef' or option[0] == 'techLEF': have_techlef = True elif option[0] == 'gds': @@ -684,6 +685,9 @@ # Diagnostic print("Install option: " + str(option[0])) + if option[0] == 'lef' and have_lefanno: + print("LEF files used for annotation only. Temporary install.") + # For ef_format: always make techlef -> techLEF and spice -> spi if ef_format: @@ -747,17 +751,6 @@ else: print('Sorting files with script ' + sortscript) - # 'anno' may be specified for LEF, in which case the LEF is used only - # to annotate GDS and is not itself installed; this allows LEF to - # be generated from Magic and avoids quirky use of obstruction layers. - have_lefanno = True if 'annotate' in option or 'anno' in option else False - if have_lefanno: - if option[0] != 'lef': - print("Warning: 'annotate' option specified outside of -lef. Ignoring.") - else: - # Mark as NOT having LEF since we want to use it only for annotation. - have_lef = False - # For each library, create the library subdirectory for library in libraries: if len(library) == 3: @@ -1058,6 +1051,8 @@ no_gds_convert = False no_lef_convert = False cdl_compile_only = False + lef_compile = False + lef_compile_only = False cdl_exclude = [] lef_exclude = [] @@ -1105,10 +1100,18 @@ lef_reflib = '/libs.priv/' # If CDL is marked 'compile-only' then CDL should only convert the - # compiled file to SPICE if conversion is needed. + # compiled file to SPICE if conversion is needed. If LEF is marked + # 'compile' or 'compile-only' in annotate mode, then create a LEF + # library from magic LEF output. + if 'compile-only' in option: if option[0] == 'cdl': cdl_compile_only = True + elif option[0] == 'lef': + lef_compile_only = True + elif 'compile' in option: + if option[0] == 'lef': + lef_compile = True # Find exclude list for any option for item in option: @@ -1137,7 +1140,6 @@ else: tcllines = list(tclscript) - if have_gds and not no_gds_convert: print("Migrating GDS files to layout.") @@ -1288,10 +1290,7 @@ else: # Use LEF files to set the port properties if have_lefanno or have_lef: - if have_lefanno: - lefdirname = 'lefanno' - else: - lefdirname = 'lef' + lefdirname = 'lef' # Find LEF file names in the source if ef_format: @@ -1303,7 +1302,20 @@ leffiles = os.listdir(lefsrclibdir) leffiles = list(item for item in leffiles if os.path.splitext(item)[1] == '.lef') - print('puts stdout "Annotating cells from LEF"', file=ofile) + if len(leffiles) > 0: + lefnames = list(os.path.split(item)[1] for item in leffiles) + notlefnames = [] + for exclude in lef_exclude: + notlefnames.extend(fnmatch.filter(lefnames, exclude)) + + # Apply exclude list + if len(notlefnames) > 0: + for file in leffiles[:]: + if os.path.split(file)[1] in notlefnames: + leffiles.remove(file) + + if len(leffiles) > 0: + print('puts stdout "Annotating cells from LEF"', file=ofile) for leffile in leffiles: print('lef read ' + lefsrclibdir + '/' + leffile, file=ofile) @@ -1333,17 +1345,17 @@ if have_lefanno: # Find LEF file names in the source if ef_format: - lefsrcdir = targetdir + lef_reflib + 'lefanno' + lefsrcdir = targetdir + lef_reflib + 'lef' lefsrclibdir = lefsrcdir + '/' + destlib else: - lefsrcdir = targetdir + lef_reflib + destlib + '/lefanno' + lefsrcdir = targetdir + lef_reflib + destlib + '/lef' lefsrclibdir = lefsrcdir leffiles = os.listdir(lefsrclibdir) leffiles = list(item for item in leffiles if os.path.splitext(item)[1] == '.lef') # Get list of abstract views to make from LEF macros for leffile in leffiles: - with open(leffile, 'r') as ifile: + with open(lefsrclibdir + '/' + leffile, 'r') as ifile: ltext = ifile.read() llines = ltext.splitlines() for lline in llines: @@ -1467,13 +1479,18 @@ # write procedure, but we still need the pin use and class # information from the LEF file, and maybe the bounding box. + + # For annotation, the LEF file output will overwrite the + # original source LEF file. + lefdest = lefsrclibdir + '/' if have_lefanno else '' + for leffile in leffiles: if have_lefanno: print('lef read ' + lefsrclibdir + '/' + leffile, file=ofile) for lefmacro in lefmacros: print('if {[cellname list exists ' + lefmacro + '] != 0} {', file=ofile) print(' load ' + lefmacro, file=ofile) - print(' lef write ' + lefmacro + ' -hide', file=ofile) + print(' lef write ' + lefdest + lefmacro + ' -hide', file=ofile) print('}', file=ofile) print('puts stdout "Done."', file=ofile) @@ -1498,63 +1515,9 @@ if mproc.returncode != 0: print('ERROR: Magic exited with status ' + str(mproc.returncode)) - if not have_lef: - print('No LEF file install; need to generate LEF.') - # Remove the lefanno/ target and its contents. - if have_lefanno: - if ef_format: - lefannosrcdir = targetdir + lef_reflib + 'lefanno' - else: - lefannosrcdir = targetdir + lef_reflib + destlib + '/lefanno' - if os.path.isdir(lefannosrcdir): - shutil.rmtree(lefannosrcdir) - - if ef_format: - destlefdir = targetdir + lef_reflib + 'lef' - destleflibdir = destlefdir + '/' + destlib - else: - destlefdir = targetdir + lef_reflib + destlib + '/lef' - destleflibdir = destlefdir - - os.makedirs(destleflibdir, exist_ok=True) - leflist = os.listdir(destlibdir) - leflist = list(item for item in leflist if os.path.splitext(item)[1] == '.lef') - - # All macros will go into one file - destleflib = destleflibdir + '/' + destlib + '.lef' - # Remove any existing library file from the target directory - if os.path.isfile(destleflib): - print('Removing existing library ' + destleflib) - os.remove(destleflib) - - first = True - with open(destleflib, 'w') as ofile: - for leffile in leflist: - # Remove any existing single file from the target directory - if os.path.isfile(destleflibdir + '/' + leffile): - print('Removing ' + destleflibdir + '/' + leffile) - os.remove(destleflibdir + '/' + leffile) - - # Append contents - sourcelef = destlibdir + '/' + leffile - with open(sourcelef, 'r') as ifile: - leflines = ifile.read().splitlines() - if not first: - # Remove header from all but the first file - leflines = leflines[8:] - else: - first = False - - for line in leflines: - print(line, file=ofile) - - # Remove file from the source directory - print('Removing source file ' + sourcelef) - os.remove(sourcelef) - - # Set have_lef now that LEF files were made, so they - # can be used to generate the maglef/ databases. - have_lef = True + # Set have_lef now that LEF files were made, so they + # can be used to generate the maglef/ databases. + have_lef = True elif not have_mag_8_2: print('The installer is not able to run magic.') @@ -1562,6 +1525,14 @@ print("Master PDK magic startup file not found. Did you install") print("PDK tech files before PDK vendor files?") + if have_lefanno: + # LEF files were used for annotation. If "compile" or "compile-only" + # was also passed as an option, then build the LEF library now from + # the LEF output from magic. + print("Compiling LEF library from magic output.") + if lef_compile or lef_compile_only: + create_lef_library(lefsrclibdir, destlib, lef_compile_only, lef_exclude) + if have_lef and not no_lef_convert: print("Migrating LEF files to layout.") if ef_format:
diff --git a/sky130/Makefile.in b/sky130/Makefile.in index 5a00f22..b7b19f9 100644 --- a/sky130/Makefile.in +++ b/sky130/Makefile.in
@@ -909,7 +909,8 @@ ${STAGE} -source ${SKYWATER_LIBS_PATH} -target ${STAGING_PATH}/${SKY130A} \ -cdl %l/latest/cells/*/*.cdl ignore=topography compile-only \ sort=custom/scripts/sort_pdkfiles.py \ - -lef %l/latest/cells/*/*.lef anno compile-only \ + -lef %l/latest/cells/*/*.lef annotate compile-only \ + exclude=*.magic.lef,sky130_ef_io.lef \ sort=custom/scripts/sort_pdkfiles.py \ -doc %l/latest/cells/*/*.pdf \ -lib %l/latest/timing/*.lib \
diff --git a/sky130/custom/scripts/inc_verilog.py b/sky130/custom/scripts/inc_verilog.py index aebce3e..e607193 100755 --- a/sky130/custom/scripts/inc_verilog.py +++ b/sky130/custom/scripts/inc_verilog.py
@@ -47,18 +47,6 @@ # NOTE: These files are assumed not to need in-line # includes, but includes of primitives need to be ignored. - # Quick hack: Remove this when the filenames are corrected - if not os.path.exists(inpath + '/' + incfilename): - print('Detected incorrect filename') - print(' Old filename was: ' + incfilename) - dlist = incfilename.split('.') - ilist = dlist[0:-3] - ilist.append(dlist[-2]) - ilist.append(dlist[-3]) - ilist.append(dlist[-1]) - print(' New filename is: ' + incfilename) - incfilename = '.'.join(ilist) - with open(inpath + '/' + incfilename, 'r') as incfile: v2text = incfile.read() v2lines = v2text.splitlines()
diff --git a/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_gpio_ovtv2.lef b/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_gpio_ovtv2.lef deleted file mode 100644 index 579dc09..0000000 --- a/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_gpio_ovtv2.lef +++ /dev/null
@@ -1,561 +0,0 @@ -MACRO sky130_fd_io__top_gpio_ovtv2 - CLASS PAD ; - FOREIGN sky130_fd_io__top_gpio_ovtv2 ; - ORIGIN 0.400 0.735 ; - SIZE 141.455 BY 201.490 ; - PIN VSSIO_Q - PORT - LAYER met5 ; - RECT 138.730 58.335 140.000 62.585 ; - END - PORT - LAYER met5 ; - RECT 0.000 58.335 1.270 62.585 ; - END - PORT - LAYER met4 ; - RECT 138.730 58.235 140.000 62.685 ; - END - PORT - LAYER met4 ; - RECT 0.000 58.235 1.270 62.685 ; - END - END VSSIO_Q - PIN VSWITCH - PORT - LAYER met5 ; - RECT 138.730 31.985 140.000 35.235 ; - END - PORT - LAYER met5 ; - RECT 0.000 31.985 1.270 35.235 ; - END - PORT - LAYER met4 ; - RECT 138.730 31.885 140.000 35.335 ; - END - PORT - LAYER met4 ; - RECT 0.000 31.885 1.270 35.335 ; - END - END VSWITCH - PIN VSSIO - PORT - LAYER met5 ; - RECT 138.730 25.935 140.000 30.385 ; - END - PORT - LAYER met5 ; - RECT 138.730 175.785 140.000 200.000 ; - END - PORT - LAYER met5 ; - RECT 0.000 25.935 1.270 30.385 ; - END - PORT - LAYER met5 ; - RECT 0.000 175.785 1.365 200.000 ; - END - PORT - LAYER met4 ; - RECT 138.730 175.785 140.000 200.000 ; - END - PORT - LAYER met4 ; - RECT 138.730 25.835 140.000 30.485 ; - END - PORT - LAYER met4 ; - RECT 0.000 175.785 1.365 200.000 ; - END - PORT - LAYER met4 ; - RECT 0.000 25.835 1.270 30.485 ; - END - END VSSIO - PIN VSSD - PORT - LAYER met5 ; - RECT 138.730 41.685 140.000 46.135 ; - END - PORT - LAYER met5 ; - RECT 0.000 41.685 1.270 46.135 ; - END - PORT - LAYER met4 ; - RECT 138.730 41.585 140.000 46.235 ; - END - PORT - LAYER met4 ; - RECT 0.000 41.585 1.270 46.235 ; - END - END VSSD - PIN VSSA - PORT - LAYER met5 ; - RECT 138.730 36.840 140.000 40.085 ; - END - PORT - LAYER met5 ; - RECT 138.730 47.735 140.000 56.735 ; - END - PORT - LAYER met5 ; - RECT 0.000 36.840 1.270 40.085 ; - END - PORT - LAYER met5 ; - RECT 0.000 47.735 2.040 56.735 ; - END - PORT - LAYER met4 ; - RECT 138.730 51.645 140.000 52.825 ; - END - PORT - LAYER met4 ; - RECT 0.000 47.735 140.000 48.065 ; - END - PORT - LAYER met4 ; - RECT 0.000 56.405 140.000 56.735 ; - END - PORT - LAYER met4 ; - RECT 138.730 36.735 140.000 40.185 ; - END - PORT - LAYER met4 ; - RECT 0.000 51.645 2.040 52.825 ; - END - PORT - LAYER met4 ; - RECT 0.000 47.735 1.270 48.065 ; - END - PORT - LAYER met4 ; - RECT 0.000 56.405 1.270 56.735 ; - END - PORT - LAYER met4 ; - RECT 0.000 36.735 1.270 40.185 ; - END - END VSSA - PIN VDDIO_Q - PORT - LAYER met5 ; - RECT 138.730 64.185 140.000 68.435 ; - END - PORT - LAYER met5 ; - RECT 0.000 64.185 1.270 68.435 ; - END - PORT - LAYER met4 ; - RECT 138.730 64.085 140.000 68.535 ; - END - PORT - LAYER met4 ; - RECT 0.000 64.085 1.270 68.535 ; - END - END VDDIO_Q - PIN VDDIO - PORT - LAYER met5 ; - RECT 138.730 70.035 140.000 94.985 ; - END - PORT - LAYER met5 ; - RECT 138.730 19.885 140.000 24.335 ; - END - PORT - LAYER met5 ; - RECT 0.000 70.035 1.270 94.985 ; - END - PORT - LAYER met5 ; - RECT 0.000 19.885 1.270 24.335 ; - END - PORT - LAYER met4 ; - RECT 138.730 19.785 140.000 24.435 ; - END - PORT - LAYER met4 ; - RECT 138.730 70.035 140.000 95.000 ; - END - PORT - LAYER met4 ; - RECT 0.000 19.785 1.270 24.435 ; - END - PORT - LAYER met4 ; - RECT 0.000 70.035 1.270 95.000 ; - END - END VDDIO - PIN VDDA - PORT - LAYER met5 ; - RECT 139.035 15.035 140.000 18.285 ; - END - PORT - LAYER met5 ; - RECT 0.000 15.035 0.965 18.285 ; - END - PORT - LAYER met4 ; - RECT 139.035 14.935 140.000 18.385 ; - END - PORT - LAYER met4 ; - RECT 0.000 14.935 0.965 18.385 ; - END - END VDDA - PIN VCCHIB - PORT - LAYER met5 ; - RECT 138.730 2.135 140.000 7.385 ; - END - PORT - LAYER met5 ; - RECT 0.000 2.135 1.270 7.385 ; - END - PORT - LAYER met4 ; - RECT 138.730 2.035 140.000 7.485 ; - END - PORT - LAYER met4 ; - RECT 0.000 2.035 1.270 7.485 ; - END - END VCCHIB - PIN VCCD - PORT - LAYER met5 ; - RECT 138.730 8.985 140.000 13.435 ; - END - PORT - LAYER met5 ; - RECT 0.000 8.985 1.270 13.435 ; - END - PORT - LAYER met4 ; - RECT 138.730 8.885 140.000 13.535 ; - END - PORT - LAYER met4 ; - RECT 0.000 8.885 1.270 13.535 ; - END - END VCCD - PIN PAD - PORT - LAYER met5 ; - RECT 17.930 117.530 86.325 162.905 ; - END - END PAD - PIN AMUXBUS_A - PORT - LAYER met4 ; - RECT 48.930 53.125 140.000 56.105 ; - END - PORT - LAYER met4 ; - RECT 0.000 53.125 38.675 56.105 ; - END - END AMUXBUS_A - PIN AMUXBUS_B - PORT - LAYER met4 ; - RECT 99.710 48.365 140.000 51.345 ; - END - PORT - LAYER met4 ; - RECT 0.000 48.365 85.865 51.345 ; - END - END AMUXBUS_B - PIN DM[0] - PORT - LAYER met3 ; - RECT 129.125 0.000 129.455 20.955 ; - END - END DM[0] - PIN DM[1] - PORT - LAYER met3 ; - RECT 128.275 0.000 128.605 20.180 ; - END - END DM[1] - PIN DM[2] - PORT - LAYER met3 ; - RECT 108.395 0.000 108.725 20.640 ; - END - END DM[2] - PIN INP_DIS - PORT - LAYER met3 ; - RECT 107.545 0.000 107.875 8.060 ; - END - END INP_DIS - PIN VTRIP_SEL - PORT - LAYER met3 ; - RECT 87.665 0.000 87.995 20.980 ; - END - END VTRIP_SEL - PIN IB_MODE_SEL[0] - PORT - LAYER met3 ; - RECT 86.815 0.000 87.145 20.980 ; - END - END IB_MODE_SEL[0] - PIN IB_MODE_SEL[1] - PORT - LAYER met3 ; - RECT 66.935 0.000 67.265 20.980 ; - END - END IB_MODE_SEL[1] - PIN SLEW_CTL[0] - PORT - LAYER met3 ; - RECT 66.085 0.000 66.415 20.980 ; - END - END SLEW_CTL[0] - PIN SLEW_CTL[1] - PORT - LAYER met3 ; - RECT 46.205 0.000 46.535 20.980 ; - END - END SLEW_CTL[1] - PIN HYS_TRIM - PORT - LAYER met3 ; - RECT 45.355 0.000 45.685 8.060 ; - END - END HYS_TRIM - PIN HLD_OVR - PORT - LAYER met3 ; - RECT 27.355 0.000 27.685 14.055 ; - END - END HLD_OVR - PIN ENABLE_H - PORT - LAYER met3 ; - RECT 22.135 0.000 22.465 30.150 ; - END - END ENABLE_H - PIN HLD_H_N - PORT - LAYER met3 ; - RECT 19.635 0.000 19.965 17.985 ; - END - END HLD_H_N - PIN ENABLE_VDDA_H - PORT - LAYER met3 ; - RECT 8.770 0.000 9.100 7.915 ; - END - END ENABLE_VDDA_H - PIN ANALOG_EN - PORT - LAYER met3 ; - RECT 8.115 0.000 8.445 14.070 ; - END - END ANALOG_EN - PIN ENABLE_INP_H - PORT - LAYER met3 ; - RECT 7.110 0.000 7.440 0.670 ; - END - END ENABLE_INP_H - PIN IN - PORT - LAYER met3 ; - RECT 20.380 0.000 20.710 11.310 ; - END - END IN - PIN IN_H - PORT - LAYER met3 ; - RECT 24.380 0.000 24.710 0.940 ; - END - END IN_H - PIN VINREF - PORT - LAYER met3 ; - RECT 44.035 0.000 44.365 4.885 ; - END - END VINREF - PIN OUT - PORT - LAYER met3 ; - RECT 74.125 0.000 74.455 14.865 ; - END - END OUT - PIN ANALOG_POL - PORT - LAYER met3 ; - RECT 65.235 0.000 65.565 1.165 ; - END - END ANALOG_POL - PIN ANALOG_SEL - PORT - LAYER met3 ; - RECT 51.655 0.000 51.985 8.060 ; - END - END ANALOG_SEL - PIN SLOW - PORT - LAYER met3 ; - RECT 125.140 0.000 125.470 11.965 ; - END - END SLOW - PIN OE_N - PORT - LAYER met3 ; - RECT 124.445 0.000 124.775 8.060 ; - END - END OE_N - PIN TIE_HI_ESD - PORT - LAYER met3 ; - RECT 129.975 0.000 130.305 61.655 ; - END - END TIE_HI_ESD - PIN TIE_LO_ESD - PORT - LAYER met3 ; - RECT 115.290 0.000 115.890 39.035 ; - END - END TIE_LO_ESD - PIN PAD_A_ESD_0_H - PORT - LAYER met3 ; - RECT 1.600 0.000 2.200 5.470 ; - END - END PAD_A_ESD_0_H - PIN PAD_A_ESD_1_H - PORT - LAYER met3 ; - RECT 0.330 0.000 0.930 71.380 ; - END - END PAD_A_ESD_1_H - PIN PAD_A_NOESD_H - PORT - LAYER met3 ; - RECT 2.885 0.000 3.485 5.900 ; - END - END PAD_A_NOESD_H - PIN ENABLE_VSWITCH_H - PORT - LAYER met3 ; - RECT 5.765 0.000 6.365 12.470 ; - END - END ENABLE_VSWITCH_H - PIN ENABLE_VDDIO - PORT - LAYER met3 ; - RECT 95.845 0.000 96.215 20.755 ; - END - END ENABLE_VDDIO - OBS - LAYER nwell ; - RECT -0.400 10.495 11.880 11.925 ; - RECT -0.400 1.430 1.030 10.495 ; - RECT -0.400 0.000 11.880 1.430 ; - LAYER li1 ; - RECT 0.230 0.200 140.475 199.780 ; - LAYER met1 ; - RECT 0.080 0.000 140.475 199.810 ; - LAYER met2 ; - RECT 0.080 0.000 140.325 199.955 ; - LAYER met3 ; - RECT 0.330 71.780 140.000 199.715 ; - RECT 1.330 62.055 140.000 71.780 ; - RECT 1.330 39.435 129.575 62.055 ; - RECT 1.330 30.550 114.890 39.435 ; - RECT 1.330 18.385 21.735 30.550 ; - RECT 1.330 14.470 19.235 18.385 ; - RECT 1.330 12.870 7.715 14.470 ; - RECT 1.330 6.300 5.365 12.870 ; - RECT 1.330 5.870 2.485 6.300 ; - RECT 3.885 0.000 5.365 6.300 ; - RECT 6.765 1.070 7.715 12.870 ; - RECT 8.845 8.315 19.235 14.470 ; - RECT 20.365 11.710 21.735 18.385 ; - RECT 9.500 0.000 19.235 8.315 ; - RECT 21.110 0.000 21.735 11.710 ; - RECT 22.865 21.380 114.890 30.550 ; - RECT 22.865 14.455 45.805 21.380 ; - RECT 22.865 1.340 26.955 14.455 ; - RECT 22.865 0.000 23.980 1.340 ; - RECT 25.110 0.000 26.955 1.340 ; - RECT 28.085 8.460 45.805 14.455 ; - RECT 46.935 8.460 65.685 21.380 ; - RECT 28.085 5.285 44.955 8.460 ; - RECT 28.085 0.000 43.635 5.285 ; - RECT 44.765 0.000 44.955 5.285 ; - RECT 46.935 0.000 51.255 8.460 ; - RECT 52.385 1.565 65.685 8.460 ; - RECT 67.665 15.265 86.415 21.380 ; - RECT 52.385 0.000 64.835 1.565 ; - RECT 67.665 0.000 73.725 15.265 ; - RECT 74.855 0.000 86.415 15.265 ; - RECT 88.395 21.155 114.890 21.380 ; - RECT 88.395 0.000 95.445 21.155 ; - RECT 96.615 21.040 114.890 21.155 ; - RECT 96.615 8.460 107.995 21.040 ; - RECT 96.615 0.000 107.145 8.460 ; - RECT 109.125 0.000 114.890 21.040 ; - RECT 116.290 21.355 129.575 39.435 ; - RECT 116.290 20.580 128.725 21.355 ; - RECT 116.290 12.365 127.875 20.580 ; - RECT 116.290 8.460 124.740 12.365 ; - RECT 116.290 0.000 124.045 8.460 ; - RECT 125.870 0.000 127.875 12.365 ; - RECT 130.705 0.000 140.000 62.055 ; - LAYER met4 ; - RECT 1.765 175.385 138.330 200.000 ; - RECT 0.965 95.400 139.035 175.385 ; - RECT 1.670 69.635 138.330 95.400 ; - RECT 0.965 68.935 139.035 69.635 ; - RECT 1.670 63.685 138.330 68.935 ; - RECT 0.965 63.085 139.035 63.685 ; - RECT 1.670 57.835 138.330 63.085 ; - RECT 0.965 57.135 139.035 57.835 ; - RECT 39.075 52.725 48.530 56.005 ; - RECT 2.440 51.745 138.330 52.725 ; - RECT 86.265 48.465 99.310 51.745 ; - RECT 0.965 46.635 139.035 47.335 ; - RECT 1.670 41.185 138.330 46.635 ; - RECT 0.965 40.585 139.035 41.185 ; - RECT 1.670 36.335 138.330 40.585 ; - RECT 0.965 35.735 139.035 36.335 ; - RECT 1.670 31.485 138.330 35.735 ; - RECT 0.965 30.885 139.035 31.485 ; - RECT 1.670 25.435 138.330 30.885 ; - RECT 0.965 24.835 139.035 25.435 ; - RECT 1.670 19.385 138.330 24.835 ; - RECT 0.965 18.785 139.035 19.385 ; - RECT 1.365 14.535 138.635 18.785 ; - RECT 0.965 13.935 139.035 14.535 ; - RECT 1.670 8.485 138.330 13.935 ; - RECT 0.965 7.885 139.035 8.485 ; - RECT 1.670 1.635 138.330 7.885 ; - RECT 0.965 1.160 139.035 1.635 ; - LAYER met5 ; - RECT 2.965 174.185 137.130 200.000 ; - RECT 0.000 164.505 140.000 174.185 ; - RECT 0.000 115.930 16.330 164.505 ; - RECT 87.925 115.930 140.000 164.505 ; - RECT 0.000 96.585 140.000 115.930 ; - RECT 2.870 58.335 137.130 96.585 ; - RECT 3.640 46.135 137.130 58.335 ; - RECT 2.870 18.285 137.130 46.135 ; - RECT 2.565 15.035 137.435 18.285 ; - RECT 2.870 2.135 137.130 15.035 ; - END -END sky130_fd_io__top_gpio_ovtv2 -END LIBRARY -
diff --git a/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_xres4v2.lef b/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_xres4v2.lef deleted file mode 100644 index 03fcde4..0000000 --- a/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_xres4v2.lef +++ /dev/null
@@ -1,477 +0,0 @@ -MACRO sky130_fd_io__top_xres4v2 - CLASS PAD ; - FOREIGN sky130_fd_io__top_xres4v2 ; - ORIGIN 0.515 0.000 ; - SIZE 76.135 BY 200.000 ; - PIN PAD_A_ESD_H - PORT - LAYER met3 ; - RECT 17.245 0.000 18.910 0.565 ; - END - PORT - LAYER met2 ; - RECT 17.245 0.000 18.910 0.565 ; - END - END PAD_A_ESD_H - PIN XRES_H_N - PORT - LAYER met3 ; - RECT 28.935 0.000 29.665 0.330 ; - END - PORT - LAYER met2 ; - RECT 28.935 0.000 29.665 0.330 ; - END - END XRES_H_N - PIN FILT_IN_H - PORT - LAYER met3 ; - RECT 20.075 0.000 21.225 1.410 ; - END - PORT - LAYER met2 ; - RECT 20.075 0.000 21.225 1.410 ; - END - END FILT_IN_H - PIN ENABLE_VDDIO - PORT - LAYER met3 ; - RECT 8.400 0.000 8.920 0.330 ; - END - PORT - LAYER met2 ; - RECT 8.425 0.000 8.895 0.330 ; - END - END ENABLE_VDDIO - PIN TIE_WEAK_HI_H - PORT - LAYER met3 ; - RECT 72.190 0.000 73.260 0.330 ; - END - PORT - LAYER met2 ; - RECT 72.215 0.000 73.235 0.330 ; - END - END TIE_WEAK_HI_H - PIN ENABLE_H - PORT - LAYER met2 ; - RECT 12.285 0.000 12.545 0.330 ; - END - PORT - LAYER met1 ; - RECT 12.285 0.000 12.545 0.330 ; - END - END ENABLE_H - PIN PULLUP_H - PORT - LAYER met2 ; - RECT 14.555 0.000 15.135 0.330 ; - END - PORT - LAYER met1 ; - RECT 14.555 0.000 15.135 0.330 ; - END - END PULLUP_H - PIN EN_VDDIO_SIG_H - PORT - LAYER met2 ; - RECT 22.360 0.000 22.660 0.330 ; - END - PORT - LAYER met1 ; - RECT 22.360 0.000 22.660 0.330 ; - END - END EN_VDDIO_SIG_H - PIN TIE_LO_ESD - PORT - LAYER met2 ; - RECT 27.580 0.000 28.230 0.330 ; - END - PORT - LAYER met1 ; - RECT 27.580 0.000 28.230 0.330 ; - END - END TIE_LO_ESD - PIN TIE_HI_ESD - PORT - LAYER met2 ; - RECT 30.505 0.000 31.155 0.330 ; - END - PORT - LAYER met1 ; - RECT 30.505 0.000 31.155 0.330 ; - END - END TIE_HI_ESD - PIN DISABLE_PULLUP_H - PORT - LAYER met2 ; - RECT 32.760 0.000 33.020 0.330 ; - END - PORT - LAYER met1 ; - RECT 32.760 0.000 33.020 0.330 ; - END - END DISABLE_PULLUP_H - PIN INP_SEL_H - PORT - LAYER met1 ; - RECT 24.905 0.000 25.135 9.975 ; - END - END INP_SEL_H - PIN VSSIO - PORT - LAYER met4 ; - RECT 0.000 175.785 1.270 200.000 ; - END - PORT - LAYER met4 ; - RECT 73.730 25.835 75.000 30.485 ; - END - PORT - LAYER met4 ; - RECT 73.730 175.785 75.000 200.000 ; - END - PORT - LAYER met4 ; - RECT 0.000 25.835 1.270 30.485 ; - END - PORT - LAYER met5 ; - RECT 0.000 175.785 1.270 200.000 ; - END - PORT - LAYER met5 ; - RECT 73.730 25.935 75.000 30.385 ; - END - PORT - LAYER met5 ; - RECT 73.730 175.785 75.000 200.000 ; - END - PORT - LAYER met5 ; - RECT 0.000 25.935 1.270 30.385 ; - END - END VSSIO - PIN VSSA - PORT - LAYER met4 ; - RECT 73.730 36.735 75.000 40.185 ; - END - PORT - LAYER met4 ; - RECT 0.000 56.405 75.000 56.735 ; - END - PORT - LAYER met4 ; - RECT 0.000 47.735 75.000 48.065 ; - END - PORT - LAYER met4 ; - RECT 73.730 51.645 75.000 52.825 ; - END - PORT - LAYER met4 ; - RECT 0.000 36.735 1.270 40.185 ; - END - PORT - LAYER met4 ; - RECT 0.000 56.405 1.270 56.735 ; - END - PORT - LAYER met4 ; - RECT 0.000 47.735 1.270 48.065 ; - END - PORT - LAYER met4 ; - RECT 0.000 51.645 1.270 52.825 ; - END - PORT - LAYER met5 ; - RECT 73.730 47.735 75.000 56.735 ; - END - PORT - LAYER met5 ; - RECT 73.730 36.840 75.000 40.085 ; - END - PORT - LAYER met5 ; - RECT 0.000 36.840 1.270 40.085 ; - END - PORT - LAYER met5 ; - RECT 0.000 47.735 1.270 56.735 ; - END - END VSSA - PIN VSSD - PORT - LAYER met4 ; - RECT 73.730 41.585 75.000 46.235 ; - END - PORT - LAYER met4 ; - RECT 0.000 41.585 1.270 46.235 ; - END - PORT - LAYER met5 ; - RECT 73.730 41.685 75.000 46.135 ; - END - PORT - LAYER met5 ; - RECT 0.000 41.685 1.270 46.135 ; - END - END VSSD - PIN AMUXBUS_B - PORT - LAYER met4 ; - RECT 0.000 48.365 75.000 51.345 ; - END - PORT - LAYER met4 ; - RECT 0.000 48.365 1.270 51.345 ; - END - END AMUXBUS_B - PIN AMUXBUS_A - PORT - LAYER met4 ; - RECT 0.000 53.125 75.000 56.105 ; - END - PORT - LAYER met4 ; - RECT 0.000 53.125 1.270 56.105 ; - END - END AMUXBUS_A - PIN VDDIO_Q - PORT - LAYER met4 ; - RECT 73.730 64.085 75.000 68.535 ; - END - PORT - LAYER met4 ; - RECT 0.000 64.085 1.270 68.535 ; - END - PORT - LAYER met5 ; - RECT 73.730 64.185 75.000 68.435 ; - END - PORT - LAYER met5 ; - RECT 0.000 64.185 1.270 68.435 ; - END - END VDDIO_Q - PIN VDDIO - PORT - LAYER met4 ; - RECT 73.730 70.035 75.000 95.000 ; - END - PORT - LAYER met4 ; - RECT 73.730 19.785 75.000 24.435 ; - END - PORT - LAYER met4 ; - RECT 0.000 70.035 1.270 95.000 ; - END - PORT - LAYER met4 ; - RECT 0.000 19.785 1.270 24.435 ; - END - PORT - LAYER met5 ; - RECT 73.730 19.885 75.000 24.335 ; - END - PORT - LAYER met5 ; - RECT 73.730 70.035 75.000 94.985 ; - END - PORT - LAYER met5 ; - RECT 0.000 70.035 1.270 94.985 ; - END - PORT - LAYER met5 ; - RECT 0.000 19.885 1.270 24.335 ; - END - END VDDIO - PIN VSWITCH - PORT - LAYER met4 ; - RECT 73.730 31.885 75.000 35.335 ; - END - PORT - LAYER met4 ; - RECT 0.000 31.885 1.270 35.335 ; - END - PORT - LAYER met5 ; - RECT 73.730 31.985 75.000 35.235 ; - END - PORT - LAYER met5 ; - RECT 0.000 31.985 1.270 35.235 ; - END - END VSWITCH - PIN VDDA - PORT - LAYER met4 ; - RECT 74.035 14.935 75.000 18.385 ; - END - PORT - LAYER met4 ; - RECT 0.000 14.935 0.965 18.385 ; - END - PORT - LAYER met5 ; - RECT 74.035 15.035 75.000 18.285 ; - END - PORT - LAYER met5 ; - RECT 0.000 15.035 0.965 18.285 ; - END - END VDDA - PIN VCCD - PORT - LAYER met4 ; - RECT 73.730 8.885 75.000 13.535 ; - END - PORT - LAYER met4 ; - RECT 0.000 8.885 1.270 13.535 ; - END - PORT - LAYER met5 ; - RECT 73.730 8.985 75.000 13.435 ; - END - PORT - LAYER met5 ; - RECT 0.000 8.985 1.270 13.435 ; - END - END VCCD - PIN VCCHIB - PORT - LAYER met4 ; - RECT 73.730 2.035 75.000 7.485 ; - END - PORT - LAYER met4 ; - RECT 0.000 2.035 1.270 7.485 ; - END - PORT - LAYER met5 ; - RECT 73.730 2.135 75.000 7.385 ; - END - PORT - LAYER met5 ; - RECT 0.000 2.135 1.270 7.385 ; - END - END VCCHIB - PIN VSSIO_Q - PORT - LAYER met4 ; - RECT 73.730 58.235 75.000 62.685 ; - END - PORT - LAYER met4 ; - RECT 0.000 58.235 1.270 62.685 ; - END - PORT - LAYER met5 ; - RECT 73.730 58.335 75.000 62.585 ; - END - PORT - LAYER met5 ; - RECT 0.000 58.335 1.270 62.585 ; - END - END VSSIO_Q - PIN PAD - PORT - LAYER met5 ; - RECT 17.250 108.455 54.435 164.285 ; - END - END PAD - OBS - LAYER nwell ; - RECT -0.515 168.515 75.620 170.210 ; - RECT -0.515 146.690 1.675 168.515 ; - RECT -0.515 144.880 75.620 146.690 ; - LAYER li1 ; - RECT -0.265 0.185 75.160 199.220 ; - LAYER met1 ; - RECT -0.145 10.255 75.145 199.210 ; - RECT -0.145 0.610 24.625 10.255 ; - RECT -0.145 0.185 12.005 0.610 ; - RECT 12.825 0.185 14.275 0.610 ; - RECT 15.415 0.185 22.080 0.610 ; - RECT 22.940 0.185 24.625 0.610 ; - RECT 25.415 0.610 75.145 10.255 ; - RECT 25.415 0.185 27.300 0.610 ; - RECT 28.510 0.185 30.225 0.610 ; - RECT 31.435 0.185 32.480 0.610 ; - RECT 33.300 0.185 75.145 0.610 ; - LAYER met2 ; - RECT 0.340 1.690 74.915 199.210 ; - RECT 0.340 0.845 19.795 1.690 ; - RECT 0.340 0.610 16.965 0.845 ; - RECT 0.340 0.000 8.145 0.610 ; - RECT 9.175 0.000 12.005 0.610 ; - RECT 12.825 0.000 14.275 0.610 ; - RECT 15.415 0.000 16.965 0.610 ; - RECT 19.190 0.000 19.795 0.845 ; - RECT 21.505 0.610 74.915 1.690 ; - RECT 21.505 0.000 22.080 0.610 ; - RECT 22.940 0.000 27.300 0.610 ; - RECT 28.510 0.000 28.655 0.610 ; - RECT 29.945 0.000 30.225 0.610 ; - RECT 31.435 0.000 32.480 0.610 ; - RECT 33.300 0.000 71.935 0.610 ; - RECT 73.515 0.000 74.915 0.610 ; - LAYER met3 ; - RECT 0.965 1.810 74.700 200.000 ; - RECT 0.965 0.965 19.675 1.810 ; - RECT 0.965 0.730 16.845 0.965 ; - RECT 0.965 0.330 8.000 0.730 ; - RECT 9.320 0.330 16.845 0.730 ; - RECT 19.310 0.330 19.675 0.965 ; - RECT 21.625 0.730 74.700 1.810 ; - RECT 21.625 0.330 28.535 0.730 ; - RECT 30.065 0.330 71.790 0.730 ; - RECT 73.660 0.330 74.700 0.730 ; - LAYER met4 ; - RECT 1.670 175.385 73.330 200.000 ; - RECT 0.965 95.400 74.035 175.385 ; - RECT 1.670 69.635 73.330 95.400 ; - RECT 0.965 68.935 74.035 69.635 ; - RECT 1.670 63.685 73.330 68.935 ; - RECT 0.965 63.085 74.035 63.685 ; - RECT 1.670 57.835 73.330 63.085 ; - RECT 0.965 57.135 74.035 57.835 ; - RECT 1.670 51.745 73.330 52.725 ; - RECT 0.965 46.635 74.035 47.335 ; - RECT 1.670 41.185 73.330 46.635 ; - RECT 0.965 40.585 74.035 41.185 ; - RECT 1.670 36.335 73.330 40.585 ; - RECT 0.965 35.735 74.035 36.335 ; - RECT 1.670 31.485 73.330 35.735 ; - RECT 0.965 30.885 74.035 31.485 ; - RECT 1.670 25.435 73.330 30.885 ; - RECT 0.965 24.835 74.035 25.435 ; - RECT 1.670 19.385 73.330 24.835 ; - RECT 0.965 18.785 74.035 19.385 ; - RECT 1.365 14.535 73.635 18.785 ; - RECT 0.965 13.935 74.035 14.535 ; - RECT 1.670 8.485 73.330 13.935 ; - RECT 0.965 7.885 74.035 8.485 ; - RECT 1.670 2.035 73.330 7.885 ; - LAYER met5 ; - RECT 2.870 174.185 72.130 200.000 ; - RECT 0.000 165.885 75.000 174.185 ; - RECT 0.000 106.855 15.650 165.885 ; - RECT 56.035 106.855 75.000 165.885 ; - RECT 0.000 96.585 75.000 106.855 ; - RECT 2.870 18.285 72.130 96.585 ; - RECT 2.565 15.035 72.435 18.285 ; - RECT 2.870 2.135 72.130 15.035 ; - END -END sky130_fd_io__top_xres4v2 -END LIBRARY -