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
9e28925c
Commit
9e28925c
authored
5 years ago
by
Arvid Westerlund
Browse files
Options
Downloads
Patches
Plain Diff
Ran pylint and fixed merge request comments.
parent
2475a9ca
No related branches found
No related tags found
1 merge request
!16
Implemented "Modify Word Length"
Pipeline
#11354
passed
5 years ago
Stage: test
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
b_asic/port.py
+14
-11
14 additions, 11 deletions
b_asic/port.py
test/test_inputport.py
+6
-8
6 additions, 8 deletions
test/test_inputport.py
with
20 additions
and
19 deletions
b_asic/port.py
+
14
−
11
View file @
9e28925c
...
...
@@ -49,20 +49,23 @@ class Port(ABC):
@abstractmethod
def
connect
(
self
,
port
:
"
Port
"
)
->
Signal
:
"""
Create and return a signal that is connected to this port and the entered
port and connect this port to the signal and the entered port to the signal.
"""
port and connect this port to the signal and the entered port to the signal.
"""
raise
NotImplementedError
@abstractmethod
def
add_signal
(
self
,
signal
:
Signal
)
->
None
:
"""
Connect this port to the entered signal. If the entered signal isn
'
t connected to
this port then connect the entered signal to the port aswell.
"""
this port then connect the entered signal to the port aswell.
"""
raise
NotImplementedError
@abstractmethod
def
disconnect
(
self
,
port
:
"
Port
"
)
->
None
:
"""
Disconnect the entered port from the port by removing it from the ports signal.
If the entered port is still connected to this ports signal then disconnect the entered
port from the signal aswell.
"""
port from the signal aswell.
"""
raise
NotImplementedError
@abstractmethod
...
...
@@ -112,7 +115,6 @@ class InputPort(AbstractPort):
_source_signal
:
Optional
[
Signal
]
_value_length
:
Optional
[
int
]
def
__init__
(
self
,
port_id
:
PortIndex
,
operation
:
Operation
):
super
().
__init__
(
port_id
,
operation
)
self
.
_source_signal
=
None
...
...
@@ -130,11 +132,11 @@ class InputPort(AbstractPort):
def
connected_ports
(
self
)
->
List
[
Port
]:
return
[]
if
self
.
_source_signal
is
None
or
self
.
_source_signal
.
source
is
None
\
else
[
self
.
_source_signal
.
source
]
@value_length.setter
def
value_length
(
self
,
bits
:
Optional
[
int
])
->
None
:
assert
isinstance
(
bits
,
int
)
or
bits
is
None
,
"
Value length on input port has to be of type Int or NoneType.
"
assert
bits
is
None
or
bits
>=
0
,
"
Value length on input port has to be a non-negative integer or None.
"
assert
(
isinstance
(
bits
,
int
)
and
bits
>=
0
)
or
bits
is
None
,
\
"
Value length on input port has to be a non-negative integer or None.
"
self
.
_value_length
=
bits
def
signal_count
(
self
)
->
int
:
...
...
@@ -142,7 +144,7 @@ class InputPort(AbstractPort):
def
connect
(
self
,
port
:
"
OutputPort
"
)
->
Signal
:
assert
self
.
_source_signal
is
None
,
"
Connecting new port to already connected input port.
"
return
Signal
(
port
,
self
)
# self._source_signal is set by the signal constructor
return
Signal
(
port
,
self
)
# self._source_signal is set by the signal constructor
.
def
add_signal
(
self
,
signal
:
Signal
)
->
None
:
assert
self
.
_source_signal
is
None
,
"
Connecting new port to already connected input port.
"
...
...
@@ -159,12 +161,13 @@ class InputPort(AbstractPort):
old_signal
:
Signal
=
self
.
_source_signal
self
.
_source_signal
=
None
if
self
is
old_signal
.
destination
:
# Disconnect the dest of the signal if this inputport currently is the dest
# Disconnect the dest of the signal if this inputport currently is the dest
.
old_signal
.
remove_destination
()
def
clear
(
self
)
->
None
:
self
.
remove_signal
(
self
.
_source_signal
)
class
OutputPort
(
AbstractPort
):
"""
Output port.
TODO: More info.
...
...
@@ -193,14 +196,14 @@ class OutputPort(AbstractPort):
return
len
(
self
.
_destination_signals
)
def
connect
(
self
,
port
:
InputPort
)
->
Signal
:
return
Signal
(
self
,
port
)
# Signal is added to self._destination_signals in signal constructor
return
Signal
(
self
,
port
)
# Signal is added to self._destination_signals in signal constructor
.
def
add_signal
(
self
,
signal
:
Signal
)
->
None
:
assert
signal
not
in
self
.
signals
,
\
"
Attempting to connect to Signal already connected.
"
self
.
_destination_signals
.
append
(
signal
)
if
self
is
not
signal
.
source
:
# Connect this outputport to the signal if it isn't already
# Connect this outputport to the signal if it isn't already
.
signal
.
set_source
(
self
)
def
disconnect
(
self
,
port
:
InputPort
)
->
None
:
...
...
This diff is collapsed.
Click to expand it.
test/test_inputport.py
+
6
−
8
View file @
9e28925c
...
...
@@ -24,18 +24,16 @@ def dangling_sig():
return
Signal
()
@pytest.fixture
def
s_w_source
():
out_port
=
OutputPort
(
0
,
None
)
def
s_w_source
(
out_port
):
return
Signal
(
source
=
out_port
)
@pytest.fixture
def
sig_with_dest
():
#inp_port = InputPort(0, None)
return
Signal
(
destination
=
inp_port
())
def
sig_with_dest
(
inp_port
):
return
Signal
(
destination
=
inp_port
)
@pytest.fixture
def
connected_sig
():
return
Signal
(
source
=
out_port
()
,
destination
=
inp_port
()
)
def
connected_sig
(
inp_port
,
out_port
):
return
Signal
(
source
=
out_port
,
destination
=
inp_port
)
def
test_connect_then_disconnect
(
inp_port
,
out_port
):
"""
Test connect unused port to port.
"""
...
...
@@ -104,4 +102,4 @@ def test_set_value_length_float(inp_port):
def
test_set_value_length_pos_then_none
(
inp_port
):
inp_port
.
value_length
=
10
inp_port
.
value_length
=
None
assert
inp_port
.
value_length
==
None
\ No newline at end of file
assert
inp_port
.
value_length
is
None
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