summaryrefslogtreecommitdiffstats
path: root/src/map/mio/mioRead.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-04-14 18:53:28 +0900
committerAlan Mishchenko <alanmi@berkeley.edu>2015-04-14 18:53:28 +0900
commit3de5d18c5f1f97e5d38c0b35daca5f83df56cc14 (patch)
tree08a043dc0a43bc2ba506bcf6ade2ca11b301410f /src/map/mio/mioRead.c
parent96c622b3bc61584580e28b6b9ba5c8de2a9a1e2b (diff)
downloadabc-3de5d18c5f1f97e5d38c0b35daca5f83df56cc14.tar.gz
abc-3de5d18c5f1f97e5d38c0b35daca5f83df56cc14.tar.bz2
abc-3de5d18c5f1f97e5d38c0b35daca5f83df56cc14.zip
Adding APIs to retrieve NOR/OR gates from the library.
Diffstat (limited to 'src/map/mio/mioRead.c')
-rw-r--r--src/map/mio/mioRead.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/map/mio/mioRead.c b/src/map/mio/mioRead.c
index b5b334da..edc2af40 100644
--- a/src/map/mio/mioRead.c
+++ b/src/map/mio/mioRead.c
@@ -601,14 +601,16 @@ static inline Mio_Gate_t * Mio_GateCompare( Mio_Gate_t * pThis, Mio_Gate_t * pNe
void Mio_LibraryDetectSpecialGates( Mio_Library_t * pLib )
{
Mio_Gate_t * pGate;
- word uFuncBuf, uFuncInv, uFuncNand2, uFuncAnd2;
+ word uFuncBuf, uFuncInv, uFuncNand2, uFuncAnd2, uFuncNor2, uFuncOr2;
Mio_LibrarySortGates( pLib );
uFuncBuf = ABC_CONST(0xAAAAAAAAAAAAAAAA);
uFuncAnd2 = ABC_CONST(0xAAAAAAAAAAAAAAAA) & ABC_CONST(0xCCCCCCCCCCCCCCCC);
+ uFuncOr2 = ABC_CONST(0xAAAAAAAAAAAAAAAA) | ABC_CONST(0xCCCCCCCCCCCCCCCC);
uFuncInv = ~uFuncBuf;
uFuncNand2 = ~uFuncAnd2;
+ uFuncNor2 = ~uFuncOr2;
// get smallest-area buffer
Mio_LibraryForEachGate( pLib, pGate )
@@ -630,12 +632,15 @@ void Mio_LibraryDetectSpecialGates( Mio_Library_t * pLib )
// get smallest-area NAND2/AND2 gates
Mio_LibraryForEachGate( pLib, pGate )
+ {
pLib->pGateNand2 = Mio_GateCompare( pLib->pGateNand2, pGate, uFuncNand2 );
- Mio_LibraryForEachGate( pLib, pGate )
pLib->pGateAnd2 = Mio_GateCompare( pLib->pGateAnd2, pGate, uFuncAnd2 );
- if ( pLib->pGateAnd2 == NULL && pLib->pGateNand2 == NULL )
+ pLib->pGateNor2 = Mio_GateCompare( pLib->pGateNor2, pGate, uFuncNor2 );
+ pLib->pGateOr2 = Mio_GateCompare( pLib->pGateOr2, pGate, uFuncOr2 );
+ }
+ if ( pLib->pGateAnd2 == NULL && pLib->pGateNand2 == NULL && pLib->pGateNor2 == NULL && pLib->pGateOr2 == NULL )
{
- printf( "Warnings: genlib library reader cannot detect the AND2 or NAND2 gate.\n" );
+ printf( "Warnings: genlib library reader cannot detect the AND2, NAND2, OR2, and NOR2 gate.\n" );
printf( "Some parts of the supergate-based technology mapper may not work correctly.\n" );
}
}