KR20210080398A - 메모리 내장 자체 테스트 컨트롤러를 이용한 판독 전용 메모리 테스트 - Google Patents

메모리 내장 자체 테스트 컨트롤러를 이용한 판독 전용 메모리 테스트 Download PDF

Info

Publication number
KR20210080398A
KR20210080398A KR1020217012706A KR20217012706A KR20210080398A KR 20210080398 A KR20210080398 A KR 20210080398A KR 1020217012706 A KR1020217012706 A KR 1020217012706A KR 20217012706 A KR20217012706 A KR 20217012706A KR 20210080398 A KR20210080398 A KR 20210080398A
Authority
KR
South Korea
Prior art keywords
rom
instructions
storage device
cpu
test
Prior art date
Application number
KR1020217012706A
Other languages
English (en)
Inventor
프라카쉬 나라야난
니키타 나레쉬
쁘라띠우샤 테자 이누간티
라케시 샨나파사파 야라두야띠나할리
아라빈다 아차르야
제시 싱
나빈 암발라메틸 나라야난
Original Assignee
텍사스 인스트루먼츠 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텍사스 인스트루먼츠 인코포레이티드 filed Critical 텍사스 인스트루먼츠 인코포레이티드
Publication of KR20210080398A publication Critical patent/KR20210080398A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • G11C29/16Implementation of control logic, e.g. test mode decoders using microprogrammed units, e.g. state machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0054Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C17/00Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/10Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/822Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for read only memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0407Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals on power on

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Microcomputers (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

시스템은 휘발성 저장 디바이스(106), 판독 전용 메모리(ROM, 104), 메모리 내장 자체 테스트(BIST) 컨트롤러(110) 및 중앙 처리 장치(CPU, 102)를 포함한다. CPU(102)는, 리셋 이벤트의 발생시에, CPU(102)로 하여금 상기 ROM(104)내의 어드레스들의 범위로부터의 명령어들을 휘발성 저장 디바이스(106)에 복사하게 하기 위해 ROM(104)으로부터의 제1 명령어를 실행한다. CPU(102)는 또한 프로그램 카운터를 변경하기 위해 ROM(104)으로부터의 제2 명령어를 실행한다. CPU(102)는 프로그램 카운터를 이용하여 휘발성 저장 디바이스(106)로부터의 명령어들을 더 실행한다. CPU(102)는, 휘발성 저장 디바이스(106)로부터의 명령어들을 실행할 때, ROM(104)으로 하여금 테스트 모드에 진입하게 하고, 메모리 BIST 컨트롤러(110)는 ROM(104)을 테스트하도록 구성된다.

Description

메모리 내장 자체 테스트 컨트롤러를 이용한 판독 전용 메모리 테스트
많은 전자 시스템들은 메모리로부터의 코드를 실행하는 마이크로프로세서를 포함한다. 이러한 시스템들은 종종 판독 전용 메모리(ROM) 및 랜덤 액세스 메모리(RAM)를 포함한다. 시스템에 대한 부팅(boot) 프로세스 동안 실행되는 코드를 저장하기 위해 "부팅" ROM이 시스템에 포함될 수 있다. 많은 시스템들은 그러한 메모리들이 구조적으로 온전한지 및 저장된 데이터가 신뢰할만한지를 확인하기 위해 부팅 프로세스 동안 및/또는 부팅 프로세스가 완료된 후의 유휴 시간 동안 RAM 및 ROM을 테스트한다.
일 예에서, 시스템은 휘발성 저장 디바이스, 판독 전용 메모리(ROM), 메모리 내장 자체 테스트 (built-in self-test, BIST) 컨트롤러 및 중앙 처리 장치(CPU)를 포함한다. CPU는, 리셋 이벤트의 발생시, ROM으로부터의 제1 명령어를 실행하여 CPU로 하여금 ROM 내의 어드레스들의 범위로부터 휘발성 저장 디바이스로 복수의 명령어들을 복사하게 한다. CPU는 또한 프로그램 카운터를 변경하기 위해 ROM으로부터의 제2 명령어를 실행한다. CPU는 프로그램 카운터를 이용하여 휘발성 저장 디바이스로부터의 복수의 명령어들을 추가로 실행한다. CPU는, 휘발성 저장 디바이스로부터 복수의 명령어들을 실행할 때, ROM이 테스트 모드에 진입하게 하고, 메모리 BIST 컨트롤러가 ROM을 테스트하도록 구성되게 한다.
다른 예에서, 방법은 판독 전용 메모리(ROM) 내의 어드레스들의 범위로부터 휘발성 저장 디바이스로 복수의 명령어들을 복사하는 단계, 및 복수의 명령어들의 시작에서 휘발성 저장 디바이스 내의 어드레스에 대응하도록 프로그램 카운터의 값을 변경하는 단계를 포함한다. 방법은 휘발성 저장 디바이스로부터 복수의 명령어들을 실행하는 단계를 더 포함한다. 명령어들은 ROM 내의 복수의 명령어들의 끝에 후속하는 ROM 내의 어드레스에 대응하도록 프로그램 카운터의 값을 변경하기 위한 명령어를 포함한다. 방법은 또한 ROM이 테스트를 통과했는지를 결정하기 위해 ROM 내의 명령어를 실행하는 단계를 포함한다.
도 1은 ROM을 테스트하기 위한 예시적인 시스템을 나타낸다.
도 2는 메모리 내장 자체 테스트(MBIST) 컨트롤러에 의해 ROM의 테스트를 시작하기 위해 ROM으로부터 RAM으로 실행을 위한 코드를 복사하는 것을 나타낸다.
도 3은 MBIST 컨트롤러를 이용하여 ROM을 테스트하기 위한 타임라인을 나타낸다.
도 4는 ROM을 테스트하기 위한 시스템의 다른 예를 나타낸다.
도 5는 ROM을 테스트하기 위한 방법의 플로우 차트이다.
전술한 바와 같이, ROM의 콘텐츠는 부팅 프로세스 동안 검증된다. 순환 중복 체크(CRC) 기법은 종종 ROM의 콘텐츠를 검증하는 데 이용된다. CRC 기법들은 시간 소모적이고, 일부 애플리케이션들은 엄격한 타이밍 요건들을 가질 수 있다. 예를 들어, ROM을 포함하는 회로가 포함될 수 있는 자동차 애플리케이션들의 경우에, ROM의 콘텐츠들은, 특히 ROM이 안전 중요 회로(safety critical circuit)의 일부일 때, 상대적으로 최소한의 시간 윈도우 내에서 검증될 필요가 있다. 예를 들어, 운전자가 자동차를 켤 때마다, 자동차 내의 하나 이상의 ROM들은 그들의 콘텐츠가 검증되게 할 필요가 있을 수 있다. 그러나, 운전자는 자동차를 시동한 후 곧바로 자동차를 운전할 수 있고 자동차가 안전하게 동작하게 할 수 있기를 기대한다.
본 명세서에 설명된 예들은 ROM의 콘텐츠를 신속하게 검증하기 위한 회로 아키텍처를 제공한다. 아키텍처는 시스템의 RAM과 ROM 모두를 테스트하는 메모리 내장 자체 테스트(MBIST) 컨트롤러를 포함한다. 부팅 프로세스 초기에, 중앙 처리 장치(CPU)는 CPU로 하여금 ROM으로부터 RAM(또는 다른 유형의 휘발성 저장 디바이스)으로 특정 명령어들을 복사하게 하는 ROM으로부터의 명령어를 실행한다. CPU는 이어서 RAM으로부터의 그 특정 명령어들의 실행을 계속한다. RAM으로부터 실행되는 복사된 명령어들은 CPU로 하여금 ROM을 테스트 모드로 전환하게 하고, CPU로 하여금 MBIST 컨트롤러에게 ROM을 테스트할 것을 지시하게 한다. MBIST 컨트롤러에 ROM 테스트의 책임을 떠넘김으로써, CPU는 다른 유용한 부팅 및 초기화 기능들을 수행할 수 있고, 그에 따라 부팅 프로세스를 촉진시킨다. 또한, 일부 시스템들에서, CPU에 의한 ROM의 백-투-백 판독 액세스는 가능하지 않으며, 이는 백-투-백 판독들이 가능한 경우보다 ROM을 더 느리게 테스트하게 한다. 또한, ROM을 테스트하기 위해 CRC 프로세스가 이용되었다면, 산술 로직 유닛(ALU) 및 CPU의 레지스터들을 이용한 계산 사이클들은 테스트되는 각각의 ROM 위치당 10-15 사이클을 포함할 수 있다. 본 명세서에 기술된 아키텍처는 ROM을 보다 효율적이고 빠른 방식으로 테스트한다. 본 명세서에 설명된 예들은 ROM을 테스트하는 것을 돕기 위해 RAM을 이용하는 것에 관한 것이지만, 다른 유형의 휘발성 저장 디바이스들(예를 들어, 레지스터들)이 RAM 대신에 이용될 수 있다.
도 1은 CPU(102), ROM(104), RAM(106) 및 MBIST 컨트롤러(110)를 포함하는 시스템(100)의 일례를 나타낸다. 일 구현에서, 시스템(100)은 도 1에 도시된 컴포넌트들이 공통 반도체 다이 상에 제조되는 시스템-온-칩(SoC)를 포함한다. ROM(104)은 비일시적인 저장 디바이스이다. 이 예에서는 하나의 CPU(102)가 도시되어 있지만, 다른 예들에서는 복수의 CPU들이 포함될 수 있다. 이 예에서 CPU(102)는 어드레스 및 데이터 버스(BUS1)를 통해 ROM(104)에 액세스할 수 있고, CPU(102)는 상이한 어드레스 및 데이터 버스(BUS2)를 통해 RAM(106)에 액세스할 수 있다. CPU(102)는 프로그램 카운터(PC)(103)에 대응하는 메모리 위치에 위치하는 코드를 실행한다. PC(103)의 값은 명령어를 페치할 RAM(106) 또는 ROM(104) 내의 어드레스이고, 또는 그 값은 메모리 어드레스(예를 들어, 메모리 어드레스를 생성하기 위해 오프셋에 더해지는 값)를 도출하는 데 사용된다. 유사하게, MBIST 컨트롤러(110)는 각각 어드레스 및 데이터 버스들(BUS3 및 BUS4)을 통해 ROM(104) 및 RAM(106)에 통신가능하게 결합된다.
실행 가능 명령어들("코드"라고도 지칭됨)은 ROM(104)에 저장되고 그로부터 CPU(102)에 의한 실행을 위해 검색될 수 있다. 코드는 시스템(100)의 리셋(예를 들어, 하드 또는 소프트 리셋) 시에 실행되는 부팅 코드를 포함할 수 있다. 부팅 코드는 CPU(102)로 하여금 다양한 레지스터들을 구성하는 것, 시스템에 존재하는 인터페이스들을 테스트하는 것 등과 같은 다양한 초기화 기능들을 수행하게 할 수 있다. RAM(106)은 런타임 동안 이용되는 데이터 또는 코드의 일시적 저장을 위한 스크래치 패드 저장소로서 이용될 수 있다. ROM(104)으로부터의 코드는 RAM(106)으로부터의 실행을 위해 RAM(106)으로 전송될 수 있다.
RAM(106)은 하나 이상의 메모리 디바이스들을 포함할 수 있고, 이중 포트형 메모리 디바이스이다. 하나의 포트(106a)를 통해, CPU(102)는 RAM(106)에 액세스할 수 있다. 다른 포트(106b)를 통해, MBIST 컨트롤러(110)는 RAM(106)에 액세스할 수 있다. RAM 테스트 모드 신호(115)는 RAM(106)으로 하여금 CPU(102)가 RAM(106)을 이용할 수 있는 제1 실행 모드("런타임 실행 모드"라고 함)에 있게 하기 위해 제1 로직 상태로 선언(assert)되거나, RAM(106)으로 하여금 MBIST 컨트롤러(110)가 RAM에 액세스할 수 있는 제2 모드("테스트 모드"라고 함)에 있게 하기 위해 제2 로직 상태로 선언될 수 있다. 런타임 실행 모드에서, 포트(106a)는 활성이어서(그리고 포트(106b)는 비활성임), CPU(102)가 BUS2를 통해 RAM(106)에 액세스할 수 있게 한다. 테스트 모드에서, 포트(106b)는 활성이어서(그리고 포트(106a)는 비활성임), MBIST 컨트롤러(110)가 BUS4를 통해 RAM에 액세스할 수 있게 한다. 테스트 모드에 있는 동안, MBIST 컨트롤러(110)는 RAM(106)을 테스트할 수 있다. 예를 들어, BUS4를 통해, MBIST 컨트롤러(110)는 미리 정의된 비트 패턴을 RAM(106)에 기입한 다음, RAM을 판독하여 판독된 데이터가 RAM에 기입된 것과 일치하는지를 확인할 수 있다. 일 예에서, CPU(102)는 MBIST 컨트롤러(110)에 하나 이상의 제어 레지스터를 기입하여 RAM(106)의 테스트를 시작하도록 MBIST 컨트롤러(110)를 트리거한다.
ROM(104)은 또한 이중 포트형 메모리 디바이스이고 포트들(104a 및 104b)을 포함한다. 포트(104a)는 CPU(102)에 결합되고 포트(104b)는 메모리 BIST 컨트롤러(110)에 결합된다. RAM(106)과 유사하게, ROM 테스트 모드(111)는 ROM(104)으로 하여금 CPU(102)가 (예를 들어, 코드를 페치하기 위해) ROM(104)에 액세스할 수 있는 "런타임" 실행 모드에 있게 하기 위해 메모리 BIST 컨트롤러(110)에 의해 제1 로직 상태로 선언될 수 있거나 또는 ROM(104)으로 하여금 MBIST 컨트롤러(110)가 ROM에 액세스할 수 있는 "테스트 모드"에 있게 하기 위해 제2 로직 상태로 선언될 수 있다. 런타임 실행 모드에서, CPU(102)가 BUS1을 통해 ROM(104)에 액세스할 수 있게 하기 위해 포트(104a)는 활성이다(그리고 포트(104b)는 비활성임). 테스트 모드에서, MBIST 컨트롤러(110)가 BUS3을 통해 ROM(104)에 액세스할 수 있게 하기 위해 포트(104b)는 활성이다(그리고 포트(104a)는 비활성임).
ROM(104)을 테스트하기 위해, 도 2에 설명된 예시적인 절차가 수행될 수 있다. 도 2로 가면, ROM(104) 및 RAM(106)의 적어도 일부의 콘텐츠가 도시된다. ROM(104)은 실행가능 코드(202, 204, 206, 208, 210 및 212)를 포함한다. 코드(202 및 212)는 시스템을 부팅하는 것을 보조할 뿐만 아니라 런타임 동안 시스템을 동작시키는 것을 보조하는(예를 들어, 상위 레벨 애플리케이션들을 대신하여 하위 레벨 하드웨어 컴포넌트들에 대한 액세스를 제공하는) 기능성 ROM 코드를 포함한다. 부팅 프로세스 동안, CPU(102)는, 예를 들어 ROM_ADDR_0에서 시작하는 기능성 ROM 코드(202)를 실행하기 시작한다. 즉, 프로그램 카운터(103)에는 ROM_ADDR_0에 대응하는 값이 로딩되고, CPU(102)는 ROM 내의 그 어드레스에서 명령어들을 실행하기 시작한다. PC(103)는 ROM(104)으로부터 페치된 각각의 코드 명령어(또는 명령어들의 그룹)에 대해 증분된다.
PC(103)는 결국 ROM(104) 내의 코드(204)의 위치에 대응하는 값일 것이다. 코드(204)는 점선들로 도시된 바와 같이, CPU(102)로 하여금 ROM_ADDR_b와 ROM_ADDR_c 사이의 범위의 어드레스들로부터의 ROM 코드(208)를 RAM_ADDR_x와 RAM_ADDR_y 사이의 범위의 RAM 어드레스들로 복사하게 하는 명령어를 포함한다. ROM 코드(208)를 수신하는 데 이용되는 RAM(106)의 부분은 RAM의 다른 미사용 부분(220)이다. RAM(106)에 수신된 ROM 코드(208)는 도 2에서 RAM 코드(222)로서 도시되어 있다.
일단 ROM 코드(208)가 RAM(106)에 복사되면, PC는 다시 ROM_ADDR_a로 증분된다. 그 위치에서의 코드는 CPU(102)로 하여금 PC(103)를 RAM 어드레스 RAM_ADDR_x(ROM(104)으로부터의 코드(208)를 포함하는 RAM 코드(222)의 시작 어드레스)에 대응하는 값으로 변경하게 한다. CPU(102)는 이어서 ROM 코드(208)의 명령어들을 실행하지만, RAM으로부터의 그 명령어들의 복사본(코드 222)을 실행한다. 명령어들은 명령어들(208a-208d)을 포함한다. 명령어(208a)는 CPU(102)로 하여금 테스트 모드를 위해 ROM(104)을 구성하게 한다. 일 예에서, 테스트 모드를 위해 ROM(104)을 구성하는 것은 메모리 BIST 컨트롤러(110)가 ROM 테스트 모드 신호(111)(도 1)를 로직 상태로 선언하는 것을 포함하며, 이는 ROM(104)으로 하여금 그의 포트(104b)가 인에이블되는(그리고 포트(104a)가 디스에이블되는) 그의 테스트 모드에 진입하게 한다. 명령어(208b)는 이어서 CPU(102)로 하여금 ROM(104)을 테스트하도록 MBIST 컨트롤러(110)를 구성하게 하기 위해 실행된다. 일 예에서, CPU(102)는 ROM(104)의 테스트를 시작하기 위해 MBIST 컨트롤러(110)를 트리거하도록 MBIST 컨트롤러(110)에 하나 이상의 제어 레지스터를 기입한다. 임의의 적합한 비휘발성 메모리 테스트 프로세스가 ROM(104)을 테스트하는 데 사용될 수 있다.
그 다음, CPU(102)는, MBIST 컨트롤러(110)가 CPU(102)로 하여금 ROM(104)의 테스트를 완료하기를 대기하기 위해 일시 정지 상태에 진입하게 하기 위해 명령어(208c)를 실행한다. MBIST 컨트롤러(110)가 그것의 ROM 테스트 프로세스를 완료하면, MBIST 컨트롤러(110)는 ROM 테스트가 완료되었다는 것을 CPU에 시그널링하기 위해 인터럽트를 CPU(102)에 선언할 수 있다. CPU(102)는 일시 정지 상태를 종료하고, 그 후 CPU(102)로 하여금 ROM(104)을 그것의 테스트 모드로부터 꺼내서 런타임 실행 모드에 들어가게 하는 명령어(208d)를 실행하여, CPU(102)가 포트(104a)를 통해 ROM으로부터 명령어들을 다시 검색할 수 있게 한다. 이 동작은 ROM 테스트 모드 신호(111)의 로직 상태를, 포트(104a)가 인에이블되고 포트(104b)가 디스에이블된 런타임 실행 모드에 대응하는 로직 상태로 변경하는 MBIST 컨트롤러에 의해 구현될 수 있다. 다음으로, CPU로 하여금 PC(103)를 이전에 RAM(106)에 복사된 코드(208)에 후속하는 ROM 어드레스인 ROM_ADDR_d에 대응하는 값으로 변경하게 하는 RAM(106)으로부터의 명령어(208e)가 실행된다.
MBIST 컨트롤러(110)는 ROM 테스트의 결과를 나타내는 값을 포함하는 ROM 상태 레지스터(117)를 포함한다. 일 예에서, ROM 상태 레지스터는 통과/실패 표시를 포함한다. 새롭게 변경된 PC(103)를 다시 ROM_ADDR_d에 대응하는 값으로 하면, CPU(102)는 RAM(106) 대신에 ROM(104)으로부터 명령어들을 페치한다. 따라서, 명령어(210)는 페치되고, CPU(102)로 하여금 ROM 테스트의 결과에 대해 MBIST 상태 레지스터(117)를 체크하게 한다. 명령어(210)는 또한 ROM(104)이 그 테스트를 통과한 경우에 코드 실행이 기능 ROM 코드(212)에서 계속되게 할 수 있다. ROM(104)이 그 테스트를 통과하지 못한 경우, 명령어(210)는 에러 응답을 개시할 수 있다. 에러 응답의 예는 CPU(102)로의 인터럽트의 생성, 에러 상태 머신에 의한 출력 신호의 선언 등을 포함한다.
도 3은 ROM(104)이 어떻게 테스트되는지를 나타내는 타임라인의 예를 제공한다. RAM(106)이 MBIST 컨트롤러(110)에 의해 테스트되기 전에 또는 테스트된 후에(따라서, RAM 테스트 모드 신호(115)가 도 3의 일 예에서 로직 "0"과 같은 로직 상태에 있음), ROM 테스트 모드 신호(111)는, CPU(102)가 실행을 위해 ROM(104)으로부터 코드를 페치할 수 있게 해주기 위해, ROM의 런타임 실행 모드에 대응하는 로직 상태(302로 도시된 바와 같이, 도 3의 "0")에 있다. 306에서, 코드(208)는 CPU(102)에 의해 ROM(104)으로부터 RAM(106)으로 복사된다. 그 다음, ROM 테스트 모드 신호(111)의 로직 상태는 MBIST 컨트롤러(110)가 테스트 목적을 위해 포트(104b)에 액세스하는 것을 허용하기 위해 ROM(104)을 테스트 모드에 두는 상태(이 예에서는 로직 "1")로 변경된다. 복사된 ROM 코드(208)(이제 RAM(106)내에 있음)는 RAM으로부터 실행된다. 복사된 ROM 코드(208)는 CPU(102)가 ROM(104)을 테스트하도록 MBIST 컨트롤러(110)를 구성하는 것과 같이 위에서 설명된 동작들을 수행하게 한다. 그 후, 313에서, ROM 테스트 모드 신호(111)는 312에서 코드 페칭이 ROM(104)으로부터 계속되고 CPU(102)에 의한 실행이 계속될 수 있도록, ROM(104)이 그 런타임 실행 모드로 다시 배치되는 이전 상태로 다시 선언된다.
도 4는 전술한 ROM 테스트 패러다임을 구현하는 시스템(400)의 예시적인 아키텍처이다. 예시적인 시스템(400)은 CPU(402)(ARM 코어를 포함할 수 있음), 부트 ROM(404), RAM(406) 및 MBIST 컨트롤러(410)를 포함한다. 도 4의 예의 시스템(400)은 직접 메모리 액세스(DMA), 컨트롤러(412), 추가 ROM들(428) 및 하드웨어 CRC(420)와 같은 추가 컴포넌트들도 포함한다. CPU(402), DMA(412), MBIST 컨트롤러(410), 하드웨어 CRC(420), ROM들(428) 및 RAM(406)은 버스(405)를 통해 함께 결합된다. 일 예에서, 버스(405)는 AXI(Advanced Extensible Interface)를 포함하지만, 다른 구현들에서는 다른 표준들과 부합할 수 있다. 부팅 ROM(404)(도 2에 도시된 ROM 코드를 포함함)은 TCM(Tightly Coupled Memory) 인터페이스(ITCM 및 DTCM)를 통해 CPU(402)에 결합된다. MBIST 컨트롤러(410)는 도시된 바와 같이 각각의 인터페이스들(413, 425 및 427)을 통해 부팅 ROM(404), ROM들(428) 및 RAM(406)에 결합된다. 도 1의 ROM(104) 및 RAM(106)에 대해 CPU(102) 및 MBIST 컨트롤러(110)에 의해 수행되는 동작들은 도 4의 ROM(404) 및 RAM(406)에 대해 CPU(402) 및 MBIST 컨트롤러(410)에 의해 수행된다.
도 5는 일례에 따른 방법의 플로우 차트를 나타낸다. 동작들은 도시된 순서로, 또는 상이한 순서로 수행될 수 있다. 또한, 동작들은 순차적으로 수행될 수 있거나, 동작들 중 2개 이상이 동시에 수행될 수 있다.
블록(502)에서, 리셋 이벤트가 발생한다. 시스템(100, 400)에 대한 전력이 인에이블되거나 소프트 또는 하드 리셋 이벤트가 발생할 수 있다. 블록(504)에서, CPU는 ROM(예를 들어, ROM(104), ROM(404))으로부터의 코드를 실행하기 시작한다. ROM 명령어들 중 하나는 블록(506)에서 CPU로 하여금 ROM의 코드의 일부를 RAM에 복사하게 한다. PC는 블록(508)에서 복사된 ROM 코드의 시작에 대응하는 RAM 내의 어드레스에 대응하도록 변경된다. 그 다음, CPU는 RAM으로부터 복사된 코드를 실행하기 시작하고, 이렇게 함에 있어서, 블록(510)에서 ROM을 테스트 모드로 구성한다. MBIST 컨트롤러(예를 들어, MBIST 컨트롤러(110, 410))는 블록(512)에서 ROM을 테스트하도록 CPU에 의해 구성되고, MBIST 컨트롤러는 그 후 ROM을 테스트하기 시작한다(블록(514)).
CPU는 블록(516)에서 MBIST 컨트롤러가 ROM 테스트를 완료하기를 대기한다. ROM 테스트가 완료되면, 블록(518)에서, ROM은 CPU가 ROM으로부터 명령어들을 계속 페치하는 것을 허용하기 위해 그것의 런타임 실행 모드로 다시 구성된다. PC는 이전에 복사된 ROM 코드에 후속하는 ROM 내의 어드레스로 변경된다(블록(520)). 블록(522)에서, 방법은 ROM이 테스트를 통과했는지를 결정하는 단계를 포함한다. 이 동작은 CPU가 레지스터 내의 값(예를 들어, 통과/실패 플래그)을 판독하는 것을 포함할 수 있다. ROM이 그 테스트를 통과한 경우, 방법은 부팅 프로세스가 완료되고 시스템이 그 런타임 환경에 진입하는 블록(526)에서 계속된다(예를 들어, 하나 이상의 런타임 애플리케이션이 실행된다). 그렇지만, ROM이 그 테스트를 통과하지 않은 것으로 결정되는 경우, 블록(524)에서, ROM 오류가 앞서 기술된 것과 같은 적당한 방식으로 처리된다.
이 설명에서, "결합한다(couple 또는 couples)"라는 용어는 간접 또는 직접의 유선 또는 무선 연결 중 어느 하나를 의미한다. 따라서, 제1 디바이스가 제2 디바이스에 결합하는 경우, 이러한 연결은 직접 연결을 통해 이루어지거나 다른 디바이스 및 연결부들을 경유한 간접 연결을 통해 이루어질 수 있다. "~ 에 기초하는" 이라는 기재는 "~ 에 적어도 부분적으로 기초하는"을 의미한다. 따라서, X가 Y에 기초하는 경우, X는 Y 및 임의의 수의 다른 팩터들의 함수일 수 있다.
청구항들의 범위 내에서, 기술된 실시예들에서의 수정들이 가능하고, 다른 실시예들이 가능하다.

Claims (20)

  1. 시스템으로서,
    휘발성 저장 디바이스;
    판독 전용 메모리(ROM);
    메모리 내장 자체 테스트(BIST) 컨트롤러; 및
    중앙 처리 장치(CPU)를 포함하고, 상기 중앙 처리 장치는
    초기화 이벤트의 발생시에:
    상기 CPU로 하여금 상기 ROM 내의 어드레스들의 범위로부터 상기 휘발성 저장 디바이스로 복수의 명령어들을 복사하게 하기 위해 상기 ROM으로부터의 제1 명령어를 실행하고;
    프로그램 카운터를 변경하기 위해 상기 ROM으로부터의 제2 명령어를 실행하고;
    상기 프로그램 카운터를 이용하여 상기 휘발성 저장 디바이스로부터의 상기 복수의 명령어들을 실행하고,
    상기 CPU는, 상기 복수의 명령어를 실행할 때, 상기 ROM으로 하여금 테스트 모드에 진입하게 하고 상기 메모리 BIST 컨트롤러가 상기 ROM을 테스트하도록 구성되게 하는, 시스템.
  2. 제1항에 있어서,
    상기 ROM은 상기 CPU에 결합된 제1 포트를 갖고, 상기 ROM은 상기 메모리 BIST 컨트롤러에 결합된 제2 포트를 갖고,
    상기 CPU가 상기 ROM으로 하여금 상기 테스트 모드에 진입하게 할 때, 상기 ROM은 상기 제1 포트를 디스에이블하고 상기 제2 포트를 인에이블하는, 시스템.
  3. 제1항에 있어서,
    상기 CPU는, 상기 복수의 명령어들을 실행할 때, 또한 상기 ROM으로 하여금 상기 테스트 모드를 종료하게 하는, 시스템.
  4. 제3항에 있어서,
    상기 CPU는 상기 복수의 명령어들을 실행할 때, 상기 ROM으로 하여금 상기 메모리 BIST 컨트롤러가 상기 ROM의 테스트를 완료할 때 상기 테스트 모드를 종료하게 하는, 시스템.
  5. 제3항에 있어서,
    상기 ROM으로 하여금 상기 테스트 모드를 종료하게 할 때, 상기 ROM의 제1 포트는 인에이블되고 제2 포트는 디스에이블되는, 시스템.
  6. 제1항에 있어서,
    상기 CPU는, 상기 복수의 명령어들을 실행할 때, 또한 상기 CPU로 하여금 상기 프로그램 카운터를 상기 ROM 내의 어드레스에 대응하는 새로운 값으로 다시 변경하게 하는, 시스템.
  7. 제6항에 있어서,
    상기 프로그램 카운터의 새로운 값은 상기 제1 복수의 명령어들의 상기 어드레스들의 범위에 후속하는 ROM 어드레스에 대응하는, 시스템.
  8. 제7항에 있어서,
    상기 CPU는 상기 ROM으로부터의 제2 명령어를 실행하여, 상기 CPU로 하여금 상기 ROM이 상기 메모리 BIST 컨트롤러에 의한 그것의 테스트를 통과했는지를 결정하게 하는, 시스템.
  9. 명령어들을 저장하는 비일시적 저장 디바이스로서,
    상기 명령어들은 중앙 처리 장치(CPU)에 의해 실행될 때, 상기 CPU로 하여금:
    상기 비일시적 저장 디바이스 내의 어드레스들의 범위로부터 휘발성 저장 디바이스로 복수의 명령어들을 복사하고;
    상기 휘발성 저장 디바이스내의 어드레스에 대응하도록 프로그램 카운터를 변경하기 위해 상기 비일시적 저장 디바이스로부터의 제1 명령어를 실행하고;
    상기 비일시적 저장 디바이스가 제2 디바이스에 의해 수행된 테스트를 통과했는지를 체크하기 위해 상기 비일시적 저장 디바이스로부터의 제2 명령어를 실행하게 하는, 비일시적 저장 디바이스.
  10. 제9항에 있어서,
    상기 제2 디바이스는 내장 자체 테스트 컨트롤러를 포함하는, 비일시적 저장 디바이스.
  11. 제9항에 있어서,
    상기 휘발성 저장 디바이스에 복사될 복수의 명령어들은, 상기 비일시적 저장 디바이스로 하여금 상기 CPU에 결합될 포트를 디스에이블하게 하고, 상기 비일시적 저장 디바이스로 하여금 상기 제2 디바이스에 결합될 포트를 인에이블하게 하는 명령어를 포함하는, 비일시적 저장 디바이스.
  12. 제9항에 있어서,
    상기 휘발성 저장 디바이스에 복사될 복수의 명령어들은 상기 제2 디바이스로 하여금 상기 비일시적 저장 디바이스를 테스트하도록 구성되게 하는 명령어를 포함하는, 비일시적 저장 디바이스.
  13. 제9항에 있어서,
    상기 휘발성 저장 디바이스에 복사될 복수의 명령어들은 상기 CPU로 하여금 상기 제2 디바이스가 상기 비일시적 저장 디바이스의 테스트를 완료하기를 대기하게 하는 명령어를 포함하는, 비일시적 저장 디바이스.
  14. 제9항에 있어서,
    상기 휘발성 저장 디바이스에 복사될 복수의 명령어들은, 상기 비일시적 저장 디바이스로 하여금 상기 CPU에 결합될 포트를 인에이블하고, 상기 제2 디바이스에 결합될 포트를 디스에이블하게 하는 명령어를 포함하는, 비일시적 저장 디바이스.
  15. 제9항에 있어서,
    상기 휘발성 저장 디바이스에 복사될 복수의 명령어들은, 상기 복수의 명령어들에 후속하는 상기 ROM 내의 어드레스에 대응하도록 상기 프로그램 카운터를 변경하기 위한 명령어를 포함하는, 비일시적 저장 디바이스.
  16. 방법으로서,
    판독 전용 메모리(ROM) 내의 어드레스들의 범위로부터 휘발성 저장 디바이스로 복수의 명령어들을 복사하는 단계;
    상기 복수의 명령어들의 시작에서 상기 휘발성 저장 디바이스 내의 어드레스에 대응하도록 프로그램 카운터의 값을 변경하는 단계;
    상기 휘발성 저장 디바이스로부터 상기 복수의 명령어들을 실행하는 단계, -상기 명령어들은 상기 ROM 내의 상기 복수의 명령어들의 끝에 후속하는 상기 ROM 내의 어드레스에 대응하도록 상기 프로그램 카운터의 값을 변경하기 위한 명령어들을 포함함-; 및
    상기 ROM 내의 명령어를 실행하여 상기 ROM이 테스트를 통과했는지를 결정하는 단계
    를 포함하는, 방법.
  17. 제16항에 있어서,
    메모리 내장 자체 테스트 컨트롤러에 의해 상기 ROM의 테스트를 수행하는 단계를 더 포함하는, 방법.
  18. 제16항에 있어서,
    상기 휘발성 저장 디바이스로부터 상기 복수의 명령어들을 실행하는 단계는 중앙 처리 장치에 결합된 상기 ROM의 제1 포트를 디스에이블하고, 메모리 내장 자체 테스트 컨트롤러에 결합된 상기 ROM의 제2 포트를 인에이블하는 단계를 포함하는, 방법.
  19. 제18항에 있어서,
    상기 ROM의 상기 테스트의 완료 시에, 상기 ROM의 상기 제1 포트를 인에이블하고 상기 제2 포트를 디스에이블하는 단계를 더 포함하는, 방법.
  20. 제16항에 있어서,
    상기 휘발성 저장 디바이스로부터 상기 복수의 명령어들을 실행하는 단계는 상기 ROM을 테스트하기 위해 메모리 내장 자체 테스트 컨트롤러 상에서 대기하는 단계를 포함하는, 방법.
KR1020217012706A 2018-10-29 2019-10-29 메모리 내장 자체 테스트 컨트롤러를 이용한 판독 전용 메모리 테스트 KR20210080398A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201862751873P 2018-10-29 2018-10-29
US62/751,873 2018-10-29
US201862785953P 2018-12-28 2018-12-28
US62/785,953 2018-12-28
US16/271,660 US10818374B2 (en) 2018-10-29 2019-02-08 Testing read-only memory using memory built-in self-test controller
US16/271,660 2019-02-08
PCT/US2019/058619 WO2020092406A1 (en) 2018-10-29 2019-10-29 Testing read-only memory using built-in self-test controller

Publications (1)

Publication Number Publication Date
KR20210080398A true KR20210080398A (ko) 2021-06-30

Family

ID=70328788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217012706A KR20210080398A (ko) 2018-10-29 2019-10-29 메모리 내장 자체 테스트 컨트롤러를 이용한 판독 전용 메모리 테스트

Country Status (6)

Country Link
US (2) US10818374B2 (ko)
EP (1) EP3874506A4 (ko)
JP (1) JP7394849B2 (ko)
KR (1) KR20210080398A (ko)
CN (1) CN112912958A (ko)
WO (1) WO2020092406A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10818374B2 (en) * 2018-10-29 2020-10-27 Texas Instruments Incorporated Testing read-only memory using memory built-in self-test controller

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5511202A (en) * 1993-07-26 1996-04-23 International Business Machines Corporation Desktop computer system having zero-volt system suspend and control unit for ascertaining interrupt controller base address
US6081752A (en) * 1995-06-07 2000-06-27 International Business Machines Corporation Computer system having power supply primary sense to facilitate performance of tasks at power off
US5793943A (en) 1996-07-29 1998-08-11 Micron Electronics, Inc. System for a primary BIOS ROM recovery in a dual BIOS ROM computer system
US6216224B1 (en) * 1998-06-05 2001-04-10 Micron Technology Inc. Method for read only memory shadowing
JP2001148199A (ja) * 1999-11-19 2001-05-29 Mitsubishi Electric Corp 自己テスト回路内蔵半導体記憶装置
US20070233955A1 (en) * 2000-01-06 2007-10-04 Super Talent Electronics Inc. Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces
JP2002259356A (ja) * 2001-02-28 2002-09-13 Naltec Inc データ処理装置およびその制御方法
US7325178B2 (en) * 2003-12-05 2008-01-29 Texas Instruments Incorporated Programmable built in self test of memory
JP4494474B2 (ja) * 2004-11-18 2010-06-30 メンター・グラフィクス・コーポレーション プログラマブル・メモリ・ビルト・イン・セルフ・テスト(mbist)の方法及び装置
JP2007035119A (ja) * 2005-07-25 2007-02-08 Seiko Epson Corp 半導体装置
US10481202B2 (en) * 2017-02-13 2019-11-19 Qualcomm Incorporated In-field self-test controller for safety critical automotive use cases
US10818374B2 (en) * 2018-10-29 2020-10-27 Texas Instruments Incorporated Testing read-only memory using memory built-in self-test controller
JP2021012598A (ja) * 2019-07-08 2021-02-04 キヤノン株式会社 情報処理装置及び制御方法

Also Published As

Publication number Publication date
US10818374B2 (en) 2020-10-27
US11521698B2 (en) 2022-12-06
EP3874506A1 (en) 2021-09-08
EP3874506A4 (en) 2021-12-15
WO2020092406A8 (en) 2020-12-03
JP2022520914A (ja) 2022-04-04
JP7394849B2 (ja) 2023-12-08
CN112912958A (zh) 2021-06-04
US20200388346A1 (en) 2020-12-10
WO2020092406A1 (en) 2020-05-07
US20200135290A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
US6336185B1 (en) Use of other processors during BIOS boot sequence to minimize boot time
US20160146888A1 (en) On-chip field testing methods and apparatus
JP2006127553A (ja) プログラムのテスト及びデバッギングが容易な中央処理装置
US5813043A (en) Method and system including memory patching utilizing a transmission control signal and circuit
JPH0798692A (ja) マイクロコンピュータ
CN111033630A (zh) 具有mbist的多处理器内核设备
US5894549A (en) System and method for fault detection in microcontroller program memory
KR20210080398A (ko) 메모리 내장 자체 테스트 컨트롤러를 이용한 판독 전용 메모리 테스트
US7340561B2 (en) Computer memory initialization
KR100543152B1 (ko) 마이크로프로세서 및 마이크로프로세서의 처리 방법
US20010052114A1 (en) Data processing apparatus
JPH08272756A (ja) マルチプロセッサシステムの起動方法
US7237099B2 (en) Multiprocessor system having a plurality of control programs stored in a continuous range of addresses of a common memory and having identification registers each corresponding to a processor and containing data used in deriving a starting address of a CPU-linked interrupt handler program to be executed by the corresponding processor
US6766447B1 (en) System and method of preventing speculative reading during memory initialization
KR101244684B1 (ko) 에러검출이 가능한 마이크로 컴퓨팅 장치 및 그의 에러검출방법
US20040107388A1 (en) Microcomputer
US10120737B2 (en) Apparatus for detecting bugs in logic-based processing devices
JPH09269896A (ja) ファームcpuのブート方法
JPH11212945A (ja) マイクロコンピュータおよびそのメモリ
JPH01121945A (ja) シングルチップマイクロコンピュータ
JPH03182949A (ja) 計算機システムにおける主記憶装置の診断方式
JP2000155702A (ja) マイクロコンピュータ
JPH096641A (ja) 情報処理装置
JPS61231633A (ja) マイクロプロセツサ
JPH04128942A (ja) 特定信号間隔検証回路