Skip to content

Latest commit

 

History

History
59 lines (48 loc) · 2.61 KB

File metadata and controls

59 lines (48 loc) · 2.61 KB

Serial Router Protocol

Interface

The default DUT has 16 one-bit serial inputs and 16 one-bit serial outputs. All active-low signal names end in _n. Inputs are driven before and sampled on the positive edge of clock.

Signal Direction Meaning
reset_n input asynchronous active-low reset
frame_n[p] input low for the complete input packet on source p
valid_n[p] input low when din[p] is a valid payload bit
din[p] input serial header and payload bit
busy_n[p] output high when a valid payload bit can advance
frameo_n[p] output low while destination p owns an output frame
valido_n[p] output low when dout[p] is a valid payload bit
dout[p] output routed serial payload bit

Canonical packet

  1. Keep frame_n high for at least one idle clock between packets.
  2. Drive frame_n low with destination bit A0.
  3. Drive A1, A2, and A3 on the next three clocks (LSB first).
  4. Drive a required route-valid marker bit of 1.
  5. Keep valid_n high for four additional arbitration/settling clocks. din is ignored during these clocks.
  6. Drive payload bytes LSB first. A bit is accepted only when valid_n == 0 && busy_n == 1; otherwise hold it and its frame state.
  7. Raise frame_n with the final accepted payload bit. valid_n may remain low for that final bit, then returns high.
clock edge  :  0   1   2   3   4   5   6   7   8   9 ... final
frame_n     :  1   0   0   0   0   0   0   0   0   0 ...   1
din         :  X  A0  A1  A2  A3   1   X   X   X  D0 ...  Dn
valid_n     :  1   1   1   1   1   1   1   1   1   0 ...   0

The four settling clocks reflect the characterized baseline driver. This observed behavior takes precedence over the older source comment that depicts only three don't-care clocks.

The authoritative characterized sample is legacy/characterization/golden_smoke_trace.csv. It records every relevant input and legacy output pin for the source 3 → destination 7 A5/3C packet. The differential runner reconstructs and byte-compares this trace before declaring compatibility.

Arbitration

Each destination can be owned by at most one source. A grant is retained until the source raises frame_n. Waiting sources see busy_n == 0; the granted source sees busy_n == 1. A global rotating priority head selects among simultaneous requests and advances after ownership changes.

Malformed headers terminate the source request and set an internal protocol error indication. The production pin interface remains compatible with the legacy router and therefore adds no new error output.