@@ -257,7 +257,9 @@ def __init__(self, nbits_from, nbits_to, ratio, reverse,
257
257
self .comb += [
258
258
sink .ack .eq (~ strobe_all | source .ack ),
259
259
source .stb .eq (strobe_all ),
260
- load_part .eq (sink .stb & sink .ack )
260
+ load_part .eq (sink .stb & sink .ack ),
261
+ # cannot burst
262
+ source .last .eq (1 )
261
263
]
262
264
263
265
demux_last = ((demux == (ratio - 1 )) | sink .eop )
@@ -309,6 +311,7 @@ def __init__(self, nbits_from, nbits_to, ratio, reverse,
309
311
last .eq (mux == (ratio - 1 )),
310
312
source .stb .eq (sink .stb ),
311
313
source .eop .eq (sink .eop & last ),
314
+ source .last .eq (sink .last & last ),
312
315
sink .ack .eq (last & source .ack )
313
316
]
314
317
self .sync += \
@@ -393,6 +396,7 @@ def __init__(self, layout_from, layout_to, *args, **kwargs):
393
396
# cast sink to converter.sink (user fields --> raw bits)
394
397
self .comb += [
395
398
converter .sink .stb .eq (sink .stb ),
399
+ converter .sink .last .eq (sink .last ),
396
400
converter .sink .eop .eq (sink .eop ),
397
401
sink .ack .eq (converter .sink .ack )
398
402
]
@@ -412,6 +416,7 @@ def __init__(self, layout_from, layout_to, *args, **kwargs):
412
416
# cast converter.source to source (raw bits --> user fields)
413
417
self .comb += [
414
418
source .stb .eq (converter .source .stb ),
419
+ source .last .eq (converter .source .last ),
415
420
source .eop .eq (converter .source .eop ),
416
421
converter .source .ack .eq (source .ack )
417
422
]
0 commit comments