@@ -131,8 +131,8 @@ def __init__(self, layout, n):
131
131
class _UpConverter (Module ):
132
132
def __init__ (self , nbits_from , nbits_to , ratio , reverse ):
133
133
self .sink = sink = Endpoint ([("data" , nbits_from )])
134
- self .source = source = Endpoint ([("data" , nbits_to )])
135
- self . valid_token_count = Signal ( bits_for (ratio ))
134
+ self .source = source = Endpoint ([("data" , nbits_to ),
135
+ ( "valid_token_count" , bits_for (ratio ))] )
136
136
137
137
# # #
138
138
@@ -173,14 +173,14 @@ def __init__(self, nbits_from, nbits_to, ratio, reverse):
173
173
self .sync += If (load_part , Case (demux , cases ))
174
174
175
175
# valid token count
176
- self .sync += If (load_part , self .valid_token_count .eq (demux + 1 ))
176
+ self .sync += If (load_part , source .valid_token_count .eq (demux + 1 ))
177
177
178
178
179
179
class _DownConverter (Module ):
180
180
def __init__ (self , nbits_from , nbits_to , ratio , reverse ):
181
181
self .sink = sink = Endpoint ([("data" , nbits_from )])
182
- self .source = source = Endpoint ([("data" , nbits_to )])
183
- self . valid_token_count = Signal ( )
182
+ self .source = source = Endpoint ([("data" , nbits_to ),
183
+ ( "valid_token_count" , 1 )] )
184
184
185
185
# # #
186
186
@@ -210,18 +210,21 @@ def __init__(self, nbits_from, nbits_to, ratio, reverse):
210
210
self .comb += Case (mux , cases ).makedefault ()
211
211
212
212
# valid token count
213
- self .comb += self .valid_token_count .eq (last )
213
+ self .comb += source .valid_token_count .eq (last )
214
214
215
215
216
216
class _IdentityConverter (Module ):
217
217
def __init__ (self , nbits_from , nbits_to , ratio , reverse ):
218
218
self .sink = sink = Endpoint ([("data" , nbits_from )])
219
- self .source = source = Endpoint ([("data" , nbits_to )])
220
- self . valid_token_count = Signal ( reset = 1 )
219
+ self .source = source = Endpoint ([("data" , nbits_to ),
220
+ ( "valid_token_count" , 1 )] )
221
221
222
222
# # #
223
223
224
- self .comb += sink .connect (source )
224
+ self .comb += [
225
+ sink .connect (source ),
226
+ source .valid_token_count .eq (1 )
227
+ ]
225
228
226
229
227
230
def _get_converter_ratio (nbits_from , nbits_to ):
@@ -243,7 +246,8 @@ def _get_converter_ratio(nbits_from, nbits_to):
243
246
244
247
245
248
class Converter (Module ):
246
- def __init__ (self , nbits_from , nbits_to , reverse = False , report_valid_token_count = False ):
249
+ def __init__ (self , nbits_from , nbits_to , reverse = False ,
250
+ report_valid_token_count = False ):
247
251
self .cls , self .ratio = _get_converter_ratio (nbits_from , nbits_to )
248
252
249
253
# # #
@@ -253,14 +257,11 @@ def __init__(self, nbits_from, nbits_to, reverse=False, report_valid_token_count
253
257
254
258
self .sink = converter .sink
255
259
if report_valid_token_count :
256
- self .source = Endpoint ([("data" , nbits_to ),
257
- ("valid_token_count" , bits_for (self .ratio ))])
258
- self .comb += [
259
- converter .source .connect (self .source ),
260
- self .source .valid_token_count .eq (converter .valid_token_count )
261
- ]
262
- else :
263
260
self .source = converter .source
261
+ else :
262
+ self .source = Endpoint ([("data" , nbits_to )])
263
+ self .comb += converter .source .connect (self .source ,
264
+ leave_out = set (["valid_token_count" ]))
264
265
265
266
266
267
class StrideConverter (Module ):
0 commit comments