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
0ac22c9e
Commit
0ac22c9e
authored
Jun 14, 2014
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Specializing some truth-table functions to 6 inputs.
parent
b801ec19
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
22 additions
and
26 deletions
+22
-26
src/aig/gia/gia.h
+1
-0
src/aig/gia/giaJf.c
+2
-2
src/aig/gia/giaKf.c
+2
-2
src/base/abci/abc.c
+15
-20
src/map/if/ifTruth.c
+2
-2
src/misc/util/utilTruth.h
+0
-0
No files found.
src/aig/gia/gia.h
View file @
0ac22c9e
...
...
@@ -250,6 +250,7 @@ struct Jf_Par_t_
int
nCutNum
;
int
nProcNum
;
int
nRounds
;
int
nRoundsEla
;
int
nRelaxRatio
;
int
nVerbLimit
;
int
DelayTarget
;
...
...
src/aig/gia/giaJf.c
View file @
0ac22c9e
...
...
@@ -1072,8 +1072,8 @@ int Jf_TtComputeForCut( Jf_Man_t * p, int iFuncLit0, int iFuncLit1, int * pCut0,
word
*
pTruth1
=
Vec_MemReadEntry
(
p
->
vTtMem
,
Abc_Lit2Var
(
iFuncLit1
));
Abc_TtCopy
(
uTruth0
,
pTruth0
,
nWords
,
Abc_LitIsCompl
(
iFuncLit0
)
);
Abc_TtCopy
(
uTruth1
,
pTruth1
,
nWords
,
Abc_LitIsCompl
(
iFuncLit1
)
);
Abc_Tt
Stretch
(
uTruth0
,
LutSize
,
pCut0
+
1
,
Jf_CutSize
(
pCut0
),
pCutOut
+
1
,
Jf_CutSize
(
pCutOut
)
);
Abc_Tt
Stretch
(
uTruth1
,
LutSize
,
pCut1
+
1
,
Jf_CutSize
(
pCut1
),
pCutOut
+
1
,
Jf_CutSize
(
pCutOut
)
);
Abc_Tt
Expand
(
uTruth0
,
LutSize
,
pCut0
+
1
,
Jf_CutSize
(
pCut0
),
pCutOut
+
1
,
Jf_CutSize
(
pCutOut
)
);
Abc_Tt
Expand
(
uTruth1
,
LutSize
,
pCut1
+
1
,
Jf_CutSize
(
pCut1
),
pCutOut
+
1
,
Jf_CutSize
(
pCutOut
)
);
fCompl
=
(
int
)(
uTruth0
[
0
]
&
uTruth1
[
0
]
&
1
);
Abc_TtAnd
(
uTruth
,
uTruth0
,
uTruth1
,
nWords
,
fCompl
);
pCutOut
[
0
]
=
Abc_TtMinBase
(
uTruth
,
pCutOut
+
1
,
pCutOut
[
0
],
LutSize
);
...
...
src/aig/gia/giaKf.c
View file @
0ac22c9e
...
...
@@ -768,8 +768,8 @@ int Kf_SetComputeTruth( Kf_Man_t * p, int iFuncLit0, int iFuncLit1, int * pCut0,
word * pTruth1 = Vec_MemReadEntry(p->vTtMem, Abc_Lit2Var(iFuncLit1));
Abc_TtCopy( uTruth0, pTruth0, nWords, Abc_LitIsCompl(iFuncLit0) );
Abc_TtCopy( uTruth1, pTruth1, nWords, Abc_LitIsCompl(iFuncLit1) );
Abc_Tt
Stretch
( uTruth0, LutSize, pCut0 + 1, Kf_CutSize(pCut0), pCutOut + 1, Kf_CutSize(pCutOut) );
Abc_Tt
Stretch
( uTruth1, LutSize, pCut1 + 1, Kf_CutSize(pCut1), pCutOut + 1, Kf_CutSize(pCutOut) );
Abc_Tt
Expand
( uTruth0, LutSize, pCut0 + 1, Kf_CutSize(pCut0), pCutOut + 1, Kf_CutSize(pCutOut) );
Abc_Tt
Expand
( uTruth1, LutSize, pCut1 + 1, Kf_CutSize(pCut1), pCutOut + 1, Kf_CutSize(pCutOut) );
fCompl = (int)(uTruth0[0] & uTruth1[0] & 1);
Abc_TtAnd( uTruth, uTruth0, uTruth1, nWords, fCompl );
pCutOut[0] = Abc_TtMinBase( uTruth, pCutOut + 1, pCutOut[0], LutSize );
...
...
src/base/abci/abc.c
View file @
0ac22c9e
...
...
@@ -30861,7 +30861,7 @@ int Abc_CommandAbc9Lf( Abc_Frame_t * pAbc, int argc, char ** argv )
Gia_Man_t
*
pNew
;
int
c
;
Lf_ManSetDefaultPars
(
pPars
);
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"KCF
RDWaekmdcgts
pvwh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"KCF
ARDWaekmg
pvwh"
)
)
!=
EOF
)
{
switch
(
c
)
{
...
...
@@ -30904,6 +30904,17 @@ int Abc_CommandAbc9Lf( Abc_Frame_t * pAbc, int argc, char ** argv )
if
(
pPars
->
nRounds
<
0
)
goto
usage
;
break
;
case
'A'
:
if
(
globalUtilOptind
>=
argc
)
{
Abc_Print
(
-
1
,
"Command line switch
\"
-A
\"
should be followed by a positive integer.
\n
"
);
goto
usage
;
}
pPars
->
nRoundsEla
=
atoi
(
argv
[
globalUtilOptind
]);
globalUtilOptind
++
;
if
(
pPars
->
nRoundsEla
<
0
)
goto
usage
;
break
;
case
'R'
:
if
(
globalUtilOptind
>=
argc
)
{
...
...
@@ -30949,21 +30960,9 @@ int Abc_CommandAbc9Lf( Abc_Frame_t * pAbc, int argc, char ** argv )
case
'm'
:
pPars
->
fCutMin
^=
1
;
break
;
case
'd'
:
pPars
->
fFuncDsd
^=
1
;
break
;
case
'c'
:
pPars
->
fGenCnf
^=
1
;
break
;
case
'g'
:
pPars
->
fPureAig
^=
1
;
break
;
case
't'
:
pPars
->
fCutHashing
^=
1
;
break
;
case
's'
:
pPars
->
fCutSimple
^=
1
;
break
;
case
'p'
:
pPars
->
fPower
^=
1
;
break
;
...
...
@@ -30999,23 +30998,19 @@ usage:
sprintf
(
Buffer
,
"best possible"
);
else
sprintf
(
Buffer
,
"%d"
,
pPars
->
DelayTarget
);
Abc_Print
(
-
2
,
"usage: &lf [-KCF
RDW num] [-akmdcgts
pvwh]
\n
"
);
Abc_Print
(
-
2
,
"usage: &lf [-KCF
ARD num] [-akmg
pvwh]
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs technology mapping of the network
\n
"
);
Abc_Print
(
-
2
,
"
\t
-K num : LUT size for the mapping (2 <= K <= %d) [default = %d]
\n
"
,
pPars
->
nLutSizeMax
,
pPars
->
nLutSize
);
Abc_Print
(
-
2
,
"
\t
-C num : the max number of priority cuts (1 <= C <= %d) [default = %d]
\n
"
,
pPars
->
nCutNumMax
,
pPars
->
nCutNum
);
Abc_Print
(
-
2
,
"
\t
-F num : the number of mapping rounds [default = %d]
\n
"
,
pPars
->
nRounds
);
Abc_Print
(
-
2
,
"
\t
-F num : the number of area flow rounds [default = %d]
\n
"
,
pPars
->
nRounds
);
Abc_Print
(
-
2
,
"
\t
-A num : the number of exact area rounds [default = %d]
\n
"
,
pPars
->
nRoundsEla
);
Abc_Print
(
-
2
,
"
\t
-R num : the delay relaxation ratio (num >= 0) [default = %d]
\n
"
,
pPars
->
nRelaxRatio
);
Abc_Print
(
-
2
,
"
\t
-D num : sets the delay constraint for the mapping [default = %s]
\n
"
,
Buffer
);
Abc_Print
(
-
2
,
"
\t
-W num : min frequency when printing functions with
\"
-w
\"
[default = %d]
\n
"
,
pPars
->
nVerbLimit
);
Abc_Print
(
-
2
,
"
\t
-a : toggles area-oriented mapping [default = %s]
\n
"
,
pPars
->
fAreaOnly
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-e : toggles edge vs node minimization [default = %s]
\n
"
,
pPars
->
fOptEdge
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-k : toggles coarsening the subject graph [default = %s]
\n
"
,
pPars
->
fCoarsen
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-m : toggles cut minimization [default = %s]
\n
"
,
pPars
->
fCutMin
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-d : toggles using DSD to represent cut functions [default = %s]
\n
"
,
pPars
->
fFuncDsd
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-c : toggles mapping for CNF generation [default = %s]
\n
"
,
pPars
->
fGenCnf
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-g : toggles generating AIG without mapping [default = %s]
\n
"
,
pPars
->
fPureAig
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-t : toggles cut computation using hash table [default = %s]
\n
"
,
pPars
->
fCutHashing
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-s : toggles cut computation using a simple method [default = %s]
\n
"
,
pPars
->
fCutSimple
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-p : uses power-aware cut selection heuristics [default = %s]
\n
"
,
pPars
->
fPower
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : toggles verbose output [default = %s]
\n
"
,
pPars
->
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-w : toggles very verbose output [default = %s]
\n
"
,
pPars
->
fVeryVerbose
?
"yes"
:
"no"
);
src/map/if/ifTruth.c
View file @
0ac22c9e
...
...
@@ -108,8 +108,8 @@ int If_CutComputeTruth( If_Man_t * p, If_Cut_t * pCut, If_Cut_t * pCut0, If_Cut_
Abc_TtCopy
(
pTruth1
,
pTruth1s
,
nWords
,
fCompl1
^
pCut1
->
fCompl
^
Abc_LitIsCompl
(
pCut1
->
iCutFunc
)
);
Abc_TtStretch6
(
pTruth0
,
pCut0
->
nLeaves
,
pCut
->
nLeaves
);
Abc_TtStretch6
(
pTruth1
,
pCut1
->
nLeaves
,
pCut
->
nLeaves
);
Abc_Tt
Stretch
(
pTruth0
,
pCut
->
nLeaves
,
pCut0
->
pLeaves
,
pCut0
->
nLeaves
,
pCut
->
pLeaves
,
pCut
->
nLeaves
);
Abc_Tt
Stretch
(
pTruth1
,
pCut
->
nLeaves
,
pCut1
->
pLeaves
,
pCut1
->
nLeaves
,
pCut
->
pLeaves
,
pCut
->
nLeaves
);
Abc_Tt
Expand
(
pTruth0
,
pCut
->
nLeaves
,
pCut0
->
pLeaves
,
pCut0
->
nLeaves
,
pCut
->
pLeaves
,
pCut
->
nLeaves
);
Abc_Tt
Expand
(
pTruth1
,
pCut
->
nLeaves
,
pCut1
->
pLeaves
,
pCut1
->
nLeaves
,
pCut
->
pLeaves
,
pCut
->
nLeaves
);
fCompl
=
(
pTruth0
[
0
]
&
pTruth1
[
0
]
&
1
);
Abc_TtAnd
(
pTruth
,
pTruth0
,
pTruth1
,
nWords
,
fCompl
);
if
(
p
->
pPars
->
fCutMin
&&
(
pCut0
->
nLeaves
+
pCut1
->
nLeaves
>
pCut
->
nLeaves
||
pCut0
->
nLeaves
==
0
||
pCut1
->
nLeaves
==
0
)
)
...
...
src/misc/util/utilTruth.h
View file @
0ac22c9e
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