Access
Access.
Classes:
| Name | Description |
|---|---|
ReadOp |
Read Operation. |
WriteOp |
Write Operation. |
Access |
Access. |
Functions:
| Name | Description |
|---|---|
cast_access |
Cast Access. |
get_counteraccess |
Get Counter Access. |
any_read |
Return |
is_read_repeatable |
Return |
is_write_repeatable |
Return |
ReadOp
WriteOp
Bases: IdentLightObject
Write Operation.
NEXT = {data}DATA {op} {write}WRITE
Attributes:
| Name | Type | Description |
|---|---|---|
data |
Literal[None, '', '~']
|
Operation On Stored Data. |
op |
Literal[None, 0, 1, '&', '|']
|
Operation On Stored and Incoming Data. |
write |
Literal[None, '', '~']
|
Operation On Incoming Data. |
once |
bool
|
Operation is just allowed once. |
title |
str
|
Title. |
descr |
str
|
Description. |
Access
cast_access
Cast Access.
Usage:
>>> from ucdp_addr import addrspace
>>> access = addrspace.cast_access("RO")
>>> access
RO
>>> cast_access(access)
RO
get_counteraccess
Get Counter Access.
Usage:
>>> from ucdp_addr import get_counteraccess, access
>>> str(get_counteraccess(access.RO))
'RW'
>>> str(get_counteraccess(access.RW))
'RO'
any_read
Return True if there is any read.
Usage:
>>> any_read([NA])
False
>>> any_read([RO, RO])
True
>>> any_read([RW, RW])
True
>>> any_read([RO, RW, WO])
True
is_read_repeatable
Return True if a read has no side-effects.
Usage:
>>> is_read_repeatable([NA])
True
>>> is_read_repeatable([RO, RO])
True
>>> is_read_repeatable([RW, RW])
True
>>> is_read_repeatable([RO, RW, WO])
True
>>> is_read_repeatable([RO, RW, RC])
False
>>> is_read_repeatable([RO, RW, RP])
False