ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
abcOrder.c
Go to the documentation of this file.
1
20
21#include "base/abc/abc.h"
22
24
25
29
30static void Abc_NtkChangeCiOrder( Abc_Ntk_t * pNtk, Vec_Ptr_t * vSupp, int fReverse );
31
35
47void Abc_NtkFindCiOrder( Abc_Ntk_t * pNtk, int fReverse, int fVerbose )
48{
49 Vec_Ptr_t * vSupp;
50 vSupp = Abc_NtkSupport( pNtk );
51 Abc_NtkChangeCiOrder( pNtk, vSupp, fReverse );
52 Vec_PtrFree( vSupp );
53}
54
66void Abc_NtkImplementCiOrder( Abc_Ntk_t * pNtk, char * pFileName, int fReverse, int fVerbose )
67{
68 char Buffer[1000];
69 FILE * pFile;
70 Vec_Ptr_t * vSupp;
71 Abc_Obj_t * pObj;
72 pFile = fopen( pFileName, "r" );
73 vSupp = Vec_PtrAlloc( Abc_NtkCiNum(pNtk) );
74 while ( fscanf( pFile, "%s", Buffer ) == 1 )
75 {
76 pObj = Abc_NtkFindCi( pNtk, Buffer );
77 if ( pObj == NULL || !Abc_ObjIsCi(pObj) )
78 {
79 printf( "Name \"%s\" is not a PI name. Cannot use this order.\n", Buffer );
80 Vec_PtrFree( vSupp );
81 fclose( pFile );
82 return;
83 }
84 Vec_PtrPush( vSupp, pObj );
85 }
86 fclose( pFile );
87 if ( Vec_PtrSize(vSupp) != Abc_NtkCiNum(pNtk) )
88 {
89 printf( "The number of names in the order (%d) is not the same as the number of PIs (%d).\n", Vec_PtrSize(vSupp), Abc_NtkCiNum(pNtk) );
90 Vec_PtrFree( vSupp );
91 return;
92 }
93 Abc_NtkChangeCiOrder( pNtk, vSupp, fReverse );
94 Vec_PtrFree( vSupp );
95}
96
108void Abc_NtkChangeCiOrder( Abc_Ntk_t * pNtk, Vec_Ptr_t * vSupp, int fReverse )
109{
110 Abc_Obj_t * pObj;
111 int i;
112 assert( Vec_PtrSize(vSupp) == Abc_NtkCiNum(pNtk) );
113 // order CIs using the array
114 if ( fReverse )
115 Vec_PtrForEachEntry( Abc_Obj_t *, vSupp, pObj, i )
116 Vec_PtrWriteEntry( pNtk->vCis, Vec_PtrSize(vSupp)-1-i, pObj );
117 else
118 Vec_PtrForEachEntry( Abc_Obj_t *, vSupp, pObj, i )
119 Vec_PtrWriteEntry( pNtk->vCis, i, pObj );
120 // order PIs accordingly
121 Vec_PtrClear( pNtk->vPis );
122 Abc_NtkForEachCi( pNtk, pObj, i )
123 if ( Abc_ObjIsPi(pObj) )
124 Vec_PtrPush( pNtk->vPis, pObj );
125// Abc_NtkForEachCi( pNtk, pObj, i )
126// printf( "%s ", Abc_ObjName(pObj) );
127// printf( "\n" );
128}
129
133
134
136
void Abc_NtkFindCiOrder(Abc_Ntk_t *pNtk, int fReverse, int fVerbose)
FUNCTION DEFINITIONS ///.
Definition abcOrder.c:47
void Abc_NtkImplementCiOrder(Abc_Ntk_t *pNtk, char *pFileName, int fReverse, int fVerbose)
Definition abcOrder.c:66
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
ABC_DLL Abc_Obj_t * Abc_NtkFindCi(Abc_Ntk_t *pNtk, char *pName)
Definition abcObj.c:538
ABC_DLL Vec_Ptr_t * Abc_NtkSupport(Abc_Ntk_t *pNtk)
Definition abcDfs.c:859
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
#define Abc_NtkForEachCi(pNtk, pCi, i)
Definition abc.h:518
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
Vec_Ptr_t * vCis
Definition abc.h:165
Vec_Ptr_t * vPis
Definition abc.h:163
#define assert(ex)
Definition util_old.h:213
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Definition vecPtr.h:55