Scan capture: 비트를 읽어 냈어도 논리 검사가 끝나지 않은 이유
scan chain에 넣은 비트가 정확히 다시 나왔다고 하자. 이것만으로 주변 조합 논리까지 정상이라고 말할 수 있을까. Scan capture를 이해하려면 비트를 옮기는 shift와 논리의 응답을 저장하는 capture를 구분해야 한다. 같은 플립플롭을 사용해도 어느 입력을 선택하고 언제 클럭을 주는지에 따라 검사의 대상이 달라진다.
비트를 이동시키는 시간과 응답을 얻는 시간
전형적인 mux 기반 scan cell은 기능 입력 D와 직렬 입력 SI 중 하나를 선택한다. 이 글의 가상 회로에서는 scan enable=1이면 SI, 0이면 D를 선택한다고 정하자. 실제 라이브러리의 극성과 핀 이름은 확인해야 한다. TU Delft 강의는 scan 상태에서 비트를 운반하고 정상 입력을 선택한 상태에서 조합 회로의 응답을 저장하는 역할을 구분한다. TU Delft Digital DFT and Scan Design, 8·13–16쪽
세 개의 scan cell A→B→C를 연결하고, 출력은 C에서 읽는다고 하자. 각 상승 에지에서 A는 SI를, B는 이전 A를, C는 이전 B를 저장한다. 초기 상태 [A,B,C]=[0,0,0]에서 SI를 1·0·1 순서로 넣으면 상태는 [1,0,0]→[0,1,0]→[1,0,1]이 된다. 이는 세 번의 shift가 특정 시작 상태를 만들었다는 계산이다.
이제 enable을 0으로 바꾸고 기능 입력을 선택한다. 가상의 조합 논리는 DA=NOT A, DB=A AND C, DC=B라고 하자. capture 직전 상태 [1,0,1]에서 기능 입력은 [0,1,0]이고, 한 번의 capture 에지 뒤 상태도 [0,1,0]이다. 에지 뒤 갱신된 A를 같은 에지에서 B가 사용하는 것이 아니라, 에지 직전의 입력을 각 셀이 함께 저장한다.
shift가 맞아도 조합 고장은 남는다
DB를 만드는 AND 출력이 0에 고정된 가상 고장을 넣어 보자. 앞의 shift에서는 SI를 선택하므로 [1,0,1]을 여전히 넣을 수 있다. 그러나 capture 결과는 [0,0,0]이 된다. shift 성공은 이 고장이 없다는 증거가 아니다.
capture 결과를 읽을 때 enable을 다시 1로 두고, 각 shift 에지 직전에 C를 관측한다고 정하자. 정상 결과 [0,1,0]은 C·B·A 순서로 0·1·0이 나온다. 고장 결과 [0,0,0]은 0·0·0이다. 두 번째 관측에서 차이를 얻는다. 이 예제에서는 scan 출력으로 보는 순서까지 정했기 때문에 어느 비트의 차이를 검사하는지 추적할 수 있다.
반대로 capture라 부른 에지에서 enable을 1로 남기고 SI=1을 넣으면 [1,0,1]은 [1,1,0]으로 바뀐다. 이것은 조합 회로의 응답이 아니라 추가 shift다. 테스트 파일에 capture라는 이름을 붙이는 것과 실제 셀에서 기능 입력을 선택하는 것은 다르다.
우연히 결과가 같아지는 입력도 있을 수 있다. 그러므로 결과 한 벡터의 일치만으로 모드 전환이 정확했다고 판단하기보다, enable의 극성·안정 시간과 셀에서 선택된 입력, 실제 클럭을 확인해야 한다. 일부 셀만 다른 모드에 남으면 응답의 해석도 달라진다.
저장한 응답을 훼손하지 않고 읽는다
capture 후의 읽기 shift는 다음 자극을 넣는 과정과 겹칠 수 있다. 이때 읽는 값은 다음 패턴의 상태가 아니라 직전 capture의 응답이어야 한다. chain 길이와 출력 관측 시점을 잘못 설정하면 정상 비트와 비교할 위치가 밀린다. 초기 채우기와 마지막 응답의 배출까지 포함해 순서를 맞춰야 한다.
한 번의 capture가 모든 종류의 결함을 검사하지도 않는다. 정적인 고장에 필요한 자극과, 시간 안에 전이가 도착하는지를 보는 검사에는 다른 조건이 필요하다. 이 가상 계산은 scan capture의 모드와 관측을 설명하며, 실제 제품의 fault coverage를 제시하는 것이 아니다.
Scan capture의 성공은 비트를 직렬로 이동시킨 성공과 구분해서 기록해야 한다. 시작 상태를 만들고, 기능 입력을 선택해 응답을 저장하고, 그 응답을 정해진 순서로 읽었다는 세 단계가 연결될 때 주변 논리의 고장을 검사했다고 말할 수 있다.