Skip to content

Commit 5362e80

Browse files
committedMar 14, 2016
interconnect/stream: pass valid_token_count in Endpoint layout
1 parent b9a3751 commit 5362e80

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed
 

Diff for: ‎misoc/interconnect/stream.py

+18-17
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,8 @@ def __init__(self, layout, n):
131131
class _UpConverter(Module):
132132
def __init__(self, nbits_from, nbits_to, ratio, reverse):
133133
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))])
136136

137137
# # #
138138

@@ -173,14 +173,14 @@ def __init__(self, nbits_from, nbits_to, ratio, reverse):
173173
self.sync += If(load_part, Case(demux, cases))
174174

175175
# 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))
177177

178178

179179
class _DownConverter(Module):
180180
def __init__(self, nbits_from, nbits_to, ratio, reverse):
181181
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)])
184184

185185
# # #
186186

@@ -210,18 +210,21 @@ def __init__(self, nbits_from, nbits_to, ratio, reverse):
210210
self.comb += Case(mux, cases).makedefault()
211211

212212
# valid token count
213-
self.comb += self.valid_token_count.eq(last)
213+
self.comb += source.valid_token_count.eq(last)
214214

215215

216216
class _IdentityConverter(Module):
217217
def __init__(self, nbits_from, nbits_to, ratio, reverse):
218218
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)])
221221

222222
# # #
223223

224-
self.comb += sink.connect(source)
224+
self.comb += [
225+
sink.connect(source),
226+
source.valid_token_count.eq(1)
227+
]
225228

226229

227230
def _get_converter_ratio(nbits_from, nbits_to):
@@ -243,7 +246,8 @@ def _get_converter_ratio(nbits_from, nbits_to):
243246

244247

245248
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):
247251
self.cls, self.ratio = _get_converter_ratio(nbits_from, nbits_to)
248252

249253
# # #
@@ -253,14 +257,11 @@ def __init__(self, nbits_from, nbits_to, reverse=False, report_valid_token_count
253257

254258
self.sink = converter.sink
255259
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:
263260
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"]))
264265

265266

266267
class StrideConverter(Module):

0 commit comments

Comments
 (0)
Please sign in to comment.