KR102596638B1 - 회로 설계를 디버깅하기 위한 방법 및 회로 - Google Patents

회로 설계를 디버깅하기 위한 방법 및 회로 Download PDF

Info

Publication number
KR102596638B1
KR102596638B1 KR1020187011243A KR20187011243A KR102596638B1 KR 102596638 B1 KR102596638 B1 KR 102596638B1 KR 1020187011243 A KR1020187011243 A KR 1020187011243A KR 20187011243 A KR20187011243 A KR 20187011243A KR 102596638 B1 KR102596638 B1 KR 102596638B1
Authority
KR
South Korea
Prior art keywords
signals
circuit design
data
level events
circuit
Prior art date
Application number
KR1020187011243A
Other languages
English (en)
Other versions
KR20180072700A (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 자일링크스 인코포레이티드
Publication of KR20180072700A publication Critical patent/KR20180072700A/ko
Application granted granted Critical
Publication of KR102596638B1 publication Critical patent/KR102596638B1/ko

Links

Classifications

    • 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
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31703Comparison aspects, e.g. signature analysis, comparators
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers

Landscapes

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

Abstract

다양한 예시적인 구현예들은 회로 설계들을 디버깅하기 위한 방법들 및 회로들에 관한 것이다. 예시적인 구현예에 따르면, 동작 동안 회로 설계에 의해 생산되는 한 세트의 신호들에 대해, 파형 데이터가 캡처된다(블록 104). 한 세트의 신호들에 대해 데이터 구조물들이 생성되고(블록 110), 데이터 구조물들 내에 신호들에 대한 파형 데이터가 저장된다. 한 세트의 신호들과 연관된 통신 채널들이 식별된다(블록 114). 데이터 구조물들 내에 저장되는 파형 데이터는, 하나 이상의 통신 채널에 대한 한 세트의 신호 내의 트랜잭션 레벨 이벤트들의 위치를 찾기 위해 분석된다(블록 114). 한 세트의 트랜잭션 레벨 이벤트들의 위치들을 나타내는 데이터가 컴퓨터 시스템에 의한 출력이다.

Description

회로 설계를 디버깅하기 위한 방법 및 회로
본 개시는 일반적으로 로직 회로들을 테스팅하는 것, 더 구체적으로 회로 설계들을 디버깅하는 것에 관한 것이다.
특정 로직 기능들을 수행하기 위해 사용자에 의해 프로그래밍가능 IC(integrated circuit)들이 프로그래밍될 수 있다. FPGA(field programmable gate array)로 알려진 일 유형의 프로그래밍가능 IC는 일반적으로, 프로그래밍가능 상호연결부들 및 프로그래밍가능 로직을 갖는 프로그래밍가능 타일(tile)들의 어레이로 배열되는 프로그래밍가능 리소스들을 포함한다. 프로그래밍가능 상호연결부는 일반적으로, PIP(programmable interconnect point)들에 의해 상호연결되는 다수의 가변 길이(varying length)들의 상호연결 라인들을 포함한다. 프로그래밍가능 로직은, 예를 들어 함수 생성기들, 레지스터들, 산술(arithmetic) 로직 등을 포함하는 프로그래밍가능 엘리먼트들을 사용하여 회로 설계의 로직을 구현한다. 프로그래밍가능 상호연결부 및 프로그래밍가능 로직은 일반적으로, 프로그래밍가능 엘리먼트들이 어떻게 구성되는지를 규정하는 내부 구성 메모리 셀들에 구성 데이터의 스트림을 로딩함으로써 프로그래밍된다. 구성 데이터는 메모리로부터(예를 들어, 외부 PROM으로부터) 판독될 수 있거나 외부 디바이스에 의해 FPGA에 기록될 수 있다. 이어서 개별 메모리 셀들의 집합적 상태(collective state)들이 FPGA의 기능을 결정한다.
회로 설계를 개발하는 프로세스 동안, 회로 설계는 일반적으로 물리적 구현 및 배치(deployment) 전에 동작 및 성능을 평가하기 위해 테스팅된다. 회로 설계의 테스팅은, ASIC(application specific integrated circuit) 내의 회로 모듈들의 동작을 관찰하는 것, 소프트웨어 기반 시뮬레이션 모델을 사용하여 회로 모듈들을 시뮬레이팅하는 것, 또는 프로그래밍가능 IC 상에 회로 모듈들을 에뮬레이팅하는 것을 수반할 수 있다. 회로 설계를 에뮬레이팅하는데 있어서, 프로그래밍가능 IC 상의 프로그래밍가능 리소스들이 회로 설계를 구현하도록 구성된다. 몇몇 구현예들에서, 회로 설계의 동작은 ASIC 구현 회로 모듈들의 시뮬레이션, 에뮬레이션, 및/또는 동작의 조합을 사용하여 모델링될 수 있다. 일례로서, 회로 설계의 제 1 회로 모듈이 회로 설계의 제 2 회로 모듈의 에뮬레이션과 동시에 시뮬레이팅될 수 있다. 테스팅 동안, 회로 설계의 시뮬레이팅되는/에뮬레이팅되는/ASIC 구현 회로 모듈들에 테스트 데이터가 제공되고, 회로 설계의 다양한 노드들로부터 데이터 신호들이 캡처된다. 데이터 신호들은, 회로 설계의 시뮬레이션 모델을 실행하도록 구성되는 소프트웨어 디버깅 툴에 의해, 시뮬레이팅되는 회로 설계에 입력되고 시뮬레이팅되는 회로 설계로부터 캡처될 수 있다. 데이터는, 예를 들어 프로그래밍가능 IC 또는 ASIC 다이(die) 내에 포함되거나 프로그래밍가능 IC 또는 ASIC 다이에 연결되는 집적된 로직 분석기(analyzer) 회로를 포함하여 다양한 회로들을 사용하여 프로그래밍가능 IC 상에 에뮬레이팅되거나 ASIC으로서 구현되는 회로 설계에 입력되고 회로 설계로부터 캡처될 수 있다.
다양한 예시적인 구현예들은 회로 설계들을 디버깅하는 것에 관한 것이다. 예시적인 구현예에 따르면, 회로 설계들을 디버깅하기 위한 방법이 개시된다. 동작 동안 회로 설계에 의해 생산되는 한 세트의 신호들에 대해 파형 데이터가 캡처된다. 한 세트의 신호들에 대해 각각의 데이터 구조물들이 생성되고, 신호들에 대한 파형 데이터가 데이터 구조물들 내에 저장된다. 한 세트의 신호들에 의해 구현되는 통신 채널들이 식별된다. 데이터 구조물들 내에 저장되는 파형 데이터는, 하나 이상의 통신 채널에 대한 한 세트의 신호 내의 트랜잭션 레벨(transaction-level) 이벤트들의 위치를 찾기 위해 분석된다. 한 세트의 트랜잭션 레벨 이벤트들의 위치들을 나타내는 데이터가 출력이다.
선택적으로, 방법은 사용자 질의(query)에 의해 특정되는 한 세트의 기준(criteria)에 대한 한 세트의 트랜잭션 레벨 이벤트들을 검색하도록 구성되는 확장가능(extensible) API(application program interface)를 제공하는 단계를 더 포함할 수 있다.
선택적으로, 방법은 사용자 인터페이스를 통한 사용자 질의 입력에 응답하여, 사용자 질의에 의해 특정되는 한 세트의 기준과 매칭되는 한 세트의 신호들의 부분들을 데이터 구조물들에 기반하여 확장가능 API를 사용하여 식별하는 단계를 더 포함할 수 있다.
선택적으로, 한 세트의 트랜잭션 레벨 이벤트들을 식별하는 것은, 회로 설계 내에 포함되는 메타데이터, 회로 설계 내의 신호들의 네임(name)들, 또는 이들의 조합들에 기반하여, 식별된 통신 채널들에 의해 구현되는 프로토콜들을 식별하는 것을 포함할 수 있다. API(Application program interface)들은 식별된 프로토콜용으로 제공될 수 있고, API들은 한 세트의 신호들에 대한 데이터 구조물들로부터 프로토콜에 대한 트랜잭션 레벨 이벤트들을 식별하도록 구성된다. 식별된 프로토콜들 중 하나를 구현하는 통신 채널들에 대해, 통신 채널들에 대한 트랜잭션 레벨 이벤트들을 결정하도록 프로토콜용으로 제공되는 API가 실행될 수 있다.
선택적으로, 프로토콜용 API를 제공하는 것은, API 라이브러리로부터 프로토콜용 API를 불러오는 것(retrieving)을 포함할 수 있다.
선택적으로, 통신 채널들 중 적어도 하나는 한 세트의 신호들 내의 복수의 신호들과 연관될 수 있고, 통신 채널에 대한 트랜잭션 레벨 이벤트들은 회로 설계 내에 포함되는 프로세서에 의해 실행되는 프로그램의 명령어들, 데이터 트랜잭션들, 또는 이들의 조합들을 포함할 수 있다.
선택적으로, 방법은 식별된 트랜잭션들 중 적어도 하나의 트랜잭션에 대해, 식별된 프로토콜들 중 상이한 프로토콜들을 구현하는 2개의 통신 채널들 사이의 인터페이스에 걸쳐 하나의 트랜잭션을 트레이싱하는 단계를 더 포함할 수 있다. 적어도 하나의 트랜잭션을 트레이싱하는 단계는 회로 설계 내의 메타데이터에 기반하여 수행될 수 있다.
선택적으로, 적어도 하나의 통신 채널에 대해, 통신 채널에 대해 결정된 트랜잭션 레벨 이벤트들은 제 1 프로토콜에 대한 제 1 세트의 트랜잭션들을 포함할 수 있다. 방법은 제 1 세트의 트랜잭션들로부터 제 2 프로토콜에 대한 제 2 세트의 트랜잭션들을 식별하는 단계를 더 포함할 수 있고, 제 2 프로토콜은 제 1 프로토콜과 비교하여 더 높은 레벨의 프로토콜이다.
선택적으로, 제 2 프로토콜은 비디오 프레임들, 네트워킹 패킷들, 또는 CPU 명령어들의 통신을 위해 구성될 수 있다.
선택적으로, 방법은 한 세트의 트랜잭션 레벨 이벤트들에 기반하여, 회로 설계 내의 복수의 회로 모듈들에 대한 한 세트의 성능 메트릭(metric)들을 결정하는 단계를 더 포함할 수 있다. 회로 모듈들에 대한 한 세트의 성능 메트릭들은 사용자 인터페이스를 통해 디스플레이될 수 있다.
선택적으로, 한 세트의 성능 메트릭들은 레이턴시(latency), 타이밍 슬랙(timing slack), 전력 소비, 신호 지터(jitter), 스루풋(throughput), 데이터 전송 사이즈, 또는 이들의 조합들을 포함할 수 있다.
선택적으로, 방법은 적어도 하나의 성능 메트릭에 대해, 사용자에 의해 특정되는 기간 동안의 성능 메트릭의 최소값, 최대값 및 평균값을 결정하는 단계를 더 포함할 수 있다.
선택적으로, 방법은 한 세트의 신호들에 대한 파형들의 그래픽적 표현들, 파형들 내의 트랜잭션 레벨 이벤트들을 식별하는 시각적 마커들 및 하나 이상의 검출된 프로토콜 위반(violation)의 유형 및 위치를 식별하는 시각적 마커들을 GUI(graphical user interface) 윈도우에 디스플레이하는 단계를 더 포함할 수 있다.
선택적으로, 방법은 회로 설계의 동작을 시뮬레이팅하는 단계를 더 포함할 수 있다.
선택적으로, 방법은 회로 설계를 구현하도록 그리고 프로그래밍가능 IC 상의 집적된 로직 분석기를 사용하여 프로그래밍가능 IC(integrated circuit)의 프로그래밍가능 리소스들을 구성하는 단계, 파형 데이터를 캡처하는 단계 및 파형 데이터를 컴퓨터 시스템에 전달하는 단계를 더 포함할 수 있다.
예시적인 구현예에 따르면, 회로 설계들을 디버깅하기 위한 장치가 개시된다. 장치는 하나 이상의 프로세서 회로, 및 프로세서 회로에 커플링되는 메모리 회로를 포함하는 컴퓨팅 배열(arrangement)을 포함한다. 메모리 회로 내에 한 세트의 명령어들이 저장된다. 프로세서 회로들에 의해 실행될 때, 명령어들은 동작 동안 회로 설계에 의해 생산되는 한 세트의 신호들에 대한 파형 데이터를 캡처하고 파형 데이터를 메모리 내에 저장하도록 프로세서 회로를 구성한다. 프로세서 회로들은 또한, 파형 데이터로부터 한 세트의 신호들에 대한 각각의 데이터 구조물들을 생성하도록 구성된다. 프로세서 회로들은 또한, 한 세트의 신호들에 의해 구현되는 통신 채널들을 식별하도록 구성된다. 통신 채널들 각각에 대해, 프로세서 회로들은 데이터 구조물들에 기반하여 통신 채널에 대한 한 세트의 트랜잭션 레벨 이벤트들을 식별한다. 프로세서 회로들은 한 세트의 트랜잭션 레벨 이벤트들을 나타내는 데이터를 메모리 회로 내에 저장하도록 구성된다.
선택적으로, 장치는 컴퓨팅 배열에 통신가능하게 커플링되는 프로그래밍가능 IC(integrated circuit)를 더 포함할 수 있다. 한 세트의 명령어들은 또한, 하나 이상의 프로세서 회로가 프로그래밍가능 IC의 프로그래밍가능 리소스들을 프로그래밍하여 회로 설계를 구현하도록 할 수 있다.
선택적으로, 하나 이상의 프로세서 회로에 의해 통신 채널에 대한 한 세트의 트랜잭션 레벨 이벤트들을 식별하는 것은, 회로 설계 내에 포함되는 메타데이터, 회로 설계 내의 신호들의 네임들, 또는 이들의 조합들에 기반하여, 식별된 통신 채널들에 의해 구현되는 프로토콜들을 식별하는 것을 포함할 수 있다. API(Application program interface)들은 식별된 프로토콜들용으로 제공될 수 있고, API들은 한 세트의 신호들에 대한 데이터 구조물들로부터 프로토콜에 대한 트랜잭션 레벨 이벤트들을 식별하도록 구성된다. 식별된 프로토콜들 중 하나를 구현하는 통신 채널들에 대해, 통신 채널들에 대한 트랜잭션 레벨 이벤트들을 결정하도록 프로토콜용으로 제공되는 API가 실행될 수 있다.
선택적으로, 한 세트의 명령어들은 또한, 프로세서가 식별된 트랜잭션 레벨 이벤트들에 기반하여 회로 설계에 대한 한 세트의 성능 메트릭들을 결정하도록 할 수 있고, 한 세트의 성능 메트릭들은 레이턴시, 타이밍 슬랙, 전력 소비, 신호 지터, 스루풋, 데이터 전송 사이즈, 또는 이들의 조합들을 포함한다.
선택적으로, 한 세트의 명령어들은 또한, 프로세서가 사용자 인터페이스를 제공하도록 할 수 있다. 사용자 인터페이스를 통한 사용자 질의 입력에 응답하여, 프로세서는 사용자 질의에 의해 특정되는 한 세트의 기준과 매칭되는 한 세트의 신호들의 부분들을 데이터 구조물들에 기반하여 식별하고, 식별된 부분들의 그래픽적 표현들을 사용자 인터페이스를 사용하여 디스플레이할 수 있다.
이어지는 상세한 설명 및 청구항들의 고려로부터 다른 피처들이 인식될 것이다.
개시되는 방법들 및 회로의 다양한 양태들 및 피처들은, 이어지는 상세한 설명을 검토하고 도면들을 참조함으로써 명백해질 것이다.
도 1은 회로 설계를 디버깅하기 위한 예시적인 프로세스를 도시한다.
도 2는 트랜잭션 레벨 이벤트들을 식별하기 위한 예시적인 프로세스를 도시한다.
도 3은 식별된 트랜잭션 레벨 이벤트들에 기반한 회로 설계의 분석을 위한 예시적인 프로세스를 도시한다.
도 4는 다수의 프로토콜 계층들에 대한 트랜잭션들을 식별하기 위한 예시적인 프로세스를 도시한다.
도 5는 하나 이상의 실시예에 따른 디버깅 툴을 제공하도록 구성되는 예시적인 컴퓨팅 디바이스를 도시한다.
도 6은 하나 이상의 구현예에 따른 집적된 로직 분석기 회로를 갖는 예시적인 프로그래밍가능 IC를 도시한다.
이어지는 설명에서, 본원에 제시되는 특정 예들을 설명하기 위해 다양한 특정 상세사항들이 제시된다. 그러나, 아래에 주어진 모든 특정 상세사항들 없이 하나 이상의 다른 예 및/또는 이 예의 변형예들이 실시될 수 있다는 점이 당업자에게 명백해야 한다. 다른 경우들에서, 본원의 예들의 설명을 모호하게 하지 않도록, 잘 알려진 피처들은 상세히 설명되지 않는다.
디버깅은 회로 설계들을 개발하는데 있어 필수적인 부분이다. 회로 설계를 프로그래밍가능 IC 상에서 구현되도록 디버깅하는 것은 일반적으로, 회로 설계의 시뮬레이션 및/또는 에뮬레이션을 통해 프로그래밍가능 IC의 동작을 테스팅하는 것을 포함한다. 회로 설계들을 디버깅하는데 있어 한가지 어려움은, 동작이 예를 들어 통신 채널 또는 인터페이스에 의해 사용되는 프로토콜의 모든 요건들과 부합하는 것을 보장하도록 통신 채널들/인터페이스들의 동작을 디버깅하는 것을 포함한다. 몇몇 통신 프로토콜들은 통신 채널을 구현하기 위해 다수의 데이터 및 제어 신호들을 사용했다. 예를 들어, AXI(Advanced Extensible Interface) 채널은 다양한 클록 및 리셋 신호들, 어드레스 기록 신호들, 데이터 기록 신호들, 응답 기록 신호들, 어드레스 판독 신호들, 데이터 판독 신호들, 및/또는 저전력 인터페이스 신호들에 의해 형성된다. 현재, 개발자들은, 통신 채널들 및 각각의 통신 채널 상에서 수행되는 트랜잭션 레벨 이벤트들(예를 들어, 데이터 트랜잭션 또는 프로세서 명령어들)을 수동으로 식별하여 고레벨 동작을 평가하고/하거나 프로토콜 위반들이 발생했는지를 결정하기 위해, 샘플링된 데이터 신호들의 파형들을 시각적으로 검사한다. 유사하게, 개발자들은 회로 설계의 성능을 평가하기 위해 파형을 시각적으로 검사해야 한다. 파형들의 시각적 검사는 트랜잭션들의 수가 증가할수록 점점 어려워진다.
트랜잭션 레벨에서 회로 설계를 디버깅하기 위한 방법들 및 장치들이 개시된다. 회로 설계의 동작 동안 회로 설계에 의해 생산되는 한 세트의 신호들에 대해 파형들이 캡처된다. 한 세트의 신호들은, 예들 들어 소프트웨어 기반 시뮬레이션 모델에서 회로 설계를 시뮬레이팅하고/하거나 프로그래밍가능 IC 상에 회로 설계를 에뮬레이팅함으로써 생성될 수 있다. 데이터 신호에 대한 파형은, 시간에 따른 순차적 순간(moment)들에서 데이터 신호의 하나 이상의 아날로그 특성(예를 들어, 전압, 위상, 또는 진폭)을 샘플링함으로써 캡처될 수 있다. 한 세트의 신호들 중 각각의 신호에 대해, 각각의 데이터 구조물이 생성되고, 데이터 구조물 내에 신호에 대한 파형 데이터가 저장된다. 한 세트의 신호들에 의해 구현되는 통신 채널들이 식별된다. 데이터 구조물들 내에 저장되는 파형 데이터는, 하나 이상의 통신 채널에 대한 데이터 신호들 내의 트랜잭션 레벨 이벤트들의 위치를 찾기 위해 분석된다. 트랜잭션 레벨 이벤트들은, 예를 들어 통신 채널 상의 개별 데이터 트랜잭션들, 프로그래밍가능 로직 내에 구현되는 하드웨어 가속 기능 또는 프로세서 회로에 의해 실행되는 개별 명령어들을 포함할 수 있다. 한 세트의 트랜잭션 레벨 이벤트들의 위치들을 나타내는 데이터가 출력이다.
통신 채널에 대한 트랜잭션 레벨 이벤트들은 다앙한 분석적 프로세스들을 사용하여 위치를 찾을 수 있다. 몇몇 구현예들에서, 통신 채널들에 의해 구현되는 프로토콜들이 첫번째로 식별된다. 프로토콜들은, AXI, PCIe(Peripheral Component Interconnect Express), USB(Universal Serial Bus), IEEE1394, 및/또는 직렬 장착(Serial Attached) SCSI를 포함할 수 있지만 이들에 제한되는 것은 아니다. 프로토콜들은, 예를 들어 회로 설계 내에 포함되는 메타데이터, 회로 설계 내의 신호들의 네임들, 사용자 입력, 또는 이들의 조합들에 기반하여 식별될 수 있다. 식별된 프로토콜들 각각에 대해, 각각의 API(application program interface)가 제공된다. 각각의 API는 데이터 구조물들로부터 프로토콜에 대한 트랜잭션 레벨 이벤트들을 식별하도록 구성된다. 통신 프로토콜용 API는, 예를 들어 API 라이브러리로부터 API를 불러옴으로써 제공될 수 있다. 프로토콜을 구현하는 통신 채널들 각각에 대해, API는 통신 채널에 대한 데이터 신호들 내의 트랜잭션 레벨 이벤트들의 위치를 찾도록 실행된다.
몇몇 구현예들에서, 디버깅 툴은 한 세트의 캡처된 데이터 신호들로부터 트랜잭션 레벨 이벤트들을 식별하도록 구성된다. 디버깅 툴은, 예를 들어 GUI(graphical user interface) 윈도우를 통한 사용자에 의한 시각적 검사 및/또는 분석을 위해, 파형들 내의 트랜잭션 레벨 이벤트들을 식별하는 시각적 마커들로 파형들의 그래픽적 표현들을 생성하고 디스플레이하도록 구성될 수 있다. 트랜잭션 레벨 이벤트들의 예시(illustration)는 사용자에 의한 파형들의 시각적 검사를 평가할 수 있다. 예를 들어, 통신 채널을 통해 전달되는 데이터 트랜잭션들의 스타트포인트 및 엔트포인트를 식별하기 위해 통신 채널에 대한 파형들에 시각적 마커들이 추가될 수 있다.
다른 예로서, 디버깅 툴은 상이한 프로토콜들을 구현하는 다수의 연계된(linked) 통신 채널들에 걸쳐 데이터 트랜잭션을 트레이싱할 수 있다. 참조의 편의를 위해, 상이한 프로토콜들을 구현하는 통신 채널들에 걸쳐 전달되는 데이터 트랜잭션들은 이종(heterogeneous) 트랜잭션으로 지칭될 수 있다. 몇몇 구현예들에서, 디버깅 툴은 파형들의 디스플레이되는 그래픽적 표현들에서 이종 트랜잭션을 그래픽으로(graphically) 식별한다. 예를 들어, 디버깅 툴은 사용자에 의해 선택되는 이종 트랜잭션에 대응하는 디스플레이되는 파형들의 모든 부분들을 하이라이팅할 수 있다. 이종 트랜잭션들은 다양한 프로세스들을 사용하여 트레이싱될 수 있다. 몇몇 구현예들에서, 이종 트랜잭션들은, 예를 들어 상이한 데이터 채널들 사이의 인터페이스 연결들을 나타내는 회로 설계 내의 메타데이터에 기반하여 트레이싱될 수 있다.
몇몇 구현예들에서, 디버깅 툴은 트랜잭션 레벨 이벤트들을 분석하여 회로 설계의 동작을 평가하도록 구성될 수 있다. 예를 들어, 디버깅 툴은 하나 이상의 통신 프로토콜과의 부합성(compliance)에 대해, 캡처된 데이터 신호들 중 하나 이상을 평가하도록 구성될 수 있다. 몇몇 구현예들에서, 디버깅 툴은 또한, 하나 이상의 회로 모듈 또는 캡처된 데이터 신호에 대한 프로토콜 위반들의 그래픽적 표시(indication)들을 생성하고 GUI 윈도우를 통해 디스플레이할 수 있다. 예를 들어, 디스플레이되는 캡처된 데이터 신호들의 그래픽적 표현들은, 검출된 프로토콜 위반들의 유형 및 위치들을 식별하는 시각적 마커들로 보충될 수 있다.
추가적으로 또는 대안적으로, 디버깅 툴은 트랙잭션 레벨 이벤트들 및/또는 데이터 구조물들을 분석하여 회로 설계의 다양한 성능 메트릭들을 평가하도록 구성될 수 있다. 성능 메트릭들은, 예를 들어 레이턴시, 타이밍 슬랙, 전력 소비, 신호 지터, 클록 지터, 스루풋, 바이트 카운트, 비트(beat) 카운트, 아이들 사이클(idle cycle)들, 데이터 전송 사이즈, 또는 이들의 조합들을 포함할 수 있다.
몇몇 구현예들에서, 디버깅 툴은 캡처된 데이터 신호들을 분석하여 회로 모듈들 중 하나 이상에 대한 다양한 성능 메트릭들을 평가하도록 구성된다. 성능 메트릭들은, 예를 들어 스루풋, 레이턴시, 타이밍 슬랙, 전력 소비, 신호 지터, 클록 지터, 스루풋, 바이트 카운트, 비트 카운트, 아이들 사이클들, 데이터 전송 사이즈, 초당 명령어들, 사이클당 명령어들, 캐시 미스(cache miss)들 또는 이들의 조합들을 포함할 수 있다. 몇몇 구현예들에서, 디버깅 툴은 또한, 특정 기간 내의 성능 메트릭들 중 하나 이상에 대한 최소값들, 최대값들, 평균값들, 및/또는 변화율을 결정할 수 있다. 디버깅 툴은, 통신 채널에 대한 성능 메트릭들을 채널에 대한 파형들의 그래픽적 표현들과 함께 GUI 윈도우에 디스플레이하도록 구성될 수 있다.
몇몇 구현예들에서, 디버깅 툴은 트랜잭션 레벨 이벤트들을 검색하기 위한 확장가능 API를 제공한다. API는, API가 한 세트의 미리규정된 검색들에 추가하여 트랜잭션 레벨 이벤트들의 사용자지정(customized) 질의를 수행하도록 사용자에 의해 조정될 수 있다는 점에서 확장가능하다. 몇몇 구현예들에서, 디버깅 툴은 트랜잭션 레벨 이벤트들의 사용자지정 질의에 대해 확장가능 API를 구성하도록 사용자에게 GUI 윈도우를 제공한다. 트랜잭션 레벨 이벤트들의 사용자지정 질의는, 테스트 중인 회로 설계에 대해 특히 관심있는 시나리오들에 대한 트랜잭션 레벨 이벤트들을 사용자가 쉽게 검색하도록 할 수 있다. 예시적인 예로서, TMR(triple modular redundancy) 회로들을 구현하는 회로 설계에 대해, 설계자는 다중(redundant) 회로들이 상이한 결과들을 생산하는 트랜잭션들을 식별하는 것을 희망할 수 있다. 디버깅 툴은, 질의 입력과 매칭되는 트랜잭션 레벨 이벤트들에 대응하는 파형들의 부분들을 GUI 윈도우를 통해 하이라이팅하도록 구성될 수 있다.
몇몇 구현예들에서, 디버깅 툴은 식별된 트랜잭션 레벨 이벤트들로부터 하나 이상의 상위 계층(higher-layer) 프로토콜에 대한 트랜잭션들을 식별하도록 구성될 수 있다. 예를 들어, 하위 계층(lower-layer) 프로토콜에 대한 다수의 개별 데이터 트랜잭션들은 상위 계층 프로토콜에 의해 수행되는 더 큰 데이터 트랜잭션에 대응할 수 있다. 예를 들어, 트랜잭션 레벨 이벤트들은, 예를 들어 이더넷 패킷들, 비디오 스트림의 프레임들, 및/또는 CPU 콜 스택(call stack)에 대응하여 트랜잭션 레벨 이벤트들의 서브세트들로 그룹화될 수 있다.
테스트 중인 회로 설계의 동작 동안 생성되는 다양한 신호들에 대한 파형 데이터가 다양한 하드웨어 또는 소프트웨어 기반 모니터링 인터페이스들을 사용하여 캡처될 수 있다. 모니터링 인터페이스들은, 예를 들어 디버깅 툴에 의해 구현되는 소프트웨어 프로세스, 또는 회로 설계를 에뮬레이팅하기 위해 사용되는 프로그래밍가능 IC 내에 포함되는 모니터링 회로(예를 들어, 집적된 로직 분석기)를 포함할 수 있다. 몇몇 구현예들에서, 모니터링 회로는 프로그래밍가능 IC 내에 구현되는 내장(hardwired) 회로일 수 있거나 프로그래밍가능 IC에 커플링될 수 있다. 몇몇 다른 구현예들에서, 모니터링 회로는 회로 설계에서 인스턴스화될 수 있고(instantiated) 에뮬레이팅되고 있는 하나 이상의 회로 모듈과 함께 프로그래밍가능 IC의 프로그래밍가능 리소스들로 구현될 수 있다.
몇몇 프로그래밍가능 IC들은 한 세트의 프로그래밍가능 리소스들과 커플링되는 프로세서를 포함할 수 있다. 프로그래밍가능 리소스들은 회로 설계의 하드웨어 부분을 구현하도록 구성될 수 있고, 프로세서는 회로 설계의 소프트웨어 부분을 구현하도록 구성될 수 있다. 몇몇 구현예들에서, 프로세서는 회로 설계의 한 세트의 신호들에 대한 파형 데이터를 캡처하도록 프로그래밍될 수 있다.
이제 도면들로 돌아가면, 도 1은 회로 설계를 디버깅하기 위한 예시적인 프로세스를 도시한다. 블록(102)에서, 회로 설계의 동작이 시뮬레이팅되고/되거나 에뮬레이팅된다. 시뮬레이션/에뮬레이션 동안, 회로 설계의 다양한 노드들에서 생성되는 한 세트의 데이터 신호들에 대한 파형들이 블록(104)에서 캡처되고 파형 파일(106) 내에 저장된다. 몇몇 구현예들에서, 블록(104)에서 메타데이터(108)가 또한 불러와질 수 있다. 메타데이터(108)는, 예를 들어 회로 설계의 데이터 신호들 또는 회로 모듈들의 다양한 특성들을 특정할 수 있다. 메타데이터는, 예를 들어 신호들 및/또는 회로 모듈들의 네이밍 규칙(naming convention)들, 회로 모듈들 사이의 네트(net) 연결들, 및/또는 회로 설계에서의 회로 모듈들에 대한 구성 설정들에 기반하여 획득될 수 있다. 블록(110)에서, 파형 파일이 파싱(parsing)되고, 한 세트의 데이터 신호들 각각에 대한 각각의 파형 데이터를 저장하기 위한 데이터 구조물들이 생성된다. 블록(114)에서, 통신 채널들이 식별된다. 데이터 구조물들(112), 메타데이터(108), 또는 이들의 조합들에 기반하여 각각의 통신 채널에 대해 블록(114)에서 트랜잭션 레벨 이벤트들(116)이 또한 식별된다. 통신 채널들 및 트랜잭션 레벨 이벤트들의 식별은 도 2를 참조하여 더 상세히 논의된다. 블록(118)에서, 트랜잭션 레벨에서의 회로 설계의 동작 또는 성능을 평가하기 위해 트랜잭션 레벨 이벤트들이 분석된다. 이전에 설명된 바와 같이, 분석은 예를 들어 프로토콜 위반들을 식별하는 것, 이종 트랜잭션들을 트레이싱하는 것, 하나 이상의 성능 메트릭을 평가하는 것, 또는 트랜잭션 레벨 이벤트들(116)의 사용자 특정 질의를 수행하는 것을 포함할 수 있다.
도 2는 트랜잭션 레벨 이벤트들을 식별하기 위한 예시적인 프로세스를 도시한다. 블록(202)에서, 회로 설계에 의해 생성된 한 세트의 데이터 신호들로 통신 채널들이 식별된다. 블록(204)에서, 통신 채널들과 연관된 프로토콜들이 식별된다. 통신 채널들 및/또는 프로토콜들은, 예를 들어 회로 설계 내에 포함된 메타데이터에 기반하여 식별될 수 있다. 예를 들어, 회로 설계의 계층 및 데이터 신호들의 네이밍은 통신 채널들을 식별하고 통신 채널에 의해 어떤 통신 프로토콜이 구현되는지 나타낼 수 있다. 대안적으로, 몇몇 구현예들에서, 통신 채널들 및/또는 프로토콜들은 회로 설계로부터의 메타데이터 없이 식별될 수 있다. 예를 들어, 회로 설계의 계층 및 채널 네이밍은, 예를 들어 패턴 매칭 및/또는 인과(causation) 분석을 사용하여 한 세트의 캡처된 파형들로부터 추론될 수 있다.
식별된 프로토콜들 각각에 대해, 블록(206)에서 각각의 API가 제공된다. API는 데이터 구조물들로부터 프로토콜에 대한 트랜잭션 레벨 이벤트들을 식별하도록 구성된다. 예시적인 예로서, AXI 통신 채널의 데이터 트랜잭션들은 AXI 신호들(VALID, READY, RLAST, 및 WLAST)의 값들에 기반하여 식별될 수 있다. 예를 들어, AXI 데이터 트랜잭션의 스타트 부분은 VALID 또는 READY 신호의 표명(assertion)에 의해 식별될 수 있다. AXI 판독 트랜잭션의 엔드 부분은 RLAST 신호가 표명되고 클리어됨으로써 식별될 수 있다. AXI 기록 트랜잭션의 엔드 부분은 WLAST 신호가 표명되고 이어서 BRESP가 표명됨으로써 식별될 수 있다. 통신 프로토콜들용 API들은, 예를 들어 복수의 통신 프로토콜들용의 각각의 API들을 갖는 API 라이브러리로부터 제공될 수 있다. 블록(208)에서, 식별된 통신 채널들에 대한 트랜잭션 레벨 이벤트들을 결정하기 위해 데이터 구조물들이 제공된 API를 사용하여 프로세싱된다.
도 3은 식별된 트랜잭션 레벨 이벤트들에 기반한 회로 설계의 분석을 위한 예시적인 프로세스를 도시한다. 이전에 논의된 바와 같이, 트랜잭션 레벨 이벤트들 및/또는 신호 데이터 구조물들은 회로 설계의 성능 및/또는 동작을 평가하기 위해 분석될 수 있다. 이 예에서, 분석은 사용자에 의한 상호작용없이 블록들(304, 306, 및 308)에서 자동으로 수행될 수 있는 다수의 정적(static) 분석 프로세스들을 포함한다.
블록(304)에서, 하나 이상의 통신 프로토콜의 위반들을 검출하기 위해 신호 데이터 구조물들(303) 내의 트랜잭션 레벨 이벤트들(302) 및/또는 파형 데이터가 검색된다. 프로토콜 위반들이 검출될 수 있는 방식은 각각의 통신 프로토콜에 의해 특정된 데이터 트랜잭션들의 요건들/제한들에 의존한다. 일례로서, AXI 프로토콜은 고정된 버스트 모드 트랜잭션의 길이가 16비트보다 많지 않을 것을 요구한다. AXI 위반의 다른 예로서, RVALID 신호가 표명되고 ARREADY 신호가 로우일 때, ARADDR, ARBURST, ARCACHE, ARID, ARLEN, ARLOCK, ARPROT, ARSIZE, ARQOS, 및 ARREGION 신호들은 안정상태(stable)로 유지되어야 한다. 몇몇 구현예들에서, 특정 통신 프로토콜의 위반들을 검출하기 위한 기준은, 예를 들어 복수의 통신 프로토콜들에 대한 각 세트들의 테스팅 기준을 갖는 라이브러리로부터 불러와질 수 있다.
블록(306)에서, 상이한 통신 채널들에 걸쳐 이종 트랜잭션들이 트레이싱된다. 이전에 나타내어진 바와 같이, 이종 트랜잭션들은 다양한 프로세스들을 사용하여 트레이싱될 수 있다. 몇몇 구현예들에서, 이종 트랜잭션들은, 예를 들어 상이한 통신 채널들 사이의 인터페이스 연결들을 나타내는 회로 설계 내의 메타데이터에 기반하여 트레이싱될 수 있다. 몇몇 다른 구현예들에서, 2개의 통신 채널들의 네이밍 규칙들은 2개의 통신 채널들이 연계되었음을 나타낼 수 있다.
블록(308)에서, 회로 설계의 성능 메트릭들이 평가된다. 이전에 나타내어진 바와 같이 성능 메트릭들은, 예를 들어 스루풋, 레이턴시, 타이밍 슬랙, 전력 소비, 신호 지터, 클록 지터, 스루풋, 바이트 카운트, 비트 카운트, 아이들 사이클들, 데이터 전송 사이즈, 초당 명령어들, 사이클당 명령어들, 캐시 미스들 또는 이들의 다양한 조합들을 포함할 수 있다. 성능은 개별 트랜잭션들, 개별 통신 채널들, 및/또는 회로 설계 내의 개별 회로 모듈들에 대해 평가될 수 있다. 추가적으로 또는 대안적으로, 성능 메트릭은 트랜잭션들, 통신 채널들, 및/또는 회로 모듈들의 조합에 대한 성능을 평가할 수 있다. 예를 들어, 하나의 성능 메트릭은 어떤 통신 채널이 트랜잭션의 전체 스루풋을 제한하고 있는지를 결정하기 위해 트랜잭션에 대해 사용되는 다수의 통신 채널들에 대한 이종 트랜잭션의 스루풋을 분석할 수 있다.
이 예에서, 블록들(310, 312, 및 314)에서 동적(dynamic) 분석이 또한 수행된다. 동적 분석은 사용자 입력에 응답하여 실시간으로 동적으로 구성됨으로써, 사용자가 지정한 분석이 수행되도록 한다. 블록(310)에서, GUI 윈도우가 제공된다. GUI 윈도우는 시뮬레이션 데이터를 디스플레이하고/하거나 사용자에 의한 디버깅 및/또는 시각적 검사에 대한 결과들을 분석하도록 구성될 수 있다. 예를 들어, 이전에 논의된 바와 같이, 디버깅 툴의 GUI 윈도우는 캡처된 파형들, 성능 메트릭들, 프로토콜 위반들, 및/또는 식별된 이종 트랜잭션들의 그래픽적 표현들을 디스플레이하도록 구성될 수 있다. 추가적으로, GUI 윈도우는 사용자에 의한 디버깅 및/또는 사용자지정 질의에 대한 디스플레이 인터페이스 및 입력을 포함한다. GUI를 통한 사용자 입력에 응답하여, 프로세스는 예를 들어 블록들(312 및 314)에서 사용자 입력에 의해 요청된 동작들을 수행한다. 이 예에서, 트랜잭션 레벨 이벤트들 및/또는 신호 데이터 구조물들은 사용자에 대해 특정된 사용자지정 검색 질의에 대해 블록(312)에서 검색된다. 검색 질의와 매칭되는 파형들의 부분들은 블록(310)에서 제공된 GUI 윈도우에 디스플레이될 수 있다. 이전에 논의된 바와 같이, 신호 데이터 구조물들 및/또는 트랜잭션 레벨 이벤트들의 사용자가 지정한 질의는, 사용자로 하여금 테스트 중인 회로 설계의 컨텍스트에서만 관련이 있는 시나리오에 대응하는 파형들의 부분들을 쉽게 식별하도록 할 수 있다. 이 예에서, 사용자 입력에 응답하여 블록(314)에서 심볼릭(symbolic) 디버깅이 또한 수행된다. 심볼릭 디버거(debugger)는, 예를 들어 회로 설계 내에 포함된 프로세서에 의한 개별 HLL 명령어들의 실행에 응답하여 개시되는 데이터 트랜잭션들을 식별할 수 있다.
몇몇 구현예들에서, 트랜잭션들은, 예를 들어 OSI(open system interconnection) 모델 내의 추상화(abstraction) 계층을 구현하기 위해 사용되는 통신 프로토콜들을 포함하는 통신 프로토콜들의 다수의 계층들에 대해 식별될 수 있다. 도 4는 프로토콜들의 다수의 계층들에 대한 트랜잭션들을 식별하기 위한 예시적인 프로세스를 도시한다. 블록(402)에서, 예를 들어 도 2를 참조하여 논의된 바와 같이 데이터 구조물들에 기반하여 하위 계층 프로토콜에 대한 제 1 세트의 트랜잭션들이 식별된다. 블록(404)에서, 제 1 세트의 트랜잭션들에 기반하여 상위 계층 프로토콜에 대한 제 2 세트의 트랜잭션들이 식별될 수 있다. 예를 들어, 상위 계층 프로토콜의 트랜잭션은, 하위 계층 프로토콜에 대한 제 1 세트의 트랜잭션들 중 다수의 트랜잭션들을 사용하여 수행될 수 있다. 상위 계층 프로토콜에 대한 트랜잭션들은, 도 2를 참조하여 논의된 방식과 유사한 방식으로 프로토콜용 API를 생성함으로써 식별될 수 있다. 블록(406)에서, 제 2 세트의 트랜잭션들이 분석된다. 제 2 세트의 트랜잭션들은 도 3 내의 트랜잭션 이벤트들의 분석을 참조하여 논의된 바와 같이 분석될 수 있다. 이 프로세스는, 예를 들어 제 2 세트의 트랜잭션들에 기반하여 상위 계층 프로토콜들에 대해서도 트랜잭션들을 식별하기 위해 반복될 수 있다.
도 5는 하나 이상의 실시예에 따른 디버깅 툴을 제공하도록 구성되는 예시적인 컴퓨터 시스템을 도시한다. 이 예에서, 컴퓨터 시스템(500)은, 모두 호스트 버스(515)에 커플링되는 하나 이상의 프로세서(505)의 배열, 메모리/스토리지 배열(510), 입력 디바이스(530), 디스플레이 디바이스(535), 및 네트워크 어댑터(545)를 포함한다. 배열(500)은 회로 보드 상에 별도의 컴포넌트들로 구현될 수 있거나 집적 회로 내에 내장형으로 구현될 수 있다. 집적 회로 내에 내장형으로 구현될 때, 프로세서 컴퓨팅 디바이스는 마이크로컨트롤러로도 알려져 있다.
컴퓨터 시스템(500)의 아키텍쳐는 당업자에 의해 인식될 수 있는 바와 같이 구현 요건들에 의존한다. 프로세서(들)(505)는 하나 이상의 범용 프로세서, 또는 하나 이상의 범용 프로세서와 적절한 코프로세서(co-processor)들의 조합, 또는 하나 이상의 특수형(specialized) 프로세서(예를 들어, RISC, CISC, 파이프라인 등)일 수 있다. 메모리/스토리지 배열(510)은 일반적으로 다수의 레벨들의 캐시 메모리, 및 메인 메모리를 포함한다. 메모리/스토리지 배열(510)은, 가령 자기 디스크들(도시 생략), 플래시, EPROM에 의해 제공되는 로컬 및/또는 원격 영구적(persistent) 스토리지, 또는 다른 비휘발성 데이터 스토리지를 포함할 수 있다.
메모리/스토리지 디바이스(510)는 프로세서(들)(505)에 의해 실행될 때 위에서 논의된 바와 같은 디버깅 애플리케이션(555)을 구현하는 프로그램 코드(565)를 포함한다. 프로그램 코드(565)는 자기 또는 광학 디스크들 또는 테이프들, 전자 스토리지 디바이스들과 같은, 또는 네트워크 어댑터(545)에 커플링되는 네트워크를 통한 애플리케이션 서비스들과 같은 전달 채널들 또는 다양한 컴퓨터 판독가능 스토리지 매체를 통해 저장되고 제공될 수 있다. 동작 동안, 디버깅 애플리케이션(555)은 메모리/스토리지 디바이스(510) 내에 디버깅 데이터(560)(예를 들어, 파형 데이터, 데이터 구조물들, 및/또는 트랜잭션 레벨 이벤트들)를 저장한다. 디버깅을 위한 위에서 설명된 바와 같은 GUI 윈도우가 디스플레이 디바이스(535)를 통해 제공될 수 있다.
당업자는, 본원에 개시된 프로세스들 및 데이터 구조물들을 호스팅하기 위해, 하나 이상의 프로세서 및 프로그램 코드로 구성되는 메모리 배열을 포함하여, 다양한 대안적인 컴퓨팅 배열들이 적절할 것이라는 점을 이해할 것이다. 또한, 프로세스들은 자기 또는 광학 디스크들 또는 테이프들, 전자 스토리지 디바이스들과 같은, 또는 네트워크를 통한 애플리케이션 서비스들과 같은 전달 채널들 또는 다양한 컴퓨터 판독가능 스토리지 매체를 통해 저장되고 제공될 수 있다.
도 6은 하나 이상의 구현예에 따른 집적된 로직 분석기 회로를 갖는 예시적인 프로그래밍가능 IC를 도시한다. 프로그래밍가능 IC는, 프로세서 서브시스템(610) 및 프로그래밍가능 로직 서브시스템(630)을 포함하는 SOC(System On Chip)로도 지칭될 수 있다. 이 예에서, 프로그래밍가능 IC는, 전력 및/또는 안전 관리를 위한 다양한 회로들을 갖는 서브시스템(640) 및 외부 회로들과의 데이터의 통신을 위한 입력/출력(input/output; I/O) 서브시스템(650)을 또한 포함한다. 서브시스템(610, 630, 640, 및 650)은 복수의 반도체 다이들을 사용하여 형성되고, 위에서의 예들에서 설명된 바와 같이 IC 패키지 내에서 상호연결될 수 있다.
프로세싱 서브시스템(610)은 사용자 프로그램의 실행을 통해, 회로 설계의 소프트웨어 부분을 구현하도록 프로그래밍될 수 있다. 대안적으로 또는 추가적으로, 프로그램은 프로그래밍가능 리소스들(632)로 구현되는 부분적 회로 설계의 하나 이상의 포트에 데이터 신호들을 생성하도록 구성되는 하나 이상의 트래픽 생성기를 구현할 수 있다. 프로그램은 구성 데이터 스트림의 일부로서 특정될 수 있거나 온칩 또는 오프칩 데이터 스토리지 디바이스로부터 불러와질 수 있다. 프로세싱 서브시스템(610)은 하나 이상의 소프트웨어 프로그램을 실행하기 위한 다양한 회로들(612, 614, 616, 및 618)을 포함할 수 있다. 회로들(612, 614, 616, 및 618)은, 예를 들어 하나 이상의 프로세서 코어, FPU(floating point unit)들, 인터럽트 프로세싱 유닛, 온 칩 메모리, 메모리 캐시들, 및/또는 캐시 코히어런트(coherent) 상호연결부를 포함할 수 있다.
프로그래밍가능 IC(602)의 프로그래밍가능 로직 서브시스템(630)은 이전에 논의된 바와 같이 부분적 회로 설계 및 트래픽 생성 회로들을 구현하도록 프로그래밍될 수 있다. 예를 들어, 프로그래밍가능 로직 서브시스템은 구성 데이터 스트림에 특정된 한 세트의 회로들을 구현하도록 프로그래밍될 수 있는 다수의 프로그래밍가능 리소스들(632)을 포함할 수 있다. 프로그래밍가능 리소스들(632)은 프로그래밍가능 상호연결 회로들, 프로그래밍가능 로직 회로들, 및 구성 메모리 셀들을 포함한다. 프로그래밍가능 로직은, 예를 들어 함수 생성기들, 레지스터들, 산술 로직 등을 포함하는 프로그래밍가능 엘리먼트들을 사용하여 회로 설계의 로직을 구현한다. 프로그래밍가능 상호연결 회로들은, PIP(programmable interconnect point)들에 의해 상호연결되는 다수의 가변 길이들의 상호연결 라인들을 포함할 수 있다.
프로그래밍가능 리소스들(632)은, 프로그래밍가능 상호연결 회로들 및 프로그래밍가능 로직 회로들이 어떻게 구성되는지를 규정하는 구성 메모리 셀들에 구성 데이터 스트림을 로딩함으로써 프로그래밍될 수 있다. 이어서 개별 메모리 셀들의 집합적 상태들이 프로그래밍가능 리소스들(632)의 기능을 결정한다. 구성 데이터는 메모리로부터(예를 들어, 외부 PROM으로부터) 판독될 수 있거나 외부 디바이스에 의해 프로그래밍가능 IC(602)에 기록될 수 있다. 몇몇 구현예들에서, 구성 데이터는 프로그래밍가능 로직 서브시스템(630) 내에 포함되는 구성 컨트롤러(634)에 의해 구성 메모리 셀들에 로딩될 수 있다. 몇몇 구현예들에서, 구성 데이터는 프로세서 서브시스템(610)에 의해 실행되는 스타트업 프로세스에 의해 구성 메모리 셀들에 로딩될 수 있다.
프로그래밍가능 IC(602)는 프로세싱 서브시스템(610)을 프로그래밍가능 로직 서브시스템(630) 내에 구현되는 회로부와 상호연결하기 위한 다양한 회로들을 포함할 수 있다. 이 예에서, 프로그래밍가능 IC(602)는, 프로세싱 서브시스템(610)과 프로그래밍가능 로직 서브시스템(630)의 다양한 데이터 포트들 사이에 데이터 신호들을 라우팅할 수 있는 코어 스위치(626)를 포함한다. 코어 스위치(626)는 또한, 프로그래밍가능 로직 서브시스템(630) 또는 프로세싱 서브시스템(610) 중 하나와, 내부 데이터 버스와 같은 프로그래밍가능 IC의 다양한 다른 회로들 사이에 데이터 신호들을 라우팅할 수 있다. 대안적으로 또는 추가적으로, 프로세싱 서브시스템(610)은 코어 스위치(626)를 우회하는 프로그래밍가능 로직 서브시스템과의 직접적인 연결을 위한 인터페이스를 포함할 수 있다. 그러한 인터페이스는 ARM에 의해 공개된 바와 같이 AMBA AXI 프로토콜 사양(AXI)을 사용하여 구현될 수 있다.
몇몇 구현예들에서, 프로세싱 서브시스템(610) 및 프로그래밍가능 로직 서브시스템(630)은 또한, 메모리 컨트롤러(621)를 통해 온칩 메모리(622) 또는 오프칩 메모리(도시 생략)의 메모리 위치들을 판독하거나 기록할 수 있다. 메모리 컨트롤러(621)는, 비제한적인 예시로서 DDR(Dual Data Rate)2, LP(Low Power) DDR2 유형들의 메모리(16비트, 32비트, ECC를 갖는 16비트 등)를 포함하는 하나 이상의 상이한 유형의 메모리 회로와 통신하도록 구현될 수 있다. 메모리 컨트롤러(621)가 통신할 수 있는 상이한 메모리 유형들의 리스트는 예시의 목적으로만 제공되며, 제한적으로 또는 포괄적으로 의도되는 것은 아니다. 도 6에 도시된 바와 같이, 프로그래밍가능 IC(602)는, 서브시스템들(610 및 630)에 의해 사용되는 가상 메모리 어드레스들을 메모리 컨트롤러(621)에 의해 사용되는 물리적 메모리 어드레스들로 변환하여 특정 메모리 위치들에 액세스하기 위한 변환 색인(look-aside) 버퍼(624) 및 메모리 관리 유닛(620)을 포함할 수 있다.
이 예에서, 프로그래밍가능 IC는 외부 회로들과의 데이터의 통신을 위한 I/O 서브시스템(650)을 포함한다. IC 서브시스템(650)은 플래시 메모리 유형 I/O 디바이스들, 고성능 I/O 디바이스들, 저성능 인터페이스들, 디버깅 I/O 디바이스들, 및/또는 RAM I/O 디바이스들을 포함하여, 다양한 유형들의 IC 디바이스들 또는 인터페이스들을 포함할 수 있다.
I/O 서브시스템(650)은 660A 및 660B로 예시된 하나 이상의 플래시 메모리 인터페이스(660)를 포함할 수 있다. 예를 들어, 플래시 메모리 인터페이스들(660) 중 하나 이상은 4비트 통신용으로 구성된 QSPI(Quad-Serial Peripheral Interface)로 구현될 수 있다. 플래시 메모리 인터페이스들(660) 중 하나 이상은 병렬 8비트 NOR/SRAM 유형의 인터페이스로 구현될 수 있다. 플래시 메모리 인터페이스들(660) 중 하나 이상은 8비트 및/또는 16비트 통신용으로 구성된 NAND 인터페이스로 구현될 수 있다. 설명된 특정 인터페이스들이 예시의 목적을 위해 비제한적으로 제공된다는 점이 이해되어야 한다. 상이한 비트 폭들을 갖는 다른 인터페이스들이 사용될 수 있다.
I/O 서브시스템(650)은 플래시 메모리 인터페이스들(660)보다 높은 레벨의 성능을 제공하는 하나 이상의 인터페이스(662)를 포함할 수 있다. 인터페이스들(662A 내지 662C) 각각은 DMA 컨트롤러(664A 내지 664C)에 각각 커플링될 수 있다. 예를 들어, 인터페이스들(662) 중 하나 이상은 USB(Universal Serial Bus) 유형의 인터페이스로 구현될 수 있다. 인터페이스들(662) 중 하나 이상은 기가비트 이더넷 유형의 인터페이스로 구현될 수 있다. 인터페이스들(662) 중 하나 이상은 SD(Secure Digital) 유형의 인터페이스로 구현될 수 있다. 인터페이스들(662) 중 하나 이상은 PCIe 인터페이스로 구현될 수 있다.
I/O 서브시스템(650)은 또한, 인터페이스들(662)보다 낮은 레벨의 성능을 제공하는 인터페이스들(666A 내지 666D)과 같은 하나 이상의 인터페이스(666)를 포함할 수 있다. 예를 들어, 인터페이스들(666) 중 하나 이상은 GPIO(General Purpose I/O) 유형의 인터페이스로 구현될 수 있다. 인터페이스들(666) 중 하나 이상은 UART(Universal Asynchronous Receiver/Transmitter) 유형의 인터페이스로 구현될 수 있다. 인터페이스들(666) 중 하나 이상은 SPI(Serial Peripheral Interface) 버스 유형의 인터페이스의 형태로 구현될 수 있다. 인터페이스들(666) 중 하나 이상은 CAN(Controller-Area-Network) 유형의 인터페이스 및/또는 I2C 유형의 인터페이스의 형태로 구현될 수 있다. 인터페이스들(666) 중 하나 이상은 또한, TTC(Triple Timer Counter) 및/또는 WDT(Watchdog Timer) 유형의 인터페이스의 형태로 구현될 수 있다.
I/O 서브시스템(650)은 PJTAG(processor JTAG) 인터페이스(668A) 및 트레이스 인터페이스(668B)와 같은 하나 이상의 디버그 인터페이스(668)를 포함할 수 있다. PJTAG 인터페이스(668A)는 프로그래밍가능 IC(602)에 외부 디버그 인터페이스를 제공할 수 있다. 트레이스 인터페이스(668B)는 프로세싱 서브시스템(610) 또는 프로그래밍가능 로직 서브시스템(630)으로부터 디버그, 예를 들어 트레이스, 정보를 수신하기 위한 포트를 제공할 수 있다.
도시된 바와 같이, 인터페이스들(660, 662, 666, 및 668) 각각은 멀티플렉서(670)에 커플링될 수 있다. 멀티플렉서(670)는, 프로그래밍가능 IC(602)의 외부 핀들, 예를 들어 프로그래밍가능 IC(602)가 배치되는 패키지의 볼(ball)들에 직접적으로 라우팅되거나 커플링될 수 있는 복수의 출력부들을 제공한다. 예를 들어, 프로그래밍가능 IC(602)의 I/O 핀들은 인터페이스들(660, 662, 666, 및 668) 사이에서 공유될 수 있다. 사용자는, 인터페이스들(660 내지 668) 중 어떤 인터페이스가 사용될지, 그에 따라 멀티플렉서(670)를 통해 프로그래밍가능 IC(602)의 I/O 핀들에 커플링될지를 선택하기 위해, 구성 데이터 스트림을 통해 멀티플렉서(670)를 구성할 수 있다. I/O 서브시스템(650)은 또한, 인터페이스들(662 내지 668)을 프로그래밍가능 로직 서브시스템의 프로그래밍가능 로직 회로들에 연결하기 위한 FMIO(fabric multiplexer I/O) 인터페이스(도시 생략)를 포함할 수 있다. 추가적으로 또는 대안적으로, 프로그래밍가능 로직 서브시스템(630)은 프로그래밍가능 로직 내에 하나 이상의 I/O 회로를 구현하도록 구성될 수 있다. 이 예에서, 프로그래밍가능 IC(602)는 전력 및/또는 안전 관리를 위한 다양한 회로들을 갖는 서브시스템(640)을 포함한다. 예를 들어, 서브시스템(640)은, 프로그래밍가능 IC(602)의 다양한 서브시스템들에 전력을 공급하기 위해 사용되는 하나 이상의 전압 도메인을 모니터링하고 유지하도록 구성되는 전력 관리 유닛(646)을 포함할 수 있다. 몇몇 구현예들에서, 전력 관리 유닛(646)은, 전력 소비를 감소시키기 위해, 사용중인 서브시스템들에의 전력을 디스에이블하지 않고 유휴(idle)시에 개별 서브시스템들의 전력을 디스에이블할 수 있다.
서브시스템(640)은 또한, 올바른 동작을 보장하기 위해 서브시스템들의 상태를 모니터링하기 위한 안전 회로들을 포함할 수 있다. 예를 들어, 서브시스템(640)은 [예를 들어, 상태 레지스터들(644)로 예시된 바와 같은] 다양한 서브시스템들의 상태를 모니터링하도록 구성되는 하나 이상의 실시간 프로세서(642)를 포함할 수 있다. 실시간 프로세서들(642)은 에러 검출에 응답하여 다수의 태스크들을 수행하도록 구성될 수 있다. 예를 들어, 몇몇 에러들에 대해, 실시간 프로세서들(642)은 에러 검출에 응답하여 알림을 생성할 수 있다. 다른 예로서, 실시간 프로세서들(642)은 올바른 동작을 위해 서브시스템을 복원하는 것을 시도하기 위해 서브시스템을 리셋할 수 있다. 서브시스템(640)은 다양한 서브시스템들을 상호연결하기 위해 사용될 수 있는 스위치 네트워크(648)를 포함한다. 예를 들어, 스위치 네트워크(648)는 다양한 서브시스템들(610, 630, 및 640)을 I/O 서브시스템(650)의 다양한 인터페이스들에 연결하도록 구성될 수 있다. 몇몇 응용들에서, 스위치 네트워크(648)는 또한, 실시간 프로세서들(642)을 모니터링될 서브시스템들로부터 격리하기 위해 사용될 수 있다. 그러한 격리는, 실시간 프로세서들(642)이 다른 서브시스템들에서 발생하는 에러들에 의해 영향받지 않는 것을 보장하기 위해 어떤 응용 표준들(예를 들어, IEC-61508 SIL3 또는 ISO-26262 표준들)에 의해 필요될 수 있다.
집적된 로직 분석기 회로(680)는, 프로그래밍가능 IC(602) 내의 서브시스템들(610, 630, 640, 또는 650) 중 하나 이상 사이에 포함되거나 연결되는 데이터 버스의 데이터를 탐색하도록(probe) 구성된다. 몇몇 구현예들에서, 데이터 버스에 전송되는 신호들의 샘플들은 스위치(648)를 통해 신호 경로(682)를 지나 집적된 로직 분석기 회로(680)에 제공될 수 있다. 추가적으로 또는 대안적으로, 집적된 로직 분석기 회로(680)는 전용 신호 라인들(도시 생략)을 지나 데이터 버스에 전송되는 신호들의 샘플들을 수신할 수 있다. 집적된 로직 분석기 회로(680)는, JTAG 인터페이스(668)와 같은 I/O 서브시스템(650) 내의 하나 이상의 통신 회로를 통해, 테스트 데이터 입력 또는 디버그 컨트롤 신호들을 수신하고, 샘플링된 데이터 신호들을 출력할 수 있다. 몇몇 구현예들에서, 집적된 로직 분석기 회로(680)는 스위치(648)를 통하는 신호 경로를 통해 I/O 서브시스템(650) 내의 통신 회로들에 커플링된다. 대안적으로 도는 추가적으로, 집적된 로직 분석기 회로(680)는 전용 신호 라인[예를 들어, 점선의 신호 라인(684)]을 통해 I/O 서브시스템(650) 내의 통신 회로들에 직접적으로 커플링될 수 있다.
개시된 방법들 및 회로들은 다양한 시스템들 및 응용들에 적용가능할 것으로 생각된다. 다른 양태들 및 피처들은 명세서의 고려로부터 당업자에게 명백해질 것이다. 양태들 및 피처들이, 어떤 경우 개별 도면들로 설명될 수 있지만, 조합이 명시적으로 도시되지 않거나 명시적으로 조합으로서 설명되지 않았을지라도 한 도면으로부터의 피처들이 다른 도면의 피처들과 조합될 수 있다는 점이 이해될 것이다. 개시된 프로세스들 및 회로들 중 다양한 프로세스들 및 회로들은, ASIC(application specific integrated circuit)으로, 또는 프로그래밍가능 로직 디바이스 상의 로직으로 소프트웨어를 실행하도록 구성되는 하나 이상의 프로세서로 구현될 수 있다. 명세서 및 도면들이 예시로서만 고려되어야 함이 의도되며, 본 발명의 실제 범위는 다음의 청구범위에 의해 나타내어진다.

Claims (15)

  1. 컴퓨터 시스템의 하나 이상의 프로세서 회로에 의해 실행되는 방법에 있어서,
    회로 설계를 시뮬레이팅하거나 상기 회로 설계를 에뮬레이팅함으로써 생산된 한 세트의 신호들에 대한 파형 데이터를 캡처하는 단계;
    상기 한 세트의 신호들에 대해, 상기 하나 이상의 프로세서 회로에 의해 데이터 구조체들을 상기 컴퓨터 시스템의 메모리 회로 내에 생성하고, 상기 한 세트의 신호들에 대한 파형 데이터를 상기 데이터 구조체들 내에 저장하는 단계;
    상기 회로 설계 내에 포함된 메타데이터에 기반하여 상기 컴퓨터 시스템의 하나 이상의 프로세서 회로에 의해 상기 한 세트의 신호들과 연관된 통신 채널들을 식별하는 단계;
    하나 이상의 통신 채널에 대한 한 세트의 트랜잭션 레벨 이벤트(transaction-level event)들의 위치를 찾기(locate) 위해, 상기 하나 이상의 프로세서 회로에 의해 상기 데이터 구조체들 내에 저장된 파형 데이터를 분석하는 단계;
    상기 한 세트의 트랜잭션 레벨 이벤트들의 위치들을 나타내는 데이터를 출력하는 단계;
    상기 한 세트의 트랜잭션 레벨 이벤트들에 기반하여, 상기 하나 이상의 프로세서 회로에 의해 상기 회로 설계 내의 복수의 회로 모듈들에 대한 한 세트의 성능 메트릭(performance metric)들을 결정하는 단계; 및
    상기 회로 모듈들에 대한 한 세트의 성능 메트릭들을 사용자 인터페이스를 통해 디스플레이하는 단계
    를 포함하는, 방법.
  2. 제 1 항에 있어서, 사용자 질의(user query)에 의해 특정된 한 세트의 기준들(criteria)에 대해 상기 하나 이상의 프로세서 회로에 의해 상기 한 세트의 트랜잭션 레벨 이벤트들을 서치(search)하도록 구성된 확장가능(extensible) 응용 프로그램 인터페이스(application program interface; API)를 제공하는 단계를 더 포함하는, 방법.
  3. 제 2 항에 있어서, 사용자 인터페이스를 통한 사용자 질의 입력에 응답하여, 상기 확장가능 API를 사용하여, 상기 사용자 질의에 의해 특정된 한 세트의 기준들과 매칭되는 상기 한 세트의 신호들의 부분들을 상기 데이터 구조체들에 기반하여 상기 하나 이상의 프로세서 회로에 의해 식별하는 단계를 더 포함하는, 방법.
  4. 제 1 항에 있어서, 상기 분석하는 단계는,
    상기 회로 설계 내에 포함된 메타데이터, 상기 회로 설계 내의 신호들의 네임(name)들, 또는 이들의 조합들에 기반하여, 상기 식별된 통신 채널들에 의해 구현된 프로토콜들을 식별하는 단계;
    상기 식별된 프로토콜들에 대한 응용 프로그램 인터페이스(API)들 - 상기 API들은 상기 한 세트의 신호들에 대한 상기 데이터 구조체들로부터의 상기 프로토콜들에 대한 트랜잭션 레벨 이벤트들을 식별하도록 구성됨 - 을 제공하는 단계; 및
    상기 식별된 프로토콜들 중 하나를 구현하는 통신 채널들에 대해, 상기 통신 채널들에 대한 트랜잭션 레벨 이벤트들을 결정하기 위해 상기 프로토콜들에 대해 제공된 API를 실행하는 단계
    를 포함하는 것인, 방법.
  5. 제 4 항에 있어서, 상기 프로토콜들에 대한 API를 제공하는 단계는, 상기 프로토콜들에 대한 API를 API 라이브러리로부터 리트리브(retrieve)하는 단계를 포함하는 것인, 방법.
  6. 제 4 항에 있어서,
    상기 통신 채널들 중 적어도 하나는 상기 한 세트의 신호들 내의 복수의 신호들과 연관되고,
    상기 통신 채널들에 대한 트랜잭션 레벨 이벤트들은, 상기 회로 설계 내에 포함된 상기 하나 이상의 프로세서 회로에 의해 실행되는 프로그램의 명령어들, 데이터 트랜잭션들, 또는 이들의 조합들을 포함하는 것인, 방법.
  7. 제 4 항에 있어서, 식별된 트랜잭션들 중 적어도 하나의 트랜잭션에 대해, 상기 식별된 프로토콜들 중 상이한 프로토콜들을 구현하는 상기 통신 채널들 중 2개 사이의 인터페이스에 걸쳐 상기 적어도 하나의 트랜잭션을 상기 하나 이상의 프로세서 회로에 의해 트레이싱(tracing)하는 단계를 더 포함하고, 상기 적어도 하나의 트랜잭션의 트레이싱은 상기 회로 설계 내의 메타데이터에 기반하여 수행되는 것인, 방법.
  8. 제 1 항에 있어서,
    적어도 하나의 통신 채널에 대해, 상기 적어도 하나의 통신 채널에 대해 결정된 트랜잭션 레벨 이벤트들은 제 1 프로토콜에 대한 제 1 세트의 트랜잭션들을 포함하고,
    상기 하나 이상의 프로세서 회로에 의해 상기 제 1 세트의 트랜잭션들로부터 제 2 프로토콜에 대한 제 2 세트의 트랜잭션들을 식별하는 단계를 더 포함하는 방법으로서, 상기 제 2 프로토콜은 상기 제 1 프로토콜과 비교하여 더 높은 레벨의 프로토콜인 것인, 방법.
  9. 제 8 항에 있어서, 상기 제 2 프로토콜은 CPU 명령어들, 네트워킹 패킷들, 또는 비디오 프레임들의 통신을 위해 구성되는 것인, 방법.
  10. 제 1 항에 있어서, 상기 한 세트의 성능 메트릭들은 레이턴시(latency), 타이밍 슬랙(timing slack), 전력 소비, 신호 지터(signal jitter), 스루풋(throughput), 데이터 전송 사이즈, 또는 이들의 조합들을 포함하는 것인, 방법.
  11. 제 1 항에 있어서, 적어도 하나의 성능 메트릭에 대해, 사용자에 의해 특정된 기간 동안의 상기 적어도 하나의 성능 메트릭의 최소, 최대 및 평균값을 상기 하나 이상의 프로세서 회로에 의해 결정하는 단계를 더 포함하는, 방법.
  12. 제 1 항에 있어서, 그래픽 사용자 인터페이스(graphical user interface; GUI)에,
    상기 한 세트의 신호들에 대한 파형들의 그래픽적 표현(graphical representation)들;
    상기 파형들 내의 트랜잭션 레벨 이벤트들을 식별하는 시각적 마커들; 및
    하나 이상의 검출된 프로토콜 위반(protocol violation)의 유형 및 위치를 식별하는 시각적 마커들을 디스플레이하는 단계
    를 더 포함하는, 방법.
  13. 제 1 항에 있어서, 상기 회로 설계의 동작을 시뮬레이팅하는 단계를 더 포함하는, 방법.
  14. 제 1 항에 있어서,
    상기 회로 설계를 구현하기 위해 프로그래밍가능 집적 회로(integrated circuit; IC)의 프로그래밍가능 리소스들을 구성하는 단계; 및
    상기 프로그래밍가능 IC 상의 집적된 로직 분석기를 사용하여, 상기 파형 데이터를 캡처하고 상기 파형 데이터를 상기 컴퓨터 시스템에 전달하는 단계
    를 더 포함하는, 방법.
  15. 삭제
KR1020187011243A 2015-10-27 2016-09-09 회로 설계를 디버깅하기 위한 방법 및 회로 KR102596638B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/924,090 US9678150B2 (en) 2015-10-27 2015-10-27 Methods and circuits for debugging circuit designs
US14/924,090 2015-10-27
PCT/US2016/051103 WO2017074568A1 (en) 2015-10-27 2016-09-09 Methods and circuits for debugging circuit designs

Publications (2)

Publication Number Publication Date
KR20180072700A KR20180072700A (ko) 2018-06-29
KR102596638B1 true KR102596638B1 (ko) 2023-10-31

Family

ID=57047289

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187011243A KR102596638B1 (ko) 2015-10-27 2016-09-09 회로 설계를 디버깅하기 위한 방법 및 회로

Country Status (6)

Country Link
US (1) US9678150B2 (ko)
EP (1) EP3369015B1 (ko)
JP (1) JP6653756B2 (ko)
KR (1) KR102596638B1 (ko)
CN (1) CN108351907B (ko)
WO (1) WO2017074568A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474515B2 (en) * 2017-05-10 2019-11-12 Intel IP Corporation Debugging translation block and debugging architecture
US10740186B2 (en) * 2017-05-15 2020-08-11 The Boeing Company High data integrity processing system
US10816600B1 (en) * 2017-11-28 2020-10-27 Xilinx, Inc. Protocol analysis and visualization during simulation
US11556162B2 (en) * 2018-03-16 2023-01-17 Advanced Micro Devices, Inc. Per-instruction energy debugging using instruction sampling hardware
US11042564B1 (en) * 2018-09-27 2021-06-22 Xilinx, Inc. Transaction associations in waveform displays
US11475191B2 (en) * 2019-05-15 2022-10-18 International Business Machines Corporation Generating and adding additional control information to logic under test to facilitate debugging and comprehension of a simulation
US11302412B2 (en) * 2019-06-03 2022-04-12 Advantest Corporation Systems and methods for simulated device testing using a memory-based communication protocol
CN112257360B (zh) * 2020-10-21 2024-04-16 海光信息技术股份有限公司 用于数据波形的调试方法、装置、调试系统以及存储介质
CN112379658A (zh) * 2020-11-10 2021-02-19 华东师范大学 一种片上can控制器调试系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110289373A1 (en) 2007-01-31 2011-11-24 Klein Russell A Electornic Design Emulation Display Tool
US20140005999A1 (en) 2012-06-22 2014-01-02 Mentor Graphics Corporation Test bench transaction synchronization in a debugging environment

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7283944B2 (en) * 2003-12-15 2007-10-16 Springsoft, Inc. Circuit simulation bus transaction analysis
US7129745B2 (en) * 2004-05-19 2006-10-31 Altera Corporation Apparatus and methods for adjusting performance of integrated circuits
CN101029918B (zh) * 2007-01-23 2011-03-16 北京芯技佳易微电子科技有限公司 一种基于可编程器件的可控集成电路测试系统及方法
CN101320065B (zh) * 2008-07-22 2010-06-02 中国科学院长春光学精密机械与物理研究所 航天光学遥感器成像电路的仿真测试方法
US8032329B2 (en) * 2008-09-04 2011-10-04 Sonics, Inc. Method and system to monitor, debug, and analyze performance of an electronic design
WO2011058389A1 (en) * 2009-11-10 2011-05-19 Freescale Semiconductor, Inc. Advanced communication controller unit and method for recording protocol events
CN103748562B (zh) * 2010-12-23 2019-03-29 英特尔公司 测试、验证和调试架构
US9135213B2 (en) * 2011-01-13 2015-09-15 Xilinx, Inc. Extending a processor system within an integrated circuit and offloading processes to process-specific circuits
US10776233B2 (en) * 2011-10-28 2020-09-15 Teradyne, Inc. Programmable test instrument
US8533655B1 (en) * 2011-11-15 2013-09-10 Xilinx, Inc. Method and apparatus for capturing data samples with test circuitry
US8848850B2 (en) * 2012-09-25 2014-09-30 Intel Corporation Pulse width modulation receiver circuitry
US20150091907A1 (en) * 2013-09-27 2015-04-02 Byte Paradigm Sprl Method and system for storing waveform data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110289373A1 (en) 2007-01-31 2011-11-24 Klein Russell A Electornic Design Emulation Display Tool
US20140005999A1 (en) 2012-06-22 2014-01-02 Mentor Graphics Corporation Test bench transaction synchronization in a debugging environment

Also Published As

Publication number Publication date
CN108351907A (zh) 2018-07-31
CN108351907B (zh) 2022-04-01
JP2018537762A (ja) 2018-12-20
US9678150B2 (en) 2017-06-13
EP3369015B1 (en) 2021-03-03
KR20180072700A (ko) 2018-06-29
WO2017074568A1 (en) 2017-05-04
EP3369015A1 (en) 2018-09-05
US20170115348A1 (en) 2017-04-27
JP6653756B2 (ja) 2020-02-26

Similar Documents

Publication Publication Date Title
KR102596638B1 (ko) 회로 설계를 디버깅하기 위한 방법 및 회로
US7404160B2 (en) Method and system for hardware based reporting of assertion information for emulation and hardware acceleration
US10078113B1 (en) Methods and circuits for debugging data bus communications
US9977758B1 (en) Device profiling for tuning OpenCL applications on programmable integrated circuits
US20170140082A1 (en) Target Capture And Replay In Emulation
US11200149B2 (en) Waveform based reconstruction for emulation
US10678976B2 (en) Generic protocol analyzer for circuit design verification
CN107608846B (zh) 一种针对fpga内嵌tap接口的调试链路及调试方法
US20070005322A1 (en) System and method for complex programmable breakpoints using a switching network
US7373619B2 (en) Post-silicon test coverage verification
US10664563B2 (en) Concurrent testbench and software driven verification
López-Paradís et al. Gem5+ rtl: A framework to enable rtl models inside a full-system simulator
US10664637B2 (en) Testbench restoration based on capture and replay
Lei et al. Validating direct memory access interfaces with conformance checking
CN117076337B (zh) 一种数据传输方法、装置、电子设备及可读存储介质
Vermeulen et al. Debugging multi-core systems-on-chip
US20180120379A1 (en) Driving pervasive commands using breakpoints in a hardware-accelerated simulation environment
US9864830B1 (en) Method and apparatus for placement and routing of circuit designs
US9581643B1 (en) Methods and circuits for testing partial circuit designs
US9946624B1 (en) Systems and methods to capture data signals from a dynamic circuit
Du et al. FPGA-controlled PCBA power-on self-test using processor's debug features
Ramirez et al. A flexible debugger for a risc-v based 32-bit system-on-chip
Park et al. On‐Chip Debug Architecture for Multicore Processor
Zheng et al. Protocol-guided analysis of post-silicon traces under limited observability
US20240168784A1 (en) Providing integrated circuit functionality coverage indicators using state sequence detectors

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