⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shapi.c

📁 主要进行大规模的电路综合
💻 C
字号:
/**CFile****************************************************************  FileName    [shApi.c]  PackageName [MVSIS 2.0: Multi-valued logic synthesis system.]  Synopsis    [Exported APIs of the structural hashing package.]  Author      [MVSIS Group]    Affiliation [UC Berkeley]  Date        [Ver. 1.0. Started - February 1, 2003.]  Revision    [$Id: shApi.c,v 1.2 2003/05/27 23:14:50 alanmi Exp $]***********************************************************************/#include "shInt.h"///////////////////////////////////////////////////////////////////////////                        DECLARATIONS                              //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////                     FUNCTION DEFITIONS                           ////////////////////////////////////////////////////////////////////////////**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/Sh_Node_t **   Sh_ManagerReadVars( Sh_Manager_t * p )          { return p->pVars;    }Sh_Node_t *    Sh_ManagerReadVar( Sh_Manager_t * p, int i )    { return p->pVars[i]; }int            Sh_ManagerReadVarsNum( Sh_Manager_t * p )       { return p->nVars;    }Sh_Node_t *    Sh_ManagerReadConst1( Sh_Manager_t * p )        { return p->pConst1;  }Sh_Manager_t * Sh_NetworkReadManager( Sh_Network_t * p )       { return p->pMan;     }int            Sh_NetworkReadInputNum( Sh_Network_t * p )      { return p->nInputs;  }int            Sh_NetworkReadOutputNum( Sh_Network_t * p )     { return p->nOutputs; }Sh_Node_t **   Sh_NetworkReadOutputs( Sh_Network_t * p )       { return p->ppOutputs; }Sh_Node_t *    Sh_NetworkReadOutput( Sh_Network_t * p, int i ) { return p->ppOutputs[i]; }int            Sh_NetworkReadNodeNum( Sh_Network_t * p )       { return p->nNodes;     }Vm_VarMap_t *  Sh_NetworkReadVmL( Sh_Network_t * p )           { return p->pVmL;     }Vm_VarMap_t *  Sh_NetworkReadVmR( Sh_Network_t * p )           { return p->pVmR;     }Vm_VarMap_t *  Sh_NetworkReadVmS( Sh_Network_t * p )           { return p->pVmS;     }Vm_VarMap_t *  Sh_NetworkReadVmLC( Sh_Network_t * p )          { return p->pVmLC;    }Vm_VarMap_t *  Sh_NetworkReadVmRC( Sh_Network_t * p )          { return p->pVmRC;    }void           Sh_NetworkSetVmL( Sh_Network_t * p, Vm_VarMap_t * pVm )   { p->pVmL  = pVm; }void           Sh_NetworkSetVmR( Sh_Network_t * p, Vm_VarMap_t * pVm )   { p->pVmR  = pVm; }void           Sh_NetworkSetVmS( Sh_Network_t * p, Vm_VarMap_t * pVm )   { p->pVmS  = pVm; }void           Sh_NetworkSetVmLC( Sh_Network_t * p, Vm_VarMap_t * pVm )  { p->pVmLC = pVm; }void           Sh_NetworkSetVmRC( Sh_Network_t * p, Vm_VarMap_t * pVm )  { p->pVmRC = pVm; }Sh_Node_t *    Sh_NodeReadOne( Sh_Node_t * p )                 { return p->pOne;     }Sh_Node_t *    Sh_NodeReadTwo( Sh_Node_t * p )                 { return p->pTwo;     }Sh_Node_t *    Sh_NodeReadOrder( Sh_Node_t * p )               { return p->pOrder;   }unsigned       Sh_NodeReadData( Sh_Node_t * p )                { return p->pData;    }void           Sh_NodeSetData( Sh_Node_t * p, unsigned uData ) { p->pData = uData;   }/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/Sh_Node_t ** Sh_NetworkAllocInputsCore( Sh_Network_t * p, int nInputsCore ){    assert( nInputsCore > 0 );    if ( p->nInputsCore > 0 )        FREE( p->ppInputsCore );    p->nInputsCore  = nInputsCore;    p->ppInputsCore = ALLOC( Sh_Node_t *, nInputsCore );    return p->ppInputsCore;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/Sh_Node_t ** Sh_NetworkAllocOutputsCore( Sh_Network_t * p, int nOutputsCore ){    assert( nOutputsCore > 0 );    if ( p->nOutputsCore > 0 )        FREE( p->ppOutputsCore );    p->nOutputsCore  = nOutputsCore;    p->ppOutputsCore = ALLOC( Sh_Node_t *, nOutputsCore );    return p->ppOutputsCore;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/Sh_Node_t ** Sh_NetworkAllocSpecials( Sh_Network_t * p, int nSpecials ){    assert( nSpecials > 0 );    if ( p->nSpecials > 0 )        FREE( p->ppSpecials );    p->nSpecials  = nSpecials;    p->ppSpecials = ALLOC( Sh_Node_t *, nSpecials );    return p->ppSpecials;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/Sh_Node_t * Sh_NodeAnd( Sh_Manager_t * p, Sh_Node_t * pNode1, Sh_Node_t * pNode2 ){    return Sh_CanonNodeAnd( p, pNode1, pNode2 );}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/Sh_Node_t * Sh_NodeOr( Sh_Manager_t * p, Sh_Node_t * pNode1, Sh_Node_t * pNode2 ){    return Sh_Not( Sh_CanonNodeAnd( p, Sh_Not(pNode1), Sh_Not(pNode2) ) );}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/Sh_Node_t * Sh_NodeExor( Sh_Manager_t * p, Sh_Node_t * pNode1, Sh_Node_t * pNode2 ){    Sh_Node_t * pAnd1, * pAnd2, * pRes;    pAnd1 = Sh_CanonNodeAnd( p, pNode1, Sh_Not(pNode2) );  shNodeRef( pAnd1 );    pAnd2 = Sh_CanonNodeAnd( p, Sh_Not(pNode1), pNode2 );  shNodeRef( pAnd2 );    pRes  = Sh_CanonNodeAnd( p, pAnd1, pAnd2 );            shNodeRef( pRes );    Sh_NodeRecursiveDeref( pAnd1 );    Sh_NodeRecursiveDeref( pAnd2 );    shNodeDeref( pRes );    return pRes;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/bool Sh_NodeIsAnd( Sh_Node_t * pNode ){    return shNodeIsAnd(pNode);}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/bool Sh_NodeIsVar( Sh_Node_t * pNode ){    return shNodeIsVar(pNode);}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/bool Sh_NodeIsConst( Sh_Node_t * pNode ){    return shNodeIsConst(pNode);}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Sh_NodeRef( Sh_Node_t * pNode )           {    shNodeRef(pNode);}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Sh_NodeDeref( Sh_Node_t * pNode )           {    shNodeDeref(pNode);}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Sh_NodeRecursiveDeref( Sh_Node_t * pNode ){/*    Sh_Node_t * pNodeR;    pNodeR = Sh_Regular(pNode);    assert( pNodeR->nRefs > 0 );    if ( --pNodeR->nRefs == 0 && pNodeR->pOne && pNodeR->pTwo )    {        Sh_NodeRecursiveDeref( pNodeR->pOne );        Sh_NodeRecursiveDeref( pNodeR->pTwo );    }*/}//////////////////////////////////////////////////////////////////////////                       END OF FILE                                ///////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -