Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
B-ASIC - Better ASIC Toolbox
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Computer Engineering
B-ASIC - Better ASIC Toolbox
Commits
6f892a44
Commit
6f892a44
authored
4 years ago
by
Arvid Westerlund
Committed by
Adam Jakobsson
4 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Resolve "Verify SFG 1000 Operations"
parent
79c5a170
No related branches found
Branches containing commit
No related tags found
2 merge requests
!67
WIP: B-ASIC version 1.0.0 hotfix
,
!65
B-ASIC version 1.0.0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
test/test_sfg.py
+111
-3
111 additions, 3 deletions
test/test_sfg.py
with
111 additions
and
3 deletions
test/test_sfg.py
+
111
−
3
View file @
6f892a44
...
...
@@ -5,9 +5,10 @@ import string
import
io
import
sys
from
b_asic
import
SFG
,
Signal
,
Input
,
Output
,
Constant
,
ConstantMultiplication
,
Addition
,
Multiplication
,
Delay
,
\
Butterfly
,
Subtraction
,
SquareRoot
from
b_asic
import
SFG
,
Signal
,
Input
,
Output
,
Delay
,
FastSimulation
from
b_asic.core_operations
import
Constant
,
Addition
,
Subtraction
,
Multiplication
,
\
Division
,
Min
,
Max
,
SquareRoot
,
ComplexConjugate
,
Absolute
,
ConstantMultiplication
,
\
Butterfly
from
b_asic.save_load_structure
import
sfg_to_python
,
python_to_sfg
...
...
@@ -283,6 +284,113 @@ class TestReplaceComponents:
assert
False
class
TestConstructSFG
:
def
test_1k_additions
(
self
):
prev_op
=
Addition
(
Constant
(
1
),
Constant
(
1
))
for
_
in
range
(
999
):
prev_op
=
Addition
(
prev_op
,
Constant
(
2
))
sfg
=
SFG
(
outputs
=
[
Output
(
prev_op
)])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
][
0
].
real
==
2000
def
test_1k_subtractions
(
self
):
prev_op
=
Subtraction
(
Constant
(
0
),
Constant
(
2
))
for
_
in
range
(
999
):
prev_op
=
Subtraction
(
prev_op
,
Constant
(
2
))
sfg
=
SFG
(
outputs
=
[
Output
(
prev_op
)])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
][
0
].
real
==
-
2000
def
test_1k_butterfly
(
self
):
prev_op_add
=
Addition
(
Constant
(
1
),
Constant
(
1
))
prev_op_sub
=
Subtraction
(
Constant
(
-
1
),
Constant
(
1
))
for
_
in
range
(
499
):
prev_op_add
=
Addition
(
prev_op_add
,
Constant
(
2
))
for
_
in
range
(
499
):
prev_op_sub
=
Subtraction
(
prev_op_sub
,
Constant
(
2
))
butterfly
=
Butterfly
(
prev_op_add
,
prev_op_sub
)
sfg
=
SFG
(
outputs
=
[
Output
(
butterfly
.
output
(
0
)),
Output
(
butterfly
.
output
(
1
))])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
][
0
].
real
==
0
assert
sim
.
results
[
"
1
"
][
0
].
real
==
2000
def
test_1k_multiplications
(
self
):
prev_op
=
Multiplication
(
Constant
(
3
),
Constant
(
0.5
))
for
_
in
range
(
999
):
prev_op
=
Multiplication
(
prev_op
,
Constant
(
1.01
))
sfg
=
SFG
(
outputs
=
[
Output
(
prev_op
)])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
][
0
].
real
==
31127.458868040336
def
test_1k_divisions
(
self
):
prev_op
=
Division
(
Constant
(
3
),
Constant
(
0.5
))
for
_
in
range
(
999
):
prev_op
=
Division
(
prev_op
,
Constant
(
1.01
))
sfg
=
SFG
(
outputs
=
[
Output
(
prev_op
)])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
][
0
].
real
==
0.00028913378500165966
def
test_1k_mins
(
self
):
prev_op
=
Min
(
Constant
(
3.14159
),
Constant
(
43.14123843
))
for
_
in
range
(
999
):
prev_op
=
Min
(
prev_op
,
Constant
(
43.14123843
))
sfg
=
SFG
(
outputs
=
[
Output
(
prev_op
)])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
][
0
].
real
==
3.14159
def
test_1k_maxs
(
self
):
prev_op
=
Max
(
Constant
(
3.14159
),
Constant
(
43.14123843
))
for
_
in
range
(
999
):
prev_op
=
Max
(
prev_op
,
Constant
(
3.14159
))
sfg
=
SFG
(
outputs
=
[
Output
(
prev_op
)])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
][
0
].
real
==
43.14123843
def
test_1k_square_roots
(
self
):
prev_op
=
SquareRoot
(
Constant
(
1000000
))
for
_
in
range
(
4
):
prev_op
=
SquareRoot
(
prev_op
)
sfg
=
SFG
(
outputs
=
[
Output
(
prev_op
)])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
][
0
].
real
==
1.539926526059492
def
test_1k_complex_conjugates
(
self
):
prev_op
=
ComplexConjugate
(
Constant
(
10
+
5j
))
for
_
in
range
(
999
):
prev_op
=
ComplexConjugate
(
prev_op
)
sfg
=
SFG
(
outputs
=
[
Output
(
prev_op
)])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
]
==
[
10
+
5j
]
def
test_1k_absolutes
(
self
):
prev_op
=
Absolute
(
Constant
(
-
3.14159
))
for
_
in
range
(
999
):
prev_op
=
Absolute
(
prev_op
)
sfg
=
SFG
(
outputs
=
[
Output
(
prev_op
)])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
][
0
].
real
==
3.14159
def
test_1k_constant_multiplications
(
self
):
prev_op
=
ConstantMultiplication
(
1.02
,
Constant
(
3.14159
))
for
_
in
range
(
999
):
prev_op
=
ConstantMultiplication
(
1.02
,
prev_op
)
sfg
=
SFG
(
outputs
=
[
Output
(
prev_op
)])
sim
=
FastSimulation
(
sfg
)
sim
.
step
()
assert
sim
.
results
[
"
0
"
][
0
].
real
==
1251184247.0026844
class
TestInsertComponent
:
def
test_insert_component_in_sfg
(
self
,
large_operation_tree_names
):
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment