diff options
author | QuantamHD <emahintorabi@gmail.com> | 2021-12-20 12:55:11 -0800 |
---|---|---|
committer | QuantamHD <emahintorabi@gmail.com> | 2021-12-20 12:55:11 -0800 |
commit | f288c4d7f6e97146bdc4de48f14168cbce9d3c96 (patch) | |
tree | 0eda31ba0acc43042ad971f3078ea8d8a072c8f2 /src/map/scl | |
parent | 85b74f68f19fc4857daba703f909a02410f04065 (diff) | |
download | abc-f288c4d7f6e97146bdc4de48f14168cbce9d3c96.tar.gz abc-f288c4d7f6e97146bdc4de48f14168cbce9d3c96.tar.bz2 abc-f288c4d7f6e97146bdc4de48f14168cbce9d3c96.zip |
Fixes internal pin parsing error in ASAP7 liberty file.
This fix addresses an issue I saw with the ASAP7 liberty files and
ABC. ASAP7 lists internal pins in its liberty file which ABC's liberty
parser doesn't account for. This causes an assert to be triggered. This
fix simply adds interal pins to the ignore list.
Diffstat (limited to 'src/map/scl')
-rw-r--r-- | src/map/scl/sclLiberty.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/map/scl/sclLiberty.c b/src/map/scl/sclLiberty.c index 4b6adab4..49b5c237 100644 --- a/src/map/scl/sclLiberty.c +++ b/src/map/scl/sclLiberty.c @@ -955,6 +955,8 @@ int Scl_LibertyReadPinDirection( Scl_Tree_t * p, Scl_Item_t * pPin ) return 0; if ( !strcmp(pToken, "output") ) return 1; + if ( !strcmp(pToken, "internal") ) + return 2; break; } return -1; @@ -1525,7 +1527,7 @@ Vec_Str_t * Scl_LibertyReadSclStr( Scl_Tree_t * p, int fVerbose, int fVeryVerbos float CapOne, CapRise, CapFall; if ( Scl_LibertyReadPinFormula(p, pPin) != NULL ) // skip output pin continue; - assert( Scl_LibertyReadPinDirection(p, pPin) == 0 ); + assert( Scl_LibertyReadPinDirection(p, pPin) == 0 || Scl_LibertyReadPinDirection(p, pPin) == 2); pName = Scl_LibertyReadString(p, pPin->Head); Vec_PtrPush( vNameIns, Abc_UtilStrsav(pName) ); Vec_StrPutS_( vOut, pName ); @@ -1546,6 +1548,8 @@ Vec_Str_t * Scl_LibertyReadSclStr( Scl_Tree_t * p, int fVerbose, int fVeryVerbos { if ( !Scl_LibertyReadPinFormula(p, pPin) ) // skip input pin continue; + if (Scl_LibertyReadPinDirection(p, pPin) == 2) // skip internal pin + continue; assert( Scl_LibertyReadPinDirection(p, pPin) == 1 ); pName = Scl_LibertyReadString(p, pPin->Head); Vec_StrPutS_( vOut, pName ); |