모든 이야기

DDR4 write leveling이 데이터선을 전부 보정해 주지 않는 이유

DDR4 초기화가 write leveling을 통과했다. 그러면 모든 write bit가 정확한 시점에 도착한다고 생각하기 쉽다. 하지만 이 절차가 측정하는 관계는 DQS와 CK다. DQ 각 bit의 sampling 여유까지 같은 검사를 통과한 것은 아니다. training 결과의 의미를 좁고 정확하게 읽어야 초기화 성공 뒤 드문 오류를 설명할 수 있다.

DIMM의 command·address·clock은 여러 DRAM을 순서대로 지나가는 fly-by 배선을 사용할 수 있다. stub를 줄이는 데 도움이 되지만 chip 위치마다 clock 도착시간이 달라진다. controller가 보내는 write DQS가 각 DRAM의 CK와 맞도록 delay를 조정하는 것이 write leveling의 목적이다.

Alliance DDR4 데이터시트 32~34쪽의 Write Leveling은 DRAM이 DQS 상승 edge로 CK 상태를 sampling하고 결과를 DQ로 되돌려 주는 과정을 설명한다. 이 DQ는 정상 데이터 read burst가 아니라 leveling 피드백이다. controller는 DQS delay를 변화시키며 피드백의 0→1 경계를 찾는다.

서로 다른 chip의 clock을 맞추는 가상 실험

두 chip에서 CK의 같은 상승 edge가 각각 기준 0.4ns와 1.0ns에 도착한다고 하자. controller가 보낸 DQS는 두 곳에 모두 0.2ns에 도착한다고 단순화한다. 둘의 skew를 없애려면 각 byte lane에서 DQS를 약 0.2ns, 0.8ns 더 늦추는 서로 다른 보정이 필요하다.

50ps delay tap을 사용하는 가상 controller라면 각각 4tap과 16tap이다. 실제 route delay와 edge ambiguity를 무시한 수치 예이며 특정 PHY의 정밀도나 training 알고리즘을 나타내지 않는다. 예가 보여 주는 것은 모든 lane에 같은 delay를 넣는 방법으로 위치별 CK flight time을 맞출 수 없다는 점이다.

가상 laneCK 도착조정 전 DQS필요한 추가 DQS delay
A0.4ns0.2ns0.2ns
B1.0ns0.2ns0.8ns

피드백 경계를 찾는다고 끝점이 무한히 정확해지는 것도 아니다. tap 양자화, jitter, 피드백 지연의 불확실성, DQS duty가 남는다. 문서도 tDQSS뿐 아니라 tDSS·tDSH를 만족해야 한다고 구분한다. 상승 edge 하나가 맞았다고 반대 edge와 pulse width가 자동으로 맞는 것은 아니다.

DQ bit가 늦는 문제는 다른 축이다

같은 byte lane의 DQS가 CK에 잘 맞아도 DQ0과 DQ7의 배선 길이가 다르면 두 bit의 도착 위치는 다를 수 있다. 가상 write eye에서 DQ0의 유효 구간이 100500ps, DQ7은 280680ps라고 하자. 공통 sampling 구간은 280~500ps로 220ps다. CK-DQS alignment 성공은 이 겹치는 폭을 직접 측정하거나 넓혀 주지 않는다.

따라서 leveling 성공과 DQ-DQS deskew 또는 write eye 검증을 혼동하면 안 된다. 두 결과는 같은 interface를 다루지만 측정 대상이 다르다. 오류가 특정 bit에 모이는지, lane 전체에 모이는지, 온도에 따라 움직이는지를 보면 어떤 관계를 다시 조사해야 할지 좁힐 수 있다.

피드백을 읽는 동안의 조건도 중요하다

leveling mode에서는 정상 memory 접근과 허용 명령이 다르고 termination 동작도 바뀐다. 다른 rank의 출력이 같은 DQ bus를 방해하지 않도록 설정해야 한다. 피드백이 안정되기 전에 sampling하면 반사나 아직 유효하지 않은 출력의 변화를 CK 경계로 오해할 수 있다. training 전후 mode register와 ODT를 제대로 복원하는 절차까지 포함해야 한다.

controller가 찾은 tap을 저장하는 것 외에, 그 값이 delay range 끝에 가까운지도 확인하면 유용하다. 정상 범위의 중앙에서 충분한 headroom을 갖는 경우와 마지막 tap에서 겨우 transition을 잡은 경우는 환경 변화에 대한 여유가 다르다. 단 한 번의 pass bit보다 경계 위치와 반복성에 정보가 더 많다.

Write leveling은 DRAM마다 달라진 CK flight time을 write strobe에 맞추는 과정이다. 통과 결과를 읽을 때는 “CK-DQS 관계가 이 조건에서 맞았다”라고 해석하고, DQ bit별 유효 창과 duty·jitter 여유를 별도로 검증하자. 무엇을 보정했는지 정확히 나누면 초기화 성공과 실제 데이터 신뢰성 사이의 빈칸을 찾을 수 있다.