@@ -918,32 +918,6 @@ def __repr__(self):
918
918
C = Const # shorthand
919
919
920
920
921
- class AnyValue (Value , DUID ):
922
- def __init__ (self , shape , * , src_loc_at = 0 ):
923
- super ().__init__ (src_loc_at = src_loc_at )
924
- shape = Shape .cast (shape , src_loc_at = 1 + src_loc_at )
925
- self .width = shape .width
926
- self .signed = shape .signed
927
-
928
- def shape (self ):
929
- return Shape (self .width , self .signed )
930
-
931
- def _rhs_signals (self ):
932
- return SignalSet ()
933
-
934
-
935
- @final
936
- class AnyConst (AnyValue ):
937
- def __repr__ (self ):
938
- return "(anyconst {}'{})" .format (self .width , "s" if self .signed else "" )
939
-
940
-
941
- @final
942
- class AnySeq (AnyValue ):
943
- def __repr__ (self ):
944
- return "(anyseq {}'{})" .format (self .width , "s" if self .signed else "" )
945
-
946
-
947
921
@final
948
922
class Operator (Value ):
949
923
def __init__ (self , operator , operands , * , src_loc_at = 0 ):
@@ -1442,6 +1416,37 @@ def __repr__(self):
1442
1416
return f"(rst { self .domain } )"
1443
1417
1444
1418
1419
+ @final
1420
+ class AnyValue (Value , DUID ):
1421
+ class Kind (Enum ):
1422
+ AnyConst = "anyconst"
1423
+ AnySeq = "anyseq"
1424
+
1425
+ def __init__ (self , kind , shape , * , src_loc_at = 0 ):
1426
+ super ().__init__ (src_loc_at = src_loc_at )
1427
+ self .kind = self .Kind (kind )
1428
+ shape = Shape .cast (shape , src_loc_at = 1 + src_loc_at )
1429
+ self .width = shape .width
1430
+ self .signed = shape .signed
1431
+
1432
+ def shape (self ):
1433
+ return Shape (self .width , self .signed )
1434
+
1435
+ def _rhs_signals (self ):
1436
+ return SignalSet ()
1437
+
1438
+ def __repr__ (self ):
1439
+ return "({} {}'{})" .format (self .kind .value , self .width , "s" if self .signed else "" )
1440
+
1441
+
1442
+ def AnyConst (shape , * , src_loc_at = 0 ):
1443
+ return AnyValue ("anyconst" , shape , src_loc_at = src_loc_at + 1 )
1444
+
1445
+
1446
+ def AnySeq (shape , * , src_loc_at = 0 ):
1447
+ return AnyValue ("anyseq" , shape , src_loc_at = src_loc_at + 1 )
1448
+
1449
+
1445
1450
class Array (MutableSequence ):
1446
1451
"""Addressable multiplexer.
1447
1452
@@ -1729,11 +1734,18 @@ class UnusedProperty(UnusedMustUse):
1729
1734
pass
1730
1735
1731
1736
1737
+ @final
1732
1738
class Property (Statement , MustUse ):
1733
1739
_MustUse__warning = UnusedProperty
1734
1740
1735
- def __init__ (self , test , * , _check = None , _en = None , name = None , src_loc_at = 0 ):
1741
+ class Kind (Enum ):
1742
+ Assert = "assert"
1743
+ Assume = "assume"
1744
+ Cover = "cover"
1745
+
1746
+ def __init__ (self , kind , test , * , _check = None , _en = None , name = None , src_loc_at = 0 ):
1736
1747
super ().__init__ (src_loc_at = src_loc_at )
1748
+ self .kind = self .Kind (kind )
1737
1749
self .test = Value .cast (test )
1738
1750
self ._check = _check
1739
1751
self ._en = _en
@@ -1742,10 +1754,10 @@ def __init__(self, test, *, _check=None, _en=None, name=None, src_loc_at=0):
1742
1754
raise TypeError ("Property name must be a string or None, not {!r}"
1743
1755
.format (self .name ))
1744
1756
if self ._check is None :
1745
- self ._check = Signal (reset_less = True , name = f"${ self ._kind } $check" )
1757
+ self ._check = Signal (reset_less = True , name = f"${ self .kind . value } $check" )
1746
1758
self ._check .src_loc = self .src_loc
1747
1759
if _en is None :
1748
- self ._en = Signal (reset_less = True , name = f"${ self ._kind } $en" )
1760
+ self ._en = Signal (reset_less = True , name = f"${ self .kind . value } $en" )
1749
1761
self ._en .src_loc = self .src_loc
1750
1762
1751
1763
def _lhs_signals (self ):
@@ -1756,23 +1768,20 @@ def _rhs_signals(self):
1756
1768
1757
1769
def __repr__ (self ):
1758
1770
if self .name is not None :
1759
- return f"({ self .name } : { self ._kind } { self .test !r} )"
1760
- return f"({ self ._kind } { self .test !r} )"
1771
+ return f"({ self .name } : { self .kind . value } { self .test !r} )"
1772
+ return f"({ self .kind . value } { self .test !r} )"
1761
1773
1762
1774
1763
- @final
1764
- class Assert (Property ):
1765
- _kind = "assert"
1775
+ def Assert (test , * , name = None , src_loc_at = 0 ):
1776
+ return Property ("assert" , test , name = name , src_loc_at = src_loc_at + 1 )
1766
1777
1767
1778
1768
- @final
1769
- class Assume (Property ):
1770
- _kind = "assume"
1779
+ def Assume (test , * , name = None , src_loc_at = 0 ):
1780
+ return Property ("assume" , test , name = name , src_loc_at = src_loc_at + 1 )
1771
1781
1772
1782
1773
- @final
1774
- class Cover (Property ):
1775
- _kind = "cover"
1783
+ def Cover (test , * , name = None , src_loc_at = 0 ):
1784
+ return Property ("cover" , test , name = name , src_loc_at = src_loc_at + 1 )
1776
1785
1777
1786
1778
1787
@final
0 commit comments