mirror of https://github.com/YosysHQ/abc.git
Supporting wide MUX in NDR.
This commit is contained in:
parent
03b17916f8
commit
eb027885ee
|
|
@ -69,6 +69,7 @@ int Ndr_TypeNdr2Wlc( int Type )
|
||||||
if ( Type == ABC_OPER_LOGIC_AND ) return WLC_OBJ_LOGIC_AND; // 28: logic AND
|
if ( Type == ABC_OPER_LOGIC_AND ) return WLC_OBJ_LOGIC_AND; // 28: logic AND
|
||||||
if ( Type == ABC_OPER_LOGIC_OR ) return WLC_OBJ_LOGIC_OR; // 29: logic OR
|
if ( Type == ABC_OPER_LOGIC_OR ) return WLC_OBJ_LOGIC_OR; // 29: logic OR
|
||||||
if ( Type == ABC_OPER_LOGIC_XOR ) return WLC_OBJ_LOGIC_XOR; // 30: logic XOR
|
if ( Type == ABC_OPER_LOGIC_XOR ) return WLC_OBJ_LOGIC_XOR; // 30: logic XOR
|
||||||
|
if ( Type == ABC_OPER_SEL_NMUX ) return WLC_OBJ_MUX; // 08: multiplexer
|
||||||
if ( Type == ABC_OPER_COMP_EQU ) return WLC_OBJ_COMP_EQU; // 31: compare equal
|
if ( Type == ABC_OPER_COMP_EQU ) return WLC_OBJ_COMP_EQU; // 31: compare equal
|
||||||
if ( Type == ABC_OPER_COMP_NOTEQU ) return WLC_OBJ_COMP_NOTEQU; // 32: compare not equal
|
if ( Type == ABC_OPER_COMP_NOTEQU ) return WLC_OBJ_COMP_NOTEQU; // 32: compare not equal
|
||||||
if ( Type == ABC_OPER_COMP_LESS ) return WLC_OBJ_COMP_LESS; // 33: compare less
|
if ( Type == ABC_OPER_COMP_LESS ) return WLC_OBJ_COMP_LESS; // 33: compare less
|
||||||
|
|
@ -183,7 +184,7 @@ char * Ndr_ObjWriteConstant( unsigned * pBits, int nBits )
|
||||||
void * Wlc_NtkToNdr( Wlc_Ntk_t * pNtk )
|
void * Wlc_NtkToNdr( Wlc_Ntk_t * pNtk )
|
||||||
{
|
{
|
||||||
Wlc_Obj_t * pObj;
|
Wlc_Obj_t * pObj;
|
||||||
int i, k, iFanin, iOutId;
|
int i, k, iFanin, iOutId, Type;
|
||||||
// create a new module
|
// create a new module
|
||||||
void * pDesign = Ndr_Create( 1 );
|
void * pDesign = Ndr_Create( 1 );
|
||||||
int ModId = Ndr_AddModule( pDesign, 1 );
|
int ModId = Ndr_AddModule( pDesign, 1 );
|
||||||
|
|
@ -207,7 +208,11 @@ void * Wlc_NtkToNdr( Wlc_Ntk_t * pNtk )
|
||||||
Vec_IntPush( vFanins, iFanin );
|
Vec_IntPush( vFanins, iFanin );
|
||||||
if ( pObj->Type == WLC_OBJ_CONST )
|
if ( pObj->Type == WLC_OBJ_CONST )
|
||||||
pFunction = Ndr_ObjWriteConstant( (unsigned *)Wlc_ObjFanins(pObj), Wlc_ObjRange(pObj) );
|
pFunction = Ndr_ObjWriteConstant( (unsigned *)Wlc_ObjFanins(pObj), Wlc_ObjRange(pObj) );
|
||||||
Ndr_AddObject( pDesign, ModId, Ndr_TypeWlc2Ndr(pObj->Type), 0,
|
if ( pObj->Type == WLC_OBJ_MUX && Wlc_ObjRange(Wlc_ObjFanin0(pNtk, pObj)) > 1 )
|
||||||
|
Type = ABC_OPER_SEL_NMUX;
|
||||||
|
else
|
||||||
|
Type = Ndr_TypeWlc2Ndr(pObj->Type);
|
||||||
|
Ndr_AddObject( pDesign, ModId, Type, 0,
|
||||||
pObj->End, pObj->Beg, pObj->Signed,
|
pObj->End, pObj->Beg, pObj->Signed,
|
||||||
Vec_IntSize(vFanins), Vec_IntArray(vFanins), 1, &iOutId, pFunction );
|
Vec_IntSize(vFanins), Vec_IntArray(vFanins), 1, &iOutId, pFunction );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue