KR20020032936A - 반도체 칩의 논리 기능 검증용 에뮬레이터 장치 및 방법 - Google Patents

반도체 칩의 논리 기능 검증용 에뮬레이터 장치 및 방법 Download PDF

Info

Publication number
KR20020032936A
KR20020032936A KR1020000063713A KR20000063713A KR20020032936A KR 20020032936 A KR20020032936 A KR 20020032936A KR 1020000063713 A KR1020000063713 A KR 1020000063713A KR 20000063713 A KR20000063713 A KR 20000063713A KR 20020032936 A KR20020032936 A KR 20020032936A
Authority
KR
South Korea
Prior art keywords
pin signal
software
signal
pin
software variable
Prior art date
Application number
KR1020000063713A
Other languages
English (en)
Other versions
KR100392569B1 (ko
Inventor
경종민
기안도
이승종
전영욱
Original Assignee
김종석
(주)다이나릿시스템
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 김종석, (주)다이나릿시스템 filed Critical 김종석
Priority to KR10-2000-0063713A priority Critical patent/KR100392569B1/ko
Priority to US09/760,645 priority patent/US20020052729A1/en
Priority to EP01250341A priority patent/EP1202193A3/en
Priority to JP2001295225A priority patent/JP2002189611A/ja
Publication of KR20020032936A publication Critical patent/KR20020032936A/ko
Application granted granted Critical
Publication of KR100392569B1 publication Critical patent/KR100392569B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 출원에는 프로세싱 엔진과 타겟 인터페이스 엔진이 상호 작용하는 에뮬레이션 사용 환경에서 프로세싱 엔진이 수행하는 소프트웨어 모델의 변수 값과 타겟 인터페이스 엔진에 의해 생성되는 핀 신호를 동기시켜서 관찰할 수 있도록 해 주는 개선된 에뮬레이터 장치 및 방법이 개시되어 있다. 타겟 시스템에 장착될 타겟 칩의 논리 설계를 검증하기 위한 본 발명에 따른 에뮬레이터 장치는 상기 타겟 칩의 논리 설계에 대응하는 적어도 하나의 소프트웨어 변수를 포함하는 소프트웨어 알고리즘을 실행하기 위한 프로세싱 엔진, 및 상기 타겟 시스템과 인터페이스하고 있으며, 상기 프로세싱 엔진의 알고리즘 처리에 응답하여 상기 타겟 시스템으로 또는 상기 타겟 시스템으로부터 핀 신호를 송수신하기 위한 타겟 인터페이스 엔진을 포함한다. 상기 적어도 하나의 소프트웨어 변수와 상기 핀 신호는 상기 알고리즘의 실행에 따라 시간적으로 변화하며, 상기 프로세싱 엔진은 선정된 시간에서의 상기 적어도 하나의 소프트웨어 변수 값과 상기 핀 신호 값을 대응시키기 위한 수단을 포함하고 있다. 또한, 타겟 시스템에 장착될 타겟 칩의 논리 설계를 검증하기 위한 본 발명에 따른 에뮬레이션 방법은 상기 타겟 칩의 논리 설계에 대응하는 적어도 하나의 소프트웨어 변수를 포함하는 소프트웨어 알고리즘을 실행하는 단계, 상기 소프트웨어 알고리즘의 실행에 따라 상기 타겟 시스템으로 전송될 핀 신호를 생성하는 단계, 및 상기 적어도 하나의 소프트웨어 변수와 상기 핀 신호의 변화 값에 대한 시간적 이력을 제공하는 단계를 포함한다.

Description

반도체 칩의 논리 기능 검증용 에뮬레이터 장치 및 방법{APPARATUS FOR EMULATING A LOGIC FUNCTION OF A SEMICONDUCTOR CHIP AND METHOD THEREOF}
본 발명은 일반적으로 반도체 칩 에뮬레이션 기법에 관한 것으로, 특히, 반도체 칩의 논리 설계에 대응하는, 고급 언어로 구현된 소프트웨어 알고리즘 또는 모델에 기초하여 반도체 칩의 논리 기능을 검증하기 위한 에뮬레이터 장치 및 그 방법에 관한 것이다.
집적 회로로 이루어진 반도체 칩의 제조에는 많은 시간과 비용이 소요될 뿐 아니라, 최근에는 이들 반도체 칩 및 이를 탑재한 시스템의 복잡도가 점차 높아지고 있다. 따라서, 이들 칩을 실제 제조하기 이전의 설계 과정에서부터 설계 오류를 제거하는 것이 바람직하고, 이에 따라 칩의 "논리 설계(logic design)"를 검증하고자 하는 많은 노력이 있어 왔다. 그러한 검증 방법 중의 하나로, 반도체 칩 (이하, "타겟 칩"이라 함)의 타겟 논리 (타겟 칩으로 설계 및 구현되어야 할 논리 기능)의 실제 구현에 앞서 이 타겟 논리의 기능적 오류를 타겟 시스템 (타겟 칩이 장착될 응용 시스템)과 연관지어 검증하는 에뮬레이션 방법이 알려져 있다.
통상적으로, 논리 기능의 검증은 소프트웨어 모델링, 하드웨어 모델링 또는 이들의 조합에 의해 수행되어져 왔다. 소프트웨어 모델링이란 타겟 칩에 의해 수행될 논리 기능을 소프트웨어를 통해 기술하는 것을 말하는 것으로, 이에는 주로 C, C++ 등과 같은 고급 프로그래밍 언어나 VHDL, Verilog등과 같은 하드웨어 기술 언어(HDL)가 사용되어 왔다. 그러나, 하드웨어 기술 언어는 C, C++ 등의 소프트웨어 프로그래밍 언어에 비해 타겟 칩의 논리 기능을 기술하거나 디버그하기가 용이하지 않으며 그 실행 속도 또한 느리기 때문에, 논리 기능의 설계 및 검증에 많은 시간이 소요되는 문제점이 있다. 이에, 최근에는 타겟 칩의 논리 기능을 C, C++ 등의 소프트웨어 프로그래밍 언어를 사용하여 모델링한 뒤, 이를 타겟 시스템에 접목해 그 기능적 오류를 검증하고, 이어서 이 논리 기능을 하드웨어와 소프트웨어로 각각 분할하여 구현하는 형태의 논리 기능 설계 및 검증 방식이 주목 받고 있다. 이러한 접근 방식은 전술한 하드웨어 기술 언어(HDL) 기반의 에뮬레이션 방식에 비해 설계 및 검증에 소요되는 시간을 현저히 줄일 수 있으므로, 최근 등장한 단일 칩 시스템(System-On-A-Chip) 등에서와 같이 타겟 칩의 논리 기능의 복잡도가 증가하는 경우에 보다 효율적인 에뮬레이션을 제공할 수 있다.
한편, 미국특허 제4,901,259호는 소프트웨어 프로그래밍 언어 또는 HDL로 기술된 소프트웨어 모델을 인터페이스를 통해 타겟 시스템에 연결된 범용 컴퓨터를 사용하여 실행하는 "ASIC 에뮬레이터"를 개시하고 있다. 그러나, 이 ASIC 에뮬레이터는 단순히 범용의 호스트 컴퓨터에서 실행되고 있는 ASIC 소프트웨어 모델에 의해 생성된 핀 I/O와 타겟 시스템상의 하드웨어 장치에 의해 생성된 핀 I/O를 서로 동기시키는 일반적인 핀 I/O 동기화기에 불과하다. 즉, 타겟 시스템과의 외부 인터페이스용으로 사용되는 모든 핀 신호 값들이 호스트 컴퓨터인 범용 컴퓨터에서 실행되고 있는 ASIC 소프트웨어 모델에 의해 생성되고, ASIC 에뮬레이터는 단지 이 핀 신호 값들을 전기적 신호로 변환하여 타겟 시스템내의 ASIC bare 소켓으로 전달하는 역할만을 수행한다. 그러나, 호스트 컴퓨터내의 소프트웨어 모델은 이러한 외부 인터페이스용 핀 신호들의 생성과 관련된 전 과정을 실행하기에는 그 실행 속도가 너무 느리고, 또한 호스트 컴퓨터 역시 범용 오퍼레이팅 시스템에 그 기반을 두고 있기 때문에 논리 기능의 알고리즘의 실행에만 컴퓨팅 자원을 할당할 수 없어 결과적으로 ASIC 소프트웨어 모델의 알고리즘의 실행 속도가 늦어진다는 문제점이 있다. 따라서, 이러한 에뮬레이팅 시스템을 통해서는 고속 에뮬레이션이 불가능하고, 다양한 VLSI 설계에 어려움이 따른다
본 발명의 발명자는 이상의 종래 에뮬레이팅 시스템의 문제점에 대처하기 위하여, 미국특허출원 제09/680,467호에서, 타겟 시스템과 연동시킨 상태의 시스템 레벨에서 C, C++ 등의 고급 프로그래밍 언어로 모델링 된 타겟 칩의 논리 기능을설계의 초기 단계에서 고속 검증할 수 있도록 하는 에뮬레이터 장치 및 방법을 제안한 바 있다. 이러한 에뮬레이터 장치는, 고급 프로그래밍 언어로 작성된 알고리즘을 컴파일하여 얻은 코드를 실행하는 적어도 하나의 프로세서를 포함하는 프로세싱 엔진과, 타겟 시스템과의 외부 인터페이스가 가능한 핀 신호를 생성하는 Field-Programmable Gate Arrays(FPGAs) 또는 Programmable Logic Devices(PLDs)와 같은 적어도 하나의 재설정가능 논리 장치를 포함하는 타겟 인터페이스 엔진의 두 종속 모듈로 이루어진다.
그러나, 전술한 미국특허출원 제09/680,467호에 개시된 에뮬레이터 장치에서는, 관측 대상인 하드웨어 핀 신호 또는 소프트웨어 변수값을 논리 분석기 또는 소프트웨어 디버거를 사용하여 디버깅을 수행하는 종래의 에뮬레이션 환경에서의 디버깅 방법과는 달리, 두 종속 모듈이 각기 다른 속도로 동작할 뿐만 아니라 두 모듈간의 상호 작용을 위한 인터페이스로 인해 두 모듈간의 정보 교환에 지연이 필연적으로 발생하기 때문에 이들 각 모듈에서 관찰되는 하드웨어 핀 신호의 파형과 소프트웨어 변수 값을 동기시켜 관찰해야만 한다는 문제점이 있다.
따라서, 이상의 프로세싱 엔진과 타겟 인터페이스 엔진이 상호 작용하는 에뮬레이션 환경에서 타겟 칩의 논리 기능을 설계하고 검증하는데 있어서는, 프로세싱 엔진이 수행하는 소프트웨어 모델내의 변수 값과 타겟 시스템과 인터페이스하고 있는 타겟 인터페이스 엔진으로부터의 하드웨어 핀 신호의 파형을 동기시켜 관찰할 수 있도록 해주는 메커니즘이 절실히 요구되고 있다.
따라서, 본 발명의 목적은 목표 칩의 논리 설계를 용이하게 디버깅할 수 있도록 하여 에뮬레이션 사용 환경을 개선한 개선된 에뮬레이터 장치 및 방법을 제공하는 것이다.
본 발명의 다른 목적은 프로세싱 엔진과 타겟 인터페이스 엔진이 상호 작용하는 에뮬레이션 사용 환경에서 프로세싱 엔진이 수행하는 소프트웨어 모델의 변수 값과 타겟 인터페이스 엔진에 의해 생성되는 핀 신호 값의 시간적 변화를 용이하게 추적할 수 있도록 해 주는 개선된 에뮬레이터 장치 및 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 프로세싱 엔진과 타겟 인터페이스 엔진이 상호 작용하는 에뮬레이션 사용 환경에서 프로세싱 엔진이 수행하는 소프트웨어 모델의 변수 값과 타겟 인터페이스 엔진에 의해 생성되는 핀 신호를 동기시켜서 관찰할 수 있도록 해 주는 개선된 에뮬레이터 장치 및 방법을 제공하는 것이다.
본 발명의 한 특징에 따르면, 타겟 시스템에 장착될 타겟 칩의 논리 설계를 검증하기 위한 에뮬레이터 장치가 제공되는데, 이 장치는 상기 타겟 칩의 논리 설계에 대응하는 적어도 하나의 소프트웨어 변수를 포함하는 소프트웨어 알고리즘을 실행하기 위한 프로세싱 엔진, 및 상기 타겟 시스템과 인터페이스하고 있으며, 상기 프로세싱 엔진의 알고리즘 처리에 응답하여 상기 타겟 시스템으로 또는 상기 타겟 시스템으로부터 핀 신호를 송수신하기 위한 타겟 인터페이스 엔진을 포함한다. 또한, 상기 적어도 하나의 소프트웨어 변수와 상기 핀 신호는 상기 알고리즘의 실행에 따라 시간적으로 변화하며, 상기 프로세싱 엔진은 선정된 시간에서의 상기 적어도 하나의 소프트웨어 변수 값과 상기 핀 신호 값을 대응시키기 위한 수단을 포함하고 있다.
본 발명의 한 실시예에 따르면, 상기 타겟 인터페이스 엔진은 상기 타겟 시스템으로 송신될 핀 신호를 생성하며 상기 타겟 시스템으로부터 핀 신호를 수신하기 위한 핀 신호 생성기와, 상기 핀 신호 생성기와 상기 타겟 시스템 사이에서 송수신되는 상기 핀 신호를 입력받아 저장하기 위한 핀 신호 관찰기를 포함한다. 이 핀 신호 관찰기는 상기 핀 신호 값이 특정 조건을 만족시키는 경우를 정의하는 제1 트리거 사건의 발생을 감지하고, 상기 제1 트리거 사건의 발생에 응답하여 상기 프로세싱 엔진으로 제1 인터럽트 요청 신호를 전송한다. 이 제1 인터럽트 요청 신호를 수신한 상기 프로세싱 엔진은 상기 핀 신호 관찰기에 저장된 핀 신호 값을 그 내부에 있는 핀 신호값 저장 버퍼에 저장한다.
본 발명의 다른 실시예에 따르면, 상기 프로세싱 엔진은 상기 시간에 따라 변화하는 적어도 하나의 소프트웨어 변수를 관찰하고, 관찰되는 소프트웨어 변수 값이 저장될 수 있도록 제어하는 소프트웨어 변수 관찰기를 포함한다. 이 소프트웨어 변수 관찰기는 상기 시간에 따라 변화하는 소프트웨어 변수의 값이 특정 조건을 만족시키는 경우를 정의하는 제2 트리거 사건의 발생을 감지하며, 상기 제2 트리거 사건의 발생에 응답하여 제2 인터럽트 요청 신호를 출력한다. 이 때, 프로세싱 엔진은 상기 제2 인터럽트 요청 신호에 응답하여 상기 핀 신호 관찰기에 저장된 핀 신호 값을 상기 핀 신호값 저장 버퍼에 저장한다.
본 발명의 다른 특징에 따르면, 타겟 시스템에 장착될 타겟 칩의 논리 설계를 검증하기 위한 에뮬레이션 방법이 제공되는데, 이 방법은 상기 타겟 칩의 논리설계에 대응하는 적어도 하나의 소프트웨어 변수를 포함하는 소프트웨어 알고리즘을 실행하는 단계, 상기 소프트웨어 알고리즘의 실행에 따라 상기 타겟 시스템으로 전송될 핀 신호를 생성하는 단계, 및 상기 적어도 하나의 소프트웨어 변수와 상기 핀 신호의 변화 값에 대한 시간적 이력을 제공하는 단계를 포함한다.
본 발명의 한 실시예에 따르면, 상기 시간적 이력을 제공하는 단계는 상기 적어도 하나의 소프트웨어 변수의 시간에 따른 변화와 상기 핀 신호의 시간에 따른 변화를 기록하는 단계를 포함한다.
이러한 본 발명의 구성에 따르면, 에뮬레이션 장치의 두 종속 시스템인 프로세싱 엔진과 타겟 인터페이스 엔진 사이에서 발생하는 통신 시간 지연으로 인한 정보 손실을 보상하여, 소프트웨어 변수값과 이에 대응되는 하드웨어 핀 신호 값의 관찰 타이밍을 동기시킴으로써, 타겟 칩의 논리 설계 검증이 용이하게 된다.
도 1은 본 발명에 따른 에뮬레이터 장치와 타겟 시스템이 상호 연결된 전체 시스템 구성을 도시한 블록도.
도 2는 본 발명의 바람직한 실시예에 따른 프로세싱 엔진의 구성을 도시한 블록도.
도 3은 본 발명의 바람직한 실시예에 따른 타겟 인터페이스 엔진의 구성을 도시한 블록도.
도 4는 본 발명의 바람직한 실시예에 따른 프로세싱 엔진 내부의 메모리의 소프트웨어 구성을 도시한 블록도.
도 5는 본 발명의 바람직한 실시예에 따른 핀 신호 관찰기의 세부 구성을 도시한 블록도.
도 6은 본 발명의 바람직한 실시예에 따른 신호 선택기의 세부 구성을 도시한 블록도.
도 7은 본 발명의 바람직한 실시예에 따른 신호 샘플러의 구성을 도시한 블록도.
도 8은 본 발명의 바람직한 실시예에 따른 트리거 사건 감지기의 구성을 도시한 블록도.
도 9는 본 발명에 따라 핀 신호 관찰기측에서 감지된 하드웨어 트리거 사건 발생에 응답하여 핀 신호 관찰기측에서 일어나는 처리 과정을 도시한 플로우챠트.
도10은 본 발명에 따라 핀 신호 관찰기측에서 감지된 하드웨어 트리거 사건 발생에 응답하여 프로세싱 엔진측에서 일어나는 처리 과정을 도시한 플로우챠트.
도 11은 본 발명에 따라 타겟 칩 알고리즘내에서의 소프트웨어 트리거 사건 발생에 응답하여 프로세싱 엔진측에서 일어나는 처리 과정을 도시한 플로우챠트.
도 12는 종래 기술에 있어서 소프트웨어 변수 관찰 값과 하드웨어 핀 신호 관찰 값 사이의 측정 지연 시간을 도시한 타이밍도.
도 13은 본 발명에 따라 소프트웨어 변수 값의 저장 손실이 방지되는 원리를 도시한 도면.
도 1을 참조하면, 본 발명에 따른 에뮬레이터 장치와 타겟 시스템이 상호 연결된 전체 시스템 구성이 도시되어 있다. 도 1에 도시된 바와 같이, 본 발명에 따른 에뮬레이터 장치(100)는 프로세싱 엔진(101), 타겟 인터페이스 엔진(102), 그리고 이들을 상호 인터페이스하는, 예를 들어 33MHz 클럭으로 동작하는 PCI 버스 또는 Accelerated Graphics Port(AGP) 등과 같은 통신 채널(103)을 포함한다. 프로세싱 엔진(101)은 RS-232C 또는 USB 등과 같은 통신 포트(105)를 통해 호스트 컴퓨터(110)와 통신한다. 타겟 인터페이스 엔진(102)은 소켓 아답터(104)를 통해 에뮬레이션의 대상이 되는 타겟 칩이 장착 될 타겟 시스템(120)내의 소켓(121)에 결합된다. 소켓(121)은 타겟 시스템(120) 내에 있는 다른 로직(123) 또는 집적 회로(124)들과 연결되어, 타겟 시스템(120)의 일부 또는 전체 논리 기능을 수행하게 된다. 한편, 도 1에 도시한 바와 같이, 타겟 시스템(120) 내에는 에뮬레이션 대상이 되는 타겟 칩이 복수 개 존재할 수 있고, 이 경우 다른 타겟 칩은 타겟 시스템(120)상에 마련된 다른 소켓(122)을 통해 다른 에뮬레이터 장치(130)와 연결될 수 있다.
도 2는 도 1에 도시된 본 발명에 따른 프로세싱 엔진(101)의 일실시예를 도시한 도면이다. 도시된 바와 같이, 프로세싱 엔진(101)은 프로세서(201), 메모리(202), 호스트 브리지(203), 타이머(204), 및 기타 로직(205)으로 이루어진다. 프로세싱 엔진(101) 내의 메모리(202)에는 C/C++ 또는 이와 유사한 고급 언어로 작성된, 타겟 칩의 논리 기능에 대응하는 소프트웨어 알고리즘이 저장되는데, 실제로 이 알고리즘은 호스트 컴퓨터(110)에 의해 컴파일된 후, 실행 코드(executable code) 상태로 통신 포트(105)를 통해 프로세싱 엔진(101)의 메모리(202)로 다운로드되어 저장된다. 프로세싱 엔진(101) 내의 프로세서(201)는 이 다운로드된 실행 코드를 실행하여 타겟 칩의 특정 응용 분야에 대응하는 신호 처리, 변/복조, 암호화/복호화 등의 타겟 칩의 내부 논리 기능을 수행한다. 프로세서(201)와 메모리(202)는 호스트 브리지(203)를 통해 후술할 타겟 인터페이스 엔진(102)에 접속된다. 기타 로직(205)은 통신 포트(105)와 도시되지 않은 클럭 발생기, 전압 변환기 등 프로세싱 엔진(101)이 동작하는데 필요한 추가 회로들을 포함한다. 타이머(204)는 후술할 핀 신호와 소프트웨어 변수의 동기 관찰에 필요한 정확한 시간 정보를 제공하기 위한 것으로서, 그 일례로 카운터 등을 들 수 있다.
도 4는 도 2에 도시된 프로세싱 엔진(101) 내의 메모리(202)의 소프트웨어 구성을 도시한 도면이다. 도시된 바와 같이, 메모리(202)는 타겟 칩 알고리즘(400), 소프트웨어 변수 관찰기(401), 인터럽트 처리기(402), 타겟 인터페이스 엔진 제어기(403), 소프트웨어 변수값 저장 버퍼(404), 핀 신호값 저장 버퍼(405), 및 변수 및 신호 분석기(406)로 분할된다. 타겟 칩 알고리즘(400)은 전술한 바와 같이 호스트 컴퓨터(110)로부터 다운로드된 타겟 칩의 내부 논리 기능과 관련된 실행 코드가 저장되는 메모리 영역이다. 소프트웨어 변수 관찰기(401)는 관찰 대상이 되는 소프트웨어 변수 값의 변경이 발생하는 타겟 칩 알고리즘의 소스 코드 부분에 삽입되는 함수 루틴이 저장되는 메모리 영역으로서, 이 함수 루틴은 전술한 타겟 칩 알고리즘(400)과 마찬가지로 호스트 컴퓨터(110)에 의해 컴파일된 상태로 다운로드되어 저장된다.
이 함수 루틴은, 예를 들어 타겟 칩 알고리즘(400)에서 "A"라는 변수의 변화를 관찰하고자 하는 경우, 컴파일되기 이전의 소스 코드에서 변수 "A"와 관련되는 부분에 추가되거나 변경된다. 즉, 소스 코드 중 변수 "A"에 값 "b"를 기록하라는 소스 코드 "A = b;"가 발견되면, 이를 "SW_MONITOR(&A, b);"라는 소프트웨어 루틴으로 변환한다. 본 발명의 바람직한 실시예에 따르면, 소프트웨어 루틴 "SW_MONITOR()"은 변수 "A"에 값 "b" 를 기록하면서 동시에 메모리(202)에 별도로 마련된 소프트웨어 변수값 저장 버퍼(404)에 해당 변수의 변경 값을 저장하도록 하는 함수 루틴이 될 수 있다. 따라서, 프로세서(201)가 타겟 칩 알고리즘(400)의 수행 중 첨가된 이와 같은 함수 루틴(401)을 만나게 되면, 이 함수 루틴에 의해 관찰 대상이 되는 소프트웨어 변수 값이 소프트웨어 변수값 저장 버퍼(404)에 저장될 수 있게 된다. 이 경우, 후술할 타이머(204) (도 2 참조)에서 제공되는 시간 정보도 해당 변수 값과 함께 소프트웨어 변수값 저장 버퍼(404)에 저장될 수 있다. 또한, 소프트웨어 변수 관찰기(401)에는 타겟 칩 알고리즘(400) 내의 소프트웨어 변수들 중 임의의 선택된 변수들의 값의 소정 조합으로 정의되는, 사용자에 의해 설정되는 소프트웨어 트리거 조건을 미리 지정해 둘 수 있는데, 이 소프트웨어 변수 관찰기(401)는 상기 트리거 조건이 만족되는 경우 소프트웨어적인 인터럽트를 발생하여 후술할 인터럽트 처리기(402)가 수행될 수 있도록 한다.
한편, 인터럽트 처리기(402)는 프로세싱 엔진(101)이 타겟 칩 알고리즘(400)을 수행하는 도중 소프트웨어 모듈에서 발생하는 인터럽트를 처리하는 루틴이 저장되는 메모리 영역이다. 인터럽트 처리기(402)는 프로세서(201)에 의한 알고리즘(400)의 수행 도중, 소프트웨어 변수 관찰기(401)에 의해 관찰되어 소프트웨어 변수값 저장 버퍼(404)에 저장되는 소프트웨어 변수 값이 전술한 소프트웨어 트리거 조건과 일치하게 될 경우, 이에 따른 인터럽트를 처리하게 된다. 또한, 인터럽트 처리기(402)는 이러한 소프트웨어적인 인터럽트의 처리뿐 아니라, 후술할 타겟 인터페이스 엔진(102)측에서 발생하는 핀 신호 값들의 조합으로 정의된 하드웨어적인 인터럽트에 대해서도 유사한 처리를 행한다. 인터럽트 처리기(402)에 의해 수행되는 상세 내용에 대해서는 이하에서 상술하기로 한다.
타겟 인터페이스 엔진 제어기(403)는 타겟 인터페이스 엔진(102)을 제어하는 루틴이 저장되는 메모리 영역으로, 전술한 인터럽트 처리기(402)의 인터럽트 처리에 응답하여, 타겟 인터페이스 엔진(102)내의 핀 신호 관찰기에 의해 관찰 및 저장된 핀 신호 값들을 불러와 이를 메모리(202)내의 핀 신호값 저장 버퍼(405)에 저장하는 역할을 한다.
변수 및 신호 분석기(406)는 소프트웨어 변수값 저장 버퍼(404) 및 핀 신호값 저장 버퍼(405)에 저장된 정보를 이용하여, 예를 들어 에뮬레이션의 진행 상태 및 오류를 분석하는 작업을 수행하도록 프로그램될 수 있다.
도 3은 본 발명에 따른 타겟 인터페이스 엔진(102)의 일실시예를 도시한 도면이다. 타겟 인터페이스 엔진(102)은 통신 채널 제어기(300), 핀 신호 생성기(301), 및 핀 신호 관찰기(302)로 구성된다. 타겟 인터페이스 엔진(102)의 핀 신호 생성기(301) 및 핀 신호 관찰기(302)는 통신 채널 제어기(300)의 제어에 따라 통신 채널(103)을 통해 프로세싱 엔진(101)과 통신하도록 되어 있다. 핀 신호 생성기(301)는 프로세싱 엔진(101)에서의 알고리즘 처리에 응답하여 타겟 시스템(120)으로 또는 타겟 시스템(120)으로부터 기록/판독/제어 신호 등의 외부 핀 신호를 송수신한다. 핀 신호 생성기(301)는 타겟 시스템(120)과 인터페이스하고 있으며, 타겟 시스템(120)의 응용에 맞추어 타겟 시스템(120)상의 논리 회로 및 IC 등과 상호 동작하도록 설정되는 논리 장치이다. 본 발명의 바람직한 실시예에 따르면, 핀 신호 생성기(301)는 FPGA, PLD 등과 같은 프로그램가능/재설정가능 칩에 의해 구현될 수 있다. 타겟 시스템(120)에 적합하게 구현된 핀 신호 생성기(301)는 적절한 외부 핀 신호(104)들을 생성하여 이를 타겟 시스템(120)으로 제공함으로써, 결과적으로 타겟 시스템(120)의 응용이 실행되도록 한다.
핀 신호 관찰기(302)는 핀 신호 생성기(301)와 타겟 시스템(120) 간에 송수신되는 신호 및/또는 핀 신호 생성기(301) 내부의 신호를 입력으로 받아 저장하며, 전술한 핀 신호 생성기(301)와 마찬가지로 FPGA 또는 PLD등과 같은 재설정가능 또는 프로그램 가능한 논리 장치로 구현될 수 있다. 도 5를 참조하면, 본 발명의 바람직한 실시예에 따른 핀 신호 관찰기의 세부 구성이 예시되어 있다. 도시된 바와 같이, 핀 신호 관찰기(302)는 신호 선택기(501), 신호 샘플러(502), 트리거 사건 감지기(503), 버퍼(504), 클럭 발생 회로(506), 스템퍼(507), 저장 메모리(505) 및 핀 신호 관찰기 제어기(500)로 구성된다. 신호 선택기(501)는 핀 신호 생성기(301)와 타겟 시스템(120) 간의 인터페이스 신호(104, 304)와 핀 신호 생성기(301) 내부 회로의 신호(303)를 입력받아, 이 중 사용자에 의해 선택되는 관찰 대상의 신호만을 선택한다. 즉, 신호 선택기(501)는 핀 신호 관찰기(302)가 입력으로 받아들이는 다수의 핀 신호 중 관찰하고자 하는 일부 핀 신호만을 선택하는 역할을 하는 것으로, 이러한 신호 선택기(501)의 핀 신호 선택 기능은 사용자에 의해 임의로 프로그램 또는 재설정될 수 있다.
도 6은 5개 입력(601)으로부터 3개의 출력(602) 신호를 선택하는 신호 선택기의 일실시예를 도시하고 있다. 도시된 바와 같이, 사용자는 FPGA 또는 PLD등과 같은 재설정가능칩의 프로그램 가능 영역(603)에 미리 정의되어 있는 연결을 개방(604) 또는 단락(605) 상태로 적절히 프로그램함으로써 다수의 입력 핀 신호중 일부를 선택할 수 있다. 도6에서, O1은 I4, O2는 I2, O3는 I3가 연결되어 선택되는 예를 보이고 있다. 이상의 신호 선택기(501)를 이용함으로써, 사용자는 다수의 핀 신호들 중 관찰 대상의 핀 신호만을 부분적으로 선택할 수 있으며 아울러 이들 선택된 핀 신호들을 일정한 순서로 정렬할 수도 있게 된다.
다시 도 5를 참조하면, 신호 선택기(501)의 의해 선택된 핀 신호들은 계속하여 클럭 발생 회로(506)에서 생성된 클럭 신호에 기초하여 신호 샘플러(502)에 의해 샘플링된다. 도7은 본 발명에 따른 신호 샘플러(502)의 일실시예를 도시한 도면이다. 도시한 바와 같이 신호 샘플러(502)는 입력 신호, 즉 신호 선택기(501)에 의해 선택된 핀 신호(508)의 개수에 상응하는 복수 개의 플립플롭(701a-701n)으로 구성될 수 있다. 각 플립플롭(701a-701n)은 클럭 발생 회로(506)로부터 생성된 클럭 신호(510)에 동기되어 입력 핀 신호(508)를 샘플링함으로써 출력 신호(509)를 생성한다. 이 때, 신호 샘플러(502)에 의해 검출된 샘플링 시점을 구별하기 위하여, 출력 신호(509)에는 스템퍼(507)에 의해 생성된 시간 정보(511)가 함께 포함된다. 본 발명의 바람직한 실시예에 따르면, 스템퍼(507)는 에뮬레이터 장치의 초기화와 동시에 동작을 개시하여, 신호 샘플러(502)의 샘플링 기준 클럭이 되는 전술한 클럭 발생 회로(506)에 의해 생성된 클럭 신호(510)에 따라 증가하는 단순한 카운터로 구현될 수 있다.
다시 도 5를 참조하면, 신호 샘플러(502)에 의해 검출된 핀 신호 값들(509) 및 스템퍼(507)로부터의 시간 정보(511)는 버퍼(504)에 일시 저장된 후 최종적으로 저장 메모리(505)로 저장된다. 이처럼 저장 메모리(505)에는 샘플링된 핀 신호 뿐만 아니라 시간 정보인 스템프 정보도 함께 저장되므로, 후술할 트리거 사건 감지기(503)로부터 출력되는 트리거 발생 시점에서의 스템프 정보(808) (도 8 참조)를 이용하면 저장 메모리(505)에서 트리거 시점과 관련된 핀 신호의 저장 위치와 시간적 선후 관계를 정확히 식별해 낼 수 있게 된다. 버퍼(504)는 신호 샘플러(502)에 의한 핀 신호 검출 속도와 저장 메모리(505)의 참조 속도가 다를 경우 이 시차를 보상하기 위한 것으로, 바람직하게는 저장 메모리(505)에 저장될 정보의 양을 줄이기 위한 압축 기능도 내장할 수 있다. 저장 메모리(505)는 버퍼(504)로부터 공급되는 신호들을 입력 순서에 따라 차례로 저장하되, 새로이 공급되는 신호들을 저장하기 위해 최초 저장 내용부터 차례로 삭제해 나가는 소위 환형 FIFO(Circular First In First Out) 구조로 구현하는 것이 바람직하다. 또한, 저장 메모리(505)는, 예를 들어 SRAM 등과 같은 고속 메모리로 구현될 수 있으며 확장 가능한 구조로 되는 것이 바람직하다.
한편, 신호 샘플러(502)로부터 샘플링된 핀 신호들은 트리거 사건 감지기(503)로도 입력된다. 트리거 사건 감지기(503)는 이와 같이 샘플링된 소정 조합의 핀 신호 값들이 사용자에 의해 미리 설정된 트리거 조건과 일치하는 지의 여부를 검사하고, 일치하는 것으로 판단될 경우 그에 따른 인터럽트 요청 신호를 생성하는 역할을 한다. 도8을 참조하면, 본 발명의 바람직한 실시예에 따른 트리거 사건 감지기(503)의 세부 구성이 예시되어 있다. 도시된 바와 같이, 트리거 사건 감지기(503)는, 특정 신호 형태에 따라 사건 신호(805a, 805b)를 생성하는 복수개의 트리거 유닛 블록(800a, 800b)과, 이들 각 트리거 유닛 블록(800a, 800b)들이생성하는 복수개의 사건 신호(805a, 805b)들의 선후 관계를 판단하여 그 선후 관계가 미리 지정된 선후 관계와 일치할 경우 최종 트리거 신호(807)를 생성하는 트리거 제어기(806)로 구성된다.
각 트리거 유닛 블록(800a, 800b)은 샘플링된 다수의 핀 신호들 중 트리거 조건으로 사용되는 핀 신호의 위치를 지정하기 위한 마스크 레지스터(801a), 실제 트리거 조건으로 정의된 각 핀 신호의 패턴 값을 지정하기 위한 패턴 레지스터(802a), 및 이들 각 레지스터의 내용과 샘플링된 입력 데이터(509)를 비트 단위로 비교하는 다수의 논리 기능 회로(XOR 및 AND 게이트)를 포함한다. 마스크 레지스터(801a) 및 패턴 레지스터(802a)에 각각 설정될 트리거 조건 데이터는 후술할 핀 신호 관찰기 제어기(500)의 제어하에 사용자가 원하는 값으로 미리 설정된다. 이러한 구성에서는, 샘플링된 각각의 핀 신호 값과 패턴 레지스터(802a)에 설정된 내용이 비트 단위로 서로 비교되는 것으로 되지만, 실제 사건 신호(805a)의 생성시에는 모든 비트위치에서의 이들 핀 신호 값과 패턴 레지스터 내용의 비교 결과가 직접 사용되는 것이 아니라, 마스크 레지스터(801a)의 비트가 1로 설정된 위치에서의 샘플링된 신호 값(509)과 패턴 레지스터(802a)의 해당 비트를 비교한 값만이 유효한 비교 결과 데이터로써 이용되게 된다. 따라서, 이상의 구성은 샘플링된 다수의 핀 신호들중 특정 핀 신호만을 트리거 조건으로 이용하고자 하는 경우에 보다 유용할 수 있다. 그러나, 본 발명에 따른 트리거 사건 감지기(503)는 반드시 전술한 구성에 한정되는 것은 아니고, 마스크 레지스터(801a) 없이 패턴 레지스터(802a)만으로 구성되어, 샘플링된 모든 위치의 핀 신호 값(509)과 패턴 레지스터(802a)의 전체 내용을 비트 단위로 비교하여 그 비교 결과를 사건 신호(805a)의 발생에 사용하도록 구성될 수 있다. 또한, 각각의 트리거 유닛 블록(800a, 800b)은, 도시된 바와 같이 미리 값을 설정(804a)할 수 있는 하향 카운터(803a)를 추가로 포함함으로써, 해당 패턴 일치 사건이 발생하는 횟수를 사용자가 미리 지정하게 하고 전술한 패턴 일치 사건이 이 지정된 횟수 만큼 발생한 경우에 비로서 사건 신호(805a)가 발생하게 할 수도 있다.
각 트리거 유닛 블록(800a, 800b)으로부터 생성된 사건 신호(805a, 805b)들은 트리거 제어기(806)로 입력되고, 트리거 제어기(806)는 이들 사건 신호(805a, 805b)의 선후 관계가 사용자에 의해 미리 지정된 선후 관계와 일치하는 지의 여부를 조사하여 일치할 경우에만 최종 트리거 신호(807)를 생성한다. 이러한 일련의 사건 신호의 선후 관계의 사전 설정은 트리거 제어기(806)에 상태 머신을 프로그램 함으로써 가능하다.
한편, 트리거 사건 감지기(503)는 도 5 및 도 8에 도시된 바와 같이, 샘플링된 핀 신호 값(509) 이외에 스템퍼(507)로부터의 스템프 정보도 함께 입력받아, 최종 트리거 신호(807)가 발생하는 시점의 해당 스템프 정보(808)도 같이 출력하도록 함으로써, 프로세싱 엔진(101)측이 해당 트리거 시점을 정확히 식별할 수 있도록 한다. 트리거 사건이 발생한 경우 트리거 제어기(806)에서 생성된 트리거 신호(807)와 트리거 스템프 정보(808)는 핀 신호 관찰기 제어기(500)로 전달되고, 핀 신호 관찰기 제어기(500)는 통신 채널 제어기(300)를 통해 인터럽트를 프로세싱 엔진(101)으로 전달한다. 프로세싱 엔진이 인터럽트를 받아서 처리하는 과정은 이후에 상세히 설명한다.
다시 도 5를 참조하면, 핀 신호 관찰기(302) 내의 핀 신호 관찰 제어기(500)는 통신 채널 제어기(300)를 통해 프로세싱 엔진(101)측과 통신하며, 핀 신호 관찰기(302) 내부의 전술한 각각의 기능 블록들을 제어하는 역할을 한다. 즉, 핀 신호 관찰 제어기(500)는 신호 선택기(501)를 제어하여 관찰기(302)로 입력되는 다수의 핀 신호들 중 선택할 신호를 지정하고, 제어신호(512, 513)를 통해 클럭 발생 회로(506)와 스템퍼(507)를 제어함으로써 신호 샘플러(502)에 의한 핀 신호의 샘플링 동작을 제어하며, 트리거 사건 감지기(503)를 제어하여 트리거 조건을 설정하고, 저장 메모리(505)를 제어하여 저장된 핀 신호 정보를 통신 채널 제어기(300)를 통해 프로세싱 엔진(101)측에 전달하는 역할을 한다.
이하에서는, 지금까지 상술한 본 발명에 따른 에뮬레이터 장치의 구성과 도 9 내지 11에 도시된 플로우챠트를 이용하여, 타겟 인터페이스 엔진(102)의 핀 신호 관찰기(302)측에서 발생한 하드웨어 트리거 사건과 프로세싱 엔진(101)의 소프트웨어 변수 관찰기(401)측에서 발생한 소프트웨어 트리거 사건의 발생에 응답하여 일어나는 일련의 처리 과정에 대해 설명하기로 한다.
먼저, 도9는 핀 신호 관찰기(302)의 트리거 사건 감지기(503)에서 하드웨어 트리거 사건 발생에 응답하여 핀 신호 관찰기(302)측에서 일어나는 처리 과정을 도시한 플로우챠트이다. 본 처리 과정은 우선 에뮬레이션 시스템이 초기화되는 단계(901)로부터 시작된다. 에뮬레이션 시스템이 초기화되면 단계(902)에서 핀 신호 관찰기(302) 내부의 스템퍼(507)가 프로세싱 엔진(101) 내의 타이머(204)와 동기되어 동작을 개시한다. 이어서, 단계(903)에서 핀 신호의 샘플링을 개시하라는 상태가 될 때까지 기다린다. 단계(904)에서 핀 신호 생성기(301)와 타겟 시스템(120) 사이의 입출력 핀 신호(304) 및 핀 신호 생성기 내부의 신호(303)들 중 일부가 신호 선택기(501)에 의해 선택되고, 이들은 신호 샘플러(502)에 의해 클럭 발생 회로(506)에서 제공되는 클럭 단위로 샘플링되어 버퍼(504)에 저장된 후 다시 저장 메모리(505)에 순차적으로 저장되는 과정이 반복되어 나간다. 샘플링된 핀 신호들은 단계(905)에서 트리거 사건 감지기(503)에 의해 검사되어 미리 사용자에 의해 트리거 사건으로 설정된 특정 조건과 일치하는 지의 여부를 결정한다. 단계(905)에서 트리거 사건이 발생하지 않은 것으로 판단된 경우에는 단계(904)로 되돌아가 핀 신호의 샘플링 및 저장 동작을 계속하여 수행해 나가고, 반면 트리거 사건 감지기(503)에서 트리거 사건이 발생한 것으로 판단된 경우에는 단계(906)로 진행하여 핀 신호의 샘플링 및 저장 동작을 중지하고, 계속하여 단계(907)에서 프로세싱 엔진(101)측으로 인터럽트 요청 신호를 발생시킨다. 한편, 프로세싱 엔진(101)측에서는 이 인터럽트 요청 신호를 수신하게 되면 소프트웨어 변수값 및 핀 신호 값에 대한 분석을 행하고, 분석 종료시 핀 신호 관찰기(302)를 재기동시키는 신호를 핀 신호 관찰기(302)측으로 전송한다 (이에 대해서는, 이하 도 10을 참조하여 상술하기로 한다). 단계(908)에서는, 핀 신호 관찰기(302)가 이와 같은 재기동 신호를 프로세싱 엔진(101)측으로부터 수신하였는 지를 판단하여, 재기동 신호 수신시, 단계(903)으로 되돌아가 핀 신호의 샘플링 동작을 재개한다.
도 10의 플로우챠트를 참조하여, 도 9에서 설명된 핀 신호 관찰기 측에서 감지된 하드웨어 트리거 사건에 따라 발생된 인터럽트 요청 신호에 의해 프로세싱 엔진(101) 측에서 일어나는 처리 과정에 대해 설명하기로 한다. 우선, 단계(1000)에서 에뮬레이션 시스템이 초기화되어 동작을 개시하면, 프로세싱 엔진(101)의 프로세서(201)는 메모리(202) 내에 저장된 타겟 칩 알고리즘(400)을 실행해 나간다. 단계(1001)에서는, 알고리즘(400)의 실행 도중에 핀 신호 관찰기(302)로부터 인터럽트 요청 신호가 발생했는지의 여부를 점검한다. 만일 인터럽트 요청 신호가 수신된 경우에는, 단계(1002)에서 핀 신호 관찰기(302)측의 저장 메모리(505)에 저장된 핀 신호의 내용을 메모리(202)에 할당된 핀 신호값 저장 버퍼(405)로 복사한다. 계속하여, 단계(1003)에서, 프로세서(201)는 메모리(202)내의 변수 및 신호 분석기(406)를 실행하여 소프트웨어 변수값 저장 버퍼(404)와 핀 신호값 저장 버퍼(405)의 내용을 이용하여 필요한 디버깅을 수행한다. 마지막으로, 단계(1004)에서는, 핀 신호 관찰기(302)측으로 재기동 신호를 전송하여 핀 신호 관찰기(302)를 다시 기동시킴으로써, 다음으로 발생할 트리거 사건에 대비한다.
다음으로, 도 11을 참조하여, 타겟 칩 알고리즘 내의 소프트웨어 트리거 사건 발생에 응답하여 프로세싱 엔진(101)측에서 일어나는 처리 과정에 대해 설명하기로 한다. 우선, 단계(1101)에서 에뮬레이션 장치가 초기화되어 동작을 개시하면, 단계(1102)에서 타이머(204)를 초기화한다. 이 때, 도9에서 설명된 바와 같이, 핀 신호 관찰기(302) 내의 스템퍼(507) 역시 동기되어 초기화된다. 이어서, 단계(1103)에서는 타겟 칩 알고리즘(400)의 실행을 진행해 나가고, 단계(1104)에서 알고리즘의 실행이 종료된 것으로 판단되면, 단계(1105)로 진행하여 처리를 종료한다. 한편, 단계(1104)에서 알고리즘(400)이 아직 완료되지 않은 것으로 판단된 경우에는, 단계(1106)에서 프로세서(201)가 타겟 칩 알고리즘(400) 내에 삽입된 소프트웨어 변수 관찰기 함수 루틴을 만나게 되었는지의 여부를 판단하고, 만일 소프트웨어 변수 관찰기 루틴이 아직 나타나지 않은 것으로 판단된 경우에는 단계(1103)로 되돌아가 타겟 칩 알고리즘(400)을 계속 실행해 나가고 이 과정은 소프트웨어 변수 관찰기 루틴이 나타날 때까지 계속 반복된다. 한편, 단계(1106)에서 프로세서(201)가 소프트웨어 변수 관찰기 루틴을 만난 경우에는, 단계(1107)에서 해당 소프트웨어 변수 관찰기 루틴을 실행함으로써 이에 의해 관찰 대상이 되고 있는 소프트웨어 변수의 값을 메모리(202) 내의 소프트웨어 변수값 저장 버퍼(404)에 저장한다. 계속하여, 단계(1108)에서는, 소프트웨어 관찰기 루틴에 의해 관찰된 소프트웨어 변수 값을 기초로 소프트웨어 트리거 사건이 발생했는지의 여부를 판단한다. 트리거가 발생하지 않은 것으로 판단된 경우에는 단계(1103)로 되돌아가 남은 부분의 타겟 칩 알고리즘을 계속 실행하고, 반면 관찰된 소프트웨어 변수 값이 트리거 조건과 일치하는 경우에는 단계(1109)에서 핀 신호 관찰기(302)에 의한 핀 신호의 샘플링 동작을 정지시킨 다음, 계속하여, 단계(1110)에서 그 순간 핀 신호 관찰기(302)측의 저장 메모리(505)에 저장된 핀 신호의 내용을 불러와 이를 메모리(202) 내의 핀 신호 값 저장 버퍼(405)에 복사한다. 최종적으로 단계(1111)에서는, 메모리(202) 내의 변수 및 신호 분석기(406)를 실행하여 소프트웨어 변수값 저장 버퍼(404)와 핀 신호값 저장 버퍼(405)에 각각 저장된 내용을 이용하여 필요한 디버깅을 수행한 다음, 단계(1103)로 되돌아가 타겟 칩 알고리즘(400)의 남은부분을 계속 실행해 간다.
이하에서는, 도 12 및 13을 참조하여, 이상 설명한 본 발명에 따른 디버깅 방법을 통해 프로세싱 엔진측과 타겟 인터페이스 엔진측에서 각각 관찰되는 하드웨어 핀 신호 값 및 소프트웨어 변수 값이 손실 없이 저장되는 원리에 대해 설명하기로 한다.
먼저, 도 12의 타이밍도를 참조하여, 프로세싱 엔진과 타겟 인터페이스 엔진으로 구성된 종래의 에뮬레이터 장치에 있어서, 프로세싱 엔진측에서 측정되는 소프트웨어 변수 값과 타겟 인터페이스 엔진측의 핀 신호 관찰기에서 관찰되는 하드웨어 핀 신호 값 사이에 측정 지연이 발생하게 되는 이유를 설명한다. 에뮬레이션 수행 도중에 사용자에 의해 설정된 핀 신호의 조합으로 정의되는 특정 트리거 사건(1201)이 발생하게 되면, 핀 신호 관찰기는 내부의 트리거 사건 감지기를 통해 이를 감지하고, 프로세싱 엔진내의 프로세서로 트리거 인터럽트 요청 신호(1202)를 전달한다. 동시에, 핀 신호 관찰기는 트리거 사건 발생 이후 관찰되는 모든 하드웨어 핀 신호의 변화(1203)를 핀 신호 저장 메모리에 저장해 나간다. 한편, 프로세싱 엔진측에서는, 트리거 요청 신호가 프로세서로 전달되어 이에 대한 응답 신호(1204)의 송신이 있은 후, 소프트웨어 변수 값과 하드웨어 핀 신호 값의 동기를 맞추기 위한 타이머가 동작한 이후(1205)에야 비로서 하드웨어 트리거 사건 발생과 연관된 소트프웨어 변수의 변화(1206)를 소프트웨어 변수값 저장 버퍼에 저장하기 시작한다. 그러나, 전술한 트리거 인터럽트 요청 신호(1201)의 전송에는 하드웨어적인 시간 지연이 필연적으로 수반될 뿐만 아니라, 실제로 인터럽트 요청 신호(1201)가 프로세서에 도달한 경우라 하더라도, 그 순간 프로세서가 관찰 대상 소프트웨어 에뮬레이션 알고리즘 내에 삽입된 소프트웨어 변수 관찰기 루틴을 수행하고 있는 중이라면, 프로세서는 수신한 트리거 인터럽트 요청 신호에 즉시 응답할 수 없고 현재 수행중인 소프트웨어 변수 관찰기 루틴을 모두 수행한 뒤에야 비로서 요청 신호(1201)에 대한 트리거 인터럽트 응답(1204)을 할 수 있게 된다. 따라서, 이와 같은 하드웨어 핀 신호와 소프트웨어 변수 사이에 존재하는 하드웨어적인 시간 지연 및 소프트웨어적인 시간 지연의 인터럽트 응답 대기 시간으로 인해, 만일 인터럽트 응답 대기 시간 내에서 소프트웨어 변수 값이 변화하는 경우에는 그 변화 데이터를 저장할 수 없게 되어 버린다. 핀 신호 관찰기측과 프로세싱 엔진측이 통신 채널로서, 예를 들어 PCI 버스에 의해 상호 연결된 경우에는, 실제로 이러한 인터럽트 응답 대기 시간은 수 백 내지는 수 천 PCI 싸이클 정도 소요되어 데이터의 손실이 심각한 정도에 이른다.
도 13은 핀 신호 관찰기에 의한 하드웨어 트리거 사건의 감지에 응답하여, 본 발명에 따라 관찰 대상 소프트웨어 변수 값이 저장되는 과정을 설명한 도면이다. 도 13의 횡축은 시간 축을, 도형 (마름모, 원형)은 소프트웨어 변수의 변화를 각각 나타내고, 도면 하단의 변수 기록 창은 각 시간에서의 소프트웨어 변수값 저장 버퍼에 저장된 변수 변화의 내용을 나타낸다. 즉, 변수 기록 창(A)은 시간 A에서의 소프트웨어 변수의 변화 데이터가 저장된 저장 버퍼의 저장 내용을, 변수 기록 창(B)은 시간 B에서의 소프트웨어 변수의 변화 데이터가 저장된 저장 버퍼의 저장 내용을, 변수 기록 창(C)은 시간 C에서의 소프트웨어 변수의 변화 데이터가 저장된 저장 버퍼의 저장 내용을 각각 나타낸다. 이 때, 소프트웨어 변수값 저장 버퍼의 용량, 즉 변수 기록 창의 크기는 전술한 인터럽트 응답 대기 시간 동안의 변수 변화 데이터를 기록할 수 있을 정도의 크기로 설정되는 것이 바람직하다. 이와 같이, 본 발명에 따르면, 소정 시간 단위마다 (보다 구체적으로는, 프로세서가 관찰 대상 소프트웨어 에뮬레이션 알고리즘내에 삽입된 소프트웨어 변수 관찰기 루틴을 실행할 때마다) 발생하는 소프트웨어 변수의 변화 데이터를 적어도 인터럽트 응답 대기 시간 동안 소프트웨어 변수값 저장 버퍼가 항상 갱신 저장하고 있기 때문에, 핀 신호 관찰기측에서의 트리거 사건 발생 감지(1301)로부터 이에 대한 인터럽트 응답(1302)이 일어나기까지 인터럽트 응답 대기 시간이 존재하더라도 이 기간 중에 변화하는 소프트웨어 변수 값을 손실 없이 저장할 수 있게 된다.
비록 이상의 도 12 및 13를 참조한 설명에서는 핀 신호 관찰기측에 의해 하드웨어 트리거 사건이 감지될 경우의 프로세싱 엔진측에서 발생하는 소프트웨어 변수 값 측정 지연과 관련된 본 발명에 따른 동작 원리를 설명하였으나, 도 12 및 13의 설명은 전술한 도 9, 10, 11과 관련한 설명 부분에서와 같이, 프로세싱 엔진측에 의한 소프트웨어 트리거 사건의 감지시에 핀 신호 관찰기측에서 발생하는 하드웨어 핀 신호 값의 측정 지연에 대해서도 유사하게 적용될 수 있으며, 이에 따른 하드웨어 핀 신호 값의 데이터 손실 역시도 방지할 수 있게 된다.
이상 설명한 바와 같이, 본 발명에 따르면, 프로세싱 엔진과 타겟 인터페이스 엔진이 상호 작용하는 에뮬레이션 환경에서, 타겟 인터페이스 엔진측에서 관찰되는 하드웨어 핀 신호 값과 프로세싱 엔진측에서 실행 중인 소프트웨어 변수의 값의 관찰 타이밍을 동기시키는 것이 가능하게 되고, 이에 따라 타겟 시스템을 포함한 전체 시스템의 검증 시간을 줄일 수 있게 된다.
이상 설명한 본 발명의 기술 사상과 범주를 벗어나지 않는 범위에서, 본 기술 분야의 당업자라면, 상술한 실시예 이외에도 다양한 변경 및 수정 실시가 가능함을 알 수 있다. 따라서, 본 발명의 범위는 상술한 상세한 설명의 기재에 의해 제한적으로 해석되어서는 안되며, 오로지 이하의 특허청구범위에 의해서만 그 범위가 정해져야 한다.

Claims (40)

  1. 타겟 시스템에 장착될 타겟 칩의 논리 설계를 검증하기 위한 에뮬레이터 장치에 있어서,
    상기 타겟 칩의 논리 설계에 대응하는 적어도 하나의 소프트웨어 변수를 포함하는 소프트웨어 알고리즘을 실행하기 위한 프로세싱 엔진, 및
    상기 타겟 시스템과 인터페이스하고 있으며, 상기 프로세싱 엔진의 알고리즘 처리에 응답하여 상기 타겟 시스템으로 또는 상기 타겟 시스템으로부터 핀 신호를 송수신하기 위한 타겟 인터페이스 엔진
    을 포함하고,
    상기 적어도 하나의 소프트웨어 변수와 상기 핀 신호는 상기 알고리즘의 실행에 따라 시간적으로 변화하며, 상기 프로세싱 엔진은 선정된 시간에서의 상기 적어도 하나의 소프트웨어 변수 값과 상기 핀 신호 값을 대응시키기 위한 수단을 포함하는 에뮬레이터 장치.
  2. 제1항에 있어서, 상기 타겟 인터페이스 엔진은 i)상기 타겟 시스템으로 송신될 핀 신호를 생성하며 상기 타겟 시스템으로부터 핀 신호를 수신하기 위한 핀 신호 생성기와, ii) 상기 핀 신호 생성기와 상기 타겟 시스템 사이에서 송수신되는 상기 핀 신호를 입력받아 저장하기 위한 핀 신호 관찰기를 포함하는 에뮬레이터 장치.
  3. 제2항에 있어서, 상기 핀 신호 관찰기에 저장되는 핀 신호는 상기 핀 신호와 연관된 시간 정보와 함께 저장되는 에뮬레이터 장치.
  4. 제3항에 있어서, 상기 핀 신호 관찰기는 상기 핀 신호 값이 특정 조건을 만족시키는 경우를 정의하는 제1 트리거 사건의 발생을 감지하기 위한 트리거 사건 감지기를 포함하는 에뮬레이터 장치.
  5. 제4항에 있어서, 상기 트리거 사건 감지기는 상기 제1 트리거 사건의 발생에 응답하여 상기 프로세싱 엔진으로 제1 인터럽트 요청 신호를 전송하기 위한 수단을 더 포함하는 에뮬레이터 장치.
  6. 제5항에 있어서, 상기 선정된 시간은 상기 제1 트리거 사건의 발생 시점과 시간적으로 관련되어 있는 에뮬레이터 장치.
  7. 제1항 또는 제6항에 있어서, 상기 프로세싱 엔진은 상기 시간에 따라 변화하는 적어도 하나의 소프트웨어 변수를 관찰하고, 관찰되는 소프트웨어 변수 값이 저장될 수 있도록 제어하기 위한 소프트웨어 변수 관찰기를 포함하는 에뮬레이터 장치.
  8. 제7항에 있어서, 상기 소프트웨어 변수 관찰기는 상기 소프트웨어 알고리즘내에 삽입되는 소프트웨어 루틴인 에뮬레이터 장치.
  9. 제7항에 있어서, 상기 프로세싱 엔진은 상기 관찰되는 소프트웨어 변수 값을 저장하기 위한 소프트웨어 변수값 저장 버퍼를 더 포함하는 에뮬레이터 장치.
  10. 제9항에 있어서, 상기 소프트웨어 변수값 저장 버퍼에 저장되는 소프트웨어 변수값은 그와 연관된 시간 정보와 함께 저장되는 에뮬레이터 장치.
  11. 제10항에 있어서, 상기 프로세싱 엔진은 상기 인터럽트 요청 전송 수단으로부터의 제1 인터럽트 요청 신호의 전송 시점으로부터 소정의 응답 대기 시간 경과 후 응답하며, 상기 소프트웨어 변수값 저장 버퍼는 최소한 상기 소정의 응답 대기 시간 동안 상기 관찰되는 소프트웨어 변수의 시간적 변화값을 저장하기에 충분한 저장 용량을 가지는 에뮬레이터 장치.
  12. 제10항에 있어서, 상기 프로세싱 엔진은 핀 신호값 저장 버퍼 및, 상기 제1 인터럽트 요청 신호에 응답하여 상기 핀 신호 관찰기에 저장된 핀 신호 값을 상기 핀 신호값 저장 버퍼에 저장하는 것을 제어하기 위한 수단을 더 포함하는 에뮬레이터 장치.
  13. 제9항에 있어서, 상기 소프트웨어 변수 관찰기는 상기 시간에 따라 변화하는 소프트웨어 변수의 값이 특정 조건을 만족시키는 경우를 정의하는 제2 트리거 사건의 발생을 감지하기 위한 수단을 더 포함하는 에뮬레이터 장치.
  14. 제13항에 있어서, 상기 소프트웨어 변수 관찰기는 상기 제2 트리거 사건의 발생에 응답하여 제2 인터럽트 요청 신호를 출력하기 위한 수단을 포함하는 에뮬레이터 장치.
  15. 제14항에 있어서, 상기 프로세싱 엔진은 상기 제2 인터럽트 요청 신호에 응답하여 상기 핀 신호 관찰기에 저장된 핀 신호 값을 상기 핀 신호값 저장 버퍼에 저장하는 것을 제어하기 위한 수단을 포함하는 에뮬레이터 장치.
  16. 제12항 또는 제15항에 있어서, 상기 프로세싱 엔진은 상기 소프트웨어 변수값 저장 버퍼 및 상기 핀 신호값 저장 버퍼에 저장된 정보에 근거하여 상기 에뮬레이터 장치의 에뮬레이션 상태 또는 오류를 분석하기 위한 변수 및 신호 분석기를 더 포함하는 에뮬레이터 장치.
  17. 타겟 시스템에 장착될 타겟 칩의 논리 설계를 검증하기 위한 에뮬레이터 장치에 있어서,
    상기 타겟 칩의 논리 설계에 대응하는 적어도 하나의 소프트웨어 변수를 포함하는 소프트웨어 알고리즘을 실행하기 위한 프로세싱 엔진, 및
    상기 타겟 시스템과 인터페이스하고 있으며, 상기 프로세싱 엔진의 알고리즘 처리에 응답하여 상기 타겟 시스템으로 또는 상기 타겟 시스템으로부터 핀 신호를 송수신하기 위한 타겟 인터페이스 엔진을 포함하고,
    상기 적어도 하나의 소프트웨어 변수와 상기 핀 신호는 상기 알고리즘의 실행에 따라 시간적으로 변화하며, 상기 프로세싱 엔진은 상기 적어도 하나의 소프트웨어 변수의 시간에 따른 변화를 추적하기 위한 제1 수단을 포함하며, 상기 타겟 인터페이스 엔진은 상기 핀 신호의 시간에 따른 변화를 추적하기 위한 제2 수단을 포함하며, 상기 제1 수단과 상기 제2 수단은 동작적으로 결합되어 있는 에뮬레이터 장치.
  18. 제17항에 있어서, 상기 타겟 인터페이스 엔진은 상기 타겟 시스템으로 송신될 핀 신호를 생성하며 상기 타겟 시스템으로부터 핀 신호를 수신하기 위한 핀 신호 생성기를 더 포함하며, 상기 제2 수단은 상기 핀 신호 생성기와 상기 타겟 시스템 사이에서 송수신되는 상기 핀 신호를 입력받아 저장하기 위한 핀 신호 관찰기를 포함하는 에뮬레이터 장치.
  19. 제18항에 있어서, 상기 핀 신호 관찰기에 저장되는 핀 신호는 상기 핀 신호와 연관된 시간 정보와 함께 저장되는 에뮬레이터 장치.
  20. 제19항에 있어서, 상기 핀 신호 관찰기는 상기 핀 신호 값이 특정 조건을 만족시키는 경우를 정의하는 제1 트리거 사건의 발생을 감지하기 위한 트리거 사건 감지기를 포함하는 에뮬레이터 장치.
  21. 제20항에 있어서, 상기 트리거 사건 감지기는 상기 제1 트리거 사건의 발생에 응답하여 상기 프로세싱 엔진으로 제1 인터럽트 요청 신호를 전송하기 위한 수단을 더 포함하는 에뮬레이터 장치.
  22. 제17항 또는 제21항에 있어서, 상기 제1 수단은 상기 시간에 따라 변화하는 적어도 하나의 소프트웨어 변수를 관찰하고, 관찰되는 소프트웨어 변수 값이 저장될 수 있도록 제어하기 위한 소프트웨어 변수 관찰기를 포함하는 에뮬레이터 장치.
  23. 제22항에 있어서, 상기 소프트웨어 변수 관찰기는 상기 소프트웨어 알고리즘내에 삽입되는 소프트웨어 루틴인 에뮬레이터 장치.
  24. 제22항에 있어서, 상기 제1 수단은 상기 관찰되는 소프트웨어 변수 값을 저장하기 위한 소프트웨어 변수값 저장 버퍼를 더 포함하는 에뮬레이터 장치.
  25. 제24항에 있어서, 상기 소프트웨어 변수값 저장 버퍼에 저장되는 소프트웨어 변수값은 그와 연관된 시간 정보와 함께 저장되는 에뮬레이터 장치.
  26. 제25항에 있어서, 상기 제1 수단은 상기 인터럽트 요청 전송 수단으로부터의 제1 인터럽트 요청 신호의 전송 시점으로부터 소정의 응답 대기 시간 경과 후 응답하며, 상기 소프트웨어 변수값 저장 버퍼는 최소한 상기 소정의 응답 대기 시간 동안 상기 관찰되는 소프트웨어 변수의 시간적 변화값을 저장하기에 충분한 저장 용량을 가지는 에뮬레이터 장치.
  27. 제25항에 있어서, 상기 제1 수단은 핀 신호값 저장 버퍼, 및 상기 제1 인터럽트 요청 신호에 응답하여 상기 핀 신호 관찰기에 저장된 핀 신호 값을 상기 핀 신호값 저장 버퍼에 저장하는 것을 제어하기 위한 수단을 더 포함하는 에뮬레이터 장치.
  28. 제24항에 있어서, 상기 소프트웨어 변수 관찰기는 상기 시간에 따라 변화하는 소프트웨어 변수의 값이 특정 조건을 만족시키는 경우를 정의하는 제2 트리거 사건의 발생을 감지하기 위한 수단을 더 포함하는 에뮬레이터 장치.
  29. 제28항에 있어서, 상기 소프트웨어 변수 관찰기는 상기 제2 트리거 사건의 발생에 응답하여 제2 인터럽트 요청 신호를 출력하기 위한 수단을 포함하는 에뮬레이터 장치.
  30. 제29항에 있어서, 상기 제1 수단은 상기 제2 인터럽트 요청 신호에 응답하여 상기 핀 신호 관찰기에 저장된 핀 신호 값을 상기 핀 신호값 저장 버퍼에 저장하는 것을 제어하기 위한 수단을 포함하는 에뮬레이터 장치.
  31. 제27항 또는 제30항에 있어서, 상기 제1 수단은 상기 소프트웨어 변수값 저장 버퍼 및 핀 신호값 저장 버퍼에 저장된 정보에 근거하여 상기 에뮬레이터 장치의 에뮬레이션 상태 또는 오류를 분석하기 위한 변수 및 신호 분석기를 더 포함하는 에뮬레이터 장치.
  32. 타겟 시스템에 장착될 타겟 칩의 논리 설계를 검증하기 위한 에뮬레이션 방법에 있어서,
    상기 타겟 칩의 논리 설계에 대응하는 적어도 하나의 소프트웨어 변수를 포함하는 소프트웨어 알고리즘을 실행하는 단계 - 상기 적어도 하나의 소프트웨어 변수는 상기 소프트웨어 알고리즘의 실행에 따라 시간적으로 변화함 -,
    상기 소프트웨어 알고리즘의 실행에 따라 상기 타겟 시스템으로 전송될 핀 신호를 생성하는 단계 - 상기 핀 신호는 상기 소프트웨어 알고리즘의 실행에 따라 시간적으로 변화함 -, 및
    상기 적어도 하나의 소프트웨어 변수와 상기 핀 신호의 변화 값에 대한 시간적 이력을 제공하는 단계
    를 포함하는 에뮬레이션 방법.
  33. 제32항에 있어서, 상기 시간적 이력을 제공하는 단계는 상기 적어도 하나의 소프트웨어 변수의 시간에 따른 변화를 기록하는 단계를 포함하는 에뮬레이션 방법.
  34. 제32항에 있어서, 상기 시간적 이력을 제공하는 단계는 상기 핀 신호의 시간에 따른 변화를 기록하는 단계를 포함하는 에뮬레이션 방법.
  35. 제34항에 있어서, 상기 핀 신호 값이 특정 조건을 만족시키는 경우를 정의하는 제1 트리거 사건의 발생을 감지하는 단계를 더 포함하는 에뮬레이션 방법.
  36. 제35항에 있어서, 상기 제1 트리거 사건의 발생에 응답하여 제1 인터럽트 요청 신호를 발생시키는 단계를 더 포함하는 에뮬레이션 방법.
  37. 제33항에 있어서, 상기 시간에 따라 변화하는 소프트웨어 변수의 값이 특정 조건을 만족시키는 경우를 정의하는 제2 트리거 사건의 발생을 감지하는 단계를 더 포함하는 에뮬레이션 방법.
  38. 제37항에 있어서, 상기 제2 트리거 사건의 발생에 응답하여 제2 인터럽트 요청 신호를 발생시키는 단계를 더 포함하는 에뮬레이션 방법.
  39. 제36항 또는 제38항에 있어서, 상기 제1 인터럽트 요청 신호 및 상기 제2 인터럽트 요청 신호 중의 어느 하나의 발생에 응답하여 상기 제공된 시간적 이력을 참조하는 단계를 더 포함하는 에뮬레이션 방법.
  40. 타겟 시스템에 장착될 타겟 칩의 논리 설계를 검증하기 위한 에뮬레이터 장치에 있어서,
    상기 타겟 칩의 논리 설계에 대응하는 적어도 하나의 소프트웨어 변수를 포함하는 소프트웨어 알고리즘을 실행하여 상기 타겟 시스템으로 또는 상기 타겟 시스템으로부터 핀 신호를 송수신하기 위한 수단 -상기 적어도 하나의 소프트웨어 변수와 상기 핀 신호는 상기 알고리즘의 실행에 따라 시간적으로 변화함-, 및
    상기 소프트웨어 변수의 시간에 따른 변화와 상기 핀 신호의 시간에 따른 변화를 적어도 소정의 시간 동안 기록하기 위한 수단
    을 포함하는 에뮬레이터 장치.
KR10-2000-0063713A 2000-10-28 2000-10-28 반도체 칩의 논리 기능 검증용 에뮬레이터 장치 및 방법 KR100392569B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR10-2000-0063713A KR100392569B1 (ko) 2000-10-28 2000-10-28 반도체 칩의 논리 기능 검증용 에뮬레이터 장치 및 방법
US09/760,645 US20020052729A1 (en) 2000-10-28 2001-01-17 Apparatus and method for verifying a logic function of a semiconductor chip
EP01250341A EP1202193A3 (en) 2000-10-28 2001-09-27 Apparatus and method for verifying a logic function of a semiconductor chip
JP2001295225A JP2002189611A (ja) 2000-10-28 2001-09-27 エミュレーション装置及びその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2000-0063713A KR100392569B1 (ko) 2000-10-28 2000-10-28 반도체 칩의 논리 기능 검증용 에뮬레이터 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20020032936A true KR20020032936A (ko) 2002-05-04
KR100392569B1 KR100392569B1 (ko) 2003-07-23

Family

ID=19695936

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0063713A KR100392569B1 (ko) 2000-10-28 2000-10-28 반도체 칩의 논리 기능 검증용 에뮬레이터 장치 및 방법

Country Status (4)

Country Link
US (1) US20020052729A1 (ko)
EP (1) EP1202193A3 (ko)
JP (1) JP2002189611A (ko)
KR (1) KR100392569B1 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9195784B2 (en) * 1998-08-31 2015-11-24 Cadence Design Systems, Inc. Common shared memory in a verification system
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
JP4529063B2 (ja) * 2001-03-30 2010-08-25 ルネサスエレクトロニクス株式会社 システムシミュレータ、シミュレーション方法及びシミュレーションプログラム
JP4024026B2 (ja) * 2001-10-12 2007-12-19 富士通株式会社 半導体装置および評価装置
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US7844437B1 (en) * 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
WO2003046725A1 (fr) * 2001-11-30 2003-06-05 Fujitsu Ten Limited Appareil de mise au point de logique de micro-ordinateur
US8103497B1 (en) * 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US7185321B1 (en) * 2002-03-29 2007-02-27 Cypress Semiconductor Corporation Method and system for debugging through supervisory operating codes and self modifying codes
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
US20060155885A1 (en) * 2002-07-19 2006-07-13 Joachim Roos Processor and a method in the processor, the processor comprising a programmable pipeline and at least one interface engine
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
JP2004234530A (ja) 2003-01-31 2004-08-19 Fujitsu Ten Ltd マイクロコンピュータのロジック開発装置
US8099273B2 (en) * 2003-06-05 2012-01-17 Mentor Graphics Corporation Compression of emulation trace data
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US7640155B2 (en) * 2004-06-01 2009-12-29 Quickturn Design Systems, Inc. Extensible memory architecture and communication protocol for supporting multiple devices in low-bandwidth, asynchronous applications
US7606697B2 (en) * 2004-06-01 2009-10-20 Quickturn Design Systems, Inc. System and method for resolving artifacts in differential signals
US7721036B2 (en) * 2004-06-01 2010-05-18 Quickturn Design Systems Inc. System and method for providing flexible signal routing and timing
US8286125B2 (en) 2004-08-13 2012-10-09 Cypress Semiconductor Corporation Model for a hardware device-independent method of defining embedded firmware for programmable systems
US8069436B2 (en) 2004-08-13 2011-11-29 Cypress Semiconductor Corporation Providing hardware independence to automate code generation of processing device firmware
WO2006059312A2 (en) * 2004-12-03 2006-06-08 Koninklijke Philips Electronics N.V. Data processing with circuit modeling
US20080312897A1 (en) * 2005-01-17 2008-12-18 Koninklijke Philips Electronics, N.V. Programmable Device and Method of Previewing User-Programmed Events of Programmable Devices
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
US8089461B2 (en) 2005-06-23 2012-01-03 Cypress Semiconductor Corporation Touch wake for electronic devices
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
CN100373387C (zh) * 2005-12-30 2008-03-05 北京中星微电子有限公司 一种芯片仿真平台中的数据处理方法及系统
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US8516025B2 (en) * 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US7737724B2 (en) 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
JP2008282314A (ja) * 2007-05-14 2008-11-20 Toshiba Corp シミュレータ、シミュレーション方法
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US10664636B2 (en) * 2017-12-20 2020-05-26 International Business Machines Corporation Pin number definition based analytics
JP6731106B1 (ja) * 2019-12-27 2020-07-29 株式会社パルテック 情報処理システム、情報処理装置、情報処理装置の使用方法、ユーザ端末およびそのプログラム
CN112100954B (zh) * 2020-08-31 2024-07-09 北京百度网讯科技有限公司 验证芯片的方法、装置和计算机存储介质
CN114996204B (zh) * 2022-06-13 2023-04-14 北京中科昊芯科技有限公司 一种片上系统可配置装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901259A (en) * 1988-08-15 1990-02-13 Lsi Logic Corporation Asic emulator
KR970009748B1 (ko) * 1994-12-21 1997-06-18 한국전자통신연구원 디지탈 셀룰라 모뎀 시스템 에뮬레이터
US5724502A (en) * 1995-08-07 1998-03-03 International Business Machines Corporation Test mode matrix circuit for an embedded microprocessor core
US6009256A (en) * 1997-05-02 1999-12-28 Axis Systems, Inc. Simulation/emulation system and method
US6061511A (en) * 1998-06-12 2000-05-09 Ikos Systems, Inc. Reconstruction engine for a hardware circuit emulator
KR100306596B1 (ko) * 1999-03-19 2001-09-29 윤덕용 프로세서와 재설정가능 칩을 사용한 집적회로 에뮬레이터
JP3265284B2 (ja) * 1999-04-06 2002-03-11 エヌイーシーマイクロシステム株式会社 エミュレータ

Also Published As

Publication number Publication date
US20020052729A1 (en) 2002-05-02
EP1202193A2 (en) 2002-05-02
EP1202193A3 (en) 2006-10-18
JP2002189611A (ja) 2002-07-05
KR100392569B1 (ko) 2003-07-23

Similar Documents

Publication Publication Date Title
KR100392569B1 (ko) 반도체 칩의 논리 기능 검증용 에뮬레이터 장치 및 방법
US4782461A (en) Logical grouping of facilities within a computer development system
US5911059A (en) Method and apparatus for testing software
EP2145273B1 (en) Computation of phase relationship by clock sampling
US6286114B1 (en) Enhanced embedded logic analyzer
US6223148B1 (en) Logic analysis system for logic emulation systems
US7072825B2 (en) Hierarchical, network-based emulation system
EP2165280B1 (en) Recording of emulation states using replicated memory elements
US6247147B1 (en) Enhanced embedded logic analyzer
EP2145272B1 (en) Multiplexing of inputs and delayed inputs of a circuit emulation
US6061283A (en) Semiconductor integrated circuit evaluation system
US6397354B1 (en) Method and apparatus for providing external access to signals that are internal to an integrated circuit chip package
US7584456B1 (en) Method and apparatus for debugging embedded systems having read only memory
KR20030060990A (ko) 테스트 액세스 포트의 데이터 동기화 방법 및 장치
KR20020069631A (ko) 고수준 프로그래밍 언어를 이용한 회로내 에뮬레이션을위한 장치 및 방법
CN105653409B (zh) 一种基于数据类型转换的硬件仿真器验证数据提取系统
CN115686655A (zh) 用于gpu ip验证的联合仿真系统
US10664637B2 (en) Testbench restoration based on capture and replay
CN110765716A (zh) 数字产品的仿真信号查看方法及系统
KR20030023465A (ko) 에뮬레이션과 시뮬레이션을 혼용한 점진적 설계 검증을위한 설계검증 장치 및 이를 이용한 설계 검증 방법
Vermeulen et al. Interactive debug of socs with multiple clocks
US9946624B1 (en) Systems and methods to capture data signals from a dynamic circuit
CN115618800A (zh) 基于dpi的gpu联合仿真系统
EP1233341A1 (en) Embedded logic analyser
Attia et al. StateLink: FPGA system debugging via flexible simulation/hardware integration

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120711

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee