48 int i, k, iObj, iFanin;
50 void * pDesign = Ndr_Create( 1 );
51 int ModId = Ndr_AddModule( pDesign, 1 );
56 Wln_ObjRangeEnd(
p, iObj), Wln_ObjRangeBeg(
p, iObj), Wln_ObjIsSigned(
p, iObj),
57 0, NULL, 1, &iObj, NULL );
60 vFanins = Vec_IntAlloc( 10 );
63 Vec_IntClear( vFanins );
65 Vec_IntPush( vFanins, iFanin );
66 Ndr_AddObject( pDesign, ModId, Wln_ObjType(
p, iObj), 0,
67 Wln_ObjRangeEnd(
p, iObj), Wln_ObjRangeBeg(
p, iObj), Wln_ObjIsSigned(
p, iObj),
68 Vec_IntSize(vFanins), Vec_IntArray(vFanins), 1, &iObj,
71 Vec_IntFree( vFanins );
76 Wln_ObjRangeEnd(
p, iObj), Wln_ObjRangeBeg(
p, iObj), Wln_ObjIsSigned(
p, iObj),
77 1, &iObj, 0, NULL, NULL );
84 Ndr_Write( pFileName, pDesign );
85 Ndr_Delete( pDesign );
86 printf(
"Dumped the current design into file \"%s\".\n", pFileName );
94 char ** ppNames =
ABC_ALLOC(
char *, Wln_NtkObjNum(
p) + 1 );
int i;
99 Ndr_WriteVerilog( NULL, pDesign, ppNames, 0 );
100 Ndr_Write(
"test.ndr", pDesign );
103 Ndr_Delete( pDesign );
122 int * pArray, nArray = Ndr_ObjReadArray(
p, Obj,
NDR_RANGE, &pArray );
123 int Signed = 0; *End = *Beg = 0;
129 *End = *Beg = pArray[0];
131 *End = pArray[0], *Beg = pArray[1];
137 printf(
"Node IDs and their fanins:\n" );
140 printf(
"%5d = ", iObj );
142 printf(
"%5d ", iFanin );
145 printf(
" Name Id %d ", Wln_ObjNameId(pNtk, iObj) );
146 if ( Wln_ObjIsPi(pNtk, iObj) )
148 if ( Wln_ObjIsPo(pNtk, iObj) )
160 int NameId = Ndr_ObjReadBody(
p, Obj,
NDR_OUTPUT );
165 printf(
"Internal object %d of type %s has no output name.\n", Obj, Abc_OperName(Type) );
168 if ( Vec_IntGetEntry(vMap, NameId) > 0 )
169 printf(
"Output name %d is used more than once (obj %d and obj %d).\n", NameId, Vec_IntGetEntry(vMap, NameId), Obj );
170 Vec_IntSetEntry( vMap, NameId, Obj );
175 int i, * pArray, nArray = Ndr_ObjReadArray(
p, Obj,
NDR_INPUT, &pArray );
176 for ( i = 0; i < nArray; i++ )
177 if ( Vec_IntGetEntry(vMap, pArray[i]) == 0 && !(Type ==
ABC_OPER_DFFRSE && (i >= 5 && i <= 7)) )
178 printf(
"Input name %d appearing as fanin %d of obj %d is not used as output name in any object.\n", pArray[i], i, Obj );
185 Vec_Int_t * vName2Obj, * vFanins = Vec_IntAlloc( 100 );
186 Vec_Ptr_t * vConstStrings = Vec_PtrAlloc( 100 );
187 int Mod = 2, i, k, iFanin, iObj, Obj, * pArray, nDigits, fFound, NameId, NameIdMax;
192 Wln_NtkCleanNameId( pNtk );
193 Wln_NtkCleanInstId( pNtk );
198 int NameId = Ndr_ObjReadBody(
p, Obj,
NDR_OUTPUT );
199 int InstId = Ndr_ObjReadBody(
p, Obj,
NDR_NAME );
200 Wln_ObjSetNameId( pNtk, iObj, NameId );
201 if ( InstId > 0 ) Wln_ObjSetInstId( pNtk, iObj, InstId );
207 int nArray = Ndr_ObjReadArray(
p, Obj,
NDR_INPUT, &pArray );
208 Vec_Int_t F = {nArray, nArray, pArray}, * vTemp = &F;
209 int iObj =
Wln_ObjAlloc( pNtk, Type, Signed, End, Beg );
210 int NameId = Ndr_ObjReadBody(
p, Obj,
NDR_OUTPUT );
211 int InstId = Ndr_ObjReadBody(
p, Obj,
NDR_NAME );
212 Vec_IntClear( vFanins );
213 Vec_IntAppend( vFanins, vTemp );
215 if ( Wln_ObjIsSlice(pNtk, iObj) )
217 else if ( Wln_ObjIsConst(pNtk, iObj) )
218 Vec_PtrPush( vConstStrings, (
char *)Ndr_ObjReadBodyP(
p, Obj,
NDR_FUNCTION) );
222 Wln_ObjSetNameId( pNtk, iObj, NameId );
223 if ( InstId > 0 ) Wln_ObjSetInstId( pNtk, iObj, InstId );
226 assert( Wln_ObjFaninNum(pNtk, iObj) == 2 );
227 Wln_ObjSetSigned( pNtk, Wln_ObjFanin0(pNtk, iObj) );
228 Wln_ObjSetSigned( pNtk, Wln_ObjFanin1(pNtk, iObj) );
235 int nArray = Ndr_ObjReadArray(
p, Obj,
NDR_INPUT, &pArray );
237 int NameId = Ndr_ObjReadBody(
p, Obj,
NDR_OUTPUT );
238 int InstId = Ndr_ObjReadBody(
p, Obj,
NDR_NAME );
239 assert( nArray == 1 && NameId == -1 && InstId == -1 );
242 Vec_IntFree( vFanins );
245 if ( Vec_IntCountPositive(&pNtk->
vInstIds) == 0 )
248 vName2Obj = Vec_IntInvert( &pNtk->
vNameIds, 0 );
251 Wln_ObjSetFanin( pNtk, i, k, Vec_IntEntry(vName2Obj, iFanin) );
252 Vec_IntFree(vName2Obj);
254 NameIdMax = Vec_IntFindMax(&pNtk->
vNameIds);
255 nDigits = Abc_Base10Log( NameIdMax+1 );
257 for ( i = 1; i <= NameIdMax; i++ )
259 char pName[1000];
sprintf( pName,
"s%0*d", (
unsigned char)nDigits, i );
261 assert( !fFound && i == NameId );
266 if ( Wln_ObjIsConst(pNtk, iObj) )
268 assert( i == Vec_PtrSize(vConstStrings) );
269 Vec_PtrFree( vConstStrings );
272 printf(
"Dumped design \"%s\" into file \"temp_ndr.v\".\n", pNtk->
pName );
300 void * pData = Ndr_Read( pFileName );
302 if ( pNtk )
return NULL;
310 Wln_Ntk_t * pNtk =
Wln_ReadNdr(
"D:\\temp\\brijesh\\for_alan_dff_warning\\work_fir_filter_fir_filter_proc_out.ndr" );
317void Wln_NtkRetimeTest(
char * pFileName,
int fIgnoreIO,
int fSkipSimple,
int fDump,
int fVerbose )
320 void * pData = Ndr_Read( pFileName );
325 printf(
"Retiming network is not available.\n" );
329 vMoves =
Wln_NtkRetime( pNtk, fIgnoreIO, fSkipSimple, fVerbose );
331 Vec_IntFree( vMoves );
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
#define Ndr_ModForEachObj(p, Mod, Obj)
struct Ndr_Data_t_ Ndr_Data_t
BASIC TYPES ///.
#define Ndr_ModForEachPo(p, Mod, Obj)
#define Ndr_ModForEachPi(p, Mod, Obj)
#define Ndr_ModForEachNode(p, Mod, Obj)
int Abc_NamStrFindOrAdd(Abc_Nam_t *p, char *pStr, int *pfFound)
Abc_Nam_t * Abc_NamStart(int nObjs, int nAveSize)
FUNCTION DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Wln_Ntk_t * Wln_ReadNdr(char *pFileName)
FUNCTION DECLARATIONS ///.
int Ndr_ObjGetRange(Ndr_Data_t *p, int Obj, int *End, int *Beg)
void Ndr_NtkPrintObjects(Wln_Ntk_t *pNtk)
Wln_Ntk_t * Wln_NtkFromNdr(void *pData, int fDump)
void Wln_NtkRetimeTest(char *pFileName, int fIgnoreIO, int fSkipSimple, int fDump, int fVerbose)
void Wln_NtkToNdrTest(Wln_Ntk_t *p)
void Wln_WriteNdr(Wln_Ntk_t *p, char *pFileName)
void Wln_NtkCheckIntegrity(void *pData)
ABC_NAMESPACE_IMPL_START void * Wln_NtkToNdr(Wln_Ntk_t *p)
DECLARATIONS ///.
void Wln_NtkStaticFanoutTest(Wln_Ntk_t *p)
void Wln_WriteVer(Wln_Ntk_t *p, char *pFileName)
void Wln_ObjSetSlice(Wln_Ntk_t *p, int iObj, int SliceId)
int Wln_NtkIsAcyclic(Wln_Ntk_t *p)
Wln_Ntk_t * Wln_NtkDupDfs(Wln_Ntk_t *p)
#define Wln_NtkForEachObjInternal(p, i)
Vec_Int_t * Wln_NtkRetime(Wln_Ntk_t *p, int fIgnoreIO, int fSkipSimple, int fVerbose)
#define Wln_ObjForEachFanin(p, iObj, iFanin, i)
#define Wln_NtkForEachPo(p, iPo, i)
void Wln_ObjAddFanin(Wln_Ntk_t *p, int iObj, int i)
char * Wln_ObjConstString(Wln_Ntk_t *p, int iObj)
char * Wln_ObjName(Wln_Ntk_t *p, int iObj)
DECLARATIONS ///.
void Wln_NtkFree(Wln_Ntk_t *p)
void Wln_NtkRetimeCreateDelayInfo(Wln_Ntk_t *pNtk)
#define Wln_NtkForEachPi(p, iPi, i)
int Wln_ObjAlloc(Wln_Ntk_t *p, int Type, int Signed, int End, int Beg)
struct Wln_Ntk_t_ Wln_Ntk_t
void Wln_ObjSetConst(Wln_Ntk_t *p, int iObj, int NameId)
#define Wln_NtkForEachObj(p, i)
MACRO DEFINITIONS ///.
Wln_Ntk_t * Wln_NtkAlloc(char *pName, int nObjsMax)
DECLARATIONS ///.
void Wln_NtkPrint(Wln_Ntk_t *p)
int Wln_ObjAddFanins(Wln_Ntk_t *p, int iObj, Vec_Int_t *vFanins)