CHAPTER 07
7. 실측, register trace와 Linux log를 하나의 사건으로 합친다
유용한 bring-up 보고서는 scope 캡처, PHY status, DWC register, AER, Linux log가 같은 boot ID와 시간축을 공유합니다. 성공/실패 스크린샷을 나열하는 대신 처음 달라진 checkpoint를 자동으로 찾을 수 있는 형식으로 저장합니다.
장비와 software evidence의 역할
| 증거 | 확정할 수 있는 것 | 확정할 수 없는 것 | 추천 저장 형식 |
|---|---|---|---|
| Oscilloscope | rail, REFCLK, PERST# timing/swing | LTSSM/TLP 의미 | 원본 waveform + annotated PNG |
| TDR/VNA | impedance, insertion/return loss | runtime protocol state | S-parameter와 board revision |
| Protocol analyzer | TS/DLLP/TLP/AER 사건 | SoC 내부 AXI/IOMMU 상태 | trace + timestamp bookmark |
| PHY eye/BER | lane analog margin과 error | Configuration routing | lane/temp/rate별 CSV |
| DWC register trace | LTSSM, target/current link 정책 | board analog waveform | timestamped raw hex CSV |
| Linux dynamic debug | 함수 순서와 반환값 | signal integrity 자체 | boot ID 포함 text log |
| ftrace/tracepoint | driver와 IRQ/DMA 시간 관계 | PHY analog 원인 | trace-cmd/perf data |
| AER counter | protocol error 분류와 증가량 | 근본 물리 원인 단독 확정 | test 전후 delta |
처음 실패 경계를 찾는 판정표
| 관측 | PHY | LTSSM | Config | 우선 결론 | 다음 측정 |
|---|---|---|---|---|---|
| DBI도 읽히지 않음 | 미확정 | 미확정 | 불가 | core clock/reset/address bank | DBI ID/reset value와 bus fault |
| PHY PLL lock, Detect 고정 | 부분 통과 | Detect | 불가 | receiver detect/PERST#/lane | lane별 detect와 endpoint pin |
| Polling 반복 | Tx/Rx 동작 | Polling | 불가 | TS lock/clock/SI/lane map | block lock, TS decode, analyzer |
| Recovery.Equalization 반복 | 기본 path 통과 | Recovery | 불가 또는 불안정 | Gen3+ margin/preset | Gen1 비교, lane별 FOM |
| L0, Vendor ID 0xffff | 통과 | L0 | 실패 | CFG iATU/BDF/routing | Config TLP와 iATU dump |
| Vendor ID 정상, BAR all-ones | 통과 | L0 | 부분 통과 | resource/decode/power | Command/BAR/bridge window |
| DMA에서만 AER | 통과 | L0 | 통과 | address/IOMMU/transaction | Requester ID, IOVA, AER |
| L1SS 복귀에서만 실패 | 초기 통과 | PM 복귀 | 이전엔 통과 | refclock/wake/ASPM | CLKREQ#, PHY wake latency |
실제 검증 절차
| 순서 | 실행 | 남길 증거 | 판정 목적 |
|---|---|---|---|
| 1 | boot마다 board revision, silicon revision, DWC/PHY version, kernel commit와 DT hash를 기록합니다. | 재현 환경이 한 행으로 식별 | 서로 다른 조건의 log 혼합 방지 |
| 2 | scope trigger 기준 사건을 PERST# deassert 또는 LTSSM enable로 고정합니다. | hardware/software timestamp offset 계산 | 파형과 log를 같은 시간축에 배치 |
| 3 | 성공 10회와 실패 10회의 transition/counter를 diff합니다. | 항상 먼저 달라지는 field | 마지막 timeout log 대신 첫 원인 후보 |
| 4 | 수정 후 동일 조건과 횟수로 재시험하고 AER delta까지 비교합니다. | 성공률뿐 아니라 error margin 개선 | 우연한 단발 성공 배제 |
주의Linux에서 'link up' 한 줄이 출력됐다는 사실은 PHY margin, Data Link 안정성, Configuration routing, DMA와 power-management 복귀를 증명하지 않습니다.
공개적으로 다시 확인할 수 있는 자료
공개되지 않은 vendor register나 integration별 offset을 추측해서 채우지 않았습니다. 아래 제조사 자료, architecture 문서와 Linux v6.18.37 원본에서 다시 확인할 수 있는 범위만 사용했습니다.
Synopsys PCIe 5.0 complete solution
Controller, PHY, verification IP가 별도 구성요소이며 PIPE 5.x와 SerDes architecture를 지원한다는 공개 제품 범위
Synopsys PCIe 5.0 PHY
PHY가 담당하는 SerDes, equalization, lane margining과 진단 기능의 공개 범위
Synopsys PIPE 5.1 SerDes architecture
기존 PIPE와 SerDes architecture에서 PCS 책임이 이동하는 이유
Linux v6.18.37 DWC header
DWC Port Logic, link debug, iATU와 eDMA 공개 register offset
Linux DWC Devicetree binding
clock, reset, PHY, lane, speed와 DWC resource description