Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
abc
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
abc
Commits
40d9b585
Commit
40d9b585
authored
Sep 23, 2012
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Testing GIA with time manager.
parent
f7caf84f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
114 additions
and
84 deletions
+114
-84
abclib.dsp
+4
-0
src/aig/aig/aigObj.c
+0
-1
src/aig/gia/gia.h
+1
-0
src/aig/gia/giaAiger.c
+1
-1
src/aig/gia/giaEquiv.c
+8
-20
src/aig/hop/hop.h
+9
-6
src/base/abci/abc.c
+15
-38
src/base/abci/abcTim.c
+0
-0
src/base/abci/module.make
+1
-0
src/misc/tim/tim.h
+3
-0
src/misc/tim/timBox.c
+58
-13
src/misc/tim/timDump.c
+6
-3
src/misc/tim/timInt.h
+1
-0
src/misc/tim/timMan.c
+7
-2
No files found.
abclib.dsp
View file @
40d9b585
...
@@ -451,6 +451,10 @@ SOURCE=.\src\base\abci\abcSymm.c
...
@@ -451,6 +451,10 @@ SOURCE=.\src\base\abci\abcSymm.c
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\src\base\abci\abcTim.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcTiming.c
SOURCE=.\src\base\abci\abcTiming.c
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
...
src/aig/aig/aigObj.c
View file @
40d9b585
...
@@ -315,7 +315,6 @@ void Aig_ObjPatchFanin0( Aig_Man_t * p, Aig_Obj_t * pObj, Aig_Obj_t * pFaninNew
...
@@ -315,7 +315,6 @@ void Aig_ObjPatchFanin0( Aig_Man_t * p, Aig_Obj_t * pObj, Aig_Obj_t * pFaninNew
***********************************************************************/
***********************************************************************/
void
Aig_ObjPrint
(
Aig_Man_t
*
p
,
Aig_Obj_t
*
pObj
)
void
Aig_ObjPrint
(
Aig_Man_t
*
p
,
Aig_Obj_t
*
pObj
)
{
{
int
fHaig
=
0
;
int
fShowFanouts
=
0
;
int
fShowFanouts
=
0
;
Aig_Obj_t
*
pTemp
;
Aig_Obj_t
*
pTemp
;
if
(
pObj
==
NULL
)
if
(
pObj
==
NULL
)
...
...
src/aig/gia/gia.h
View file @
40d9b585
...
@@ -281,6 +281,7 @@ static inline int Gia_ManAndNum( Gia_Man_t * p ) { return p->nObjs
...
@@ -281,6 +281,7 @@ static inline int Gia_ManAndNum( Gia_Man_t * p ) { return p->nObjs
static
inline
int
Gia_ManCandNum
(
Gia_Man_t
*
p
)
{
return
Gia_ManCiNum
(
p
)
+
Gia_ManAndNum
(
p
);
}
static
inline
int
Gia_ManCandNum
(
Gia_Man_t
*
p
)
{
return
Gia_ManCiNum
(
p
)
+
Gia_ManAndNum
(
p
);
}
static
inline
int
Gia_ManConstrNum
(
Gia_Man_t
*
p
)
{
return
p
->
nConstrs
;
}
static
inline
int
Gia_ManConstrNum
(
Gia_Man_t
*
p
)
{
return
p
->
nConstrs
;
}
static
inline
void
Gia_ManFlipVerbose
(
Gia_Man_t
*
p
)
{
p
->
fVerbose
^=
1
;
}
static
inline
void
Gia_ManFlipVerbose
(
Gia_Man_t
*
p
)
{
p
->
fVerbose
^=
1
;
}
static
inline
int
Gia_ManWithChoices
(
Gia_Man_t
*
p
)
{
return
p
->
pReprs
!=
NULL
;
}
static
inline
Gia_Obj_t
*
Gia_ManConst0
(
Gia_Man_t
*
p
)
{
return
p
->
pObjs
;
}
static
inline
Gia_Obj_t
*
Gia_ManConst0
(
Gia_Man_t
*
p
)
{
return
p
->
pObjs
;
}
static
inline
Gia_Obj_t
*
Gia_ManConst1
(
Gia_Man_t
*
p
)
{
return
Gia_Not
(
Gia_ManConst0
(
p
));
}
static
inline
Gia_Obj_t
*
Gia_ManConst1
(
Gia_Man_t
*
p
)
{
return
Gia_Not
(
Gia_ManConst0
(
p
));
}
...
...
src/aig/gia/giaAiger.c
View file @
40d9b585
...
@@ -1266,7 +1266,7 @@ unsigned char * Gia_WriteEquivClasses( Gia_Man_t * p, int * pEquivSize )
...
@@ -1266,7 +1266,7 @@ unsigned char * Gia_WriteEquivClasses( Gia_Man_t * p, int * pEquivSize )
Gia_ClassForEachObj
(
p
,
iRepr
,
iNode
)
Gia_ClassForEachObj
(
p
,
iRepr
,
iNode
)
nItems
++
;
nItems
++
;
}
}
pBuffer
=
ABC_ALLOC
(
unsigned
char
,
sizeof
(
int
)
*
(
nItems
+
1
)
);
pBuffer
=
ABC_ALLOC
(
unsigned
char
,
sizeof
(
int
)
*
(
nItems
+
1
0
)
);
// write constant class
// write constant class
iPos
=
Gia_WriteAigerEncode
(
pBuffer
,
4
,
Abc_Var2Lit
(
0
,
1
)
);
iPos
=
Gia_WriteAigerEncode
(
pBuffer
,
4
,
Abc_Var2Lit
(
0
,
1
)
);
//printf( "\nRepr = %d ", 0 );
//printf( "\nRepr = %d ", 0 );
...
...
src/aig/gia/giaEquiv.c
View file @
40d9b585
...
@@ -366,7 +366,7 @@ void Gia_ManReverseClasses( Gia_Man_t * p, int fNowIncreasing )
...
@@ -366,7 +366,7 @@ void Gia_ManReverseClasses( Gia_Man_t * p, int fNowIncreasing )
Gia_ManForEachClass
(
p
,
iRepr
)
Gia_ManForEachClass
(
p
,
iRepr
)
{
{
Vec_IntPush
(
vCollected
,
iRepr
);
Vec_IntPush
(
vCollected
,
iRepr
);
/*
// check classes
// check classes
if ( !fNowIncreasing )
if ( !fNowIncreasing )
{
{
...
@@ -384,20 +384,8 @@ void Gia_ManReverseClasses( Gia_Man_t * p, int fNowIncreasing )
...
@@ -384,20 +384,8 @@ void Gia_ManReverseClasses( Gia_Man_t * p, int fNowIncreasing )
iPrev = iNode;
iPrev = iNode;
}
}
}
}
*/
}
}
iRepr
=
129720
;
printf
(
"Class %d : "
,
iRepr
);
Gia_ClassForEachObj
(
p
,
iRepr
,
iNode
)
printf
(
" %d"
,
iNode
);
printf
(
"
\n
"
);
iRepr
=
129737
;
printf
(
"Class %d : "
,
iRepr
);
Gia_ClassForEachObj
(
p
,
iRepr
,
iNode
)
printf
(
" %d"
,
iNode
);
printf
(
"
\n
"
);
// correct each class
// correct each class
vClass
=
Vec_IntAlloc
(
100
);
vClass
=
Vec_IntAlloc
(
100
);
Vec_IntForEachEntry
(
vCollected
,
iRepr
,
i
)
Vec_IntForEachEntry
(
vCollected
,
iRepr
,
i
)
...
@@ -408,14 +396,14 @@ void Gia_ManReverseClasses( Gia_Man_t * p, int fNowIncreasing )
...
@@ -408,14 +396,14 @@ void Gia_ManReverseClasses( Gia_Man_t * p, int fNowIncreasing )
{
{
if
(
fNowIncreasing
)
if
(
fNowIncreasing
)
assert
(
iRepr
<
iNode
);
assert
(
iRepr
<
iNode
);
else
//
else
assert
(
iRepr
>
iNode
);
//
assert( iRepr > iNode );
Vec_IntPush
(
vClass
,
iNode
);
Vec_IntPush
(
vClass
,
iNode
);
}
}
//
if ( !fNowIncreasing )
if
(
!
fNowIncreasing
)
//
Vec_IntSort( vClass, 1 );
Vec_IntSort
(
vClass
,
1
);
if
(
iRepr
==
129720
||
iRepr
==
129737
)
//
if ( iRepr == 129720 || iRepr == 129737 )
Vec_IntPrint
(
vClass
);
//
Vec_IntPrint( vClass );
// reverse the class
// reverse the class
iPrev
=
0
;
iPrev
=
0
;
iRepr
=
Vec_IntEntryLast
(
vClass
);
iRepr
=
Vec_IntEntryLast
(
vClass
);
...
...
src/aig/hop/hop.h
View file @
40d9b585
...
@@ -64,11 +64,12 @@ typedef enum {
...
@@ -64,11 +64,12 @@ typedef enum {
// the AIG node
// the AIG node
struct
Hop_Obj_t_
// 6 words
struct
Hop_Obj_t_
// 6 words
{
{
void
*
pData
;
// misc
union
{
union
{
void
*
pData
;
// misc
int
iData
;
};
// misc
union
{
Hop_Obj_t
*
pNext
;
// strashing table
Hop_Obj_t
*
pNext
;
// strashing table
int
PioNum
;
// the number of PI/PO
int
PioNum
;
};
// the number of PI/PO
};
Hop_Obj_t
*
pFanin0
;
// fanin
Hop_Obj_t
*
pFanin0
;
// fanin
Hop_Obj_t
*
pFanin1
;
// fanin
Hop_Obj_t
*
pFanin1
;
// fanin
unsigned
int
Type
:
3
;
// object type
unsigned
int
Type
:
3
;
// object type
...
@@ -182,8 +183,10 @@ static inline Hop_Obj_t * Hop_ObjFanin0( Hop_Obj_t * pObj ) { return Hop_R
...
@@ -182,8 +183,10 @@ static inline Hop_Obj_t * Hop_ObjFanin0( Hop_Obj_t * pObj ) { return Hop_R
static
inline
Hop_Obj_t
*
Hop_ObjFanin1
(
Hop_Obj_t
*
pObj
)
{
return
Hop_Regular
(
pObj
->
pFanin1
);
}
static
inline
Hop_Obj_t
*
Hop_ObjFanin1
(
Hop_Obj_t
*
pObj
)
{
return
Hop_Regular
(
pObj
->
pFanin1
);
}
static
inline
Hop_Obj_t
*
Hop_ObjChild0
(
Hop_Obj_t
*
pObj
)
{
return
pObj
->
pFanin0
;
}
static
inline
Hop_Obj_t
*
Hop_ObjChild0
(
Hop_Obj_t
*
pObj
)
{
return
pObj
->
pFanin0
;
}
static
inline
Hop_Obj_t
*
Hop_ObjChild1
(
Hop_Obj_t
*
pObj
)
{
return
pObj
->
pFanin1
;
}
static
inline
Hop_Obj_t
*
Hop_ObjChild1
(
Hop_Obj_t
*
pObj
)
{
return
pObj
->
pFanin1
;
}
static
inline
Hop_Obj_t
*
Hop_ObjChild0Copy
(
Hop_Obj_t
*
pObj
)
{
assert
(
!
Hop_IsComplement
(
pObj
)
);
return
Hop_ObjFanin0
(
pObj
)?
Hop_NotCond
((
Hop_Obj_t
*
)
Hop_ObjFanin0
(
pObj
)
->
pData
,
Hop_ObjFaninC0
(
pObj
))
:
NULL
;
}
static
inline
Hop_Obj_t
*
Hop_ObjChild0Copy
(
Hop_Obj_t
*
pObj
)
{
assert
(
!
Hop_IsComplement
(
pObj
)
);
return
Hop_ObjFanin0
(
pObj
)?
Hop_NotCond
((
Hop_Obj_t
*
)
Hop_ObjFanin0
(
pObj
)
->
pData
,
Hop_ObjFaninC0
(
pObj
))
:
NULL
;
}
static
inline
Hop_Obj_t
*
Hop_ObjChild1Copy
(
Hop_Obj_t
*
pObj
)
{
assert
(
!
Hop_IsComplement
(
pObj
)
);
return
Hop_ObjFanin1
(
pObj
)?
Hop_NotCond
((
Hop_Obj_t
*
)
Hop_ObjFanin1
(
pObj
)
->
pData
,
Hop_ObjFaninC1
(
pObj
))
:
NULL
;
}
static
inline
Hop_Obj_t
*
Hop_ObjChild1Copy
(
Hop_Obj_t
*
pObj
)
{
assert
(
!
Hop_IsComplement
(
pObj
)
);
return
Hop_ObjFanin1
(
pObj
)?
Hop_NotCond
((
Hop_Obj_t
*
)
Hop_ObjFanin1
(
pObj
)
->
pData
,
Hop_ObjFaninC1
(
pObj
))
:
NULL
;
}
static
inline
int
Hop_ObjChild0CopyI
(
Hop_Obj_t
*
pObj
)
{
assert
(
!
Hop_IsComplement
(
pObj
)
);
return
Hop_ObjFanin0
(
pObj
)?
Abc_LitNotCond
(
Hop_ObjFanin0
(
pObj
)
->
iData
,
Hop_ObjFaninC0
(
pObj
))
:
-
1
;
}
static
inline
int
Hop_ObjChild1CopyI
(
Hop_Obj_t
*
pObj
)
{
assert
(
!
Hop_IsComplement
(
pObj
)
);
return
Hop_ObjFanin1
(
pObj
)?
Abc_LitNotCond
(
Hop_ObjFanin1
(
pObj
)
->
iData
,
Hop_ObjFaninC1
(
pObj
))
:
-
1
;
}
static
inline
int
Hop_ObjLevel
(
Hop_Obj_t
*
pObj
)
{
return
pObj
->
nRefs
;
}
static
inline
int
Hop_ObjLevel
(
Hop_Obj_t
*
pObj
)
{
return
pObj
->
nRefs
;
}
static
inline
int
Hop_ObjLevelNew
(
Hop_Obj_t
*
pObj
)
{
return
1
+
Hop_ObjIsExor
(
pObj
)
+
Abc_MaxInt
(
Hop_ObjFanin0
(
pObj
)
->
nRefs
,
Hop_ObjFanin1
(
pObj
)
->
nRefs
);
}
static
inline
int
Hop_ObjLevelNew
(
Hop_Obj_t
*
pObj
)
{
return
1
+
Hop_ObjIsExor
(
pObj
)
+
Abc_MaxInt
(
Hop_ObjFanin0
(
pObj
)
->
nRefs
,
Hop_ObjFanin1
(
pObj
)
->
nRefs
);
}
static
inline
int
Hop_ObjPhaseCompl
(
Hop_Obj_t
*
pObj
)
{
return
Hop_IsComplement
(
pObj
)?
!
Hop_Regular
(
pObj
)
->
fPhase
:
pObj
->
fPhase
;
}
static
inline
int
Hop_ObjPhaseCompl
(
Hop_Obj_t
*
pObj
)
{
return
Hop_IsComplement
(
pObj
)?
!
Hop_Regular
(
pObj
)
->
fPhase
:
pObj
->
fPhase
;
}
...
...
src/base/abci/abc.c
View file @
40d9b585
...
@@ -9282,27 +9282,27 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -9282,27 +9282,27 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
goto
usage
;
goto
usage
;
}
}
}
}
/*
if
(
pNtk
==
NULL
)
if
(
pNtk
==
NULL
)
{
{
Abc_Print
(
-
1
,
"Empty network.
\n
"
);
Abc_Print
(
-
1
,
"Empty network.
\n
"
);
return
1
;
return
1
;
}
}
*/
/*
if
(
Abc_NtkIsStrash
(
pNtk
)
)
if ( Abc_NtkLatchNum(pNtk) == 0 )
{
{
Abc_Print( -1, "
Only works for sequential
networks.\n" );
Abc_Print
(
-
1
,
"
This command works only for logic
networks.
\n
"
);
return
1
;
return
1
;
}
}
*/
/*
/*
if (
!Abc_NtkIsStrash(pNtk)
)
if (
Abc_NtkLatchNum(pNtk) == 0
)
{
{
Abc_Print( -1, "
Network should be strashed. Command has failed
.\n" );
Abc_Print( -1, "
Only works for sequential networks
.\n" );
return 1;
return 1;
}
}
*/
*/
/*
/*
if ( pNtk )
if ( pNtk )
{
{
...
@@ -9316,43 +9316,20 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -9316,43 +9316,20 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes );
Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes );
}
}
*/
*/
/*
{
// extern void Abs_VfaManTest( Aig_Man_t * pAig, int nFrames, int nConfLimit, int fVerbose );
extern
void
Aig_ManInterRepar
(
Aig_Man_t
*
pMan
,
int
fVerbose
);
extern
Aig_Man_t
*
Abc_NtkToDar
(
Abc_Ntk_t
*
pNtk
,
int
fExors
,
int
fRegisters
);
extern
void
Aig_ManSupportsTest
(
Aig_Man_t
*
pMan
);
extern
int
Aig_SupportSizeTest
(
Aig_Man_t
*
pMan
);
extern
int
Abc_NtkSuppSizeTest
(
Abc_Ntk_t
*
p
);
extern
Aig_Man_t
*
Iso_ManTest
(
Aig_Man_t
*
pAig
,
int
fVerbose
);
extern
Abc_Ntk_t
*
Abc_NtkFromAigPhase
(
Aig_Man_t
*
pMan
);
extern
Vec_Vec_t
*
Saig_IsoDetectFast
(
Aig_Man_t
*
pAig
);
extern
Aig_Man_t
*
Abc_NtkToDarBmc
(
Abc_Ntk_t
*
pNtk
,
Vec_Int_t
**
pvMap
);
extern
void
Abc2_NtkTestGia
(
char
*
pFileName
,
int
fVerbose
);
extern
void
Saig_ManBmcTerSimTestPo
(
Aig_Man_t
*
p
);
extern
int
Abc_SclCheckNtk
(
Abc_Ntk_t
*
p
);
extern
void
Abc_SclPerformBuffering
(
Abc_Ntk_t
*
p
,
int
Degree
);
if ( pNtk )
if ( pNtk )
{
{
/*
Aig_Man_t * pAig = Abc_NtkToDar( pNtk, 0, 1 );
Aig_Man_t * pAig = Abc_NtkToDar( pNtk, 0, 1 );
Saig_ManBmcTerSimTestPo( pAig );
Saig_ManBmcTerSimTestPo( pAig );
Aig_ManStop( pAig );
Aig_ManStop( pAig );
*/
Abc_SclPerformBuffering
(
pNtk
,
nDecMax
);
/*
extern Abc_Ntk_t * Abc_NtkShareXor( Abc_Ntk_t * pNtk );
Abc_Ntk_t * pNtkRes = Abc_NtkShareXor( pNtk );
if ( pNtkRes == NULL )
printf( "Transformation has failed.\n" );
else
Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes );
*/
}
}
*/
// Abc2_NtkTestGia( "", 1 );
if
(
pNtk
)
}
{
extern
void
Abc_NtkTestTim
(
Abc_Ntk_t
*
pNtk
,
int
fVerbose
);
Abc_NtkTestTim
(
pNtk
,
fVerbose
);
}
return
0
;
return
0
;
usage:
usage:
...
...
src/base/abci/abcTim.c
0 → 100644
View file @
40d9b585
This diff is collapsed.
Click to expand it.
src/base/abci/module.make
View file @
40d9b585
...
@@ -62,6 +62,7 @@ SRC += src/base/abci/abc.c \
...
@@ -62,6 +62,7 @@ SRC += src/base/abci/abc.c \
src/base/abci/abcStrash.c
\
src/base/abci/abcStrash.c
\
src/base/abci/abcSweep.c
\
src/base/abci/abcSweep.c
\
src/base/abci/abcSymm.c
\
src/base/abci/abcSymm.c
\
src/base/abci/abcTim.c
\
src/base/abci/abcTiming.c
\
src/base/abci/abcTiming.c
\
src/base/abci/abcUnate.c
\
src/base/abci/abcUnate.c
\
src/base/abci/abcUnreach.c
\
src/base/abci/abcUnreach.c
\
...
...
src/misc/tim/tim.h
View file @
40d9b585
...
@@ -64,7 +64,10 @@ extern int Tim_ManBoxInputFirst( Tim_Man_t * p, int iBox );
...
@@ -64,7 +64,10 @@ extern int Tim_ManBoxInputFirst( Tim_Man_t * p, int iBox );
extern
int
Tim_ManBoxOutputFirst
(
Tim_Man_t
*
p
,
int
iBox
);
extern
int
Tim_ManBoxOutputFirst
(
Tim_Man_t
*
p
,
int
iBox
);
extern
int
Tim_ManBoxInputNum
(
Tim_Man_t
*
p
,
int
iBox
);
extern
int
Tim_ManBoxInputNum
(
Tim_Man_t
*
p
,
int
iBox
);
extern
int
Tim_ManBoxOutputNum
(
Tim_Man_t
*
p
,
int
iBox
);
extern
int
Tim_ManBoxOutputNum
(
Tim_Man_t
*
p
,
int
iBox
);
extern
int
Tim_ManBoxDelayTableId
(
Tim_Man_t
*
p
,
int
iBox
);
extern
float
*
Tim_ManBoxDelayTable
(
Tim_Man_t
*
p
,
int
iBox
);
extern
float
*
Tim_ManBoxDelayTable
(
Tim_Man_t
*
p
,
int
iBox
);
extern
int
Tim_ManBoxCopy
(
Tim_Man_t
*
p
,
int
iBox
);
extern
void
Tim_ManBoxSetCopy
(
Tim_Man_t
*
p
,
int
iBox
,
int
iCopy
);
/*=== timDump.c ===========================================================*/
/*=== timDump.c ===========================================================*/
extern
Vec_Str_t
*
Tim_ManSave
(
Tim_Man_t
*
p
);
extern
Vec_Str_t
*
Tim_ManSave
(
Tim_Man_t
*
p
);
extern
Tim_Man_t
*
Tim_ManLoad
(
Vec_Str_t
*
p
);
extern
Tim_Man_t
*
Tim_ManLoad
(
Vec_Str_t
*
p
);
...
...
src/misc/tim/timBox.c
View file @
40d9b585
...
@@ -121,13 +121,12 @@ int Tim_ManBoxForCo( Tim_Man_t * p, int iCo )
...
@@ -121,13 +121,12 @@ int Tim_ManBoxForCo( Tim_Man_t * p, int iCo )
***********************************************************************/
***********************************************************************/
int
Tim_ManBoxInputFirst
(
Tim_Man_t
*
p
,
int
iBox
)
int
Tim_ManBoxInputFirst
(
Tim_Man_t
*
p
,
int
iBox
)
{
{
Tim_Box_t
*
pBox
=
(
Tim_Box_t
*
)
Vec_PtrEntry
(
p
->
vBoxes
,
iBox
);
return
Tim_ManBox
(
p
,
iBox
)
->
Inouts
[
0
];
return
pBox
->
Inouts
[
0
];
}
}
/**Function*************************************************************
/**Function*************************************************************
Synopsis [Returns the first
in
put of the box.]
Synopsis [Returns the first
out
put of the box.]
Description []
Description []
...
@@ -138,13 +137,12 @@ int Tim_ManBoxInputFirst( Tim_Man_t * p, int iBox )
...
@@ -138,13 +137,12 @@ int Tim_ManBoxInputFirst( Tim_Man_t * p, int iBox )
***********************************************************************/
***********************************************************************/
int
Tim_ManBoxOutputFirst
(
Tim_Man_t
*
p
,
int
iBox
)
int
Tim_ManBoxOutputFirst
(
Tim_Man_t
*
p
,
int
iBox
)
{
{
Tim_Box_t
*
pBox
=
(
Tim_Box_t
*
)
Vec_PtrEntry
(
p
->
vBoxes
,
iBox
);
return
Tim_ManBox
(
p
,
iBox
)
->
Inouts
[
Tim_ManBox
(
p
,
iBox
)
->
nInputs
];
return
pBox
->
Inouts
[
pBox
->
nInputs
];
}
}
/**Function*************************************************************
/**Function*************************************************************
Synopsis [Returns the
first input of the box
.]
Synopsis [Returns the
number of box inputs
.]
Description []
Description []
...
@@ -155,13 +153,12 @@ int Tim_ManBoxOutputFirst( Tim_Man_t * p, int iBox )
...
@@ -155,13 +153,12 @@ int Tim_ManBoxOutputFirst( Tim_Man_t * p, int iBox )
***********************************************************************/
***********************************************************************/
int
Tim_ManBoxInputNum
(
Tim_Man_t
*
p
,
int
iBox
)
int
Tim_ManBoxInputNum
(
Tim_Man_t
*
p
,
int
iBox
)
{
{
Tim_Box_t
*
pBox
=
(
Tim_Box_t
*
)
Vec_PtrEntry
(
p
->
vBoxes
,
iBox
);
return
Tim_ManBox
(
p
,
iBox
)
->
nInputs
;
return
pBox
->
nInputs
;
}
}
/**Function*************************************************************
/**Function*************************************************************
Synopsis [Returns the
first input of the box
.]
Synopsis [Returns the
number of box outputs
.]
Description []
Description []
...
@@ -172,13 +169,28 @@ int Tim_ManBoxInputNum( Tim_Man_t * p, int iBox )
...
@@ -172,13 +169,28 @@ int Tim_ManBoxInputNum( Tim_Man_t * p, int iBox )
***********************************************************************/
***********************************************************************/
int
Tim_ManBoxOutputNum
(
Tim_Man_t
*
p
,
int
iBox
)
int
Tim_ManBoxOutputNum
(
Tim_Man_t
*
p
,
int
iBox
)
{
{
Tim_Box_t
*
pBox
=
(
Tim_Box_t
*
)
Vec_PtrEntry
(
p
->
vBoxes
,
iBox
);
return
Tim_ManBox
(
p
,
iBox
)
->
nOutputs
;
return
pBox
->
nOutputs
;
}
/**Function*************************************************************
Synopsis [Return the delay table id.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int
Tim_ManBoxDelayTableId
(
Tim_Man_t
*
p
,
int
iBox
)
{
return
Tim_ManBox
(
p
,
iBox
)
->
iDelayTable
;
}
}
/**Function*************************************************************
/**Function*************************************************************
Synopsis []
Synopsis [
Return the delay table.
]
Description []
Description []
...
@@ -190,7 +202,7 @@ int Tim_ManBoxOutputNum( Tim_Man_t * p, int iBox )
...
@@ -190,7 +202,7 @@ int Tim_ManBoxOutputNum( Tim_Man_t * p, int iBox )
float
*
Tim_ManBoxDelayTable
(
Tim_Man_t
*
p
,
int
iBox
)
float
*
Tim_ManBoxDelayTable
(
Tim_Man_t
*
p
,
int
iBox
)
{
{
float
*
pTable
;
float
*
pTable
;
Tim_Box_t
*
pBox
=
(
Tim_Box_t
*
)
Vec_PtrEntry
(
p
->
vBoxes
,
iBox
);
Tim_Box_t
*
pBox
=
Tim_ManBox
(
p
,
iBox
);
if
(
pBox
->
iDelayTable
<
0
)
if
(
pBox
->
iDelayTable
<
0
)
return
NULL
;
return
NULL
;
pTable
=
(
float
*
)
Vec_PtrEntry
(
p
->
vDelayTables
,
pBox
->
iDelayTable
);
pTable
=
(
float
*
)
Vec_PtrEntry
(
p
->
vDelayTables
,
pBox
->
iDelayTable
);
...
@@ -199,6 +211,39 @@ float * Tim_ManBoxDelayTable( Tim_Man_t * p, int iBox )
...
@@ -199,6 +211,39 @@ float * Tim_ManBoxDelayTable( Tim_Man_t * p, int iBox )
return
pTable
;
return
pTable
;
}
}
/**Function*************************************************************
Synopsis [Returns the copy of the box.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int
Tim_ManBoxCopy
(
Tim_Man_t
*
p
,
int
iBox
)
{
return
Tim_ManBox
(
p
,
iBox
)
->
iCopy
;
}
/**Function*************************************************************
Synopsis [Sets the copy of the box.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void
Tim_ManBoxSetCopy
(
Tim_Man_t
*
p
,
int
iBox
,
int
iCopy
)
{
Tim_ManBox
(
p
,
iBox
)
->
iCopy
=
iCopy
;
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
...
...
src/misc/tim/timDump.c
View file @
40d9b585
...
@@ -62,13 +62,14 @@ Vec_Str_t * Tim_ManSave( Tim_Man_t * p )
...
@@ -62,13 +62,14 @@ Vec_Str_t * Tim_ManSave( Tim_Man_t * p )
Vec_StrPutI_ne
(
vStr
,
Tim_ManPoNum
(
p
)
);
Vec_StrPutI_ne
(
vStr
,
Tim_ManPoNum
(
p
)
);
// save number of boxes
// save number of boxes
Vec_StrPutI_ne
(
vStr
,
Tim_ManBoxNum
(
p
)
);
Vec_StrPutI_ne
(
vStr
,
Tim_ManBoxNum
(
p
)
);
// for each box, save num_inputs, num_outputs,
and delay table ID
// for each box, save num_inputs, num_outputs,
delay table ID, and copy field
if
(
Tim_ManBoxNum
(
p
)
>
0
)
if
(
Tim_ManBoxNum
(
p
)
>
0
)
Tim_ManForEachBox
(
p
,
pBox
,
i
)
Tim_ManForEachBox
(
p
,
pBox
,
i
)
{
{
Vec_StrPutI_ne
(
vStr
,
Tim_ManBoxInputNum
(
p
,
pBox
->
iBox
)
);
Vec_StrPutI_ne
(
vStr
,
Tim_ManBoxInputNum
(
p
,
pBox
->
iBox
)
);
Vec_StrPutI_ne
(
vStr
,
Tim_ManBoxOutputNum
(
p
,
pBox
->
iBox
)
);
Vec_StrPutI_ne
(
vStr
,
Tim_ManBoxOutputNum
(
p
,
pBox
->
iBox
)
);
Vec_StrPutI_ne
(
vStr
,
pBox
->
iDelayTable
);
// can be -1 if delay table is not given
Vec_StrPutI_ne
(
vStr
,
Tim_ManBoxDelayTableId
(
p
,
pBox
->
iBox
)
);
// can be -1 if delay table is not given
Vec_StrPutI_ne
(
vStr
,
Tim_ManBoxCopy
(
p
,
pBox
->
iBox
)
);
// can be -1 if the copy is node defined
}
}
// save the number of delay tables
// save the number of delay tables
Vec_StrPutI_ne
(
vStr
,
Tim_ManDelayTableNum
(
p
)
);
Vec_StrPutI_ne
(
vStr
,
Tim_ManDelayTableNum
(
p
)
);
...
@@ -110,7 +111,7 @@ Tim_Man_t * Tim_ManLoad( Vec_Str_t * p )
...
@@ -110,7 +111,7 @@ Tim_Man_t * Tim_ManLoad( Vec_Str_t * p )
{
{
Tim_Man_t
*
pMan
;
Tim_Man_t
*
pMan
;
int
VerNum
,
nCis
,
nCos
,
nPis
,
nPos
;
int
VerNum
,
nCis
,
nCos
,
nPis
,
nPos
;
int
nBoxes
,
nBoxIns
,
nBoxOuts
;
int
nBoxes
,
nBoxIns
,
nBoxOuts
,
CopyBox
;
int
TableId
,
nTables
,
TableSize
,
TableX
,
TableY
;
int
TableId
,
nTables
,
TableSize
,
TableX
,
TableY
;
int
i
,
k
,
curPi
,
curPo
,
iStr
=
0
;
int
i
,
k
,
curPi
,
curPo
,
iStr
=
0
;
float
*
pDelayTable
;
float
*
pDelayTable
;
...
@@ -138,7 +139,9 @@ Tim_Man_t * Tim_ManLoad( Vec_Str_t * p )
...
@@ -138,7 +139,9 @@ Tim_Man_t * Tim_ManLoad( Vec_Str_t * p )
nBoxIns
=
Vec_StrGetI_ne
(
p
,
&
iStr
);
nBoxIns
=
Vec_StrGetI_ne
(
p
,
&
iStr
);
nBoxOuts
=
Vec_StrGetI_ne
(
p
,
&
iStr
);
nBoxOuts
=
Vec_StrGetI_ne
(
p
,
&
iStr
);
TableId
=
Vec_StrGetI_ne
(
p
,
&
iStr
);
TableId
=
Vec_StrGetI_ne
(
p
,
&
iStr
);
CopyBox
=
Vec_StrGetI_ne
(
p
,
&
iStr
);
Tim_ManCreateBox
(
pMan
,
curPo
,
nBoxIns
,
curPi
,
nBoxOuts
,
TableId
);
Tim_ManCreateBox
(
pMan
,
curPo
,
nBoxIns
,
curPi
,
nBoxOuts
,
TableId
);
Tim_ManBoxSetCopy
(
pMan
,
i
,
CopyBox
);
curPi
+=
nBoxOuts
;
curPi
+=
nBoxOuts
;
curPo
+=
nBoxIns
;
curPo
+=
nBoxIns
;
}
}
...
...
src/misc/tim/timInt.h
View file @
40d9b585
...
@@ -70,6 +70,7 @@ struct Tim_Box_t_
...
@@ -70,6 +70,7 @@ struct Tim_Box_t_
int
nInputs
;
// the number of box inputs (POs)
int
nInputs
;
// the number of box inputs (POs)
int
nOutputs
;
// the number of box outputs (PIs)
int
nOutputs
;
// the number of box outputs (PIs)
int
iDelayTable
;
// index of the delay table
int
iDelayTable
;
// index of the delay table
int
iCopy
;
// copy of this box
int
Inouts
[
0
];
// the int numbers of PIs and POs
int
Inouts
[
0
];
// the int numbers of PIs and POs
};
};
...
...
src/misc/tim/timMan.c
View file @
40d9b585
...
@@ -186,7 +186,9 @@ void Tim_ManPrint( Tim_Man_t * p )
...
@@ -186,7 +186,9 @@ void Tim_ManPrint( Tim_Man_t * p )
Tim_Obj_t
*
pObj
,
*
pPrev
;
Tim_Obj_t
*
pObj
,
*
pPrev
;
float
*
pTable
;
float
*
pTable
;
int
i
,
j
,
k
,
TableX
,
TableY
;
int
i
,
j
,
k
,
TableX
,
TableY
;
printf
(
"TIMING INFORMATION:
\n
"
);
if
(
p
==
NULL
)
return
;
printf
(
"TIMING MANAGER:
\n
"
);
// print CI info
// print CI info
pPrev
=
p
->
pCis
;
pPrev
=
p
->
pCis
;
...
@@ -214,7 +216,10 @@ void Tim_ManPrint( Tim_Man_t * p )
...
@@ -214,7 +216,10 @@ void Tim_ManPrint( Tim_Man_t * p )
if
(
Tim_ManBoxNum
(
p
)
>
0
)
if
(
Tim_ManBoxNum
(
p
)
>
0
)
Tim_ManForEachBox
(
p
,
pBox
,
i
)
Tim_ManForEachBox
(
p
,
pBox
,
i
)
{
{
printf
(
"*** Box %5d : Ins = %4d. Outs = %4d. DelayTable = %4d
\n
"
,
i
,
pBox
->
nInputs
,
pBox
->
nOutputs
,
pBox
->
iDelayTable
);
printf
(
"*** Box %5d : I =%4d. O =%4d. I1 =%6d. O1 =%6d. Table =%4d
\n
"
,
i
,
pBox
->
nInputs
,
pBox
->
nOutputs
,
Tim_ManBoxInputFirst
(
p
,
i
),
Tim_ManBoxOutputFirst
(
p
,
i
),
pBox
->
iDelayTable
);
// print box inputs
// print box inputs
pPrev
=
Tim_ManBoxInput
(
p
,
pBox
,
0
);
pPrev
=
Tim_ManBoxInput
(
p
,
pBox
,
0
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment