Each flagged capture is a genuine flicker event (not an artifact) — the LP pass fires at
pipeline startup, so a missing or sub-50 ns LP-low plateau means the SN65DSI83 bridge
missed the SoT sequence and dropped a frame.
LP-low plateau < 50 ns means the LP-01/LP-00 SoT states are absent or too brief
for the SN65DSI83 bridge to detect start-of-transmission.
| Capture | Timestamp | Channel | LP-low plateau | LP exit→HS | LP-11 voltage |
|---|---|---|---|---|---|
| 0323 | 20260415_085420 | dat | 0.3 ns | 2.2 ns | 1.015 V |
| Capture | Timestamp | 0x32e100b4 DSIM_PHYTIMING | 0x32e100b8 DSIM_PHYTIMING1 | 0x32e100bc DSIM_PHYTIMING2 |
|---|---|---|---|---|
| 0303 | 20260415_084704 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0304 | 20260415_084726 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0305 | 20260415_084748 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0306 | 20260415_084810 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0307 | 20260415_084831 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0308 | 20260415_084853 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0309 | 20260415_084915 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0310 | 20260415_084937 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0311 | 20260415_084958 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0312 | 20260415_085020 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0313 | 20260415_085042 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0314 | 20260415_085104 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0315 | 20260415_085126 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0316 | 20260415_085148 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0317 | 20260415_085209 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0318 | 20260415_085231 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0319 | 20260415_085253 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0320 | 20260415_085315 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0321 | 20260415_085337 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0322 | 20260415_085358 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0323 | 20260415_085420 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0324 | 20260415_085442 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0325 | 20260415_085504 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0326 | 20260415_085525 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0327 | 20260415_085547 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0328 | 20260415_085609 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0329 | 20260415_085630 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0330 | 20260415_085652 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0331 | 20260415_085714 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0332 | 20260415_085735 | 0x00000305 | 0x020e0a03 | 0x00030605 |
# MIPI D-PHY Signal Integrity Analysis Report
## Batch: Captures 0303–0332 (30 sessions, 1 confirmed flicker event)
## 1. Consistent Spec Concerns
### A. Register Timing — Systemic D-PHY v1.1 Non-Compliance (ALL 30 captures)
Every capture shows identical register values — the system is running 'Round Best' mode with 5 persistent D-PHY violations:
| Parameter | Programmed | Actual | Spec Min | Deficit |
|-----------|-----------|--------|----------|---------|
| THS_EXIT | 5 bc | 92.6 ns | 100.0 ns | −7.4 ns (7.4%) |
| TCLK_PREPARE | 2 bc | 37.0 ns | 38.0 ns | −1.0 ns (2.6%) |
| TCLK_TRAIL | 3 bc | 55.6 ns | 60.0 ns | −4.4 ns (7.3%) |
| TCLK_PREPARE+TCLK_ZERO | 16 bc | 296.3 ns | 300.0 ns | −3.7 ns (1.2%) |
| THS_PREPARE+THS_ZERO | 9 bc | 166.7 ns | 168.2 ns | −1.5 ns (0.9%) |
Critical insight: The THS_PREPARE+THS_ZERO violation (1.5 ns short) directly controls the data lane SoT sequence. This is the time the receiver has to detect the HS-0 state before clock edges arrive. At only 0.9% below spec, the SN65DSI83 will *usually* latch it — but with jitter, process variation, and temperature, it will occasionally miss it. This exactly matches the observed bistable behaviour.
### B. HS Amplitude — Marginal with Sub-140 mV Excursions
### C. LP-11 Voltage — Low but In-Spec
### D. LP Exit Duration — Universally Violated
Root cause: THS_PREPARE+THS_ZERO = 166.7 ns (below 168.2 ns spec) combined with the too-short TCLK_PREPARE (37 ns < 38 ns) means the PHY state machine is rushing through the SoT entry states. The Samsung DSIM PHY internally sequences LP-11 → LP-01 → LP-00 → HS-0 using these register values as counters.
## 2. Trends Across Captures
### A. No Drift — Stable Degradation
| Parameter | Min | Max | Trend |
|-----------|-----|-----|-------|
| CLK Vdiff | 163.3 mV | 166.6 mV | Flat (±1%) |
| DAT Vdiff | 175.5 mV | 199.4 mV | No drift, high variance |
| CLK jitter p-p | 138.2 ps | 170.4 ps | Flat (no degradation) |
| CLK jitter RMS | 51.4 ps | 54.8 ps | Flat |
| LP-11 voltage | 1.014 V | 1.016 V | Flat |
| 1.8 V mean | 1.7645 V | 1.7712 V | Flat |
| 1.8 V droop | 8.5 mV | 14.0 mV | Flat (no worsening) |
| LP-low plateau | 0–343 ns | — | Bimodal (see §3) |
Conclusion: No temporal degradation. The system is thermally and electrically stable. The problem is purely in the SoT timing register configuration.
### B. LP-Low Plateau — Bimodal Distribution (Key Finding)
The LP-low plateau values cluster into three discrete groups:
| LP-low plateau | Count | LP exit reported | Flicker? |
|----------------|-------|-----------------|----------|
| 342–343 ns | 17 | 2–4 ns (fail) or 348 ns (pass) | No (except 0323) |
| 108 ns | 5 | 2–4 ns (fail) | No |
| 169 ns | 1 | 174 ns (pass) | No |
| 0 ns | 1 (Cap 0323) | 2 ns (fail) | YES — FLICKER |
The 342–343 ns group corresponds to approximately 18.5 byte-clocks — this is THS_PREPARE+THS_ZERO (9 bc = 166.7 ns) plus additional PHY sequencing. The 108 ns group (≈6 bc) suggests a capture where the scope trigger caught only partial SoT.
Capture 0323 is the critical outlier: LP-low = 0 ns means the PHY drove LP-11 → HS-0 with no detectable LP-low dwell. The SN65DSI83 never saw LP-01/LP-00 and failed to recognise SoT.
## 3. Anomalies
### A. Flicker Capture 0323 — Detailed Analysis
| Parameter | Cap 0323 (flicker) | Batch mean (no flicker) |
|-----------|-------------------|------------------------|
| LP-low plateau | 0 ns | 108–343 ns |
| LP exit → HS | 2 ns | 2–348 ns |
| 1.8 V droop | 9.4 mV | 10.2 mV (avg) |
| 1.8 V ripple | 5.44 mV | 5.65 mV (avg) |
| CLK jitter p-p | 146.0 ps | 152.0 ps (avg) |
| LP-11 voltage | 1.015 V | 1.015 V (avg) |
The supply was actually slightly better than average during the flicker event. This confirms the flicker is not supply-related — it is a timing race condition in the PHY SoT state machine.
### B. DAT0 HS Signal Anomalies
### C. Capture 0325 — Processing Error
`[lp_dat] ERROR: index 200000 is out of bounds for axis 0 with size 200000` — the LP data capture buffer was exactly full with no LP→HS transition found within the window. The DAT0 lane may not have transitioned during this capture's acquisition window. This is a trigger/timing issue, not a hardware fault.
### D. CLK Lane LP State
All captures show "CLK LP→HS: NOT DETECTED" — this is expected and correct. The i.MX 8M Mini DSIM runs the clock lane in continuous HS mode (no LP toggling on CLK during video). The CLK lane only enters LP at display pipeline unload, which these captures don't cover.
## 4. Supply Correlation Analysis
| Metric | Flicker (0323) | Non-flicker (29 caps) | Correlation |
|--------|---------------|----------------------|-------------|
| 1.8 V mean | 1.7654 V | 1.7645–1.7712 V | None |
| 1.8 V min | 1.7560 V | 1.7520–1.7600 V | None |
| Droop depth | 9.4 mV | 8.5–14.0 mV | None — droop was average |
| Ripple RMS | 5.44 mV | 5.44–6.13 mV | None — ripple was minimum |
Conclusion: The 1.8 V supply is healthy and not a contributing factor. All readings are comfortably within spec (1.71–1.89 V). The droop of 8.5–14.0 mV (<1% of VDDIO) is excellent. There is no correlation between supply conditions and LP timing anomalies.
The LP-11 voltage of 1.015 V (~56% of VDDIO) is lower than the expected ~70% (1.26 V) but is within D-PHY spec and does not correlate with the flicker event.
## 5. WARNING/ERROR Explanations
| Warning | Count | Cause | Action |
|---------|-------|-------|--------|
| `LP exit duration N ns below spec min 50 ns` | 22/29 | THS_PREPARE+THS_ZERO too short (166.7 ns < 168.2 ns); PHY rushes LP→HS transition. Scope sees LP-01/LP-00 as sub-sample-resolution glitch. | Switch to 'Round Up' register values |
| `settled samples below 140 mV` (CLK) | 30/30 | CLK amplitude (165 mV) only 18% above floor; ISI/jitter pushes occasional eyes below. Termination or impedance mismatch likely. | Check CLK± PCB impedance matching; verify 100Ω differential termination at SN65DSI83 |
| `settled samples below 140 mV` (DAT) | 28/30 | Data pattern-dependent ISI; counts vary 19–8906. Higher counts correlate with captures where data pattern has long same-symbol runs. | Will improve with corrected register timing (better-formed SoT → fewer error patterns) |
| `Only negative swings in capture window` | 25/30 | Scope trigger consistently catches data-0 bit runs. Amplitude may be slightly underestimated. | Not a hardware concern; for accurate amplitude use pattern generator or longer random window |
| `No HS signal detected` (sig/dat) | 2/30 | Trigger landed outside HS burst window on DAT0. | Adjust trigger holdoff or use CLK-edge trigger for sig captures |
| `No HS signal detected` (proto/dat) | 1/30 | DAT0 in LP state during entire proto window. | Same trigger adjustment |
| `index out of bounds` (0325 lp_dat) | 1/30 | Buffer filled before LP→HS edge appeared — trigger too early or DAT0 transition outside window. | Increase buffer depth or adjust pre-trigger ratio |
| `CLK LP→HS: NOT DETECTED` | 30/30 | Expected. CLK runs continuous HS. | No action — informational only |
## 6. Actionable Recommendations
### PRIORITY 1 — Switch to 'Round Up' PHY Timing (Fixes Root Cause)
Patch the samsung-dsim driver or device tree to program the 'Round Up' register values:
```
DSIM_PHYTIMING (0xb4): 0x00000306 (THS_EXIT=6 → 111.1 ns ✓)
DSIM_PHYTIMING1 (0xb8): 0x030f0a04 (TCLK_PREPARE=3 → 55.6 ns ✓, TCLK_ZERO=15, TCLK_TRAIL=4 → 74.1 ns ✓)
DSIM_PHYTIMING2 (0xbc): 0x00030706 (THS_ZERO=7, THS_TRAIL=6 → 111.1 ns ✓)
```
This eliminates all 5 D-PHY violations. The critical fix is THS_PREPARE+THS_ZERO: 10 bc = 185.2 ns (was 166.7 ns, spec ≥ 168.2 ns) — an increase of 18.5 ns (11%) giving the SN65DSI83 receiver comfortable margin to detect SoT.
Implementation options (in order of preference):
1. Driver patch: Modify the `samsung_dsim_set_phy_timing()` function to use ceiling division instead of round-to-nearest for all timing parameters.
2. Device tree override: If the driver supports `phy-timing` properties, set them explicitly.
3. Runtime register write: As a temporary test, write registers via `memtool` after pipeline load (will confirm the fix but won't persist across loads).
### PRIORITY 2 — Investigate LP-11 Voltage (Low Priority)
LP-11 at 1.015 V (56% VDDIO) is unusually low. Check:
- Series resistance on DAT0+/DAT0− LP paths (ESD protection, ferrite beads, connectors).
- Whether the scope probe is loading the LP driver (unlikely but verify with 10× probe).
- SN65DSI83 input bias current on MIPI pins — the TI datasheet specifies the input leakage.
This is not causing flicker but is a signal quality concern that could become problematic at higher bit rates or lower temperatures.
### PRIORITY 3 — CLK Amplitude Margin Improvement (Medium Priority)
CLK Vdiff at 165 mV with consistent sub-140 mV excursions suggests:
- Verify CLK± trace impedance is 100Ω differential (50Ω single-ended). Any impedance mismatch will reduce amplitude via reflections.
- Check for stubs or vias on CLK± traces near the SN65DSI83 input.
- The +30 mV common-mode offset on CLK indicates asymmetric termination or driver offset — verify both CLK± termination resistors are matched.
### PRIORITY 4 — Improve Capture Trigger Reliability (Diagnostic)
Tokens: 45085 in / 4096 out