콘텐츠로 이동

Module 05 — Physical Layer & LTSSM

학습 목표

이 모듈을 마치면:

  • Diagram PHY 의 sub-block (PCS / PMA / SerDes / Equalization) 과 신호 흐름을 그릴 수 있다.
  • Trace LTSSM 의 11 state 진입/탈출 트리거를 신호 (TS1/TS2, Electrical Idle) 와 함께 추적한다.
  • Compare Gen3+ 의 4-phase Equalization (Phase 0/1/2/3) 와 그 의도를 비교한다.
  • Diagnose "Link up 안 됨" 시나리오를 LTSSM state 별로 가능한 원인을 좁힌다.
  • Explain "PCIe link 는 항상 Gen 1 으로 시작" 이라는 원칙과 그 이후 Recovery + EQ 로 Gen up 되는 절차를 설명한다.

사전 지식

  • Module 01 (lane / encoding 기본)
  • Module 02 (PHY 의 책임)

1. Why care? — 이 모듈이 왜 필요한가

당신은 새 SoC + PCIe device. Boot 시 link 가 L0 진입 안 됨. driver 가 device 인식 못함.

진단: - LTSSM trace 확인. - Detect → Polling → Polling.Compliance 에서 멈춤. - 원인: RX 전기 신호threshold 보다 약함 → polling 단계에서 peer 인식 실패.

해법: - EQ preset 조정 (Tx 의 pre-emphasis). - CTLE/DFE 조정 (Rx 의 amplification). - PCB trace length 짧게.

LTSSM 11 state 의 의미: 각 state 가 link bring-up한 단계. 어디서 멈췄는지 = 문제의 layer.

State 의미 멈춤 원인
Detect RX 신호 감지 RX path 단선
Polling TS1/TS2 교환 전기 신호 약함
Configuration Lane width, speed 협상 협상 mismatch
L0 정상 동작 (성공)
Recovery 일시 회복 신호 품질 변동

PCIe link bring-up 의 모든 진단은 LTSSM state 를 보는 데서 시작 합니다. 그리고 Gen3+ 부터는 equalization 단계를 거쳐 link 가 안정화 — 잘못된 EQ preset 이나 channel 특성 misalignment 가 무수한 production failure 의 원인. PHYLTSSM 을 모르면 "link recovery 빈발" 이라는 증상 앞에서 black box.

이 모듈의 어휘 — Detect/Polling/Configuration/L0/Recovery, TS1/TS2, EQ Phase 0..3, Tx FFE/Rx CTLE/DFE — 가 이후 모든 link bring-up 디버그, Gen 변경, ASPM 설계 (Module 07), retimer 구성의 기본 단위.


2. Intuition — 공항 관제 비유와 한 장 그림

💡 한 줄 비유

LTSSM공항의 항공기 관제 절차.
Detect = 활주로 도착. Polling = 관제와 무선 시범 통신. Configuration = 게이트 / lane / link width 협상. L0 = 정상 운항. Recovery = 난기류 — 잠시 회복. L1 / L2 = 주기 (저전력). Disabled / Loopback / Hot Reset = 비상 / 테스트.

한 장 그림 — PHY 의 3 sub-block + LTSSM 의 큰 흐름

   ┌────────────────────────── PHY ──────────────────────────┐
   │                                                           │
   │   ┌── PCS ──┐    ┌── PMA ──┐    ┌── Analog ──┐            │
   │   │ Frame   │ →  │ SerDes  │ →  │ Tx FFE     │ → wire     │
   │   │ Encode  │    │ PLL     │    │ Rx CTLE    │            │
   │   │ Stripe  │    │ CDR     │    │ Rx DFE     │            │
   │   └─────────┘    └─────────┘    └────────────┘            │
   │                                                           │
   │   ┌────────────────── LTSSM ────────────────────────┐     │
   │   │                                                  │     │
   │   │   Bring-up    : Detect → Polling → Config → L0  │     │
   │   │   Steady      : L0 (normal)                      │     │
   │   │   Power-saving: L0s, L1 (.1 .2), L2              │     │
   │   │   Recovery    : EQ retrain, Gen change           │     │
   │   │   Test/Reset  : Disabled, Loopback, Hot Reset    │     │
   │   │                                                  │     │
   │   └──────────────────────────────────────────────────┘     │
   │                                                           │
   └───────────────────────────────────────────────────────────┘

왜 이 디자인인가 — Design rationale

PHY 가 풀어야 하는 세 문제는 시간 척도가 다름.

  1. Bit-level: Tx 가 0/1 을 보낼 때 wire 위에서 ISI 와 noise 를 어떻게 견디는가 → SerDes + Equalization (ps ~ ns).
  2. Symbol-level: 받은 bit 를 의미 있는 symbol/byte 로 어떻게 align 하는가 → Bit Lock + Symbol Lock (μs).
  3. Link-level: 양 끝 device 가 어떤 width/speed/EQ 로 합의할 것인가 → LTSSM (ms).

세 문제를 한 모듈로 풀려고 하면 디버그가 불가능 — bit 가 깨지나, symbol 이 align 안 되나, capability 가 mismatch 인가 가 섞여 보임. PCS + PMA + Analog + LTSSM 의 sub-block 분리가 이 문제를 풀고, 각 단계의 진단을 독립화합니다.


3. 작은 예 — Power-on 부터 L0 도달까지의 LTSSM 경로

가장 단순한 시나리오. RC 와 EP 모두 Gen3 capable, x4 link. Power-on 후 L0 에 도달하는 한 사이클.

   Time →

   Power-on
   ┌──────────────┐
   │   Detect     │  ← Tx 가 short pulse 송신, 상대 receiver 의 termination 검출
   └──────┬───────┘     (양 끝의 termination 이 켜져 있어야 함)
          │ receiver detected
   ┌──────────────┐
   │   Polling    │  ← Gen 1 (2.5 GT/s) 으로 시작
   │   .Active    │     TS1 송신 + 수신 시도
   │              │     ├─ Bit Lock (CDR 동기) ─ 0101.. 박자
   │              │     └─ Symbol Lock (COM 발견) ─ 10b/130b 경계
   │              │     TS1 8 개 받으면 → .Configuration
   │   .Config    │     TS2 송신 + 수신 (capability 광고)
   │              │     TS2 8 개 받으면 → 다음 state
   └──────┬───────┘
   ┌──────────────┐
   │ Configuration│  ← Link Number, Lane Number 협상
   │              │     Lane reversal / polarity inversion 자동 보정
   │              │     Link width 결정 (x4)
   │              │     Configuration.Idle 8 cycle → L0
   └──────┬───────┘
   ┌──────────────┐
   │      L0      │  ← Gen 1 의 L0! 아직 Gen 3 아님!
   │   (Gen 1)    │     TLP/DLLP 송수신 가능
   └──────┬───────┘
          │ SW 가 Gen up 명령 또는 capability 합의에 따라 자동
   ┌──────────────┐
   │   Recovery   │  ← Gen 3 으로 speed change 시도
   │   .RcvrLock  │     속도 올린 뒤 Bit/Symbol Lock 재달성
   │   .RcvrCfg   │     TS1/TS2 재교환
   │   .Equaliz.  │  ← Gen3+ 만의 4 phase EQ
   │              │     Phase 0 → 1 → 2 → 3 (양 끝 Tx FFE 협상)
   │   .Idle      │     안정화
   └──────┬───────┘
   ┌──────────────┐
   │      L0      │  ← 이제 Gen 3 의 L0 — 정상 운영
   │   (Gen 3)    │
   └──────────────┘

단계별 의미

Step 누가 무엇을
양 끝 PHY Detect — Tx pulse 로 상대 termination 검출 케이블/connector 가 연결되었는지
양 끝 Polling.Active — Gen1 으로 TS1 송신 호환성 보장 (모두 Gen1 부터)
Receiver Bit Lock (CDR) → Symbol Lock (COM 검출) 박자 + 경계
양 끝 Polling.Configuration — TS2 교환, capability 광고 양쪽이 어디까지 지원하는지
양 끝 Configuration — Link/Lane #, width 결정 Lane reversal/polarity 자동 보정
양 끝 L0 (Gen1) 도달 임시 안정 — 합의된 width 의 최저 속도
양 끝 Recovery 진입, Gen3 으로 retrain speed change
양 끝 EQ Phase 0..3 — Tx FFE coefficient 협상 channel 별 BER 최적화
양 끝 L0 (Gen3) — 정상 운영 spec 의 정점

여기서 잡아야 할 두 가지

(1) PCIe link 는 항상 Gen 1 으로 시작한다. Gen3 capable 이라도 처음에는 Gen1 의 L0 에 들어간 뒤, Recovery 를 거쳐 속도를 올린다. "Gen3 capable 인데 Gen1 으로 떠 있다" → Recovery + speed change 가 안 일어났다는 신호.
(2) Recovery 는 실패가 아니라 기능 이다. Gen up, EQ 재실행, BER 임계 초과 회복, Hot Reset 등 여러 시나리오의 공통 경로. L0 ↔ Recovery 를 자주 왕복하는 link 는 이상이지만, bring-up 시 Recovery 통과는 정상.


4. 일반화 — PHY 의 3 축과 LTSSM 의 3 그룹

4.1 PHY 의 3 sub-block

Sub-block 책임 핵심 회로
PCS (Physical Coding Sublayer) Framing, Encoding, Scrambling, Lane stripe Encoder/Decoder, LFSR, Stripe FIFO
PMA (Physical Medium Attachment) SerDes, PLL, CDR Tx FIFO + Serializer / Rx CDR + Deserializer
Analog Front-End Tx driver + FFE, Rx CTLE / DFE / AGC analog circuit

4.2 LTSSM 의 3 그룹 (11 state)

그룹 State 역할
Bring-up Detect, Polling, Configuration, L0 Power-on → 정상 운영 도달
Power-saving L0s, L1 (.1, .2), L2 Idle 시 전력 절감
Recovery / Test Recovery, Disabled, Loopback, Hot Reset EQ retrain, Gen change, 진단, reset

4.3 EQ Phase 의 의미 (Gen3+)

Gen3 부터 link 가 channel 별 best EQ 를 협상 합니다. 한 가지 EQ 로 모든 channel (PCB trace + connector + cable) 을 cover 할 수 없기 때문.

   Phase 0 (initial)  : preset 적용
   Phase 1 (DP →)    : DP 의 Tx FFE 를 UP 의 Rx 가 측정 + 변경 요청
   Phase 2 (UP →)    : UP 의 Tx FFE 를 DP 의 Rx 가 측정 + 변경 요청
   Phase 3 (final)   : 안정화 확인, EQ 종료

→ EQ 가 잘 안 맞으면 BER 폭증 → Recovery 빈발 → throughput 저하.


5. 디테일 — sub-block, EQ 4 phase, Lane 자동 처리

5.1 Physical Layer Sub-block

                ┌──────────────────────────────────┐
                │    PCS (Physical Coding Sublayer)│
                │  - Framing (STP/END / SDP/EDS)   │
                │  - Scrambling (LFSR)              │
                │  - 8b/10b ↔ 128b/130b ↔ FLIT     │
                │  - Lane stripe / de-stripe       │
                └────────────────┬─────────────────┘
                ┌────────────────▼─────────────────┐
                │    PMA (Physical Medium Attachmt)│
                │  - SerDes (Serializer/Deserializer)
                │  - PLL / clock multiplier        │
                │  - CDR (Clock-Data Recovery)     │
                └────────────────┬─────────────────┘
                ┌────────────────▼─────────────────┐
                │    Analog Front-End              │
                │  - Tx driver + FFE (Pre/Post tap)│
                │  - Rx CTLE / DFE / AGC          │
                └────────────────┬─────────────────┘
                                  │ differential pair (TX+/TX-, RX+/RX-)
                            Connector / wire

Equalization (Gen3+ 핵심)

단계 위치 역할
Tx FFE (Feed Forward Equalizer) Tx Pre-cursor + main + Post-cursor 3-tap, channel ISI 미리 보상
Rx CTLE (Continuous-Time Linear Equalizer) Rx Frequency-domain low-freq attenuation 보상
Rx DFE (Decision Feedback Equalizer) Rx 이전 결정으로 ISI 제거, 가장 효과적
AGC (Automatic Gain Control) Rx 신호 amplitude 정규화

→ Gen6 PAM4 는 EQ 가 더 복잡 (eye 가 3 개 → 마진 ↓), CTLE+DFE 마진이 핵심.

5.2 LTSSM — 11 States (전체)

                 ┌──────────┐
                 │ Detect   │ Receiver detection (TX 가 short pulse)
                 └────┬─────┘
                      │ receiver detected
                 ┌──────────┐
                 │ Polling  │ TS1/TS2 교환, lane 동기, 속도 협상
                 └────┬─────┘
                      │ TS2 교환 완료
                 ┌──────────┐
                 │Configurat│ Link/Lane number 결정, link width, speed
                 │   -ion   │
                 └────┬─────┘
                ┌──────────┐
                │   L0     │ ◀─────────────────┐
                │  정상    │                    │
                └─┬─┬──────┘                    │ Link 회복 / Gen up
                  │ │                            │
                  │ │ ASPM L0s                  │
                  │ ▼                            │
                  │ ┌──────────┐                │
                  │ │  L0s     │ ── FTS ───────┘ (저전력 짧은 기간)
                  │ └──────────┘
                  │ ASPM/PCI-PM L1, L2
                ┌──────────┐         ┌──────────┐
                │   L1     │         │   L2     │  (Aux power만, deep sleep)
                └─┬────────┘         └──────────┘
                  │ Recovery 트리거
                ┌──────────┐
                │ Recovery │  → EQ phase 재실행, retrain
                │          │  → 성공 시 L0 복귀
                └────┬─────┘
                     │ 실패
                ┌──────────┐ ┌──────────┐ ┌──────────┐
                │ Disabled │ │ Loopback │ │ Hot Reset│
                └──────────┘ └──────────┘ └──────────┘

State 별 핵심 동작

State 송신 신호 다음 state 트리거
Detect Detect pulse Receiver detected → Polling
Polling TS1 (Polling.Active) → TS2 (Polling.Configuration) TS2 8 개 송수신 완료 → Configuration
Configuration TS1/TS2 with link/lane #s Configuration.Idle 8 cycle → L0
L0 TLP / DLLP 트리거에 따라 L0s, L1, Recovery, …
L0s EIOS → idle FTS 받음 → L0 (몇 백 ns)
L1 EIOS → idle TS1 → Recovery → L0 (몇 us)
L2 (전원 거의 차단) Beacon / WAKE# → Detect → …
Recovery TS1/TS2 + EQ EQ 성공 → L0; 실패 → Detect 또는 Hot Reset
Disabled Electrical idle SW 가 enable 시 Detect
Loopback (test pattern echo) LB exit 명령 시 Detect
Hot Reset TS1 with Hot Reset bit 끝나면 Detect

5.3 Polling 상세

   Detect → Polling.Active
       │ TS1 송신, TS1/TS2 받기 시작
       │ TS1 8 개 받으면 → Polling.Configuration
   Polling.Configuration
       │ TS2 송신, TS2 받음
       │ TS2 8 개 송수신 완료 → Configuration
   Configuration

TS1/TS2 Ordered Set 의 주요 field:

  • Link Number, Lane Number — 링크/lane 식별
  • Symbol 5: Data Rate Identifier — 협상 가능 속도 (Gen2/3/4/5/6/7)
  • Symbol 6-9: Training Control bits — Hot Reset, Disable Link, Loopback, Compliance, Equalization

→ Polling 단계에서 서로 capable 한 최대 속도 가 정해짐. 하지만 실제로 그 속도로 link 진입하려면 Configuration → L0 → Recovery (EQ) → 새 속도의 L0 절차를 거침 (Gen3+).

Bit Lock ↔ Symbol Lock — Polling 의 두 단계 박자 맞추기

Bit Lock (비트 박자 맞추기):

  • Sender 가 01010101... 처럼 1-bit 단위로 규칙적으로 변하는 훈련용 신호 (TS1/TS2 의 일부) 를 송출.
  • Receiver 의 CDR (Clock Data Recovery) 회로가 이 신호의 transition 을 보고 자기 내부 시계를 sender 의 박자에 동기화.
  • 이 단계에서는 "한 비트의 시작/끝" 만 알아냄.

Symbol Lock (문자 경계 찾기):

  • Bit 박자는 맞췄지만 10-bit (8b/10b) 또는 130-bit (128b/130b) 의 시작/끝을 알아야 데이터로 해석 가능.
  • Sender 가 COM (Comma) symbol 이라는 특수 패턴을 주기적으로 섞어 송출.
  • Receiver 가 COM 을 발견하는 순간 "그 위치가 symbol 경계" 로 인식, alignment 완료.

→ 두 lock 이 모두 끝나야 Polling 이 다음 state 로 진행. PHY 검증 시 "Polling 에서 stuck" 의 진단은 Bit Lock 단계 vs Symbol Lock 단계 어디서 막혔는지부터.

PCIe link 는 항상 Gen 1 부터 시작

모든 PCIe device 는 처음 깨어날 때 무조건 Gen 1 (2.5 GT/s) 으로 시작. 이유: 호환성 보장 — 양 끝의 capability 를 모를 때 가장 보수적인 속도가 안전.

절차:

  1. Detect → Polling.Active 진입 시 Gen 1 으로 동작.
  2. Polling 단계에서 양 끝이 TS1/TS2 안에 "나는 Gen N 까지 지원" 정보 교환.
  3. 합의된 최대 속도가 정해진 뒤, Recovery 상태로 일부러 넘어가 clock 을 새 Gen 으로 올리고 retraining.
  4. Retraining 성공 시 합의 속도의 L0 진입.

검증 시 "Gen 4 capable 인데 link 가 Gen 1 으로 떠 있다" → Recovery + speed change 가 안 일어났다는 의미. 보통 LTSSM trace 에서 EQ phase 결과 또는 양 끝 capability mismatch 가 원인.

5.4 Equalization — Gen3+ 의 4 Phase

   Recovery → Recovery.Equalization → 4 phase
       ├─ Phase 0:
       │     • Downstream Port (DP) 가 Upstream (UP) 에 preset 송신
       │     • 양 끝이 Phase 1 진입 합의
       ├─ Phase 1:
       │     • DP 가 자기 Tx FFE preset 으로 송신
       │     • UP 의 Rx 가 받아서 BER 측정
       │     • UP 가 DP 의 Tx FFE coefficient 변경 요청 (어느 tap 을 키우거나 줄여라)
       ├─ Phase 2:
       │     • DP 가 UP 의 Tx FFE 를 변경 요청
       │     • UP Tx → DP Rx 의 BER 최적화
       └─ Phase 3:
             • 양 끝의 EQ 안정화 확인, 종료
             • Recovery → L0 (with new speed)

Preset: 11 가지 사전 정의 (P0..P10) 의 Tx FFE coefficient set. 양 끝의 시작점 결정.

EQ 의 가치: Channel 특성 (PCB trace + connector + cable) 이 다양해, 한 가지 EQ 로 모든 channel 커버 불가. 양 끝이 협상해 best EQ 결정.

5.5 Lane Reversal / Polarity Inversion / De-skew

   Lane Reversal
   ─────────────
   보드 라우팅상 lane 0..N 의 순서가 뒤집혀 연결됨
   → Polling 단계에서 자동 검출, internal 으로 매핑 reverse
   → SW 는 정상으로 봄

   Polarity Inversion
   ──────────────────
   Differential pair 의 + / - 가 뒤집힘
   → Receiver 가 자동으로 invert 처리

   Lane De-skew
   ────────────
   각 lane 의 도착 시간 차이 (PCB 길이 차)
   → SKP Ordered Set 으로 align
   → Tolerance 는 lane 간 ~ 1.5 ns

→ 이런 자동화 덕에 보드 라우팅이 유연해짐. 단, PCB 의 length matching 은 여전히 중요 (특히 Gen5+).

5.6 Lane Width Down-train

   양 끝이 x16 capable 이지만:
     - 일부 lane 의 EQ 실패 / electrical idle
     - 보드 손상 / connector pin issue

   → Configuration 단계에서 정상 lane 만으로 link 형성
   → x16 → x8 → x4 → x2 → x1 down-train 가능
   → 성능은 떨어지지만 link 는 유지

→ "왜 x16 이 x4 로 떨어졌나?" 라는 질문이 오면 LTSSM trace 에서 어느 lane 이 fail 인지 확인.

   LTSSM state 가 어디서 stuck?
       ├─ Detect 에서 stuck
       │      → Receiver 가 detect 안 됨
       │      → 케이블/connector/board, Tx 가 켜졌는지
       ├─ Polling 에서 stuck
       │      → TS1/TS2 송신 OK 인데 받기 실패
       │      → Polarity inversion / Lane reversal 자동검출 미동작
       │      → 또는 receiver 의 EQ 가 너무 부족 → BER 너무 높음
       ├─ Configuration 에서 stuck
       │      → Link/Lane number 협상 실패
       │      → 한쪽이 다른쪽의 width capability 와 다른 값을 강제
       ├─ Recovery 빈발
       │      → BER 임계 초과 — 채널 issue
       │      → EQ preset 이 channel 에 안 맞음
       │      → 온도 / 전원 노이즈
       └─ L0 에 갔는데 Recovery 자주 빠짐
              → SerDes margin 낮음
              → SW 가 일부러 retrain (e.g. Gen 변경)

검증 도구:

  • Protocol analyzer (LeCroy / Teledyne): packet level + LTSSM
  • PCIe debug card / interposer: physical layer 모니터
  • Aurora ↔ JTAG → SerDes Eye scan: PHY 직접 점검 (벤더 도구)

6. 흔한 오해 와 DV 디버그 체크리스트

흔한 오해

❓ 오해 1 — 'Link 가 L0 에 가면 끝, 추가 EQ 는 동작 안 한다'

실제: Gen3+ 는 L0 진입 후에도 BER 모니터링 + 필요 시 Recovery → Equalization 재실행 가능. 또한 Gen 변경 (Gen3→Gen4 upgrade) 시에도 Recovery + EQ 재실행. "L0 = 안정" 은 정적인 의미가 아님.
왜 헷갈리는가: "트레이닝 끝" = "정상" 으로 단순 매핑하기 쉬움.

❓ 오해 2 — 'Recovery 발생 = link 가 망가진 것이다'

실제: Recovery 는 기능 이다 — Gen up, EQ 재실행, ASPM L1 exit, Hot Reset 등 정상 시나리오의 공통 경로. 빈도 가 문제 — bring-up 시 한두 번은 정상, 운영 중 자주 빠지면 channel/EQ issue.
왜 헷갈리는가: "Recovery" 라는 단어의 부정적 어감.

❓ 오해 3 — 'Embedded clock 이라 reference clock 이 필요 없다'

실제: 100 MHz refclk 가 양 끝 PHY 에 공급되어야 정상 동작. Common Refclock vs Independent Refclock (SRIS — Separate Refclock Independent SSC) 모드 결정은 board design. SRIS 가 modern 옵션이지만 SerDes margin 더 빡빡.
왜 헷갈리는가: "embedded clock" 의 단어 의미.

❓ 오해 4 — 'PCIe link 는 spec 한 Gen 으로 떠 있다'

실제: 항상 Gen1 으로 시작 → Recovery 거쳐 합의된 최고 Gen 으로 올라감. Configuration Space 의 LnkSta 의 current speed 가 실제 동작 속도 — capability 와 다를 수 있음.
왜 헷갈리는가: capability 만 보면 max speed 로 동작한다고 가정.

❓ 오해 5 — 'x16 connector = x16 link width'

실제: 일부 lane 의 EQ 실패 / electrical issue 로 down-train 발생 가능 (x16 → x8 → x4 → x2 → x1). 항상 LnkSta 의 current width 확인. Down-train 자체가 board/silicon issue 의 신호.

DV 디버그 체크리스트 (이 모듈 내용으로 마주칠 첫 실패들)

증상 1차 의심 어디 보나
Link up 안 됨 — Detect 에서 stuck Termination 안 켜짐 또는 board/cable Tx pulse 송신 여부, board 전원
Polling 에서 stuck Bit Lock 또는 Symbol Lock 실패 refclk, polarity inversion 자동 보정, EQ margin
Configuration 에서 stuck Link/Lane # 협상 실패 TS1/TS2 의 capability 광고, width 강제 설정
L0 도달했는데 Gen 1 그대로 Recovery + speed change 미발생 LnkSta current speed, EQ Phase 결과
L0 ↔ Recovery 빈번 왕복 BER 임계 초과 (channel/EQ issue) EQ preset, eye margin, 온도/전원
x16 → x4 로 down-train 일부 lane 의 EQ 실패 또는 보드 손상 각 lane 의 LTSSM status, eye scan
Gen 변경 후 link drop speed change 시 EQ 부족 LTSSM Recovery trace, EQ Phase 0..3
Loopback mode 진입 안 됨 LB 명령 전달 실패 또는 vendor-specific TS1 Training Control bits

7. 핵심 정리 (Key Takeaways)

  • PHY = PCS + PMA + Analog + LTSSM. 각 sub-block 의 책임 분리.
  • LTSSM 11 state — Detect/Polling/Configuration/L0 + L0s/L1/L2/Recovery/Disabled/Loopback/Hot Reset.
  • Gen3+ 의 EQ 는 Recovery 안의 4 phase, 양 끝의 Tx FFE 를 Rx 가 요청.
  • Lane reversal / polarity inversion / de-skew 는 자동, lane width down-train 도 자동.
  • "Link 안 올라옴" 디버그는 LTSSM state stuck 위치 + EQ 결과부터.

실무 주의점

  • Gen 변경 시 Recovery + EQ 재실행 — bring-up 시 Gen 강제 진입 시퀀스 검증 필수.
  • Common Refclock vs Independent Refclock 모드는 spec 에 양 옵션 존재 — board design 시 결정. SRIS (Separate Refclock Independent SSC) 가 modern 옵션.
  • Loopback mode 는 production silicon 의 PHY 검증 도구 — DV 시 LB 진입 시퀀스도 검증.
  • Gen6 PAM4BER 은 Gen5 NRZ 보다 훨씬 높음 (보통 1e-6) — FEC 가 이를 1e-12 미만으로 보정. FEC 가 disabled 면 link 가 동작 안 함.
  • "x16 → x4 down-train" 의 발생 자체가 board 또는 silicon 문제의 신호 — 그냥 받아들이고 넘기지 말 것.

7.1 자가 점검

🤔 Q1 — LTSSM stuck (Bloom: Analyze)

LTSSMRecovery → Recovery.Speed → Recovery.RcvrCfg → Recovery loop. 원인?

정답

EQ (Equalization) 실패: - Tx FFE / Rx CTLE preset 부적절. - Channel insertion loss spec 초과 (긴 trace 또는 connector 손실). - Retimer EQ 와 RC EQ 의 conflict.

대응: - Eye diagram 측정 + EQ preset 재조정. - 또는 lower Gen 으로 down-train 후 동작.

🤔 Q2 — Common vs SRIS Refclock (Bloom: Evaluate)

카드 design. Common Refclock 가 좋은데 SRIS 를 쓰는 이유?

정답

Common Refclock 장점: SerDes clock recovery 간단, EQ 쉬움.

Common 단점: refclk wire카드까지 가야 — 긴 trace, 다중 카드 분배 어려움. Hot-plug 카드 부적합 (카드 마다 다른 refclk source).

SRIS: 각 카드가 자체 refclk. Hot-plug + 다중 카드 친화적. 단 CDR이 SSC compensate 가 더 복잡.

Modern data center NIC: SRIS 일반화.

7.2 출처

External - PCIe Specification — PHY chapter, LTSSM state diagram - PCIe Gen5/6 PHY Design — Synopsys / Cadence WP


다음 모듈

Module 06 — Configuration Space & Enumeration: L0 도달 후 OS 가 device 를 발견하고 BAR 를 할당하는 표준 절차.

퀴즈 풀어보기 →