KR20180089121A - 온 칩 dram을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법 - Google Patents

온 칩 dram을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법 Download PDF

Info

Publication number
KR20180089121A
KR20180089121A KR1020170013806A KR20170013806A KR20180089121A KR 20180089121 A KR20180089121 A KR 20180089121A KR 1020170013806 A KR1020170013806 A KR 1020170013806A KR 20170013806 A KR20170013806 A KR 20170013806A KR 20180089121 A KR20180089121 A KR 20180089121A
Authority
KR
South Korea
Prior art keywords
error
data
debug
session
golden
Prior art date
Application number
KR1020170013806A
Other languages
English (en)
Other versions
KR101958540B1 (ko
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 연세대학교 산학협력단
Priority to KR1020170013806A priority Critical patent/KR101958540B1/ko
Publication of KR20180089121A publication Critical patent/KR20180089121A/ko
Application granted granted Critical
Publication of KR101958540B1 publication Critical patent/KR101958540B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 온 칩 DRAM을 사용하여 멀티코어 환경에서 포스트 실리콘 디버그 시 에러라고 추정되는 데이터만 선택적으로 디버깅하는 기술로서, 일실시예에 따른 포스트 실리콘의 디버그 방법은 디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 단계, 상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 단계, 및 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계를 포함할 수 있다.

Description

온 칩 DRAM을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법{APPARATUS AND METHOD OF DEBUGGING POST SILICON USING ON-CHIP DRAM FOR MULTI-CORE DESIGN}
본 발명은 포스트 실리콘의 디버그를 위한 기술로서, 온 칩 DRAM을 사용하여 멀티코어 환경에서 포스트 실리콘 디버그 시 에러라고 추정되는 데이터만 선택적으로 디버깅하는 기술적 사상에 관한 것이다.
최근 반도체 설계 및 공정기술이 발달함에 따라 제조 공정 전 설계 단계에서 발견하지 못하는 에러의 양이 점점 늘어나고 있다. 또한 설계의 집적도 향상을 위해 개발되는 SoC (system on chip)과 같은 반도체는 하나의 칩 안에 많은 수의 코어가 포함되어 있으며 이에 따라 더 높은 반도체 수율과 비용 절감을 위해 이러한 에러들을 하드웨어 디버그를 통해 잡아내는 과정이 필요하게 되었다.
이 과정에서 가장 큰 제약 사항은 디버그를 위해 칩 내부의 데이터들을 실시간으로 관찰하는 데 어려움이 따른다는 점이다. 이를 극복하기 위해 최근 트레이스 버퍼를 이용하여 칩 내부 데이터를 실시간으로 저장하고 저장된 데이터를 JTAG (Joint Test Action Group)과 같은 외부 인터페이스를 통해 외부에서 꺼내어 분석하는 DfD (Design for Debug) 방식이 연구되고 있다.
즉, 회로 검증 및 테스트 이후 발생할 수 있는 에러들을 검출해 내기 위해 포스트 실리콘 단계의 디버그 과정이 필요하며 이러한 디버그 과정을 돕기 위해 디버그를 위한 DfD (Design for Debug) 기술이 제시되고 있다. 이는 실시간으로 반도체 내 데이터를 관찰하기 위해서 현재 제시되고 있는 기술로서, 이러한 DfD 기술은 트레이스 버퍼를 이용한 임베디드 로직 분석 기술에 해당한다.
이러한 해당 기술을 이용하는 유닛은 내부 회로 상태의 관찰 시작점 또는 끝점을 결정하고, 관찰이 시작되면 디버그 데이터들은 트레이스 버퍼(임베디드 된 메모리)를 포함한 샘플 유닛에 해당 데이터들을 저장하며, 디버그 과정이 끝나면 저장된 데이터를 오프로드 유닛을 통해 외부 디버그 소프트웨어로 뽑아내어 데이터를 분석하는 과정을 거친다.
이러한 기술은 실시간으로 데이터를 추출하여 분석해낼 수 있다는 장점이 있으나 관찰 가능한 데이터의 수가 트레이스 버퍼의 용량에 제한되어 있다는 단점이 있다. 따라서 이를 극복하기 위해 칩 내 존재하는 DRAM을 적극적으로 활용하고 관찰하는 디버그 데이터를 MISR와 같은 테스트에서 사용되는 압축기법을 이용하여 에러 구간과 에러 사이클을 단계적으로 비교 및 압축하는 방식으로 디버그를 진행하고 있다.
하지만 관찰을 위해 실시간으로 저장 가능한 데이터양은 트레이스 버퍼 사이즈와 비례하고 이는 하드웨어 오버헤드 비용으로 직결되기 때문에 수십 수백만 관찰 사이클이 요구되는 하드웨어 디버그에서 이러한 방식은 많은 디버그 동작이 필요하게 되고 이는 결국 많은 하드웨어 디버그 시간을 야기하게 된다. 따라서, 디버그 시간 단축을 위한 기술이 필요한 실정이다.
도 1은 종래의 DRAM에서의 디버그 방식을 설명하는 도면이다.
도 1에서 보는 바와 같이, 기존의 DRAM을 이용한 방식은 한번의 디버그 세션에 하나의 코어만을 고려하였기 때문에 여러 코어를 고려할 경우에는 해당 코어의 개수만큼의 세션이 통상적으로 필요하다. 이는 칩 내 집적되는 코어의 수가 늘어가는 추세인 현재 반도체 기술 상황에서 전체 디버그 시간을 늘리게 되는 요인이 된다.
한국등록특허 제10-1430218호 "디버그 상태 기계 및 이를 포함하는 프로세서" 미국등록특허 제10- 08990622호 "Post-silicon validation using a partial reference model"
본 발명은 온 칩 DRAM을 사용하여 멀티코어 환경에서 포스트 실리콘 디버그 시 에러라고 추정되는 데이터만 선택적으로 디버깅하는 기술을 제공하는 것을 목적으로 한다.
본 발명은 MISR (Multiple Input Signature Register)를 이용하여 선택적으로 에러 구간을 압축하여 분석한 후 칩 내 존재하는 DRAM에 디버그 데이터를 저장함으로써, 기존 기술에 대비하여 단 세 번의 디버그 세션만에 디버그를 완료하게 함으로서 디버그 시간을 단축하는 것을 목적으로 한다.
본 발명은 전체 디버그 시간을 단축함으로써, 전체 칩 제조시간을 줄임과 동시에 칩 양산을 위한 비용을 감소하는 것을 목적으로 한다.
일실시예에 따른 포스트 실리콘의 디버그 방법은 디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 단계, 상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 단계, 및 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계를 포함할 수 있다.
일실시예에 따른 상기 에러 구간들을 파악하는 단계는, 상기 골든 데이터를 상기 트레이스 버퍼에 업로드 하되, JTAG(Joint Test Action Group)를 포함하는 외부 인터페이스를 통해 업로드 하는 단계를 포함할 수 있다.
일실시예에 따른 상기 에러 구간들을 파악하는 단계는, 상기 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 상기 골든 데이터로 결정하는 단계, 상기 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 상기 골든 데이터를 비교하며 에러 여부를 판단하는 단계, 및 상기 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록하는 단계를 포함할 수 있다.
일실시예에 따른 포스트 실리콘의 디버그 방법은 상기 판단 결과 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록하는 단계를 더 포함할 수 있다.
일실시예에 따른 상기 디버그 구간 중에서 에러 구간들을 파악하는 단계는, 상기 디버그 구간에 해당하는 골든 데이터를 상기 MISR(Multiple Input Signature Register) 사이즈로 분할하여 압축하는 단계, 및 상기 분할 및 압축된 골든 데이터를 칩 내 디램(DRAM)에 저장하는 단계를 포함할 수 있다.
일실시예에 따른 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계는, 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 저장하는 단계, 및 상기 저장된 에러 데이터를 선별하여 디버그하는 단계를 포함할 수 있다.
일실시예에 따른 포스트 실리콘의 디버그 방법은 상기 파악된 에러 구간 내의 모든 코어가 에러인 경우, 디램(DRAM)에 상기 생성된 골든 데이터를 추가하는 단계를 더 포함할 수 있다.
일실시예에 따른 상기 에러 사이클을 검출하는 단계는, 사이클 별로 에러 사이클을 판별하여 태그 비트(EC tag) 형태로 저장하되, 쉐도우(shadow) 버퍼를 이용하여 상기 판별된 에러 사이클을 저장하는 단계를 포함할 수 있다.
일실시예에 따른 포스트 실리콘의 디버그 장치는 디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 세션 1 처리부, 상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 세션 2 처리부, 및 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 세션 3 처리부를 포함할 수 있다.
일실시예에 따른 상기 세션 1 처리부는, 상기 골든 데이터를 상기 트레이스 버퍼에 업로드 하되, JTAG(Joint Test Action Group)를 포함하는 외부 인터페이스를 통해 업로드 하는 단계를 포함할 수 있다.
일실시예에 따른 상기 세션 1 처리부는, 상기 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 상기 골든 데이터로 결정하고, 상기 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 상기 골든 데이터를 비교하며 에러 여부를 판단하며, 상기 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록할 수 있다.
일실시예에 따른 상기 세션 1 처리부는, 상기 판단 결과 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록할 수 있다.
일실시예에 따른 상기 세션 1 처리부는, 상기 디버그 구간에 해당하는 골든 데이터를 상기 MISR(Multiple Input Signature Register) 사이즈로 분할하여 압축하고, 상기 분할 및 압축된 골든 데이터를 칩 내 디램(DRAM)에 저장할 수 있다.
일실시예에 따른 상기 세션 3 처리부는, 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 저장하고, 상기 저장된 에러 데이터를 선별하여 디버그할 수 있다.
일실시예에 따른 상기 세션 1 처리부는, 상기 파악된 에러 구간 내의 모든 코어가 에러인 경우, 디램(DRAM)에 상기 생성된 골든 데이터를 추가할 수 있다.
일실시예에 따른 상기 세션 2 처리부는, 사이클 별로 에러 사이클을 판별하여 태그 비트(EC tag) 형태로 저장하되, 쉐도우(shadow) 버퍼를 이용하여 상기 판별된 에러 사이클을 저장할 수 있다.
일실시예에 따르면, 온 칩 DRAM을 사용하여 멀티코어 환경에서 포스트 실리콘 디버그 시 에러라고 추정되는 데이터만 선택적으로 디버깅하는 기술을 제공할 수 있다.
일실시예에 따르면, MISR (Multiple Input Signature Register)를 이용하여 선택적으로 에러 구간을 압축하여 분석한 후 칩 내 존재하는 DRAM에 디버그 데이터를 저장함으로써, 기존 기술에 대비하여 단 세 번의 디버그 세션만에 디버그를 완료하게 함으로서 디버그 시간을 단축할 수 있다.
일실시예에 따르면, 전체 디버그 시간을 단축함으로써, 전체 칩 제조시간을 줄임과 동시에 칩 양산을 위한 비용을 감소시킬 수 있다.
도 1은 종래의 DRAM에서의 디버그 방식을 설명하는 도면이다.
도 2는 본 발명의 일실시예에 따른 디버그 방식을 설명하는 도면이다.
도 3은 3단계의 디버그 세션을 이용하는 포스트 실리콘의 디버그 방법을 설명하는 도면이다.
도 4는 디버그 세션 1에서 에러 구간을 판단하기 위한 하드웨어 구조의 실시예를 설명하는 도면이다.
도 5는 디버그 세션 1의 수행 후 태그 비트로 추출된 해당 결과를 통해 에러 구간을 디버그 소프트웨어에서 분석하는 실시예를 설명하는 도면이다.
도 6은 디버그 세션 2에서 골든 데이터를 실시간으로 생성하기 위한 골든 데이터 스트림 선택기를 설명하는 도면이다.
도 7은 디버그 세션 2에서 에러 사이클을 판단하기 위한 하드웨어 구조를 설명하는 도면이다.
도 8은 디버그 세션 2 후 태그 비트로 추출된 해당 결과를 통해 에러 사이클을 디버그 소프트웨어에서 분석하는 실시예를 설명하는 도면이다.
도 9는 디버그 세션 3에서 에러 사이클을 캡쳐하기 위한 하드웨어 구조를 설명하는 도면이다.
도 10은 디버그 세션 1에 대한 타이밍을 나타내는 도면이다.
도 11은 디버그 세션 2에 대한 타이밍을 나타내는 도면이다.
도 12는 디버그 세션 3에 대한 타이밍을 나타내는 도면이다.
도 13은 일실시예에 따른 포스트 실리콘의 디버그 장치를 설명하는 도면이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 2는 본 발명의 일실시예에 따른 디버그 방식을 설명하는 도면이다.
본 발명의 일실시예에 따른 디버그 방식(200)은 여러 코어를 디버깅 해야 하는 경우 전체 디버그 세션을 세 번 만에 끝낼 수 있다.
첫 번째 디버그 세션(세션 1)은 각 코어의 에러인 구간을 찾아낼 수 있는 에러 구간 탐색 세션으로 진행되며 그 후 에러인 구간을 골든 데이터와 실시간으로 비교하여 에러인 사이클을 구체적으로 찾아낼 수 있는 에러 사이클 탐색 세션(세션 2)이 진행된다. 마지막으로는 세션 3이 진행될 수 있는데, 이는 각 코어의 에러 사이클에 해당하는 데이터를 저장하는 에러 데이터 캡쳐 세션으로 전체 디버그 과정을 마무리할 수 있다.
도 3은 3단계의 디버그 세션을 이용하는 포스트 실리콘의 디버그 방법(300)을 설명하는 도면이다.
먼저, 포스트 실리콘의 디버그 방법(300)은 디버그 세션 1(310)을 통해 디버그 구간 중에서 에러 구간들을 파악할 수 있다.
구체적으로, 포스트 실리콘의 디버그 방법(300)은 골든 MISR 시그니쳐(signatures)들을 생성(311)할 수 있다. 예를 들어, 디버그 시작 전에 관찰 구간을 MISR를 통해 MISR 사이즈만큼 나누어 압축함으로써, 골든 MISR 시그니쳐(signatures)들을 생성할 수 있다.
또한, 포스트 실리콘의 디버그 방법(300)은 구간 검출의 캡쳐 결과(312)를 생성하고, 이를 통해 에러 구간들을 검출(313)할 수 있다.
즉, 포스트 실리콘의 디버그 방법(300)은 골든 데이터를 칩 내 DRAM에 저장할 수 있다. 이때, 디버그를 진행하면서 각 코어의 실제 디버그 값과 골든 데이터를 비교기를 통해 실시간으로 비교하여 서로 데이터의 값이 다른 경우 해당 코어의 해당 디버그 구간을 에러로 간주하며 이 결과값을 1비트의 태그 비트 형태 (EI tag)로 저장할 수 있다.
일실시예에 따른 포스트 실리콘의 디버그 방법(300)은 에러 구간들을 파악하기 위해, 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 골든 데이터로 결정할 수 있다.
또한, 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 골든 데이터를 비교하며 에러 여부를 판단할 수 있다. 한편, 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록함으로써, 에러 구간들을 검출할 수 있다.
한편, 포스트 실리콘의 디버그 방법(300)은 디버그 세션 1에서 EI 인덱스 태그 비트를 추가적으로 저장할 수 있다. 구체적으로, 포스트 실리콘의 디버그 방법(300)은 구간 검출의 캡쳐 결과를 이용하여 에러 구간들을 검출하되, 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록할 수 있다. 즉, 해당 구간에서 모든 코어의 데이터가 에러가 아닌 경우를 구분하기 위해 EI 인덱스라는 태그 비트를 추가적으로 두어 저장한다.
첫 번째 디버그 세션에서 모든 디버그 중인 코어인 CUD(Core Under Debug)의 에러 구간은 MISR 기반 압축 기술로 감지됩니다. 이 기술은 포스트 실리콘 디버그 동안 에러가 발생한 구간을 식별하는데 사용되었다.
먼저, 골든 MISR 시그니쳐(signatures)는 동작 모델을 시뮬레이션 하거나 FPGA 프로토 타이핑 보드를 사용하여 생성될 수 있다. 세 번째 세션에서 디버그 데이터를 캡쳐 하려면 MISR의 길이가 M 사이클로 결정될 수 있다.
그런 다음 사전 계산된 골든 시그니쳐가 직렬의 외부 인터페이스(예: JTAG) 또는 고속 추적 포트를 통해 DRAM으로 업로드될 수 있다.
단계 313에서 디버그 프로세스가 시작되면 디버그 구성이 수행되어 트리거 이벤트 조건을 설정하고 디버그 데이터를 선택할 수 있다. 또한, 골든 시그니쳐는 DRAM의 골든 시그니쳐 레지스터에 로드될 수 있는데, 기능적 동작이 시작된 후, 각 CUD의 디버그 데이터는 골든 시그니쳐의 간격과 동일한 M 사이클 동안 설정된 MISR에 의해 압축될 수 있다.
M 사이클 후에, 시그니쳐는 에러가 발생한 구간을 검출하기 위해 코어의 데이터를 골든 데이터와 비교한다. 코어의 시그니쳐 값이 골든 데이터와 동일한 경우에 이 코어의 현재 구간에는 에러가 없다고 판단할 수 있다.
그렇지 않은 경우, 현재의 구간은 에러 구간으로 걸출할 수 있다. 모든 코어의 간격 에러 검출 결과를 확인하려면 1 비트가 필요하다.
예를 들어, 1비트의 값이 '1'이면 해당 간격 동안 하나 이상의 코어가 잘못되었음을 나타내고 '0'이면 모든 코어가 모든 코어에 에러가 없는 구간임을 나타낼 수 있다.
본 명세서에서 상기 1 비트는 EI 인덱스(EI index)로 해석될 수 있다.
즉, EI 인덱스가 '1'이면 EI 태그로 불리는 n 비트를 EI 태그 레지스터에 저장하여 각 코어의 인터벌 검출 결과를 확인하고, EI 인덱스가 '0'이면 EI 태그를 캡쳐 할 필요가 없다.
캡쳐 프로세스 후 EI 태그는 다음 간격 감지 프로세스가 끝나기 전에 DRAM에 저장될 수 있다. 그 후, 다음 번의 골든 시그니쳐가 로딩되고 디버그 데이터는 이러한 방식으로 N 사이클 동안 분석될 수 있다.
첫 번째 세션(디버그 세션 1, 310)이 끝나면 DRAM의 EI 태그와 레지스터의 EI 인덱스가 워크 스테이션, 즉 오프-칩(Off-chip)으로 전송되고 분석되어 두 번째 세션(디버그 세션 2, 320)의 태그 비트가 생성될 수 있다.
태그비트 저장 방식을 통해 해당 관찰 구간 동안 에러 구간을 선별적으로 구별해 낼 수 있다. 이에 대한 하드웨어 구조는 이후 도 4에서 상세히 설명한다.
다음으로, 포스트 실리콘의 디버그 방법(300)은 디버그 세션 2를 통해 파악된 에러 구간들에 상응하는 에러 사이클을 검출할 수 있다.
에러 구간이 검출되었음을 나타내는 태그 비트를 워크 스테이션(오프-칩)에 전송 한 후, 디버그 소프트웨어에 의해 오프 칩 디버그 프로세스(321, 323)가 수행될 수 있다.
디버그 소프트웨어 사용 프로세스는 온-칩(On-chip) 디버그 실험 및 디버그 데이터가 디버그로 디버그로부터 전송되는 프로세스 중에 동시에 수행되기 때문에 디버그 시간과 관련하여 부담되지 않는다.
EI 인덱스(index) 및 EI 태그(tag)를 사용하면 각 코어의 에러 간격 정보를 나타내는 에러 간격 행렬을 생성할 수 있다. n이 4이고 EI 인덱스의 수가 10 인 경우, 매트릭스 크기는 도 5에 기술 된 바와 같이 4×10이다.
두 번째 디버그 세션(디버그 세션 2, 320) 중에 모든 CUD의 에러 클록 사이클을 감지하려면 각 클록 사이클에 해당하는 디버그 데이터를 분석하는데 골든 데이터가 필요하다.
그러나 N 또는 L이 증가함에 따라 모든 골든 데이터를 DRAM에 저장하는 것은 비효율적이다.
이를 위해, 오프-칩에서는 단계 321을 통해 N 사이클 동안 골든 데이터 스트림(Golden Data Stream, GDS)을 생성할 수 있다. 즉, 생성된 GDS를 이용하여 동일한 크기의 코어들로부터의 데이터와 골든 데이터를 비교할 수 있다.
또한, 포스트 실리콘의 디버그 방법(300)은 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그할 수 있다.
두 번째 세션(디버그 세션 2, 320)은 에러 구간을 판별한 정보를 사용하여 어떤 사이클에서 직접적으로 에러가 발생 했는지를 찾는 세션이다.
디버그 세션 2(320)에서는 사이클 단위로 에러 데이터를 분석하기 위해 사이클 단위의 골든 데이터가 필요하나 이는 많은 데이터 오버헤드를 야기한다. 따라서 이를 줄이기 위해 본 발명에서는 골든 데이터 스트림 셀렉터라는 하드웨어 구조를 추가할 수 있다. 디버그 세션 1(310)에서는 판명된 에러가 아닌 구간에서의 코어의 데이터를 골든 데이터라고 가정할 수 있기 때문에 추가적으로 골든 데이터를 넣지 않더라도 실시간으로 해당 코어의 값을 골든 데이터로 사용할 수 있다. 따라서 이러한 조건을 이용하여 골든 데이터를 생성해 낼 수 있다. 만약 해당 구간에서 모든 코어가 에러인 경우에만 추가적으로 DRAM에 골든 데이터를 넣어서 진행하면 된다.
이러한 기능을 수행하기 위한 골든 데이터 스트림 셀렉터의 블록도가 도 6에 표현되어 있다. 이러한 방식으로 디버그 세션 2(320)에서는 사이클 단위로 에러인 구간과 비교해가며 에러 사이클을 판별하고 다시 태그 비트(EC tag)를 형태로 생성하여(323) 저장한다(322). DRAM에 사이클 단위로 저장할 경우 DRAM의 속도와 칩 내 속도에 차이가 발생할 수 있기 때문에 EC 태그 비트(EC tag)를 저장하는 버퍼의 경우 쉐도우(shadow) 버퍼를 이용해서 이러한 속도문제를 해결할 수 있다.
또한, 디버그 세션 3(330)에서 사용될 트레이스 버퍼를 본 디버그 세션 2(320)에서는 골든 데이터를 저장하는데 사용할 수 있다.
이때 저장되는 골든 데이터는 앞서 말한 대로 해당 구간에서 모든 코어가 에러일 경우 필요한 골든 데이터로 해석될 수 있다.
디버그 세션 3(330)에서는 에러 사이클 태그 비트들을 생성하고(331), 에러 데이터를 캡쳐하며(332), 캡쳐된 데이터를 디버그할 수 있다(333).
구체적으로, EC 태그를 디버그 소프트웨어(오프-칩)로 전송 한 후에는 디버그 세션 3(330) 동안 일련의 클록 사이클에서 모든 코어의 에러 데이터를 감지하기 위해 다시 생성될 수 있다.
이는 도 4를 통해 보다 상세히 설명한다.
도 4는 디버그 세션 1에서 에러 구간을 판단하기 위한 하드웨어 구조(400)의 실시예를 설명하는 도면이다.
이러한 태그비트 저장 방식을 통해 해당 관찰 구간 동안 에러 구간을 선별적으로 구별해 낼 수 있다. 이에 대한 하드웨어 구조(400)는 도 4에서 상세히 설명한다.
도면부호 400에서 보는 바와 같이, 데이터의 전체 구간을 EI 태그와 EI 인덱스로 저장한 후에는 해당 태그 비트를 외부에 연결된 디버그 소프트웨어를 통해 추출해 내고 비교기(430)를 통해 이를 통해 에러 구간이 어디인지를 판별할 수 있다.
예를 들어, EI 인덱스(440)가 0인 경우, 해당 구간에서 모든 코어(410)는 전부 에러 프리인 상태이며 EI 인덱스(440)가 1인 경우는 모든 코어(410) 중에서 적어도 하나의 코어에서 에러가 발생했음을 의미한다. 하드웨어 구조(400)에서는 이런 식으로 에러 구간이 어떤 구간인지 판별해 낼 수 있다.
보다 구체적으로, 에러 사이클의 행렬은 EC 태그와 에러 간격의 행렬로 계산될 수 있다. 전체 MISR(420) 중에서 각 MISR의 길이가 5이면 각 구간마다 4 × 5 에러주기 행렬이 생성될 수 있다. 만약, 이 행렬을 사용하면 EC 인덱스가 생성될 수 있다.
EC 인덱스는 해당 클록 사이클에서 코어들(410) 중 적어도 하나의 코어에 에러가 있거나 없음을 나타낸다. 첫째, EI 인덱스(440)가 0이면 간격이 무시되고, EI 인덱스(440)가 1이면 필요한 EC 인덱스의 수는 M이다.
EC 인덱스가 1이면 EC 태그가 n만큼 필요하며 에러 클록 행렬에 의해 다시 생성될 수 있고, EC 인덱스가 0이면 주기가 무시될 수 있어 EC 태그가 다시 생성될 수 있다.
이러한 태그 비트를 생성 한 후 최종 디버그 세션이 수행될 수 있다. 사전 계산된 태그 비트가 DRAM에 업로드되고 디버그 구성이 수행될 수 있다.
트리거 포인트 이후 EI 인덱스(440)는 에러 간격을 감지하고 EC 인덱스는 에러주기를 감지하며 EC 태그는 에러 코어를 실시간으로 선택한다.
모든 코어의 에러 데이터가 추적 버퍼에 캡쳐될 수 있는데, 추적 버퍼가 가득 차면 캡쳐된 데이터가 EI 태그(450)를 통해 쉐도우 버퍼로 이동되어 DRAM에 저장될 수 있다. 그 다음에 다음 태그 비트가 DRAM에서 골든 시그니쳐(signatures) 레지스터(460)에 로드 되고 디버그가 실행 된 후 모든 에러 데이터가 DRAM에 저장될 수 있다. 디버그 세션이 완료되면 저장된 데이터가 워크 스테이션으로 전송되고 분석되어 에러의 근본 원인을 찾을 수 있다.
도 5는 디버그 세션 1의 수행 후 태그 비트로 추출된 해당 결과를 통해 에러 구간을 디버그 소프트웨어에서 분석하는 실시예(500)를 설명하는 도면이다.
도 5의 예에서, 본 발명에 따르면 구간 1, 3, 4, 7 및 8은 골든 데이터로서 코어를 선택할 수 있다. 이 경우 코어 4 (core_sel = 11)는 구간 1, 3이고 코어 3 (core_sel = 10)은 구간 4, 7 및 8에 대한 것이다. 에러 구간 매트릭스(540)의 경우, 세션 1에 대한 결과 태그 비트들(520)로 식별될 수 있다.
세션 2를 위한 GDS 태그 비트들(530)에 따르면, GDS 태그를 생성 한 후 두 번째 디버그 세션을 시작하여 각 코어의 에러 클록 사이클 정보를 캡쳐 할 수 있다. 먼저, 사전에 계산된 태그 비트가 DRAM에 업로드 되면, GDS 인덱스가 1 인 경우에는 추가 골든 데이터가 업로드 되고 DRAM 사용이 더 필요하다. 그러나 이러한 경우는 앞에서 논의한 포스트 실리콘 디버그 프로세스의 에러율이 낮기 때문에 거의 발생하지 않는다.
디버그 프로세스가 시작되면 디버그 구성이 수행되고 태그 비트가 각 태그 레지스터에 업로드된다. 또한, 추가되는 골든 데이터의 경우, 이들은 연속적인 클록 사이클 순서로 디버그 데이터와 비교돼야 하기 때문에 트레이스 버퍼와 쉐도우 버퍼에 차례로 업로드될 수 있다.
또한, 이러한 버퍼는 디버그 세션 3에서 에러 데이터를 캡쳐 하는데 다시 사용될 수 있다.
트리거 포인트 이후에 EI 인덱스는 에러 간격을 감지하고 EI 태그는 실수로 에러 코어를 선택한다. EI 인덱스가 0이면이 간격을 건너뛸 수 있고, 그렇지 않은 경우 에러 코어는 GDS 선택기의 골든 데이터 스트림과 비교될 수 있다. 본 명세서에서는 EC 태그라고하는 비교 결과 비트를 통해 M 사이클 동안 EC 태그 온칩 버퍼에 캡쳐될 수 있다.
모든 코어가 에러가 있는 최악의 경우를 처리하기 위해 EC 태그 버퍼의 크기는 n × M일 수 있다. 캡쳐 프로세스가 연속적인 클록 사이클로 수행되기 때문에 쉐도우 EC 태그 버퍼가 필요하다.
EC 태그 버퍼가 가득 차면 데이터가 쉐도우로 이동되어 DRAM에 저장될 수 있다. 그 후, 다음 태그 비트가 DRAM에서 레지스터로 로드되고, 디버그 데이터가 이러한 방식으로 N 사이클 동안 분석될 수 있다. 두 번째 세션이 완료된 후 DRAM에 저장된 태그 비트가 워크 스테이션으로 전송되고 세 번째 세션에 대해 분석되며, 이러한 온-칩 프로세스는 도 4의 하드웨어 구조(400)를 통해 수행될 수 있다.
도 6은 디버그 세션 2에서 골든 데이터를 실시간으로 생성하기 위한 골든 데이터 스트림 선택기를 설명하는 도면이다.
본 발명에서는 에러없는 코어를 선택하여 골든 데이터 스트림을 생성 할 수 있다.
이를 위한 골든 데이터 스트림(GDS) 선택기(600) 각 구간에 대한 에러없는 데이터를 선택하기 위해, GDS 태그와 GDS 인덱스를 이용할 수 있다.
GDS 태그는 GDS 인덱스와 코어 선택을 위한 코어_sel로 구성된 GDS 태그로 해석될 수 있다. 또한, GDS 인덱스는 골든 데이터를 선택하는 방법을 결정하고 코어_sel은 에러가 없는 선택된 코어 세트로 해석될 수 있다.
구체적으로, 에러가 없는 코어는 EI 인덱스가 0이 아닌 경우 코어_sel에 수집된다.
그런 다음 알고리즘이 GDS 인덱스를 결정할 수 있다.
GDS 인덱스가 0이면 코어_sel에서 골든 데이터를 선택할 수 있음을 나타내고, GDS 인덱스가 1이면 해당 간격 동안 모든 코어가 에러가 있음을 의미한다. 또한, 골든 데이터는 DRAM에서 선택할 수 있다.
한편, EI 태그의 합이 n과 같은 경우 GDS 인덱스는 1로 해석될 수 있다.
그렇지 않은 경우에 GDS 인덱스는 0으로 해석될 수 있다. 먼저 코어_sel은 EI 인덱스가 '1'이고 GDS 인덱스가 '0'일 때만 할 수 있다. 또한, 코어_sel의 각 코어의 개수를 계산하여 최대 개수의 코어를 선택할 수 있다.
도 7은 디버그 세션 2에서 에러 사이클을 판단하기 위한 하드웨어 구조(700)를 설명하는 도면이다.
하드웨어 구조(700)를 살펴보면, 복수의 코어들(701)은 동일한 크기로 구현될 수 있다.
코어 선택기(702)는 에러 구간의 검출을 위한 코어를 선택하고, 선택된 코어로부터 데이터와 골든 데이터를 비교기들(703)을 통해 비교할 수 있다. 비교 결과, 에러라고 추정되는 데이터의 경우 EC 태그(704)를 통해 구분하고, 쉐도우 EC 태그(705)를 통해 저장할 수 있다. 이렇게 에러 구간이 저장될 수 있다.
디버그 프로세스가 시작되면 디버그 구성이 수행되고 태그 비트가 각 태그 레지스터에 업로드 된다. 또한, 추가되는 골든 데이터의 경우, 이들은 연속적인 클록 사이클 순서로 디버그 데이터와 비교돼야 하기 때문에 트레이스 버퍼(706)와 쉐도우 버퍼(707)에 차례로 업로드될 수 있다.
골든 데이터 스트림(GDS) 선택기(711)는 각 구간에 대한 에러없는 데이터를 선택하기 위해, GDS 태그(708)를 이용할 수 있다. GDS 태그는 GDS 인덱스와 코어 선택을 위한 코어_sel로 구성된 GDS 태그로 해석될 수 있다. 또한, GDS 인덱스는 골든 데이터를 선택하는 방법을 결정하고 코어_sel은 에러가 없는 선택된 코어 세트로 해석될 수 있다.
구체적으로, 에러가 없는 코어는 EI 인덱스가 0이 아닌 경우 코어_sel에 수집된다.
EI 태그(709)와 EI 인덱스(710)는 코어 선택기(702)의 입력으로 동작할 수 있는데, EI 태그(709)와 EI 인덱스(710)의 출력 조합에 따라서 복수의 코어들(701) 중에서 특정 코어를 선택할 수 있다.
도 8은 디버그 세션 2 후 태그 비트로 추출된 해당 결과를 통해 에러 사이클을 디버그 소프트웨어에서 분석하는 실시예(800)를 설명하는 도면이다.
실시예(800)에 따르면, 디버그 세션 2의 결과 태그 비트들(810), 즉 EI 태그들은 에러 구간 매트릭스(820)와, 에러 사이클 매트릭스(830)로 구분될 수 있다. 한편, 디버그 세션 2의 결과 태그 비트들(810)은 디버그 세션 3을 위한 EC 인덱스 및 EC 태그(840)로 표현될 수 있다.
구체적으로, EC 태그를 디버그 소프트웨어로 전송 한 후에는 세 번째 세션 동안 일련의 클록 사이클에서 모든 코어의 오류 데이터를 감지하기 위해 다시 생성될 수 있다. 첫째, 오류주기 행렬은 EC 태그와 오류 간격 행렬로 계산되며, MISR의 길이가 5이면 각 구간마다 4 × 5 오류주기 행렬이 생성된다.
이 행렬을 사용하면 EC 인덱스가 생성되는데, EC 인덱스는 해당 클록 사이클에서 적어도 하나의 코어가 오류가 있거나 없음을 나타낸다.
첫째, EI 인덱스가 '0'이면 해당 구간이 무시되고, '1'이면 필요한 EC 인덱스의 수는 M이다. EC 인덱스가 1이면 EC 태그가 n만큼 필요하며 오류 클록 행렬에 의해 다시 생성 될 수 있다. EC 인덱스가 '0'이면 주기가 무시될 수 있고, 이렇게 하면 EC 태그가 다시 생성될 수 있다.
도 9는 디버그 세션 3에서 에러 사이클을 캡쳐하기 위한 하드웨어 구조(900)를 설명하는 도면이다.
하드웨어 구조(900)를 살펴보면, 복수의 코어들(901)은 동일한 크기로 구현될 수 있다. 코어 선택기(902)는 에러 구간의 검출을 위한 코어를 선택하고, 트레이스 버퍼(903) 및 쉐도우 버퍼(904)를 통해 저장될 수 있다.
적재된 데이터들은 EC 태그(905), 쉐도우 EC 태그(906), EC 인덱스(907), 쉐도우 EC 인덱스(908), EI 인덱스(909)로 출력될 수 있다. 각각의 출력은 코어 선택기의 입력에 선택적으로 전달되어 복수의 코어들(901) 중에서 특정 코어를 선택하는 정보로 사용될 수 있다.
도 10 내지 도 12에서는 세션 1 내지 3에 대한 타이밍을 보다 구체적으로 설명한다.
도 10은 디버그 세션 1에 대한 타이밍(1000)을 나타내는 도면이다.
3번의 디버그 세션 동안 DRAM과 통신하는 방법을 보여주기 위해, 제안된 DfD 모듈의 동작은 첫 번째 세션에서 각 간격은 골든 시그니쳐와 비교하여 MISR 서명으로 압축되어 EI 인덱스 및 EI 태그 등록에서 캡쳐될 수 있다. EI 인덱스는 레지스터에 캡쳐되고 데이터 볼륨이 작기 때문에 디버그 세션 후에 워크 스테이션으로 오프로드 된다. 한편, 캡쳐된 EI 태그(n 비트)는 DRAM에 저장되고 다음 골든 시그니쳐(L 비트)는 DRAM에서 로드될 수 있다.
도 11은 디버그 세션 2에 대한 타이밍(1100)을 나타내는 도면이다.
두 번째 세션에서 오류가 있는 구간의 오류 코어는 골든 데이터 스트림과 비교되고 EC 태그 버퍼에 캡쳐될 수 있다. 캡쳐 프로세스는 M 사이클 동안 수행되기 때문에 쉐도우 EC 태그가 필요하다. 점선은 프로세스가 조건부로 수행됨을 의미하며, EI 인덱스가 0이면 에러 클럭 사이클 검출을 수행 할 필요가 없다.
EI 인덱스가 1이면 EI 태그에 의해 EC 태그가 선택적으로 캡쳐된다.
EC 태그 버퍼가 가득 차면 태그 비트가 그림자 비트로 이동할 수 있다. 일반적으로 캡쳐된 태그 비트의 양은 M 사이클마다 다르다. 그러나 두 번째 세션 전에 계산된 EI 태그 및 EI 지수로 EC 태그가 가득 찼을 때를 알 수 있다.
결과적으로, DfD 제어기는 시프트 타이밍을 결정할 수 있고, 이후의 데이터는 DRAM에 저장될 수 있다. 추가 골든 데이터가 다음 간격 동안 필요하면 차례로 추적 버퍼와 쉐도우 버퍼에 로드될 수 있다.
이 메커니즘을 사용하면 추가 골든 데이터가 시퀀스에 필요하지 않다. 그 후, EI 인덱스가 1이면 EI 태그가 로드될 수 있고, 다음 구간 동안 GDS 태그가 로드될 수 있다.
도 12는 디버그 세션 3에 대한 타이밍(1200)을 나타내는 도면이다.
세 번째 세션에서는 모든 코어의 오류 데이터가 추적 버퍼에 캡쳐 되고, 앞서 설명한 이유로 쉐도우 버퍼가 필요하다. 두 번째 세션과 마찬가지로, 트레이스 버퍼가 가득 차는 타이밍은 EI 인덱스, EC 인덱스 및 EC 태그에 의해 제어될 수 있다.
추적 버퍼가 가득차면 캡쳐된 데이터가 쉐도우 버퍼로 이동되어 DRAM에 저장될 수 있다. 마지막으로 EI 인덱스가 1이면 EC 인덱스와 EC 태그가 로드되고 EC 인덱스가 1일 때 디버그 데이터와 비교할 수 있도록 EC 태그가 제공되어, 필요한 데이터가 중복되는 것을 방지할 수 있다.
저장 및 로드 작업은 두 번째 및 세 번째 세션에서 불규칙하므로 보존된 시간 영역이 필요하며 위에서 설명한대로 태그 비트를 사용하여 결정할 수 있다.
또한, 세 번째 세션의 동작을 만족시키기 위해 n에 대한 제한이 있을 수 있다. 모든 코어가 매 사이클마다 오류가 있는 최악의 경우에 최소 보존 시간은 M / n 사이클이라고 가정할 수 있다. 따라서 최대 n은 쓰기 액세스 대기 시간으로 나눈 M보다 작다. 예를 들어, DRAM의 평균 액세스 대기 시간이 25ns이고 회로가 1GHz 주파수에서 수행되는 경우 M이 512 일 때 최대 n은 20이다.
도 13은 일실시예에 따른 포스트 실리콘의 디버그 장치(1300)를 설명하는 도면이다.
일실시예에 따른 포스트 실리콘의 디버그 장치(1300)는 세션 1 처리부(1310), 세션 2 처리부(1320), 및 세션 3 처리부(1330)를 포함할 수 있다.
일실시예에 따른 세션 1 처리부(1310)는 디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악할 수 있다.
일실시예에 따른 세션 1 처리부(1310)는 골든 데이터를 트레이스 버퍼에 업로드 하되, JTAG(Joint Test Action Group)를 포함하는 외부 인터페이스를 통해 업로드할 수 있다.
일실시예에 따른 세션 1 처리부(1310)는 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 상기 골든 데이터로 결정하고, 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 골든 데이터를 비교하며 에러 여부를 판단하며, 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록할 수 있다.
또한, 세션 1 처리부(1310)는 판단 결과 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록할 수 있다. 뿐만 아니라, 세션 1 처리부(1310)는 디버그 구간에 해당하는 골든 데이터를 MISR(Multiple Input Signature Register) 사이즈로 분할하여 압축하고, 분할 및 압축된 골든 데이터를 칩 내 디램(DRAM)에 저장할 수 있다. 세션 1 처리부(1310)는 파악된 에러 구간 내의 모든 코어가 에러인 경우, 디램(DRAM)에 생성된 골든 데이터를 추가할 수 있다.
일실시예에 따른 세션 2 처리부(1320)는 파악된 에러 구간들에 상응하는 에러 사이클을 검출할 수 있다. 세션 2 처리부(1320)는 사이클 별로 에러 사이클을 판별하여 태그 비트(EC tag) 형태로 저장하되, 쉐도우(shadow) 버퍼를 이용하여 판별된 에러 사이클을 저장할 수도 있다.
일실시예에 따른 세션 3 처리부(1330)는 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그할 수 있으며, 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 저장하고, 저장된 에러 데이터를 선별하여 디버그할 수 있다.
디버그 구성 모듈은 구성 단계에서 JTAG와 같은 추적 포트를 통해 제어될 수 있다. 이 모듈은 디버그 프로세스의 트리거 포인트를 제어하고 CUD 및 디버그 데이터를 선택할 수 있다. 또한 MISR 세트와 골든 레지스터는 첫 번째 세션을 위한 세션 1 처리부(1310)에 포함될 수 있다.
태그 비트 레지스터는 두 번째 및 세 번째 세션을 위한 처리부들(1320, 1330)에 포함될 수 있다. 이들 버퍼 및 태그 비트 레지스터는 전체의 디버그 세션 동안 하드웨어 영역 오버 헤드를 감소시키기 위해 재사용될 수 있다.
디버그 프로세스가 시작되면 FSM (Finite State Machine)이 수행되어 디버그 모듈을 제어하고 DRAM과 통신할 수 있다.
첫 번째 세션에서의 FSM은 EI 태그를 캡쳐하고 간격 카운터를 사용하여 DRAM 컨트롤러와 통신하는 타이밍을 제어할 수 있다. 두 번째 세션에서 FSM은 골든 데이터 스트림을 생성하기 위해 GDS 태그를 사용하여 GDS 선택기를 제어할 수 있다. 추가 골든 데이터가 필요한 경우 FSM은 DRAM에서 데이터를 로드하기 위해 추적 버퍼와 쉐도우 버퍼를 차례로 선택할 수 있다. 또한 FSM은 EC 태그를 캡쳐하고 EC 태그를 쉐도우 EC 태그로 이동하는 타이밍을 결정할 수 있다. EC 태그가 가득 찬 타이밍 정보는 두 번째 세션 전에 EI 태그를 사용하여 계산할 수 있으며 디버그 구성 단계에서 구성될 수 있다. 데이터를 쉐도우 EC 태그로 이동시킨 후 FSM은 앞서 설명한대로 DRAM 컨트롤러와 통신하기 위한 작업을 지원할 수 있다.
세션 3 처리부(1330)에서 FSM은 추적 버퍼에서 오류 데이터를 캡쳐하고 쉐도우 버퍼로 이동하고 DRAM과 통신하는 타이밍을 제어할 수 있다. 세션 2 처리부(1320) 및 세션 3 처리부(1330)의 동작을 만족시키기 위해, 보존된 시간 영역은 FSM 및 간격 카운터에 의해 제어될 수 있다.
DRAM에 데이터를 저장하기 위해 쉐도우 EC 인덱스와 EC 태그 및 쉐도우 버퍼 앞에 어댑터가 추가될 수 있다. 이 어댑터를 사용하면 인터페이스의 주파수가 CUD와 다르더라도 디버그 데이터를 메모리 인터페이스로 전송할 수 있다.
일실시예에 따른 포스트 실리콘의 디버그 장치(1300)는 확률 모델을 사용한 DRAM 사용 및 디버그 시간 분석이 가능하다.
확률 모델은 DfD 디자이너가 다양한 디버그 전략을 수립하고 DfD 모듈 크기를 결정하는데 활용될 수 있다.
확률 모델을 단순화하기 위해 모든 코어의 오류가 발생한다고 가정하며, 이 경우 Pi와 X (E [Xi])의 기대 값은 [수학식 1]과 같이 설명될 수 있다.
[수학식 1]
Figure pat00001
Figure pat00002
[수학식 1]에서, pi는 i 번째 코어의 오류 클록주기 확률로 해석될 수 있고, Pi는 i 번째 코어의 Pi 오류 간격 확률로 해석될 수 있다. Xi는 i 번째 코어의 잘못된 간격의 수로서 무작위 변수로 해석될 수 있다.
이전 방법은 오류 간격에 대한 디버그 데이터 만 저장하기 때문에 이전 방법에서 i 번째 세션의 DRAM 사용량은 [수학식 2]와 같이 계산될 수 있다.
[수학식 2]
Figure pat00003
Xi는 i 번째 코어의 잘못된 간격의 수로서 무작위 변수로 해석될 수 있고, DUprevi는 i 번째 세션의 DRAM 사용량 Tprev (prop) 디버그 시간으로 해석될 수 있다. S는 해당 오류 간격을 식별하는 타임 스탬프의 크기이고 LN / M은 DRAM에 저장된 골든 MISR 서명 수로 해석될 수 있다.
본 발명에서는 제안된 방법에서 각 세션마다 다른 DRAM 사용이 필요하고, DRAM 사용량을 계산하려면 E[Y], E[Z], E[Z']가 필요하다. 그들은 다음과 같이 설명될 수 있다.
먼저, E[Y]는 [수학식 3]을 통해 산출할 수 있다.
[수학식 3]
Figure pat00004
Pi는 i 번째 코어의 Pi 오류 간격 확률로 해석될 수 있다. Xi는 i 번째 코어의 잘못된 간격의 수로서 무작위 변수로 해석될 수 있다.
다음으로, E[Z]는 [수학식 4]을 통해 산출할 수 있다.
[수학식 4]
Figure pat00005
Pi는 i 번째 코어의 Pi 오류 간격 확률로 해석될 수 있다. Xi는 i 번째 코어의 잘못된 간격의 수로서 무작위 변수로 해석될 수 있다.
다음으로, E[Z']는 [수학식 5]을 통해 산출할 수 있다.
[수학식 5]
Figure pat00006
Pi는 i 번째 코어의 Pi 오류 간격 확률로 해석될 수 있다. Xi는 i 번째 코어의 잘못된 간격의 수로서 무작위 변수로 해석될 수 있다.
첫 번째 세션에서 골든 MISR 서명이 필요하며 EI 색인 및 EI 태그는 매 M 사이클마다 DRAM에 저장될 수 있고, 결과적으로, 첫 번째 세션에 대한 DRAM 사용은 [수학식 6]과 같이 설명 할 수 있다.
[수학식 6]
Figure pat00007
[수학식 6]에서 EI 지수는 N / M이고 EI 태그는 nE [Z]로 해석될 수 있다.
두 번째 세션에서는 GDS 태그, 추가 골든 데이터, EI 색인 및 EI 태그가 오류 클럭 주기를 감지하기 위해 DRAM에 업로드될 수 있다. GDS 태그(GDS tag) 및 추가 골든 데이터(additional golden data)는 [수학식 7]과 같이 설명될 수 있다.
[수학식 7]
Figure pat00008
Figure pat00009
GDS 태그, 추가 골든 데이터, EI 태그 및 EI 색인의 합계는 두 번째 세션을 시작하기 전에 업로드된 총 데이터 볼륨이다. 디버그 프로세스가 시작된 후 EC 태그는 매 M 사이클마다 DRAM에 저장될 수 있다.
따라서 두 번째 세션의 DRAM 사용은 [수학식 8]과 같이 설명될 수 있다.
[수학식 8]
Figure pat00010
[수학식 8]에서, 캡쳐된 EC 태그는 두 번째 세션 동안
Figure pat00011
의 볼륨이다. 즉, 구간 동안 모든 코어의 오류 발생 분포가 이항 분포를 따르고 각 Pi가 동일하다고 가정할 수 있다.
세 번째 세션에서는 모든 코어의 오류 데이터를 탐지하기 위해 EI 인덱스, EC 인덱스 및 EC 태그가 DRAM에 업로드될 수 있다. 앞서 설명한 것처럼 EC 태그가 다시 생성될 수 있고, 디버그 프로세스가 시작되면 모든 코어의 오류 데이터가 매 M 사이클마다 DRAM에 저장될 수 있다. 결과적으로 세 번째 세션의 DRAM 사용량은 다음과 같이 계산됩니다.
[수학식 9]
Figure pat00012
[수학식 9]에서, DRAM의 보존 영역은 디버그 프로세스를 수행하는데 필요하며 영역은 모든 세션에서 최대 DRAM 사용량 이상일 수 있다.
즉, 이전 및 제안 된 방법에 대한 DRAM 사용은 [수학식 10]과 같이 설명될 수 있다.
[수학식 10]
Figure pat00013
Figure pat00014
디버그 실행 시간을 계산하려면 온칩 샘플링 시간과 통신 시간이 필요하다.
온칩 샘플링 시간은 트리거 포인트에서부터 디버그 세션이 끝날 때까지 경과하는 클럭 사이클과 관련이 있는데, 기존에는 전체 온칩 샘플링 클럭 사이클은 nN이다. 그러나, 본 발명에서는 3N만이 요구된다.
또한 모든 코어에 오류가 없다고 가정하면, 첫 번째 세션만 필요하므로 N만 필요하다. 즉, 본 발명은 온-칩 샘플링 시간과 관련하여 디버그 시간을 상당히 줄일 수 있다.
통신 시간은 디버그 데이터가 추적 포트를 통해 업로드 되고 오프로드 되는 시간으로서, 이전 방법의 경우 골든 MISR 서명이 한 번 업로드 되고 각 세션의 오류 데이터와 해당 S가 모든 세션에서 오프로드될 수 있다.
반면에 본 발명에서는 3회의 세션 동안 DRAM 사용을 전송해야만 하고, 모든 코어에 오류가 없는 경우에는 세션 1의 DRAM 사용량만 전송할 수 있다.
결국, 본 발명을 이용하면 온 칩 DRAM을 사용하여 멀티코어 환경에서 포스트 실리콘 디버그 시 에러라고 추정되는 데이터만 선택적으로 디버깅하는 기술을 제공할 수 있다. 또한, MISR (Multiple Input Signature Register)를 이용하여 선택적으로 에러 구간을 압축하여 분석한 후 칩 내 존재하는 DRAM에 디버그 데이터를 저장함으로써, 기존 기술에 대비하여 단 세 번의 디버그 세션만에 디버그를 완료하게 함으로서 디버그 시간을 단축할 수 있다. 또한, 전체 디버그 시간을 단축함으로써, 전체 칩 제조시간을 줄임과 동시에 칩 양산을 위한 비용을 감소시킬 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
300: 포스트 실리콘의 디버그 방법
310: 디버그 세션 1
311: 골든 MISR 시그니쳐들 생성
312: 구간 검출의 캡쳐 결과
313: 에러 구간들 검출
320: 디버그 세션 2
321: GDS 태그 비트들 생성
322: 클록 사이클 검출의 캡쳐 결과
323: 에러 구간 태그 비트들 생성
330: 디버그 세션 3
331: 에러 사이클 태그 비트들 생성
332: 캡쳐 에러 데이터
333: 캡쳐된 데이터 디버그

Claims (16)

  1. 디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 단계;
    상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 단계; 및
    상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계
    를 포함하는 포스트 실리콘의 디버그 방법.
  2. 제1항에 있어서,
    상기 에러 구간들을 파악하는 단계는,
    상기 골든 데이터를 상기 트레이스 버퍼에 업로드 하되, JTAG(Joint Test Action Group)를 포함하는 외부 인터페이스를 통해 업로드 하는 단계
    를 포함하는 포스트 실리콘의 디버그 방법.
  3. 제1항에 있어서,
    상기 에러 구간들을 파악하는 단계는,
    상기 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 상기 골든 데이터로 결정하는 단계;
    상기 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 상기 골든 데이터를 비교하며 에러 여부를 판단하는 단계; 및
    상기 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록하는 단계
    를 포함하는 포스트 실리콘의 디버그 방법.
  4. 제3항에 있어서,
    상기 판단 결과 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록하는 단계
    를 더 포함하는 포스트 실리콘의 디버그 방법.
  5. 제3항에 있어서,
    상기 디버그 구간 중에서 에러 구간들을 파악하는 단계는,
    상기 디버그 구간에 해당하는 골든 데이터를 상기 MISR(Multiple Input Signature Register) 사이즈로 분할하여 압축하는 단계; 및
    상기 분할 및 압축된 골든 데이터를 칩 내 디램(DRAM)에 저장하는 단계
    를 포함하는 포스트 실리콘의 디버그 방법.
  6. 제1항에 있어서,
    상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계는,
    상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 저장하는 단계; 및
    상기 저장된 에러 데이터를 선별하여 디버그하는 단계
    를 포함하는 포스트 실리콘의 디버그 방법.
  7. 제1항에 있어서,
    상기 파악된 에러 구간 내의 모든 코어가 에러인 경우, 디램(DRAM)에 상기 생성된 골든 데이터를 추가하는 단계
    를 더 포함하는 포스트 실리콘의 디버그 방법.
  8. 제1항에 있어서,
    상기 에러 사이클을 검출하는 단계는,
    사이클 별로 에러 사이클을 판별하여 태그 비트(EC tag) 형태로 저장하되, 쉐도우(shadow) 버퍼를 이용하여 상기 판별된 에러 사이클을 저장하는 단계
    를 포함하는 포스트 실리콘의 디버그 방법.
  9. 디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 세션 1 처리부;
    상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 세션 2 처리부; 및
    상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 세션 3 처리부
    를 포함하는 포스트 실리콘의 디버그 장치.
  10. 제9항에 있어서,
    상기 세션 1 처리부는,
    상기 골든 데이터를 상기 트레이스 버퍼에 업로드 하되, JTAG(Joint Test Action Group)를 포함하는 외부 인터페이스를 통해 업로드 하는 단계
    를 포함하는 포스트 실리콘의 디버그 장치.
  11. 제9항에 있어서,
    상기 세션 1 처리부는,
    상기 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 상기 골든 데이터로 결정하고, 상기 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 상기 골든 데이터를 비교하며 에러 여부를 판단하며, 상기 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록하는 포스트 실리콘의 디버그 장치.
  12. 제11항에 있어서,
    상기 세션 1 처리부는,
    상기 판단 결과 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록하는 포스트 실리콘의 디버그 장치.
  13. 제11항에 있어서,
    상기 세션 1 처리부는,
    상기 디버그 구간에 해당하는 골든 데이터를 상기 MISR(Multiple Input Signature Register) 사이즈로 분할하여 압축하고, 상기 분할 및 압축된 골든 데이터를 칩 내 디램(DRAM)에 저장하는 포스트 실리콘의 디버그 장치.
  14. 제9항에 있어서,
    상기 세션 3 처리부는,
    상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 저장하고, 상기 저장된 에러 데이터를 선별하여 디버그하는 포스트 실리콘의 디버그 장치.
  15. 제9항에 있어서,
    상기 세션 1 처리부는,
    상기 파악된 에러 구간 내의 모든 코어가 에러인 경우, 디램(DRAM)에 상기 생성된 골든 데이터를 추가하는 포스트 실리콘의 디버그 장치.
  16. 제9항에 있어서,
    상기 세션 2 처리부는,
    사이클 별로 에러 사이클을 판별하여 태그 비트(EC tag) 형태로 저장하되, 쉐도우(shadow) 버퍼를 이용하여 상기 판별된 에러 사이클을 저장하는 포스트 실리콘의 디버그 장치.
KR1020170013806A 2017-01-31 2017-01-31 온 칩 dram을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법 KR101958540B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170013806A KR101958540B1 (ko) 2017-01-31 2017-01-31 온 칩 dram을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170013806A KR101958540B1 (ko) 2017-01-31 2017-01-31 온 칩 dram을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180089121A true KR20180089121A (ko) 2018-08-08
KR101958540B1 KR101958540B1 (ko) 2019-03-14

Family

ID=63230241

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170013806A KR101958540B1 (ko) 2017-01-31 2017-01-31 온 칩 dram을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101958540B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966622B2 (en) 2021-08-17 2024-04-23 Samsung Electronics Co., Ltd. Memory storage device, an operation method of the memory storage device, test method and electronic device

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102483739B1 (ko) 2021-07-13 2022-12-30 연세대학교 산학협력단 Bira cam 구조를 재활용한 dram 기반 포스트 실리콘 디버깅 방법 및 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200805065A (en) 2006-01-17 2008-01-16 Nxp Bv Region protection unit, instruction set and method for protecting a memory region
US20130326281A1 (en) * 2012-06-01 2013-12-05 Syntest Technologies, Inc. X-Tracer: A Reconfigurable X-Tolerance Trace Compressor for Silicon Debug

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966622B2 (en) 2021-08-17 2024-04-23 Samsung Electronics Co., Ltd. Memory storage device, an operation method of the memory storage device, test method and electronic device

Also Published As

Publication number Publication date
KR101958540B1 (ko) 2019-03-14

Similar Documents

Publication Publication Date Title
US10732221B2 (en) Signal tracing using on-chip memory for in-system post-fabrication debug
Anis et al. Low cost debug architecture using lossy compression for silicon debug
JP4233893B2 (ja) データ処理システムにおける命令のトレーシング
US8892973B2 (en) Debugging control system using inside core event as trigger condition and method of the same
JP6653756B2 (ja) 回路設計をデバッグするための方法および回路
US7930165B2 (en) Procedure and device for emulating a programmable unit providing system integrity control
US20220066909A1 (en) Waveform based reconstruction for emulation
US20050267732A1 (en) Method of visualization in processor based emulation system
KR101958540B1 (ko) 온 칩 dram을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법
CN117454811A (zh) 待测设计的验证方法及装置
CN102855338A (zh) 现场可编程门阵列原型验证装置及验证方法
JPWO2008038617A1 (ja) 信号選択装置、回路修正装置、回路シミュレータ、回路エミュレータ、信号選択方法およびプログラム
Oh et al. An on-chip error detection method to reduce the post-silicon debug time
US5801972A (en) Individual test program producing system
US8359503B2 (en) Method and system for generating an integrated circuit chip facility waveform from a series of chip snapshots
Oh et al. DRAM-based error detection method to reduce the post-silicon debug time for multiple identical cores
Fang et al. Ranking of suspect faulty blocks using dataflow analysis and dempster-shafer theory for the diagnosis of board-level functional failures
US11755804B2 (en) Hybrid synchronous and asynchronous control for scan-based testing
US11442106B2 (en) Method and apparatus for debugging integrated circuit systems using scan chain
US8392860B1 (en) Identifying speed binning test vectors during simulation of an integrated circuit design
KR101943715B1 (ko) SoC의 오류를 검사하는 장치
CN115629962A (zh) 基于软件自测试的千核片上网络并行在线测试方法
TW202209035A (zh) 時脈死結檢測系統、方法以及非暫態電腦可讀取媒體
Neishaburi et al. On post-silicon root-cause analysis and debug using enhanced hierarchical triggers
US7650582B2 (en) Circuit analysis device allowing more accurate analysis of signal propagation delay in circuit representation of a highly abstract level

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right