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
c696ae95
Commit
c696ae95
authored
Sep 24, 2017
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Maintenance and updates.
parent
287f9efc
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
77 additions
and
12 deletions
+77
-12
src/aig/gia/giaIf.c
+4
-4
src/aig/gia/giaIiff.c
+6
-0
src/base/abci/abc.c
+9
-4
src/base/io/ioUtil.c
+1
-1
src/map/if/ifCut.c
+1
-1
src/map/if/ifMap.c
+2
-2
src/map/mio/mio.h
+4
-0
src/map/mio/mioInt.h
+6
-0
src/map/mio/mioUtils.c
+44
-0
No files found.
src/aig/gia/giaIf.c
View file @
c696ae95
...
@@ -1856,7 +1856,7 @@ Gia_Man_t * Gia_ManFromIfLogic( If_Man_t * pIfMan )
...
@@ -1856,7 +1856,7 @@ Gia_Man_t * Gia_ManFromIfLogic( If_Man_t * pIfMan )
{
{
pIfObj
->
iCopy
=
Gia_ManFromIfLogicCofVars
(
pNew
,
pIfMan
,
pCutBest
,
vLeaves
,
vLeaves2
,
vCover
,
vMapping
,
vMapping2
);
pIfObj
->
iCopy
=
Gia_ManFromIfLogicCofVars
(
pNew
,
pIfMan
,
pCutBest
,
vLeaves
,
vLeaves2
,
vCover
,
vMapping
,
vMapping2
);
}
}
else
if
(
(
pIfMan
->
pPars
->
fDeriveLuts
&&
pIfMan
->
pPars
->
fTruth
)
||
pIfMan
->
pPars
->
fUseDsd
||
pIfMan
->
pPars
->
fUseTtPerm
)
else
if
(
(
pIfMan
->
pPars
->
fDeriveLuts
&&
pIfMan
->
pPars
->
fTruth
)
||
pIfMan
->
pPars
->
fUseDsd
||
pIfMan
->
pPars
->
fUseTtPerm
||
pIfMan
->
pPars
->
pFuncCell2
)
{
{
word
*
pTruth
=
If_CutTruthW
(
pIfMan
,
pCutBest
);
word
*
pTruth
=
If_CutTruthW
(
pIfMan
,
pCutBest
);
if
(
pIfMan
->
pPars
->
fUseTtPerm
)
if
(
pIfMan
->
pPars
->
fUseTtPerm
)
...
@@ -2251,7 +2251,7 @@ Gia_Man_t * Gia_ManPerformMappingInt( Gia_Man_t * p, If_Par_t * pPars )
...
@@ -2251,7 +2251,7 @@ Gia_Man_t * Gia_ManPerformMappingInt( Gia_Man_t * p, If_Par_t * pPars )
ABC_FREE
(
p
->
pCellStr
);
ABC_FREE
(
p
->
pCellStr
);
Vec_IntFreeP
(
&
p
->
vConfigs
);
Vec_IntFreeP
(
&
p
->
vConfigs
);
// disable cut minimization when GIA strucure is needed
// disable cut minimization when GIA strucure is needed
if
(
!
pPars
->
fDelayOpt
&&
!
pPars
->
fDelayOptLut
&&
!
pPars
->
fDsdBalance
&&
!
pPars
->
fUserRecLib
&&
!
pPars
->
fUserSesLib
&&
!
pPars
->
fDeriveLuts
&&
!
pPars
->
fUseDsd
&&
!
pPars
->
fUseTtPerm
)
if
(
!
pPars
->
fDelayOpt
&&
!
pPars
->
fDelayOptLut
&&
!
pPars
->
fDsdBalance
&&
!
pPars
->
fUserRecLib
&&
!
pPars
->
fUserSesLib
&&
!
pPars
->
fDeriveLuts
&&
!
pPars
->
fUseDsd
&&
!
pPars
->
fUseTtPerm
&&
!
pPars
->
pFuncCell2
)
pPars
->
fCutMin
=
0
;
pPars
->
fCutMin
=
0
;
// translate into the mapper
// translate into the mapper
pIfMan
=
Gia_ManToIf
(
p
,
pPars
);
pIfMan
=
Gia_ManToIf
(
p
,
pPars
);
...
@@ -2291,6 +2291,8 @@ Gia_Man_t * Gia_ManPerformMappingInt( Gia_Man_t * p, If_Par_t * pPars )
...
@@ -2291,6 +2291,8 @@ Gia_Man_t * Gia_ManPerformMappingInt( Gia_Man_t * p, If_Par_t * pPars )
If_ManStop
(
pIfMan
);
If_ManStop
(
pIfMan
);
return
NULL
;
return
NULL
;
}
}
if
(
pPars
->
pFuncWrite
)
pPars
->
pFuncWrite
(
pIfMan
);
// transform the result of mapping into the new network
// transform the result of mapping into the new network
if
(
pIfMan
->
pPars
->
fDelayOpt
||
pIfMan
->
pPars
->
fDsdBalance
||
pIfMan
->
pPars
->
fUserRecLib
||
pIfMan
->
pPars
->
fUserSesLib
)
if
(
pIfMan
->
pPars
->
fDelayOpt
||
pIfMan
->
pPars
->
fDsdBalance
||
pIfMan
->
pPars
->
fUserRecLib
||
pIfMan
->
pPars
->
fUserSesLib
)
pNew
=
Gia_ManFromIfAig
(
pIfMan
);
pNew
=
Gia_ManFromIfAig
(
pIfMan
);
...
@@ -2304,8 +2306,6 @@ Gia_Man_t * Gia_ManPerformMappingInt( Gia_Man_t * p, If_Par_t * pPars )
...
@@ -2304,8 +2306,6 @@ Gia_Man_t * Gia_ManPerformMappingInt( Gia_Man_t * p, If_Par_t * pPars )
If_ManForEachCo
(
pIfMan
,
pIfObj
,
i
)
If_ManForEachCo
(
pIfMan
,
pIfObj
,
i
)
Vec_IntPush
(
p
->
vCoArrs
,
(
int
)
If_ObjArrTime
(
If_ObjFanin0
(
pIfObj
))
);
Vec_IntPush
(
p
->
vCoArrs
,
(
int
)
If_ObjArrTime
(
If_ObjFanin0
(
pIfObj
))
);
}
}
if
(
pPars
->
pFuncWrite
)
pPars
->
pFuncWrite
(
pIfMan
);
If_ManStop
(
pIfMan
);
If_ManStop
(
pIfMan
);
// transfer name
// transfer name
assert
(
pNew
->
pName
==
NULL
);
assert
(
pNew
->
pName
==
NULL
);
...
...
src/aig/gia/giaIiff.c
View file @
c696ae95
...
@@ -19,6 +19,8 @@
...
@@ -19,6 +19,8 @@
***********************************************************************/
***********************************************************************/
#include "gia.h"
#include "gia.h"
#include "misc/st/st.h"
#include "map/mio/mio.h"
ABC_NAMESPACE_IMPL_START
ABC_NAMESPACE_IMPL_START
...
@@ -42,6 +44,10 @@ ABC_NAMESPACE_IMPL_START
...
@@ -42,6 +44,10 @@ ABC_NAMESPACE_IMPL_START
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
int
Gia_ManDeriveMatches
(
Mio_Library_t
*
pLib
,
Vec_Ptr_t
**
pvNames
,
Vec_Wrd_t
**
pvTruths
,
Vec_Mem_t
**
pvTtMem
,
Vec_Int_t
**
pvTt2Match
,
Vec_Int_t
**
pvTt2Match4
,
Vec_Int_t
**
pvConfigs
)
{
return
0
;
}
Gia_Man_t
*
Gia_ManIiffTest
(
char
*
pFileName
,
Gia_Man_t
*
pGia
,
int
nLutSize
,
int
nNumCuts
,
int
fUseGates
,
int
fUseCells
,
int
fVerbose
)
Gia_Man_t
*
Gia_ManIiffTest
(
char
*
pFileName
,
Gia_Man_t
*
pGia
,
int
nLutSize
,
int
nNumCuts
,
int
fUseGates
,
int
fUseCells
,
int
fVerbose
)
{
{
return
NULL
;
return
NULL
;
...
...
src/base/abci/abc.c
View file @
c696ae95
...
@@ -35596,16 +35596,17 @@ usage:
...
@@ -35596,16 +35596,17 @@ usage:
***********************************************************************/
***********************************************************************/
int
Abc_CommandAbc9Iiff
(
Abc_Frame_t
*
pAbc
,
int
argc
,
char
**
argv
)
int
Abc_CommandAbc9Iiff
(
Abc_Frame_t
*
pAbc
,
int
argc
,
char
**
argv
)
{
{
extern
Gia_Man_t
*
Gia_ManIiffTest
(
char
*
pFileName
,
Gia_Man_t
*
pGia
,
int
nLutSize
,
int
nNumCuts
,
int
fUseGates
,
int
fUseCells
,
int
fVerbose
);
extern
Gia_Man_t
*
Gia_ManIiffTest
(
char
*
pFileName
,
Gia_Man_t
*
pGia
,
int
nLutSize
,
int
nNumCuts
,
int
fUseGates
,
int
fUseCells
,
int
f
UseLuts
,
int
f
Verbose
);
char
*
pFileName
=
NULL
;
char
*
pFileName
=
NULL
;
int
nLutSize
=
8
;
int
nLutSize
=
8
;
int
nNumCuts
=
12
;
int
nNumCuts
=
12
;
int
fUseGates
=
0
;
int
fUseGates
=
0
;
int
fUseCells
=
0
;
int
fUseCells
=
0
;
int
fUseLuts
=
0
;
int
c
,
fVerbose
=
0
;
int
c
,
fVerbose
=
0
;
Gia_Man_t
*
pNew
;
Gia_Man_t
*
pNew
;
Extra_UtilGetoptReset
();
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"KCgcvh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"KCgc
l
vh"
)
)
!=
EOF
)
{
{
switch
(
c
)
switch
(
c
)
{
{
...
@@ -35633,6 +35634,9 @@ int Abc_CommandAbc9Iiff( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -35633,6 +35634,9 @@ int Abc_CommandAbc9Iiff( Abc_Frame_t * pAbc, int argc, char ** argv )
case
'c'
:
case
'c'
:
fUseCells
^=
1
;
fUseCells
^=
1
;
break
;
break
;
case
'l'
:
fUseLuts
^=
1
;
break
;
case
'v'
:
case
'v'
:
fVerbose
^=
1
;
fVerbose
^=
1
;
break
;
break
;
...
@@ -35649,7 +35653,7 @@ int Abc_CommandAbc9Iiff( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -35649,7 +35653,7 @@ int Abc_CommandAbc9Iiff( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_Print
(
-
1
,
"Abc_CommandAbc9Iiff(): There is no AIG to map.
\n
"
);
Abc_Print
(
-
1
,
"Abc_CommandAbc9Iiff(): There is no AIG to map.
\n
"
);
return
1
;
return
1
;
}
}
pNew
=
Gia_ManIiffTest
(
pFileName
,
pAbc
->
pGia
,
nLutSize
,
nNumCuts
,
fUseGates
,
fUseCells
,
fVerbose
);
pNew
=
Gia_ManIiffTest
(
pFileName
,
pAbc
->
pGia
,
nLutSize
,
nNumCuts
,
fUseGates
,
fUseCells
,
f
UseLuts
,
f
Verbose
);
if
(
pNew
==
NULL
)
if
(
pNew
==
NULL
)
{
{
Abc_Print
(
-
1
,
"Abc_CommandAbc9Iiff(): Mapping has failed.
\n
"
);
Abc_Print
(
-
1
,
"Abc_CommandAbc9Iiff(): Mapping has failed.
\n
"
);
...
@@ -35659,12 +35663,13 @@ int Abc_CommandAbc9Iiff( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -35659,12 +35663,13 @@ int Abc_CommandAbc9Iiff( Abc_Frame_t * pAbc, int argc, char ** argv )
return
0
;
return
0
;
usage:
usage:
Abc_Print
(
-
2
,
"usage: &iiff [-KC num] [-gcvh] <file>
\n
"
);
Abc_Print
(
-
2
,
"usage: &iiff [-KC num] [-gc
l
vh] <file>
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs techology mapping
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs techology mapping
\n
"
);
Abc_Print
(
-
2
,
"
\t
-K num : the maximum LUT size [default = %d]
\n
"
,
nLutSize
);
Abc_Print
(
-
2
,
"
\t
-K num : the maximum LUT size [default = %d]
\n
"
,
nLutSize
);
Abc_Print
(
-
2
,
"
\t
-C num : the maximum cut count [default = %d]
\n
"
,
nNumCuts
);
Abc_Print
(
-
2
,
"
\t
-C num : the maximum cut count [default = %d]
\n
"
,
nNumCuts
);
Abc_Print
(
-
2
,
"
\t
-g : toggle using gates [default = %s]
\n
"
,
fUseGates
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-g : toggle using gates [default = %s]
\n
"
,
fUseGates
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-c : toggle using cells [default = %s]
\n
"
,
fUseCells
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-c : toggle using cells [default = %s]
\n
"
,
fUseCells
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-l : toggle using LUTs [default = %s]
\n
"
,
fUseLuts
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : toggle verbose output [default = %s]
\n
"
,
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : toggle verbose output [default = %s]
\n
"
,
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-h : print the command usage
\n
"
);
Abc_Print
(
-
2
,
"
\t
-h : print the command usage
\n
"
);
Abc_Print
(
-
2
,
"
\t
<file> : (optional) output file name
\n
"
);
Abc_Print
(
-
2
,
"
\t
<file> : (optional) output file name
\n
"
);
src/base/io/ioUtil.c
View file @
c696ae95
...
@@ -161,7 +161,7 @@ Abc_Ntk_t * Io_ReadNetlist( char * pFileName, Io_FileType_t FileType, int fCheck
...
@@ -161,7 +161,7 @@ Abc_Ntk_t * Io_ReadNetlist( char * pFileName, Io_FileType_t FileType, int fCheck
{
{
int
i
,
fCycle
=
0
;
int
i
,
fCycle
=
0
;
Abc_Ntk_t
*
pModel
;
Abc_Ntk_t
*
pModel
;
fprintf
(
stdout
,
"Warning: The network contains hierarchy.
\n
"
);
//
fprintf( stdout, "Warning: The network contains hierarchy.\n" );
Vec_PtrForEachEntry
(
Abc_Ntk_t
*
,
pNtk
->
pDesign
->
vModules
,
pModel
,
i
)
Vec_PtrForEachEntry
(
Abc_Ntk_t
*
,
pNtk
->
pDesign
->
vModules
,
pModel
,
i
)
if
(
!
Abc_NtkIsAcyclicWithBoxes
(
pModel
)
)
if
(
!
Abc_NtkIsAcyclicWithBoxes
(
pModel
)
)
fCycle
=
1
;
fCycle
=
1
;
...
...
src/map/if/ifCut.c
View file @
c696ae95
...
@@ -752,7 +752,7 @@ void If_CutSort( If_Man_t * p, If_Set_t * pCutSet, If_Cut_t * pCut )
...
@@ -752,7 +752,7 @@ void If_CutSort( If_Man_t * p, If_Set_t * pCutSet, If_Cut_t * pCut )
}
}
if
(
!
pCut
->
fUseless
&&
if
(
!
pCut
->
fUseless
&&
(
p
->
pPars
->
fUseDsd
||
p
->
pPars
->
fUseBat
||
(
p
->
pPars
->
fUseDsd
||
p
->
pPars
->
pFuncCell2
||
p
->
pPars
->
fUseBat
||
p
->
pPars
->
pLutStruct
||
p
->
pPars
->
fUserRecLib
||
p
->
pPars
->
fUserSesLib
||
p
->
pPars
->
pLutStruct
||
p
->
pPars
->
fUserRecLib
||
p
->
pPars
->
fUserSesLib
||
p
->
pPars
->
fEnableCheck07
||
p
->
pPars
->
fUseCofVars
||
p
->
pPars
->
fUseAndVars
||
p
->
pPars
->
fUse34Spec
||
p
->
pPars
->
fEnableCheck07
||
p
->
pPars
->
fUseCofVars
||
p
->
pPars
->
fUseAndVars
||
p
->
pPars
->
fUse34Spec
||
p
->
pPars
->
fUseDsdTune
||
p
->
pPars
->
fEnableCheck75
||
p
->
pPars
->
fEnableCheck75u
)
)
p
->
pPars
->
fUseDsdTune
||
p
->
pPars
->
fEnableCheck75
||
p
->
pPars
->
fEnableCheck75u
)
)
...
...
src/map/if/ifMap.c
View file @
c696ae95
...
@@ -167,7 +167,7 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep
...
@@ -167,7 +167,7 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep
int
fFunc0R
,
fFunc1R
;
int
fFunc0R
,
fFunc1R
;
int
i
,
k
,
v
,
iCutDsd
,
fChange
;
int
i
,
k
,
v
,
iCutDsd
,
fChange
;
int
fSave0
=
p
->
pPars
->
fDelayOpt
||
p
->
pPars
->
fDelayOptLut
||
p
->
pPars
->
fDsdBalance
||
p
->
pPars
->
fUserRecLib
||
p
->
pPars
->
fUserSesLib
||
int
fSave0
=
p
->
pPars
->
fDelayOpt
||
p
->
pPars
->
fDelayOptLut
||
p
->
pPars
->
fDsdBalance
||
p
->
pPars
->
fUserRecLib
||
p
->
pPars
->
fUserSesLib
||
p
->
pPars
->
fUseDsdTune
||
p
->
pPars
->
fUseCofVars
||
p
->
pPars
->
fUseAndVars
||
p
->
pPars
->
fUse34Spec
||
p
->
pPars
->
pLutStruct
!=
NULL
;
p
->
pPars
->
fUseDsdTune
||
p
->
pPars
->
fUseCofVars
||
p
->
pPars
->
fUseAndVars
||
p
->
pPars
->
fUse34Spec
||
p
->
pPars
->
pLutStruct
||
p
->
pPars
->
pFuncCell2
;
int
fUseAndCut
=
(
p
->
pPars
->
nAndDelay
>
0
)
||
(
p
->
pPars
->
nAndArea
>
0
);
int
fUseAndCut
=
(
p
->
pPars
->
nAndDelay
>
0
)
||
(
p
->
pPars
->
nAndArea
>
0
);
assert
(
!
If_ObjIsAnd
(
pObj
->
pFanin0
)
||
pObj
->
pFanin0
->
pCutSet
->
nCuts
>
0
);
assert
(
!
If_ObjIsAnd
(
pObj
->
pFanin0
)
||
pObj
->
pFanin0
->
pCutSet
->
nCuts
>
0
);
assert
(
!
If_ObjIsAnd
(
pObj
->
pFanin1
)
||
pObj
->
pFanin1
->
pCutSet
->
nCuts
>
0
);
assert
(
!
If_ObjIsAnd
(
pObj
->
pFanin1
)
||
pObj
->
pFanin1
->
pCutSet
->
nCuts
>
0
);
...
@@ -319,7 +319,7 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep
...
@@ -319,7 +319,7 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep
if
(
p
->
pPars
->
fUseDsd
)
if
(
p
->
pPars
->
fUseDsd
)
pCut
->
fUseless
=
If_DsdManCheckDec
(
p
->
pIfDsdMan
,
If_CutDsdLit
(
p
,
pCut
)
);
pCut
->
fUseless
=
If_DsdManCheckDec
(
p
->
pIfDsdMan
,
If_CutDsdLit
(
p
,
pCut
)
);
else
if
(
p
->
pPars
->
pFuncCell2
)
else
if
(
p
->
pPars
->
pFuncCell2
)
pCut
->
fUseless
=
!
p
->
pPars
->
pFuncCell2
(
p
,
(
word
*
)
If_CutTruth
(
p
,
pCut
),
pCut
->
nLeaves
,
NULL
,
NULL
);
pCut
->
fUseless
=
!
p
->
pPars
->
pFuncCell2
(
p
,
(
word
*
)
If_CutTruth
W
(
p
,
pCut
),
pCut
->
nLeaves
,
NULL
,
NULL
);
else
else
pCut
->
fUseless
=
!
p
->
pPars
->
pFuncCell
(
p
,
If_CutTruth
(
p
,
pCut
),
Abc_MaxInt
(
6
,
pCut
->
nLeaves
),
pCut
->
nLeaves
,
p
->
pPars
->
pLutStruct
);
pCut
->
fUseless
=
!
p
->
pPars
->
pFuncCell
(
p
,
If_CutTruth
(
p
,
pCut
),
Abc_MaxInt
(
6
,
pCut
->
nLeaves
),
pCut
->
nLeaves
,
p
->
pPars
->
pLutStruct
);
p
->
nCutsUselessAll
+=
pCut
->
fUseless
;
p
->
nCutsUselessAll
+=
pCut
->
fUseless
;
...
...
src/map/mio/mio.h
View file @
c696ae95
...
@@ -222,6 +222,10 @@ extern void Mio_LibraryMatchesStop( Mio_Library_t * pLib );
...
@@ -222,6 +222,10 @@ extern void Mio_LibraryMatchesStop( Mio_Library_t * pLib );
extern
void
Mio_LibraryMatchesStart
(
Mio_Library_t
*
pLib
,
int
fPinFilter
,
int
fPinPerm
,
int
fPinQuick
);
extern
void
Mio_LibraryMatchesStart
(
Mio_Library_t
*
pLib
,
int
fPinFilter
,
int
fPinPerm
,
int
fPinQuick
);
extern
void
Mio_LibraryMatchesFetch
(
Mio_Library_t
*
pLib
,
Vec_Mem_t
**
pvTtMem
,
Vec_Wec_t
**
pvTt2Match
,
Mio_Cell2_t
**
ppCells
,
int
*
pnCells
,
int
fPinFilter
,
int
fPinPerm
,
int
fPinQuick
);
extern
void
Mio_LibraryMatchesFetch
(
Mio_Library_t
*
pLib
,
Vec_Mem_t
**
pvTtMem
,
Vec_Wec_t
**
pvTt2Match
,
Mio_Cell2_t
**
ppCells
,
int
*
pnCells
,
int
fPinFilter
,
int
fPinPerm
,
int
fPinQuick
);
extern
void
Mio_LibraryMatches2Stop
(
Mio_Library_t
*
pLib
);
extern
void
Mio_LibraryMatches2Start
(
Mio_Library_t
*
pLib
);
extern
void
Mio_LibraryMatches2Fetch
(
Mio_Library_t
*
pLib
,
Vec_Ptr_t
**
pvNames
,
Vec_Wrd_t
**
pvTruths
,
Vec_Mem_t
**
pvTtMem
,
Vec_Int_t
**
pvTt2Match
,
Vec_Int_t
**
pvTt2Match4
,
Vec_Int_t
**
pvConfigs
);
/*=== sclUtil.c =========================================================*/
/*=== sclUtil.c =========================================================*/
extern
Mio_Library_t
*
Abc_SclDeriveGenlibSimple
(
void
*
pScl
);
extern
Mio_Library_t
*
Abc_SclDeriveGenlibSimple
(
void
*
pScl
);
extern
Mio_Library_t
*
Abc_SclDeriveGenlib
(
void
*
pScl
,
void
*
pMio
,
float
Slew
,
float
Gain
,
int
nGatesMin
,
int
fVerbose
);
extern
Mio_Library_t
*
Abc_SclDeriveGenlib
(
void
*
pScl
,
void
*
pMio
,
float
Slew
,
float
Gain
,
int
nGatesMin
,
int
fVerbose
);
...
...
src/map/mio/mioInt.h
View file @
c696ae95
...
@@ -84,6 +84,12 @@ struct Mio_LibraryStruct_t_
...
@@ -84,6 +84,12 @@ struct Mio_LibraryStruct_t_
Vec_Wec_t
*
vTt2Match
;
// matches for truth tables
Vec_Wec_t
*
vTt2Match
;
// matches for truth tables
Mio_Cell2_t
*
pCells
;
// library gates
Mio_Cell2_t
*
pCells
;
// library gates
int
nCells
;
// library gate count
int
nCells
;
// library gate count
Vec_Ptr_t
*
vNames
;
Vec_Wrd_t
*
vTruths
;
Vec_Mem_t
*
vTtMem_
;
Vec_Int_t
*
vTt2Match_
;
Vec_Int_t
*
vTt2Match4
;
Vec_Int_t
*
vConfigs
;
};
};
struct
Mio_GateStruct_t_
struct
Mio_GateStruct_t_
...
...
src/map/mio/mioUtils.c
View file @
c696ae95
...
@@ -54,6 +54,7 @@ void Mio_LibraryDelete( Mio_Library_t * pLib )
...
@@ -54,6 +54,7 @@ void Mio_LibraryDelete( Mio_Library_t * pLib )
if
(
pLib
==
NULL
)
if
(
pLib
==
NULL
)
return
;
return
;
Mio_LibraryMatchesStop
(
pLib
);
Mio_LibraryMatchesStop
(
pLib
);
Mio_LibraryMatches2Stop
(
pLib
);
// free the bindings of nodes to gates from this library for all networks
// free the bindings of nodes to gates from this library for all networks
Abc_FrameUnmapAllNetworks
(
Abc_FrameGetGlobalFrame
()
);
Abc_FrameUnmapAllNetworks
(
Abc_FrameGetGlobalFrame
()
);
// free the library
// free the library
...
@@ -1691,6 +1692,49 @@ void Mio_LibraryMatchesFetch( Mio_Library_t * pLib, Vec_Mem_t ** pvTtMem, Vec_We
...
@@ -1691,6 +1692,49 @@ void Mio_LibraryMatchesFetch( Mio_Library_t * pLib, Vec_Mem_t ** pvTtMem, Vec_We
*
pnCells
=
pLib
->
nCells
;
// library gate count
*
pnCells
=
pLib
->
nCells
;
// library gate count
}
}
/**Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void
Mio_LibraryMatches2Stop
(
Mio_Library_t
*
pLib
)
{
if
(
!
pLib
->
vNames
)
return
;
Vec_PtrFree
(
pLib
->
vNames
);
Vec_WrdFree
(
pLib
->
vTruths
);
Vec_MemHashFree
(
pLib
->
vTtMem_
);
Vec_MemFree
(
pLib
->
vTtMem_
);
Vec_IntFree
(
pLib
->
vTt2Match_
);
Vec_IntFree
(
pLib
->
vTt2Match4
);
Vec_IntFree
(
pLib
->
vConfigs
);
}
void
Mio_LibraryMatches2Start
(
Mio_Library_t
*
pLib
)
{
extern
int
Gia_ManDeriveMatches
(
Vec_Ptr_t
**
pvNames
,
Vec_Wrd_t
**
pvTruths
,
Vec_Mem_t
**
pvTtMem
,
Vec_Int_t
**
pvTt2Match
,
Vec_Int_t
**
pvTt2Match4
,
Vec_Int_t
**
pvConfigs
);
if
(
pLib
->
vNames
)
return
;
if
(
pLib
->
vTtMem
)
Mio_LibraryMatches2Stop
(
pLib
);
Gia_ManDeriveMatches
(
&
pLib
->
vNames
,
&
pLib
->
vTruths
,
&
pLib
->
vTtMem_
,
&
pLib
->
vTt2Match_
,
&
pLib
->
vTt2Match4
,
&
pLib
->
vConfigs
);
}
void
Mio_LibraryMatches2Fetch
(
Mio_Library_t
*
pLib
,
Vec_Ptr_t
**
pvNames
,
Vec_Wrd_t
**
pvTruths
,
Vec_Mem_t
**
pvTtMem
,
Vec_Int_t
**
pvTt2Match
,
Vec_Int_t
**
pvTt2Match4
,
Vec_Int_t
**
pvConfigs
)
{
Mio_LibraryMatches2Start
(
pLib
);
*
pvNames
=
pLib
->
vNames
;
*
pvTruths
=
pLib
->
vTruths
;
*
pvTtMem
=
pLib
->
vTtMem_
;
*
pvTt2Match
=
pLib
->
vTt2Match_
;
*
pvTt2Match4
=
pLib
->
vTt2Match4
;
*
pvConfigs
=
pLib
->
vConfigs
;
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
...
...
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