KR101958540B1 - Apparatus and method of debugging post silicon using on-chip dram for multi-core design - Google Patents

Apparatus and method of debugging post silicon using on-chip dram for multi-core design Download PDF

Info

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

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

Abstract

본 발명은 온 칩 DRAM을 사용하여 멀티코어 환경에서 포스트 실리콘 디버그 시 에러라고 추정되는 데이터만 선택적으로 디버깅하는 기술로서, 일실시예에 따른 포스트 실리콘의 디버그 방법은 디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 단계, 상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 단계, 및 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계를 포함할 수 있다.The present invention relates to a technique for selectively debugging only data estimated to be an error in post silicon debugging in a multicore environment using an on-chip DRAM, wherein a method of debugging post silicon according to an embodiment includes: The method of claim 1, further comprising the steps of: generating golden data corresponding to the detected error intervals and uploading the generated golden data to a trace buffer to identify error intervals in the debug interval; And selectively debugging the error data corresponding to the error cycle.

Figure R1020170013806
Figure R1020170013806

Description

온 칩 DRAM을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법{APPARATUS AND METHOD OF DEBUGGING POST SILICON USING ON-CHIP DRAM FOR MULTI-CORE DESIGN}BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a post-silicon debug apparatus and method in a multi-core environment using an on-chip DRAM,

본 발명은 포스트 실리콘의 디버그를 위한 기술로서, 온 칩 DRAM을 사용하여 멀티코어 환경에서 포스트 실리콘 디버그 시 에러라고 추정되는 데이터만 선택적으로 디버깅하는 기술적 사상에 관한 것이다.The present invention relates to a technique for debugging post silicon, and a technical idea of selectively debugging only data estimated to be error in post silicon debug in a multicore environment using an on-chip DRAM.

최근 반도체 설계 및 공정기술이 발달함에 따라 제조 공정 전 설계 단계에서 발견하지 못하는 에러의 양이 점점 늘어나고 있다. 또한 설계의 집적도 향상을 위해 개발되는 SoC (system on chip)과 같은 반도체는 하나의 칩 안에 많은 수의 코어가 포함되어 있으며 이에 따라 더 높은 반도체 수율과 비용 절감을 위해 이러한 에러들을 하드웨어 디버그를 통해 잡아내는 과정이 필요하게 되었다.Recently, with the development of semiconductor design and process technology, the amount of error that can not be found in the design stage before the manufacturing process is increasing more and more. Semiconductors such as system on chips (SoCs), which are developed to improve the integration of designs, include a large number of cores in a single chip, which can be handled by hardware debugging to achieve higher semiconductor yields and cost savings. The process of dispatching became necessary.

이 과정에서 가장 큰 제약 사항은 디버그를 위해 칩 내부의 데이터들을 실시간으로 관찰하는 데 어려움이 따른다는 점이다. 이를 극복하기 위해 최근 트레이스 버퍼를 이용하여 칩 내부 데이터를 실시간으로 저장하고 저장된 데이터를 JTAG (Joint Test Action Group)과 같은 외부 인터페이스를 통해 외부에서 꺼내어 분석하는 DfD (Design for Debug) 방식이 연구되고 있다.The biggest limitation in this process is that it is difficult to observe the data inside the chip in real time for debugging. In order to overcome this problem, recently, a DfD (Design for Debug) method has been studied in which chip internal data is stored in real time using a trace buffer and stored data is extracted from an external interface through an external interface such as JTAG (Joint Test Action Group) .

즉, 회로 검증 및 테스트 이후 발생할 수 있는 에러들을 검출해 내기 위해 포스트 실리콘 단계의 디버그 과정이 필요하며 이러한 디버그 과정을 돕기 위해 디버그를 위한 DfD (Design for Debug) 기술이 제시되고 있다. 이는 실시간으로 반도체 내 데이터를 관찰하기 위해서 현재 제시되고 있는 기술로서, 이러한 DfD 기술은 트레이스 버퍼를 이용한 임베디드 로직 분석 기술에 해당한다.That is, a debug process of the post silicon stage is required to detect errors that may occur after circuit verification and testing, and a Design for Debug (DfD) technique for debugging is proposed to assist the debug process. This is a technique currently proposed for observing data in a semiconductor in real time, and this DfD technique corresponds to an embedded logic analysis technique using a trace buffer.

이러한 해당 기술을 이용하는 유닛은 내부 회로 상태의 관찰 시작점 또는 끝점을 결정하고, 관찰이 시작되면 디버그 데이터들은 트레이스 버퍼(임베디드 된 메모리)를 포함한 샘플 유닛에 해당 데이터들을 저장하며, 디버그 과정이 끝나면 저장된 데이터를 오프로드 유닛을 통해 외부 디버그 소프트웨어로 뽑아내어 데이터를 분석하는 과정을 거친다.A unit using this technique determines an observation start point or an end point of an internal circuit state, and when the observation is started, the debug data stores corresponding data in a sample unit including a trace buffer (embedded memory) To the external debug software through an off-load unit, and analyzes the data.

이러한 기술은 실시간으로 데이터를 추출하여 분석해낼 수 있다는 장점이 있으나 관찰 가능한 데이터의 수가 트레이스 버퍼의 용량에 제한되어 있다는 단점이 있다. 따라서 이를 극복하기 위해 칩 내 존재하는 DRAM을 적극적으로 활용하고 관찰하는 디버그 데이터를 MISR와 같은 테스트에서 사용되는 압축기법을 이용하여 에러 구간과 에러 사이클을 단계적으로 비교 및 압축하는 방식으로 디버그를 진행하고 있다.This technique has the advantage of extracting and analyzing data in real time, but the disadvantage is that the number of observable data is limited by the capacity of the trace buffer. In order to overcome this problem, the debug data is actively utilized and observed in the chip, and debugging is performed by comparing and compressing the error section and the error cycle step by step using the compression technique used in the test such as MISR have.

하지만 관찰을 위해 실시간으로 저장 가능한 데이터양은 트레이스 버퍼 사이즈와 비례하고 이는 하드웨어 오버헤드 비용으로 직결되기 때문에 수십 수백만 관찰 사이클이 요구되는 하드웨어 디버그에서 이러한 방식은 많은 디버그 동작이 필요하게 되고 이는 결국 많은 하드웨어 디버그 시간을 야기하게 된다. 따라서, 디버그 시간 단축을 위한 기술이 필요한 실정이다.However, since the amount of data that can be stored in real time for observation is directly proportional to the trace buffer size, which is directly related to the hardware overhead cost, this method requires a lot of debugging operations in hardware debug where tens of millions of observation cycles are required. Time. Therefore, a technique for shortening the debug time is needed.

도 1은 종래의 DRAM에서의 디버그 방식을 설명하는 도면이다.1 is a view for explaining a debug method in a conventional DRAM.

도 1에서 보는 바와 같이, 기존의 DRAM을 이용한 방식은 한번의 디버그 세션에 하나의 코어만을 고려하였기 때문에 여러 코어를 고려할 경우에는 해당 코어의 개수만큼의 세션이 통상적으로 필요하다. 이는 칩 내 집적되는 코어의 수가 늘어가는 추세인 현재 반도체 기술 상황에서 전체 디버그 시간을 늘리게 되는 요인이 된다.As shown in FIG. 1, in the conventional DRAM method, only one core is considered in one debug session. Therefore, when considering a plurality of cores, a session corresponding to the number of cores is usually required. This increases the total debug time in the current semiconductor technology situation, which is an increasing trend of the number of integrated cores in the chip.

한국등록특허 제10-1430218호 "디버그 상태 기계 및 이를 포함하는 프로세서"Korean Patent No. 10-1430218 entitled "Debug State Machine and Processor Including It" 미국등록특허 제10- 08990622호 "Post-silicon validation using a partial reference model"U.S. Patent No. 10-8990622 entitled "Post-silicon validation using a partial reference model &

본 발명은 온 칩 DRAM을 사용하여 멀티코어 환경에서 포스트 실리콘 디버그 시 에러라고 추정되는 데이터만 선택적으로 디버깅하는 기술을 제공하는 것을 목적으로 한다.An object of the present invention is to provide a technique for selectively debugging only data estimated to be an error in post silicon debugging in a multicore environment using an on-chip DRAM.

본 발명은 MISR (Multiple Input Signature Register)를 이용하여 선택적으로 에러 구간을 압축하여 분석한 후 칩 내 존재하는 DRAM에 디버그 데이터를 저장함으로써, 기존 기술에 대비하여 단 세 번의 디버그 세션만에 디버그를 완료하게 함으로서 디버그 시간을 단축하는 것을 목적으로 한다.The present invention compresses and analyzes an error section selectively using a MISR (Multiple Input Signature Register), stores debug data in a DRAM existing in the chip, and debugs only three debug sessions To reduce the debug time.

본 발명은 전체 디버그 시간을 단축함으로써, 전체 칩 제조시간을 줄임과 동시에 칩 양산을 위한 비용을 감소하는 것을 목적으로 한다.The present invention aims at shortening the total debug time, thereby reducing the total chip manufacturing time and reducing the cost for chip production.

일실시예에 따른 포스트 실리콘의 디버그 방법은 디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 단계, 상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 단계, 및 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계를 포함할 수 있다.The method of debugging post silicon according to an exemplary embodiment includes generating golden data corresponding to a debug section based on a simulation before debug starts and uploading the generated golden data to a trace buffer to identify error intervals in the debug section , Detecting an error cycle corresponding to the identified error intervals, and selectively debugging the error data corresponding to the detected error cycle.

일실시예에 따른 상기 에러 구간들을 파악하는 단계는, 상기 골든 데이터를 상기 트레이스 버퍼에 업로드 하되, JTAG(Joint Test Action Group)를 포함하는 외부 인터페이스를 통해 업로드 하는 단계를 포함할 수 있다.The step of recognizing the error intervals according to an embodiment may include uploading the golden data to the trace buffer, and uploading the golden data through an external interface including Joint Test Action Group (JTAG).

일실시예에 따른 상기 에러 구간들을 파악하는 단계는, 상기 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 상기 골든 데이터로 결정하는 단계, 상기 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 상기 골든 데이터를 비교하며 에러 여부를 판단하는 단계, 및 상기 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록하는 단계를 포함할 수 있다.The step of recognizing the error intervals according to an exemplary embodiment may include determining data corresponding to a period that is estimated to be not an error through the simulation as the golden data, performing a MISR (Multiple Input Signature Register) The method includes the steps of: determining whether an error is detected by comparing an interval that is an error in real time with the golden data by using a 1-bit EI tag And recording the data.

일실시예에 따른 포스트 실리콘의 디버그 방법은 상기 판단 결과 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록하는 단계를 더 포함할 수 있다.The method of debugging post silicon according to an exemplary embodiment may further include the step of recording, using the index (EI index), an interval in which no error occurs as a result of the determination.

일실시예에 따른 상기 디버그 구간 중에서 에러 구간들을 파악하는 단계는, 상기 디버그 구간에 해당하는 골든 데이터를 상기 MISR(Multiple Input Signature Register) 사이즈로 분할하여 압축하는 단계, 및 상기 분할 및 압축된 골든 데이터를 칩 내 디램(DRAM)에 저장하는 단계를 포함할 수 있다.The step of determining error intervals in the debug interval according to an exemplary embodiment of the present invention includes dividing and dividing the golden data corresponding to the debug interval into MISR (Multiple Input Signature Register) sizes and dividing the divided and compressed golden data To a DRAM in a chip (DRAM).

일실시예에 따른 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계는, 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 저장하는 단계, 및 상기 저장된 에러 데이터를 선별하여 디버그하는 단계를 포함할 수 있다.The step of selectively debugging the error data corresponding to the detected error cycle according to an exemplary embodiment may include selectively storing error data corresponding to the detected error cycle, And a step of debugging.

일실시예에 따른 포스트 실리콘의 디버그 방법은 상기 파악된 에러 구간 내의 모든 코어가 에러인 경우, 디램(DRAM)에 상기 생성된 골든 데이터를 추가하는 단계를 더 포함할 수 있다.The method of debugging post silicon according to an embodiment may further include adding the generated golden data to a DRAM when all the cores within the identified error period are in error.

일실시예에 따른 상기 에러 사이클을 검출하는 단계는, 사이클 별로 에러 사이클을 판별하여 태그 비트(EC tag) 형태로 저장하되, 쉐도우(shadow) 버퍼를 이용하여 상기 판별된 에러 사이클을 저장하는 단계를 포함할 수 있다.The step of detecting the error cycle according to an exemplary embodiment of the present invention includes the steps of determining an error cycle for each cycle and storing the error cycle in the form of an EC tag and storing the determined error cycle using a shadow buffer .

일실시예에 따른 포스트 실리콘의 디버그 장치는 디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 세션 1 처리부, 상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 세션 2 처리부, 및 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 세션 3 처리부를 포함할 수 있다.The post silicon debug apparatus according to an embodiment generates golden data corresponding to a debug section based on a simulation before the start of debugging and uploads the generated golden data to the trace buffer to identify error sections in the debug section A session 2 processor for detecting an error cycle corresponding to the detected error intervals, and a session 3 processor for selectively debugging the error data corresponding to the detected error cycle.

일실시예에 따른 상기 세션 1 처리부는, 상기 골든 데이터를 상기 트레이스 버퍼에 업로드 하되, JTAG(Joint Test Action Group)를 포함하는 외부 인터페이스를 통해 업로드 하는 단계를 포함할 수 있다.The session 1 processor according to an exemplary embodiment may include uploading the golden data to the trace buffer, and uploading the golden data through an external interface including Joint Test Action Group (JTAG).

일실시예에 따른 상기 세션 1 처리부는, 상기 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 상기 골든 데이터로 결정하고, 상기 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 상기 골든 데이터를 비교하며 에러 여부를 판단하며, 상기 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록할 수 있다.The session 1 processing unit according to an exemplary embodiment determines data corresponding to a section expected to be not an error through the simulation as the golden data and compresses the data through a Multiple Input Signature Register (MISR) It is possible to compare an erroneous section in real time with the golden data and judge whether an error has occurred. As a result of the determination, the erroneous data can be recorded using a 1-bit EI tag.

일실시예에 따른 상기 세션 1 처리부는, 상기 판단 결과 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록할 수 있다.The session 1 processing unit according to an exemplary embodiment may record an interval in which no error occurs as a result of the determination using an index (EI index).

일실시예에 따른 상기 세션 1 처리부는, 상기 디버그 구간에 해당하는 골든 데이터를 상기 MISR(Multiple Input Signature Register) 사이즈로 분할하여 압축하고, 상기 분할 및 압축된 골든 데이터를 칩 내 디램(DRAM)에 저장할 수 있다.The session 1 processing unit divides the golden data corresponding to the debug interval into the MISR (Multiple Input Signature Register) size, compresses the divided and compressed golden data into a DRAM Can be stored.

일실시예에 따른 상기 세션 3 처리부는, 상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 저장하고, 상기 저장된 에러 데이터를 선별하여 디버그할 수 있다.The session 3 processor according to an exemplary embodiment may selectively store error data corresponding to the detected error cycle, and may selectively debug the stored error data.

일실시예에 따른 상기 세션 1 처리부는, 상기 파악된 에러 구간 내의 모든 코어가 에러인 경우, 디램(DRAM)에 상기 생성된 골든 데이터를 추가할 수 있다.The session 1 processor according to an exemplary embodiment may add the generated golden data to a DRAM when all the cores in the identified error interval are in error.

일실시예에 따른 상기 세션 2 처리부는, 사이클 별로 에러 사이클을 판별하여 태그 비트(EC tag) 형태로 저장하되, 쉐도우(shadow) 버퍼를 이용하여 상기 판별된 에러 사이클을 저장할 수 있다.The session 2 processor according to an exemplary embodiment may determine an error cycle on a cycle-by-cycle basis, store the error cycle in the form of an EC tag, and store the determined error cycle using a shadow buffer.

일실시예에 따르면, 온 칩 DRAM을 사용하여 멀티코어 환경에서 포스트 실리콘 디버그 시 에러라고 추정되는 데이터만 선택적으로 디버깅하는 기술을 제공할 수 있다.According to one embodiment, an on-chip DRAM can be used to provide a technique for selectively debugging only data estimated to be error in post silicon debug in a multicore environment.

일실시예에 따르면, MISR (Multiple Input Signature Register)를 이용하여 선택적으로 에러 구간을 압축하여 분석한 후 칩 내 존재하는 DRAM에 디버그 데이터를 저장함으로써, 기존 기술에 대비하여 단 세 번의 디버그 세션만에 디버그를 완료하게 함으로서 디버그 시간을 단축할 수 있다.According to an exemplary embodiment, an error section is selectively compressed and analyzed using a MISR (Multiple Input Signature Register), and debug data is stored in a DRAM existing in the chip. Thus, only three debug sessions Debug time can be shortened by completing the debug.

일실시예에 따르면, 전체 디버그 시간을 단축함으로써, 전체 칩 제조시간을 줄임과 동시에 칩 양산을 위한 비용을 감소시킬 수 있다.According to one embodiment, by shortening the total debug time, it is possible to reduce the total chip manufacture time and at the same time reduce the cost for chip production.

도 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 is a view for explaining a debug method in a conventional DRAM.
2 is a diagram for explaining a debug method according to an embodiment of the present invention.
3 is a diagram for explaining a method of debugging post silicon using a debug session in three stages.
FIG. 4 is a view for explaining an embodiment of a hardware structure for determining an error interval in debug session 1. FIG.
5 is a view for explaining an embodiment in which debug software analyzes an error section through a corresponding result extracted by a tag bit after execution of debug session 1.
6 is a view for explaining a golden data stream selector for generating golden data in real time in the debug session 2.
7 is a diagram illustrating a hardware structure for determining an error cycle in the debug session 2.
FIG. 8 is a view for explaining an embodiment in which the debug software analyzes the error cycle through a corresponding result extracted by the tag bit after the debug session 2.
9 is a diagram for explaining a hardware structure for capturing an error cycle in the debug session 3;
10 is a timing chart for debug session 1.
11 is a timing diagram for debug session 2.
Fig. 12 is a diagram showing the timing for debug session 3. Fig.
13 is a view for explaining a post silicon debug device according to an embodiment.

본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.It is to be understood that the specific structural or functional descriptions of embodiments of the present invention disclosed herein are presented for the purpose of describing embodiments only in accordance with the concepts of the present invention, May be embodied in various forms and are not limited to the embodiments described herein.

본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Embodiments in accordance with the concepts of the present invention are capable of various modifications and may take various forms, so that the embodiments are illustrated in the drawings and described in detail herein. However, it is not intended to limit the embodiments according to the concepts of the present invention to the specific disclosure forms, but includes changes, equivalents, or alternatives falling within the spirit and scope of the present invention.

제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.The terms first, second, or the like may be used to describe various elements, but the elements should not be limited by the terms. The terms may be named for the purpose of distinguishing one element from another, for example without departing from the scope of the right according to the concept of the present invention, the first element being referred to as the second element, Similarly, the second component may also be referred to as the first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between. Expressions that describe the relationship between components, for example, "between" and "immediately" or "directly adjacent to" should be interpreted as well.

본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, the terms "comprises ", or" having ", and the like, are used to specify one or more of the features, numbers, steps, operations, elements, But do not preclude the presence or addition of steps, operations, elements, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the meaning of the context in the relevant art and, unless explicitly defined herein, are to be interpreted as ideal or overly formal Do not.

이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. However, the scope of the patent application is not limited or limited by these embodiments. Like reference symbols in the drawings denote like elements.

도 2는 본 발명의 일실시예에 따른 디버그 방식을 설명하는 도면이다.2 is a diagram for explaining a debug method according to an embodiment of the present invention.

본 발명의 일실시예에 따른 디버그 방식(200)은 여러 코어를 디버깅 해야 하는 경우 전체 디버그 세션을 세 번 만에 끝낼 수 있다.The debug method 200 according to an exemplary embodiment of the present invention may end the entire debug session three times in case of debugging a plurality of cores.

첫 번째 디버그 세션(세션 1)은 각 코어의 에러인 구간을 찾아낼 수 있는 에러 구간 탐색 세션으로 진행되며 그 후 에러인 구간을 골든 데이터와 실시간으로 비교하여 에러인 사이클을 구체적으로 찾아낼 수 있는 에러 사이클 탐색 세션(세션 2)이 진행된다. 마지막으로는 세션 3이 진행될 수 있는데, 이는 각 코어의 에러 사이클에 해당하는 데이터를 저장하는 에러 데이터 캡쳐 세션으로 전체 디버그 과정을 마무리할 수 있다.The first debug session (Session 1) proceeds to an error section search session in which an error section of each core can be found. Then, an error section is compared with the golden data in real time, An error cycle search session (session 2) proceeds. Finally, Session 3 can proceed, which can complete the entire debug process with an error data capture session that stores data corresponding to the error cycle of each core.

도 3은 3단계의 디버그 세션을 이용하는 포스트 실리콘의 디버그 방법(300)을 설명하는 도면이다.FIG. 3 is a diagram for explaining a debug method 300 of post silicon using a three-step debug session.

먼저, 포스트 실리콘의 디버그 방법(300)은 디버그 세션 1(310)을 통해 디버그 구간 중에서 에러 구간들을 파악할 수 있다.First, the post silicon debug method 300 can determine error intervals in the debug section through the debug session 1 (310).

구체적으로, 포스트 실리콘의 디버그 방법(300)은 골든 MISR 시그니쳐(signatures)들을 생성(311)할 수 있다. 예를 들어, 디버그 시작 전에 관찰 구간을 MISR를 통해 MISR 사이즈만큼 나누어 압축함으로써, 골든 MISR 시그니쳐(signatures)들을 생성할 수 있다.Specifically, the debug method 300 of post silicon can generate (311) golden MISR signatures. For example, you can create golden MISR signatures by compressing the observation interval by dividing it by the MISR size through the MISR before debugging begins.

또한, 포스트 실리콘의 디버그 방법(300)은 구간 검출의 캡쳐 결과(312)를 생성하고, 이를 통해 에러 구간들을 검출(313)할 수 있다.In addition, the post silicon debug method 300 may generate the capture results 312 of the region detection and thereby detect (313) error regions.

즉, 포스트 실리콘의 디버그 방법(300)은 골든 데이터를 칩 내 DRAM에 저장할 수 있다. 이때, 디버그를 진행하면서 각 코어의 실제 디버그 값과 골든 데이터를 비교기를 통해 실시간으로 비교하여 서로 데이터의 값이 다른 경우 해당 코어의 해당 디버그 구간을 에러로 간주하며 이 결과값을 1비트의 태그 비트 형태 (EI tag)로 저장할 수 있다.That is, the post silicon debug method 300 can store the golden data in the in-chip DRAM. At this time, while debugging, the actual debug value and the golden data of each core are compared in real time through the comparator, and when the data values are different from each other, the corresponding debug interval of the corresponding core is regarded as an error, (EI tag).

일실시예에 따른 포스트 실리콘의 디버그 방법(300)은 에러 구간들을 파악하기 위해, 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 골든 데이터로 결정할 수 있다.The method 300 for debugging post silicon according to an exemplary embodiment may determine data corresponding to a section that is predicted to be not an error through simulation by using golden data in order to grasp error intervals.

또한, 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 골든 데이터를 비교하며 에러 여부를 판단할 수 있다. 한편, 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록함으로써, 에러 구간들을 검출할 수 있다.In addition, during debugging, it is possible to determine whether there is an error by comparing the error section and the golden data in real time by compressing the data through the MISR (Multiple Input Signature Register). On the other hand, as a result of the determination, it is possible to detect error sections by recording the data in which an error occurs by using a 1-bit EI tag.

한편, 포스트 실리콘의 디버그 방법(300)은 디버그 세션 1에서 EI 인덱스 태그 비트를 추가적으로 저장할 수 있다. 구체적으로, 포스트 실리콘의 디버그 방법(300)은 구간 검출의 캡쳐 결과를 이용하여 에러 구간들을 검출하되, 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록할 수 있다. 즉, 해당 구간에서 모든 코어의 데이터가 에러가 아닌 경우를 구분하기 위해 EI 인덱스라는 태그 비트를 추가적으로 두어 저장한다.On the other hand, the post silicon debug method 300 may additionally store the EI index tag bits in the debug session 1. Specifically, the debug method 300 of the post silicon can detect the error intervals using the capture result of the interval detection, and can record the interval in which the error does not occur using the index (EI index). That is, a tag bit called an EI index is additionally stored in order to distinguish a case where data of all cores is not an error in the corresponding interval.

첫 번째 디버그 세션에서 모든 디버그 중인 코어인 CUD(Core Under Debug)의 에러 구간은 MISR 기반 압축 기술로 감지됩니다. 이 기술은 포스트 실리콘 디버그 동안 에러가 발생한 구간을 식별하는데 사용되었다. In the first debug session, the error section of core under debug (CUD), which is the core being debugged at all, is detected by MISR-based compression technology. This technique was used to identify the section where an error occurred during post silicon debug.

먼저, 골든 MISR 시그니쳐(signatures)는 동작 모델을 시뮬레이션 하거나 FPGA 프로토 타이핑 보드를 사용하여 생성될 수 있다. 세 번째 세션에서 디버그 데이터를 캡쳐 하려면 MISR의 길이가 M 사이클로 결정될 수 있다.First, golden MISR signatures can be generated by simulating motion models or using an FPGA prototyping board. To capture debug data in the third session, the length of the MISR can be determined as M cycles.

그런 다음 사전 계산된 골든 시그니쳐가 직렬의 외부 인터페이스(예: JTAG) 또는 고속 추적 포트를 통해 DRAM으로 업로드될 수 있다.The pre-calculated golden signature can then be uploaded to the DRAM via a serial external interface (such as JTAG) or a high-speed trace port.

단계 313에서 디버그 프로세스가 시작되면 디버그 구성이 수행되어 트리거 이벤트 조건을 설정하고 디버그 데이터를 선택할 수 있다. 또한, 골든 시그니쳐는 DRAM의 골든 시그니쳐 레지스터에 로드될 수 있는데, 기능적 동작이 시작된 후, 각 CUD의 디버그 데이터는 골든 시그니쳐의 간격과 동일한 M 사이클 동안 설정된 MISR에 의해 압축될 수 있다.When the debug process is started in step 313, a debug configuration is performed to set a trigger event condition and select debug data. In addition, the golden signature can be loaded into the DRAM's golden signature register, and after the functional operation is started, the debug data of each CUD can be compressed by the MISR set for M cycles equal to the interval of the golden signature.

M 사이클 후에, 시그니쳐는 에러가 발생한 구간을 검출하기 위해 코어의 데이터를 골든 데이터와 비교한다. 코어의 시그니쳐 값이 골든 데이터와 동일한 경우에 이 코어의 현재 구간에는 에러가 없다고 판단할 수 있다.After M cycles, the signature compares the data in the core to the golden data to detect the section in which the error occurred. If the signature value of the core is the same as the golden data, it can be determined that there is no error in the current section of the core.

그렇지 않은 경우, 현재의 구간은 에러 구간으로 걸출할 수 있다. 모든 코어의 간격 에러 검출 결과를 확인하려면 1 비트가 필요하다.Otherwise, the current interval can be expressed as an error interval. One bit is required to check the gap error detection result of all cores.

예를 들어, 1비트의 값이 '1'이면 해당 간격 동안 하나 이상의 코어가 잘못되었음을 나타내고 '0'이면 모든 코어가 모든 코어에 에러가 없는 구간임을 나타낼 수 있다.For example, if the value of one bit is '1', it indicates that one or more cores are erroneous during the interval and if it is '0', all cores can indicate that there is no error in all cores.

본 명세서에서 상기 1 비트는 EI 인덱스(EI index)로 해석될 수 있다.In the present specification, the 1 bit can be interpreted as an EI index.

즉, EI 인덱스가 '1'이면 EI 태그로 불리는 n 비트를 EI 태그 레지스터에 저장하여 각 코어의 인터벌 검출 결과를 확인하고, EI 인덱스가 '0'이면 EI 태그를 캡쳐 할 필요가 없다.That is, if the EI index is '1', n bits called an EI tag are stored in the EI tag register to check the interval detection result of each core. If the EI index is '0', there is no need to capture the EI tag.

캡쳐 프로세스 후 EI 태그는 다음 간격 감지 프로세스가 끝나기 전에 DRAM에 저장될 수 있다. 그 후, 다음 번의 골든 시그니쳐가 로딩되고 디버그 데이터는 이러한 방식으로 N 사이클 동안 분석될 수 있다.After the capture process, the EI tag can be stored in the DRAM before the next interval sensing process is finished. The next golden signature is then loaded and the debug data can be analyzed for N cycles in this manner.

첫 번째 세션(디버그 세션 1, 310)이 끝나면 DRAM의 EI 태그와 레지스터의 EI 인덱스가 워크 스테이션, 즉 오프-칩(Off-chip)으로 전송되고 분석되어 두 번째 세션(디버그 세션 2, 320)의 태그 비트가 생성될 수 있다.At the end of the first session (debug session 1, 310), the EI tag of the DRAM and the EI index of the register are transmitted to the workstation, that is, off-chip, A tag bit can be generated.

태그비트 저장 방식을 통해 해당 관찰 구간 동안 에러 구간을 선별적으로 구별해 낼 수 있다. 이에 대한 하드웨어 구조는 이후 도 4에서 상세히 설명한다.The error section can be selectively distinguished during the observation period through the tag bit storage method. The hardware structure for this is described in detail later in FIG.

다음으로, 포스트 실리콘의 디버그 방법(300)은 디버그 세션 2를 통해 파악된 에러 구간들에 상응하는 에러 사이클을 검출할 수 있다.Next, the debug method 300 of the post silicon can detect an error cycle corresponding to the error intervals detected through the debug session 2.

에러 구간이 검출되었음을 나타내는 태그 비트를 워크 스테이션(오프-칩)에 전송 한 후, 디버그 소프트웨어에 의해 오프 칩 디버그 프로세스(321, 323)가 수행될 수 있다.The off-chip debug process 321, 323 may be performed by the debug software after sending a tag bit to the workstation (off-chip) indicating that an error interval has been detected.

디버그 소프트웨어 사용 프로세스는 온-칩(On-chip) 디버그 실험 및 디버그 데이터가 디버그로 디버그로부터 전송되는 프로세스 중에 동시에 수행되기 때문에 디버그 시간과 관련하여 부담되지 않는다.The process of using the debug software is not burdened with respect to the debug time because the on-chip debug experiment and the debug data are simultaneously executed during the process of being transferred from the debug by debug.

EI 인덱스(index) 및 EI 태그(tag)를 사용하면 각 코어의 에러 간격 정보를 나타내는 에러 간격 행렬을 생성할 수 있다. n이 4이고 EI 인덱스의 수가 10 인 경우, 매트릭스 크기는 도 5에 기술 된 바와 같이 4×10이다.An EI index and an EI tag can be used to generate an error interval matrix representing the error interval information of each core. When n is 4 and the number of EI indexes is 10, the matrix size is 4 x 10 as described in Fig.

두 번째 디버그 세션(디버그 세션 2, 320) 중에 모든 CUD의 에러 클록 사이클을 감지하려면 각 클록 사이클에 해당하는 디버그 데이터를 분석하는데 골든 데이터가 필요하다.To detect the error clock cycles of all CUDs during the second debug session (debug session 2, 320), golden data is needed to analyze the debug data corresponding to each clock cycle.

그러나 N 또는 L이 증가함에 따라 모든 골든 데이터를 DRAM에 저장하는 것은 비효율적이다.However, as N or L increases, it is inefficient to store all the golden data in the DRAM.

이를 위해, 오프-칩에서는 단계 321을 통해 N 사이클 동안 골든 데이터 스트림(Golden Data Stream, GDS)을 생성할 수 있다. 즉, 생성된 GDS를 이용하여 동일한 크기의 코어들로부터의 데이터와 골든 데이터를 비교할 수 있다.For this purpose, the off-chip can generate a golden data stream (GDS) during N cycles through step 321. [ That is, the generated GDS can be used to compare golden data with data from cores of the same size.

또한, 포스트 실리콘의 디버그 방법(300)은 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그할 수 있다.In addition, the post silicon debug method 300 can selectively debug error data corresponding to the detected error cycle.

두 번째 세션(디버그 세션 2, 320)은 에러 구간을 판별한 정보를 사용하여 어떤 사이클에서 직접적으로 에러가 발생 했는지를 찾는 세션이다.The second session (debug session 2, 320) is a session in which the error is directly detected in a certain cycle using the information that has determined the error interval.

디버그 세션 2(320)에서는 사이클 단위로 에러 데이터를 분석하기 위해 사이클 단위의 골든 데이터가 필요하나 이는 많은 데이터 오버헤드를 야기한다. 따라서 이를 줄이기 위해 본 발명에서는 골든 데이터 스트림 셀렉터라는 하드웨어 구조를 추가할 수 있다. 디버그 세션 1(310)에서는 판명된 에러가 아닌 구간에서의 코어의 데이터를 골든 데이터라고 가정할 수 있기 때문에 추가적으로 골든 데이터를 넣지 않더라도 실시간으로 해당 코어의 값을 골든 데이터로 사용할 수 있다. 따라서 이러한 조건을 이용하여 골든 데이터를 생성해 낼 수 있다. 만약 해당 구간에서 모든 코어가 에러인 경우에만 추가적으로 DRAM에 골든 데이터를 넣어서 진행하면 된다.In debug session 2 320, cycle-by-cycle golden data is required to analyze error data on a cycle-by-cycle basis, which causes a lot of data overhead. Therefore, a hardware structure called a Golden Data Stream Selector may be added in the present invention in order to reduce this. In the debug session 1 310, since core data in an interval other than the identified error can be assumed to be golden data, the value of the corresponding core can be used as golden data in real time without adding additional golden data. Therefore, it is possible to generate golden data using these conditions. If all the cores are in error in the corresponding interval, then add the golden data to the DRAM.

이러한 기능을 수행하기 위한 골든 데이터 스트림 셀렉터의 블록도가 도 6에 표현되어 있다. 이러한 방식으로 디버그 세션 2(320)에서는 사이클 단위로 에러인 구간과 비교해가며 에러 사이클을 판별하고 다시 태그 비트(EC tag)를 형태로 생성하여(323) 저장한다(322). DRAM에 사이클 단위로 저장할 경우 DRAM의 속도와 칩 내 속도에 차이가 발생할 수 있기 때문에 EC 태그 비트(EC tag)를 저장하는 버퍼의 경우 쉐도우(shadow) 버퍼를 이용해서 이러한 속도문제를 해결할 수 있다.A block diagram of a golden data stream selector for performing this function is shown in FIG. In this manner, in the debug session 2, the error cycle is discriminated in comparison with the error period in cycles, and the tag bit is generated (323) and stored (322). Since the difference between DRAM speed and chip speed can be different when the DRAM is stored in a cycle unit, it is possible to solve this speed problem by using a shadow buffer in the case of a buffer storing an EC tag bit.

또한, 디버그 세션 3(330)에서 사용될 트레이스 버퍼를 본 디버그 세션 2(320)에서는 골든 데이터를 저장하는데 사용할 수 있다.Also, in the debug session 2 320, the trace buffer to be used in the debug session 3 330 can be used to store the golden data.

이때 저장되는 골든 데이터는 앞서 말한 대로 해당 구간에서 모든 코어가 에러일 경우 필요한 골든 데이터로 해석될 수 있다.The golden data stored at this time can be interpreted as the golden data required when all the cores in the corresponding section are in error as mentioned above.

디버그 세션 3(330)에서는 에러 사이클 태그 비트들을 생성하고(331), 에러 데이터를 캡쳐하며(332), 캡쳐된 데이터를 디버그할 수 있다(333).At debug session 3 330, error cycle tag bits are generated (331), error data is captured (332), and debug data (333) is captured.

구체적으로, EC 태그를 디버그 소프트웨어(오프-칩)로 전송 한 후에는 디버그 세션 3(330) 동안 일련의 클록 사이클에서 모든 코어의 에러 데이터를 감지하기 위해 다시 생성될 수 있다.Specifically, after transmitting the EC tag to the debug software (off-chip), it may be regenerated to detect error data of all cores in a series of clock cycles during debug session 3 330. [

이는 도 4를 통해 보다 상세히 설명한다.This will be described in more detail with reference to FIG.

도 4는 디버그 세션 1에서 에러 구간을 판단하기 위한 하드웨어 구조(400)의 실시예를 설명하는 도면이다.FIG. 4 is a diagram illustrating an embodiment of a hardware architecture 400 for determining an error interval in debug session 1.

이러한 태그비트 저장 방식을 통해 해당 관찰 구간 동안 에러 구간을 선별적으로 구별해 낼 수 있다. 이에 대한 하드웨어 구조(400)는 도 4에서 상세히 설명한다.By using the tag bit storage method, an error section can be selectively distinguished during a corresponding observation period. The hardware structure 400 for this is described in detail in FIG.

도면부호 400에서 보는 바와 같이, 데이터의 전체 구간을 EI 태그와 EI 인덱스로 저장한 후에는 해당 태그 비트를 외부에 연결된 디버그 소프트웨어를 통해 추출해 내고 비교기(430)를 통해 이를 통해 에러 구간이 어디인지를 판별할 수 있다.As shown in reference numeral 400, after storing the entire section of the data as the EI tag and the EI index, the tag bit is extracted through the debug software connected to the outside, and the comparator 430 detects through the error section Can be distinguished.

예를 들어, EI 인덱스(440)가 0인 경우, 해당 구간에서 모든 코어(410)는 전부 에러 프리인 상태이며 EI 인덱스(440)가 1인 경우는 모든 코어(410) 중에서 적어도 하나의 코어에서 에러가 발생했음을 의미한다. 하드웨어 구조(400)에서는 이런 식으로 에러 구간이 어떤 구간인지 판별해 낼 수 있다. For example, when the EI index 440 is 0, all of the cores 410 are error-free in the corresponding interval, and when the EI index 440 is 1, This means that an error has occurred. In the hardware structure 400, it is possible to determine which section the error section is in this way.

보다 구체적으로, 에러 사이클의 행렬은 EC 태그와 에러 간격의 행렬로 계산될 수 있다. 전체 MISR(420) 중에서 각 MISR의 길이가 5이면 각 구간마다 4 × 5 에러주기 행렬이 생성될 수 있다. 만약, 이 행렬을 사용하면 EC 인덱스가 생성될 수 있다.More specifically, the matrix of error cycles can be computed as a matrix of EC tags and error intervals. If the length of each MISR in the entire MISR 420 is 5, a 4x5 error period matrix may be generated for each section. If this matrix is used, an EC index can be generated.

EC 인덱스는 해당 클록 사이클에서 코어들(410) 중 적어도 하나의 코어에 에러가 있거나 없음을 나타낸다. 첫째, EI 인덱스(440)가 0이면 간격이 무시되고, EI 인덱스(440)가 1이면 필요한 EC 인덱스의 수는 M이다.The EC index indicates whether there is an error in at least one of the cores 410 in the corresponding clock cycle. First, if the EI index 440 is 0, the interval is ignored, and if the EI index 440 is 1, the required number of EC indexes is M.

EC 인덱스가 1이면 EC 태그가 n만큼 필요하며 에러 클록 행렬에 의해 다시 생성될 수 있고, EC 인덱스가 0이면 주기가 무시될 수 있어 EC 태그가 다시 생성될 수 있다.If the EC index is 1, an EC tag is required by n and can be regenerated by the error clock matrix, and if the EC index is 0, the cycle can be ignored and the EC tag can be regenerated.

이러한 태그 비트를 생성 한 후 최종 디버그 세션이 수행될 수 있다. 사전 계산된 태그 비트가 DRAM에 업로드되고 디버그 구성이 수행될 수 있다.After this tag bit is generated, the final debug session can be performed. The precomputed tag bits can be uploaded to the DRAM and the debug configuration can be performed.

트리거 포인트 이후 EI 인덱스(440)는 에러 간격을 감지하고 EC 인덱스는 에러주기를 감지하며 EC 태그는 에러 코어를 실시간으로 선택한다.After the trigger point, the EI index 440 detects the error interval, the EC index detects the error period, and the EC tag selects the error core in real time.

모든 코어의 에러 데이터가 추적 버퍼에 캡쳐될 수 있는데, 추적 버퍼가 가득 차면 캡쳐된 데이터가 EI 태그(450)를 통해 쉐도우 버퍼로 이동되어 DRAM에 저장될 수 있다. 그 다음에 다음 태그 비트가 DRAM에서 골든 시그니쳐(signatures) 레지스터(460)에 로드 되고 디버그가 실행 된 후 모든 에러 데이터가 DRAM에 저장될 수 있다. 디버그 세션이 완료되면 저장된 데이터가 워크 스테이션으로 전송되고 분석되어 에러의 근본 원인을 찾을 수 있다.The error data of all the cores can be captured in the trace buffer. When the trace buffer is full, the captured data can be moved to the shadow buffer through the EI tag 450 and stored in the DRAM. The next tag bit can then be loaded into the Golden Signatures register 460 in the DRAM and all error data can be stored in the DRAM after the debug is executed. Once the debug session is complete, the stored data is transferred to the workstation and analyzed to find the root cause of the error.

도 5는 디버그 세션 1의 수행 후 태그 비트로 추출된 해당 결과를 통해 에러 구간을 디버그 소프트웨어에서 분석하는 실시예(500)를 설명하는 도면이다.FIG. 5 is a view for explaining an embodiment 500 in which the debug software analyzes an error section through a corresponding result extracted by a tag bit after execution of the debug session 1.

도 5의 예에서, 본 발명에 따르면 구간 1, 3, 4, 7 및 8은 골든 데이터로서 코어를 선택할 수 있다. 이 경우 코어 4 (core_sel = 11)는 구간 1, 3이고 코어 3 (core_sel = 10)은 구간 4, 7 및 8에 대한 것이다. 에러 구간 매트릭스(540)의 경우, 세션 1에 대한 결과 태그 비트들(520)로 식별될 수 있다.In the example of FIG. 5, according to the present invention, intervals 1, 3, 4, 7 and 8 can select cores as golden data. In this case, core 4 (core_sel = 11) is for intervals 1 and 3 and core 3 (core_sel = 10) for intervals 4, 7 and 8. In the case of error interval matrix 540, it may be identified as result tag bits 520 for session one.

세션 2를 위한 GDS 태그 비트들(530)에 따르면, GDS 태그를 생성 한 후 두 번째 디버그 세션을 시작하여 각 코어의 에러 클록 사이클 정보를 캡쳐 할 수 있다. 먼저, 사전에 계산된 태그 비트가 DRAM에 업로드 되면, GDS 인덱스가 1 인 경우에는 추가 골든 데이터가 업로드 되고 DRAM 사용이 더 필요하다. 그러나 이러한 경우는 앞에서 논의한 포스트 실리콘 디버그 프로세스의 에러율이 낮기 때문에 거의 발생하지 않는다.According to the GDS tag bits 530 for session 2, it is possible to start the second debug session after generating the GDS tag to capture the error clock cycle information of each core. First, if the previously calculated tag bit is uploaded to the DRAM, if the GDS index is 1, additional golden data is uploaded and further use of the DRAM is required. However, this case rarely occurs because the error rate of the post silicon debug process discussed above is low.

디버그 프로세스가 시작되면 디버그 구성이 수행되고 태그 비트가 각 태그 레지스터에 업로드된다. 또한, 추가되는 골든 데이터의 경우, 이들은 연속적인 클록 사이클 순서로 디버그 데이터와 비교돼야 하기 때문에 트레이스 버퍼와 쉐도우 버퍼에 차례로 업로드될 수 있다.When the debug process is started, a debug configuration is performed and tag bits are uploaded to each tag register. Also, in the case of added golden data, they can be uploaded to the trace buffers and shadow buffers in turn, since they must be compared to the debug data in consecutive clock cycle order.

또한, 이러한 버퍼는 디버그 세션 3에서 에러 데이터를 캡쳐 하는데 다시 사용될 수 있다.This buffer can also be used again to capture error data in debug session 3.

트리거 포인트 이후에 EI 인덱스는 에러 간격을 감지하고 EI 태그는 실수로 에러 코어를 선택한다. EI 인덱스가 0이면이 간격을 건너뛸 수 있고, 그렇지 않은 경우 에러 코어는 GDS 선택기의 골든 데이터 스트림과 비교될 수 있다. 본 명세서에서는 EC 태그라고하는 비교 결과 비트를 통해 M 사이클 동안 EC 태그 온칩 버퍼에 캡쳐될 수 있다.After the trigger point, the EI index detects the error interval and the EI tag inadvertently selects the error core. If the EI index is zero, this interval can be skipped, otherwise the error core can be compared to the GDS selector's golden data stream. May be captured in the EC tag on-chip buffer for M cycles through a comparison result bit referred to herein as an EC tag.

모든 코어가 에러가 있는 최악의 경우를 처리하기 위해 EC 태그 버퍼의 크기는 n × M일 수 있다. 캡쳐 프로세스가 연속적인 클록 사이클로 수행되기 때문에 쉐도우 EC 태그 버퍼가 필요하다.The size of the EC tag buffer may be n x M to handle the worst case where all cores have errors. A shadow EC tag buffer is needed because the capture process is performed in a continuous clock cycle.

EC 태그 버퍼가 가득 차면 데이터가 쉐도우로 이동되어 DRAM에 저장될 수 있다. 그 후, 다음 태그 비트가 DRAM에서 레지스터로 로드되고, 디버그 데이터가 이러한 방식으로 N 사이클 동안 분석될 수 있다. 두 번째 세션이 완료된 후 DRAM에 저장된 태그 비트가 워크 스테이션으로 전송되고 세 번째 세션에 대해 분석되며, 이러한 온-칩 프로세스는 도 4의 하드웨어 구조(400)를 통해 수행될 수 있다.When the EC tag buffer is full, the data can be moved to the shadow and stored in the DRAM. Then the next tag bit is loaded into the register in the DRAM and the debug data can be analyzed during this N cycles in this manner. After the second session is completed, the tag bits stored in the DRAM are transferred to the workstation and analyzed for the third session, which can be performed through the hardware structure 400 of FIG.

도 6은 디버그 세션 2에서 골든 데이터를 실시간으로 생성하기 위한 골든 데이터 스트림 선택기를 설명하는 도면이다.6 is a view for explaining a golden data stream selector for generating golden data in real time in the debug session 2.

본 발명에서는 에러없는 코어를 선택하여 골든 데이터 스트림을 생성 할 수 있다.In the present invention, a golden data stream can be generated by selecting an error-free core.

이를 위한 골든 데이터 스트림(GDS) 선택기(600) 각 구간에 대한 에러없는 데이터를 선택하기 위해, GDS 태그와 GDS 인덱스를 이용할 수 있다.For this purpose, a GDS tag and a GDS index can be used to select error-free data for each section of the Golden Data Stream (GDS) selector 600.

GDS 태그는 GDS 인덱스와 코어 선택을 위한 코어_sel로 구성된 GDS 태그로 해석될 수 있다. 또한, GDS 인덱스는 골든 데이터를 선택하는 방법을 결정하고 코어_sel은 에러가 없는 선택된 코어 세트로 해석될 수 있다.The GDS tag can be interpreted as a GDS tag consisting of a GDS index and a core_sel for core selection. In addition, the GDS index determines how to select the golden data, and the core_sel can be interpreted as a selected core set with no errors.

구체적으로, 에러가 없는 코어는 EI 인덱스가 0이 아닌 경우 코어_sel에 수집된다.Specifically, cores without errors are collected in core_sel if the EI index is not zero.

그런 다음 알고리즘이 GDS 인덱스를 결정할 수 있다.The algorithm can then determine the GDS index.

GDS 인덱스가 0이면 코어_sel에서 골든 데이터를 선택할 수 있음을 나타내고, GDS 인덱스가 1이면 해당 간격 동안 모든 코어가 에러가 있음을 의미한다. 또한, 골든 데이터는 DRAM에서 선택할 수 있다.If the GDS index is 0, it indicates that the core data can be selected from the core_sel. If the GDS index is 1, it means that all the cores have an error during the corresponding interval. In addition, golden data can be selected from DRAM.

한편, EI 태그의 합이 n과 같은 경우 GDS 인덱스는 1로 해석될 수 있다. On the other hand, if the sum of the EI tags is equal to n, the GDS index can be interpreted as 1.

그렇지 않은 경우에 GDS 인덱스는 0으로 해석될 수 있다. 먼저 코어_sel은 EI 인덱스가 '1'이고 GDS 인덱스가 '0'일 때만 할 수 있다. 또한, 코어_sel의 각 코어의 개수를 계산하여 최대 개수의 코어를 선택할 수 있다.Otherwise, the GDS index can be interpreted as zero. First, core_sel can be performed only when the EI index is '1' and the GDS index is '0'. Further, the maximum number of cores can be selected by calculating the number of cores of the core_sel.

도 7은 디버그 세션 2에서 에러 사이클을 판단하기 위한 하드웨어 구조(700)를 설명하는 도면이다.7 is a diagram illustrating a hardware structure 700 for determining an error cycle in debug session 2.

하드웨어 구조(700)를 살펴보면, 복수의 코어들(701)은 동일한 크기로 구현될 수 있다. Referring to the hardware structure 700, a plurality of cores 701 may be implemented with the same size.

코어 선택기(702)는 에러 구간의 검출을 위한 코어를 선택하고, 선택된 코어로부터 데이터와 골든 데이터를 비교기들(703)을 통해 비교할 수 있다. 비교 결과, 에러라고 추정되는 데이터의 경우 EC 태그(704)를 통해 구분하고, 쉐도우 EC 태그(705)를 통해 저장할 수 있다. 이렇게 에러 구간이 저장될 수 있다.The core selector 702 may select a core for detection of an error interval and compare data and golden data from the selected core via comparators 703. As a result of the comparison, data estimated to be error can be classified through the EC tag 704 and stored via the shadow EC tag 705. [ This error section can be stored.

디버그 프로세스가 시작되면 디버그 구성이 수행되고 태그 비트가 각 태그 레지스터에 업로드 된다. 또한, 추가되는 골든 데이터의 경우, 이들은 연속적인 클록 사이클 순서로 디버그 데이터와 비교돼야 하기 때문에 트레이스 버퍼(706)와 쉐도우 버퍼(707)에 차례로 업로드될 수 있다.When the debug process is started, a debug configuration is performed and tag bits are uploaded to each tag register. In addition, in the case of the added golden data, they can be sequentially uploaded to the trace buffer 706 and the shadow buffer 707 since they must be compared with the debug data in consecutive clock cycle order.

골든 데이터 스트림(GDS) 선택기(711)는 각 구간에 대한 에러없는 데이터를 선택하기 위해, GDS 태그(708)를 이용할 수 있다. GDS 태그는 GDS 인덱스와 코어 선택을 위한 코어_sel로 구성된 GDS 태그로 해석될 수 있다. 또한, GDS 인덱스는 골든 데이터를 선택하는 방법을 결정하고 코어_sel은 에러가 없는 선택된 코어 세트로 해석될 수 있다.The Golden Data Stream (GDS) selector 711 may use the GDS tag 708 to select error free data for each interval. The GDS tag can be interpreted as a GDS tag consisting of a GDS index and a core_sel for core selection. In addition, the GDS index determines how to select the golden data, and the core_sel can be interpreted as a selected core set with no errors.

구체적으로, 에러가 없는 코어는 EI 인덱스가 0이 아닌 경우 코어_sel에 수집된다.Specifically, cores without errors are collected in core_sel if the EI index is not zero.

EI 태그(709)와 EI 인덱스(710)는 코어 선택기(702)의 입력으로 동작할 수 있는데, EI 태그(709)와 EI 인덱스(710)의 출력 조합에 따라서 복수의 코어들(701) 중에서 특정 코어를 선택할 수 있다.The EI tag 709 and the EI index 710 may operate as the inputs of the core selector 702 and may be selected from a plurality of cores 701 according to the combination of the outputs of the EI tag 709 and the EI index 710 The core can be selected.

도 8은 디버그 세션 2 후 태그 비트로 추출된 해당 결과를 통해 에러 사이클을 디버그 소프트웨어에서 분석하는 실시예(800)를 설명하는 도면이다.FIG. 8 is a diagram illustrating an embodiment 800 in which debug software analyzes an error cycle through a tag bit extracted after debug session 2.

실시예(800)에 따르면, 디버그 세션 2의 결과 태그 비트들(810), 즉 EI 태그들은 에러 구간 매트릭스(820)와, 에러 사이클 매트릭스(830)로 구분될 수 있다. 한편, 디버그 세션 2의 결과 태그 비트들(810)은 디버그 세션 3을 위한 EC 인덱스 및 EC 태그(840)로 표현될 수 있다.According to embodiment 800, the result tag bits 810, i.e., EI tags, of the debug session 2 may be separated into an error interval matrix 820 and an error cycle matrix 830. Meanwhile, the resultant tag bits 810 of the debug session 2 can be represented by an EC index and an EC tag 840 for the debug session 3.

구체적으로, EC 태그를 디버그 소프트웨어로 전송 한 후에는 세 번째 세션 동안 일련의 클록 사이클에서 모든 코어의 오류 데이터를 감지하기 위해 다시 생성될 수 있다. 첫째, 오류주기 행렬은 EC 태그와 오류 간격 행렬로 계산되며, MISR의 길이가 5이면 각 구간마다 4 × 5 오류주기 행렬이 생성된다.Specifically, after transmitting the EC tag to the debug software, it can be regenerated to detect error data of all cores in a series of clock cycles during the third session. First, the error period matrix is calculated by the EC tag and the error interval matrix, and if the length of the MISR is 5, a 4 × 5 error period matrix is generated for each interval.

이 행렬을 사용하면 EC 인덱스가 생성되는데, EC 인덱스는 해당 클록 사이클에서 적어도 하나의 코어가 오류가 있거나 없음을 나타낸다. Using this matrix, an EC index is generated, which indicates that at least one core in the corresponding clock cycle is faulty or not.

첫째, EI 인덱스가 '0'이면 해당 구간이 무시되고, '1'이면 필요한 EC 인덱스의 수는 M이다. EC 인덱스가 1이면 EC 태그가 n만큼 필요하며 오류 클록 행렬에 의해 다시 생성 될 수 있다. EC 인덱스가 '0'이면 주기가 무시될 수 있고, 이렇게 하면 EC 태그가 다시 생성될 수 있다.First, if the EI index is '0', the corresponding interval is ignored. If the EI index is '1', the required number of EC indexes is M. If the EC index is 1, an EC tag is required by n and can be regenerated by the error clock matrix. If the EC index is '0', the period can be ignored, and the EC tag can be regenerated.

도 9는 디버그 세션 3에서 에러 사이클을 캡쳐하기 위한 하드웨어 구조(900)를 설명하는 도면이다.Figure 9 is a diagram illustrating a hardware architecture 900 for capturing error cycles in debug session 3.

하드웨어 구조(900)를 살펴보면, 복수의 코어들(901)은 동일한 크기로 구현될 수 있다. 코어 선택기(902)는 에러 구간의 검출을 위한 코어를 선택하고, 트레이스 버퍼(903) 및 쉐도우 버퍼(904)를 통해 저장될 수 있다.Looking at the hardware structure 900, a plurality of cores 901 may be implemented with the same size. The core selector 902 selects a core for detection of the error interval and may be stored via the trace buffer 903 and the shadow buffer 904. [

적재된 데이터들은 EC 태그(905), 쉐도우 EC 태그(906), EC 인덱스(907), 쉐도우 EC 인덱스(908), EI 인덱스(909)로 출력될 수 있다. 각각의 출력은 코어 선택기의 입력에 선택적으로 전달되어 복수의 코어들(901) 중에서 특정 코어를 선택하는 정보로 사용될 수 있다.The loaded data can be output to the EC tag 905, the shadow EC tag 906, the EC index 907, the shadow EC index 908, and the EI index 909. Each output may be selectively transmitted to an input of a core selector to be used as information for selecting a specific core among the plurality of cores 901. [

도 10 내지 도 12에서는 세션 1 내지 3에 대한 타이밍을 보다 구체적으로 설명한다.In FIGS. 10 to 12, the timings for the sessions 1 to 3 will be described in more detail.

도 10은 디버그 세션 1에 대한 타이밍(1000)을 나타내는 도면이다.10 is a timing diagram 1000 for debug session 1.

3번의 디버그 세션 동안 DRAM과 통신하는 방법을 보여주기 위해, 제안된 DfD 모듈의 동작은 첫 번째 세션에서 각 간격은 골든 시그니쳐와 비교하여 MISR 서명으로 압축되어 EI 인덱스 및 EI 태그 등록에서 캡쳐될 수 있다. EI 인덱스는 레지스터에 캡쳐되고 데이터 볼륨이 작기 때문에 디버그 세션 후에 워크 스테이션으로 오프로드 된다. 한편, 캡쳐된 EI 태그(n 비트)는 DRAM에 저장되고 다음 골든 시그니쳐(L 비트)는 DRAM에서 로드될 수 있다.To illustrate how to communicate with the DRAM during the three debug sessions, the operation of the proposed DfD module can be captured in the EI index and EI tag registrations where each interval is compressed into a MISR signature as compared to the golden signature in the first session . The EI index is captured in the register and is offloaded to the workstation after the debug session because of the small data volume. Meanwhile, the captured EI tag (n bits) is stored in the DRAM and the next golden signature (L bit) can be loaded in the DRAM.

도 11은 디버그 세션 2에 대한 타이밍(1100)을 나타내는 도면이다.11 is a timing diagram 1100 for debug session 2.

두 번째 세션에서 오류가 있는 구간의 오류 코어는 골든 데이터 스트림과 비교되고 EC 태그 버퍼에 캡쳐될 수 있다. 캡쳐 프로세스는 M 사이클 동안 수행되기 때문에 쉐도우 EC 태그가 필요하다. 점선은 프로세스가 조건부로 수행됨을 의미하며, EI 인덱스가 0이면 에러 클럭 사이클 검출을 수행 할 필요가 없다.In the second session, the error core of the erroneous interval can be compared to the golden data stream and captured in the EC tag buffer. Shadow EC tags are required because the capture process is performed during M cycles. The dotted line means that the process is performed conditionally, and if the EI index is zero, it is not necessary to perform error clock cycle detection.

EI 인덱스가 1이면 EI 태그에 의해 EC 태그가 선택적으로 캡쳐된다.If the EI index is 1, the EC tag is selectively captured by the EI tag.

EC 태그 버퍼가 가득 차면 태그 비트가 그림자 비트로 이동할 수 있다. 일반적으로 캡쳐된 태그 비트의 양은 M 사이클마다 다르다. 그러나 두 번째 세션 전에 계산된 EI 태그 및 EI 지수로 EC 태그가 가득 찼을 때를 알 수 있다.When the EC tag buffer is full, the tag bit can move to the shadow bit. Generally, the amount of captured tag bits differs from one M cycle to another. However, it is possible to know when the EC tag is filled with the calculated EI tag and the EI index before the second session.

결과적으로, DfD 제어기는 시프트 타이밍을 결정할 수 있고, 이후의 데이터는 DRAM에 저장될 수 있다. 추가 골든 데이터가 다음 간격 동안 필요하면 차례로 추적 버퍼와 쉐도우 버퍼에 로드될 수 있다.As a result, the DfD controller can determine the shift timing, and subsequent data can be stored in the DRAM. Additional golden data can be loaded into the trace and shadow buffers, in turn, as needed during the next interval.

이 메커니즘을 사용하면 추가 골든 데이터가 시퀀스에 필요하지 않다. 그 후, EI 인덱스가 1이면 EI 태그가 로드될 수 있고, 다음 구간 동안 GDS 태그가 로드될 수 있다.With this mechanism, no additional golden data is needed for the sequence. Thereafter, if the EI index is 1, the EI tag can be loaded, and the GDS tag can be loaded for the next interval.

도 12는 디버그 세션 3에 대한 타이밍(1200)을 나타내는 도면이다.12 is a timing diagram 1200 for debug session 3.

세 번째 세션에서는 모든 코어의 오류 데이터가 추적 버퍼에 캡쳐 되고, 앞서 설명한 이유로 쉐도우 버퍼가 필요하다. 두 번째 세션과 마찬가지로, 트레이스 버퍼가 가득 차는 타이밍은 EI 인덱스, EC 인덱스 및 EC 태그에 의해 제어될 수 있다.In the third session, the error data of all cores is captured in the trace buffer, and a shadow buffer is needed for the reason described above. As with the second session, the timing at which the trace buffer is full can be controlled by the EI index, EC index and EC tags.

추적 버퍼가 가득차면 캡쳐된 데이터가 쉐도우 버퍼로 이동되어 DRAM에 저장될 수 있다. 마지막으로 EI 인덱스가 1이면 EC 인덱스와 EC 태그가 로드되고 EC 인덱스가 1일 때 디버그 데이터와 비교할 수 있도록 EC 태그가 제공되어, 필요한 데이터가 중복되는 것을 방지할 수 있다.Once the trace buffer is full, the captured data can be moved to the shadow buffer and stored in the DRAM. Finally, when the EI index is 1, the EC index and the EC tag are loaded, and when the EC index is 1, the EC tag is provided so that it can be compared with the debug data, thereby preventing duplication of necessary data.

저장 및 로드 작업은 두 번째 및 세 번째 세션에서 불규칙하므로 보존된 시간 영역이 필요하며 위에서 설명한대로 태그 비트를 사용하여 결정할 수 있다.The save and load operations are irregular in the second and third sessions, so the saved time domain is required and can be determined using the tag bits as described above.

또한, 세 번째 세션의 동작을 만족시키기 위해 n에 대한 제한이 있을 수 있다. 모든 코어가 매 사이클마다 오류가 있는 최악의 경우에 최소 보존 시간은 M / n 사이클이라고 가정할 수 있다. 따라서 최대 n은 쓰기 액세스 대기 시간으로 나눈 M보다 작다. 예를 들어, DRAM의 평균 액세스 대기 시간이 25ns이고 회로가 1GHz 주파수에서 수행되는 경우 M이 512 일 때 최대 n은 20이다.Also, there may be a limit on n to satisfy the behavior of the third session. In the worst case where every core has an error per cycle, the minimum retention time can be assumed to be M / n cycles. Thus, the maximum n is less than M divided by the write access latency. For example, if the average access latency of the DRAM is 25 ns and the circuit is running at the 1 GHz frequency, the maximum n is 20 when M is 512.

도 13은 일실시예에 따른 포스트 실리콘의 디버그 장치(1300)를 설명하는 도면이다.13 is a diagram for explaining a post silicon debug device 1300 according to an embodiment.

일실시예에 따른 포스트 실리콘의 디버그 장치(1300)는 세션 1 처리부(1310), 세션 2 처리부(1320), 및 세션 3 처리부(1330)를 포함할 수 있다.The post silicon debug device 1300 according to one embodiment may include a session 1 processing unit 1310, a session 2 processing unit 1320, and a session 3 processing unit 1330.

일실시예에 따른 세션 1 처리부(1310)는 디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악할 수 있다.The session 1 processor 1310 according to an exemplary embodiment generates golden data corresponding to a debug section based on a simulation before the start of debug and uploads the generated golden data to the trace buffer to determine error intervals in the debug section have.

일실시예에 따른 세션 1 처리부(1310)는 골든 데이터를 트레이스 버퍼에 업로드 하되, JTAG(Joint Test Action Group)를 포함하는 외부 인터페이스를 통해 업로드할 수 있다.The session 1 processor 1310 according to an embodiment uploads the golden data to the trace buffer, and uploads the data through an external interface including a JTAG (Joint Test Action Group).

일실시예에 따른 세션 1 처리부(1310)는 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 상기 골든 데이터로 결정하고, 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 골든 데이터를 비교하며 에러 여부를 판단하며, 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록할 수 있다.The session 1 processing unit 1310 according to an exemplary embodiment determines data corresponding to a section expected to be not an error as the golden data through simulation and compresses the data through a Multiple Input Signature Register (MISR) And determines whether there is an error. If it is determined that an error has occurred, the data can be recorded using a 1-bit EI tag.

또한, 세션 1 처리부(1310)는 판단 결과 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록할 수 있다. 뿐만 아니라, 세션 1 처리부(1310)는 디버그 구간에 해당하는 골든 데이터를 MISR(Multiple Input Signature Register) 사이즈로 분할하여 압축하고, 분할 및 압축된 골든 데이터를 칩 내 디램(DRAM)에 저장할 수 있다. 세션 1 처리부(1310)는 파악된 에러 구간 내의 모든 코어가 에러인 경우, 디램(DRAM)에 생성된 골든 데이터를 추가할 수 있다.Also, the session 1 processing unit 1310 can record the section in which no error occurs as a result of determination using the index (EI index). In addition, the session 1 processor 1310 may divide and decompress the golden data corresponding to the debug interval into a multiple input signature register (MISR) size, and store the divided and compressed golden data in a DRAM (on-chip DRAM). The session 1 processing unit 1310 may add the generated golden data to the DRAM if all the cores in the detected error period are in error.

일실시예에 따른 세션 2 처리부(1320)는 파악된 에러 구간들에 상응하는 에러 사이클을 검출할 수 있다. 세션 2 처리부(1320)는 사이클 별로 에러 사이클을 판별하여 태그 비트(EC tag) 형태로 저장하되, 쉐도우(shadow) 버퍼를 이용하여 판별된 에러 사이클을 저장할 수도 있다.The session 2 processor 1320 according to one embodiment may detect an error cycle corresponding to the detected error intervals. The session 2 processor 1320 may determine an error cycle for each cycle and store the error cycle in the form of a tag bit (EC tag), and store the determined error cycle using a shadow buffer.

일실시예에 따른 세션 3 처리부(1330)는 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그할 수 있으며, 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 저장하고, 저장된 에러 데이터를 선별하여 디버그할 수 있다.The session 3 processor 1330 according to an exemplary embodiment can selectively debug error data corresponding to the detected error cycle, selectively stores error data corresponding to the detected error cycle, You can debug it selectively.

디버그 구성 모듈은 구성 단계에서 JTAG와 같은 추적 포트를 통해 제어될 수 있다. 이 모듈은 디버그 프로세스의 트리거 포인트를 제어하고 CUD 및 디버그 데이터를 선택할 수 있다. 또한 MISR 세트와 골든 레지스터는 첫 번째 세션을 위한 세션 1 처리부(1310)에 포함될 수 있다.The debug configuration module can be controlled through a trace port such as JTAG during the configuration phase. This module can control the trigger point of the debug process and select CUD and debug data. Also, the MISR set and the golden register may be included in the session 1 processing unit 1310 for the first session.

태그 비트 레지스터는 두 번째 및 세 번째 세션을 위한 처리부들(1320, 1330)에 포함될 수 있다. 이들 버퍼 및 태그 비트 레지스터는 전체의 디버그 세션 동안 하드웨어 영역 오버 헤드를 감소시키기 위해 재사용될 수 있다.The tag bit register may be included in the processing units 1320 and 1330 for the second and third sessions. These buffers and tag bit registers can be reused to reduce hardware area overhead during the entire debug session.

디버그 프로세스가 시작되면 FSM (Finite State Machine)이 수행되어 디버그 모듈을 제어하고 DRAM과 통신할 수 있다.When the debug process starts, a finite state machine (FSM) is performed to control the debug module and communicate with the DRAM.

첫 번째 세션에서의 FSM은 EI 태그를 캡쳐하고 간격 카운터를 사용하여 DRAM 컨트롤러와 통신하는 타이밍을 제어할 수 있다. 두 번째 세션에서 FSM은 골든 데이터 스트림을 생성하기 위해 GDS 태그를 사용하여 GDS 선택기를 제어할 수 있다. 추가 골든 데이터가 필요한 경우 FSM은 DRAM에서 데이터를 로드하기 위해 추적 버퍼와 쉐도우 버퍼를 차례로 선택할 수 있다. 또한 FSM은 EC 태그를 캡쳐하고 EC 태그를 쉐도우 EC 태그로 이동하는 타이밍을 결정할 수 있다. EC 태그가 가득 찬 타이밍 정보는 두 번째 세션 전에 EI 태그를 사용하여 계산할 수 있으며 디버그 구성 단계에서 구성될 수 있다. 데이터를 쉐도우 EC 태그로 이동시킨 후 FSM은 앞서 설명한대로 DRAM 컨트롤러와 통신하기 위한 작업을 지원할 수 있다.The FSM in the first session can capture the EI tag and control the timing of communicating with the DRAM controller using an interval counter. In the second session, the FSM can use the GDS tag to control the GDS selector to generate a golden data stream. If additional golden data is needed, the FSM may in turn select a trace buffer and a shadow buffer to load data from the DRAM. The FSM can also determine the timing of capturing the EC tags and moving the EC tags to the shadow EC tags. Timing information that is full of EC tags can be calculated using the EI tag before the second session and can be configured at the debug configuration stage. After moving the data to the shadow EC tag, the FSM can support operations to communicate with the DRAM controller as previously described.

세션 3 처리부(1330)에서 FSM은 추적 버퍼에서 오류 데이터를 캡쳐하고 쉐도우 버퍼로 이동하고 DRAM과 통신하는 타이밍을 제어할 수 있다. 세션 2 처리부(1320) 및 세션 3 처리부(1330)의 동작을 만족시키기 위해, 보존된 시간 영역은 FSM 및 간격 카운터에 의해 제어될 수 있다.In the session 3 processor 1330, the FSM may capture error data in the trace buffer, move to the shadow buffer, and control the timing of communication with the DRAM. In order to satisfy the operation of the session 2 processing unit 1320 and the session 3 processing unit 1330, the saved time area can be controlled by the FSM and the interval counter.

DRAM에 데이터를 저장하기 위해 쉐도우 EC 인덱스와 EC 태그 및 쉐도우 버퍼 앞에 어댑터가 추가될 수 있다. 이 어댑터를 사용하면 인터페이스의 주파수가 CUD와 다르더라도 디버그 데이터를 메모리 인터페이스로 전송할 수 있다.Adapters can be added in front of the shadow EC index, EC tags, and shadow buffers to store data in the DRAM. With this adapter, debug data can be transferred to the memory interface even if the frequency of the interface is different from CUD.

일실시예에 따른 포스트 실리콘의 디버그 장치(1300)는 확률 모델을 사용한 DRAM 사용 및 디버그 시간 분석이 가능하다.The post silicon debug device 1300 according to an embodiment is capable of using DRAM and debug time analysis using a probability model.

확률 모델은 DfD 디자이너가 다양한 디버그 전략을 수립하고 DfD 모듈 크기를 결정하는데 활용될 수 있다.Probability models can be used by DfD designers to establish various debug strategies and to determine the size of DfD modules.

확률 모델을 단순화하기 위해 모든 코어의 오류가 발생한다고 가정하며, 이 경우 Pi와 X (E [Xi])의 기대 값은 [수학식 1]과 같이 설명될 수 있다.In order to simplify the probability model, it is assumed that an error occurs in all of the cores. In this case, the expectation values of Pi and X (E [Xi]) can be expressed as follows.

[수학식 1][Equation 1]

Figure 112017010152494-pat00001
Figure 112017010152494-pat00001

Figure 112017010152494-pat00002
Figure 112017010152494-pat00002

[수학식 1]에서, pi는 i 번째 코어의 오류 클록주기 확률로 해석될 수 있고, Pi는 i 번째 코어의 Pi 오류 간격 확률로 해석될 수 있다. Xi는 i 번째 코어의 잘못된 간격의 수로서 무작위 변수로 해석될 수 있다.In Equation (1), pi can be interpreted as the error clock period probability of the i-th core, and Pi can be interpreted as the Pi error interval probability of the i-th core. Xi can be interpreted as a random variable as the number of erroneous intervals of the i-th core.

이전 방법은 오류 간격에 대한 디버그 데이터 만 저장하기 때문에 이전 방법에서 i 번째 세션의 DRAM 사용량은 [수학식 2]와 같이 계산될 수 있다.Since the previous method stores only the debug data for the error interval, the DRAM usage of the i-th session in the previous method can be calculated as shown in Equation (2).

[수학식 2]&Quot; (2) "

Figure 112017010152494-pat00003
Figure 112017010152494-pat00003

Xi는 i 번째 코어의 잘못된 간격의 수로서 무작위 변수로 해석될 수 있고, DUprevi는 i 번째 세션의 DRAM 사용량 Tprev (prop) 디버그 시간으로 해석될 수 있다. S는 해당 오류 간격을 식별하는 타임 스탬프의 크기이고 LN / M은 DRAM에 저장된 골든 MISR 서명 수로 해석될 수 있다.Xi can be interpreted as a random variable as the number of erroneous intervals of the i-th core, and DUprevi can be interpreted as the DRAM usage Tprev (prop) debug time of the i-th session. S is the size of the timestamp identifying the error interval and LN / M can be interpreted as the golden MISR signature number stored in the DRAM.

본 발명에서는 제안된 방법에서 각 세션마다 다른 DRAM 사용이 필요하고, DRAM 사용량을 계산하려면 E[Y], E[Z], E[Z']가 필요하다. 그들은 다음과 같이 설명될 수 있다.E [Y], E [Z] and E [Z '] are required to calculate the amount of DRAM used in the proposed method. They can be explained as follows.

먼저, E[Y]는 [수학식 3]을 통해 산출할 수 있다.First, E [Y] can be calculated through [Equation 3].

[수학식 3]&Quot; (3) "

Figure 112017010152494-pat00004
Figure 112017010152494-pat00004

Pi는 i 번째 코어의 Pi 오류 간격 확률로 해석될 수 있다. Xi는 i 번째 코어의 잘못된 간격의 수로서 무작위 변수로 해석될 수 있다.Pi can be interpreted as the Pi error interval probability of the ith core. Xi can be interpreted as a random variable as the number of erroneous intervals of the i-th core.

다음으로, E[Z]는 [수학식 4]을 통해 산출할 수 있다.Next, E [Z] can be calculated through the following equation (4).

[수학식 4]&Quot; (4) "

Figure 112017010152494-pat00005
Figure 112017010152494-pat00005

Pi는 i 번째 코어의 Pi 오류 간격 확률로 해석될 수 있다. Xi는 i 번째 코어의 잘못된 간격의 수로서 무작위 변수로 해석될 수 있다.Pi can be interpreted as the Pi error interval probability of the ith core. Xi can be interpreted as a random variable as the number of erroneous intervals of the i-th core.

다음으로, E[Z']는 [수학식 5]을 통해 산출할 수 있다.Next, E [Z '] can be calculated through [Equation 5].

[수학식 5]&Quot; (5) "

Figure 112017010152494-pat00006
Figure 112017010152494-pat00006

Pi는 i 번째 코어의 Pi 오류 간격 확률로 해석될 수 있다. Xi는 i 번째 코어의 잘못된 간격의 수로서 무작위 변수로 해석될 수 있다.Pi can be interpreted as the Pi error interval probability of the ith core. Xi can be interpreted as a random variable as the number of erroneous intervals of the i-th core.

첫 번째 세션에서 골든 MISR 서명이 필요하며 EI 색인 및 EI 태그는 매 M 사이클마다 DRAM에 저장될 수 있고, 결과적으로, 첫 번째 세션에 대한 DRAM 사용은 [수학식 6]과 같이 설명 할 수 있다.A Golden MISR signature is required in the first session, and the EI index and EI tag can be stored in the DRAM every M cycles, and as a result, the DRAM usage for the first session can be described as [Equation 6].

[수학식 6]&Quot; (6) "

Figure 112017010152494-pat00007
Figure 112017010152494-pat00007

[수학식 6]에서 EI 지수는 N / M이고 EI 태그는 nE [Z]로 해석될 수 있다.In Equation (6), the EI index can be interpreted as N / M and the EI tag can be interpreted as nE [Z].

두 번째 세션에서는 GDS 태그, 추가 골든 데이터, EI 색인 및 EI 태그가 오류 클럭 주기를 감지하기 위해 DRAM에 업로드될 수 있다. GDS 태그(GDS tag) 및 추가 골든 데이터(additional golden data)는 [수학식 7]과 같이 설명될 수 있다.In the second session, GDS tags, additional golden data, EI indexes, and EI tags can be uploaded to the DRAM to detect the error clock period. The GDS tag and the additional golden data can be described as [Equation 7].

[수학식 7]&Quot; (7) "

Figure 112017010152494-pat00008
Figure 112017010152494-pat00008

Figure 112017010152494-pat00009
Figure 112017010152494-pat00009

GDS 태그, 추가 골든 데이터, EI 태그 및 EI 색인의 합계는 두 번째 세션을 시작하기 전에 업로드된 총 데이터 볼륨이다. 디버그 프로세스가 시작된 후 EC 태그는 매 M 사이클마다 DRAM에 저장될 수 있다.The sum of the GDS tag, the additional golden data, the EI tag, and the EI index is the total data volume uploaded before the start of the second session. After the debug process is started, the EC tags can be stored in the DRAM every M cycles.

따라서 두 번째 세션의 DRAM 사용은 [수학식 8]과 같이 설명될 수 있다.Thus, the DRAM usage of the second session can be described as [Equation 8].

[수학식 8]&Quot; (8) "

Figure 112017010152494-pat00010
Figure 112017010152494-pat00010

[수학식 8]에서, 캡쳐된 EC 태그는 두 번째 세션 동안

Figure 112017010152494-pat00011
의 볼륨이다. 즉, 구간 동안 모든 코어의 오류 발생 분포가 이항 분포를 따르고 각 Pi가 동일하다고 가정할 수 있다.In Equation (8), the captured EC tag is used for the second session
Figure 112017010152494-pat00011
. That is, it can be assumed that the distribution of error occurrence of all cores during the interval follows the binomial distribution and each Pi is the same.

세 번째 세션에서는 모든 코어의 오류 데이터를 탐지하기 위해 EI 인덱스, EC 인덱스 및 EC 태그가 DRAM에 업로드될 수 있다. 앞서 설명한 것처럼 EC 태그가 다시 생성될 수 있고, 디버그 프로세스가 시작되면 모든 코어의 오류 데이터가 매 M 사이클마다 DRAM에 저장될 수 있다. 결과적으로 세 번째 세션의 DRAM 사용량은 다음과 같이 계산됩니다.In the third session, EI index, EC index and EC tag can be uploaded to DRAM to detect error data of all cores. EC tags can be regenerated as described above, and when the debug process is started, the error data of all cores can be stored in the DRAM every M cycles. As a result, DRAM usage for the third session is calculated as:

[수학식 9]&Quot; (9) "

Figure 112017010152494-pat00012
Figure 112017010152494-pat00012

[수학식 9]에서, DRAM의 보존 영역은 디버그 프로세스를 수행하는데 필요하며 영역은 모든 세션에서 최대 DRAM 사용량 이상일 수 있다.In Equation (9), the storage area of the DRAM is required to perform the debug process, and the area may be equal to or greater than the maximum DRAM usage in all the sessions.

즉, 이전 및 제안 된 방법에 대한 DRAM 사용은 [수학식 10]과 같이 설명될 수 있다.That is, the DRAM usage for the previous and proposed methods can be described as [Equation 10].

[수학식 10]&Quot; (10) "

Figure 112017010152494-pat00013
Figure 112017010152494-pat00013

Figure 112017010152494-pat00014
Figure 112017010152494-pat00014

디버그 실행 시간을 계산하려면 온칩 샘플링 시간과 통신 시간이 필요하다. On-chip sampling time and communication time are required to calculate the debug execution time.

온칩 샘플링 시간은 트리거 포인트에서부터 디버그 세션이 끝날 때까지 경과하는 클럭 사이클과 관련이 있는데, 기존에는 전체 온칩 샘플링 클럭 사이클은 nN이다. 그러나, 본 발명에서는 3N만이 요구된다.The on-chip sampling time is related to the clock cycle from the trigger point to the end of the debug session. Previously, the entire on-chip sampling clock cycle was nN. However, in the present invention, only 3N is required.

또한 모든 코어에 오류가 없다고 가정하면, 첫 번째 세션만 필요하므로 N만 필요하다. 즉, 본 발명은 온-칩 샘플링 시간과 관련하여 디버그 시간을 상당히 줄일 수 있다.Assuming there is no error in all cores, only N is needed because only the first session is needed. That is, the present invention can significantly reduce the debug time with respect to the on-chip sampling time.

통신 시간은 디버그 데이터가 추적 포트를 통해 업로드 되고 오프로드 되는 시간으로서, 이전 방법의 경우 골든 MISR 서명이 한 번 업로드 되고 각 세션의 오류 데이터와 해당 S가 모든 세션에서 오프로드될 수 있다.The communication time is the time that the debug data is uploaded and offloaded through the trace port. In the previous method, the golden MISR signature is uploaded once and the error data of each session and the corresponding S can be offloaded in all sessions.

반면에 본 발명에서는 3회의 세션 동안 DRAM 사용을 전송해야만 하고, 모든 코어에 오류가 없는 경우에는 세션 1의 DRAM 사용량만 전송할 수 있다.On the other hand, in the present invention, DRAM usage must be transmitted during three sessions, and when there is no error in all cores, only DRAM usage of session 1 can be transmitted.

결국, 본 발명을 이용하면 온 칩 DRAM을 사용하여 멀티코어 환경에서 포스트 실리콘 디버그 시 에러라고 추정되는 데이터만 선택적으로 디버깅하는 기술을 제공할 수 있다. 또한, MISR (Multiple Input Signature Register)를 이용하여 선택적으로 에러 구간을 압축하여 분석한 후 칩 내 존재하는 DRAM에 디버그 데이터를 저장함으로써, 기존 기술에 대비하여 단 세 번의 디버그 세션만에 디버그를 완료하게 함으로서 디버그 시간을 단축할 수 있다. 또한, 전체 디버그 시간을 단축함으로써, 전체 칩 제조시간을 줄임과 동시에 칩 양산을 위한 비용을 감소시킬 수 있다.As a result, using the present invention, it is possible to provide a technique of selectively debugging only data estimated to be an error in post silicon debugging in a multicore environment using an on-chip DRAM. In addition, by selectively compressing and analyzing the error interval using the Multiple Input Signature Register (MISR), the debug data is stored in the DRAM existing in the chip, so that the debugging is completed in only three debug sessions This can shorten the debug time. In addition, by shortening the total debug time, it is possible to reduce the total chip manufacturing time and the cost for mass production of the chip.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable array (FPA) A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

300: 포스트 실리콘의 디버그 방법
310: 디버그 세션 1
311: 골든 MISR 시그니쳐들 생성
312: 구간 검출의 캡쳐 결과
313: 에러 구간들 검출
320: 디버그 세션 2
321: GDS 태그 비트들 생성
322: 클록 사이클 검출의 캡쳐 결과
323: 에러 구간 태그 비트들 생성
330: 디버그 세션 3
331: 에러 사이클 태그 비트들 생성
332: 캡쳐 에러 데이터
333: 캡쳐된 데이터 디버그
300: Debug method of post silicon
310: Debug Session 1
311: Create Golden MISR Signatures
312: Capture result of interval detection
313: Detection of error intervals
320: Debug Session 2
321: Generation of GDS tag bits
322: Capture result of clock cycle detection
323: Generate error interval tag bits
330: Debug Session 3
331: Generate error cycle tag bits
332: Capture error data
333: Debug the captured data

Claims (16)

디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 단계;
상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 단계; 및
상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계를 포함하고,
상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계는,
상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 저장하는 단계; 및
상기 저장된 에러 데이터를 선별하여 디버그하는 단계
를 포함하는 포스트 실리콘의 디버그 방법.
Generating golden data corresponding to a debug section based on a simulation before the start of debug and uploading the generated golden data to a trace buffer to identify error intervals in the debug section;
Detecting an error cycle corresponding to the identified error intervals; And
And selectively debugging the error data corresponding to the detected error cycle,
Wherein the step of selectively debugging error data corresponding to the detected error cycle comprises:
Selectively storing error data corresponding to the detected error cycle; And
Selecting and debugging the stored error data
/ RTI >
제1항에 있어서,
상기 에러 구간들을 파악하는 단계는,
상기 골든 데이터를 상기 트레이스 버퍼에 업로드 하되, JTAG(Joint Test Action Group)를 포함하는 외부 인터페이스를 통해 업로드 하는 단계
를 포함하는 포스트 실리콘의 디버그 방법.
The method according to claim 1,
The step of determining the error intervals comprises:
Uploading the golden data to the trace buffer through an external interface including JTAG (Joint Test Action Group)
/ RTI >
디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 단계;
상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 단계; 및
상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계를 포함하고,
상기 에러 구간들을 파악하는 단계는,
상기 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 상기 골든 데이터로 결정하는 단계;
상기 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 상기 골든 데이터를 비교하며 에러 여부를 판단하는 단계; 및
상기 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록하는 단계
를 포함하는 포스트 실리콘의 디버그 방법.
Generating golden data corresponding to a debug section based on a simulation before the start of debug and uploading the generated golden data to a trace buffer to identify error intervals in the debug section;
Detecting an error cycle corresponding to the identified error intervals; And
And selectively debugging the error data corresponding to the detected error cycle,
The step of determining the error intervals comprises:
Determining, as the golden data, data corresponding to a section expected to be not an error through the simulation;
Compressing the data through the MISR (Multiple Input Signature Register) while performing the debug, comparing the errored interval with the golden data, and determining whether the error is erroneous; And
And recording the data in which an error occurs as a result of the determination using a 1-bit EI tag
/ RTI >
제3항에 있어서,
상기 판단 결과 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록하는 단계
를 더 포함하는 포스트 실리콘의 디버그 방법.
The method of claim 3,
As a result of the determination, recording is performed using an index (EI index)
Further comprising the steps of:
제3항에 있어서,
상기 디버그 구간 중에서 에러 구간들을 파악하는 단계는,
상기 디버그 구간에 해당하는 골든 데이터를 상기 MISR(Multiple Input Signature Register) 사이즈로 분할하여 압축하는 단계; 및
상기 분할 및 압축된 골든 데이터를 칩 내 디램(DRAM)에 저장하는 단계
를 포함하는 포스트 실리콘의 디버그 방법.
The method of claim 3,
The step of determining error intervals in the debug interval comprises:
Dividing the golden data corresponding to the debug section into MISR (Multiple Input Signature Register) sizes and compressing the divided data; And
Storing the divided and compressed golden data in an in-chip DRAM (DRAM)
/ RTI >
삭제delete 제1항에 있어서,
상기 파악된 에러 구간 내의 모든 코어가 에러인 경우, 디램(DRAM)에 상기 생성된 골든 데이터를 추가하는 단계
를 더 포함하는 포스트 실리콘의 디버그 방법.
The method according to claim 1,
If all the cores in the identified error period are in error, adding the generated golden data to a DRAM
Further comprising the steps of:
디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 단계;
상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 단계; 및
상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 단계를 포함하고,
상기 에러 사이클을 검출하는 단계는,
사이클 별로 에러 사이클을 판별하여 태그 비트(EC tag) 형태로 저장하되, 쉐도우(shadow) 버퍼를 이용하여 상기 판별된 에러 사이클을 저장하는 단계
를 포함하는 포스트 실리콘의 디버그 방법.
Generating golden data corresponding to a debug section based on a simulation before the start of debug and uploading the generated golden data to a trace buffer to identify error intervals in the debug section;
Detecting an error cycle corresponding to the identified error intervals; And
And selectively debugging the error data corresponding to the detected error cycle,
Wherein the detecting the error cycle comprises:
The error cycle is determined for each cycle and stored in the form of an EC tag, and the error cycle is stored using a shadow buffer
/ RTI >
디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 세션 1 처리부;
상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 세션 2 처리부; 및
상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 세션 3 처리부를 포함하고,
상기 세션 3 처리부는,
상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 저장하고, 상기 저장된 에러 데이터를 선별하여 디버그하는
를 포함하는 포스트 실리콘의 디버그 장치.
A session 1 processing unit for generating golden data corresponding to a debug section based on a simulation before the start of debug and uploading the generated golden data to a trace buffer to identify error intervals in the debug section;
A session 2 processing unit for detecting an error cycle corresponding to the identified error intervals; And
And a session 3 processing unit for selectively debugging the error data corresponding to the detected error cycle,
The session 3 processing unit,
The error data corresponding to the detected error cycle is selectively stored, and the stored error data is selected and debugged
/ RTI >
제9항에 있어서,
상기 세션 1 처리부는,
상기 골든 데이터를 상기 트레이스 버퍼에 업로드 하되, JTAG(Joint Test Action Group)를 포함하는 외부 인터페이스를 통해 업로드 하는 단계
를 포함하는 포스트 실리콘의 디버그 장치.
10. The method of claim 9,
The session 1 processing unit,
Uploading the golden data to the trace buffer through an external interface including JTAG (Joint Test Action Group)
/ RTI >
디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 세션 1 처리부;
상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 세션 2 처리부; 및
상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 세션 3 처리부를 포함하고,
상기 세션 1 처리부는,
상기 시뮬레이션을 통해 에러가 아닌 것으로 예측되는 구간에 해당하는 데이터를 상기 골든 데이터로 결정하고, 상기 디버그를 진행하면서 MISR(Multiple Input Signature Register)를 통해 압축하여 실시간으로 에러인 구간과, 상기 골든 데이터를 비교하며 에러 여부를 판단하며, 상기 판단 결과 에러가 발생하는 데이터에 대해 1비트(bit)의 태그 비트(EI tag)를 이용하여 기록하는 포스트 실리콘의 디버그 장치.
A session 1 processing unit for generating golden data corresponding to a debug section based on a simulation before the start of debug and uploading the generated golden data to a trace buffer to identify error intervals in the debug section;
A session 2 processing unit for detecting an error cycle corresponding to the identified error intervals; And
And a session 3 processing unit for selectively debugging the error data corresponding to the detected error cycle,
The session 1 processing unit,
Through the simulation, it is determined that the data corresponding to the section expected to be non-error is determined as the golden data, and the debugging is performed through the Multiple Input Signature Register (MISR) And judges whether or not an error has occurred, and writes the error-generating data using a 1-bit EI tag.
제11항에 있어서,
상기 세션 1 처리부는,
상기 판단 결과 에러가 발생하지 않는 구간에 대해서는 인덱스(EI index)를 이용하여 기록하는 포스트 실리콘의 디버그 장치.
12. The method of claim 11,
The session 1 processing unit,
And wherein an interval (EI index) is used to record an interval in which no error occurs as a result of the determination.
제11항에 있어서,
상기 세션 1 처리부는,
상기 디버그 구간에 해당하는 골든 데이터를 상기 MISR(Multiple Input Signature Register) 사이즈로 분할하여 압축하고, 상기 분할 및 압축된 골든 데이터를 칩 내 디램(DRAM)에 저장하는 포스트 실리콘의 디버그 장치.
12. The method of claim 11,
The session 1 processing unit,
Dividing the golden data corresponding to the debug section into the MISR (Multiple Input Signature Register) size, and storing the divided and compressed golden data in a DRAM (on-chip DRAM).
삭제delete 제9항에 있어서,
상기 세션 1 처리부는,
상기 파악된 에러 구간 내의 모든 코어가 에러인 경우, 디램(DRAM)에 상기 생성된 골든 데이터를 추가하는 포스트 실리콘의 디버그 장치.
10. The method of claim 9,
The session 1 processing unit,
And adding the generated golden data to a DRAM if all of the cores in the identified error period are an error.
디버그 시작 전 시뮬레이션에 기초하여 디버그 구간에 해당하는 골든 데이터를 생성하고, 상기 생성된 골든 데이터를 트레이스 버퍼에 업로드 하여 상기 디버그 구간 중에서 에러 구간들을 파악하는 세션 1 처리부;
상기 파악된 에러 구간들에 상응하는 에러 사이클을 검출하는 세션 2 처리부; 및
상기 검출된 에러 사이클에 해당하는 에러 데이터를 선별적으로 디버그하는 세션 3 처리부를 포함하고,
상기 세션 2 처리부는,
사이클 별로 에러 사이클을 판별하여 태그 비트(EC tag) 형태로 저장하되, 쉐도우(shadow) 버퍼를 이용하여 상기 판별된 에러 사이클을 저장하는 포스트 실리콘의 디버그 장치.
A session 1 processing unit for generating golden data corresponding to a debug section based on a simulation before the start of debug and uploading the generated golden data to a trace buffer to identify error intervals in the debug section;
A session 2 processing unit for detecting an error cycle corresponding to the identified error intervals; And
And a session 3 processing unit for selectively debugging the error data corresponding to the detected error cycle,
The session 2 processing unit,
Wherein the error cycle is determined for each cycle and stored in the form of an EC tag, and the determined error cycle is stored using a shadow buffer.
KR1020170013806A 2017-01-31 2017-01-31 Apparatus and method of debugging post silicon using on-chip dram for multi-core design KR101958540B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170013806A KR101958540B1 (en) 2017-01-31 2017-01-31 Apparatus and method of debugging post silicon using on-chip dram for multi-core design

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170013806A KR101958540B1 (en) 2017-01-31 2017-01-31 Apparatus and method of debugging post silicon using on-chip dram for multi-core design

Publications (2)

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

Family

ID=63230241

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170013806A KR101958540B1 (en) 2017-01-31 2017-01-31 Apparatus and method of debugging post silicon using on-chip dram for multi-core design

Country Status (1)

Country Link
KR (1) KR101958540B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102483739B1 (en) 2021-07-13 2022-12-30 연세대학교 산학협력단 Dram-based post-silicon debugging method and apparatus reusing bira cam structure

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009524140A (en) 2006-01-17 2009-06-25 エヌエックスピー ビー ヴィ Area protection device, instruction set, and method for protecting memory area
US20130326281A1 (en) * 2012-06-01 2013-12-05 Syntest Technologies, Inc. X-Tracer: A Reconfigurable X-Tolerance Trace Compressor for Silicon Debug

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009524140A (en) 2006-01-17 2009-06-25 エヌエックスピー ビー ヴィ Area protection device, instruction set, and method for protecting memory area
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
KR102483739B1 (en) 2021-07-13 2022-12-30 연세대학교 산학협력단 Dram-based post-silicon debugging method and apparatus reusing bira cam structure

Also Published As

Publication number Publication date
KR20180089121A (en) 2018-08-08

Similar Documents

Publication Publication Date Title
US10732221B2 (en) Signal tracing using on-chip memory for in-system post-fabrication debug
JP4233893B2 (en) Instruction tracing in data processing systems.
Anis et al. Low cost debug architecture using lossy compression for silicon debug
US8892973B2 (en) Debugging control system using inside core event as trigger condition and method of the same
US6961872B2 (en) Microcomputer and debugging system
US7739093B2 (en) Method of visualization in processor based emulation system
US7930165B2 (en) Procedure and device for emulating a programmable unit providing system integrity control
JP6653756B2 (en) Method and circuit for debugging a circuit design
US20220066909A1 (en) Waveform based reconstruction for emulation
US20140053036A1 (en) Debugging multiple exclusive sequences using dsm context switches
CN110959121B (en) Logic analyzer for integrated circuit
KR101958540B1 (en) Apparatus and method of debugging post silicon using on-chip dram for multi-core design
CN117454811A (en) Verification method and device for design to be tested
JP5018781B2 (en) Signal selection device, circuit correction device, circuit simulator, circuit emulator, signal selection method and program
Oh et al. An on-chip error detection method to reduce the post-silicon debug time
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
US11755804B2 (en) Hybrid synchronous and asynchronous control for scan-based testing
US20220187369A1 (en) Method and apparatus for debugging integrated circuit systems using scan chain
KR101943715B1 (en) Method and apparatus for inspecting error of system on chip
Raimi et al. Analyzing a PowerPC/sup TM/620 microprocessor silicon failure using model checking
CN115629962A (en) Software self-test-based network-on-thousand-core-chip parallel online test method
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
Kuan et al. Progressive-backspace: efficient predecessor computation for post-silicon debug

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