diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2015-02-11 16:55:18 -0800 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2015-02-11 16:55:18 -0800 |
commit | e363727c62d5fbbf0edadb73a02e4efa324e1509 (patch) | |
tree | 303fb0fddff729206062beaa192f067f42f6da5a /src/base/cba/cbaWriteVer.c | |
parent | 8cabdcb55d0a390ea45cfed631118af35796dac2 (diff) | |
download | abc-e363727c62d5fbbf0edadb73a02e4efa324e1509.tar.gz abc-e363727c62d5fbbf0edadb73a02e4efa324e1509.tar.bz2 abc-e363727c62d5fbbf0edadb73a02e4efa324e1509.zip |
Several improvements to CBA data-structure.
Diffstat (limited to 'src/base/cba/cbaWriteVer.c')
-rw-r--r-- | src/base/cba/cbaWriteVer.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/base/cba/cbaWriteVer.c b/src/base/cba/cbaWriteVer.c index efdd2171..7d70c0a3 100644 --- a/src/base/cba/cbaWriteVer.c +++ b/src/base/cba/cbaWriteVer.c @@ -275,6 +275,54 @@ void Cba_ManWriteVerilogBoxes( FILE * pFile, Cba_Ntk_t * p ) fprintf( pFile, "%s.%s(%s)", Cba_BoxBiNum(p, i) ? ", " : "", Mio_GateReadOutName(pGate), Cba_ObjNameStr(p, iTerm) ); fprintf( pFile, ");\n" ); } + else if ( Cba_BoxNtkId(p, i) ) + { + int pRanges[8]; char pSymbs[8]; + char * pName = Cba_BoxNtkName(p, i); + int nSigs = Cba_NtkNameRanges( pName, pRanges, pSymbs ); + int s, k, iTerm, nInputs = 0; + fprintf( pFile, " %s ( ", pName ); + for ( s = 0; s < nSigs-1; s++ ) + { + fprintf( pFile, "%s.%c(", nInputs ? ", " : "", pSymbs[s] ); + if ( pRanges[s] == 1 ) + { + iTerm = Cba_BoxBi(p, i, nInputs++); + fprintf( pFile, "%s", Cba_ObjNameStr(p, iTerm) ); + } + else + { + assert( pRanges[s] > 1 ); + fprintf( pFile, "{" ); + for ( k = 0; k < pRanges[s]; k++ ) + { + iTerm = Cba_BoxBi(p, i, nInputs++); + fprintf( pFile, "%s%s", k ? ", " : "", Cba_ObjNameStr(p, iTerm) ); + } + fprintf( pFile, "}" ); + } + fprintf( pFile, ")" ); + } + assert( nInputs == Cba_BoxBiNum(p, i) ); + fprintf( pFile, "%s.%c(", nInputs ? ", " : "", pSymbs[nSigs-1] ); + if ( pRanges[nSigs-1] == 1 ) + { + iTerm = Cba_BoxBo(p, i, 0); + fprintf( pFile, "%s", Cba_ObjNameStr(p, iTerm) ); + } + else + { + assert( pRanges[nSigs-1] > 1 ); + fprintf( pFile, "{" ); + for ( k = 0; k < pRanges[nSigs-1]; k++ ) + { + iTerm = Cba_BoxBo(p, i, k); + fprintf( pFile, "%s%s", k ? ", " : "", Cba_ObjNameStr(p, iTerm) ); + } + fprintf( pFile, "}" ); + } + fprintf( pFile, ") );\n" ); + } else { Cba_ObjType_t Type = Cba_ObjType( p, i ); |