diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2018-06-14 21:13:54 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2018-06-14 21:13:54 -0700 |
commit | 15939511df8ff1ce15f2112cee01d7693234f2a4 (patch) | |
tree | 08dae14efc2b74928dcc23702506d48f34abbfbd /src/base/wlc/wlcWriteVer.c | |
parent | baab8c11f2769c29963bb0c6b2989203288a9b69 (diff) | |
download | abc-15939511df8ff1ce15f2112cee01d7693234f2a4.tar.gz abc-15939511df8ff1ce15f2112cee01d7693234f2a4.tar.bz2 abc-15939511df8ff1ce15f2112cee01d7693234f2a4.zip |
Extending NDR to support adder/subtractor.
Diffstat (limited to 'src/base/wlc/wlcWriteVer.c')
-rw-r--r-- | src/base/wlc/wlcWriteVer.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/base/wlc/wlcWriteVer.c b/src/base/wlc/wlcWriteVer.c index a7d29187..45ce31e4 100644 --- a/src/base/wlc/wlcWriteVer.c +++ b/src/base/wlc/wlcWriteVer.c @@ -318,6 +318,20 @@ void Wlc_WriteVerInt( FILE * pFile, Wlc_Ntk_t * p, int fNoFlops ) fprintf( pFile, " } ;\n" ); continue; } + else if ( pObj->Type == WLC_OBJ_ARI_ADDSUB ) + { + // out = mode ? a+b+cin : a-b-cin + int nRange = Wlc_ObjRange(Wlc_ObjFanin0(p, pObj)); + fprintf( pFile, "%s ;\n", Wlc_ObjName(p, i) ); + fprintf( pFile, " " ); + fprintf( pFile, "assign " ); + fprintf( pFile, "%s = %s ? %s + %s + %s : %s - %s - %s ;\n", + Wlc_ObjName(p, i), Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)), + Wlc_ObjName(p, Wlc_ObjFaninId2(pObj)), Wlc_ObjName(p, Wlc_ObjFaninId(pObj,3)), Wlc_ObjName(p, Wlc_ObjFaninId1(pObj)), + Wlc_ObjName(p, Wlc_ObjFaninId2(pObj)), Wlc_ObjName(p, Wlc_ObjFaninId(pObj,3)), Wlc_ObjName(p, Wlc_ObjFaninId1(pObj)) + ); + continue; + } else if ( pObj->Type == WLC_OBJ_READ || pObj->Type == WLC_OBJ_WRITE ) { if ( p->fMemPorts ) |