diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2018-05-24 19:36:28 +0900 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2018-05-24 19:36:28 +0900 |
commit | 21c7dad7e440492e4533b4dc228c54907819de39 (patch) | |
tree | 24ab24c27e537b79e1de86f9896c8f175b768d9f /src/base/wlc/wlcWriteVer.c | |
parent | 8cb55037cb7ed745e06256ff8426cfa569dde40f (diff) | |
download | abc-21c7dad7e440492e4533b4dc228c54907819de39.tar.gz abc-21c7dad7e440492e4533b4dc228c54907819de39.tar.bz2 abc-21c7dad7e440492e4533b4dc228c54907819de39.zip |
Supporting NMUX and SEL in NDR.
Diffstat (limited to 'src/base/wlc/wlcWriteVer.c')
-rw-r--r-- | src/base/wlc/wlcWriteVer.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/base/wlc/wlcWriteVer.c b/src/base/wlc/wlcWriteVer.c index cc33b483..dbf24e68 100644 --- a/src/base/wlc/wlcWriteVer.c +++ b/src/base/wlc/wlcWriteVer.c @@ -147,7 +147,7 @@ void Wlc_WriteVerIntVec( FILE * pFile, Wlc_Ntk_t * p, Vec_Int_t * vVec, int Star void Wlc_WriteVerInt( FILE * pFile, Wlc_Ntk_t * p, int fNoFlops ) { Wlc_Obj_t * pObj; - int i, k, iFanin; + int i, k, j, iFanin; char Range[100]; fprintf( pFile, "module %s ( ", p->pName ); fprintf( pFile, "\n " ); @@ -253,6 +253,34 @@ void Wlc_WriteVerInt( FILE * pFile, Wlc_Ntk_t * p, int fNoFlops ) fprintf( pFile, "end\n" ); continue; } + else if ( pObj->Type == WLC_OBJ_SEL ) + { + fprintf( pFile, "%s ;\n", Wlc_ObjName(p, i) ); + fprintf( pFile, " " ); + fprintf( pFile, "always @( " ); + Wlc_ObjForEachFanin( pObj, iFanin, k ) + fprintf( pFile, "%s%s", k ? " or ":"", Wlc_ObjName(p, Wlc_ObjFaninId(pObj, k)) ); + fprintf( pFile, " )\n" ); + fprintf( pFile, " " ); + fprintf( pFile, "begin\n" ); + fprintf( pFile, " " ); + fprintf( pFile, "case ( %s )\n", Wlc_ObjName(p, Wlc_ObjFaninId(pObj, 0)) ); + Wlc_ObjForEachFanin( pObj, iFanin, k ) + { + if ( !k ) continue; + fprintf( pFile, " " ); + fprintf( pFile, "%d\'b", Wlc_ObjFaninNum(pObj)-1 ); + for ( j = Wlc_ObjFaninNum(pObj)-1; j > 0; j-- ) + fprintf( pFile, "%d", (int)(j==k) ); + fprintf( pFile, " : %s = ", Wlc_ObjName(p, i) ); + fprintf( pFile, "%s ;\n", Wlc_ObjName(p, Wlc_ObjFaninId(pObj, k)) ); + } + fprintf( pFile, " " ); + fprintf( pFile, "endcase\n" ); + fprintf( pFile, " " ); + fprintf( pFile, "end\n" ); + continue; + } else if ( pObj->Type == WLC_OBJ_READ || pObj->Type == WLC_OBJ_WRITE ) { if ( p->fMemPorts ) |