📄 ntkapi.c
字号:
/**CFile**************************************************************** FileName [ntkApi.c] PackageName [MVSIS 2.0: Multi-valued logic synthesis system.] Synopsis [] Author [MVSIS Group] Affiliation [UC Berkeley] Date [Ver. 1.0. Started - February 1, 2003.] Revision [$Id: ntkApi.c,v 1.33 2003/05/27 23:14:20 alanmi Exp $]***********************************************************************/#include "ntkInt.h"/////////////////////////////////////////////////////////////////////////// DECLARATIONS ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FUNCTION DEFITIONS ////////////////////////////////////////////////////////////////////////////**Function************************************************************* Synopsis [Basic pin APIs] Description [] SideEffects [] SeeAlso []***********************************************************************/Ntk_Pin_t * Ntk_PinReadNext( Ntk_Pin_t * pPin ) { return pPin->pNext; }Ntk_Pin_t * Ntk_PinReadPrev( Ntk_Pin_t * pPin ) { return pPin->pPrev; }Ntk_Pin_t * Ntk_PinReadLink( Ntk_Pin_t * pPin ) { return pPin->pLink; }Ntk_Node_t * Ntk_PinReadNode( Ntk_Pin_t * pPin ) { return pPin->pNode; }/**Function************************************************************* Synopsis [Basic latch APIs] Description [] SideEffects [] SeeAlso []***********************************************************************/Ntk_Latch_t * Ntk_LatchReadNext ( Ntk_Latch_t * pLatch ) { return pLatch->pNext; }Ntk_Latch_t * Ntk_LatchReadPrev ( Ntk_Latch_t * pLatch ) { return pLatch->pPrev; }int Ntk_LatchReadReset ( Ntk_Latch_t * pLatch ) { return pLatch->Reset; }Ntk_Node_t * Ntk_LatchReadInput ( Ntk_Latch_t * pLatch ) { return pLatch->pInput; }Ntk_Node_t * Ntk_LatchReadOutput( Ntk_Latch_t * pLatch ) { return pLatch->pOutput;}Ntk_Node_t * Ntk_LatchReadNode ( Ntk_Latch_t * pLatch ) { return pLatch->pNode; }Ntk_Network_t * Ntk_LatchReadNet ( Ntk_Latch_t * pLatch ) { return pLatch->pNet; }char * Ntk_LatchReadData ( Ntk_Latch_t * pLatch ) { return pLatch->pData; }/**Function************************************************************* Synopsis [Basic node APIs] Description [] SideEffects [] SeeAlso []***********************************************************************/Ntk_Node_t * Ntk_NodeReadNext ( Ntk_Node_t * pNode ) { return pNode->pNext; }Ntk_Node_t * Ntk_NodeReadPrev ( Ntk_Node_t * pNode ) { return pNode->pPrev; }Ntk_Node_t * Ntk_NodeReadOrder ( Ntk_Node_t * pNode ) { return pNode->pOrder; }int Ntk_NodeReadId ( Ntk_Node_t * pNode ) { return pNode->Id; }char * Ntk_NodeReadName ( Ntk_Node_t * pNode ) { return pNode->pName; }Ntk_NodeType_t Ntk_NodeReadType ( Ntk_Node_t * pNode ) { return pNode->Type; }Ntk_NodeSubtype_t Ntk_NodeReadSubtype ( Ntk_Node_t * pNode ) { return pNode->Subtype;}int Ntk_NodeReadValueNum ( Ntk_Node_t * pNode ) { return pNode->nValues;}Ntk_Pin_t * Ntk_NodeReadFaninPinHead ( Ntk_Node_t * pNode ) { return pNode->lFanins.pHead; }Ntk_Pin_t * Ntk_NodeReadFaninPinTail ( Ntk_Node_t * pNode ) { return pNode->lFanins.pTail; }int Ntk_NodeReadFaninNum ( Ntk_Node_t * pNode ) { return pNode->lFanins.nItems; }Ntk_Pin_t * Ntk_NodeReadFanoutPinHead( Ntk_Node_t * pNode ) { return pNode->lFanouts.pHead; }Ntk_Pin_t * Ntk_NodeReadFanoutPinTail( Ntk_Node_t * pNode ) { return pNode->lFanouts.pTail; }int Ntk_NodeReadFanoutNum ( Ntk_Node_t * pNode ) { return pNode->lFanouts.nItems;}char * Ntk_NodeReadData ( Ntk_Node_t * pNode ) { return pNode->pData; }Ntk_Network_t * Ntk_NodeReadNetwork ( Ntk_Node_t * pNode ) { return pNode->pNet; }Fnc_Function_t * Ntk_NodeReadFunc ( Ntk_Node_t * pNode ) { return pNode->pF; }FILE * Ntk_NodeReadMvsisErr ( Ntk_Node_t * pNode ) { return Ntk_NetworkReadMvsisErr(pNode->pNet); }FILE * Ntk_NodeReadMvsisOut ( Ntk_Node_t * pNode ) { return Ntk_NetworkReadMvsisOut(pNode->pNet); }/**Function************************************************************* Synopsis [Node functionality APIs.] Description [] SideEffects [] SeeAlso []***********************************************************************/Vm_VarMap_t * Ntk_NodeReadFuncVm ( Ntk_Node_t * pNode ) { return Fnc_FunctionReadVm( pNode->pF ); }Cvr_Cover_t * Ntk_NodeReadFuncCvr ( Ntk_Node_t * pNode ) { return Fnc_FunctionReadCvr( pNode->pF ); }Mvr_Relation_t * Ntk_NodeReadFuncMvr ( Ntk_Node_t * pNode ) { return Fnc_FunctionReadMvr( pNode->pF ); }DdNode ** Ntk_NodeReadFuncGlo ( Ntk_Node_t * pNode ) { return Fnc_FunctionReadGlo( pNode->pF ); }Vm_VarMap_t * Ntk_NodeGetFuncVm ( Ntk_Node_t * pNode ) { return Fnc_FunctionGetVm( pNode->pF ); }Cvr_Cover_t * Ntk_NodeGetFuncCvr ( Ntk_Node_t * pNode ) { return Fnc_FunctionGetCvr( pNode->pNet->pMan, pNode->pF ); }Mvr_Relation_t * Ntk_NodeGetFuncMvr ( Ntk_Node_t * pNode ) { return Fnc_FunctionGetMvr( pNode->pNet->pMan, pNode->pF ); }DdNode ** Ntk_NodeGetFuncGlo ( Ntk_Node_t * pNode ) { return Fnc_FunctionGetGlo( pNode->pNet->pMan, pNode->pF ); }void Ntk_NodeWriteFuncVm ( Ntk_Node_t * pNode, Vm_VarMap_t * pVm ) { Fnc_FunctionWriteVm( pNode->pF, pVm ); }void Ntk_NodeWriteFuncCvr ( Ntk_Node_t * pNode, Cvr_Cover_t * pCvr ) { Fnc_FunctionWriteCvr( pNode->pF, pCvr ); }void Ntk_NodeWriteFuncMvr ( Ntk_Node_t * pNode, Mvr_Relation_t * pMvr ) { Fnc_FunctionWriteMvr( pNode->pF, pMvr ); }void Ntk_NodeWriteFuncGlo ( Ntk_Node_t * pNode, DdNode ** pGlo ) { Fnc_FunctionWriteGlo( pNode->pF, pGlo ); }void Ntk_NodeSetFuncVm ( Ntk_Node_t * pNode, Vm_VarMap_t * pVm ) { Fnc_FunctionSetVm( pNode->pF, pVm ); }void Ntk_NodeSetFuncCvr ( Ntk_Node_t * pNode, Cvr_Cover_t * pCvr ) { Fnc_FunctionSetCvr( pNode->pF, pCvr ); }void Ntk_NodeSetFuncMvr ( Ntk_Node_t * pNode, Mvr_Relation_t * pMvr ) { Fnc_FunctionSetMvr( pNode->pF, pMvr ); }void Ntk_NodeSetFuncGlo ( Ntk_Node_t * pNode, DdNode ** pGlo ) { Fnc_FunctionSetGlo( pNode->pF, pGlo ); }void Ntk_NodeFreeFuncVm ( Ntk_Node_t * pNode ) { Fnc_FunctionFreeVm( pNode->pF ); };void Ntk_NodeFreeFuncCvr( Ntk_Node_t * pNode ) { Fnc_FunctionFreeCvr( pNode->pF ); };void Ntk_NodeFreeFuncMvr( Ntk_Node_t * pNode ) { Fnc_FunctionFreeMvr( pNode->pF ); };void Ntk_NodeFreeFuncGlo( Ntk_Node_t * pNode ) { Fnc_FunctionFreeGlo( pNode->pF ); };Fnc_Manager_t * Ntk_NodeReadMan ( Ntk_Node_t * pNode ) { return Ntk_NetworkReadMan ( pNode->pNet ); };Mvr_Manager_t * Ntk_NodeReadManMvr( Ntk_Node_t * pNode ) { return Ntk_NetworkReadManMvr( pNode->pNet ); };Vm_Manager_t * Ntk_NodeReadManVm ( Ntk_Node_t * pNode ) { return Ntk_NetworkReadManVm ( pNode->pNet ); };Vmx_Manager_t * Ntk_NodeReadManVmx( Ntk_Node_t * pNode ) { return Ntk_NetworkReadManVmx( pNode->pNet ); };Mvc_Manager_t * Ntk_NodeReadManMvc( Ntk_Node_t * pNode ) { return Ntk_NetworkReadManMvc( pNode->pNet ); };/**Function************************************************************* Synopsis [Basic network APIs] Description [] SideEffects [] SeeAlso []***********************************************************************/char * Ntk_NetworkReadName ( Ntk_Network_t * pNet ) { return pNet->pName; }char * Ntk_NetworkReadSpec ( Ntk_Network_t * pNet ) { return pNet->pSpec; }Mv_Frame_t * Ntk_NetworkReadMvsis ( Ntk_Network_t * pNet ) { return pNet->pMvsis; }Ntk_Node_t * Ntk_NetworkReadCiHead ( Ntk_Network_t * pNet ) { return pNet->lCis.pHead; }Ntk_Node_t * Ntk_NetworkReadCiTail ( Ntk_Network_t * pNet ) { return pNet->lCis.pTail; }int Ntk_NetworkReadCiNum ( Ntk_Network_t * pNet ) { return pNet->lCis.nItems; }Ntk_Node_t * Ntk_NetworkReadCoHead ( Ntk_Network_t * pNet ) { return pNet->lCos.pHead; }Ntk_Node_t * Ntk_NetworkReadCoTail ( Ntk_Network_t * pNet ) { return pNet->lCos.pTail; }int Ntk_NetworkReadCoNum ( Ntk_Network_t * pNet ) { return pNet->lCos.nItems; }Ntk_Node_t * Ntk_NetworkReadNodeHead ( Ntk_Network_t * pNet ) { return pNet->lNodes.pHead; }Ntk_Node_t * Ntk_NetworkReadNodeTail ( Ntk_Network_t * pNet ) { return pNet->lNodes.pTail; }int Ntk_NetworkReadNodeIntNum( Ntk_Network_t * pNet ) { return pNet->lNodes.nItems; }Ntk_Latch_t * Ntk_NetworkReadLatchHead( Ntk_Network_t * pNet ) { return pNet->lLatches.pHead;}Ntk_Latch_t * Ntk_NetworkReadLatchTail( Ntk_Network_t * pNet ) { return pNet->lLatches.pTail;}int Ntk_NetworkReadLatchNum ( Ntk_Network_t * pNet ) { return pNet->lLatches.nItems;}Ntk_Node_t * Ntk_NetworkReadOrder ( Ntk_Network_t * pNet ) { return pNet->pOrder; }Ntk_Node_t * Ntk_NetworkReadOrderByLevel ( Ntk_Network_t * pNet, int Level ) { return pNet->ppLevels[Level]; }Fnc_Manager_t * Ntk_NetworkReadMan ( Ntk_Network_t * pNet ) { return pNet->pMan; }Mvr_Manager_t * Ntk_NetworkReadManMvr ( Ntk_Network_t * pNet ) { return Fnc_ManagerReadManMvr(pNet->pMan); }Vm_Manager_t * Ntk_NetworkReadManVm ( Ntk_Network_t * pNet ) { return Fnc_ManagerReadManVm(pNet->pMan); }Vmx_Manager_t * Ntk_NetworkReadManVmx ( Ntk_Network_t * pNet ) { return Fnc_ManagerReadManVmx(pNet->pMan); }Mvc_Manager_t * Ntk_NetworkReadManMvc ( Ntk_Network_t * pNet ) { return Fnc_ManagerReadManMvc(pNet->pMan); }DdManager * Ntk_NetworkReadManDdLoc ( Ntk_Network_t * pNet ) { return Mvr_ManagerReadDdLoc( Fnc_ManagerReadManMvr(pNet->pMan) ); }DdManager * Ntk_NetworkReadManDdGlo ( Ntk_Network_t * pNet ) { return Fnc_ManagerReadDdGlo(pNet->pMan); }Ntk_Network_t * Ntk_NetworkReadNetExdc ( Ntk_Network_t * pNet ) { return pNet->pNetExdc; }FILE * Ntk_NetworkReadMvsisErr ( Ntk_Network_t * pNet ) { return Mv_FrameReadErr( pNet->pMvsis); }FILE * Ntk_NetworkReadMvsisOut ( Ntk_Network_t * pNet ) { return Mv_FrameReadOut( pNet->pMvsis); }Ntk_Network_t * Ntk_NetworkReadBackup ( Ntk_Network_t * pNet ) { return pNet->pNetBackup; }int Ntk_NetworkReadStep ( Ntk_Network_t * pNet ) { return pNet->iStep; }/**Function************************************************************* Synopsis [Returns the total number of nodes in the network.] Description [] SideEffects [] SeeAlso []***********************************************************************/int Ntk_NetworkReadNodeTotalNum( Ntk_Network_t * pNet ){ return pNet->lNodes.nItems + pNet->lCis.nItems + pNet->lCos.nItems;}/**Function************************************************************* Synopsis [Returns the number of nodes that actually will be written into a file.] Description [] SideEffects [] SeeAlso []***********************************************************************/int Ntk_NetworkReadNodeWritableNum( Ntk_Network_t * pNet ){ Ntk_Node_t * pNode; int nNodes; nNodes = Ntk_NetworkReadCiNum( pNet ) + Ntk_NetworkReadCoNum( pNet ); Ntk_NetworkForEachNode( pNet, pNode ) if ( !Ntk_NodeHasCoName(pNode) ) nNodes++; return nNodes;}/**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso []***********************************************************************/void Ntk_NetworkSetNetExdc( Ntk_Network_t * pNet, Ntk_Network_t * pNetExdc ) { assert( pNet->pNetExdc == NULL ); pNet->pNetExdc = pNetExdc;}/**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso []***********************************************************************/void Ntk_NetworkSetName( Ntk_Network_t * pNet, char * pName ){ assert( pNet->pName == NULL ); pNet->pName = pName;}/**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso []***********************************************************************/void Ntk_NetworkSetSpec( Ntk_Network_t * pNet, char * pSpec ){ assert( pNet->pSpec == NULL ); pNet->pSpec = pSpec;}/**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso []***********************************************************************/void Ntk_NetworkSetMvsis( Ntk_Network_t * pNet, Mv_Frame_t * pMvsis ){ assert( pNet->pMvsis == NULL ); pNet->pMvsis = pMvsis;}/**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso []***********************************************************************/void Ntk_NetworkSetBackup( Ntk_Network_t * pNet, Ntk_Network_t * pNetBackup ){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -