google / gf180mcu-pdk

PDK for GlobalFoundries' 180nm MCU bulk process technology (GF180MCU).
https://gf180mcu-pdk.rtfd.io
Apache License 2.0
372 stars 53 forks source link

CLASS options wrong in LEF files #104

Closed thesourcerer8 closed 1 year ago

thesourcerer8 commented 1 year ago

Expected Behavior

The LEF files should have lines like "CLASS core ;" where the CLASS parameter has just one option which defines the class.

Actual Behavior

Several LEF files have several options like e.g. CLASS core ; CLASS core gf180mcu_fd_sc_mcu9t5v0tiehIGH ; CLASS core gf180mcu_fd_sc_mcu9t5v0__tielOW ; CLASS core SPACER ; CLASS core WELLTAP ; CLASS gf180mcu_fd_sc_mcu9t5v0endcap PRE ; which is definitely wrong according to the LEF fileformat specification

QuantamHD commented 1 year ago

Certainly some of these are problematic, but

CLASS core SPACER ; CLASS core WELLTAP ;

are totally valid. See grammar from the LEF/DEF spec. https://www.ispd.cc/contests/18/lefdefref.pdf page 172

image
RTimothyEdwards commented 1 year ago

And +1 to Ethan. Philipp: Make sure you're looking at the 5.7 or 5.8 spec. The requirement of a single value for CLASS is from 5.4 or something; not exactly sure when they added the optional 2nd argument.

But clearly these issues come from a sloppy application of string replacement, where the original cell names "TIEL", "TIEH", "ENDCAP", and "ANTENNA" (the last one noted by Philipp in a later issue) are cell names that are replaced by the open PDK equivalents, but they are also valid LEF keywords.

QuantamHD commented 1 year ago

@RTimothyEdwards or @thesourcerer8 I'm not near a keyboard where I could make this change would either of you mind making a PR to fix this?

RTimothyEdwards commented 1 year ago

@QuantamHD : These fixes have already been made on the efabless fork. You need to get a pull request from our fork.

mithro commented 1 year ago

Does https://github.com/google/globalfoundries-pdk-libs-gf180mcu_fd_sc_mcu9t5v0/pull/23 look right?

mithro commented 1 year ago

As far as I can tell, this didn't affect the mcu7t5v0 library.

tansell@tansell-glapstation:~/github/google/globalfoundries-pdk-libs-gf180mcu_fd_sc_mcu7t5v0$ grep -R 'CLASS' | grep -v 'core ;' | grep -v 'core SPACER ;'
cells/tieh/gf180mcu_fd_sc_mcu7t5v0__tieh.lef:  CLASS core TIEHIGH ;
cells/endcap/gf180mcu_fd_sc_mcu7t5v0__endcap.lef:  CLASS ENDCAP PRE ;
cells/antenna/gf180mcu_fd_sc_mcu7t5v0__antenna.lef:  CLASS core ANTENNACELL ;
cells/filltie/gf180mcu_fd_sc_mcu7t5v0__filltie.lef:  CLASS core WELLTAP ;
cells/tiel/gf180mcu_fd_sc_mcu7t5v0__tiel.lef:  CLASS core TIELOW ;