📄 ntk.h
字号:
/**CFile**************************************************************** FileName [ntk.h] PackageName [MVSIS 2.0: Multi-valued logic synthesis system.] Synopsis [Declarations of the network/node package.] Author [MVSIS Group] Affiliation [UC Berkeley] Date [Ver. 1.0. Started - February 1, 2003.] Revision [$Id: ntk.h,v 1.45 2003/05/27 23:14:20 alanmi Exp $]***********************************************************************/ #ifndef __NTK_H__#define __NTK_H__/////////////////////////////////////////////////////////////////////////// INCLUDES ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PARAMETERS ///////////////////////////////////////////////////////////////////////////// node types: no type, primary input, primary output, internaltypedef enum { MV_NODE_NONE, MV_NODE_CI, MV_NODE_CO, MV_NODE_INT } Ntk_NodeType_t;// node subtype for combinational inputs/outputs: // node is a PI/PO of the network; node is only an input/output a latchtypedef enum { MV_BELONGS_TO_NET, MV_BELONGS_TO_LATCH } Ntk_NodeSubtype_t;/////////////////////////////////////////////////////////////////////////// BASIC TYPES ///////////////////////////////////////////////////////////////////////////typedef struct NtkPinStruct Ntk_Pin_t; // fanin/fanout pin (16 bytes)typedef struct NtkNodeStruct Ntk_Node_t; // the node data structuretypedef struct NtkLatchStruct Ntk_Latch_t; // the latch data structuretypedef struct NtkNetworkStruct Ntk_Network_t; // the network data structuretypedef struct NtkNodeHeapStruct Ntk_NodeHeap_t; // the heap of nodes/////////////////////////////////////////////////////////////////////////// FUNCTION DEFITIONS ////////////////////////////////////////////////////////////////////////////*=== ntk.c ==========================================================*/extern void Ntk_Init( Mv_Frame_t * pMvsis );extern void Ntk_End( Mv_Frame_t * pMvsis );/*=== ntkApi.c =======================================================*/// "ntkApi.c" contains only simple lookup/insert type of APIs// more complex APIs are located in other files detailed below// data-access pin APIsextern Ntk_Pin_t * Ntk_PinReadNext( Ntk_Pin_t * pPin );extern Ntk_Pin_t * Ntk_PinReadPrev( Ntk_Pin_t * pPin );extern Ntk_Pin_t * Ntk_PinReadLink( Ntk_Pin_t * pPin );extern Ntk_Node_t * Ntk_PinReadNode( Ntk_Pin_t * pPin );// data-access latch APIsextern Ntk_Latch_t * Ntk_LatchReadNext( Ntk_Latch_t * pLatch );extern Ntk_Latch_t * Ntk_LatchReadPrev( Ntk_Latch_t * pLatch );extern int Ntk_LatchReadReset( Ntk_Latch_t * pLatch );extern Ntk_Node_t * Ntk_LatchReadInput( Ntk_Latch_t * pLatch );extern Ntk_Node_t * Ntk_LatchReadOutput( Ntk_Latch_t * pLatch );extern Ntk_Node_t * Ntk_LatchReadNode( Ntk_Latch_t * pLatch );extern Ntk_Network_t * Ntk_LatchReadNet( Ntk_Latch_t * pLatch );extern char * Ntk_LatchReadData( Ntk_Latch_t * pLatch );// data-access node APIsextern Ntk_Node_t * Ntk_NodeReadNext( Ntk_Node_t * pNode );extern Ntk_Node_t * Ntk_NodeReadPrev( Ntk_Node_t * pNode );extern Ntk_Node_t * Ntk_NodeReadOrder( Ntk_Node_t * pNode );extern int Ntk_NodeReadId( Ntk_Node_t * pNode );extern char * Ntk_NodeReadName( Ntk_Node_t * pNode );extern Ntk_NodeType_t Ntk_NodeReadType( Ntk_Node_t * pNode );extern Ntk_NodeSubtype_t Ntk_NodeReadSubtype( Ntk_Node_t * pNode );extern int Ntk_NodeReadValueNum( Ntk_Node_t * pNode );extern Ntk_Pin_t * Ntk_NodeReadFaninPinHead( Ntk_Node_t * pNode );extern Ntk_Pin_t * Ntk_NodeReadFaninPinTail( Ntk_Node_t * pNode );extern int Ntk_NodeReadFaninNum( Ntk_Node_t * pNode );extern Ntk_Pin_t * Ntk_NodeReadFanoutPinHead( Ntk_Node_t * pNode );extern Ntk_Pin_t * Ntk_NodeReadFanoutPinTail( Ntk_Node_t * pNode );extern int Ntk_NodeReadFanoutNum( Ntk_Node_t * pNode );extern char * Ntk_NodeReadData( Ntk_Node_t * pNode );extern Ntk_Network_t * Ntk_NodeReadNetwork( Ntk_Node_t * pNode );extern Fnc_Manager_t * Ntk_NodeReadMan( Ntk_Node_t * pNode );extern Fnc_Function_t * Ntk_NodeReadFunc( Ntk_Node_t * pNode );extern FILE * Ntk_NodeReadMvsisErr( Ntk_Node_t * pNode );extern FILE * Ntk_NodeReadMvsisOut( Ntk_Node_t * pNode );// node functionality APIsextern Vm_VarMap_t * Ntk_NodeReadFuncVm( Ntk_Node_t * pNode );extern Cvr_Cover_t * Ntk_NodeReadFuncCvr( Ntk_Node_t * pNode );extern Mvr_Relation_t * Ntk_NodeReadFuncMvr( Ntk_Node_t * pNode );extern DdNode ** Ntk_NodeReadFuncGlo( Ntk_Node_t * pNode );extern Vm_VarMap_t * Ntk_NodeGetFuncVm( Ntk_Node_t * pNode );extern Cvr_Cover_t * Ntk_NodeGetFuncCvr( Ntk_Node_t * pNode );extern Mvr_Relation_t * Ntk_NodeGetFuncMvr( Ntk_Node_t * pNode );extern DdNode ** Ntk_NodeGetFuncGlo( Ntk_Node_t * pNode );extern void Ntk_NodeWriteFuncVm( Ntk_Node_t * pNode, Vm_VarMap_t * pVm );extern void Ntk_NodeWriteFuncCvr( Ntk_Node_t * pNode, Cvr_Cover_t * pCvr );extern void Ntk_NodeWriteFuncMvr( Ntk_Node_t * pNode, Mvr_Relation_t * pMvr );extern void Ntk_NodeWriteFuncGlo( Ntk_Node_t * pNode, DdNode ** pGlo );extern void Ntk_NodeSetFuncVm( Ntk_Node_t * pNode, Vm_VarMap_t * pVm );extern void Ntk_NodeSetFuncCvr( Ntk_Node_t * pNode, Cvr_Cover_t * pCvr );extern void Ntk_NodeSetFuncMvr( Ntk_Node_t * pNode, Mvr_Relation_t * pMvr );extern void Ntk_NodeSetFuncGlo( Ntk_Node_t * pNode, DdNode ** pGlo );extern void Ntk_NodeFreeFuncVm( Ntk_Node_t * pNode );extern void Ntk_NodeFreeFuncCvr( Ntk_Node_t * pNode );extern void Ntk_NodeFreeFuncMvr( Ntk_Node_t * pNode );extern void Ntk_NodeFreeFuncGlo( Ntk_Node_t * pNode );extern int Ntk_NodeReadDefault( Ntk_Node_t * pNode );extern Fnc_Manager_t * Ntk_NodeReadMan ( Ntk_Node_t * pNode );extern Mvr_Manager_t * Ntk_NodeReadManMvr( Ntk_Node_t * pNode );extern Vm_Manager_t * Ntk_NodeReadManVm ( Ntk_Node_t * pNode );extern Vmx_Manager_t * Ntk_NodeReadManVmx( Ntk_Node_t * pNode );extern Mvc_Manager_t * Ntk_NodeReadManMvc( Ntk_Node_t * pNode );// data-access network APIsextern char * Ntk_NetworkReadName( Ntk_Network_t * pNet );extern char * Ntk_NetworkReadSpec( Ntk_Network_t * pNet );extern Mv_Frame_t * Ntk_NetworkReadMvsis( Ntk_Network_t * pNet );extern Ntk_Node_t * Ntk_NetworkReadCiHead( Ntk_Network_t * pNet ); // pi + latch outputsextern Ntk_Node_t * Ntk_NetworkReadCiTail( Ntk_Network_t * pNet );extern int Ntk_NetworkReadCiNum( Ntk_Network_t * pNet );extern Ntk_Node_t * Ntk_NetworkReadCoHead( Ntk_Network_t * pNet ); // po + latch inputsextern Ntk_Node_t * Ntk_NetworkReadCoTail( Ntk_Network_t * pNet );extern int Ntk_NetworkReadCoNum( Ntk_Network_t * pNet );extern Ntk_Node_t * Ntk_NetworkReadNodeHead( Ntk_Network_t * pNet ); // only intenalextern Ntk_Node_t * Ntk_NetworkReadNodeTail( Ntk_Network_t * pNet );extern int Ntk_NetworkReadNodeIntNum( Ntk_Network_t * pNet );extern Ntk_Latch_t * Ntk_NetworkReadLatchHead( Ntk_Network_t * pNet ); // latchesextern Ntk_Latch_t * Ntk_NetworkReadLatchTail( Ntk_Network_t * pNet );extern int Ntk_NetworkReadLatchNum( Ntk_Network_t * pNet );extern Ntk_Node_t * Ntk_NetworkReadOrder( Ntk_Network_t * pNet );extern Ntk_Node_t * Ntk_NetworkReadOrderByLevel( Ntk_Network_t * pNet, int Level );extern int Ntk_NetworkReadNodeTotalNum( Ntk_Network_t * pNet ); // sum total of all nodes (w/o latches)extern int Ntk_NetworkReadNodeWritableNum( Ntk_Network_t * pNet );extern FILE * Ntk_NetworkReadMvsisErr( Ntk_Network_t * pNet );extern FILE * Ntk_NetworkReadMvsisOut( Ntk_Network_t * pNet );extern Ntk_Network_t * Ntk_NetworkReadBackup( Ntk_Network_t * pNet );extern int Ntk_NetworkReadStep( Ntk_Network_t * pNet );// network functionality APIsextern Fnc_Manager_t * Ntk_NetworkReadMan( Ntk_Network_t * pNet );extern Vm_Manager_t * Ntk_NetworkReadManVm( Ntk_Network_t * pNet );extern Vmx_Manager_t * Ntk_NetworkReadManVmx( Ntk_Network_t * pNet );extern Mvc_Manager_t * Ntk_NetworkReadManMvc( Ntk_Network_t * pNet );extern Mvr_Manager_t * Ntk_NetworkReadManMvr( Ntk_Network_t * pNet );extern DdManager * Ntk_NetworkReadManDdLoc( Ntk_Network_t * pNet );extern DdManager * Ntk_NetworkReadManDdGlo( Ntk_Network_t * pNet );extern Ntk_Network_t * Ntk_NetworkReadNetExdc( Ntk_Network_t * pNet );// data-entry node APIsextern void Ntk_NodeSetName( Ntk_Node_t * pNode, char * pName );extern void Ntk_NodeSetSubtype( Ntk_Node_t * pNode, int Subtype );extern void Ntk_NodeSetValueNum( Ntk_Node_t * pNode, int nValues );extern void Ntk_NodeSetData( Ntk_Node_t * pNode, char * pData );extern void Ntk_NodeSetFuncCvr( Ntk_Node_t * pNode, Cvr_Cover_t * pCvr );extern void Ntk_NodeSetNetwork( Ntk_Node_t * pNode, Ntk_Network_t * pNet );// data-entry network APIsextern void Ntk_NetworkSetNetExdc( Ntk_Network_t * pNet, Ntk_Network_t * pNetExdc );extern void Ntk_NetworkSetName( Ntk_Network_t * pNet, char * pName );extern void Ntk_NetworkSetSpec( Ntk_Network_t * pNet, char * pName );extern void Ntk_NetworkSetMvsis( Ntk_Network_t * pNet, Mv_Frame_t * pMvsis );extern void Ntk_NetworkSetBackup( Ntk_Network_t * pNet, Ntk_Network_t * pNetBackup );extern void Ntk_NetworkSetStep( Ntk_Network_t * pNet, int iStep );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -