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
aadfea8b
Commit
aadfea8b
authored
10 years ago
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Integrating barrier buffers.
parent
b379b3ee
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
90 additions
and
11 deletions
+90
-11
src/base/abc/abc.h
+9
-0
src/base/abc/abcDfs.c
+5
-1
src/map/scl/sclLib.h
+1
-0
src/map/scl/sclLoad.c
+9
-0
src/map/scl/sclSize.h
+4
-1
src/map/scl/sclUpsize.c
+1
-1
src/map/scl/sclUtil.c
+61
-8
No files found.
src/base/abc/abc.h
View file @
aadfea8b
...
@@ -461,15 +461,24 @@ static inline void Abc_ObjSetMvVar( Abc_Obj_t * pObj, void * pV) { Vec_At
...
@@ -461,15 +461,24 @@ static inline void Abc_ObjSetMvVar( Abc_Obj_t * pObj, void * pV) { Vec_At
#define Abc_NtkForEachNode( pNtk, pNode, i ) \
#define Abc_NtkForEachNode( pNtk, pNode, i ) \
for ( i = 0; (i < Vec_PtrSize((pNtk)->vObjs)) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i++ ) \
for ( i = 0; (i < Vec_PtrSize((pNtk)->vObjs)) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i++ ) \
if ( (pNode) == NULL || !Abc_ObjIsNode(pNode) ) {} else
if ( (pNode) == NULL || !Abc_ObjIsNode(pNode) ) {} else
#define Abc_NtkForEachNodeNotBarBuf( pNtk, pNode, i ) \
for ( i = 0; (i < Vec_PtrSize((pNtk)->vObjs)) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i++ ) \
if ( (pNode) == NULL || !Abc_ObjIsNode(pNode) || Abc_ObjIsBarBuf(pNode) ) {} else
#define Abc_NtkForEachNode1( pNtk, pNode, i ) \
#define Abc_NtkForEachNode1( pNtk, pNode, i ) \
for ( i = 0; (i < Vec_PtrSize((pNtk)->vObjs)) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i++ ) \
for ( i = 0; (i < Vec_PtrSize((pNtk)->vObjs)) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i++ ) \
if ( (pNode) == NULL || !Abc_ObjIsNode(pNode) || !Abc_ObjFaninNum(pNode) ) {} else
if ( (pNode) == NULL || !Abc_ObjIsNode(pNode) || !Abc_ObjFaninNum(pNode) ) {} else
#define Abc_NtkForEachNodeNotBarBuf1( pNtk, pNode, i ) \
for ( i = 0; (i < Vec_PtrSize((pNtk)->vObjs)) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i++ ) \
if ( (pNode) == NULL || !Abc_ObjIsNode(pNode) || !Abc_ObjFaninNum(pNode) || Abc_ObjIsBarBuf(pNode) ) {} else
#define Abc_NtkForEachNodeReverse( pNtk, pNode, i ) \
#define Abc_NtkForEachNodeReverse( pNtk, pNode, i ) \
for ( i = Vec_PtrSize((pNtk)->vObjs) - 1; (i >= 0) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i-- ) \
for ( i = Vec_PtrSize((pNtk)->vObjs) - 1; (i >= 0) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i-- ) \
if ( (pNode) == NULL || !Abc_ObjIsNode(pNode) ) {} else
if ( (pNode) == NULL || !Abc_ObjIsNode(pNode) ) {} else
#define Abc_NtkForEachNodeReverse1( pNtk, pNode, i ) \
#define Abc_NtkForEachNodeReverse1( pNtk, pNode, i ) \
for ( i = Vec_PtrSize((pNtk)->vObjs) - 1; (i >= 0) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i-- ) \
for ( i = Vec_PtrSize((pNtk)->vObjs) - 1; (i >= 0) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i-- ) \
if ( (pNode) == NULL || !Abc_ObjIsNode(pNode) || !Abc_ObjFaninNum(pNode) ) {} else
if ( (pNode) == NULL || !Abc_ObjIsNode(pNode) || !Abc_ObjFaninNum(pNode) ) {} else
#define Abc_NtkForEachBarBuf( pNtk, pNode, i ) \
for ( i = 0; (i < Vec_PtrSize((pNtk)->vObjs)) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i++ ) \
if ( (pNode) == NULL || !Abc_ObjIsBarBuf(pNode) ) {} else
#define Abc_NtkForEachGate( pNtk, pNode, i ) \
#define Abc_NtkForEachGate( pNtk, pNode, i ) \
for ( i = 0; (i < Vec_PtrSize((pNtk)->vObjs)) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i++ ) \
for ( i = 0; (i < Vec_PtrSize((pNtk)->vObjs)) && (((pNode) = Abc_NtkObj(pNtk, i)), 1); i++ ) \
if ( (pNode) == NULL || !Abc_ObjIsGate(pNode) ) {} else
if ( (pNode) == NULL || !Abc_ObjIsGate(pNode) ) {} else
...
...
This diff is collapsed.
Click to expand it.
src/base/abc/abcDfs.c
View file @
aadfea8b
...
@@ -87,10 +87,14 @@ Vec_Ptr_t * Abc_NtkDfs( Abc_Ntk_t * pNtk, int fCollectAll )
...
@@ -87,10 +87,14 @@ Vec_Ptr_t * Abc_NtkDfs( Abc_Ntk_t * pNtk, int fCollectAll )
Abc_NtkIncrementTravId
(
pNtk
);
Abc_NtkIncrementTravId
(
pNtk
);
// start the array of nodes
// start the array of nodes
vNodes
=
Vec_PtrAlloc
(
100
);
vNodes
=
Vec_PtrAlloc
(
100
);
Abc_NtkForEach
Co
(
pNtk
,
pObj
,
i
)
Abc_NtkForEach
Obj
(
pNtk
,
pObj
,
i
)
{
{
if
(
!
Abc_ObjIsCo
(
pObj
)
||
!
Abc_ObjIsBarBuf
(
pObj
)
)
continue
;
Abc_NodeSetTravIdCurrent
(
pObj
);
Abc_NodeSetTravIdCurrent
(
pObj
);
Abc_NtkDfs_rec
(
Abc_ObjFanin0Ntk
(
Abc_ObjFanin0
(
pObj
)),
vNodes
);
Abc_NtkDfs_rec
(
Abc_ObjFanin0Ntk
(
Abc_ObjFanin0
(
pObj
)),
vNodes
);
if
(
Abc_ObjIsBarBuf
(
pObj
)
)
Vec_PtrPush
(
vNodes
,
pObj
);
}
}
// collect dangling nodes if asked to
// collect dangling nodes if asked to
if
(
fCollectAll
)
if
(
fCollectAll
)
...
...
This diff is collapsed.
Click to expand it.
src/map/scl/sclLib.h
View file @
aadfea8b
...
@@ -232,6 +232,7 @@ static inline float SC_PairMin( SC_Pair * d ) { return Abc
...
@@ -232,6 +232,7 @@ static inline float SC_PairMin( SC_Pair * d ) { return Abc
static
inline
float
SC_PairAve
(
SC_Pair
*
d
)
{
return
0
.
5
*
d
->
rise
+
0
.
5
*
d
->
fall
;
}
static
inline
float
SC_PairAve
(
SC_Pair
*
d
)
{
return
0
.
5
*
d
->
rise
+
0
.
5
*
d
->
fall
;
}
static
inline
void
SC_PairDup
(
SC_Pair
*
d
,
SC_Pair
*
s
)
{
*
d
=
*
s
;
}
static
inline
void
SC_PairDup
(
SC_Pair
*
d
,
SC_Pair
*
s
)
{
*
d
=
*
s
;
}
static
inline
void
SC_PairMove
(
SC_Pair
*
d
,
SC_Pair
*
s
)
{
*
d
=
*
s
;
s
->
rise
=
s
->
fall
=
0
;
}
static
inline
void
SC_PairMove
(
SC_Pair
*
d
,
SC_Pair
*
s
)
{
*
d
=
*
s
;
s
->
rise
=
s
->
fall
=
0
;
}
static
inline
void
SC_PairAdd
(
SC_Pair
*
d
,
SC_Pair
*
s
)
{
d
->
rise
+=
s
->
rise
;
d
->
fall
+=
s
->
fall
;}
static
inline
int
SC_PairEqual
(
SC_Pair
*
d
,
SC_Pair
*
s
)
{
return
d
->
rise
==
s
->
rise
&&
d
->
fall
==
s
->
fall
;
}
static
inline
int
SC_PairEqual
(
SC_Pair
*
d
,
SC_Pair
*
s
)
{
return
d
->
rise
==
s
->
rise
&&
d
->
fall
==
s
->
fall
;
}
static
inline
int
SC_PairEqualE
(
SC_Pair
*
d
,
SC_Pair
*
s
,
float
E
)
{
return
d
->
rise
-
s
->
rise
<
E
&&
s
->
rise
-
d
->
rise
<
E
&&
d
->
fall
-
s
->
fall
<
E
&&
s
->
fall
-
d
->
fall
<
E
;
}
static
inline
int
SC_PairEqualE
(
SC_Pair
*
d
,
SC_Pair
*
s
,
float
E
)
{
return
d
->
rise
-
s
->
rise
<
E
&&
s
->
rise
-
d
->
rise
<
E
&&
d
->
fall
-
s
->
fall
<
E
&&
s
->
fall
-
d
->
fall
<
E
;
}
...
...
This diff is collapsed.
Click to expand it.
src/map/scl/sclLoad.c
View file @
aadfea8b
...
@@ -154,6 +154,15 @@ void Abc_SclComputeLoad( SC_Man * p )
...
@@ -154,6 +154,15 @@ void Abc_SclComputeLoad( SC_Man * p )
printf
(
"Maximum input drive strength is exceeded at primary input %d.
\n
"
,
i
);
printf
(
"Maximum input drive strength is exceeded at primary input %d.
\n
"
,
i
);
}
}
}
}
/*
// transfer load from barbufs
Abc_NtkForEachBarBuf( p->pNtk, pObj, i )
{
SC_Pair * pLoad = Abc_SclObjLoad( p, pObj );
SC_Pair * pLoadF = Abc_SclObjLoad( p, Abc_ObjFanin(pObj, 0) );
SC_PairAdd( pLoadF, pLoad );
}
*/
// calculate average load
// calculate average load
// if ( p->EstLoadMax )
// if ( p->EstLoadMax )
{
{
...
...
This diff is collapsed.
Click to expand it.
src/map/scl/sclSize.h
View file @
aadfea8b
...
@@ -106,7 +106,8 @@ struct SC_Man_
...
@@ -106,7 +106,8 @@ struct SC_Man_
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
static
inline
SC_Lib
*
Abc_SclObjLib
(
Abc_Obj_t
*
p
)
{
return
(
SC_Lib
*
)
p
->
pNtk
->
pSCLib
;
}
static
inline
SC_Lib
*
Abc_SclObjLib
(
Abc_Obj_t
*
p
)
{
return
(
SC_Lib
*
)
p
->
pNtk
->
pSCLib
;
}
static
inline
SC_Cell
*
Abc_SclObjCell
(
Abc_Obj_t
*
p
)
{
return
SC_LibCell
(
Abc_SclObjLib
(
p
),
Vec_IntEntry
(
p
->
pNtk
->
vGates
,
Abc_ObjId
(
p
))
);
}
static
inline
int
Abc_SclObjCellId
(
Abc_Obj_t
*
p
)
{
return
Vec_IntEntry
(
p
->
pNtk
->
vGates
,
Abc_ObjId
(
p
)
);
}
static
inline
SC_Cell
*
Abc_SclObjCell
(
Abc_Obj_t
*
p
)
{
int
c
=
Abc_SclObjCellId
(
p
);
return
c
==
-
1
?
NULL
:
SC_LibCell
(
Abc_SclObjLib
(
p
),
c
);
}
static
inline
void
Abc_SclObjSetCell
(
Abc_Obj_t
*
p
,
SC_Cell
*
pCell
)
{
Vec_IntWriteEntry
(
p
->
pNtk
->
vGates
,
Abc_ObjId
(
p
),
pCell
->
Id
);
}
static
inline
void
Abc_SclObjSetCell
(
Abc_Obj_t
*
p
,
SC_Cell
*
pCell
)
{
Vec_IntWriteEntry
(
p
->
pNtk
->
vGates
,
Abc_ObjId
(
p
),
pCell
->
Id
);
}
static
inline
SC_Pair
*
Abc_SclObjLoad
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
p
->
pLoads
+
Abc_ObjId
(
pObj
);
}
static
inline
SC_Pair
*
Abc_SclObjLoad
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
p
->
pLoads
+
Abc_ObjId
(
pObj
);
}
...
@@ -579,6 +580,8 @@ extern void Abc_SclSclGates2MioGates( SC_Lib * pLib, Abc_Ntk_t * p );
...
@@ -579,6 +580,8 @@ extern void Abc_SclSclGates2MioGates( SC_Lib * pLib, Abc_Ntk_t * p );
extern
void
Abc_SclPrintGateSizes
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
);
extern
void
Abc_SclPrintGateSizes
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
);
extern
void
Abc_SclMinsizePerform
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
,
int
fUseMax
,
int
fVerbose
);
extern
void
Abc_SclMinsizePerform
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
,
int
fUseMax
,
int
fVerbose
);
extern
int
Abc_SclCountMinSize
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
,
int
fUseMax
);
extern
int
Abc_SclCountMinSize
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
,
int
fUseMax
);
extern
Vec_Int_t
*
Abc_SclExtractBarBufs
(
Abc_Ntk_t
*
pNtk
);
extern
void
Abc_SclInsertBarBufs
(
Abc_Ntk_t
*
pNtk
,
Vec_Int_t
*
vBufs
);
ABC_NAMESPACE_HEADER_END
ABC_NAMESPACE_HEADER_END
...
...
This diff is collapsed.
Click to expand it.
src/map/scl/sclUpsize.c
View file @
aadfea8b
...
@@ -844,7 +844,7 @@ void Abc_SclUpsizeRemoveDangling( SC_Man * p, Abc_Ntk_t * pNtk )
...
@@ -844,7 +844,7 @@ void Abc_SclUpsizeRemoveDangling( SC_Man * p, Abc_Ntk_t * pNtk )
SC_Cell
*
pCell
;
SC_Cell
*
pCell
;
Abc_Obj_t
*
pObj
;
Abc_Obj_t
*
pObj
;
int
i
;
int
i
;
Abc_NtkForEachNode
(
pNtk
,
pObj
,
i
)
Abc_NtkForEachNode
NotBarBuf
(
pNtk
,
pObj
,
i
)
if
(
Abc_ObjFanoutNum
(
pObj
)
==
0
)
if
(
Abc_ObjFanoutNum
(
pObj
)
==
0
)
{
{
pCell
=
Abc_SclObjCell
(
pObj
);
pCell
=
Abc_SclObjCell
(
pObj
);
...
...
This diff is collapsed.
Click to expand it.
src/map/scl/sclUtil.c
View file @
aadfea8b
...
@@ -47,33 +47,46 @@ ABC_NAMESPACE_IMPL_START
...
@@ -47,33 +47,46 @@ ABC_NAMESPACE_IMPL_START
void
Abc_SclMioGates2SclGates
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
)
void
Abc_SclMioGates2SclGates
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
)
{
{
Abc_Obj_t
*
pObj
;
Abc_Obj_t
*
pObj
;
int
i
;
int
i
,
gateId
,
bufferId
;
// find buffer
if
(
Mio_LibraryReadBuf
((
Mio_Library_t
*
)
p
->
pManFunc
)
==
NULL
)
{
printf
(
"Cannot find buffer in the current library. Quitting.
\n
"
);
return
;
}
bufferId
=
Abc_SclCellFind
(
pLib
,
Mio_GateReadName
(
Mio_LibraryReadBuf
((
Mio_Library_t
*
)
p
->
pManFunc
))
);
assert
(
bufferId
>=
0
);
// remap cells
assert
(
p
->
vGates
==
NULL
);
assert
(
p
->
vGates
==
NULL
);
p
->
vGates
=
Vec_IntStartFull
(
Abc_NtkObjNumMax
(
p
)
);
p
->
vGates
=
Vec_IntStartFull
(
Abc_NtkObjNumMax
(
p
)
);
Abc_NtkForEachNode1
(
p
,
pObj
,
i
)
Abc_NtkForEachNode1
(
p
,
pObj
,
i
)
{
{
char
*
pName
=
Mio_GateReadName
((
Mio_Gate_t
*
)
pObj
->
pData
);
if
(
Abc_ObjIsBarBuf
(
pObj
)
)
int
gateId
=
Abc_SclCellFind
(
pLib
,
pName
);
gateId
=
bufferId
;
else
gateId
=
Abc_SclCellFind
(
pLib
,
Mio_GateReadName
((
Mio_Gate_t
*
)
pObj
->
pData
)
);
assert
(
gateId
>=
0
);
assert
(
gateId
>=
0
);
Vec_IntWriteEntry
(
p
->
vGates
,
i
,
gateId
);
Vec_IntWriteEntry
(
p
->
vGates
,
i
,
gateId
);
//printf( "Found gate %s\n", pName );
}
}
p
->
pSCLib
=
pLib
;
p
->
pSCLib
=
pLib
;
}
}
void
Abc_SclSclGates2MioGates
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
)
void
Abc_SclSclGates2MioGates
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
)
{
{
Abc_Obj_t
*
pObj
;
Abc_Obj_t
*
pObj
;
SC_Cell
*
pCell
;
int
i
,
Counter
=
0
,
CounterAll
=
0
;
int
i
,
Counter
=
0
,
CounterAll
=
0
;
assert
(
p
->
vGates
!=
NULL
);
assert
(
p
->
vGates
!=
NULL
);
Abc_NtkForEachNode1
(
p
,
pObj
,
i
)
Abc_NtkForEachNode1
(
p
,
pObj
,
i
)
{
{
SC_Cell
*
pCell
=
Abc_SclObjCell
(
pObj
);
pCell
=
Abc_SclObjCell
(
pObj
);
assert
(
pCell
->
n_inputs
==
Abc_ObjFaninNum
(
pObj
)
);
assert
(
pCell
->
n_inputs
==
Abc_ObjFaninNum
(
pObj
)
);
pObj
->
pData
=
Mio_LibraryReadGateByName
(
(
Mio_Library_t
*
)
p
->
pManFunc
,
pCell
->
pName
,
NULL
);
if
(
Abc_ObjIsBarBuf
(
pObj
)
)
pObj
->
pData
=
NULL
;
else
pObj
->
pData
=
Mio_LibraryReadGateByName
(
(
Mio_Library_t
*
)
p
->
pManFunc
,
pCell
->
pName
,
NULL
);
Counter
+=
(
pObj
->
pData
==
NULL
);
Counter
+=
(
pObj
->
pData
==
NULL
);
assert
(
pObj
->
fMarkA
==
0
&&
pObj
->
fMarkB
==
0
);
assert
(
pObj
->
fMarkA
==
0
&&
pObj
->
fMarkB
==
0
);
CounterAll
++
;
CounterAll
++
;
//printf( "Found gate %s\n", pCell->name );
}
}
if
(
Counter
)
if
(
Counter
)
printf
(
"Could not find %d (out of %d) gates in the current library.
\n
"
,
Counter
,
CounterAll
);
printf
(
"Could not find %d (out of %d) gates in the current library.
\n
"
,
Counter
,
CounterAll
);
...
@@ -96,11 +109,12 @@ void Abc_SclSclGates2MioGates( SC_Lib * pLib, Abc_Ntk_t * p )
...
@@ -96,11 +109,12 @@ void Abc_SclSclGates2MioGates( SC_Lib * pLib, Abc_Ntk_t * p )
void
Abc_SclManPrintGateSizes
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
,
Vec_Int_t
*
vGates
)
void
Abc_SclManPrintGateSizes
(
SC_Lib
*
pLib
,
Abc_Ntk_t
*
p
,
Vec_Int_t
*
vGates
)
{
{
Abc_Obj_t
*
pObj
;
Abc_Obj_t
*
pObj
;
SC_Cell
*
pCell
;
int
i
,
nGates
=
0
,
Counters
[
ABC_SCL_MAX_SIZE
]
=
{
0
};
int
i
,
nGates
=
0
,
Counters
[
ABC_SCL_MAX_SIZE
]
=
{
0
};
double
TotArea
=
0
,
Areas
[
ABC_SCL_MAX_SIZE
]
=
{
0
};
double
TotArea
=
0
,
Areas
[
ABC_SCL_MAX_SIZE
]
=
{
0
};
Abc_NtkForEachNode1
(
p
,
pObj
,
i
)
Abc_NtkForEachNode1
(
p
,
pObj
,
i
)
{
{
SC_Cell
*
pCell
=
SC_LibCell
(
pLib
,
Vec_IntEntry
(
vGates
,
Abc_ObjId
(
pObj
))
);
pCell
=
SC_LibCell
(
pLib
,
Vec_IntEntry
(
vGates
,
Abc_ObjId
(
pObj
))
);
assert
(
pCell
->
Order
<
ABC_SCL_MAX_SIZE
);
assert
(
pCell
->
Order
<
ABC_SCL_MAX_SIZE
);
Counters
[
pCell
->
Order
]
++
;
Counters
[
pCell
->
Order
]
++
;
Areas
[
pCell
->
Order
]
+=
pCell
->
area
;
Areas
[
pCell
->
Order
]
+=
pCell
->
area
;
...
@@ -124,6 +138,7 @@ void Abc_SclPrintGateSizes( SC_Lib * pLib, Abc_Ntk_t * p )
...
@@ -124,6 +138,7 @@ void Abc_SclPrintGateSizes( SC_Lib * pLib, Abc_Ntk_t * p )
{
{
Abc_SclMioGates2SclGates
(
pLib
,
p
);
Abc_SclMioGates2SclGates
(
pLib
,
p
);
Abc_SclManPrintGateSizes
(
pLib
,
p
,
p
->
vGates
);
Abc_SclManPrintGateSizes
(
pLib
,
p
,
p
->
vGates
);
Abc_SclSclGates2MioGates
(
pLib
,
p
);
Vec_IntFreeP
(
&
p
->
vGates
);
Vec_IntFreeP
(
&
p
->
vGates
);
p
->
pSCLib
=
NULL
;
p
->
pSCLib
=
NULL
;
}
}
...
@@ -238,6 +253,44 @@ void Abc_SclReadTimingConstr( Abc_Frame_t * pAbc, char * pFileName, int fVerbose
...
@@ -238,6 +253,44 @@ void Abc_SclReadTimingConstr( Abc_Frame_t * pAbc, char * pFileName, int fVerbose
fclose
(
pFile
);
fclose
(
pFile
);
}
}
/**Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Int_t
*
Abc_SclExtractBarBufs
(
Abc_Ntk_t
*
pNtk
)
{
Vec_Int_t
*
vBufs
;
Mio_Gate_t
*
pBuffer
;
Abc_Obj_t
*
pObj
;
int
i
;
pBuffer
=
Mio_LibraryReadBuf
(
(
Mio_Library_t
*
)
pNtk
->
pManFunc
);
if
(
pBuffer
==
NULL
)
{
printf
(
"Cannot find buffer in the current library. Quitting.
\n
"
);
return
NULL
;
}
vBufs
=
Vec_IntAlloc
(
100
);
Abc_NtkForEachBarBuf
(
pNtk
,
pObj
,
i
)
{
assert
(
pObj
->
pData
==
NULL
);
pObj
->
pData
=
pBuffer
;
Vec_IntPush
(
vBufs
,
i
);
}
return
vBufs
;
}
void
Abc_SclInsertBarBufs
(
Abc_Ntk_t
*
pNtk
,
Vec_Int_t
*
vBufs
)
{
Abc_Obj_t
*
pObj
;
int
i
;
Abc_NtkForEachObjVec
(
vBufs
,
pNtk
,
pObj
,
i
)
pObj
->
pData
=
NULL
;
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
...
...
This diff is collapsed.
Click to expand it.
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