← PCIe 상세 목차DUJINLABS.COM

Hardware · PCIe detailed manual 02 · Linux v6.18.37

2. 전원, REFCLK, reset과 LTSSM enable 순서를 파형으로 증명한다

PCIe link가 올라오지 않을 때 software register dump보다 먼저 봐야 하는 것은 rail, REFCLK, PERST#와 controller/PHY reset입니다. 각 신호가 '1'인지가 아니라 언제 안정되고 누가 해제했는지를 같은 시간축에서 확인합니다.

상세 표
2
검증 행
18
절차
4 checkpoints
기준
PCIe · Linux v6.18.37

CHAPTER 02

2. 전원, REFCLK, reset과 LTSSM enable 순서를 파형으로 증명한다

PCIe link가 올라오지 않을 때 software register dump보다 먼저 봐야 하는 것은 rail, REFCLK, PERST#와 controller/PHY reset입니다. 각 신호가 '1'인지가 아니라 언제 안정되고 누가 해제했는지를 같은 시간축에서 확인합니다.

REFCLK stable

주파수만 100MHz라고 끝나지 않습니다. common clock인지 independent clock인지, SSC가 어느 쪽에서 생성되는지, endpoint가 같은 정책을 기대하는지 확인합니다.

PERST#

Endpoint fundamental reset 입력입니다. Root Port controller core reset과 같은 신호가 아닙니다. board GPIO, reset controller 또는 slot power controller가 소유할 수 있습니다.

PHY reset

PMA/PCS/PLL calibration reset이 여러 단계로 분리될 수 있습니다. analog reset을 풀기 전에 rail과 refclock이 안정돼야 하며 calibration done 전 LTSSM을 시작하면 receiver detect가 불안정해질 수 있습니다.

Core reset

DWC DBI/AXI/APB와 LTSSM logic reset입니다. DBI programming은 core register 접근이 가능해진 뒤, LTSSM은 PHY ready와 RC mode programming 뒤에 켭니다.

Warm reset

전체 rail을 끄지 않고 link/protocol state만 다시 시작하는 경로입니다. cold boot 성공만으로 warm reset, hot reset, suspend/resume 순서가 맞다고 볼 수 없습니다.

CLKREQ#/WAKE#

초기 link training과 runtime power management를 분리해 봅니다. ASPM off에서는 정상인데 L1SS에서만 실패하면 초기 training보다 wake/refclock restore 경계를 의심합니다.

신호별 소유자와 측정 기준

신호구동 주체관찰 위치통과 조건실패 시 다음 확인
Core railPMIC/power domainSoC test point와 power-gooddatasheet 범위와 ramp/settling 충족brownout, droop, sequencing
PHY analog railPMIC/LDOPHY 근처 decouplingPLL/calibration 중 droop 없음LDO enable, load transient
REFCLKclock generator/SoCRoot Port와 Endpoint 양쪽주파수, swing, SSC와 architecture 일치buffer enable, mux, termination
PHY resetreset controller/applicationregister와 가능하면 pin/debugclock/rail 안정 후 해제reset polarity와 synchronizer
DWC core resetSoC reset controllerreset status와 DBI ID readDBI reset value가 안정적으로 읽힘APB/AXI clock gate
PERST#Root Port GPIO/slot logicEndpoint pinboard/endpoint 요구 시간 뒤 deassertGPIO polarity, pinmux, level shifter
LTSSM enableapplication register 또는 start_linkapplication bit와 DEBUG0PHY ready 뒤 0→1, Detect 진입device type과 application clock
CLKREQ#Endpoint open-drain/Root policyconnector pinL1SS 진입·복귀에서 정상pull-up, clock request policy

부팅 방식별 반드시 다시 검증할 항목

시나리오남아 있을 수 있는 상태필수 reset 범위통과 기준
Cold boot없음 또는 strap/fuse만 유지rail, PHY, core, endpoint항상 같은 width/speed로 L0
Warm rebootPHY PLL, endpoint state, iATUsoftware reset 순서 확인이전 kernel 상태에 의존하지 않음
PCIe hot reset전원과 일부 PHY state 유지protocol hot resetConfiguration Space 재탐색 가능
Endpoint secondary bus resetRoot Port와 PHY 유지bridge control resetendpoint Vendor ID가 다시 나타남
Suspend/resumeL1/L2, clock gate, IOMMU stateruntime/system PM callbackresume 뒤 DMA/MSI 포함 정상
Link retrainresource와 driver는 유지LTSSM Recovery 경로AER 폭증 없이 원 speed 복귀
그림 1. 2. 전원, REFCLK, reset과 LTSSM enable 순서를 파형으로 증명한다의 실행 순서왼쪽에서 오른쪽으로 실제 소유권과 관찰 지점이 이동합니다.
01 rails stable
02 REFCLK valid
03 PHY analog reset 해제
04 PHY calibration done
05 DWC clocks/core reset 해제
06 RC DBI programming
07 PERST# 해제
08 LTSSM enable
09 Detect

실제 검증 절차

순서실행남길 증거판정 목적
1rail, REFCLK, PERST#를 같은 oscilloscope trigger에 잡습니다.power-good부터 PERST# deassert까지 절대 시간순서를 log timestamp가 아니라 파형으로 확정
2PHY calibration done과 LTSSM enable register를 polling trace로 저장합니다.calibration done 뒤 LTSSM enablePHY 준비 전 controller 시작을 배제
3cold boot 100회와 warm reboot 100회를 나눠 speed/width를 기록합니다.실패율과 협상 폭이 두 시나리오에서 동일잔존 state 의존성 확인
4ASPM/L1SS를 끈 상태와 켠 상태를 분리해 재현합니다.초기 L0와 runtime 복귀 실패를 구분전원 관리 경계의 문제 여부 결정

주의PERST# deassert와 DWC LTSSM enable은 서로 다른 사건입니다. 둘 중 하나만 log에 찍고 'reset 해제 완료'라고 쓰지 않습니다.

공개적으로 다시 확인할 수 있는 자료

공개되지 않은 vendor register나 integration별 offset을 추측해서 채우지 않았습니다. 아래 제조사 자료, architecture 문서와 Linux v6.18.37 원본에서 다시 확인할 수 있는 범위만 사용했습니다.

Synopsys PCIe 5.0 PHY

PHY가 담당하는 SerDes, equalization, lane margining과 진단 기능의 공개 범위