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
f3ba29b3
Commit
f3ba29b3
authored
Jan 09, 2019
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Procedures to generate constant-argument multipliers.
parent
c2c87aa6
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
75 additions
and
22 deletions
+75
-22
abclib.dsp
+8
-0
src/base/abci/abc.c
+1
-1
src/misc/extra/extraUtilCfs.c
+46
-0
src/misc/extra/extraUtilMacc.c
+20
-21
No files found.
abclib.dsp
View file @
f3ba29b3
...
@@ -3691,6 +3691,10 @@ SOURCE=.\src\misc\extra\extraUtilCanon.c
...
@@ -3691,6 +3691,10 @@ SOURCE=.\src\misc\extra\extraUtilCanon.c
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilCfs.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilCube.c
SOURCE=.\src\misc\extra\extraUtilCube.c
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
@@ -3707,6 +3711,10 @@ SOURCE=.\src\misc\extra\extraUtilFile.c
...
@@ -3707,6 +3711,10 @@ SOURCE=.\src\misc\extra\extraUtilFile.c
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilMacc.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilMaj.c
SOURCE=.\src\misc\extra\extraUtilMaj.c
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
...
src/base/abci/abc.c
View file @
f3ba29b3
...
@@ -13367,7 +13367,7 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -13367,7 +13367,7 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
}
}
// Abc_NtkComputePaths( Abc_FrameReadNtk(pAbc) );
// Abc_NtkComputePaths( Abc_FrameReadNtk(pAbc) );
//Dau_NetworkEnumTest();
//Dau_NetworkEnumTest();
//Ext
_TruthDiagnose
Test();
//Ext
ra_DigitsDumpGia
Test();
return
0
;
return
0
;
usage:
usage:
Abc_Print
(
-
2
,
"usage: test [-CKDNM] [-aovwh] <file_name>
\n
"
);
Abc_Print
(
-
2
,
"usage: test [-CKDNM] [-aovwh] <file_name>
\n
"
);
src/misc/extra/extraUtilCfs.c
0 → 100644
View file @
f3ba29b3
/**CFile****************************************************************
FileName [extraUtilCfs.c]
SystemName [ABC: Logic synthesis and verification system.]
PackageName [extra]
Synopsis [CF simulation.]
Author [Alan Mishchenko]
Affiliation [UC Berkeley]
Date [Ver. 1.0. Started - June 20, 2005.]
Revision [$Id: extraUtilCfs.c,v 1.0 2003/02/01 00:00:00 alanmi Exp $]
***********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "aig/gia/gia.h"
#include "misc/extra/extra.h"
#include "misc/util/utilTruth.h"
ABC_NAMESPACE_IMPL_START
////////////////////////////////////////////////////////////////////////
/// DECLARATIONS ///
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS ///
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////
ABC_NAMESPACE_IMPL_END
src/misc/extra/extraUtilMacc.c
View file @
f3ba29b3
...
@@ -49,11 +49,10 @@ ABC_NAMESPACE_IMPL_START
...
@@ -49,11 +49,10 @@ ABC_NAMESPACE_IMPL_START
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
void
Wl
c_ConstMultSpecOne
(
FILE
*
pFile
,
int
n
,
int
nBits
,
int
nWidth
)
void
Mac
c_ConstMultSpecOne
(
FILE
*
pFile
,
int
n
,
int
nBits
,
int
nWidth
)
{
{
int
nTotal
=
nWidth
+
nBits
;
int
nTotal
=
nWidth
+
nBits
;
int
Bound
=
1
<<
(
nBits
-
1
);
int
Bound
=
1
<<
(
nBits
-
1
);
char
Sign
=
n
<
0
?
'_'
:
' '
;
assert
(
-
Bound
<=
n
&&
n
<
Bound
);
assert
(
-
Bound
<=
n
&&
n
<
Bound
);
fprintf
(
pFile
,
"// %d-bit multiplier by %d-bit constant %d generated by ABC
\n
"
,
nWidth
,
nBits
,
n
);
fprintf
(
pFile
,
"// %d-bit multiplier by %d-bit constant %d generated by ABC
\n
"
,
nWidth
,
nBits
,
n
);
fprintf
(
pFile
,
"module mul%03d%s (
\n
"
,
Abc_AbsInt
(
n
),
n
<
0
?
"_neg"
:
"_pos"
);
fprintf
(
pFile
,
"module mul%03d%s (
\n
"
,
Abc_AbsInt
(
n
),
n
<
0
?
"_neg"
:
"_pos"
);
...
@@ -61,13 +60,13 @@ void Wlc_ConstMultSpecOne( FILE * pFile, int n, int nBits, int nWidth )
...
@@ -61,13 +60,13 @@ void Wlc_ConstMultSpecOne( FILE * pFile, int n, int nBits, int nWidth )
fprintf
(
pFile
,
" output [%d:0] o
\n
"
,
nWidth
-
1
);
fprintf
(
pFile
,
" output [%d:0] o
\n
"
,
nWidth
-
1
);
fprintf
(
pFile
,
");
\n
"
);
fprintf
(
pFile
,
");
\n
"
);
fprintf
(
pFile
,
" wire [%d:0] c = %d
\'
h%x;
\n
"
,
nBits
-
1
,
nBits
,
Abc_AbsInt
(
n
)
);
fprintf
(
pFile
,
" wire [%d:0] c = %d
\'
h%x;
\n
"
,
nBits
-
1
,
nBits
,
Abc_AbsInt
(
n
)
);
fprintf
(
pFile
,
" wire [%d:0] I = {{%d{i[%d]}}, i};
\n
"
,
nTotal
-
1
,
nBits
,
nWidth
-
1
);
fprintf
(
pFile
,
" wire [%d:0] I = {{%d{i[%d]}}, i};
\n
"
,
nTotal
-
1
,
nBits
,
nWidth
-
1
);
fprintf
(
pFile
,
" wire [%d:0] m = I * c;
\n
"
,
nTotal
-
1
);
fprintf
(
pFile
,
" wire [%d:0] m = I * c;
\n
"
,
nTotal
-
1
);
fprintf
(
pFile
,
" wire [%d:0] t = %cm;
\n
"
,
nTotal
-
1
,
n
<
0
?
'-'
:
' '
);
fprintf
(
pFile
,
" wire [%d:0] t = %cm;
\n
"
,
nTotal
-
1
,
n
<
0
?
'-'
:
' '
);
fprintf
(
pFile
,
" assign o = t[%d:%d];
\n
"
,
nTotal
-
1
,
nBits
);
fprintf
(
pFile
,
" assign o = t[%d:%d];
\n
"
,
nTotal
-
1
,
nBits
);
fprintf
(
pFile
,
"endmodule
\n\n
"
);
fprintf
(
pFile
,
"endmodule
\n\n
"
);
}
}
void
Wl
c_ConstMultSpecTest
()
void
Mac
c_ConstMultSpecTest
()
{
{
int
nBits
=
8
;
int
nBits
=
8
;
int
nWidth
=
16
;
int
nWidth
=
16
;
...
@@ -79,7 +78,7 @@ void Wlc_ConstMultSpecTest()
...
@@ -79,7 +78,7 @@ void Wlc_ConstMultSpecTest()
{
{
sprintf
(
Buffer
,
"const_mul//spec%03d.v"
,
0xFF
&
i
);
sprintf
(
Buffer
,
"const_mul//spec%03d.v"
,
0xFF
&
i
);
pFile
=
fopen
(
Buffer
,
"wb"
);
pFile
=
fopen
(
Buffer
,
"wb"
);
Wl
c_ConstMultSpecOne
(
pFile
,
i
,
nBits
,
nWidth
);
Mac
c_ConstMultSpecOne
(
pFile
,
i
,
nBits
,
nWidth
);
fclose
(
pFile
);
fclose
(
pFile
);
}
}
}
}
...
@@ -95,7 +94,7 @@ void Wlc_ConstMultSpecTest()
...
@@ -95,7 +94,7 @@ void Wlc_ConstMultSpecTest()
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
unsigned
*
Wl
c_ConstMultGenerate
(
int
nBits
)
unsigned
*
Mac
c_ConstMultGenerate
(
int
nBits
)
{
{
unsigned
Mask
=
Abc_InfoMask
(
nBits
);
unsigned
Mask
=
Abc_InfoMask
(
nBits
);
Vec_Wec_t
*
vDivs
=
Vec_WecStart
(
2
*
nBits
);
Vec_Wec_t
*
vDivs
=
Vec_WecStart
(
2
*
nBits
);
...
@@ -186,14 +185,14 @@ unsigned * Wlc_ConstMultGenerate( int nBits )
...
@@ -186,14 +185,14 @@ unsigned * Wlc_ConstMultGenerate( int nBits )
//ABC_FREE( pPlace );
//ABC_FREE( pPlace );
return
pPlace
;
return
pPlace
;
}
}
void
Wl
c_ConstMultGenTest0
()
void
Mac
c_ConstMultGenTest0
()
{
{
int
nBits
=
8
;
int
nBits
=
8
;
unsigned
*
p
=
Wl
c_ConstMultGenerate
(
nBits
);
unsigned
*
p
=
Mac
c_ConstMultGenerate
(
nBits
);
ABC_FREE
(
p
);
ABC_FREE
(
p
);
}
}
void
Wl
c_ConstMultGenOne_rec
(
FILE
*
pFile
,
unsigned
*
p
,
int
n
,
int
nBits
,
int
nWidth
)
void
Mac
c_ConstMultGenOne_rec
(
FILE
*
pFile
,
unsigned
*
p
,
int
n
,
int
nBits
,
int
nWidth
)
{
{
unsigned
Mask
=
Abc_InfoMask
(
nBits
);
unsigned
Mask
=
Abc_InfoMask
(
nBits
);
unsigned
New
=
Mask
&
(
unsigned
)
n
;
unsigned
New
=
Mask
&
(
unsigned
)
n
;
...
@@ -213,23 +212,23 @@ void Wlc_ConstMultGenOne_rec( FILE * pFile, unsigned * p, int n, int nBits, int
...
@@ -213,23 +212,23 @@ void Wlc_ConstMultGenOne_rec( FILE * pFile, unsigned * p, int n, int nBits, int
if
(
nn
==
-
1
)
if
(
nn
==
-
1
)
fprintf
(
pFile
,
" wire [%d:0] N1 = -n1;
\n
"
,
nTotal
-
1
);
fprintf
(
pFile
,
" wire [%d:0] N1 = -n1;
\n
"
,
nTotal
-
1
);
if
(
Abc_AbsInt
(
nn
)
!=
1
)
if
(
Abc_AbsInt
(
nn
)
!=
1
)
Wl
c_ConstMultGenOne_rec
(
pFile
,
p
,
nn
,
nBits
,
nWidth
);
Mac
c_ConstMultGenOne_rec
(
pFile
,
p
,
nn
,
nBits
,
nWidth
);
if
(
nZeros
>
0
)
if
(
nZeros
>
0
)
fprintf
(
pFile
,
" wire [%d:0] %c%d = %c%d << %d;
\n
"
,
nTotal
-
1
,
Sign
,
Abc_AbsInt
(
n
),
Sign
,
Abc_AbsInt
(
nn
),
nZeros
);
fprintf
(
pFile
,
" wire [%d:0] %c%d = %c%d << %d;
\n
"
,
nTotal
-
1
,
Sign
,
Abc_AbsInt
(
n
),
Sign
,
Abc_AbsInt
(
nn
),
nZeros
);
}
}
else
if
(
One
&&
Two
)
// add/sub
else
if
(
One
&&
Two
)
// add/sub
{
{
Wl
c_ConstMultGenOne_rec
(
pFile
,
p
,
One
,
nBits
,
nWidth
);
Mac
c_ConstMultGenOne_rec
(
pFile
,
p
,
One
,
nBits
,
nWidth
);
Wl
c_ConstMultGenOne_rec
(
pFile
,
p
,
Two
,
nBits
,
nWidth
);
Mac
c_ConstMultGenOne_rec
(
pFile
,
p
,
Two
,
nBits
,
nWidth
);
fprintf
(
pFile
,
" wire [%d:0] %c%d = n%d %c n%d;
\n
"
,
nTotal
-
1
,
Sign
,
Abc_AbsInt
(
n
),
One
,
Oper
,
Two
);
fprintf
(
pFile
,
" wire [%d:0] %c%d = n%d %c n%d;
\n
"
,
nTotal
-
1
,
Sign
,
Abc_AbsInt
(
n
),
One
,
Oper
,
Two
);
}
}
else
if
(
Two
==
0
)
// minus
else
if
(
Two
==
0
)
// minus
{
{
Wl
c_ConstMultGenOne_rec
(
pFile
,
p
,
One
,
nBits
,
nWidth
);
Mac
c_ConstMultGenOne_rec
(
pFile
,
p
,
One
,
nBits
,
nWidth
);
fprintf
(
pFile
,
" wire [%d:0] N%d = -n%d;
\n
"
,
nTotal
-
1
,
One
,
One
);
fprintf
(
pFile
,
" wire [%d:0] N%d = -n%d;
\n
"
,
nTotal
-
1
,
One
,
One
);
}
}
}
}
void
Wl
c_ConstMultGenMult
(
FILE
*
pFile
,
unsigned
*
p
,
int
n
,
int
nBits
,
int
nWidth
)
void
Mac
c_ConstMultGenMult
(
FILE
*
pFile
,
unsigned
*
p
,
int
n
,
int
nBits
,
int
nWidth
)
{
{
int
nTotal
=
nWidth
+
nBits
;
int
nTotal
=
nWidth
+
nBits
;
int
Bound
=
1
<<
(
nBits
-
1
);
int
Bound
=
1
<<
(
nBits
-
1
);
...
@@ -245,12 +244,12 @@ void Wlc_ConstMultGenMult( FILE * pFile, unsigned * p, int n, int nBits, int nWi
...
@@ -245,12 +244,12 @@ void Wlc_ConstMultGenMult( FILE * pFile, unsigned * p, int n, int nBits, int nWi
else
else
{
{
fprintf
(
pFile
,
" wire [%d:0] n1 = {{%d{i[%d]}}, i};
\n
"
,
nTotal
-
1
,
nBits
,
nWidth
-
1
);
fprintf
(
pFile
,
" wire [%d:0] n1 = {{%d{i[%d]}}, i};
\n
"
,
nTotal
-
1
,
nBits
,
nWidth
-
1
);
Wl
c_ConstMultGenOne_rec
(
pFile
,
p
,
n
,
nBits
,
nWidth
);
Mac
c_ConstMultGenOne_rec
(
pFile
,
p
,
n
,
nBits
,
nWidth
);
fprintf
(
pFile
,
" assign o = %c%d[%d:%d];
\n
"
,
Sign
,
Abc_AbsInt
(
n
),
nTotal
-
1
,
nBits
);
fprintf
(
pFile
,
" assign o = %c%d[%d:%d];
\n
"
,
Sign
,
Abc_AbsInt
(
n
),
nTotal
-
1
,
nBits
);
}
}
fprintf
(
pFile
,
"endmodule
\n\n
"
);
fprintf
(
pFile
,
"endmodule
\n\n
"
);
}
}
void
Wl
c_ConstMultGenMacc
(
FILE
*
pFile
,
unsigned
*
p
,
int
n
,
int
nBits
,
int
nWidth
)
void
Mac
c_ConstMultGenMacc
(
FILE
*
pFile
,
unsigned
*
p
,
int
n
,
int
nBits
,
int
nWidth
)
{
{
int
nTotal
=
nWidth
+
nBits
;
int
nTotal
=
nWidth
+
nBits
;
int
Bound
=
1
<<
(
nBits
-
1
);
int
Bound
=
1
<<
(
nBits
-
1
);
...
@@ -263,22 +262,22 @@ void Wlc_ConstMultGenMacc( FILE * pFile, unsigned * p, int n, int nBits, int nWi
...
@@ -263,22 +262,22 @@ void Wlc_ConstMultGenMacc( FILE * pFile, unsigned * p, int n, int nBits, int nWi
fprintf
(
pFile
,
" output [%d:0] o
\n
"
,
nWidth
-
1
);
fprintf
(
pFile
,
" output [%d:0] o
\n
"
,
nWidth
-
1
);
fprintf
(
pFile
,
");
\n
"
);
fprintf
(
pFile
,
");
\n
"
);
if
(
n
==
0
)
if
(
n
==
0
)
fprintf
(
pFile
,
" assign o =
%d
\'
h0;
\n
"
,
nWidth
);
fprintf
(
pFile
,
" assign o =
c;
\n
"
);
else
else
{
{
fprintf
(
pFile
,
" wire [%d:0] n1 = {{%d{i[%d]}}, i};
\n
"
,
nTotal
-
1
,
nBits
,
nWidth
-
1
);
fprintf
(
pFile
,
" wire [%d:0] n1 = {{%d{i[%d]}}, i};
\n
"
,
nTotal
-
1
,
nBits
,
nWidth
-
1
);
Wl
c_ConstMultGenOne_rec
(
pFile
,
p
,
n
,
nBits
,
nWidth
);
Mac
c_ConstMultGenOne_rec
(
pFile
,
p
,
n
,
nBits
,
nWidth
);
fprintf
(
pFile
,
" wire [%d:0] s = %c%d[%d:%d];
\n
"
,
nWidth
-
1
,
Sign
,
Abc_AbsInt
(
n
),
nTotal
-
1
,
nBits
);
fprintf
(
pFile
,
" wire [%d:0] s = %c%d[%d:%d];
\n
"
,
nWidth
-
1
,
Sign
,
Abc_AbsInt
(
n
),
nTotal
-
1
,
nBits
);
fprintf
(
pFile
,
" assign o = s + c;
\n
"
);
fprintf
(
pFile
,
" assign o = s + c;
\n
"
);
}
}
fprintf
(
pFile
,
"endmodule
\n\n
"
);
fprintf
(
pFile
,
"endmodule
\n\n
"
);
}
}
void
Wl
c_ConstMultGenTest
()
void
Mac
c_ConstMultGenTest
()
{
{
int
nBits
=
8
;
int
nBits
=
8
;
int
nWidth
=
16
;
int
nWidth
=
16
;
int
Bound
=
1
<<
(
nBits
-
1
);
int
Bound
=
1
<<
(
nBits
-
1
);
unsigned
*
p
=
Wl
c_ConstMultGenerate
(
nBits
);
unsigned
*
p
=
Mac
c_ConstMultGenerate
(
nBits
);
int
i
;
int
i
;
char
Buffer
[
100
];
char
Buffer
[
100
];
FILE
*
pFile
;
FILE
*
pFile
;
...
@@ -286,7 +285,7 @@ void Wlc_ConstMultGenTest()
...
@@ -286,7 +285,7 @@ void Wlc_ConstMultGenTest()
{
{
sprintf
(
Buffer
,
"const_mul//macc%03d.v"
,
0xFF
&
i
);
sprintf
(
Buffer
,
"const_mul//macc%03d.v"
,
0xFF
&
i
);
pFile
=
fopen
(
Buffer
,
"wb"
);
pFile
=
fopen
(
Buffer
,
"wb"
);
Wl
c_ConstMultGenMacc
(
pFile
,
p
,
i
,
nBits
,
nWidth
);
Mac
c_ConstMultGenMacc
(
pFile
,
p
,
i
,
nBits
,
nWidth
);
fclose
(
pFile
);
fclose
(
pFile
);
}
}
ABC_FREE
(
p
);
ABC_FREE
(
p
);
...
...
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