@@ -24,6 +24,23 @@ def num_wire_of_type(self, wiretype, num, block=None):
24
24
self .assertEquals (len (block .wirevector_subset (wiretype )), num )
25
25
26
26
27
+ class WireMemoryNameTestCases (unittest .TestCase ):
28
+ def setUp (self ):
29
+ pyrtl .reset_working_block ()
30
+
31
+ def name_wires (self , names , block = None ):
32
+ block = pyrtl .working_block ()
33
+ names = set (names .split (' ' ))
34
+ for n in names :
35
+ self .assertIn (n , block .wirevector_by_name )
36
+
37
+ def name_memories (self , names , block = None ):
38
+ block = pyrtl .working_block ()
39
+ names = set (names .split (' ' ))
40
+ for n in names :
41
+ self .assertIn (n , block .memblock_by_name )
42
+
43
+
27
44
def insert_random_inversions (rate = 0.5 ):
28
45
"""
29
46
an example transform that can be used for testing
@@ -57,7 +74,7 @@ def test_randomly_replace(self):
57
74
self .assertIsNot (new_and_net .dests [0 ], o )
58
75
59
76
60
- class TestCopyBlock (NetWireNumTestCases ):
77
+ class TestCopyBlock (NetWireNumTestCases , WireMemoryNameTestCases ):
61
78
def num_memories (self , mems_expected , block ):
62
79
memories = set ()
63
80
for net in block .logic_subset ('m@' ):
@@ -70,27 +87,31 @@ def test_blank(self):
70
87
self .assert_num_wires (0 , block )
71
88
72
89
def test_block (self ):
73
- a = pyrtl .Const (23 )
74
- b = pyrtl .Input (5 )
75
- o = pyrtl .Output (5 )
90
+ a = pyrtl .Const (23 , name = 'a' )
91
+ b = pyrtl .Input (5 , name = 'b' )
92
+ o = pyrtl .Output (5 , name = 'o' )
76
93
o <<= ~ a & b
77
94
78
95
old_block = pyrtl .working_block ()
79
96
old_block .sanity_check ()
80
97
self .assert_num_wires (5 , old_block )
81
98
self .assert_num_net (3 , old_block )
82
99
100
+ self .name_wires ('a b o' , old_block )
101
+
83
102
new_block = transform .copy_block ()
84
103
new_block .sanity_check ()
85
104
self .assert_num_wires (5 , new_block )
86
- self .assert_num_net (3 , old_block )
105
+ self .assert_num_net (3 , new_block )
106
+
107
+ self .name_wires ('a b o' , new_block )
87
108
88
109
def test_copy_mem (self ):
89
110
ins = [pyrtl .Input (5 ) for i in range (4 )]
90
111
out = pyrtl .Output (5 )
91
112
92
- mem1 = pyrtl .MemBlock (5 , 5 )
93
- mem2 = pyrtl .MemBlock (5 , 5 )
113
+ mem1 = pyrtl .MemBlock (5 , 5 , name = 'mem1' )
114
+ mem2 = pyrtl .MemBlock (5 , 5 , name = 'mem2' )
94
115
95
116
mem1_o1 = mem1 [ins [0 ]]
96
117
mem1 [ins [1 ]] <<= ins [2 ]
@@ -104,12 +125,16 @@ def test_copy_mem(self):
104
125
self .num_net_of_type ('&' , 1 , old_block )
105
126
self .num_memories (2 , old_block )
106
127
128
+ self .name_memories ('mem1 mem2' , old_block )
129
+
107
130
new_block = transform .copy_block ()
108
131
self .num_net_of_type ('m' , 2 , new_block )
109
132
self .num_net_of_type ('@' , 1 , new_block )
110
133
self .num_net_of_type ('&' , 1 , new_block )
111
134
self .num_memories (2 , new_block )
112
135
136
+ self .name_memories ('mem1 mem2' , new_block )
137
+
113
138
114
139
class TestFastWireReplace (unittest .TestCase ):
115
140
def setUp (self ):
@@ -191,3 +216,6 @@ def probe_cond(wire):
191
216
transform_examples.probe_wire_if(probe_cond)
192
217
probe.assert_called_once_with(test_wire)
193
218
"""
219
+
220
+ if __name__ == "__main__" :
221
+ unittest .main ()
0 commit comments