Commit 0d24b4e4 by Alan Mishchenko

Bug fix in parsing hierarchical BLIF with mapping.

parent dd5a1f5d
...@@ -2377,6 +2377,8 @@ void Gia_ManDumpFiles( Gia_Man_t * p, int nCexesT, int nCexesV ) ...@@ -2377,6 +2377,8 @@ void Gia_ManDumpFiles( Gia_Man_t * p, int nCexesT, int nCexesV )
Vec_BitFree( vBitX ); Vec_BitFree( vBitX );
Vec_BitFree( vBitY ); Vec_BitFree( vBitY );
Res = 0;
} }
} }
......
...@@ -1420,8 +1420,8 @@ static int Io_MvParseLineSubckt( Io_MvMod_t * p, char * pLine ) ...@@ -1420,8 +1420,8 @@ static int Io_MvParseLineSubckt( Io_MvMod_t * p, char * pLine )
*/ */
if ( pName2 == NULL ) if ( pName2 == NULL )
{ {
Abc_Obj_t * pNode = Abc_NtkCreateNode( p->pNtk ); Abc_Obj_t * pNode = Abc_NtkCreateNodeConst0( p->pNtk );
pNode->pData = Abc_SopRegister( (Mem_Flex_t *)p->pNtk->pManFunc, " 0\n" ); //pNode->pData = Abc_SopRegister( (Mem_Flex_t *)p->pNtk->pManFunc, " 0\n" );
pNet = Abc_NtkFindOrCreateNet( p->pNtk, Abc_ObjNameSuffix(pNode, "abc") ); pNet = Abc_NtkFindOrCreateNet( p->pNtk, Abc_ObjNameSuffix(pNode, "abc") );
Abc_ObjAddFanin( pNet, pNode ); Abc_ObjAddFanin( pNet, pNode );
pTerm = Abc_NtkCreateBi( p->pNtk ); pTerm = Abc_NtkCreateBi( p->pNtk );
...@@ -2268,12 +2268,25 @@ static int Io_MvParseLineGateBlif( Io_MvMod_t * p, Vec_Ptr_t * vTokens ) ...@@ -2268,12 +2268,25 @@ static int Io_MvParseLineGateBlif( Io_MvMod_t * p, Vec_Ptr_t * vTokens )
} }
// if this is the first line with gate, update the network type // if this is the first line with gate, update the network type
if ( Abc_NtkNodeNum(p->pNtk) == 0 ) if ( Abc_NtkNodeNum(p->pNtk) == 0 && p->pNtk->ntkFunc == ABC_FUNC_SOP )
{ {
assert( p->pNtk->ntkFunc == ABC_FUNC_SOP ); assert( p->pNtk->ntkFunc == ABC_FUNC_SOP );
p->pNtk->ntkFunc = ABC_FUNC_MAP; p->pNtk->ntkFunc = ABC_FUNC_MAP;
Mem_FlexStop( (Mem_Flex_t *)p->pNtk->pManFunc, 0 ); Mem_FlexStop( (Mem_Flex_t *)p->pNtk->pManFunc, 0 );
p->pNtk->pManFunc = pGenlib; p->pNtk->pManFunc = pGenlib;
if ( p->pMan && p->pMan->pDesign && Vec_PtrSize(p->pMan->pDesign->vModules) > 0 )
{
Abc_Ntk_t * pModel; int k;
Vec_PtrForEachEntry( Abc_Ntk_t *, p->pMan->pDesign->vModules, pModel, k )
{
if ( pModel == p->pNtk )
continue;
assert( pModel->ntkFunc == ABC_FUNC_SOP );
pModel->ntkFunc = ABC_FUNC_MAP;
Mem_FlexStop( (Mem_Flex_t *)pModel->pManFunc, 0 );
pModel->pManFunc = pGenlib;
}
}
} }
// reorder the formal inputs to be in the same order as in the gate // reorder the formal inputs to be in the same order as in the gate
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment