forked from M-Labs/artiq
1
0
Fork 0

sed: more LaneDistributor comments

This commit is contained in:
Sebastien Bourdeauducq 2018-03-06 20:56:35 +08:00
parent f40255c968
commit c25560baec
1 changed files with 13 additions and 8 deletions

View File

@ -38,22 +38,27 @@ class LaneDistributor(Module):
o_status_underflow = Signal() o_status_underflow = Signal()
self.comb += self.cri.o_status.eq(Cat(o_status_wait, o_status_underflow)) self.comb += self.cri.o_status.eq(Cat(o_status_wait, o_status_underflow))
# internal state
current_lane = Signal(max=lane_count)
last_coarse_timestamp = Signal(64-glbl_fine_ts_width)
last_lane_coarse_timestamps = Array(Signal(64-glbl_fine_ts_width)
for _ in range(lane_count))
seqn = Signal(seqn_width)
# The core keeps writing events into the current lane as long as timestamps # The core keeps writing events into the current lane as long as timestamps
# (after compensation) are strictly increasing, otherwise it switches to # (after compensation) are strictly increasing, otherwise it switches to
# the next lane. # the next lane.
# If spread is enabled, it also switches to the next lane after the current # If spread is enabled, it also switches to the next lane after the current
# lane has been full, in order to maximize lane utilization. # lane has been full, in order to maximize lane utilization.
# The current lane is called lane "A". The next lane (which may be chosen # The current lane is called lane "A". The next lane (which may be chosen
# a later stage by the core) is called lane "B". # at a later stage by the core) is called lane "B".
# Computations for both lanes are prepared in advance to increase performance. # Computations for both lanes are prepared in advance to increase performance.
current_lane = Signal(max=lane_count)
# The last coarse timestamp received from the CRI, after compensation.
# Used to determine when to switch lanes.
last_coarse_timestamp = Signal(64-glbl_fine_ts_width)
# The last coarse timestamp written to each lane. Used to detect
# sequence errors.
last_lane_coarse_timestamps = Array(Signal(64-glbl_fine_ts_width)
for _ in range(lane_count))
# Sequence number counter. The sequence number is used to determine which
# event wins during a replace.
seqn = Signal(seqn_width)
# distribute data to lanes # distribute data to lanes
for lio in self.output: for lio in self.output:
self.comb += [ self.comb += [