KR20030066641A - 효율적인 데이터 로딩 및 언로딩을 위하여 합성된 패킷기반 프로토콜 논리를 이용한 하드웨어 보조 설계 검증시스템 - Google Patents

효율적인 데이터 로딩 및 언로딩을 위하여 합성된 패킷기반 프로토콜 논리를 이용한 하드웨어 보조 설계 검증시스템 Download PDF

Info

Publication number
KR20030066641A
KR20030066641A KR10-2003-7005426A KR20037005426A KR20030066641A KR 20030066641 A KR20030066641 A KR 20030066641A KR 20037005426 A KR20037005426 A KR 20037005426A KR 20030066641 A KR20030066641 A KR 20030066641A
Authority
KR
South Korea
Prior art keywords
memory
data
register
logic
packet
Prior art date
Application number
KR10-2003-7005426A
Other languages
English (en)
Inventor
다까히데 오까미
Original Assignee
퀵턴 디자인 시스템즈, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀵턴 디자인 시스템즈, 인크. filed Critical 퀵턴 디자인 시스템즈, 인크.
Publication of KR20030066641A publication Critical patent/KR20030066641A/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명의 시스템은 하드웨어 보조 설계 검증 시스템에서 함수적 검증을 진행하는 사용자 설계 내의 레지스터 및 메모리의 액세스 가능성을 증가시키기 위하여 제공된다. 패킷 기반 프로토콜은, 논리 시뮬레이션이 이루어지는 동안 검증 대상 표적 설계 내의 레지스터 및 메모리로 데이터를 로딩하거나 이들로부터 데이터를 언로딩하기 위한 하드웨어 가속기와 호스트 워크스테이션 간의 데이터 전송 동작을 수행하기 위하여 사용된다. 하드웨어 가속기의 보조로 시뮬레이션되는 표적 DUV의 레지스터 및 메모리로의 보다 원활한 액세스를 제공하기 위하여, 본 발명의 방법 및 장치는 인터페이스 논리를 DUV로 합성한다.

Description

효율적인 데이터 로딩 및 언로딩을 위하여 합성된 패킷 기반 프로토콜 논리를 이용한 하드웨어 보조 설계 검증 시스템{HARDWARE-ASSISTED DESIGN VERIFICATION SYSTEM USING A PACKET-BASED PROTOCOL LOGIC SYNTHESIZED FOR EFFICIENT DATA LOADING AND UNLOADING}
현대의 전자 산업에서, 많은 디지털 하드웨어 설계는 하드웨어 기술 언어로 설명된다. 예를 들어, 1996년 IEEE에 의하여 출판된 "IEEE Standard Hardware Description Language Based on the Verilog Hardware Description Language"에 정의된 IEEE 스탠더드 1364-1995 하드웨어 기술 언어는 유명한 하드웨어 기술 언어 중의 하나이다. 이러한 하드웨어 기술 언어로 기록된 디지털 하드웨어 설계는 제조를 위한 최종 네트리스트를 생성하기 위하여 컴파일되기 전에 의도한 기능성에 대하여 검증되어야 한다. 이러한 설계 검증 작업은 논리 시뮬레이션과 관련되어 있다.
소프트웨어 기반 검증 시스템이 제공할 수 있는 것보다 높은 성능을 요구하는 일련의 설계 검증 작업을 위한 논리 시뮬레이션의 성능을 높이기 위하여, 하드웨어 보조 설계 검증 시스템은 하드웨어 가속기를 사용한다. 하드웨어 가속기는 각각 논리 게이트를 시뮬레이션할 수 있는 많은 수의 논리 프로세서로 이루어진 특수화된 논리 시뮬레이션 장치이다. 예를 들어, 1981년 12월 15일에 공개된 Cocke 등의 미국 특허 제 4,306,283호 "논리 시뮬레이션 장치(Logic Simulation Machine)"는 그러한 논리 시뮬레이션 장치를 개시하고 있다. 이러한 하드웨어 가속기를 사용하지 않고 검증을 수행할 수 있음을 알 수 있다.
하드웨어 가속기로서 유용한 하드웨어 장치의 한가지 유형은 (본 발명의 양수인인) Quickturn Design Systems, Inc., San Jose, California의 CobaltTM제품이다. 대표적인 하드웨어 보조 설계 검증 시스템에 있어서, 하드웨어 가속기는 호스트 워크스테이션에 연결되어 있으며, 상기 호스트 워크스테이션은 검증 제어 프로그램을 실행하여, 컴파일된 검증 대상 설계(design under verification, 이하 "DUV" 또는 "사용자 설계" 라 함)를 하드웨어 가속기로 로딩하고, 논리 시뮬레이션을 시작하고, 논리 시뮬레이션을 종료하고, 그리고 하드웨어 가속기로부터 시뮬레이션 결과를 언로딩한다. 사용자는 DUV가 예상대로 시뮬레이션되었는지를 확인하기 위하여 시뮬레이션 결과와 예상 결과를 검토한다. 설계 검증의 초기 단계에서, 사용자가 시뮬레이션 결과가 부정확하다는 것을 알았을 때, 사용자가 DUV에서 문제점을 찾아내는 것은 비교적 쉽다. 그러나, 설계 검증의 나중 단계에서 DUV를 디버깅하는 것은 더 어려워진다. 이러한 문제점 때문에, 사용자는 종종 논리 시뮬레이션을 행하는 동안에 DUV에서의 몇 개의 키 신호(key signal)의 중간값을 검토하고 싶어한다. 사용자의 이러한 요구를 만족시키기 위하여, 설계 검증 시스템은 논리 시뮬레이션을 행하는 동안에 사용자로 하여금 DUV에서의 신호를 볼 수 있게 하거나 또는 DUV에서의 신호에 액세스할 수 있기 위한 신호 가시성 동작(signal visibility operations)을 지원한다.
소프트웨어 기반 검증 시스템에서 이러한 신호 가시성 동작을 지원하는 것은 용이하다. 그러나, 하드웨어 보조 검증 시스템에서는 용이하지 않다. 이는 호스트 워크스테이션과 DUV를 시뮬레이션하는 하드웨어 가속기 간의 특별한 통신을 요하기 때문이다.
하드웨어 가속기로의 DUV의 첫 로딩은 통상적으로 SCSI 인터페이스와 같이 일반적인 입/출력 인터페이스(I/O interface)를 통하여 이루어진다. 논리 시뮬레이션을 행하는 동안 DUV에서의 적은 수의 신호에 접근하기 위하여 이 I/O 인터페이스를 사용하는 것은 가능하다. 이 경우, 하드웨어 가속기의 인터페이스 제어 프로그램은 우선 요구된 신호를 식별하고, 그 위치를 알아내고, 그 값을 판독하며, 호스트 워크스테이션으로 그 값을 다시 전송한다.
신호 가시성 동작은 통상적으로 특정 신호의 중간값을 검사하는 동작뿐만 아니라, 후속 시뮬레이션 단계를 위한 신호의 논리값을 저장하는 동작도 수행한다. 이러한 기초적인 동작을 사용하여, 사용자는 레지스터 비트에 대응하는 일군의 신호에 액세스함으로써, 레지스터의 값을 검사하거나 레지스터에 값을 저장할 수 있다. 일군의 관련된 레지스터에 액세스함으로써, 사용자는 메모리에 데이터를 기입하거나, 메모리로부터 데이터를 판독할 수 있다.
고도의 반도체 칩 기술을 이용하기 위하여, 많은 DUV는 대용량의 메모리를 포함한다. 종래의 신호 가시성 동작에 있어서는, 기초적인 신호 가시성 동작이 각 신호에 대한 낮은 수준의 검토 또는 저장 동작에 기초하고 있기 때문에, DUV의 대용량 메모리로 데이터를 로딩하거나, DUV의 대용량 메모리로부터 데이터를 언로딩하는 것은 시간이 많이 소요된다.
DUV의 레지스터 또는 메모리에서의 로딩 및 언로딩 동작을 가속시키기 위하여, 하드웨어 보조 설계 검증 시스템은 호스트 워크스테이션과 하드웨어 가속기 간에 신호 가시성 동작을 전담하는 특별한 통신 채널을 사용할 수 있다. 하드웨어 가속기에서 시뮬레이션되는 DUV에서의 요청 신호에 액세스할 때의 오버헤드를 최소화하기 위하여, 상술한 바와 같은 특별한 통신 채널이 입력 및 출력 데이터 버퍼에 직접 연결되며, 이는 이어서 다른 인터페이스 제어 프로그램을 사용하지 않고 DUV로 직접 액세스된다.
데이터 버퍼링을 구비한 인터페이스 구성 중의 하나는 1998년 2월 24일에 공개된 Fogg, Jr.의 미국 특허 제 5,721,953호 "Interface for Logic Simulation Using Parallel Bus for Concurrent Transfers and Having FIFO Buffers for Sending Data to Receiving Units When Ready"에 개시되어 있으며, 여기에서는 인터페이스 지연을 최소화하기 위하여 호스트 컴퓨터와 논리 시뮬레이션 장치간에 제공된 선입선출(First-In-First-Out, FIFO) 버퍼를 구비한 인터페이스에 관하여 설명하고 있다. 미국 특허 제 5,721,953호의 개시내용은 본 명세서의 일부로서 인용된다.
출력 신호는 출력 데이터 버퍼의 비트에 할당되고, 입력 신호는 입력 데이터 버퍼의 비트에 할당된다. 검사 동작을 위하여(즉, 신호의 값을 관찰하거나 판독하기 위하여), 검증 제어 프로그램은 출력 데이터 버퍼에 저장된 신호 값을 호스트 워크스테이션으로 전송하기 위한 데이터 전송을 시작하고, 요구 신호의 값을 선택한다. 저장(deposit) 동작을 위하여(즉, 신호의 값을 기록하기 위하여), 확인 제어 프로그램은 저장할 값을 모으고, 그 값들을 하드웨어 가속기의 입력 데이터 버터로 전송하기 위한 데이터 전송을 시작한다. DUV가 논리 시뮬레이션을 위하여 컴파일될 때, DUV로에 대한 인터페이스를 위하여 요구되는 추가적인 배선 및 논리 요소가 합성된다.
신호 가시성 동작을 위하여 합성된 배선 및 논리 요소는 DUV의 일부분이 아니고, 논리 시뮬레이션을 위하여 DUV와 병합된 가상 요소이다. 가상 논리 요소는 DUV로의 입력을 생성하고, 시뮬레이션 출력을 검토하는 테스트벤치(testbench)를 위하여 종종 사용된다. 이에 대해서는 Beece 등에 의하여 25th ACM/IEEE Design Automation Conference, June 1988 회보에서 발표된 기술지 "The IBM Engineering Verification Engine" 의 218-224 페이지에 설명되어 있다.
만약, 신호 가시성 동작을 위한 가시 신호의 수가 비교적 적다면, 입력 및 출력 신호를 입력 및 출력 데이터 버퍼의 비트로 정적 할당할 수 있다. 그러나, 물리적으로 사용 가능한 데이터 버퍼 비트의 수에는 한계가 있기 때문에, 가시 신호의 수가 대단히 많은 경우에는 바람직하지 않다.
DUV 내에서 신호에 대한 액세스 성능 문제를 해결하는 방법 중 하나는, 가시 신호의 수를 효과적으로 증가시키기 위하여 데이터 버퍼의 각 비트에 대해 2 이상의 신호를 타임 멀티플렉싱(time-multiplexing)하는 것이다. 다수의 신호를 타임 멀티플렉싱하는 방법은 1997년 1월 21일 공개된 Agarwal 등의 미국 특허 제 5,596,742호 "Virtual Interconnections for Reconfigurable Logic Systems"에 개시되어 있다. 상기 공보는 다수의 논리적 배선과 이 연결의 파이프라이닝(pipelining)에서, 각 물리적인 배선을 현명하게 멀티플렉싱하기 위한 컴파일 기술을 설명한다. 다른 타임 멀티플렉싱 방법은, Agarwal의 공보와는 상당히 다른 것으로, 1999년 9월 28일 공개된 Sample 등의 미국 특허 제 5,960,191호 "Emulation System with Time-Multiplexed Interconnect"에 개시되어 있으며, 이는 다수의 설계 신호를 물리적 논리 칩 핀 및 인쇄된 회로 기판 상으로 타임 멀티플렉싱하는 하드웨어 에뮬레이션 시스템을 개시한다. 타임 멀티플렉싱과 관련된 또 다른 공보로는 2000년 2월 1일 허여된 Sample 등의 미국 특허 제 6,020,760호 "I/O Buffer Circuit with Pin Multiplexing"이 있으며, 상기 공보는 유효한 I/O 핀 가용성을 증가시키기 위하여, 하나의 입력/출력 핀 상에 적어도 두개의 신호를 타임 멀티플렉싱하는 입력/출력 버퍼 회로를 구비하는, 재구성 가능한 논리를 구현하기 위한 집적 회로를 개시한다. 미국 특허 제 5,596,742호, 제 5,960,191호 및 제 6,020,760호는 그 전체 내용이 본 명세서에 참조로서 포함된다.
이러한 타임 멀티플렉싱 방법은, 데이터 버퍼를 통하여 가시 신호의 수를 효과적으로 증가시킬 수 있으나, DUV 내의 레지스터 및 메모리에 액세스함에 있어서의 성능 문제를 다루지 않는다. 레지스터 또는 메모리에 액세스하는 데에 요구되는 신호의 분류(grouping)는 일군 내의 신호의 비트 값을 모으거나 나눔으로써 발생하는 부담을 줄일 수 있다. 그러나, 일군 내의 모든 신호는 동시에 볼 수 있어야 하며, 그러한 신호군이 많을 수 있으며, 두개 이상의 신호군에 의해 공유되는 신호가 있을 수 있기 때문에, 이 신호 분류 방법은 다수의 신호를 타임 멀티플렉싱함에 있어서 심각한 제한을 일으킬 수 있다.
신호 그룹핑이 이루어지든 이루어지지 않든, 낮은 레벨의 검토 및 저장 동작을 이용하여 하나의 레지스터에 액세스하기 위해서는 몇 개의 단계가 요구되며, 하나의 메모리 워드에 액세스하기 위해서는 더 많은 단계가 요구된다. 따라서, 검증 제어 프로그램이 매우 큰 데이터를 메모리로 로딩하거나 메모리로부터 언로딩하는 데에는, 대단히 많은 시간이 소요될 것으로 예상된다. 보다 적은 클록 사이클로 시뮬레이션 될수록, 전체적 시뮬레이션 수행의 질을 떨어뜨리는 이러한 시간이 많이 소요되는 로딩 및 언로딩 동작은 시뮬레이션을 더 비효율적으로 만든다.
만약 DUV가 다수의 대용량 메모리를 포함한다면, 이 성능 저하는 매우 심각하며, 하드웨어 가속기를 구비한 시뮬레이션 성능 향상을 실질적으로 무효로 만들게 된다. 데이터 로딩 및 언로딩을 위하여 요구되는 시간을 줄이기 위한 방법 및 장치가 요구된다. 또한 레지스터 및 메모리에 보다 용이하게 액세스하기 위한 방법 및 장치도 요구된다.
<발명의 요약>
본 발명은, 검증 대상 표적 설계(target design under verification, 표적설계 또는 사용자 설계로 알려짐)에서의 레지스터 및 메모리로 데이터를 로딩하거나 이들로부터 데이터를 언로딩하기 위하여, 호스트 워크스테이션과 하드웨어 가속기 간의 데이터 전송 동작을 수행하는 새로운 패킷 기반 프로토콜을 사용한다. 상기 프로토콜은 크기가 가변인 요구 패킷(request packet) 및 응답 패킷(response packet)에 기초한다. 요구 패킷은 호스트 워크스테이션으로부터 하드웨어 가속기로의 입력 패킷이며, 명령, 인자(argument)와 선택적으로 데이터를 포함한다. 한편, 응답 패킷은 하드웨어 가속기로부터 호스트 워크스테이션으로의 출력 패킷이며, DUV의 표적 레지스터 또는 메모리로부터 판독한 데이터를 포함한다.
본 발명에 따른 일 실시예의 태양에서, 사용자의 설계를 컴파일하는 방법으로서, 사용자의 설계에 있어서의 모든 메모리 및 레지스터가 식별되는 방법이 개시된다. 메모리 및 레지스터가 식별된 후, 액세스 가능성 논리는 사용자 설계로 합성된다. 액세스 가능성 논리는 메모리 및 레지스터로의 액세스 포트를 포함한다. 본 발명의 다른 태양에서, 사용자 설계에서의 메모리 및 레지스터 각각에 고유의 식별자가 할당된다. 본 발명의 또 다른 태양에서, 액세스 가능성 논리는 선택 논리(selecting logic)를 포함한다. 이 선택 논리는 고유 식별자를 수신하고, 사용자 설계에서의 메모리 또는 레지스터 중 특정한 하나를 선택하도록 적응된다. 본 발명의 또 다른 태양에서, 액세스 가능성 논리는 사용자 설계의 특정 메모리 또는 레지스터에 기록하거나, 특정 메모리 또는 레지스터로부터 판독하기 위한 논리를 포함한다. 본 발명의 또 다른 태양에서, 액세스 가능성 논리는 호스트로부터의 명령을 수신하고, 사용자 설계의 메모리 및 레지스터로의 데이터의 판독 및 기록의실행을 제어하는 디코딩 논리를 포함한다.
요구 및 응답 패킷을 처리하기 위하여, 프로토콜 인터페이스 논리(protocol interface logic)는 컴파일시에 표적 DUV의 레지스터 및 메모리의 크기 파라미터와 합성되고, 동작시에 표적 DUV와 시뮬레이션된다. 상기 합성된 프로토콜 인터페이스 논리는 패킷 레지스터, 유한 상태 기계(finite state machine), 명령 디코딩 논리, 명령 실행 논리 및 데이터 로딩·언로딩 동작을 위한 데이터 판독·기록 제어 논리를 포함한다. 이는 호스트 워크스테이션에서 실행되는 검증 제어 프로그램으로부터의 요구 패킷을 디코딩하고, 그 패킷에서 인코딩된 명령을 실행한다. 만약 명령이 데이터 기록 요구라면, 프로토콜 인터페이스 논리는 표적 레지스터 또는 메모리 위치에 패킷의 데이터를 기록한다. 만약 명령이 데이터 판독 요구라면, 프로토콜 인터페이스 논리는 표적 레지스터 또는 메모리 위치로부터 데이터를 판독하여, 응답 패킷에 넣어 호스트 워크스테이션으로 전송한다.
이하에서, 본 발명에 대한 상기한 특징 및 다른 바람직한 특징은, 요소들의 조합 및 구현에 대한 다양한 신규한 세부사항과 함께, 첨부된 도면을 참고하여 더욱 상세히 설명되고, 청구범위에서 교시될 것이다. 발명을 실시하는 특정한 방법 및 회로는 단지 설명을 위해서만 개시되는 것이며, 발명을 제한하는 것이 아님을 알 수 있을 것이다. 본 기술 분야의 숙련된 기술자라면 알 수 있듯이, 본 발명의 원리 및 특징은 다양하고 많은 실시예에 있어서 본 발명의 사상을 벗어나지 않고 사용될 수 있다.
본 발명은 일반적으로 디지털 하드웨어 설계 검증 시스템에 관한 것이며, 특히 논리 시뮬레이션을 위하여 하드웨어 가속기를 사용하는 하드웨어 보조 설계 검증 시스템에 관한 것이다.
본 발명의 예시적인 실시 태양들을 나타내는 첨부 도면을 참조하여 본 발명의 신규한 특징 및 이점이 명백해진다.
도 1은 검증 대상 설계의 예를 위하여 합성된 프로토콜 인터페이스 논리를 나타내는 부속 시스템의 블록도.
도 2a는 프로토콜 인터페이스 논리와 결합된 DUV 예에서의 레지스터 블록의 블록도.
도 2b는 프로토콜 인터페이스 논리와 결합된 DUV 예에서의 메모리 블록의 블록도.
도 3은 프로토콜 인터페이스 논리의 패킷 I/O 블록의 상세 블록도.
도 4는 프로토콜 인터페이스 논리의 메모리 어드레스 블록의 상세 블록도.
도 5는 프로토콜 인터페이스 논리의 데이터 판독 블록의 상세 블록도.
도 6은 프로토콜 인터페이스 논리에 의하여 처리되는 프로토콜 명령의 차트.
도 7은 프로토콜 인터페이스 논리의 명령 디코딩 블록의 상세 블록도.
도 8은 프로토콜 인터페이스 논리의 상태 및 상태 천이에 관한 설명도.
도 9는 프로토콜 인터페이스 논리의 상태 제어 블록의 상세 블록도.
도 10은 프로토콜 인터페이스 논리의 판독/기록 제어 블록의 상세 블록도.
도 11a는 프로토콜 인터페이스 논리에서의 레지스터 기록 명령의 실행에 관한 타이밍 차트.
도 11b는 프로토콜 인터페이스 논리에서의 레지스터 판독 명령의 실행에 관한 타이밍 차트.
도 11c는 프로토콜 인터페이스 논리에서의 메모리 기록 명령의 실행에 관한 타이밍 차트.
도 11d는 프로토콜 인터페이스 논리에서의 메모리 판독 명령의 실행에 관한 타이밍 차트.
도 12는 프로토콜 인터페이스 논리를 생성하는 컴파일 시간 단계의 흐름도.
도 13은 프로토콜 인터페이스 논리를 위한 프로토콜 필드 크기의 계산에 관한 상세 흐름도.
도 14는 프로토콜 인터페이스 논리의 요소의 구성에 관한 상세 흐름도.
도 15는 프로토콜 인터페이스 논리를 포함하는 DUV의 시뮬레이션을 위한 실행 시간 동작의 흐름도.
도 16은 프로토콜 인터페이스 논리를 포함하는 동작을 설명하기 위하여 사용되는 상수, 변수 및 함수의 정의와 선언에 대한 코드 목록.
도 17은 프로토콜 인터페이스 논리로 패킷을 전송하거나, 프로토콜 인터페이스 논리로부터 패킷을 수신하기 위한 함수의 코드 목록.
도 18은 프로토콜 인터페이스 논리를 포함하는 레지스터를 기록·판독하고, 메모리를 기록·판독하기 위한 함수의 코드 목록.
이제 도면을 참조하여, 본 발명에 대한 바람직한 장치 및 방법에 대하여 설명한다.
첫번째 단계는 DUV 내의 메모리 및 레지스터를 식별하는 것이다. 일 실시예에 있어서, 이 첫번째 단계는 DUV 내의 모든 메모리와 레지스터를 식별하는 것을 포함한다. 다른 실시예에 있어서는, 이 첫번째 단계는 DUV 내의 메모리와 레지스터의 부분 집합만을 식별하는 것이다. 본 실시예에 있어서, 사용자는 특별히 관심이 있는 메모리와 레지스터를 식별하여야 한다. DUV의 메모리와 레지스터의 부분 집합만을 식별하는 것의 이점은, DUV가 검증을 위하여 보다 신속하게 컴파일될 수 있다는 점이다. 그러나, 메모리와 레지스터의 부분 집합만을 식별함으로써, 본 발명의 다양한 실시예에 의하여 제공되는 상기 이점은 식별된 특정 메모리 및 레지스터에만 제한될 것이다. 이하에서 더 상세하게 언급되겠지만, 메모리 및 레지스터는 일단 식별되면 인덱스되어야 하므로, 각 식별된 메모리 및 레지스터는 고유의 식별자를 갖는다.
두번째 단계는 DUV에 더해지는 논리를 합성하는 것이다. 이 합성된 논리는 첫번째 단계에서 식별된 레지스터 및 메모리로의 액세스를 제공한다. 두번째 단계에서 합성된 논리에 대해서는 이하에서 상세히 설명한다. 그러나, 일반적으로 이 합성된 논리는 상술한 고유 식별자를 수신하는 선택 논리를 포함하며, 따라서 특정 메모리 또는 레지스터는 판독 또는 기록을 위하여 액세스될 수 있다.
세번째 단계는 레지스터 및 메모리로의 경로를 만드는 단계이다. 이 단계는 아래에서 아주 상세히 설명한다.
도 1은 본 발명에 대한 바람직한 실시예의 블록도이다. 도 1은 검증 대상 설계(DUV, 30)의 메모리 및 레지스터로의 보다 수월한 액세스를 제공하기 위하여 합성된 논리와 함께, DUV(30)를 나타낸다. 도 1은 DUV를 시뮬레이션하는 하드웨어가속기(20)에 통신 채널(14)을 통하여 액세스된 호스트 워크스테이션(10)과, 효율적인 데이터 로딩 및 언로딩 동작을 위하여 DUV(30)와 합성된 프로토콜 인터페이스 논리(40)를 나타낸다. 제어 프로그램(11)은, 프로토콜 인터페이스 논리(40)를 통하여 DUV(30)의 레지스터 및 메모리로 데이터를 로딩하거나 이들로부터 데이터를 언로딩하기 위하여, 호스트 워크스테이션(10)에서 실행되는 검증 제어 프로그램이다. 대표적인 하드웨어 가속기(20)는 Quickturn Design Systems, Inc의 CobaltTM제품이다. 대표적인 제어 프로그램(11)은 Quickturn Design Systems, Inc의 PowerSuiteTM소프트웨어 패키지이다.
제어 프로그램(11)은 DUV(30)의 레지스터 또는 메모리 위치로 데이터를 로딩할 때, 우선 내부 버스(12)를 통하여 데이터와 함께 기록 명령을 데이터 버퍼(13)로 보낸 다음, 통신 채널(14)을 통하여 데이터 버퍼(13)로부터 하드웨어 가속기(20)의 데이터 버퍼(21)로의 데이터 전송을 시작한다. 프로토콜 인터페이스 논리(40)는 데이터 버퍼(21)로부터 기록 명령 및 기록 데이터를 수신하고, 기록 명령을 실행하여 DUV(30)의 표적 레지스터 또는 메모리 위치로 데이터를 로딩한다.
제어 프로그램(11)은 DUV의 레지스터 또는 메모리 위치로부터 데이터를 언로딩할 때, 우선 내부 버스(12)를 통하여 데이터 버퍼(13)로 판독 명령을 전송한 다음, 통신 채널(14)을 통하여 데이터 버퍼(13)로부터 하드웨어 가속기(20)의 데이터 버퍼(21)로의 데이터 전송을 시작한다. 프로토콜 인터페이스 논리(40)는 데이터 버퍼(21)로부터 판독 명령을 수신하고, 이를 실행하여 DUV(30)의 표적 레지스터 또는 메모리 위치로부터의 데이터를 데이터 버퍼(21)로 언로딩한다. 그 다음, 데이터 버퍼(21)에 저장된 데이터는, 내부 버스(12)를 통하여 데이터 버퍼(13)로부터 데이터를 수신하는 제어 프로그램(11)에 의하여 개시된 전송 동작에 의하여 통신 채널(14)을 통하여 데이터 버퍼(13)로 전송된다.
상술한 바와 같이, 프로토콜 인터페이스 논리(40)는 DUV(30)를 위하여 합성된 특별한 논리이다. 바람직한 실시예에 있어서, 프로토콜 인터페이스 논리(40)는 패킷 I/O 블록(41), 상태 제어 블록(42), 명령 디코딩 블록(43), 판독/기록 제어 블록(44), 메모리 어드레스 블록(45) 및 데이터 판독 블록(46)을 포함한다.
상기 패킷 I/O 블록(41)은, 호스트 워크스테이션(10)으로부터의 명령 및 기록 데이터를 입력 패킷 레지스터(도 1에 표시하지 않음)에 보유한다. 또한, 패킷 I/O 블록(41)은, DUV(30)로부터의 정보 및 판독 데이터를 출력 패킷 레지스터(도 1에 표시하지 않음)에 보유한다. 상기 패킷 I/O 블록(41)은 데이터 버퍼로부터의 명령 및 데이터 기록 신호(22), 그리고 데이터 판독 블록(46)으로부터의 데이터 판독 신호(57)를 수신한다. 상기 패킷 I/O 블록(41)은 제어 정보 및 데이터 판독 신호(23)를 데이터 버퍼(21)에 전송하고, 명령 및 데이터 신호(50)를 상태 제어 블록(42), 명령 디코딩 블록(43), 판독/기록 제어 블록(44), 메모리 어드레스 블록(45) 및 DUV(30)로 전송한다.
상기 상태 제어 블록(42)은 프로토콜 인터페이스 논리(40)의 현재 상태를 유지하고, 상태 천이를 한다. 상태 제어 블록(42)은 명령 디코딩 블록(43)으로부터 디코딩된 명령 정보 신호(51)를 수신하고, 패킷 I/O 블록(41)으로부터 명령신호(50)를 수신한다. 상태 제어 블록(42)은 판독/기록 제어 블록(44)으로 상태 신호(52)를 생성한다.
상기 명령 디코딩 블록(43)은 패킷 I/O 블록(41)으로부터의 명령을 디코딩 한다. 명령 디코딩 블록(43)은 패킷 I/O 블록(41)으로부터 명령 신호(50)를 수신하여, 디코딩된 정보 신호(51)를 상태 제어 블록(42) 및 판독/기록 제어 블록(44)으로 생성한다.
상기 판독/기록 제어 블록(44)은 내부 및 외부의 판독 및 기록 제어 신호를 생성한다. 판독/기록 제어 블록(44)은 디코딩된 명령 정보 신호(51)를 명령 디코딩 블록(43)으로부터 수신하고, 상태 정보 신호(52)를 상태 제어 블록(42)으로부터 수신하며, 데이터 기록 신호(50)를 패킷 I/O 블록(41)으로부터 수신한다. 판독/기록 제어 블록(44)은 프로토콜 인터페이스 논리(40) 내부로 판독 및 기록 제어 신호(53)를 생성하고, DUV(30)의 레지스터 및 메모리 블록으로 판독 및 기록 제어 신호(54)를 생성한다.
상기 메모리 어드레스 블록(45)은 메모리 어드레스를 보유하고, 메모리 액세스 동작을 위하여 이를 업데이트한다. 메모리 어드레스 블록(45)은 패킷 I/O 블록(41)으로부터 메모리 어드레스 신호(50)를 수신하여, DUV(30)로 현재 메모리 어드레스 신호(55)를 생성한다.
상기 데이터 판독 블록(46)은 DUV(30)의 레지스터 및 메모리로부터 데이터 신호(56)를 수신하여, 패킷 I/O 블록(41)으로 선택된 데이터 신호(57)를 생성한다.
도 2a는 대표적인 DUV에 있는 세 개의 레지스터 예, REG0, REG1 및 REG2와,이러한 레지스터로의 판독 및 기록을 가능하게 하는 DUV(30)로 합성된 액세스 논리를 나타낸다. 레지스터 REG0, REG1 및 REG2는 상술한 첫번째 단계에서 식별되었을 것이다. 이 예에서, 레지스터 REG0, REG1 및 REG2는 각각 48비트, 16비트, 32비트 레지스터(60, 63, 66)이며, 이는 본 발명의 다양한 실시예의 적응성의 증명을 가능케 한다. DUV(30)에서 레지스터 REG0, REG1 및 REG2는 DUV 논리(31)로부터 기록 데이터 및 제어 신호(32)를 수신하고, DUV 논리(31)로 데이터 판독 신호(56)를 생성한다. 데이터 멀티플렉스(61, 64, 67)와 제어 멀티플렉서(62, 65, 68)는 합성되고 DUV(30)로 더해져서, 프로토콜 인터페이스 논리(40)는 레지스터 REG0, REG1 및 REG2로 데이터를 로딩하거나, 이 레지스터들로부터 데이터를 언로딩할 수 있게 된다. 멀티플렉서(61, 62, 64, 65, 67, 68)는 프로토콜 인터페이스 논리(40)로부터의 신호군(54)에 있는 선택 신호 REGS에 의하여 제어된다. RWE0, RWE1 및 RWE2는 프로토콜 인터페이스 논리(40)로부터의 신호군(54)에 있는 레지스터 기록 제어 신호이며, 각각 제어 멀티플렉서(62, 65, 68)에 연결된다. DIN<47:0>은 프로토콜 인터페이스 논리(40)로부터의 48비트 데이터 신호군(50)이며, 이는 데이터 멀티플렉서(61, 64, 67)로 연결된다. RRD0<47:0>은 REG0으로부터의 48비트 데이터 신호군이고, RRD<15:0>은 REG1으로부터의 16비트 데이터 신호군이고, RRD2<31:0>은 REG2로부터의 32비트 데이터 신호군이다. RRD0, RRD1 및 RRD2는 신호군(56)으로서 DUV 논리(31)와 프로토콜 인터페이스 논리(40)에 연결된다.
선택 신호 REGS가 나타나지 않을 때, REG0, REG1 및 REG2는 DUV 논리(31)로부터 기록 데이터 및 제어 신호(32)를 수신한다. 선택 신호 REGS가 나타난 때에는, REG0, REG1 및 REG2는 데이터 기록 신호(50)와 제어 신호(54)를 프로토콜 인터페이스 논리(40)로부터 수신한다. 선택 신호 REGS와 상관없이, 데이터 판독 신호(56)는 DUV 논리(31)와 프로토콜 인터페이스 논리(40)으로 전송된다.
도 2b는 예시적인 DUV(30)에 있는 2개의 예시적인 메모리, MEM0 및 MEM1과 이 메모리로의 판독 및 기록을 가능케 하기 위하여 DUV(30)로 합성되는 액세스 논리를 나타낸다. 메모리 MEM0과 MEM1은 전술한 첫번째 단계에서 식별되었을 것이다. MEM0은 40비트 데이터, 8비트 어드레스를 갖는 메모리(70)이고, MEM1은 18비트 데이터, 14비트 어드레스를 갖는 메모리(74)이다. 이러한 데이터 크기와 어드레스 길이는 발명의 적응성을 나타내기 위하여 선택된 것이며, DUV(30)에서 존재할 수 있는 메모리의 타입을 제한하기 위한 것은 아니다. DUV(30)에서, MEM0과 MEM1은 기록 데이터, 메모리 어드레스 및 기록 인에이블 신호(34)를 DUV 논리(33)로부터 수신하여, DUV 논리(33)로 데이터 판독 신호(56)를 생성한다. 데이터 멀티플렉서(71, 75), 어드레스 멀티플렉서(72, 76) 및 기록 인에이블 멀티플렉서(73, 77)는 합성되고 DUV(30)으로 더해져서, 프로토콜 인터페이스 논리(40)은 MEM0과 MEM1로 데이터를 로딩하거나, 이로부터 데이터를 언로딩할 수 있게 된다. 멀티플렉서(71, 72, 73, 75, 76, 77)는 프로토콜 인터페이스 논리(41)으로부터의 신호군(54)의 선택 신호 MEMS에 의하여 제어된다. MWE0과 MWE1은 프로토콜 인터페이스 논리(40)으로부터의 신호군(54)에 있는 메모리 기록 인에이블 신호이며, 각각 기록 인에이블 멀티플렉서(73, 77)에 연결된다. DIN<39:0>은 프로토콜 인터페이스 논리(40)으로부터의 40비트 신호군(50)이며, 데이터 멀티플렉서(71, 75)로 연결된다.MAD<13:0>은 프로토콜 인터페이스 논리(40)으로부터의 14비트 어드레스 신호군(55)이며, 어드레스 멀티플렉서(72, 76)로 연결된다. MRD0<39:0>은 MEM0으로부터의 40비트 데이터 신호군이고, MRD1<17:0>은 MEM1으로부터의 18비트 데이터 신호군이다. MRD0과 MEM1은 신호군(56)으로서, DUV 논리(33) 및 프로토콜 인터페이스 논리(40)으로 연결된다.
선택 신호 MEMS가 나타나지 않을 때, 메모리 MEM0과 MEM1은 기록 데이터, 메모리 어드레스 및 기록 인에이블 신호(34)를 DUV 논리(33)로부터 수신한다. 선택 신호 MEMS가 나타날 때, MEM0과 MEM1은 데이터 기록 신호(50), 메모리 어드레스 신호(55) 및 기록 인에이블 신호(54)를 프로토콜 인터페이스 논리(40)로부터 수신한다. 선택 신호 MEMS와 상관없이, 데이터 판독 신호(56)는 DUV 논리(33)와 프로토콜 인터페이스 논리(40)로 전송된다.
도 3은 프로토콜 인터페이스 논리(40)의 패킷 I/O 블록(41)의 상세 블록도이다. 데이터 버퍼(21)에 있는 요구 패킷은 신호(22)를 통하여 명령 실행을 위하여 입력 패킷 레지스터(80)로 옮겨진다. 바람직한 실시예에 있어서, 레지스터(80)에 저장된 요구 패킷은 다섯개의 필드, 즉, 1비트 TAG, 3비트 CMD, 1비트 END, 2비트 ID 및 48비트 DATA 필드로 나누어진다. 이들 필드의 길이는 특정 길이로 제한되지 않으며, 특정 시스템의 요구에 의하여 만들어질 수 있다. CMD, END, ID 및 DATA 필드에서의 값은 신호(50)를 통해 다른 블록으로 전송된다. TAG 필드의 값은 1비트 레지스터(81)로 전송되며, 상기 1비트 레지스터(81)는 선행 사이클의 TAG 값을 보유한다. 레지스터(80)의 TAG 필드에서의 값은, 새로운 패킷이 레지스터(80)에도착했는지를 나타내는 신호(83)상의 NEWIN을 생성하기 위하여, 배타적 논리합 게이트에서, 레지스터(81)에 저장된 선행 TAG 값과 대조된다. 만약 NEWIN이 1이라면, 레지스터(80)는 데이터 버퍼(21)로부터 새로운 패킷을 받은 것이다. 이 특정 실시예에 있어서, TAG 필드의 크기는 도 3의 예시적인 패킷 I/O 블록(41)에서 1비트이지만, 이는 2비트 이상이어도 된다. 이 경우, 배타적 논리합 게이트(82)는 두 개의 값이 동일한지 대조하기 위한 적절한 논리 블록으로 교체되어야 한다.
응답 패킷은 출력 패킷 레지스터(84)에 저장되며, 신호(23)를 통하여 데이터 버퍼(21)로 옮겨진다. 이 특정 실시예에 있어서, 레지스터(84)에 있는 응답 패킷은 3개의 필드, 즉, 1비트 TAG, 6비트 UNUSED 및 48비트 DATA 필드로 나누어진다. 이 필드들의 길이는 위와 같은 특정한 길이로 제한되지 안으며, 특정 시스템의 요구에 의하여 만들어질 수 있다. 신호(57)에서의 값은 레지스터(84)의 DATA 필드에 저장된다. UNUSED 필드의 값은 사용되지 않으며, 언제나 0이다. TAG 필드의 값은 NOT 게이트에 의하여 토글링된다. 신호(86)에 있는 NEWOUT은, NEWOUT이 나타났을 때에만 레지스터(84)가 새로운 데이터와 새로운 태그 비트(tag bit)를 저장하도록 레지스터(84)를 제어한다. 이 특정 실시예에 있어서, TAG 필드는 예시적인 패킷 I/O 블록(41)에서 1비트이지만, 이는 2비트 이상일 수도 있다. 이 경우에는, NOT 게이트(85)는 TAG 필드 값을 업데이트하는 적절한 논리 블록으로 교체되어야 한다.
도 4는 프로토콜 인터페이스 논리(40)의 메모리 어드레스 블록(45)의 바람직한 실시예에 대한 상세 블록도이다. 레지스터(90)는 어드레스 멀티플렉서(91)를 통해 전달되는 14비트 메모리 어드레스를 보유한다. 상기 멀티플렉서 선택 신호MADS와 레지스터 제어 신호 MADE는 신호(53)로 온다. MADS가 0일 때, 멀티플렉서(91)는 어드레스 증분기(92)에 의하여 증분된 어드레스를 선택한다. MADS가 1일 때, 멀티플렉서는 신호(50)의 DIN<13:0>의 메모리 어드레스를 선택한다. 레지스터(90)에 보유된 현재 메모리 어드레스 MAD<13:0>는 신호(55)를 통해 DUV(30)로 전송된다.
도 5는 프로토콜 인터페이스 논리(40)의 바람직한 데이터 판독 블록(46)의 상세 블록도이다. 3개의 레지스터 판독 데이터 RRD0<47:0>, RRD1<15:0> 및 RRD2<31:0>는 신호(56)를 통하여 신호(53)의 RRDS<1:0>에 의하여 제어되는 레지스터 데이터 멀티플렉서(93)로 전송된다. RRDS<1:0>의 0, 1, 2 값은 각각 RRD0, RRD1, RRD2를 선택한다. 2개의 메모리 판독 데이터 MRD<39:0>와 MRD1<17:0>는 신호(56)를 통하여, 신호(53)의 MRDS에 의하여 제어되는 메모리 데이터 멀티플렉서(94)로 전송된다. MRDS의 0, 1 값은 각각 MRD0, MRD1을 선택한다. 멀티플렉서(93, 94)로부터의 데이터는 선택 신호 MRS에 의하여 제어되는 다른 멀티플렉서(95)로 전송된다. MRS의 0, 1 값은 각각 멀티플렉서(93)의 출력과 멀티플렉서(94)의 출력을 선택한다. 멀티플렉서(95)의 출력은 신호(57)를 통하여 패킷 I/O 블록(41)으로 전송되는 최종 판독 결과이다.
도 6은 프로토콜 인터페이스 논리(41)에 의해 디코딩되고 실행되는 바람직한 프로토콜 명령의 차트이다. 도 3에 나타난 바와 같이, 데이터 버퍼(21)로부터의 입력 패킷 레지스터(80)에 저장된 요구 패킷은 5개의 필드로 나누어진다. 3비트 CMD 필드는 7개의 명령을 인코딩한다. NOP(No Operation) 명령은 CMD=0 또는 1로지정되고, 아무것도 하지 않고 적어도 한 클록 사이클을 보낸다. WR(Write Register) 명령은 CMD=2에 의하여 지정되고, 이는 ID 필드의 Rid 또는 레지스터 ID에 의하여 지정되는 표적 레지스터를 DATA 필드의 기록 데이터와 함께 기록한다. RR(Read Register) 명령은 CMD=3에 의하여 지정되고, 이는 ID 필드의 Rid 또는 레지스터 ID에 의하여 지정된 표적 레지스터의 데이터를 판독하여, 이를 출력 패킷 레지스터(84)의 DATA 필드에 저장한다.
SWM(Select Write Memory)와 WM(Write Memory) 명령은 연속 모드에서 메모리로 데이터를 로딩하기 위하여 사용된다. SWM 명령은 CMD=4에 의하여 지정되며, ID필드의 MID 또는 메모리 ID를 도 10의 메모리 ID 레지스터(130)에 저장하고, DATA 필드의 시작 어드레스를 도 4의 메모리 어드레스 레지스터(90)에 저장한다. SWM 명령의 실행은 프로토콜 인터페이스 논리(40)를 메모리 기록 모드로 만든다. WM 명령은 CMD=5에 의하여 지정되고, 이는 메모리 ID 레지스터(130)에 의하여 표시되는 표적 메모리로 DATA 필드의 기록 데이터를 기록하며, 표적 기록 메모리 어드레스는 메모리 어드레스 레지스터(90)에 저장된 어드레스이다. WM 명령이 표적 메모리로 마지막 데이터를 기록할 때, 값 1이 END 필드에 들어간다. 그리고 그 이외의 경우에는 0이다. 프로토콜 인터페이스 논리(40)가 메모리 기록 모드에 있을 때, WM 명령은 유일하게 받아들여져 실행되는 명령이다. END 필드의 마지막 데이터 표시는 프로토콜 인터페이스 논리(40)를 다시 일반 비메모리 모드로 만든다.
SRM(Select Read Memory)과 RM(Read Memory) 명령은 연속 모드에서 메모리로부터 데이터를 언로딩하기 위하여 사용된다. SRM 명령은 CMD=6에 의하여 지정되고, ID 필드의 MID 또는 메모리 ID를 메모리 ID 레지스터(130)에 저장하고, DATA 필드의 시작 어드레스를 메모리 어드레스 레지스터(90)에 저장한다. SRM 명령의 실행으로 프로토콜 인터페이스 논리(40)를 메모리 판독 모드로 만든다. RM 명령은 CMD=7에 의하여 지정되고, 메모리 ID 레지스터(130)에 의하여 표시된 표적 메모리로부터 데이터를 판독하며, 표적 판독 메모리 어드레스는 메모리 어드레스 레지스터(90)에 저장된 어드레스이다. 표적 메모리 위치로부터 판독된 데이터는 출력 패킷 레지스터(84)의 DATA 필드에 저장된다. RM 명령이 표적 메모리로부터 마지막 데이터를 판독한 경우, 값 1을 END 필드에 넣는다. 그리고, 그 이외의 경우에는 0이다. 프로토콜 인터페이스 논리(40)가 메모리 판독 모드에 있을 때, RM 명령은 유일하게 받아들여져 실행되는 명령이다. END 필드의 마지막 데이터의 표시는 프로토콜 인터페이스 논리(40)를 다시 일반 비메모리 모드로 만든다.
도 4에 나타난 바와 같이, WM 또는 RM 명령의 실행은 메모리 어드레스를 1 만큼 증분시킨다. 첫번째 메모리 어드레스는 SWM 또는 SRM 명령에 의하여 저장된다. SWM 명령 이후의 첫번째 WM 명령은 메모리 어드레스 레지스터(90)에 저장된 메모리 어드레스에 의하여 표시된 메모리 위치를 기록한다. 그리고, 두번째 WM 명령은 그 다음 메모리 위치를 기록하고, 이하 이와 같은 방식으로 이루어진다. 이와 같은 방법으로, SRM 명령 이후의 첫번째 RM 명령은 메모리 어드레스 레지스터(90)에 저장된 메모리 어드레스에 의하여 표시된 메모리 위치를 판독하고, 그 이후의 RM 명령은 그 다음 메모리 위치를 판독하고, 이하 같은 방식으로 이루어진다.
도 7은 프로토콜 인터페이스 논리(40)의 바람직한 명령 디코딩 블록(43)에 대한 상세 블록도이다. 입력 패킷 레지스터(80)의 CMD 필드로부터의 신호(50)의 CMD<2:0>는 6개의 신호를 생성하기 위하여 디코더(100)로 전송된다. 상기 CMD<2:0>는 AND 게이트(101)에서 WR 명령 신호인 CMDWR, AND 게이트(102)에서 RR 명령 신호인 CMDRR, AND 게이트(103)에서 SMW 명령 신호인 CMDSMW, AND 게이트(104)에서 WM 명령 신호인 CMDWM, AND 게이트(105)에서 SRM 명령 신호인 CMDSRM과 AND 게이트(106)에서 RM 명령 신호인 CMDRM을 생성하기 위하여 신호(83)의 NEWIN과 AND 연산되며, 모두 신호(51)를 통하여 다른 블록으로 전송된다.
도 8은 프로토콜 인터페이스 논리(40)의 상태 및 상태 천이에 관한 설명도이다. 각각 110, 111, 112로 나타낸 NM(Non-Memory), MW(Memory Write), MR(Memory Read)의 3개의 상태가 있다. 시뮬레이션이 하드웨어 가속기(20)에서 시작되었을 때, 프로토콜 인터페이스 논리(40)는 NM 상태로 간다. NOP, WR 및 RR 명령의 실행은 상태를 바꾸지 않는다. NM 상태에서 SWM 명령의 실행은 상태를 NM에서 MW로 바꾼다. END=0, NOP 명령에서의 WM 명령의 실행은 상태를 바꾸지 않는다. 한편, END=1에서의 WM 명령의 실행은 상태를 MW에서 NM으로 바꾼다. NM 상태에서의 SRM 명령의 실행은 상태를 NM에서 MR로 바꾼다. END=0, NOP 명령에서의 RM 명령의 실행은 상태를 바꾸지 않는다. 한편, END=1에서의 RM 명령의 실행은 상태를 MR에서 NM으로 바꾼다.
도 9는 프로토콜 인터페이스 논리(40)의 바람직한 상태 제어 블록(42)에 관한 상세 블록도이다. 현재의 상태 STATE는 상태 레지스터(120)에 저장되어 있으며, 상태 레지스터(120)에 다시 저장되는 다음 상태를 생성하기 위하여 상태 천이 제어(121)로 전송된다. 상태 천이 제어(121)로의 입력 신호는 신호(51)의 CMDSWM과 CMDSRM, AND 게이트(122)에서 신호(51)의 CMDRM과 신호(50)의 END의 AND 연산에 의하여 생성된 신호, AND 게이트(123)에서 신호(51)의 CMDWM와 신호(50)의 END의 AND 연산에 의하여 생성된 신호를 포함한다. 상태 천이 제어(121)는 도 8에 나타낸 상태 천이를 실현한다. 현재의 상태 STATE는 디코더(124)에서 디코딩되어, 신호(52)에 STATENM, STATEMW, STATEMR 3개의 신호를 생성한다.
도 10은 프로토콜 인터페이스 논리(40)의 바람직한 판독/기록 제어 블록(44)에 대한 상세 블록도이다. 상기 판독/기록 제어 블록(44)은 입력 신호(50, 52, 51)로부터 출력 제어 신호(54, 53, 86)를 생성한다. 입력 패킷 레지스터(80)의 ID 필드로부터의 신호(50)의 ID<1:0>는 제어 논리(131) 및 메모리 ID 레지스터(130)로 전송된다. 메모리 ID 레지스터(130)로부터의 출력 MID도 제어 논리(131)로 전송된다. 제어 논리(131)는 (CMDWR+CMDRR)*STATENM에 의하여 레지스터 판독 데이터 선택 신호 REGS를 생성하고, CMDWR*STATENM*(ID=0)에 의하여 레지스터 기록 인에이블 0 신호 RWE0을 생성하고, CMDWR*STATENM*(ID=1)에 의하여 레지스터 기록 인에이블 1 신호 RWE1을 생성하고, CMDWR*STATENM*(ID=2)에 의하여 레지스터 기록 인에이블 2 신호를 생성하고, STATEMW+STATEMR에 의하여 메모리 판독 데이터 선택 신호 MEMS를 생성하고, CMDWM*STATEWM(MID=0)에 의하여 메모리 기록 인에이블 0 신호 MWE0을 생성하고, CMDWM*STATEWM*(MID=1)에 의하여 메모리 기록 인에이블 1 신호를 생성하고, MEMS에 의하여 메모리/레지스터 선택 신호 MRS를 생성하고,(CMDSWM+CMDSRM)*STATENM에 의하여 메모리 어드레스 선택 신호 MADS를 생성하고, MEMS+MADS에 의하여 메모리 어드레스 허용 신호 MADE를 생성하며, CMDRR*STATENM+CMDRM*STATEMR에 의하여 NOUT를 생성한다. 여기서 "+"는 논리적 OR 연산자이고, ""*"는 논리적 AND 연산자이며, "="는 동등 연산자이다. 제어 논리(131)로부터의 REGS, RWE0, RWE1, RWE2, MEMS, MWE0 및 MWE1은 신호(54)를 통해 외부로 전송된다. 제어 논리(131)로부터의 MRS, MADS 및 MADE는 신호(53)를 통해 외부로 전송된다. 제어 논리(131)로부터의 NOUT은 1비트 레지스터(132)에 저장되며, 레지스터(132)로부터의 출력은 신호(86)를 통해 외부로 전송된 NEWOUT이다.
도 11a는 프로토콜 인터페이스 논리(40)의 레지스터 기록 명령의 실행에 관한 타이밍 차트의 예이다. CYCLE열(140), NEWIN열(141), CMD열(142), DIN열(143) 및 REG열(144)은 각각 클록 사이클, NEWIN 신호의 값, 명령, 기록 데이터 및 표적 레지스터의 값을 나타낸다. 네개의 WR 명령은 각각 N, N+1, N+3, N+4 사이클에 기록 데이터 A, B, C, D와 함께 도착한다. 기록 데이터 A, B, C, D는 각각 N+1, N+2, N+4, N+5 사이클에 표적 레지스터에 저장된다. 이 타이밍 차트의 예에 있어서, WR 명령의 실행은 한 사이클이 소요됨을 가정한다. 만약, WR 명령을 실행하는데 2 이상의 사이클이 소요된다면, WR 명령의 실행이 완료될 때까지 다음 명령의 실행을 막기 위하여 간단한 제어 논리가 요구된다.
도 11b는 프로토콜 인터페이스 논리(40)에서의 레지스터 판독 명령의 실행에 관한 타이밍 차트의 예이다. POUT열(145)과 TRANSFER열(146)은 각각 출력 패킷 레지스터(84)에 저장된 판독 데이터와 하드웨어 가속기(20)로부터 호스트 워크스테이션(10)으로 전송된 데이터를 나타낸다. N 사이클에 도착한 RR 명령은 표적 레지스터로부터 데이터 A를 판독하여, 출력 패킷 레지스터(84)의 DATA 필드에 N+1 사이클에서 저장한다. N+2 사이클에서의 데이터 전송은 출력 패킷 레지스터(84)의 레지스터 데이터와 함께 응답 패킷을 데이터 버퍼(21)를 통하여 호스트 워크스테이션으로 전송한다. N+3 사이클에 도착한 RR 명령은 표적 레지스터로부터 데이터 B를 판독하고, 이를 N+4 사이클에 출력 패킷 레지스터(84)의 DATA 필드에 저장한다. N+5 사이클에서의 데이터 전송은 출력 패킷 레지스터(84)의 레지스터 데이터와 함께 응답 패킷을 데이터 버퍼(21)를 통하여 호스트 워크스테이션(10)으로 전송한다. 상기 타이밍 차트의 예에 있어서, RR 명령의 실행은 한 사이클이 소요된다고 가정한다. 만약, RR 명령을 실행하는데 2 이상의 사이클이 소요된다면, RR 명령의 실행이 완료될 때까지 다음 명령의 실행을 막기 위하여 간단한 제어 논리가 요구된다.
출력 패킷 레지스터에 저장된 응답 패킷의 데이터 전송은 호스트 워크스테이션(10)에서 실행되는 검증 제어 프로그램(11)에 의하여 개시된다. 이 타이밍 차트의 예에 있어서, 단순화를 위하여, 검증 제어 프로그램(11)은 RR 명령을 전송한 후에 판독 데이터를 얻기 위하여 데이터 전송을 언제 시작하여야 하는지 안다고 가정한다. 만약, 검증 제어 프로그램이 데이터 전송이 언제 개시되는지를 알 수 없다면, 패킷이 새로운 판독 데이터를 포함하는 것을 나타내는, 선행 TAG 필드 값과 다른 TAG 필드 값을 갖는 응답 패킷을 수신할 때까지 데이터 전송 동작을 반복하여야 한다. 검증 제어 프로그램(11)은 RR 명령을 실행하고 한 사이클 후에 미리 출력 패킷 레지스터(84)에 레지스터 데이터를 준비할 수 있는 것을 알기 때문에, RR 명령 후에 하나의 NOP 명령을 전송할 수 있고, 데이터 전송을 개시하여, 검증 제어 프로그램(11)이 응답 패킷의 레지스터 데이터를 수신할 수 있게 한다. 또는 검증 제어 프로그램(11)은 업데이트된 TAG 필드값을 포함하지 않는 하나의 명령을 전송할 수 있으며, 이는 적어도 한 클록 사이클을 소요하는 NOP 명령과 효과적인 면에서 동일하며, 따라서 검증 제어 프로그램(11)은 데이터 전송을 개시할 수 있다.
도 11c는 프로토콜 인터페이스 논리(40)의 연속 모드 메모리 기록 동작의 타이밍 차트 예이다. MAD열(147)과 MEM열(148)은 각각 표적 메모리의 메모리 어드레스와 데이터를 나타낸다. N 사이클에 도착한 SWM 명령은 첫번째 기록 메모리 어드레스(10)를 메모리 어드레스 레지스터(90)에 N+1 사이클에 저장한다. 프로토콜 인터페이스 논리(40)는 N+1 사이클에 메모리 기록 모드로 들어간다. 첫번째 WM 명령은 N+1 사이클에 기록 데이터 A와 함께 도착한다. 기록 데이터 A는 N+1 사이클에 표적 메모리의 메모리 위치(10)에 저장된다. 메모리 어드레스는 N+1 사이클에 1 만큼 증분되고, 업데이트된 메모리 어드레스(11)는 N+2 사이클에 메모리 어드레스 레지스터(90)에 저장된다. N+2 사이클에 기록 데이터 B와 함께 도착한 두번째 WM 명령은 N+2 사이클에 표적 메모리의 메모리 위치(11)에 데이터 B를 기록한다. 메모리 어드레스는 1만큼 증분되고, 업데이트된 메모리 어드레스(12)는 N+3 사이클에 메모리 어드레스 레지스터(90)에 저장된다. N+4 사이클에 데이터 C와 함께 도착한 세번째 MW 명령은 N+4 사이클에 표적 메모리의 메모리 위치(12)에 데이터 C를 기록한다. 메모리 어드레스는 N+4에서 1만큼 증가되고, 업데이트된 메모리 어드레스(13)는 N+5 사이클에 메모리 어드레스 레지스터(90)에 저장된다. 이 타이밍 차트 예에 있어서, SWM 명령의 실행은 한 사이클이 소요되며, 메모리 어드레스는 그 다음 사이클에 메모리 어드레스 레지스터(90)에 준비되는 것으로 가정한다. 만약, SWM 명령을 실행하는데 2 이상의 사이클이 소요된다면, SWM 명령의 실행이 완료될 때까지 다음 명령의 실행을 막기 위하여 간단한 제어 논리가 요구된다. WM 명령에 있어서도 같은 방식으로 이해할 수 있다.
도 11d는 프로토콜 인터페이스 논리(40)에서의 연속 모드 메모리 판독 동작의 타이밍 차트의 일례이다. N 사이클에 도착한 SRM 명령은 첫번째 판독 메모리 어드레스(10)를 N+1 사이클에 메모리 어드레스 레지스터(90)에 저장한다. 프로토콜 인터페이스 논리(40)는 N+1 사이클에 메모리 판독 모드로 들어간다. 첫번째 RM 명령은 N+1 사이클에 도착하고, 표적 메모리의 메모리 위치(10)로부터 데이터 A를 판독하여 이를 N+1 사이클에 출력 패킷 레지스터(84)의 DATA 필드에 저장한다. 메모리 어드레스는 N+1 사이클에 1 만큼 증분되고, 업데이트된 메모리 어드레스(11)는 N+2 사이클에 저장된다. N+3 사이클에서의 데이터 전송은 응답 패킷을 출력 패킷 레지스터(84)의 메모리 데이터를 포함하여, 데이터 버퍼(21)를 통하여 호스트 워크스테이션(10)으로 전송한다. 이와 유사하게, N+4 사이클에 도착한 두번째 RM 명령은, 표적 메모리의 메모리 위치(11)로부터 데이터 B를 판독하고, 이를 N+5 사이클에 출력 패킷 레지스터(84)의 DATA 필드에 저장한다. 메모리 어드레스는 N+4 사이클에 1 만큼 증분되고, 업데이트된 어드레스(12)는 N+5 사이클에서 저장된다. N+6 사이클에서의 데이터 전송은, 출력 패킷 레지스터(84)의 메모리 데이터를 포함한 응답 패킷을 데이터 버퍼(21)를 통하여 호스트 워크스테이션(10)으로 전송한다.이 타이밍 차트의 예에 있어서, SRM 명령의 실행은 한 사이클이 소요되고, 그 다음 사이클에서 메모리 어드레스 레지스터(90)에 메모리 어드레스가 준비되는 것으로 가정한다. 만약, SRM 명령을 실행하는 것이 2 이상의 사이클이 소요된다면, SRM 명령의 실행이 완료될 때까지 다음 명령의 실행을 막기 위하여 간단한 제어 논리가 요구된다. 이에 대해서는 RM 명령에 대해서도 같다. 또한, 이 타이밍 차트의 예에 있어서, 단순화를 위하여 검증 제어 프로그램(11)은 RM 명령을 전송한 후에 각 메모리 데이터를 얻기 위하여 데이터 전송을 언제 시작하여야 하는지 안다고 가정한다. 만약, 검증 제어 프로그램(11)이 응답 패킷에서 유효한 메모리 데이터를 얻기 위한 데이터 전송이 언제 개시되는지를 알 수 없다면, RR 명령에 대하여 언급된 견해도 RM 명령을 위하여 이용 가능하다.
도 12는 프로토콜 인터페이스 논리를 생성하기 위하여 사용되는 컴파일 시간 단계를 나타내는 흐름도이다. 상기 과정은 단계(150)에서 시작한다. 첫번째 단계(150)는 표적 설계의 네트리스트를 만들기 위하여, 하나 이상의 HDL이나 하드웨어 기술 언어 파일에 기록된 표적 설계를 컴파일한다. 두번째 단계(152)에서는 전 단계(151)에서 만들어진 네트리스트의 레지스터와 메모리의 크기를 검토하고, 상기 레지스터 및 메모리의 크기에 기초하여 프로토콜 필드 크기를 계산한다. 세번째 단계(153)에서는 표적 설계를 위하여 프로토콜 인터페이스 논리를 합성하고, 이를 네트리스트에 더한다. 본 과정은 단계(154)로 종료한다.
도 13은 표적 설계의 네트리스트로부터 프로토콜 필드 크기를 계산하기 위한 도 12의 단계(152)에 대한 상세 흐름도이다. 본 과정은 단계(160)에서 시작한다.단계(161)는 네트리스트에서 변수 "Nr"로 표현되는 레지스터의 수를 찾기 위한 countNumOfRegs 함수를 호출하고, 각 레지스터에 고유의 식별자를 할당한다. 단계(162)는 네트리스트에서 변수 "Nm"으로 표현되는 메모리의 수를 찾기 위한 countNumOfMems 함수를 호출하고, 각 메모리에 고유의 식별자를 할당한다. 단계(163)는 Nr과 Nm의 값을 비교하기 위한 "max" 함수를 호출하고, 이들 중 큰 값은 변수 Ns에 할당한다. 단계(164)는 Ns의 최대치를 나타내기 위하여 요구되는 비트의 수를 계산하기 위하여 Ns 값과 함께 호출된 "log2" 함수에 의하여 반환된 결과와 함께 "ceil" 함수를 호출하고, 이를 변수 Ns1에 할당한다. 단계(165)는 네트리스트에서 가장 큰 레지스터 데이터의 비트 수를 찾기 위하여 "findWidestRegData" 함수를 호출하여, 이 값을 변수 "Rd"에 할당한다. 단계(166)는 네트리스트에서 가장 큰 메모리 데이터의 비트 수를 찾기 위하여 "findWidestMemData" 함수를 호출하여, 이 값을 변수 "Md"에 할당한다. 단계(167)는 네트리스트에서 가장 큰 메모리 어드레스의 비트 수를 찾기 위하여 "findWidestMemAddress" 함수를 호출하여, 이 값을 "Ma"에 할당한다. 단계(168)는 Rd, Md, Ma 값을 비교하기 위하여 "max" 함수를 호출하고, 이들 중 가장 큰 값을 변수 Nd에 할당한다. 단계(169)는 TAG 필드 크기를 위한 변수 sizeTag에 1, CMD 필드 크기를 위한 변수 sizeCMD에 3, END 필드 크기를 위한 변수 sizeEnd에 1, ID 필드 크기를 위한 sizeId에 Ns1의 값, DATA 필드 크기를 위한 변수 sizeData에 Nd의 값을 각각 할당한다. 본 과정은 단계(170)로 종료한다.
도 2a 및 2b에 표시된 DUV(30) 예에 적용될 때, 상기 과정은 Nr=3, Nm=2,Ns=3, Ns1=2, Rd=48, Md=40, Ma=14, Nd=48을 계산하고, 도 3에 표시된 바와 같이, ID와 DATA 필드의 크기는 각각 2비트, 48비트이다.
도 14는 도 12의 상기 단계(153)에 대한 상세 흐름도이며, 이는 프로토콜 인터페이스 논리의 요소를 구성한다. 상기 과정은 단계(171)에서 시작된다. 단계(172)는 도 3에 표시된 바와 같이, 패킷 I/O 블록(41)을 생성하기 위하여 "Ns1"과 "Nd"값과 함께 "createPacketIoBlock" 함수를 호출한다. Ns1, Nd 값은 입력, 출력 패킷 레지스터(80, 84)의 크기와 ID, DATA 필드 신호(50, 57)의 수를 결정한다. 단계(173)는 도 7과 같은 명령 디코딩 블록(43)을 생성하기 위하여 "createCommandDecodeBlock" 함수를 호출한다. 이 블록(43)은 DUV에 종속하지 않는다. 단계(174)는 도 8, 9와 같은 상태 제어 블록(42)을 생성하기 위하여 "createStateControlBlock" 함수를 호출한다. 이 블록(42)도 DUV에 종속하지 않는다. 단계(175)는 도 4와 같은 메모리 어드레스 블록(45)을 생성하기 위하여 Ma 값과 함께 "createMemoryAddressBlock" 함수를 호출한다. Ma의 값은 메모리 어드레스 레지스터(90)의 크기를 결정한다. 단계(176)는 도 5와 같은 데이터 판독 블록(46)을 생성하기 위하여 Nd 값과 함께 "createReadDataBlock" 함수를 호출한다. Nd 값은 레지스터와 메모리로부터의 판독 데이터(57)의 최대 크기를 결정한다. 단계(177)는 도 10과 같은 판독/기록 제어 블록(44)을 생성하기 위하여 Ns1, Nr, Nm과 함께 "createReadWriteControlBlock" 함수를 호출한다. Ns1 값은 ID 신호(50)의 수와 ID 레지스터(130)의 크기를 결정한다. Nr과 Nm 값은 각각 레지스터 기록 허용 신호의 수와 메모리 기록 허용 신호의 수를 결정한다. DUV에 적어도 하나의 레지스터가 있다면, 단계(178)는 데이터를 합산하고 DUV에 있는 레지스터로의 멀티플렉서(예를 들어, 도 2a의 멀티플렉서 61, 62, 63, 64, 65, 66, 67 참조)를 제어하기 위하여 "modifyRegBlockInDuv" 함수를 호출한다. 도 2a에 표시된 바와 같이, DUV에 추가된 멀티플렉서는 프로토콜 인터페이스 논리로 하여금 DUV의 어느 레지스터에나 직접 액세스할 수 있게 한다. DUV에 적어도 하나의 메모리가 있다면, 179 단계는 데이터를 합산하고 DUV에 있는 메모리의 멀티플렉서(예를 들어, 도 2b의 멀티플렉서 71, 72, 73, 75, 76, 77 참조)를 제어하기 위하여 "modifyMemBlockInDuv" 함수를 호출한다. 도 2b에 표시된 바와 같이, 추가된 멀티플렉서는 프로토콜 인터페이스 논리로 하여금 DUV의 어느 메모리에나 직접 액세스할 수 있게 한다. 본 과정은 단계(180)로 종료한다.
도 15는 DUV를 위하여 합성된 프로토콜 인터페이스 논리와 DUV의 시뮬레이션을 위한 동작에 대한 대표적인 동작 시간 순서의 흐름도이다. 이 과정은 단계(190)에서 시작된다. 단계(191)에서, 컴파일된 DUV는 하드웨어 가속기(20)로 로딩된다. 단계(192)에서, DUV와의 통신 채널(14)이 준비된다. 단계(193)에서, 개시 데이터가 DUV의 레지스터 및 메모리로 로딩된다. 단계(194)에서, DUV가 많은 사이클 동안 시뮬레이션된다. 단계(195)에서, 시뮬레이션 결과가 레지스터와 메모리로부터 언로딩된다. 단계(196)에서, 시뮬레이션 결과와 예상치를 대조, 검토한다. 단계(197)에서 본 과정은 종료한다. 여기서 개시된 프로토콜 인터페이스 논리(40)는 단계(193) 및 단계(195)에서 DUV의 레지스터와 메모리에 액세스하기 위하여 사용된다. DUV의 몇몇 레지스터와 메모리가 단계(194)의 시뮬레이션동안 액세스되는 경우도 있을 수 있다.
도 16 내지 18은 생략된 몇몇 로컬 변수 선언을 포함하여 C 프로그래밍 언어로 기록된 코드 목록이다. C 프로그래밍 언어는 소프트웨어 개발을 위하여 널리 사용되는 잘 알려진 프로그래밍 언어이다. 이에 대해서는, 예를 들어, B.W.Kernighan, D.M.Ritchie 공저, Prentice Hall에서 1988년에 발행된 "The C Programming Language(2nd edition)"에 설명되어 있다. 코드 목록에 대한 이하의 설명에 있어서, 단지 읽기 쉽게 하기 위하여 사용된 줄 공백에 대해서는 언급하지 않는다.
도 16은 프로토콜 인터페이스 논리의 동작을 설명하기 위하여 사용되는 주요한 상수, 변수 및 함수의 정의 및 선언에 관한 코드 목록이다. 1 내지 7행은 7개의 프로토콜 명령, NOP(No Operation), WR(Write Register), RR(Read Register), SWM(Select Write Memory), WM(Write Memory), SRM(Select Read Memory) 및 RM(Read Memory) 명령 각각을 위한 7개의 상수, CMD_NOP, CMD_WR, CMD_RR, CMD_SWR, CMD_WM, CMD_SRM 및 CMD_RM을 정의한다. 10행은 "uint"을 "unsigned int(부호 없는 정수)"로 정의한다. 11 및 12행은 각각 응답 패킷의 ID와 DATA 필드의 크기를 보유하는 "sizeId"와 "sizeData"를 "int(정수)"로 정의한다. 14 및 15행은 각각 출력, 입력 패킷을 위한 TAG 값을 갖는 변수 "tagOut"과 "tagIn"을 "uint"으로 선언하여, 초기치를 0으로 한다. 17 및 18행은 각각 요구, 응답 패킷으로의 포인터를 갖는 포인터 변수 "packetOut"과 "packetIn"을 "uint"로 선언한다.
20 내지 25행은 6개의 외부 유틸리티 함수를 선언한다. 20행은 데이터 비트를 표적 패킷에 넣는, 4개의 인자를 가지며, 값을 반환하지 않는 put_bits 함수를 선언한다. void put_bits(uint *packet, int pos, int size, uint data)에서 "packet"은 표적 패킷으로의 포인터이고, "pos"는 표적 패킷에 있는 데이터의 첫번째 비트 위치이며, "size"는 복사할 데이터 비트의 수이고, "data"는 복사하기 위한 데이터 비트를 보유한다. 21행은 표적 패킷으로부터 데이터 비트를 얻는, 4개의 인자를 가지며, 값을 반환하지 않는 get_bits 함수를 선언한다. void get_bits(uint *packet, int pos, int size, uint *data)에서 "packet"은 표적 패킷으로의 포인터이고, "pos"는 표적 패킷에 있는 데이터 비트의 첫번째 비트 위치이며, "size"는 복사할 데이터 비트의 수이고, "data"는 표적 패킷으로부터의 데이터 비트를 보유한다. 22행은 하나의 패킷을 호스트 워크스테이션에 있는 데이터 버퍼에 복사하는, 2개의 인자를 가지며, 값을 반환하지 않는 copy_to_dbuff 함수를 선언한다. void copy_to_dbuff(int size, uint *packet)에서, "size"는 복사할 패킷의 비트의 총 수이고, "packet"은 패킷 비트를 보유한 위치를 가리키는 포인터이다. 23행은 호스트 워크스테이션의 데이터 버퍼로부터 하나의 패킷을 복사하는, 두개의 인자를 가지며, 값을 반환하지 않는 copy_from_dbuff 함수를 선언한다. void copy_from_dbuff(int size, uint *packet)에서, "size"는 복사할 패킷의 비트의 총 수이고, "packet"은 복사된 패킷 데이터를 보유하는 위치를 가리키는 포인터이다. 24행은 호스트 워크스테이션의 데이터 버퍼의 패킷을 하드웨어 가속기로 전송하는, 하나의 인자를 가지며, 값을 반환하지 않는 transfer_to_haccel 함수를 선언한다. void transfer_to_haccel(int size)에서 "size"는 전송할 패킷의 비트의 총 수이다. 25행은 하드웨어 가속기로부터 하나의 패킷을 호스트 워크스테이션의 데이터 버퍼로 전송하는, 하나의 인자를 가지며, 값을 반환하지 않는 transfer_from_haccel 함수를 선언한다. void transfer_from_haccel(int size)에서, "size"는 전송할 패킷의 비트의 총 수이다.
단순화를 위하여 데이터 비트의 최대 비트 수는 32 이하인 것으로 가정한다. 이것이 32보다 크다면, put_bits 함수의 4번째 인자는 데이터 비트를 갖는 uint 배열로의 포인터이어야 한다. 이와 유사하게, get_bits 함수의 4번째 인자는 데이터 비트를 갖는 uint 배열로의 포인터이어야 한다. 이후의 코드 단편에서도, 단순화를 위하여 데이터 비트의 최대 비트 수는 32 이하인 것으로 가정한다. 만약 이 값이 32보다 크다면 코드를 작성함에 있어서 변화가 있어야 하나, 이는 본 기술 분야의 숙련된 기술자에게 어려운 작업이 아니다.
도 17은 두개의 함수, 프로토콜 인터페이스 논리로 요구 패킷을 전송하는 함수와, 프로토콜 인터페이스 논리로부터 응답 패킷을 수신하는 함수의 코드 목록이다. 30 내지 41행은 하드웨어 가속기로 요구 패킷을 전송하는, 5개의 인자를 가지며 값을 반환하지 않는 sendPacket 함수를 정의한다. void sendPacket(uint cmd, uint end, uint id, int ds, uint data)에서, "cmd"는 CMD 필드 값이며, 이는 도 16의 1 내지 7행에서 정의된 7개의 명령 상수 중 하나이다. "end"는 그 패킷이 마지막 메모리 액세스 명령인지 여부를 표시하는 END 필드 비트이고, "id"는 표적 레지스터/메모리 ID를 표시하기 위한 ID 필드 값이고, "ds"는 전송할 데이터 비트의수이고, "data"는 전송하는 데이터 비트를 보유한다. 32행은 5(TAG, CMD, END 필드를 위한 비트의 총 수)와 "sizeId"의 값과 "ds"의 값을 더함으로써, 요구 패킷의 비트의 총 수를 계산하고, 이를 변수 "ps"에 할당한다. 33행은 "tagOut"의 한 비트 값을 반전시키고, 이를 다시 요구 패킷의 "tagOut"에 저장한다. 34행은 "tagOut"의 값을 "packetOut"에 의하여 지시된 요구 패킷의 TAG 필드로 복사하기 위하여 put_bits(packetOut, 0, 1, tagOut)를 호출한다. 35행은 "cmd"의 값을 "packetOut"에 의하여 지시된 요구 패킷의 CMD 필드에 복사하기 위하여 put_bits(packetOut, 1, 3, cmd)를 호출한다. 36행은 "end"의 값을 "packetOut"에 의하여 지시된 요구 패킷의 END 필드에 복사하기 위하여 put_bits(packetOut, 4, 1, end)를 호출한다. 37행은 "id"의 값을 "packetOut"에 의하여 지시된 요구 패킷의 ID 필드에 복사하기 위하여 put_bits(packetOut, 5, sizeId, id)를 호출한다. 38행은 "data"의 데이터 비트를 "packetOut"에 의하여 지시된 요구 패킷의 DATA 필드에 복사하기 위하여 put_bits(packetOut, 5+sizeId, ds, data)를 호출한다. 39행은 "packetOut"에 의하여 지시된 요구 패킷을 호스트 워크스테이션의 데이터 버퍼에 복사하기 위하여 copy_to_dbuff(ps, packetOut)를 호출한다. 40행은 요구 패킷을 호스트 워크스테이션의 데이터 버퍼로부터 하드웨어 가속기로 전송하기 위하여 transfer_to_haccel(ps)를 호출한다.
43 내지 54행은 하드웨어 가속기로부터의 데이터를 포함한 응답 패킷을 수신하는, 두개의 인자를 가지며 값을 반환하지 않는 receivePacket 함수를 정의한다. void receivePacket(int ds, uint *data)에서, "ds"는 응답 패킷에서의 비트의 총수이며, "data"는 응답 패킷의 데이터 비트를 보유하는 위치로의 포인터이다. 45행은 5, "sizeId"의 값, "ds"의 값을 더함으로써 응답 패킷의 비트의 총 수를 계산하고, 이 값을 변수 "ps"에 할당한다. 46 내지 51행은 하드웨어 가속기로부터 유효한 응답 패킷을 판독하기 위한 "while" 루프를 코딩한다. 47행은 하드웨어 가속기로부터 호스트 워크스테이션의 데이터 버퍼로 한 패킷을 전송하기 위하여 transfer_from_haccel(ps)를 호출한다. 48행은 데이터 버퍼로부터 "packetIn"에 의하여 지시된 위치에 한 패킷을 복사하기 위하여 copy_from_dbuff(ps, packetIn)를 호출한다. 49행은 패킷의 TAG 필드의 값을 산출하여, 이를 변수 "tag"에 저장하기 위하여 get_bits(packetIn, 0,1, &tag)를 호출한다. 50행은 "tag"의 값과 "tagIn"의 값을 비교하여, 만약 그 값이 다르다면 수신된 패킷이 새롭고 유효한 것임을 의미하므로, 앞의 "tag"값을 저장하고 "while" 루프에서 빠져나온다. 그렇지 않다면, 47 내지 50행의 동작이 반복된다. 52행은 새로운 "tag"값을 "tagIn"에 저장한다. 53행은 응답 패킷의 data 필드의 데이터 비트를 산출하여 그것을 "data" 변수에 의하여 지시된 위치에 저장하기 위하여 get_bits(packetIn, 5+sizeId, ds, data)를 호출한다.
도 18은 writeReg, readReg, writeMem 및 readMem의 4개의 함수의 코드 목록이다. 60 내지 63행은 3개의 인자를 가지며, 값을 반환하지 않는 writeReg 함수를 정의한다. void writeReg(uint rid, int ds, uint data)에서 "rid"는 표적 레지스터 ID이고, "ds"는 기록할 데이터 비트의 수이며, "data"는 기록할 데이터 비트를 보유한다. 62행에서, writeReg 함수는 기록할 데이터 비트와 함께 RW 명령 패킷을전송하기 위하여 sendPacket(CMD_WR, 0, rid, ds, data)를 호출한다. 65 내지 69행은 3개의 인자를 가지며, 값을 반환하지 않는 readReg 함수를 정의한다. void readReg(uint rid, int ds, uint data)에서 "rid"는 표적 레지스터 ID이고, "ds"는 판독한 비트의 수이며, "data"는 표적 레지스터로부터 판독한 데이터 비트를 보유한다. readReg 함수는, 67행에서는 데이터를 포함하지 않는 RR 명령 패킷을 전송하기 위하여 sendPacket(CMD_RR, o, rid, 0, NULL)을 호출하고, 그리고 68행에서는 표적 레지스터로부터 데이터 비트를 판독하기 위하여 receivePacket(ds, data)를 호출한다.
71 내지 80행은 6개의 인자를 가지며, 값을 반환하지 않는 writeMem 함수를 정의한다. void writeMem(uint mid, int as, uint start, int nw, int ds, uint *data)에서, "mid"는 표적 메모리 ID이고, "as"는 메모리 어드레스 비트의 수이고, "start"는 시작 메모리 어드레스이며, "nw"는 기록할 메모리 워드 수이고, "ds"는 메모리 워드 당 비트의 수이고, "data"는 기록할 메모리 워드를 보유하는 배열을 지시하는 포인터이다. 74행에서, writeMem 함수는 표적 메모리 ID 및 시작 메모리 어드레스를 포함한 SWM 명령을 전송하기 위하여 sendPacket(CMD_SWM, 0, mid, as, start)를 호출한다. 75행에서 변수 "end"의 초기치를 0으로 설정한 후, 기록할 메모리 워드의 수만큼 77, 78행의 동작을 반복하기 위하여, writeMem 함수는 76 내지 79행에서 "for" 루프 안으로 들어간다. i번째 반복이 마지막이라면, 77행은 변수 "end"의 값을 1로 설정한다. 78행은 데이터 행렬의 i번째 요소로부터의 메모리 워드와 함께 WM 명령을 전송하기 위하여 sendPacket(CMD_WM, 0, end, ds, data[i])를호출한다.
82 내지 92행은 6개의 인자를 가지며, 값을 반환하지 않는 readMem 함수를 정의한다. void readMem(uint mid, int as, uint start, int nw, int ds, uint *data)에서, "mid"는 표적 메모리 ID이고, "as"는 메모리 어드레스 비트의 수이고, "start"는 시작 메모리 어드레스이며, "nw"는 기록할 메모리 워드 수이고, "ds"는 메모리 워드 당 비트의 수이고, "data"는 표적 메모리로부터 판독된 메모리 워드를 보유하는 배열을 지시하는 포인터이다. 85행에서, readMem 함수는 표적 메모리 ID와 시작 메모리 어드레스와 함께 SRM 명령을 전송하기 위하여 sendPacket(CMD_SRM, 0, mid, as, start)를 호출한다. 86행에서 변수 "end"의 초기치를 0으로 설정한 후, 판독한 메모리 워드의 수만큼 88 내지 90행에서의 동작을 반복하기 위하여 readMem 함수는 87 내지 91행의 "for" 루프 안에 들어간다. 88행은 i번째 반복이 마지막이라면 변수 "end"의 값을 1로 설정한다. 89행은 표적 메모리로부터 i번째 메모리 워드를 판독하기 위한 RM 명령을 전송하기 위하여 sendPacket(CMD_RM, 0, end, ds, data[i])를 호출한다. 90행은 i번째 메모리 워드를 수신하여 이를 데이터 배열의 i번째 요소에 저장하기 위하여 receivePacket(ds, &data[i])를 호출한다.
요약하면, 여기서 제안된 것은, 함수적 검증을 진행하는 사용자 설계의 메모리, 레지스터로의 액세스가 상당히 개선된 하드웨어 보조 검증 시스템이다. 어떤 실시예는 표적 DUV의 레지스터와 메모리로 데이터를 로딩하거나 이로부터 데이터를 언로딩 하기 위한, 호스트 워크스테이션과 하드웨어 가속기 간의 데이터 전송을 수행하기 위하여 패킷 기반 프로토콜을 사용한다. 그 프로토콜은, 컴파일시에 표적 DUV의 레지스터 및 메모리의 크기 파라미터와 합성된 프로토콜 인터페이스 논리와 결합되고, 동작시에 표적 DUV와 함께 시뮬레이션된다. 그 합성된 프로토콜 인터페이스 논리는, 호스트 워크스테이션에서 실행되는 검증 제어 프로그램으로부터의 요구 패킷에 인코딩된 요구 명령을 디코딩하고, 이를 실행한다. 만약, 요구 명령이 판독 명령이라면, 이는 호스트 워크스테이션으로 응답 패킷의 데이터를 전송한다.
본 발명에 대한 대표적인 실시예가 도 2a 및 2b와 같은 두개의 메모리와 세개의 레지스터를 구비한 DUV 예에 따라 상세히 개시되어 있으나, 본 기술 분야의 숙련된 기술자라면, 본 발명의 사상 내에서 수정이나 대안이 가능하다는 것을 알 수 있을 것이다. 따라서, 바람직한 방법 및 장치들이 설명되었지만 본 기술 분야의 숙련된 기술자에게 명백하다시피, 본 명세서에 개시된 발명의 개념을 벗어나지 않는 더 많은 실시예 및 적용이 가능하다. 따라서, 본 발명은 첨부된 청구항의 사상 이외의 것으로 제한되어서는 안 된다.

Claims (10)

  1. 사용자 설계 내의 메모리 및 레지스터로부터 판독하거나 상기 메모리 및 레지스터로 기록하기 위한 액세스를 보다 원활하게 하기 위한 사용자 설계 컴파일 방법에 있어서,
    상기 사용자 설계 내의 모든 메모리 및 레지스터를 식별하는 단계; 및
    상기 사용자 설계로의 액세스 가능성 논리(accessibility)를 합성(synthesize)하는 단계 - 상기 액세스 가능성 논리는 상기 메모리 및 레지스터로의 액세스 포트를 생성함 -
    를 포함하는 사용자 설계 컴파일 방법.
  2. 제1항에 있어서,
    상기 사용자 설계에서 상기 각 메모리 및 레지스터에 대하여 고유 식별자를 할당하는 단계를 더 포함하는 사용자 설계 컴파일 방법.
  3. 제2항에 있어서,
    상기 액세스 가능성 논리는 선택 논리를 포함하며, 상기 선택 논리는 상기 고유 식별자를 수신하고 상기 사용자 설계 내의 상기 메모리 및 레지스터 중 특정한 하나를 선택하도록 적응된 사용자 설계 컴파일 방법.
  4. 제3항에 있어서,
    상기 액세스 가능성 논리는, 상기 사용자 설계 내의 상기 메모리 및 레지스터 중의 상기 특정한 하나에 기록하거나 상기 특정한 하나로부터 판독하는 논리를 포함하는 사용자 설계 컴파일 방법.
  5. 제4항에 있어서,
    상기 액세스 가능성 논리는 호스트로부터 명령을 수신하고, 상기 사용자 설계 내의 상기 메모리 및 레지스터로의 데이터 기록, 및 상기 사용자 설계 내의 상기 메모리 및 레지스터로부터의 데이터 판독의 실행을 제어하는 논리를 포함하는 사용자 설계 컴파일 방법.
  6. 표적 설계를 검증하기 위한 하드웨어 보조 설계 검증 시스템 - 상기 검증 시스템은 하드웨어 가속기와 통신하는 호스트 워크스테이션을 구비하고, 상기 표적 설계는 레지스터 및 메모리를 포함하며, 상기 호스트 워크스테이션은 상기 레지스터 및 메모리로부터 데이터를 언로딩하거나 상기 레지스터 및 메모리로 데이터를 로딩함 - 에 있어서,
    논리 회로로 합성된 프로토콜 논리를 포함하며,
    상기 프로토콜 논리는,
    상기 호스트 워크스테이션과 통신하는 입력 패킷 레지스터;
    상기 호스트 워크스테이션과 통신하는 출력 패킷 레지스터;
    상기 표적 설계 내의 특정 동작, 레지스터 또는 메모리의 위치를 식별하기 위하여 상기 입력 패킷 레지스터의 명령을 디코딩하는 명령 디코딩 논리;
    상기 명령 디코딩 논리에서 디코딩된 기록 명령에 대하여, 상기 표적 설계내의 상기 레지스터 또는 메모리 위치에 상기 입력 패킷 레지스터에 저장된 데이터를 기록하기 위한 기록 명령 실행 논리;
    상기 명령 디코딩 논리에서 디코딩된 판독 명령에 대하여, 상기 표적 설계 내의 상기 레지스터 또는 메모리 위치로부터 데이터를 판독하고, 상기 출력 패킷 레지스터 내에 상기 데이터를 저장하기 위한 판독 명령 실행 논리; 및
    상기 표적 설계 내의 상기 레지스터 및 메모리에 인터페이스하는 인터페이스 논리
    를 포함하는 하드웨어 보조 설계 검증 시스템.
  7. 제6항에 있어서,
    상기 프로토콜 논리는, 상기 입력 패킷 레지스터로부터의 데이터가 새로운 것인지 판정하고, 명령 디코딩 및 실행의 활성화를 제어하기 위한 논리를 포함하는 하드웨어 보조 설계 검증 시스템.
  8. 하드웨어 가속기를 이용하여 함수적 검증(functional verification)을 수행할 때, 표적 설계 내의 레지스터 및 메모리로의 액세스를 제공하기 위한 패킷 기반 프로토콜 논리를 합성하는 방법에 있어서,
    태그, 명령 및 데이터 엔드 필드(data end field)를 포함하는 응답 패킷의 고정된 일정한 크기를 결정하는 단계;
    상기 표적 설계 내에 몇 개의 레지스터가 있는지 계수하는 단계;
    상기 표적 설계 내에 몇 개의 메모리가 있는지 계수하는 단계;
    상기 응답 패킷의 식별 필드의 최대 크기를 결정하는 단계;
    상기 표적 설계 내의 레지스터의 데이터 비트의 최대 비트 수를 결정하는 단계;
    상기 표적 설계 내의 메모리의 데이터 비트의 최대 비트 수를 결정하는 단계;
    상기 표적 설계 내의 메모리의 어드레스 비트의 최대 비트 수를 결정하는 단계; 및
    상기 응답 패킷의 데이터 필드 크기를 결정하기 위하여, 레지스터 데이터, 메모리 데이터 및 메모리 어드레스를 상기 표적 설계로 전송하는 비트의 최대 비트 수를 결정하는 단계
    를 포함하는 패킷 기반 프로토콜 논리 합성 방법.
  9. 제8항에 있어서,
    상기 하드웨어 가속기의 입력 데이터 버퍼에 연결된 입력 패킷 레지스터를 생성하는 단계;
    상기 하드웨어 가속기의 출력 데이터 버퍼에 연결된 출력 패킷 레지스터를생성하는 단계;
    상기 입력 패킷 레지스터 내의 명령을 디코딩하기 위한 명령 디코딩 블록을 생성하는 단계;
    상기 디코딩 블록에서 디코딩된 명령을 실행하기 위한 실행 논리를 생성하는 단계; 및
    상기 표적 설계 내의 레지스터 및 메모리에 액세스하기 위한 인터페이스 논리를 생성하는 단계
    를 더 포함하는 패킷 기반 프로토콜 논리 합성 방법.
  10. 제9항에 있어서,
    상기 표적 설계 내의 메모리를 식별하기 위한 메모리 식별 레지스터를 생성하는 단계;
    액세스를 위하여 현재 메모리 어드레스를 제공하기 위한 메모리 어드레스 레지스터를 생성하는 단계;
    메모리 판독 명령 또는 메모리 기록 명령을 실행한 후, 상기 현재 메모리를 증분시키는 단계;
    상기 패킷 기반 프로토콜 논리가 비메모리 모드, 연속 메모리 기록 모드 또는 연속 메모리 판독 모드임을 표시하는 한정 상태 기계를 생성하는 단계; 및
    상기 연속 메모리 동작이 종료될 때 상기 비메모리 모드를 선택하고, 상기 연속 메모리 기록 동작이 개시될 때 상기 연속 메모리 기록 모드를 선택하며, 또한상기 연속 메모리 판독 동작이 개시될 때 상기 연속 메모리 판독 모드를 선택하는 상태 천이 제어를 생성하는 단계
    를 더 포함하는 패킷 기반 프로토콜 논리 합성 방법.
KR10-2003-7005426A 2000-10-20 2001-10-19 효율적인 데이터 로딩 및 언로딩을 위하여 합성된 패킷기반 프로토콜 논리를 이용한 하드웨어 보조 설계 검증시스템 KR20030066641A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US24240700P 2000-10-20 2000-10-20
US60/242,407 2000-10-20
US09/879,658 US7054802B2 (en) 2000-10-20 2001-06-11 Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading
US09/879,658 2001-06-11
PCT/US2001/050388 WO2002063507A2 (en) 2000-10-20 2001-10-19 Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading

Publications (1)

Publication Number Publication Date
KR20030066641A true KR20030066641A (ko) 2003-08-09

Family

ID=26935074

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7005426A KR20030066641A (ko) 2000-10-20 2001-10-19 효율적인 데이터 로딩 및 언로딩을 위하여 합성된 패킷기반 프로토콜 논리를 이용한 하드웨어 보조 설계 검증시스템

Country Status (7)

Country Link
US (1) US7054802B2 (ko)
EP (1) EP1399858A2 (ko)
JP (1) JP2004519041A (ko)
KR (1) KR20030066641A (ko)
CN (1) CN1313957C (ko)
CA (1) CA2423824A1 (ko)
WO (1) WO2002063507A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8725486B2 (en) 2010-03-31 2014-05-13 Samsung Electronics Co., Ltd. Apparatus and method for simulating a reconfigurable processor

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ITMI20010997A1 (it) * 2001-05-16 2002-11-16 Cit Alcatel Metodi per testare il software di controllo di una apparecchiatura per telecomunicazioni dotata di un controllo di tipo distribuito
US7401015B1 (en) * 2001-06-17 2008-07-15 Brian Bailey Coherent state among multiple simulation models in an EDA simulation environment
US7305633B2 (en) * 2001-10-30 2007-12-04 Mentor Graphics Corporation Distributed configuration of integrated circuits in an emulation system
US7120571B2 (en) * 2003-06-16 2006-10-10 Fortelink, Inc. Resource board for emulation system
US20050036502A1 (en) * 2003-07-23 2005-02-17 International Business Machines Corporation System and method for handling multicast traffic in a shared buffer switch core collapsing ingress VOQ's
US7706394B2 (en) * 2003-07-23 2010-04-27 International Business Machines Corporation System and method for collapsing VOQ's of a packet switch fabric
JP2005084956A (ja) * 2003-09-09 2005-03-31 Nec Corp 論理回路の検証方法および検証システム
US8060799B2 (en) * 2004-06-11 2011-11-15 Samsung Electronics Co., Ltd. Hub, memory module, memory system and methods for reading and writing to the same
US20060089829A1 (en) * 2004-10-21 2006-04-27 International Business Machines Corporation Method and apparatus to efficiently access modeled memory in a logic simulation hardware emulator
US8536664B1 (en) 2007-04-16 2013-09-17 DigitalOptics Corporation MEMS MEMS device with integrated memory cells
WO2010054871A1 (de) * 2008-11-12 2010-05-20 Siemens Ag Österreich Verfahren zum testen von schaltungen und baugruppen mit programmierbaren logikbauteilen mittels fehlereinbringung
US10078356B2 (en) * 2015-08-20 2018-09-18 Intel Corporation Apparatus and method for saving and restoring data for power saving in a processor
US10628373B2 (en) * 2015-12-01 2020-04-21 Marvell International Ltd. Systems and methods for transmitting an access request via a flexible register access bus
CN105893036B (zh) * 2016-03-30 2019-01-29 清华大学 一种嵌入式系统的兼容式加速器扩展方法
US9747396B1 (en) * 2016-10-31 2017-08-29 International Business Machines Corporation Driving pervasive commands using breakpoints in a hardware-accelerated simulation environment
US10816600B1 (en) * 2017-11-28 2020-10-27 Xilinx, Inc. Protocol analysis and visualization during simulation
US11295051B2 (en) * 2018-03-13 2022-04-05 Hcl Technologies Limited System and method for interactively controlling the course of a functional simulation
US20230206379A1 (en) * 2021-12-28 2023-06-29 Advanced Micro Devices, Inc. Inline suspension of an accelerated processing unit

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5477541A (en) * 1989-09-29 1995-12-19 White; Richard E. Addressing technique for storing and referencing packet data
US5495482A (en) * 1989-09-29 1996-02-27 Motorola Inc. Packet transmission system and method utilizing both a data bus and dedicated control lines
US5546562A (en) * 1995-02-28 1996-08-13 Patel; Chandresh Method and apparatus to emulate VLSI circuits within a logic simulator
US5841967A (en) 1996-10-17 1998-11-24 Quickturn Design Systems, Inc. Method and apparatus for design verification using emulation and simulation
EP1013033A2 (en) * 1997-09-12 2000-06-28 COMMUNICATION &amp; CONTROL ELECTRONICS LIMITED Development and test tools for communication system
US6581191B1 (en) * 1999-11-30 2003-06-17 Synplicity, Inc. Hardware debugging in a hardware description language
US6931572B1 (en) * 1999-11-30 2005-08-16 Synplicity, Inc. Design instrumentation circuitry

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8725486B2 (en) 2010-03-31 2014-05-13 Samsung Electronics Co., Ltd. Apparatus and method for simulating a reconfigurable processor

Also Published As

Publication number Publication date
US20020049578A1 (en) 2002-04-25
JP2004519041A (ja) 2004-06-24
EP1399858A2 (en) 2004-03-24
CA2423824A1 (en) 2002-08-15
CN1543618A (zh) 2004-11-03
CN1313957C (zh) 2007-05-02
WO2002063507A2 (en) 2002-08-15
US7054802B2 (en) 2006-05-30
WO2002063507A3 (en) 2004-01-08

Similar Documents

Publication Publication Date Title
US7054802B2 (en) Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading
US6691301B2 (en) System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures
JP2989518B2 (ja) 多重プロセッサ・エミュレーション・システム
US7260794B2 (en) Logic multiprocessor for FPGA implementation
US6496972B1 (en) Method and system for circuit design top level and block optimization
US20030028864A1 (en) System, method and article of manufacture for successive compilations using incomplete parameters
US20030033588A1 (en) System, method and article of manufacture for using a library map to create and maintain IP cores effectively
US20020199173A1 (en) System, method and article of manufacture for a debugger capable of operating across multiple threads and lock domains
US20030105620A1 (en) System, method and article of manufacture for interface constructs in a programming language capable of programming hardware architetures
US20030046668A1 (en) System, method and article of manufacture for distributing IP cores
US20030037321A1 (en) System, method and article of manufacture for extensions in a programming lanauage capable of programming hardware architectures
US20070129926A1 (en) Hardware acceleration system for simulation of logic and memory
US20030033594A1 (en) System, method and article of manufacture for parameterized expression libraries
US9015026B2 (en) System and method incorporating an arithmetic logic unit for emulation
US7437282B2 (en) Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator
JP5146451B2 (ja) ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置
US10949588B1 (en) High speed, low hardware footprint waveform
David et al. Self-timed architecture of a reduced instruction set computer
US9898563B2 (en) Modeling memory in emulation based on cache
Denneau et al. Design and implementation of a software simulation engine
Appleton et al. Two-phase asynchronous pipeline control
Bove Jr et al. Media processing with field-programmable gate arrays on a microprocessor's local bus
Nijkamp A High Throughput Sorting Accelerator using an Intel PAC FPGA.
Jung et al. simCore: an event-driven simulation framework for performance evaluation of computer systems
Yun et al. An interface protocol component modeling language

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid