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
4886a4ef
Commit
4886a4ef
authored
Jul 07, 2017
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adding new type of MUX blasting.
parent
1676df19
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
57 additions
and
17 deletions
+57
-17
src/base/wlc/wlc.h
+1
-1
src/base/wlc/wlcAbs.c
+5
-5
src/base/wlc/wlcAbs2.c
+1
-1
src/base/wlc/wlcBlast.c
+38
-2
src/base/wlc/wlcCom.c
+8
-4
src/base/wlc/wlcGraft.c
+2
-2
src/base/wlc/wlcReadVer.c
+1
-1
src/base/wlc/wlcSim.c
+1
-1
No files found.
src/base/wlc/wlc.h
View file @
4886a4ef
...
@@ -325,7 +325,7 @@ extern int Wlc_NtkPdrAbs( Wlc_Ntk_t * p, Wlc_Par_t * pPars );
...
@@ -325,7 +325,7 @@ extern int Wlc_NtkPdrAbs( Wlc_Ntk_t * p, Wlc_Par_t * pPars );
/*=== wlcAbs2.c ========================================================*/
/*=== wlcAbs2.c ========================================================*/
extern
int
Wlc_NtkAbsCore2
(
Wlc_Ntk_t
*
p
,
Wlc_Par_t
*
pPars
);
extern
int
Wlc_NtkAbsCore2
(
Wlc_Ntk_t
*
p
,
Wlc_Par_t
*
pPars
);
/*=== wlcBlast.c ========================================================*/
/*=== wlcBlast.c ========================================================*/
extern
Gia_Man_t
*
Wlc_NtkBitBlast
(
Wlc_Ntk_t
*
p
,
Vec_Int_t
*
vBoxIds
,
int
iOutput
,
int
nRange
,
int
fGiaSimple
,
int
fAddOutputs
,
int
fBooth
,
int
fNoCleanup
,
int
fCreateMiter
);
extern
Gia_Man_t
*
Wlc_NtkBitBlast
(
Wlc_Ntk_t
*
p
,
Vec_Int_t
*
vBoxIds
,
int
iOutput
,
int
nRange
,
int
fGiaSimple
,
int
fAddOutputs
,
int
fBooth
,
int
fNoCleanup
,
int
fCreateMiter
,
int
fDecMuxes
);
/*=== wlcCom.c ========================================================*/
/*=== wlcCom.c ========================================================*/
extern
void
Wlc_SetNtk
(
Abc_Frame_t
*
pAbc
,
Wlc_Ntk_t
*
pNtk
);
extern
void
Wlc_SetNtk
(
Abc_Frame_t
*
pAbc
,
Wlc_Ntk_t
*
pNtk
);
/*=== wlcNtk.c ========================================================*/
/*=== wlcNtk.c ========================================================*/
...
...
src/base/wlc/wlcAbs.c
View file @
4886a4ef
...
@@ -320,7 +320,7 @@ static Vec_Int_t * Wlc_NtkGetCoreSels( Gia_Man_t * pFrames, int nFrames, int fir
...
@@ -320,7 +320,7 @@ static Vec_Int_t * Wlc_NtkGetCoreSels( Gia_Man_t * pFrames, int nFrames, int fir
static
Gia_Man_t
*
Wlc_NtkUnrollWoCex
(
Wlc_Ntk_t
*
pChoice
,
int
nFrames
,
int
first_sel_pi
,
int
num_sel_pis
)
static
Gia_Man_t
*
Wlc_NtkUnrollWoCex
(
Wlc_Ntk_t
*
pChoice
,
int
nFrames
,
int
first_sel_pi
,
int
num_sel_pis
)
{
{
Gia_Man_t
*
pGiaChoice
=
Wlc_NtkBitBlast
(
pChoice
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
);
Gia_Man_t
*
pGiaChoice
=
Wlc_NtkBitBlast
(
pChoice
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
);
Gia_Man_t
*
pFrames
=
NULL
,
*
pGia
;
Gia_Man_t
*
pFrames
=
NULL
,
*
pGia
;
Gia_Obj_t
*
pObj
,
*
pObjRi
;
Gia_Obj_t
*
pObj
,
*
pObjRi
;
int
f
,
i
;
int
f
,
i
;
...
@@ -366,7 +366,7 @@ static Gia_Man_t * Wlc_NtkUnrollWoCex(Wlc_Ntk_t * pChoice, int nFrames, int firs
...
@@ -366,7 +366,7 @@ static Gia_Man_t * Wlc_NtkUnrollWoCex(Wlc_Ntk_t * pChoice, int nFrames, int firs
static
Gia_Man_t
*
Wlc_NtkUnrollWithCex
(
Wlc_Ntk_t
*
pChoice
,
Abc_Cex_t
*
pCex
,
int
nbits_old_pis
,
int
num_sel_pis
,
int
*
p_num_ppis
,
int
sel_pi_first
,
int
fUsePPI
)
static
Gia_Man_t
*
Wlc_NtkUnrollWithCex
(
Wlc_Ntk_t
*
pChoice
,
Abc_Cex_t
*
pCex
,
int
nbits_old_pis
,
int
num_sel_pis
,
int
*
p_num_ppis
,
int
sel_pi_first
,
int
fUsePPI
)
{
{
Gia_Man_t
*
pGiaChoice
=
Wlc_NtkBitBlast
(
pChoice
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
);
Gia_Man_t
*
pGiaChoice
=
Wlc_NtkBitBlast
(
pChoice
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
);
int
nbits_new_pis
=
Wlc_NtkNumPiBits
(
pChoice
);
int
nbits_new_pis
=
Wlc_NtkNumPiBits
(
pChoice
);
int
num_ppis
=
nbits_new_pis
-
nbits_old_pis
-
num_sel_pis
;
int
num_ppis
=
nbits_new_pis
-
nbits_old_pis
-
num_sel_pis
;
int
num_undc_pis
=
Gia_ManPiNum
(
pGiaChoice
)
-
nbits_new_pis
;
int
num_undc_pis
=
Gia_ManPiNum
(
pGiaChoice
)
-
nbits_new_pis
;
...
@@ -560,7 +560,7 @@ Wlc_Ntk_t * Wlc_NtkIntroduceChoices( Wlc_Ntk_t * pNtk, Vec_Int_t * vBlacks, Vec_
...
@@ -560,7 +560,7 @@ Wlc_Ntk_t * Wlc_NtkIntroduceChoices( Wlc_Ntk_t * pNtk, Vec_Int_t * vBlacks, Vec_
static
Abc_Cex_t
*
Wlc_NtkCexIsReal
(
Wlc_Ntk_t
*
pOrig
,
Abc_Cex_t
*
pCex
)
static
Abc_Cex_t
*
Wlc_NtkCexIsReal
(
Wlc_Ntk_t
*
pOrig
,
Abc_Cex_t
*
pCex
)
{
{
Gia_Man_t
*
pGiaOrig
=
Wlc_NtkBitBlast
(
pOrig
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
);
Gia_Man_t
*
pGiaOrig
=
Wlc_NtkBitBlast
(
pOrig
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
);
int
f
,
i
;
int
f
,
i
;
Gia_Obj_t
*
pObj
,
*
pObjRi
;
Gia_Obj_t
*
pObj
,
*
pObjRi
;
Abc_Cex_t
*
pCexReal
=
Abc_CexAlloc
(
Gia_ManRegNum
(
pGiaOrig
),
Gia_ManPiNum
(
pGiaOrig
),
pCex
->
iFrame
+
1
);
Abc_Cex_t
*
pCexReal
=
Abc_CexAlloc
(
Gia_ManRegNum
(
pGiaOrig
),
Gia_ManPiNum
(
pGiaOrig
),
pCex
->
iFrame
+
1
);
...
@@ -1401,7 +1401,7 @@ Aig_Man_t * Wla_ManBitBlast( Wla_Man_t * pWla, Wlc_Ntk_t * pAbs )
...
@@ -1401,7 +1401,7 @@ Aig_Man_t * Wla_ManBitBlast( Wla_Man_t * pWla, Wlc_Ntk_t * pAbs )
Gia_Man_t
*
pTemp
;
Gia_Man_t
*
pTemp
;
Aig_Man_t
*
pAig
;
Aig_Man_t
*
pAig
;
pWla
->
pGia
=
Wlc_NtkBitBlast
(
pAbs
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
);
pWla
->
pGia
=
Wlc_NtkBitBlast
(
pAbs
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
);
// if the abstraction has flops with DC-init state,
// if the abstraction has flops with DC-init state,
// new PIs were introduced by bit-blasting at the end of the PI list
// new PIs were introduced by bit-blasting at the end of the PI list
...
@@ -1829,7 +1829,7 @@ int Wlc_NtkAbsCore( Wlc_Ntk_t * p, Wlc_Par_t * pPars )
...
@@ -1829,7 +1829,7 @@ int Wlc_NtkAbsCore( Wlc_Ntk_t * p, Wlc_Par_t * pPars )
pAbs
=
Wlc_NtkAbs
(
p
,
pPars
,
vUnmark
,
&
vPisNew
,
NULL
,
pPars
->
fVerbose
);
pAbs
=
Wlc_NtkAbs
(
p
,
pPars
,
vUnmark
,
&
vPisNew
,
NULL
,
pPars
->
fVerbose
);
}
}
pGia
=
Wlc_NtkBitBlast
(
pAbs
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
);
pGia
=
Wlc_NtkBitBlast
(
pAbs
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
);
// if the abstraction has flops with DC-init state,
// if the abstraction has flops with DC-init state,
// new PIs were introduced by bit-blasting at the end of the PI list
// new PIs were introduced by bit-blasting at the end of the PI list
...
...
src/base/wlc/wlcAbs2.c
View file @
4886a4ef
...
@@ -328,7 +328,7 @@ int Wlc_NtkAbsCore2( Wlc_Ntk_t * p, Wlc_Par_t * pPars )
...
@@ -328,7 +328,7 @@ int Wlc_NtkAbsCore2( Wlc_Ntk_t * p, Wlc_Par_t * pPars )
// get abstracted GIA and the set of pseudo-PIs (vPisNew)
// get abstracted GIA and the set of pseudo-PIs (vPisNew)
pAbs
=
Wlc_NtkAbs
(
p
,
pPars
,
vUnmark
,
&
vPisNew
,
pPars
->
fVerbose
);
pAbs
=
Wlc_NtkAbs
(
p
,
pPars
,
vUnmark
,
&
vPisNew
,
pPars
->
fVerbose
);
pGia
=
Wlc_NtkBitBlast
(
pAbs
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
);
pGia
=
Wlc_NtkBitBlast
(
pAbs
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
);
// if the abstraction has flops with DC-init state,
// if the abstraction has flops with DC-init state,
// new PIs were introduced by bit-blasting at the end of the PI list
// new PIs were introduced by bit-blasting at the end of the PI list
...
...
src/base/wlc/wlcBlast.c
View file @
4886a4ef
...
@@ -109,6 +109,28 @@ int Wlc_NtkMuxTree_rec( Gia_Man_t * pNew, int * pCtrl, int nCtrl, Vec_Int_t * vD
...
@@ -109,6 +109,28 @@ int Wlc_NtkMuxTree_rec( Gia_Man_t * pNew, int * pCtrl, int nCtrl, Vec_Int_t * vD
iLit1
=
Wlc_NtkMuxTree_rec
(
pNew
,
pCtrl
,
nCtrl
-
1
,
vData
,
Shift
+
(
1
<<
(
nCtrl
-
1
))
);
iLit1
=
Wlc_NtkMuxTree_rec
(
pNew
,
pCtrl
,
nCtrl
-
1
,
vData
,
Shift
+
(
1
<<
(
nCtrl
-
1
))
);
return
Gia_ManHashMux
(
pNew
,
pCtrl
[
nCtrl
-
1
],
iLit1
,
iLit0
);
return
Gia_ManHashMux
(
pNew
,
pCtrl
[
nCtrl
-
1
],
iLit1
,
iLit0
);
}
}
int
Wlc_NtkMuxTree2_nb
(
Gia_Man_t
*
pNew
,
int
*
pCtrl
,
int
nCtrl
,
Vec_Int_t
*
vData
,
Vec_Int_t
*
vAnds
)
{
int
iLitOr
=
0
,
iLitAnd
,
m
;
assert
(
Vec_IntSize
(
vData
)
==
(
1
<<
nCtrl
)
);
assert
(
Vec_IntSize
(
vAnds
)
==
(
1
<<
nCtrl
)
);
for
(
m
=
0
;
m
<
(
1
<<
nCtrl
);
m
++
)
{
iLitAnd
=
Gia_ManHashAnd
(
pNew
,
Vec_IntEntry
(
vAnds
,
m
),
Vec_IntEntry
(
vData
,
m
)
);
iLitOr
=
Gia_ManHashOr
(
pNew
,
iLitOr
,
iLitAnd
);
}
return
iLitOr
;
}
int
Wlc_NtkMuxTree2
(
Gia_Man_t
*
pNew
,
int
*
pCtrl
,
int
nCtrl
,
Vec_Int_t
*
vData
,
Vec_Int_t
*
vAnds
,
Vec_Int_t
*
vTemp
)
{
int
m
,
iLit
;
assert
(
Vec_IntSize
(
vData
)
==
(
1
<<
nCtrl
)
);
assert
(
Vec_IntSize
(
vAnds
)
==
(
1
<<
nCtrl
)
);
Vec_IntClear
(
vTemp
);
Vec_IntForEachEntry
(
vAnds
,
iLit
,
m
)
Vec_IntPush
(
vTemp
,
Abc_LitNot
(
Gia_ManHashAnd
(
pNew
,
iLit
,
Vec_IntEntry
(
vData
,
m
))
)
);
return
Abc_LitNot
(
Gia_ManHashAndMulti
(
pNew
,
vTemp
)
);
}
/**Function*************************************************************
/**Function*************************************************************
...
@@ -868,7 +890,7 @@ void Wlc_BlastBooth( Gia_Man_t * pNew, int * pArgA, int * pArgB, int nArgA, int
...
@@ -868,7 +890,7 @@ void Wlc_BlastBooth( Gia_Man_t * pNew, int * pArgA, int * pArgB, int nArgA, int
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
Gia_Man_t
*
Wlc_NtkBitBlast
(
Wlc_Ntk_t
*
p
,
Vec_Int_t
*
vBoxIds
,
int
iOutput
,
int
nOutputRange
,
int
fGiaSimple
,
int
fAddOutputs
,
int
fBooth
,
int
fNoCleanup
,
int
fCreateMiter
)
Gia_Man_t
*
Wlc_NtkBitBlast
(
Wlc_Ntk_t
*
p
,
Vec_Int_t
*
vBoxIds
,
int
iOutput
,
int
nOutputRange
,
int
fGiaSimple
,
int
fAddOutputs
,
int
fBooth
,
int
fNoCleanup
,
int
fCreateMiter
,
int
fDecMuxes
)
{
{
int
fVerbose
=
0
;
int
fVerbose
=
0
;
int
fUseOldMultiplierBlasting
=
0
;
int
fUseOldMultiplierBlasting
=
0
;
...
@@ -1061,6 +1083,17 @@ Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p, Vec_Int_t * vBoxIds, int iOutput, in
...
@@ -1061,6 +1083,17 @@ Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p, Vec_Int_t * vBoxIds, int iOutput, in
Wlc_ObjForEachFanin
(
pObj
,
iFanin
,
k
)
Wlc_ObjForEachFanin
(
pObj
,
iFanin
,
k
)
if
(
k
>
0
)
if
(
k
>
0
)
fSigned
&=
Wlc_NtkObj
(
p
,
iFanin
)
->
Signed
;
fSigned
&=
Wlc_NtkObj
(
p
,
iFanin
)
->
Signed
;
Vec_IntClear
(
vTemp1
);
if
(
fDecMuxes
)
{
for
(
k
=
0
;
k
<
(
1
<<
nRange0
);
k
++
)
{
int
iLitAnd
=
1
;
for
(
b
=
0
;
b
<
nRange0
;
b
++
)
iLitAnd
=
Gia_ManHashAnd
(
pNew
,
iLitAnd
,
Abc_LitNotCond
(
pFans0
[
b
],
((
k
>>
b
)
&
1
)
==
0
)
);
Vec_IntPush
(
vTemp1
,
iLitAnd
);
}
}
for
(
b
=
0
;
b
<
nRange
;
b
++
)
for
(
b
=
0
;
b
<
nRange
;
b
++
)
{
{
Vec_IntClear
(
vTemp0
);
Vec_IntClear
(
vTemp0
);
...
@@ -1074,7 +1107,10 @@ Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p, Vec_Int_t * vBoxIds, int iOutput, in
...
@@ -1074,7 +1107,10 @@ Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p, Vec_Int_t * vBoxIds, int iOutput, in
else
// Statement 2
else
// Statement 2
Vec_IntPush
(
vTemp0
,
b
<
nRange1
?
pFans1
[
b
]
:
(
Wlc_NtkObj
(
p
,
iFanin
)
->
Signed
?
pFans1
[
nRange1
-
1
]
:
0
)
);
Vec_IntPush
(
vTemp0
,
b
<
nRange1
?
pFans1
[
b
]
:
(
Wlc_NtkObj
(
p
,
iFanin
)
->
Signed
?
pFans1
[
nRange1
-
1
]
:
0
)
);
}
}
Vec_IntPush
(
vRes
,
Wlc_NtkMuxTree_rec
(
pNew
,
pFans0
,
nRange0
,
vTemp0
,
0
)
);
if
(
fDecMuxes
)
Vec_IntPush
(
vRes
,
Wlc_NtkMuxTree2
(
pNew
,
pFans0
,
nRange0
,
vTemp0
,
vTemp1
,
vTemp2
)
);
else
Vec_IntPush
(
vRes
,
Wlc_NtkMuxTree_rec
(
pNew
,
pFans0
,
nRange0
,
vTemp0
,
0
)
);
}
}
}
}
else
if
(
pObj
->
Type
==
WLC_OBJ_SHIFT_R
||
pObj
->
Type
==
WLC_OBJ_SHIFT_RA
||
else
if
(
pObj
->
Type
==
WLC_OBJ_SHIFT_R
||
pObj
->
Type
==
WLC_OBJ_SHIFT_RA
||
...
...
src/base/wlc/wlcCom.c
View file @
4886a4ef
...
@@ -885,9 +885,9 @@ int Abc_CommandBlast( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -885,9 +885,9 @@ int Abc_CommandBlast( Abc_Frame_t * pAbc, int argc, char ** argv )
Wlc_Ntk_t
*
pNtk
=
Wlc_AbcGetNtk
(
pAbc
);
Wlc_Ntk_t
*
pNtk
=
Wlc_AbcGetNtk
(
pAbc
);
Vec_Int_t
*
vBoxIds
=
NULL
;
Vec_Int_t
*
vBoxIds
=
NULL
;
Gia_Man_t
*
pNew
=
NULL
;
Gia_Man_t
*
pNew
=
NULL
;
int
c
,
iOutput
=
-
1
,
nOutputRange
=
2
,
fGiaSimple
=
0
,
fAddOutputs
=
0
,
fMulti
=
0
,
fBooth
=
0
,
fCreateMiter
=
0
,
fVerbose
=
0
;
int
c
,
iOutput
=
-
1
,
nOutputRange
=
2
,
fGiaSimple
=
0
,
fAddOutputs
=
0
,
fMulti
=
0
,
fBooth
=
0
,
fCreateMiter
=
0
,
f
DecMuxes
=
0
,
f
Verbose
=
0
;
Extra_UtilGetoptReset
();
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"ORcombdvh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"ORcombd
s
vh"
)
)
!=
EOF
)
{
{
switch
(
c
)
switch
(
c
)
{
{
...
@@ -928,6 +928,9 @@ int Abc_CommandBlast( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -928,6 +928,9 @@ int Abc_CommandBlast( Abc_Frame_t * pAbc, int argc, char ** argv )
case
'd'
:
case
'd'
:
fCreateMiter
^=
1
;
fCreateMiter
^=
1
;
break
;
break
;
case
's'
:
fDecMuxes
^=
1
;
break
;
case
'v'
:
case
'v'
:
fVerbose
^=
1
;
fVerbose
^=
1
;
break
;
break
;
...
@@ -954,7 +957,7 @@ int Abc_CommandBlast( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -954,7 +957,7 @@ int Abc_CommandBlast( Abc_Frame_t * pAbc, int argc, char ** argv )
return
0
;
return
0
;
}
}
// transform
// transform
pNew
=
Wlc_NtkBitBlast
(
pNtk
,
vBoxIds
,
iOutput
,
nOutputRange
,
fGiaSimple
,
fAddOutputs
,
fBooth
,
0
,
fCreateMiter
);
pNew
=
Wlc_NtkBitBlast
(
pNtk
,
vBoxIds
,
iOutput
,
nOutputRange
,
fGiaSimple
,
fAddOutputs
,
fBooth
,
0
,
fCreateMiter
,
fDecMuxes
);
Vec_IntFreeP
(
&
vBoxIds
);
Vec_IntFreeP
(
&
vBoxIds
);
if
(
pNew
==
NULL
)
if
(
pNew
==
NULL
)
{
{
...
@@ -964,7 +967,7 @@ int Abc_CommandBlast( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -964,7 +967,7 @@ int Abc_CommandBlast( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_FrameUpdateGia
(
pAbc
,
pNew
);
Abc_FrameUpdateGia
(
pAbc
,
pNew
);
return
0
;
return
0
;
usage:
usage:
Abc_Print
(
-
2
,
"usage: %%blast [-OR num] [-combdvh]
\n
"
);
Abc_Print
(
-
2
,
"usage: %%blast [-OR num] [-combd
s
vh]
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs bit-blasting of the word-level design
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs bit-blasting of the word-level design
\n
"
);
Abc_Print
(
-
2
,
"
\t
-O num : zero-based index of the first word-level PO to bit-blast [default = %d]
\n
"
,
iOutput
);
Abc_Print
(
-
2
,
"
\t
-O num : zero-based index of the first word-level PO to bit-blast [default = %d]
\n
"
,
iOutput
);
Abc_Print
(
-
2
,
"
\t
-R num : the total number of word-level POs to bit-blast [default = %d]
\n
"
,
nOutputRange
);
Abc_Print
(
-
2
,
"
\t
-R num : the total number of word-level POs to bit-blast [default = %d]
\n
"
,
nOutputRange
);
...
@@ -973,6 +976,7 @@ usage:
...
@@ -973,6 +976,7 @@ usage:
Abc_Print
(
-
2
,
"
\t
-m : toggle creating boxes for all multipliers in the design [default = %s]
\n
"
,
fMulti
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-m : toggle creating boxes for all multipliers in the design [default = %s]
\n
"
,
fMulti
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-b : toggle generating radix-4 Booth multipliers [default = %s]
\n
"
,
fBooth
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-b : toggle generating radix-4 Booth multipliers [default = %s]
\n
"
,
fBooth
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-d : toggle creating dual-output miter [default = %s]
\n
"
,
fCreateMiter
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-d : toggle creating dual-output miter [default = %s]
\n
"
,
fCreateMiter
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-s : toggle creating decoded MUXes [default = %s]
\n
"
,
fDecMuxes
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : toggle printing verbose information [default = %s]
\n
"
,
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : toggle printing verbose information [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
"
);
return
1
;
return
1
;
...
...
src/base/wlc/wlcGraft.c
View file @
4886a4ef
...
@@ -210,7 +210,7 @@ Wlc_Ntk_t * Wlc_NtkGraftMulti( Wlc_Ntk_t * p, int fVerbose )
...
@@ -210,7 +210,7 @@ Wlc_Ntk_t * Wlc_NtkGraftMulti( Wlc_Ntk_t * p, int fVerbose )
Gia_Obj_t
*
pObj
;
Gia_Obj_t
*
pObj
;
Vec_Int_t
*
vObjsLHS
=
Wlc_NtkCollectObjs
(
p
,
0
,
&
nMultiLHS
);
Vec_Int_t
*
vObjsLHS
=
Wlc_NtkCollectObjs
(
p
,
0
,
&
nMultiLHS
);
Vec_Int_t
*
vObjsRHS
=
Wlc_NtkCollectObjs
(
p
,
1
,
&
nMultiRHS
);
Vec_Int_t
*
vObjsRHS
=
Wlc_NtkCollectObjs
(
p
,
1
,
&
nMultiRHS
);
Gia_Man_t
*
pGia
=
Wlc_NtkBitBlast
(
p
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
1
,
0
);
Gia_Man_t
*
pGia
=
Wlc_NtkBitBlast
(
p
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
1
,
0
,
0
);
Vec_Mem_t
*
vTtMem
=
Vec_MemAlloc
(
nWords
,
10
);
Vec_Mem_t
*
vTtMem
=
Vec_MemAlloc
(
nWords
,
10
);
Vec_MemHashAlloc
(
vTtMem
,
10000
);
Vec_MemHashAlloc
(
vTtMem
,
10000
);
...
@@ -540,7 +540,7 @@ int Sbc_ManWlcNodes( Wlc_Ntk_t * pNtk, Gia_Man_t * p, Vec_Int_t * vGia2Out, int
...
@@ -540,7 +540,7 @@ int Sbc_ManWlcNodes( Wlc_Ntk_t * pNtk, Gia_Man_t * p, Vec_Int_t * vGia2Out, int
void
Sbc_ManDetectMultTest
(
Wlc_Ntk_t
*
pNtk
,
int
fVerbose
)
void
Sbc_ManDetectMultTest
(
Wlc_Ntk_t
*
pNtk
,
int
fVerbose
)
{
{
extern
Vec_Int_t
*
Sdb_StoComputeCutsDetect
(
Gia_Man_t
*
pGia
);
extern
Vec_Int_t
*
Sdb_StoComputeCutsDetect
(
Gia_Man_t
*
pGia
);
Gia_Man_t
*
p
=
Wlc_NtkBitBlast
(
pNtk
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
1
,
0
);
Gia_Man_t
*
p
=
Wlc_NtkBitBlast
(
pNtk
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
1
,
0
,
0
);
Vec_Int_t
*
vIns
,
*
vGia2Out
;
Vec_Int_t
*
vIns
,
*
vGia2Out
;
int
iObjFound
=
-
1
;
int
iObjFound
=
-
1
;
// Gia_Obj_t * pObj; int i;
// Gia_Obj_t * pObj; int i;
...
...
src/base/wlc/wlcReadVer.c
View file @
4886a4ef
...
@@ -1292,7 +1292,7 @@ void Io_ReadWordTest( char * pFileName )
...
@@ -1292,7 +1292,7 @@ void Io_ReadWordTest( char * pFileName )
return
;
return
;
Wlc_WriteVer
(
pNtk
,
"test.v"
,
0
,
0
);
Wlc_WriteVer
(
pNtk
,
"test.v"
,
0
,
0
);
pNew
=
Wlc_NtkBitBlast
(
pNtk
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
);
pNew
=
Wlc_NtkBitBlast
(
pNtk
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
);
Gia_AigerWrite
(
pNew
,
"test.aig"
,
0
,
0
);
Gia_AigerWrite
(
pNew
,
"test.aig"
,
0
,
0
);
Gia_ManStop
(
pNew
);
Gia_ManStop
(
pNew
);
...
...
src/base/wlc/wlcSim.c
View file @
4886a4ef
...
@@ -129,7 +129,7 @@ Vec_Ptr_t * Wlc_NtkSimulate( Wlc_Ntk_t * p, Vec_Int_t * vNodes, int nWords, int
...
@@ -129,7 +129,7 @@ Vec_Ptr_t * Wlc_NtkSimulate( Wlc_Ntk_t * p, Vec_Int_t * vNodes, int nWords, int
{
{
Gia_Obj_t
*
pObj
;
Gia_Obj_t
*
pObj
;
Vec_Ptr_t
*
vOne
,
*
vRes
;
Vec_Ptr_t
*
vOne
,
*
vRes
;
Gia_Man_t
*
pGia
=
Wlc_NtkBitBlast
(
p
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
);
Gia_Man_t
*
pGia
=
Wlc_NtkBitBlast
(
p
,
NULL
,
-
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
);
Wlc_Obj_t
*
pWlcObj
;
Wlc_Obj_t
*
pWlcObj
;
int
f
,
i
,
k
,
w
,
nBits
,
Counter
=
0
;
int
f
,
i
,
k
,
w
,
nBits
,
Counter
=
0
;
// allocate simulation info for one timeframe
// allocate simulation info for one timeframe
...
...
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