DFT(Design for Testability)

Memory Test(MBIST, LBIST, SCAN)

-운- 2025. 3. 19. 16:24

Built In Self Test (BIST)

주로 Logic에서 많이 사용하는 것인데 앞서 2번의 Test 알고리즘은 외부 장비를 통해서 진행하는 것인데 시간과 돈이 많이 든다. 

만약 Test 알고리즘 회로를 Chip 내부에 넣는 경우 외부 장비는 Pass/Fail이냐만 따지면 되기 때문에 테스트 비용이 절약된다.

 

하지만 Test 회로를 Chip안에 넣는 것은 면적을 차지하므로 이또한 비용인데 당연히 테스트 비용보다 Chip 안에서 면적을 사용하는 것이 더 비싸다.

 

이것을 쓰는경우는 크게 2가지 인데 

하나는 고신뢰성인(고장나면 인명피해 발생) 경우 동작중 혹은 중간 중간 쉬는 시간에 메모리의 이상 유무를 확인하는 것이다.

고신뢰성 어플리케이션은(항공, 우주) 칩 가격보다 신뢰성 우선이기에 문제가 되지 않느다.

 

두번째는 Stacked(3D) 메모리이다.

요세 유행하는 3D 메모리의 경우 1층은 큰 면적에 메모리 제어 회로가 들어가 있고 나머지 층은 메모리 Cell을 적층한다.

메모리 제어회로라는 것보다 메모리 Cell이 훨씬 크므로 결국 1층은 면적이 남아돈다. 

따라서 BIST를 충분히 넣을 수있는 것이다.

 

 

BIST의 종류

BIST는 칩 내부에 테스트 회로를 넣어서 스스로 결함을 체크하는 방법이다. 이게 쓰이는 방식이나 목적에 따라 종류가 나뉜다.(메모리는 셀에 값 쓰고 읽기(MBIST), 로직은 입력-출력 논리 확인(LBIST))

  • MBIST (Memory BIST): 메모리 테스트에 특화된 BIST다. 메모리 셀의 결함을 찾기 위해 Checkerboard나 March 같은 알고리즘을 칩 안에 심어놓는다. 예를 들어, DRAM이나 SRAM 같은 메모리 칩에서 Short, SAF 같은 결함을 잡아낸다. 메모리 용량이 크니까 외부 장비로 테스트하면 시간이 너무 오래 걸리는데, MBIST는 내부에서 빠르게 돌려서 Pass/Fail만 확인하면 된다.
  • LBIST (Logic BIST): 로직 회로를 테스트하는 BIST다. CPU나 디지털 회로 같은 논리 회로에서 Stuck-at Fault나 Transition Fault를 찾는다. 보통 PRPG(Pseudo-Random Pattern Generator)로 랜덤 패턴을 만들고, MISR(Multiple Input Signature Register)로 결과를 압축해서 체크한다. 로직은 복잡해서 패턴 수가 많아지는데, 이걸 내부에서 처리하는 게 핵심이다.
  • Mixed-Signal BIST: 아날로그와 디지털이 섞인 회로를 테스트한다. ADC(Analog-to-Digital Converter)나 DAC(Digital-to-Analog Converter) 같은 칩에서 쓰인다. 신호의 정확도나 노이즈를 확인하는데, 디지털 BIST보다 구현이 복잡하다.

BIST의 구현 방법

BIST를 칩 안에 넣으려면 몇 가지 회로를 설계해서 추가해야 한다. 이게 어떻게 동작하는지 간단히 풀어보면 다음과 같다.

  • Pattern Generator (패턴 생성기): 테스트에 쓸 데이터를 만드는 부분이다. MBIST라면 0과 1의 패턴(ex) Checkerboard)을 만들고, LBIST라면 랜덤 패턴을 뽑아낸다. PRPG 같은 회로를 써서 효율적으로 패턴을 생성한다. 이게 없으면 외부에서 패턴을 계속 주입해야 하니까 비용이 더 든다.
  • Response Analyzer (응답 분석기): 테스트 결과를 확인하는 부분이다. 메모리나 로직에서 나온 출력을 읽고, 정상인지 아닌지 판단한다. MISR을 쓰면 결과를 압축해서 시그니처(Signature)로 만들고, 이걸 기준값과 비교한다. 예를 들어, 시그니처가 다르면 결함이 있다고 본다.
  • Controller (제어기): BIST의 동작을 관리한다. 언제 테스트를 시작하고, 어떤 패턴을 쓸지, 결과를 언제 확인할지 조정한다. 이건 칩이 켜질 때 자동으로 돌릴 수도 있고, 중간에 필요할 때 실행할 수도 있다.
  • Test Access Mechanism: BIST 결과를 외부로 내보내거나 내부에서 제어할 수 있게 연결하는 부분이다. JTAG 같은 표준 인터페이스를 써서 외부 장비와 소통한다.

SCAN

SCAN은 내부 logic들에 추가적인 Flip Flop을 연결해서 SCAN mode가 활성화 되었을 때 내부의 각 logic들에 input 값을 직접 줄 수 있도록 설계하는 방법이다. Logic마다 Flip-flop으로 두르기 때문에 PPA 측면에서 매우 나쁘다. SCAN은 보통 값의 경우의 수가 많고 복잡한 경우에 쓰인다. (비메모리 반도체)

 

D Flip flop에 SCAN logic을 추가하면 위 사진처럼 만들어진다.(MUX 추가)

Tc가 0일 때는 Data input이 Flip flop에 들어가지만, Tc가 1일 때에는 SCAN input이 들어가 TEST 진행

이걸 왜 넣어줄까?

아까 위에서 쓴 것처럼, 이런 Di pin은 외부에서 직접 제어 할 수 없다. 그래서 이런 Scan Multiplexer를 Chain처럼 엮어서 외부에서 값을 넣어줄 수 있도록 한다.

 

SCAN Chain 엮는 법

SCAN Chain은 Flip-Flop들을 체인처럼 연결해서 테스트 값을 순차적으로 넣고 결과를 빼내는 구조다.

SCAN Chain엮는 법에 따라 다른데, input port - mux1 - mux2 - mux3 - mux4 -output port 형식으로 있다고 할 때

test 값을 Scan input에서 0-0-1-1로 넣어준다고 하면, 

  1. 첫 클럭: Mux1에 0이 들어간다. 나머지는 아직 초기 상태다.
  2. 두 번째 클럭: Mux2에 0, Mux1에 0이 들어간다. 값이 한 칸씩 밀린다.
  3. 세 번째 클럭: Mux3에 0, Mux2에 0, Mux1에 1이 들어간다.
  4. 네 번째 클럭: Mux4에 0, Mux3에 0, Mux2에 1, Mux1에 1이 된다.
  5. Output Port에서 값이 순차적으로 나오면서 로직의 상태를 볼 수 있다.

SCAN로직을 이런식으로 각 로직들에 다 넣어주므로, chip의 Power, Performance, Area에 대한 과부화가 매우 커진다.

하지만 미세공정에서 수율 50% 넘기도 매우 힘들다. 그래서 위 같은 Logic이 필요하다.