google / globalfoundries-pdk-libs-gf180mcu_fd_io

IO and periphery cells for the GF180MCU provided by GlobalFoundries.
https://gf180mcu-pdk.rtfd.io
Apache License 2.0
13 stars 5 forks source link

gf180 IO liberties have duplicate definitions for cell `gf180mcu_fd_io__fill10` #7

Closed passant5 closed 2 years ago

passant5 commented 2 years ago

This produces an error in reading the liberties for timing analysis. The duplicate definitions could be found in all liberties starting at lines 2906 and 2929 For example:

gf180mcuC/libs.ref/gf180mcu_fd_io/liberty/gf180mcu_fd_io__ff_n40C_5v50.lib
2906:   cell ("gf180mcu_fd_io__fill10") {
2929:   cell ("gf180mcu_fd_io__fill10") {

The reason probably is that the cell has a definition cell ("gf180mcu_fd_io__fill10") inside the file cells/fill1/gf180mcu_fd_io__fill10__ff_n40C_5v50.lib and cells/fill10/gf180mcu_fd_io__fill10__ff_n40C_5v50.lib

RTimothyEdwards commented 2 years ago

Specifically, the cell fill1 has a file with an entry for fill10. This means that when compiled into a library, every library has two entries for fill10 and no entries for fill1, both of which are errors. Looks like a parsing error in the audit scripts caused by a partial string match. The fill10 cell in the I/O library is the only cell that would exhibit such a problem.

RTimothyEdwards commented 2 years ago

More to the point:

cd cells/fill1
grep fill10 *

returns the following list of incorrect entries:

gf180mcu_fd_io__fill10__ff_125C_2v75.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__ff_125C_2v75.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__ff_125C_3v63.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__ff_125C_3v63.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__ff_125C_5v50.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__ff_125C_5v50.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__ff_n40C_2v75.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__ff_n40C_2v75.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__ff_n40C_3v63.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__ff_n40C_3v63.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__ff_n40C_5v50.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__ff_n40C_5v50.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__ss_125C_2v25.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__ss_125C_2v25.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__ss_125C_2v97.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__ss_125C_2v97.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__ss_125C_4v50.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__ss_125C_4v50.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__tt_025C_2v50.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__tt_025C_2v50.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__tt_025C_3v30.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__tt_025C_3v30.lib.json:    "cell gf180mcu_fd_io__fill10": {
gf180mcu_fd_io__fill10__tt_025C_5v00.lib:       cell ("gf180mcu_fd_io__fill10") {
gf180mcu_fd_io__fill10__tt_025C_5v00.lib.json:    "cell gf180mcu_fd_io__fill10": {
mithro commented 2 years ago

FYI - @proppy / @mkkassem

proppy commented 2 years ago

@RTimothyEdwards would removing them from the fill1 directory be enough to fix this? (see #8)

RTimothyEdwards commented 2 years ago

@proppy : It looks that way, yes. I didn't realize the correct files were also there.

mithro commented 2 years ago

Is fill1 a duplicate of fill10 or did it just get the wrong name?

RTimothyEdwards commented 2 years ago

@mithro : I originally thought it was the the wrong name, but it appears it's a duplicate.