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
ef20b0c5
Commit
ef20b0c5
authored
Apr 04, 2008
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Version abc80404
parent
69b5bcad
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
55 additions
and
32 deletions
+55
-32
src/aig/dar/darBalance.c
+10
-2
src/aig/dar/darRefact.c
+12
-1
src/aig/ntl/ntlExtract.c
+1
-1
src/aig/ntl/ntlReadBlif.c
+2
-2
src/aig/ntl/ntlTime.c
+2
-2
src/aig/nwk/nwkDfs.c
+2
-2
src/aig/nwk/nwkMap.c
+1
-1
src/aig/nwk/nwkStrash.c
+2
-2
src/aig/nwk/nwkTiming.c
+0
-0
src/aig/tim/tim.c
+0
-0
src/aig/tim/tim.h
+14
-10
src/base/abci/abc.c
+1
-1
src/map/if/ifMap.c
+2
-2
src/map/if/ifUtil.c
+6
-6
No files found.
src/aig/dar/darBalance.c
View file @
ef20b0c5
...
...
@@ -199,6 +199,14 @@ void Dar_BalancePermute( Aig_Man_t * p, Vec_Ptr_t * vSuper, int LeftBound, int f
Vec_PtrWriteEntry
(
vSuper
,
RightBound
,
pObj3
);
return
;
}
if
(
Aig_Regular
(
pObj1
)
==
Aig_Regular
(
pObj3
)
)
{
if
(
pObj3
==
pObj2
)
return
;
Vec_PtrWriteEntry
(
vSuper
,
i
,
pObj2
);
Vec_PtrWriteEntry
(
vSuper
,
RightBound
,
pObj3
);
return
;
}
pGhost
=
Aig_ObjCreateGhost
(
p
,
pObj1
,
pObj3
,
fExor
?
AIG_OBJ_EXOR
:
AIG_OBJ_AND
);
if
(
Aig_TableLookup
(
p
,
pGhost
)
)
{
...
...
@@ -394,7 +402,7 @@ Aig_Man_t * Dar_ManBalance( Aig_Man_t * p, int fUpdateLevel )
pObjNew
=
Aig_ObjCreatePi
(
pNew
);
pObj
->
pData
=
pObjNew
;
// set the arrival time of the new PI
arrTime
=
Tim_ManGet
P
iArrival
(
p
->
pManTime
,
Aig_ObjPioNum
(
pObj
)
);
arrTime
=
Tim_ManGet
C
iArrival
(
p
->
pManTime
,
Aig_ObjPioNum
(
pObj
)
);
pObjNew
->
Level
=
(
int
)
arrTime
;
}
else
if
(
Aig_ObjIsPo
(
pObj
)
)
...
...
@@ -406,7 +414,7 @@ Aig_Man_t * Dar_ManBalance( Aig_Man_t * p, int fUpdateLevel )
Aig_ObjCreatePo
(
pNew
,
pObjNew
);
// save arrival time of the output
arrTime
=
(
float
)
Aig_Regular
(
pObjNew
)
->
Level
;
Tim_ManSet
P
oArrival
(
p
->
pManTime
,
Aig_ObjPioNum
(
pObj
),
arrTime
);
Tim_ManSet
C
oArrival
(
p
->
pManTime
,
Aig_ObjPioNum
(
pObj
),
arrTime
);
}
else
assert
(
0
);
...
...
src/aig/dar/darRefact.c
View file @
ef20b0c5
...
...
@@ -600,10 +600,21 @@ p->timeOther = p->timeTotal - p->timeCuts - p->timeEval;
Aig_ManFanoutStop
(
pAig
);
if
(
p
->
pPars
->
fUpdateLevel
)
Aig_ManStopReverseLevels
(
pAig
);
/*
Aig_ManForEachObj( p->pAig, pObj, i )
if ( Aig_ObjIsNode(pObj) && Aig_ObjRefs(pObj) == 0 )
{
printf( "Unreferenced " );
Aig_ObjPrintVerbose( pObj, 0 );
printf( "\n" );
}
*/
// remove dangling nodes (they should not be here!)
Aig_ManCleanup
(
pAig
);
// stop the rewriting manager
Dar_ManRefStop
(
p
);
Aig_ManCheckPhase
(
pAig
);
//
Aig_ManCheckPhase( pAig );
if
(
!
Aig_ManCheck
(
pAig
)
)
{
printf
(
"Dar_ManRefactor: The network check has failed.
\n
"
);
...
...
src/aig/ntl/ntlExtract.c
View file @
ef20b0c5
...
...
@@ -387,7 +387,7 @@ int Ntl_ManExtract_rec( Ntl_Man_t * p, Ntl_Net_t * pNet )
// add box inputs/outputs to COs/CIs
if
(
Ntl_ObjIsBox
(
pObj
)
)
{
int
LevelCur
,
LevelMax
=
-
TIM
E
_ETERNITY
;
int
LevelCur
,
LevelMax
=
-
TIM_ETERNITY
;
Vec_IntPush
(
p
->
vBox1Cos
,
Aig_ManPoNum
(
p
->
pAig
)
);
Ntl_ObjForEachFanin
(
pObj
,
pNetFanin
,
i
)
{
...
...
src/aig/ntl/ntlReadBlif.c
View file @
ef20b0c5
...
...
@@ -974,9 +974,9 @@ static int Ioa_ReadParseLineTimes( Ioa_ReadMod_t * p, char * pLine, int fOutput
// find the delay number
pTokenNum
=
Vec_PtrEntryLast
(
vTokens
);
if
(
!
strcmp
(
pTokenNum
,
"-inf"
)
)
Delay
=
-
TIM
E
_ETERNITY
;
Delay
=
-
TIM_ETERNITY
;
else
if
(
!
strcmp
(
pTokenNum
,
"inf"
)
)
Delay
=
TIM
E
_ETERNITY
;
Delay
=
TIM_ETERNITY
;
else
Delay
=
atof
(
pTokenNum
);
if
(
Delay
==
0
.
0
&&
pTokenNum
[
0
]
!=
'0'
)
...
...
src/aig/ntl/ntlTime.c
View file @
ef20b0c5
...
...
@@ -90,11 +90,11 @@ Tim_Man_t * Ntl_ManCreateTiming( Ntl_Man_t * p )
// unpack the data in the arrival times
if
(
pRoot
->
vArrivals
)
Vec_IntForEachEntry
(
pRoot
->
vArrivals
,
Entry
,
i
)
Tim_ManInit
P
iArrival
(
pMan
,
Entry
,
Aig_Int2Float
(
Vec_IntEntry
(
pRoot
->
vArrivals
,
++
i
))
);
Tim_ManInit
C
iArrival
(
pMan
,
Entry
,
Aig_Int2Float
(
Vec_IntEntry
(
pRoot
->
vArrivals
,
++
i
))
);
// unpack the data in the required times
if
(
pRoot
->
vRequireds
)
Vec_IntForEachEntry
(
pRoot
->
vRequireds
,
Entry
,
i
)
Tim_ManInit
P
oRequired
(
pMan
,
Entry
,
Aig_Int2Float
(
Vec_IntEntry
(
pRoot
->
vRequireds
,
++
i
))
);
Tim_ManInit
C
oRequired
(
pMan
,
Entry
,
Aig_Int2Float
(
Vec_IntEntry
(
pRoot
->
vRequireds
,
++
i
))
);
// derive timing tables
vDelayTables
=
Vec_PtrAlloc
(
Vec_PtrSize
(
p
->
vModels
)
);
Ntl_ManForEachModel
(
p
,
pModel
,
i
)
...
...
src/aig/nwk/nwkDfs.c
View file @
ef20b0c5
...
...
@@ -114,14 +114,14 @@ int Nwk_ManLevelBackup( Nwk_Man_t * pNtk )
{
if
(
Nwk_ObjIsCi
(
pObj
)
)
{
Level
=
pManTimeUnit
?
(
int
)
Tim_ManGet
P
iArrival
(
pManTimeUnit
,
pObj
->
PioId
)
:
0
;
Level
=
pManTimeUnit
?
(
int
)
Tim_ManGet
C
iArrival
(
pManTimeUnit
,
pObj
->
PioId
)
:
0
;
Nwk_ObjSetLevel
(
pObj
,
Level
);
}
else
if
(
Nwk_ObjIsCo
(
pObj
)
)
{
Level
=
Nwk_ObjLevel
(
Nwk_ObjFanin0
(
pObj
)
);
if
(
pManTimeUnit
)
Tim_ManSet
P
oArrival
(
pManTimeUnit
,
pObj
->
PioId
,
(
float
)
Level
);
Tim_ManSet
C
oArrival
(
pManTimeUnit
,
pObj
->
PioId
,
(
float
)
Level
);
Nwk_ObjSetLevel
(
pObj
,
Level
);
if
(
LevelMax
<
Nwk_ObjLevel
(
pObj
)
)
LevelMax
=
Nwk_ObjLevel
(
pObj
);
...
...
src/aig/nwk/nwkMap.c
View file @
ef20b0c5
...
...
@@ -52,7 +52,7 @@ void Nwk_ManSetIfParsDefault( If_Par_t * pPars )
pPars
->
nFlowIters
=
1
;
pPars
->
nAreaIters
=
2
;
pPars
->
DelayTarget
=
-
1
;
pPars
->
Epsilon
=
(
float
)
0
.
00
1
;
pPars
->
Epsilon
=
(
float
)
0
.
00
5
;
pPars
->
fPreprocess
=
1
;
pPars
->
fArea
=
0
;
pPars
->
fFancy
=
0
;
...
...
src/aig/nwk/nwkStrash.c
View file @
ef20b0c5
...
...
@@ -114,14 +114,14 @@ Aig_Man_t * Nwk_ManStrash( Nwk_Man_t * pNtk )
if
(
Nwk_ObjIsCi
(
pObj
)
)
{
pObjNew
=
Aig_ObjCreatePi
(
pMan
);
Level
=
Tim_ManGet
P
iArrival
(
pMan
->
pManTime
,
pObj
->
PioId
);
Level
=
Tim_ManGet
C
iArrival
(
pMan
->
pManTime
,
pObj
->
PioId
);
Aig_ObjSetLevel
(
pObjNew
,
Level
);
}
else
if
(
Nwk_ObjIsCo
(
pObj
)
)
{
pObjNew
=
Aig_ObjCreatePo
(
pMan
,
Aig_NotCond
(
Nwk_ObjFanin0
(
pObj
)
->
pCopy
,
pObj
->
fCompl
)
);
Level
=
Aig_ObjLevel
(
pObjNew
);
Tim_ManSet
P
oArrival
(
pMan
->
pManTime
,
pObj
->
PioId
,
(
float
)
Level
);
Tim_ManSet
C
oArrival
(
pMan
->
pManTime
,
pObj
->
PioId
,
(
float
)
Level
);
}
else
if
(
Nwk_ObjIsNode
(
pObj
)
)
{
...
...
src/aig/nwk/nwkTiming.c
View file @
ef20b0c5
This diff is collapsed.
Click to expand it.
src/aig/tim/tim.c
View file @
ef20b0c5
This diff is collapsed.
Click to expand it.
src/aig/tim/tim.h
View file @
ef20b0c5
...
...
@@ -43,7 +43,7 @@ typedef struct Tim_Man_t_ Tim_Man_t;
/// MACRO DEFINITIONS ///
////////////////////////////////////////////////////////////////////////
#define TIM
E
_ETERNITY 10000
#define TIM_ETERNITY 10000
////////////////////////////////////////////////////////////////////////
/// ITERATORS ///
...
...
@@ -58,7 +58,7 @@ typedef struct Tim_Man_t_ Tim_Man_t;
////////////////////////////////////////////////////////////////////////
/*=== time.c ===========================================================*/
extern
Tim_Man_t
*
Tim_ManStart
(
int
n
Pis
,
int
nP
os
);
extern
Tim_Man_t
*
Tim_ManStart
(
int
n
Cis
,
int
nC
os
);
extern
Tim_Man_t
*
Tim_ManDup
(
Tim_Man_t
*
p
,
int
fDiscrete
);
extern
Tim_Man_t
*
Tim_ManDupUnit
(
Tim_Man_t
*
p
);
extern
Tim_Man_t
*
Tim_ManDupApprox
(
Tim_Man_t
*
p
);
...
...
@@ -68,18 +68,22 @@ extern void Tim_ManTravIdDisable( Tim_Man_t * p );
extern
void
Tim_ManTravIdEnable
(
Tim_Man_t
*
p
);
extern
void
Tim_ManSetCurrentTravIdBoxInputs
(
Tim_Man_t
*
p
,
int
iBox
);
extern
void
Tim_ManSetCurrentTravIdBoxOutputs
(
Tim_Man_t
*
p
,
int
iBox
);
extern
void
Tim_ManSetPreviousTravIdBoxInputs
(
Tim_Man_t
*
p
,
int
iBox
);
extern
void
Tim_ManSetPreviousTravIdBoxOutputs
(
Tim_Man_t
*
p
,
int
iBox
);
extern
int
Tim_ManIsCiTravIdCurrent
(
Tim_Man_t
*
p
,
int
iCi
);
extern
int
Tim_ManIsCoTravIdCurrent
(
Tim_Man_t
*
p
,
int
iCo
);
extern
void
Tim_ManSetDelayTables
(
Tim_Man_t
*
p
,
Vec_Ptr_t
*
vDelayTables
);
extern
void
Tim_ManCreateBox
(
Tim_Man_t
*
p
,
int
*
pIns
,
int
nIns
,
int
*
pOuts
,
int
nOuts
,
float
*
pDelayTable
);
extern
void
Tim_ManCreateBoxFirst
(
Tim_Man_t
*
p
,
int
firstIn
,
int
nIns
,
int
firstOut
,
int
nOuts
,
float
*
pDelayTable
);
extern
void
Tim_ManIncrementTravId
(
Tim_Man_t
*
p
);
extern
void
Tim_ManInit
PiArrival
(
Tim_Man_t
*
p
,
int
iP
i
,
float
Delay
);
extern
void
Tim_ManInit
PoRequired
(
Tim_Man_t
*
p
,
int
iP
o
,
float
Delay
);
extern
void
Tim_ManSet
PoArrival
(
Tim_Man_t
*
p
,
int
iP
o
,
float
Delay
);
extern
void
Tim_ManSet
PiRequired
(
Tim_Man_t
*
p
,
int
iP
i
,
float
Delay
);
extern
void
Tim_ManSet
PoRequired
(
Tim_Man_t
*
p
,
int
iP
o
,
float
Delay
);
extern
void
Tim_ManSet
P
oRequiredAll
(
Tim_Man_t
*
p
,
float
Delay
);
extern
float
Tim_ManGet
PiArrival
(
Tim_Man_t
*
p
,
int
iP
i
);
extern
float
Tim_ManGet
PoRequired
(
Tim_Man_t
*
p
,
int
iP
o
);
extern
void
Tim_ManInit
CiArrival
(
Tim_Man_t
*
p
,
int
iC
i
,
float
Delay
);
extern
void
Tim_ManInit
CoRequired
(
Tim_Man_t
*
p
,
int
iC
o
,
float
Delay
);
extern
void
Tim_ManSet
CoArrival
(
Tim_Man_t
*
p
,
int
iC
o
,
float
Delay
);
extern
void
Tim_ManSet
CiRequired
(
Tim_Man_t
*
p
,
int
iC
i
,
float
Delay
);
extern
void
Tim_ManSet
CoRequired
(
Tim_Man_t
*
p
,
int
iC
o
,
float
Delay
);
extern
void
Tim_ManSet
C
oRequiredAll
(
Tim_Man_t
*
p
,
float
Delay
);
extern
float
Tim_ManGet
CiArrival
(
Tim_Man_t
*
p
,
int
iC
i
);
extern
float
Tim_ManGet
CoRequired
(
Tim_Man_t
*
p
,
int
iC
o
);
extern
int
Tim_ManBoxForCi
(
Tim_Man_t
*
p
,
int
iCo
);
extern
int
Tim_ManBoxForCo
(
Tim_Man_t
*
p
,
int
iCi
);
extern
int
Tim_ManBoxInputFirst
(
Tim_Man_t
*
p
,
int
iBox
);
...
...
src/base/abci/abc.c
View file @
ef20b0c5
...
...
@@ -15780,7 +15780,7 @@ int Abc_CommandAbc8Cec( Abc_Frame_t * pAbc, int argc, char ** argv )
nConfLimit
=
10000
;
nPartSize
=
100
;
fSmart
=
0
;
fVerbose
=
0
;
fVerbose
=
0
;
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"CPsvh"
)
)
!=
EOF
)
{
...
...
src/map/if/ifMap.c
View file @
ef20b0c5
...
...
@@ -293,13 +293,13 @@ int If_ManPerformMappingRound( If_Man_t * p, int nCutsUsed, int Mode, int fPrepr
}
else
if
(
If_ObjIsCi
(
pObj
)
)
{
arrTime
=
Tim_ManGet
P
iArrival
(
p
->
pManTim
,
pObj
->
IdPio
);
arrTime
=
Tim_ManGet
C
iArrival
(
p
->
pManTim
,
pObj
->
IdPio
);
If_ObjSetArrTime
(
pObj
,
arrTime
);
}
else
if
(
If_ObjIsCo
(
pObj
)
)
{
arrTime
=
If_ObjArrTime
(
If_ObjFanin0
(
pObj
)
);
Tim_ManSet
P
oArrival
(
p
->
pManTim
,
pObj
->
IdPio
,
arrTime
);
Tim_ManSet
C
oArrival
(
p
->
pManTim
,
pObj
->
IdPio
,
arrTime
);
}
else
if
(
If_ObjIsConst1
(
pObj
)
)
{
...
...
src/map/if/ifUtil.c
View file @
ef20b0c5
...
...
@@ -234,15 +234,15 @@ void If_ManComputeRequired( If_Man_t * p )
{
assert
(
0
);
If_ManForEachPo
(
p
,
pObj
,
i
)
Tim_ManSet
P
oRequired
(
p
->
pManTim
,
pObj
->
IdPio
,
IF_FLOAT_LARGE
);
Tim_ManSet
C
oRequired
(
p
->
pManTim
,
pObj
->
IdPio
,
IF_FLOAT_LARGE
);
If_ManForEachLatchInput
(
p
,
pObj
,
i
)
Tim_ManSet
P
oRequired
(
p
->
pManTim
,
pObj
->
IdPio
,
p
->
RequiredGlo
);
Tim_ManSet
C
oRequired
(
p
->
pManTim
,
pObj
->
IdPio
,
p
->
RequiredGlo
);
}
else
{
Tim_ManSet
P
oRequiredAll
(
p
->
pManTim
,
p
->
RequiredGlo
);
Tim_ManSet
C
oRequiredAll
(
p
->
pManTim
,
p
->
RequiredGlo
);
// If_ManForEachCo( p, pObj, i )
// Tim_ManSet
P
oRequired( p->pManTim, pObj->IdPio, p->RequiredGlo );
// Tim_ManSet
C
oRequired( p->pManTim, pObj->IdPio, p->RequiredGlo );
}
// go through the nodes in the reverse topological order
If_ManForEachObjReverse
(
p
,
pObj
,
i
)
...
...
@@ -256,11 +256,11 @@ void If_ManComputeRequired( If_Man_t * p )
else
if
(
If_ObjIsCi
(
pObj
)
)
{
reqTime
=
pObj
->
Required
;
Tim_ManSet
P
iRequired
(
p
->
pManTim
,
pObj
->
IdPio
,
reqTime
);
Tim_ManSet
C
iRequired
(
p
->
pManTim
,
pObj
->
IdPio
,
reqTime
);
}
else
if
(
If_ObjIsCo
(
pObj
)
)
{
reqTime
=
Tim_ManGet
P
oRequired
(
p
->
pManTim
,
pObj
->
IdPio
);
reqTime
=
Tim_ManGet
C
oRequired
(
p
->
pManTim
,
pObj
->
IdPio
);
If_ObjFanin0
(
pObj
)
->
Required
=
IF_MIN
(
reqTime
,
If_ObjFanin0
(
pObj
)
->
Required
);
}
else
if
(
If_ObjIsConst1
(
pObj
)
)
...
...
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